Please show off what crt shaders can do!

OK. It looks like I’ve managed to deal with all my struggles with PSX games. Thanks to @shenglong @hunterk and all the others who made “blendoverlay.slang” shader possible. I’ve combined GTU-v50 + CRT-easymod-halation to smooth the picture and apply some decent glow. Image adjustment helped with some black level cranking. And at the very end of the chain is “Blendoverlay” with “dot pitch” texture made everything almost perfect (IMO).

This works especially good with the games like GEX and Rayman. Where edgy textures applied on top of the background making the whole look very pixellated (in a bad way)

Shader preset


Looking good @Great_Dragon, like a CGA monitor from the early 90’s… Credit definitely goes to @hunterk and @torridgristle, I was just the director!

Please note, I would like to add for people viewing @Great_Dragon screen shots from close up (laptop or desktop screens), these screen shots look better when viewing from a couch (6ft+ distance) and are better in motion. The dot pitch/slot-mask and smoothing effect might look a bit “in your face” from close up.

You’ve done well to make the shader combo effective on PSX games which is a system I always find tricky to get the right look out of.

GTU-V050 is my bread and butter preset. Where possible, I always go with that at the start of a shader chain. I feel it handles smoothing/blurring (which can be controlled) really well for both 2D and 3D content and applies a nice colour profile, it’s pretty universal, works out of the box plus plays nice with other shader passes.

Funny how I was desperate (and still am!) to get the 199x shader by @Birm in a lightweight GLSL/SLANG format, which you used in your screen shots earlier in the thread, and from that, this blendoverlay was born!

1 Like

just messing around with some settings (wish I could remove that inner shadow effect tho’)


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:

1 Like

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