Please show off what crt shaders can do!


Regarding the mask effect in Great Dragon’s shot…at 1080p, that’s emulating a 180 TVL TV. This is much lower than even a cheap 20” TV from the early 90s, which was around 300 TVL. That’s why the mask seems too coarse and “in your face.” You need 4K at a minimum for that particular effect to look right, IMO.


What shaders do you guys recommend for PSX Games at their native resolution? The Playstation used many different resolutions (254x224, 320x240, 512x240, 384x480, 512x480 etc.) and i guess most shaders only work with 240p games?

Some examples (Beetle PSX HW Core, Vulkan Driver, Integer Scale, 4x internal Resolution and the new SSAA option):

Ridge Racer Revolution (native resolution 320x240) looks gorgeous with CRT-Aperture:

Tekken 3 (runs at a odd resolution of 384x480) on the other hand, looks like crap with CRT-Aperture:


You can force the resolution to stick to 240 by running stock.glsl as the first pass, setting it’s scale to absolute and scale y to 240, then you can run any CRT shader after that to get better scan lines, I do this and saves a me a lot of headache.

@hunterk posted info on this in this post Reicast 240p and mame roms support

Hope that helps.


Wow that’s really nice, @Great_Dragon! In the first examples you posted I really missed some scanlines, but after these recent updates, and as much as I like them, I don’t think yopur preset needs them anymore. I have the impression that text might appear a bit too soft, and maybe smaller sprites too. But those backgrounds look fantastic. I’m glad you managed to nail the look you were looking for.

@ryuuji89 - sexy shot too, as gritty as it gets. But there’s something going on with the mask, have you noticed how it vanishes in highlights? (the trousers for example).

@Phiben - shenglong suggestion is probably the way to go in this case, particularly if you want to keep using CRT-aperture. Alternatively, you can try Easymode, which somehow usually gets along better with odd resolutions than most crt shaders. (edit: true, @lfan also hyllian3d!)

I have posted several PS1 shots already by the way. Check them out if you are interested.

And here are some arcade screens I took these days, after finally setting up the FBA and MAME cores properly. Those games look glorious on RA :drooling_face:


There are a few shaders that handle interlaced/480i content properly, including crt-geom, crt-royale and phosphorlut (possibly others, as well). Many people don’t like the result, which includes flickery, alternating scanlines, but that’s what happened on real displays, so…


Correct me if I’m wrong, but I would also add that simply running Beetle PSX HW in opengl mode completely solves all the problems associated with interlaced content on progressive screens. I read somewhere that opengl can’t display anything interlaced (which I found quite surprising considering the issues I have with 480i games on PCSX2, also using its ogl plugins, but that might be an exception).


Those arcade shots looks great, love the rich colour. What shader preset are using the for the vertical shooter?


Yeah I rebuilt the chain from scratch while setting up the arcade cores. Until recently, I almost exclusively played these games on standalone mame. The punchy look goes really well with them indeed! There’s a lot of detail and color in there to work with, and I also have to admit that all the feedback I’m getting from you guys is inspiring :slight_smile:

Vertical shooters (that one is Dragon Blaze by the way) have been a bit problematic. Easymode’s scanlines and mask looked terrible, so I ended up doing what I always do when that happens: reshade. So for vertical shooters, it’s EasyHal (scanlines and mask set to 0) + Hyllian reshade.

I don’t know if you have ever used reshade, but you can configure it so a single key press will turn on whatever shaders you need, all at the same time, without displaying the UI or anything. In this case, pressing I or K provides vertical or horizontal scanlines respectively. The cool thing about reshade is that once it’s properly setup (which considering my needs has been quite the challenge, to be honest), it will not care about the content’s resolution. I just press K and I get perfect horizontal scanlines/mask on top of whatever I’m running. Pretty smart if I can say so :sunglasses:

I only wish reshade could do retroarch shaders natively (they need to be ported). It’s really cool to be able to use them on PCSX2, PPSSPP, Dolphin, Yabasanshiro, MAME, Supermodel, NebulaModel2, NullDC, Demul…


crt-hyllian-3d is a good alternative.


and another one



I think this image looks pretty good :slightly_smiling_face:. Soft, but not exaggerated; no obvious artifacts from “enhancing” the image; nice shadowmask(?) effect. Have you checked out these settings using Fudoh’s test suite yet?


