shaders/film_grain: add H.274 synthesis
This is not entirely spec-compliant with SMPTE RDD 5-2006. Notably, I swapped out their recommended PRNG in favor of a significantly better one that's also more friendly for GPU usage.
In exchange for this, we don't currently perform any deblocking of vertical block edges. This is because proper deblocking would be prohibitively expensive in a single-pass environment due to the 8x8 averaging required to determine the correct intensity interval.
It's possible that, in theory, we could get around this by just assuming that the intensity interval is the same for adjacent blocks. (In practice, this is basically true anyway). Or simply attenuating edge blocks.
But visually, I simply don't think this is actually that necessary, at least for real-time playback. I'll probably re-evaluate this in the future. For the time being, this solves the problem well enough to my estimation.
Closes #148 (closed)