Please show off what crt shaders can do!


Thanks for clarification, I did assume they were done by the same person or someone trying create a similar effect. Regarding my comments in the other thread, maybe the video compression in the YouTube video I linked to is making the mask appear grayscale and softer. Your screen shots look lovely, plus I zoomed into your screenshots like 1000% which isn’t normal, when viewing from the couch they would look just fine.

EDIT: @Great_Dragon - maybe the dot mask 4 is what makes yours more prominent?

EDIT: Anyway, shame this effect hasn’t been re-created in GLSL and made less resource intensive.


shenglong, so you are checking with torridgristle if there is a way to emulate the above shader with a basic png mask?

Would love to have the ASP v3 (I believe v4 is in the works) in glsl, as being an Intel owner, I cannot do much with cg’s.

EDIT: Checking the above image again, I can see that it has a vignette effect as well, darkening the corners. That can be easily achievable with an overlay anyways.


@torridgristle - that was one brilliant idea mate. It runs blazing fast and looks really nice.

And yeah, @Great_Dragon’s mask is lovely indeed. It’s just that I tend to prefer aperture grills, and also that I can’t tell what shadow masks really look like until they are merged with scanlines.


Yeh I’ve asked @torridgristle in his thread if he could kindly have a go, he has posted in this thread and done some work on making lightweight GLSL shaders that utilise LUTs (look up textures). I’m not technical so don’t even know if it’s possible, no harm in asking :grinning: Hopefully what I’ve requested makes sense!

I’ve had ASPv3 since day one, it has some cool presets but I don’t actively use it because the CG format does not work with some cores and you need a beefy machine to use the more advanced stuff.


Yes. That Dot Mask 4 with default settings looks more visible. Though if you change its size you will turn it into somewhat close to real TV shadow mask IMO.

If that is what you are looking for you can use Dost Mask shader alone with mask type 4 and fixed size. Or you can use CRT-Lottes (that is original shader from where they rip off that dot mask filter). But you have to change kernel shape size to 3

alias0 = ""
bloomAmount = "0.150000"
brightBoost = "1.000000"
filter_linear0 = "false"
float_framebuffer0 = "false"
hardBloomPix = "-1.500000"
hardBloomScan = "-2.000000"
hardPix = "-3.000000"
hardScan = "-8.000000"
maskDark = "0.500000"
maskLight = "1.500000"
mipmap_input0 = "false"
parameters = "hardScan;hardPix;warpX;warpY;maskDark;maskLight;scaleInLinearGamma;shadowMask;brightBoost;hardBloomPix;hardBloomScan;bloomAmount;shape"
scale_type_x0 = "absolute"
scale_type_y0 = "source"
scale_x0 = "1280"
scale_y0 = "3"
scaleInLinearGamma = "1.000000"
shader0 = "D:\Games\Emu\RetroArch\shaders\shaders_glsl\crt\shaders\crt-lottes.glsl"
shaders = "1"
shadowMask = "4.000000"
shape = "3.000000"
srgb_framebuffer0 = "true"
warpX = "0.001000"
warpY = "0.001000"
wrap_mode0 = "clamp_to_border"

Both shaders are available in GLSL

As for the viewing distance you are absolutely correct. This type of look is not designed to play on PC monitor with usual viewing distance around 60 cm. It looks well on my 40" TV from 2 meters away.


@Great_Dragon - Brilliant will have a go with dotmask and fixed size later when I get home.


I fixed the messy scanlines in GameCube and DreamCast with the crt-hyllian-3d shader.


I keep experimenting and trying new stuff. This is a working progress of a preset that really has a high contrast crt feel to it. I still need to improve the scanlines, but it shows a lot of promise. It looks so cool in movement, almost like it increases the resolution of games, just like a good crt does!


Looks more like a lcd to me. :wink:


Dunno entirely how to start here… anyway, owning a Samsung 40" 4K UHD Smart TV from MU6100-series, and been trying to explore that for playing retro-games through plugging from my laptop to that TV. Sounds horrible, I know…