@Squalo Yes, but the lovely new SSAA option (the image is rendered in a higher resolution and then downsampled back to native resolution) is only available via vulkan.

@shenglong Thank you! That’s exactly what I wanted! :smiley:


Thanks … I ve never used Fudoh’s test suite on RA :confused:


Been testing a new GLSL shader/preset and i think it has decent CRT potential, since not everyone adores scanlines, but likes a smooth gamma-interpolated image with a crt mask.

Here is the preset, goes in the retro folder (don’t forget to update glsl shaders first): Smoothness param is to be altered also:

shaders = 3
shader0 = ../linear/linearize.glsl
shader1 = shaders/bandlimit-pixel.glsl
shader2 = ../crt/shaders/dotmask.glsl

filter_linear0 = false 
scale_type0 = source
scale0 = 1.0
srgb_framebuffer0 = true

filter_linear1 = true 
scale_type1 = viewport
scale1 = 1.0

filter_linear2 = true 
scale_type2 = viewport
scale2 = 1.0

I like it because it’s simple and mask friendly. :+1:


could you make that psx shader to CG? … I can’t seem to manage to make it work :frowning:


@ryuuji89 If you’re just using his posted preset directly, it still has his shader paths hardcoded (i.e., with his exact computer paths). You’ll need to change that to your own paths.

One of my favorite shaders is crtglow_gaussian because of its awesome beam dynamics. I added some code to the slang version to allow for curvature/pincushion with noise instead of moire, and that noise also gives the scanlines some analog-style sparkle that I really like (place this in your slang shaders’ ‘presets’ directory):

shaders = "7"

shader0 = "../crt/shaders/glow/linearize.slang"
filter_linear0 = "false"
srgb_framebuffer0 = "true"

shader1 = "../crt/shaders/glow/gauss_horiz.slang"
filter_linear1 = "false"
scale_type_x1 = "viewport"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
srgb_framebuffer1 = "true"

shader2 = "../crt/shaders/glow/gauss_vert.slang"
filter_linear2 = "false"
scale_type_x2 = "viewport"
scale_x2 = "1.000000"
scale_type_y2 = "viewport"
scale_y2 = "1.000000"
srgb_framebuffer2 = "true"
alias2 = "CRTPass"

shader3 = "../crt/shaders/glow/threshold.slang"
filter_linear3 = "false"
srgb_framebuffer3 = "true"

shader4 = "../crt/shaders/glow/blur_horiz.slang"
filter_linear4 = "true"
scale_type_x4 = "source"
scale_x4 = "0.250000"
scale_type_y4 = "source"
scale_y4 = "0.250000"
srgb_framebuffer4 = "true"
mipmap_input4 = "true"

shader5 = "../crt/shaders/glow/blur_vert.slang"
filter_linear5 = "true"
srgb_framebuffer5 = "true"

shader6 = "../crt/shaders/glow/resolve.slang"
filter_linear6 = "true"
srgb_framebuffer6 = "false"

parameters = "INPUT_GAMMA;BOOST;GLOW_WHITEPOINT;GLOW_ROLLOFF;BLOOM_STRENGTH;OUTPUT_GAMMA;CURVATURE;moire_mitigation;warpX;warpY;shadowMask;maskDark;maskLight"
BLOOM_STRENGTH = "0.200000"
BOOST = "1.000000"
CURVATURE = "1.000000"
GLOW_ROLLOFF = "4.999998"
GLOW_WHITEPOINT = "1.000000"
INPUT_GAMMA = "2.400000"
maskDark = "0.500000"
maskLight = "1.500000"
moire_mitigation = "4.000000"
shadowMask = "0.000000"
warpX = "0.031000"
warpY = "0.041000"
OUTPUT_GAMMA = "2.200000"

There’s also a runtime parameter to add a mask effect, but it significantly dulls the image such that I think it looks better without it.

The above preset looks similar to this but with the bloom/glow toned down significantly (and no gif compression artifacts):


It seems that I do not have



in my files… weird


Hunter that looks great. I ‘converted’ that preset to glsl and I’m missing a few parameters: mask, curvature and moire mitigation. Is that normal? Perhaps the vulkan version of glow has more stuff than the ogl one?


@guest.r, good effort. I use something similar for 480 content such as Dreamcast, Sammy Atomiswave, GameCube etc…


As far as I know the blendoverlay shader is only available in SLANG format, hence why you can’t find it under CG.