Working on an RGB-centric noise shader, applicable to arcade, SCART, etc. Three ‘noise grades’ are available as well as a custom mode: professional, consumer, and degraded.
Pro
Consumer
Degraded
Pro
Consumer
Degraded
Working on an RGB-centric noise shader, applicable to arcade, SCART, etc. Three ‘noise grades’ are available as well as a custom mode: professional, consumer, and degraded.
Pro
Consumer
Degraded
Pro
Consumer
Degraded
Some discussion on how the RGB noise injection works: aside from jitter and white noise, crosstalk is added to the RGB output in a few ways:
For a somewhat realistic crosstalk effect I tried to simulate high frequency effects on the channels. This is done by first calculating the difference of the input pixel with the one on its left:
This screenshot has contrast increased for visibility. A custom mipmapping shader is chained to create mipmaps, enabling us to average the result at different lengths. Depending on how much interference we want to create, we select an average length and use that to envelope crosstalk.
Here is an example of extreme red/green crosstalk. High frequency green periods create red smears. High frequency red periods create green smears. Blue/green crosstalk is done in the same way.
At low levels, the approach is decent. At high levels, it breaks down largely due to the symmetric filtering of the mipmaps and that’s something I may be able to work out further. It also doesn’t consider any second-order effects.
The other two forms of crosstalk are simpler, being based on fixed tones and harmonics. For ground bounce, a tone related to H frequency is selected, and the starting harmonic can be chosen depending on how many ‘jail bars’ one wants. A ‘saggy saw’ response of this tone is computed and applied to all three channels equally:
The final method is simulating subcarrier leakage, where the fundamental is chosen as the subcarrier. Not all systems have a subcarrier present and can indicate this by setting subcarrier mode to off. The subcarrier leakage primarily affects blue, then green, and red (this aligns with some real designs). On the SFC this results in diagonal artifacts, but the direction is system-dependent. For example, on Mega Drive and Neo Geo AES this will manifest as fine jailbars. For a noisier response, a harmonic sum is computed instead of a pure sine tone (this results in the faint vertical lines in the screenshot).
Maybe I don’t get this, is it supposed to simulate noise (cable interference) from an rgb signal like scart?
It isn’t necessarily from cable interference. It can also be from trace layout. Traces running in parallel, close to each other, can have crosstalk. It simulates noise from any source rather than attempting to model at generation, transmission (cable), reception, etc.