Anyway, I played around with CRT-Royale for some games now and then, and have kind of liked this look:

I think I’m hitting to 720p-resolution for games here - meanwhile my laptop’s 1080p currently (bought it 3 years ago, lol)

TBQH, IDK what to go off entirely to emulate the looks of PVMs (minus some heavy scanlining) on my 4K LCD TV, so some help could be nice.


Those are actually quite nice, @daddu3!

Preset is shaping up well, scanlines up and running


You think? Thanks fam! I guess I’m in a good track for now… :smiley:


CRT-Royale is life, CRT-Royale is love ! Nice Zelda ALTTP mod by the way !


I’ll guess I’ll stick with Royale for now! :face_with_hand_over_mouth:

On that end, the credit for that ALLTP-mod goes to here: Though I guess I DID do something of my own modding to it, combining it with this QoL-hack:

I have to blame Smash Ultimate’s incarnation of Zelda for trying this mod, she’s too adorable~


I have a very different perspective when it comes to CRT emulation. I think what this thread really demonstrates is just how exaggerated most CRT shaders are. Most of these images have far too much bloom/bleed/blur etc, and I don’t understand why people want that in their games. A CRT image is “soft” for reasons that have very little to do with blur. It’s the scanlines, lower TVL, phosphor structure and glow that gives a CRT image it’s characteristic “softness,” which people mistakenly conflate with blur.

It seems that most shaders are created by either looking at photos of CRTs or by looking at a CRT in person and trying to “eyeball” it. While the latter approach is superior to the former, it’s still inferior to an approach that starts with a sound conceptual understanding of what a CRT screen is actually doing to the image, objectively, along with an understanding of what it is about CRT screens that enhance the objective image quality for 240p content.

Yes, I understand that maybe your crappy low quality TV from the early 90s may have, in some ways, resembled these shaders. The question is, why are you trying to replicate a crappy TV from the 90s instead of a high quality CRT from that era? Back in the 90s, if someone had offered to replace my low quality consumer TV with a high quality RGB CRT, it would have been crazy to refuse. People bought RGB CRTs when they had the money and if they were available, because the image quality is objectively superior. Why people want to add blur, pincushion distortion, signal distortion, bleed, etc is beyond me, but nostalgia isn’t really a factor for me, nor do I care about some poorly defined and dubious notion of “authenticity.”

For those who don’t care for the hyper-exaggerated, over-bloomed, and distorted look you get with most shaders, you might be interested in a more minimalist approach that is focused on getting an LCD screen to actually function in a similar way as a high quality CRT screen that is free of the undesirable distortions that people sought to eliminate on their CRTs, and which are found in many shaders.

The following images should be viewed with your display backlight adjusted to 100%, or else they will probably look like crap.

Example shot

What’s going on in this image? The above is a perfect rendition of a 360 TVL RGB CRT. The only things being added here are scanlines, the RGB phosphors, and some slight vertical blending between the scanlines. The scanlines are a bit less than 1:1 with the vertical blending added.

I’ve adjusted my display backlight to 100% and I’ve made some adjustments to the mask strength to find the ideal compromise between brightness and mask strength. With this configuration, my screen has contrast and peak brightness levels comparable to that of a high quality CRT, and the mask is as accurate/strong as possible while maintaining brightness. At normal viewing distances, the emulated phosphors act very much like those on a real CRT, exhibiting similar glow and halation effects and blending together in a similar way, Viewed in person, this looks better than any shader I’ve tried, and I’ve tried all of them. Get up close and it’s as ugly and incoherent as what an actual CRT looked like up close. Gradually move away from the screen and all the different elements blend together as a result of the way the human eye works, just like with a real CRT!

With my display backlight at 100%, I’m getting a peak brightness of around 200 cd/m2, which is slightly brighter than what was common for CRTs. With HDR capable displays, it should be possible to max out the mask strength while maintaining peak brightness levels that match or even exceed that of a CRT. In other words, with an HDR-capable display, it will be possible to get the emulated “phosphors” to glow as brightly as the real thing on a CRT. At that point it will be really pointless to add glow or halation effects via shaders.

