Edit: I just realized that this update might have accidentally altered the Genesis artifacts, but I’m not sure. I might do another update soon to fix this, but I don’t have time at this exact moment.
This update has limited compatibility with presets made for the previous version. The shader passes are changed, so you will have to re-append all your presets. The only settings you need to update are “Tint”, “Color”, and “R-Y/B-Y lowpass type”.
This is a minor update doing several small fixes and improvments. The main things are slightly more accurate 3-phase, better red push default settings, the 8500K whitepoint, the SMS blue lift from Grade, and better performance. I recommend appending (in order) afterglow-update0 and crt-royale-fast. Consider prepending allowed-settings, to bring commonly used settings to the top of the list. https://www.mediafire.com/file/wgg42omjr7da398/patchy-8500k-2024-10-16.zip/file
I am going to put together a document going over this shader’s very long list of settings. Even though there are so many settings, only a few are really used. I’ve been short on time to work on this project lately, but I think this in particular can get done soon enough.
For those planning to make presets with this, I have a few suggestions. First, the settings to look similar-ish to Grade (but slightly more accurate) are Trinitron P22, 8500K, enable chromatic adaptation, r-y/g-y/b-y preset 0, and brightness 0.1. Second, if you use Grade’s BT.1886, you have to disable Auto Contrast and use the “color ramps” test pattern to set your contrast manually. Third, this update changed the default “R-Y/B-Y Lowpass Type” from 2 to 1 to reduce shadows and smearing, but you might consider changing it back to 2 for a more RF-like look. Fourth, for SMS, I recommend picking either one of the two patchy-genesis options, disabling “Genesis Jailbars on Solid Backgrounds”, and changing “Genesis Plus GX color fix” to SMS (2). A couple generic 2phase presets were added for consoles like PC-Engine and PlaySattion 1.
Detailed changelog and future goals
Full list of changes:
- Added a generic “2-phase” preset based on Maister NTSC / NTSC Adaptive. It is not based on any particular console, but it’s currently recommended for PlayStation 1. The “hi-res” version is meant for consoles with a horizontal resolution of about 420 or higher.
- Updated default Saturation (Color) and Hue Rotation (Tint) settings for US jungle chips. They look better now, but many people might think they’re all oversaturated.
- Sped up the noise generation, but it’s still a laggy piece of shit.
- Added more white point options, including 8500K for those who are used to Dogway’s Grading Shader.
- Can do chromatic adaptation with Trinitron P22 with white point 8500K. Make sure you use the specific 8500K option, not a custom CCT. Still, I prefer having chromatic adaptation off, because chromatic adaptation changes the appearance so much.
- Fixed the leaky integrator R-Y B-Y lowpass leaving behind a jailbar pattern in the signal.
- The leaky integrator on R-Y/B-Y is no longer the default. If you want the distinct chroma smear to the right, change the R-Y/B-Y lowpass filter type to 2, which is the leaky integrator.
- Changed default R-Y B-Y lowpass to a windowed sinc, and updated its default settings.
- Widened the decoder preset lowpasses to filter out the chroma signal more completely. Before, it was only just wide enough to make the chroma signal unnoticeable on many CRT shaders. Now, it’s much harder to notice even when using the signal shader alone.
- Halved the signal resolution for Genesis presets, giving better performance. The updates to the R-Y/B-Y lowpass were done because of this, because the Genesis would look wrong if you lowpassed in the old way.
- Added internal 3-phase and 2-phase settings taken from Maister NTSC / NTSC Adaptive. This fixes the SNES being slightly off. (I remember hearing somewhere that N64 has a similar 3-phase signal, but I don’t trust this.)
- Copied Grade’s Sega Master System blue lift. I haven’t properly put together an SMS preset, but for now, I recommend loading either the genesis-plus-gx or genesis-blastem preset (both work for this), turning off “Genesis Jailbars on Solid Backgrounds”, and changing the “Genesis Plus GX Color Fix” to 2 (SMS).
- Updated patchy-color a little bit to have the SMS blue lift and the updated saturation and tint settings. Patchy-color is a side thing that I’ve been paying little attention to, and that’s made very obvious by its messy code and missing features.
- Included bandstop and “anti-highpass” filters that both suck because they attenuate high frequencies so much. “Anti-highpass” especially is bad because it can cause some frequencies to get negated.
Goals for my next update are:
- Clean up the freaking code. Especially patchy-color. Compatibility with older presets might have to be broken severely.
- Better handling of varying horizontal resolutions.
- More accurate Genesis jailbars, by screenshotting a video capture, averaging all the lines, and using as a lookup table.
- More accurate match of Genesis color carrier settings. Currently, it’s just a little bit off.
- Make presets for PS1, SMS, and PC-Engine.
- Add an adaptive comb filter, probably heavily based on cgwg-famicom-geom’s.
- Add experimental PAL support.
- Add experimental support for LUTs that include the entire demodulate+eotf+phosphor+oetf process baked together, thanks to Chthon’s program called gamutthingy. Some fixes will have to be made to this later.
- Add R-Y/B-Y clamping levels, preferrably from same chips.
- Search up a bunch of demodulator chips on CRT-database and elsewhere, and pool together the results.
Other future goals:
- If not already done, update gamutthingy to allow RGB resultant values over 255, and automatically darken the entire LUT by a constant factor to make the whole gamut fit from 0 to 255.
- Bake the entire color grading process into an LUT, resulting in better performance and better colors. Improving my video signal is a higher priority for now.
- At that point, may as well get a CRT-compatible (!) colorimeter and make an LUT based on a real CRT, and/or try doing it by eye.
- More accurate EOTF, and other color accuracy improvements.
- Get more CRTs.
- Add support for hardcoded filters, like from Maister NTSC.
- See if it’s possible to create filters based directly on the inductor/capacitor circuits in the original Genesis. Up to this point, everything’s been done by eye.
- Better adaptive comb filtering.
- More accurate noise.
I just saw these posts about VHS. From some brief searching online, VHS compresses the video an awful lot. The tape itself contains a different kind of composite video signal which uses a much lower chroma subcarrier frequency, and a VCR has to convert standard composite video both to and from this VHS composite signal. This would mean, to update this shader to support VHS, I would make it modulate and demodulate the signal three times, using at least 4 additional shader passes.