This technique is very important for emulation and simulating the look of early games.<p>For example, the Genesis/Mega Drive did not support hardware alpha transparency. Many games (including the Sonic series) simulate the effect by alternating vertical lines, and relying on the "visual munging" of CRTs to produce a convincing effect. Here is a video that demonstrates the effect in Shinobi 3: <a href="https://youtu.be/YFOkbfpIlaY?t=2m52s" rel="nofollow">https://youtu.be/YFOkbfpIlaY?t=2m52s</a><p>(You can also notice the stippled pattern in the pool of water to the right, used to produce the same effect.)<p>Another technique is the use of stippling to simulate smooth textures and surfaces. For example, this screenshot of the Super Metroid start screen looks pretty terrible by modern standards: <a href="http://static.giantbomb.com/uploads/original/0/4527/1093273-super_metroid___title_screen_550x.jpg" rel="nofollow">http://static.giantbomb.com/uploads/original/0/4527/1093273-...</a><p>This would have looked much more convincing on a CRT display. Without simulating CRT distortion, you are not getting the same visual experience one would have had when running the game on hardware it was designed for. For modern games looking to simulate this experience, using these techniques along with a CRT shader will be very effective at bringing back the home console experience of the 80s and 90s.
While this is technically awesome, I'd much, MUCH prefer to play <i>without</i> all the visual munging.<p>Nostalgia aside, <i>CRTs didn't actually look that good originally</i>. They weren't used for their visual effects, they were used because they were cheap and easy. Why would you actively make your content look shittier?<p>I suspect if you went back, and offered the people <i>developing</i> these games the option to play them on a modern display, without all the distortion and such, they'd much prefer it over the "CRT look".<p>At least, please, PLEASE let the player turn the effects off.
I love these CRT shaders but have always wondered, has anyone thought about or worked on a physically accurate simulation of a CRT television? Something that takes a framebuffer as input and simulates the electric signals that control the magnets around the tube, how those magnets affect the electron beam, how the beam interacts with the shadowmask, etc. elements in the front of the tube, and finally how each individual phosphor on the screen is illuminated by the beam.<p>I wouldn't even worry about doing stuff in real time to start with, instead just focus on the most accurate physical simulation possible. Then use the learnings from the simulation to try to create more accurate shaders that any program could use for simulating CRT tubes.
It's not a CRT thing, it's a NTSC thing. He seems to be trying to emulate NTSC (analog broadcast TV) color, not RGB. NTSC color signals have much lower bandwidth than the intensity signal. You can only go through the entire color gamut about 10 times across the width of the screen. So, for NTSC emulation, you should convert each scan line from RGB to YUV, then low-pass filter the UV component, then reassemble. You'll now have sharp edges where the intensity changes and fuzzy edges where the color changes, just like crappy old NTSC devices. This is strictly a horizontal phenomenon - in the vertical dimension, adjacent scan lines can be completely different colors without artifacts.
Why the motion trails? The Mario example doesn't have them and I can't recall any extreme motion trails from my days of playing console games on CRT TVs.