Here’s another emulated image without any vertical blending added- just 1:1 scanlines and the vertical RGB phosphors.

Here’s a close-up image of an actual high-quality CRT (a Sony FW900, I believe), to show the range of what’s possible regarding image quality on a CRT. You’ll notice that this image is far sharper and less “bloomy” than what the vast majority of shaders do to the image. Actually, the CRT image is much sharper and exhibits less bloom than the first emulated image that I posted above, and looks more similar to the second emulated image with “perfect” scanlines. The scanlines in the CRT image are even more pronounced, being as close to 1:1 as possible.

The shader being used in the emulated images is the “zfast + dotmask” shader that HunterK put together, although I’m unsure if it has been added to the shader repository. I’ve stacked this with the “image adjustment” shader for gamma correction. Here are the changes I’ve made to the parameters:

BLURSCALEX = “0.000000”

BRIGHTBOOST = “1.000000”


HILUMSCAN = “8.000000”

ia_monitor_gamma = “2.200000”

ia_target_gamma = “2.400000”

LOWLUMSCAN = “9.000000”

MASK_DARK = “0.000000”

MASK_FADE = “0.600000”

maskDark = “0.200000”

maskLight = “2.000000”

shadowMask = “2.000000”

bilinear filter turned OFF in the video options, shader filter set to “nearest.” Integer scale turned ON in the video options, custom aspect ratio enabled (6x5 integer scale).

NOTE: These settings are partially display-dependent. The goal is to maximize scanline and mask strength while maintaining CRT-like peak brightness, getting the scanlines as close to 1:1 as possible and the mask strength as close to 100% as possible without compromising on brightness. As such, settings will differ depending on the display being used. For reference, I’m using an ASUSVG248QE, which has an advertised peak brightness of 350 cd/m2. If one wants to add some vertical blending, adjusting the “mask fade” parameter will accomplish this. This will also brighten up the screen somewhat and allow the mask strength to be increased, at the expense of making the scanlines less prominent than the “perfect” 1:1 scanlines one sees in the second emulated image and the CRT image.

Also, bear in mind that using this approach limits you to using integer scale, and the horizontal integer scale must be a multiple of 3 in order to avoid ugly artifacts that resemble color bleed. This isn’t that big of a deal when you consider that 6x5 is already very close to a 4:3 ratio, and that the geometry of CRTs varied widely depending on how they were calibrated and was never perfect.

EDIT: I guess I should also mention that it’s entirely possible to add blur with this shader- just set the shader filter to “linear.” Adjust BLURSCALEX if more blur is desired.

CRT shader debate

21 posts were split to a new topic: CRT shader debate


Personally I’m in love with CRT-Royale Kurozumi edition, and I think it looks a lot like Nesguy’s Super Mario World screenshot.


So what do you guys think, is the best out-of-the-box shader for a realistic " high-end consumer crt look"? :thinking:


“Beauty is in the eye of the beholder” (the person who is observing gets to decide what is beautiful).

Technically, going by the general concession it might be crt-royale and its many variations if you are going for a high-end consumer CRT look, it has many parameters available giving you complete control over the look, however you do need a beefy machine.

The wonderful thing about RetroArch is it gives you the options via shaders to choose what visuals you want, be it a high-end CRT display or a blurry, distorted RF mess.

Do what you think looks right/best for you, if you’ve experienced CRT displays you will know what feels right for you based on your previous experiences.



CRT-royale-kurozumi can definitely produce some very nice results, with some tweaking. I can understand why it’s so popular. CRT-aperture also looks very good.

One advantage of the settings I posted is that it’s an extremely lightweight approach- pretty much any platform that can run shaders will be able to run it. Another advantage is that it’s easier to set up- you don’t have nearly as many settings to mess with.