CRT shader debate


Away from the PC currently, what are using pixelate for in you shader chain?


It’s not really doing anything in that particular image, but I have it as part of the shader chain for when I play PSX games. PSX games can switch resolutions mid-game, so you get scaling artifacts no matter what you set the aspect ratio to. Pixellate fixes the scaling artifacts that occur with non-integer scaling.

check out the images in this post for an example of what I’m talking about.


Nice image. Not from a gdm fw900 though. I outa know as I took the image. It’s from a dell ultrascan p991 running at 120hz@240p. Using RetroTINK-ULTIMATE with vga out.

Here, have some more images:

More images can be taken if wanted.


These look really nice! Is this an LCD? The second picture clearly looks like an LCD, but the other two have to be a CRT!


That’s just me having a hard time focusing with my phones camera… Or maybe it is an LCD. I’m experimenting with shaders at the same time on my LCD so it might be from there.


Thanks for the pics! The quality of those Dell aperture grille CRTs is really amazing. The scanlines are so consistent that you can only really tell that it’s a CRT and not an LCD by getting so close that you can see the mask.

That’s more or less what I consider “ideal” for displaying 240p content, and is the look I’ve been trying to recreate with shaders.

The biggest problem I’ve encountered is that current LCDs just can’t get bright enough to compensate for both scanlines AND the mask. That’s why shaders try to compensate by adding glow and bloom effects and jacking with color and brightness levels, which compromises the image quality in other ways.

Anyway, here is my attempt to recreate the close up of Mario using shaders. This is just zfast_CRT with a few adjustments, pretty simple stuff. It’s not quite as sharp as the CRT and the scanlines aren’t quite as bold, but it’s pretty close.

It occurs to me that if one is trying to recreate the look of a high TVL CRT using shaders, it’s better to have NO mask at 1080p; the mask/aperture grille on a 1000 line CRT is practically as fine as the LCD grid on a 1080p display.


I’d definitely like to see more. It’d be nice to see some shots from different distances, too. I imagine the mask completely vanishes at anything close to a normal viewing distance?

Have you found a shader setup that is satisfactory to you? If so, please share!


Here you go. Some closeups and a few zoomed. Images from zelda is with a generic 720p overlay at 720p. There are no scanlines without it if you don’t look really close.

The overlay i use is found here:!3kVG1I5J!G7vlvHMCh-4DReRVQI9bD5jFCZpj4tYEp181Bxa8D2w

Found it in this thread:

Here is from my LCD

I’m using crt-royale-kurozumi and crt-royale-xm29. Those are slang shaders that need you to use Vulkan as video driver.

But do share those zfast_crt settings. Looks grate.


It looks like the 720p overlay isn’t quite lining up with the pixels in your first shot (that’s the problem with overlays, they can be tricky to use), but this shot does a good job of illustrating just how close to an LCD a high quality CRT can get. Personally, I find the image on an LCD to be overly sharp, so I like to add a very slight amount of blur. You can also sometimes lower a monitor’s sharpness setting to get the same effect.

Here are the zfast_crt settings I’m using in the above close up of Mario:

shader #0: zfast_crt

shader #0 filter: linear

shader #0 scale: don’t care

alias0 = ""
BLURSCALEX = "0.300000"
BRIGHTBOOST = "1.000000"
feedback_pass = "0"
filter_linear0 = "true"
float_framebuffer0 = "false"
HILUMSCAN = "8.000000"
LOWLUMSCAN = "9.000000"
MASK_DARK = "0.000000"
MASK_FADE = "0.000000"
mipmap_input0 = "false"
shader0 = "D:\retroarch\shaders\shaders_glsl\crt\shaders\zfast_crt.glsl"
shaders = "1"
srgb_framebuffer0 = "false"
wrap_mode0 = "clamp_to_border"

I’ve also adjusted my LCD’s backlight to 100% to compensate for the lost brightness from scanlines.


@Nesguy, don’t you like to use the ntsc shader + crt shader?


I haven’t been using the ntsc-colors shader. On my display, ntsc-colors causes the colors to become over-saturated and results in clipping, particularly with red. If your display is already at maximum contrast, then any increase in color intensity is just going to result in clipping.

Right now all I’m using is Zfast_CRT for all systems. With PSX cores I’ve also added Pixellate to take care of scaling artifacts.

Currently, I think it’s best to forego use of the RGB mask so that I can do black frame insertion and 1:1 scanlines. With my LCD’s backlight maxed out, the resulting picture is just bright enough. As far as I’m concerned, there’s not much room for improvement without getting a better display than the one I currently have.