Please show off what crt shaders can do!

Yup, that was it right there. I’m glad you got it working and I hope you enjoy. Quick tip, I like to use the “cool” temperature look but if you want to change the temperature settings back to warm, go to the parameters settings and press start on where it says White Point, it’ll default the number back to 6504.00 and you’ll go from something like this:

to this:

Not everyone likes the cool temperature look so I’m just throwing that out there. Hope you enjoy

2 Likes

I will try it out, thank you.

2 Likes

Guys, I just bought an LG OLED C1, how good is it to use CRT shaders at 4k compared to 1080p?

4 Likes

Like night and day tbh, if you actually set it up for 4k.

2 Likes

Tbh I can’t wait to try all of the different shaders and affects when I get my version of Retroarch running, this stuff looks amazing man

1 Like

Oh really? Well when you’re up and running you can try my latest shader presets as well then!

CyberLab Mega Bezel Death To Pixels (Arcade - Raw 1080p Edition)

CyberLab Mega Bezel Death To Pixels (Arcade - Sharp 1080p Edition)

3 Likes

Came across that Zelda II pic of the shader comparisons to the real crt:

and tried to recreate that look from the “what retro games actually looked like” pic. I’m sure this has probably been done a few times here but I thought I’d try it out anyway:

It’s not an exact replica but it gets the point across I think lol. I would probably only use a shader like this for the nes era and for systems pre nes era. Who knows though maybe some of you will like to use it for some of your games.

shaders = "10"
shader0 = "shaders_slang/crt/shaders/crtsim/composite.slang"
filter_linear0 = "true"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "shaders_slang/misc/grade.slang"
filter_linear1 = "true"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "PrePass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders_slang/crt/shaders/guest/advanced/avg-lum.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "true"
alias2 = "AvgLumPass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders_slang/crt/shaders/guest/advanced/linearize.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "LinearizePass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders_slang/crt/shaders/guest/advanced/gaussian_horizontal.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = ""
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "absolute"
scale_x4 = "800"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "GlowPass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "absolute"
scale_x5 = "800"
scale_type_y5 = "absolute"
scale_y5 = "600"
shader6 = "shaders_slang/crt/shaders/guest/advanced/bloom_horizontal.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "absolute"
scale_x6 = "800"
scale_type_y6 = "absolute"
scale_y6 = "600"
shader7 = "shaders_slang/crt/shaders/guest/advanced/bloom_vertical.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "BloomPass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = ""
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "viewport"
scale_x8 = "1.000000"
scale_type_y8 = "viewport"
scale_y8 = "1.000000"
shader9 = "shaders_slang/crt/shaders/guest/advanced/deconvergence.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = ""
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "viewport"
scale_x9 = "1.000000"
scale_type_y9 = "viewport"
scale_y9 = "1.000000"
NTSCLerp = "0.000000"
NTSCArtifactScale = "0.000000"
animate_artifacts = "0.000000"
interm = "5.000000"
bloom = "0.900000"
halation = "0.400000"
rolling_scan = "-0.100000"
h_sharp = "2.000000"
s_sharp = "0.000000"
BLOOM = "1.000000"
csize = "0.030000"
barspeed = "200.000000"
barintensity = "0.010000"
warpX = "0.040000"
warpY = "0.050000"
c_shape = "0.600000"
shadowMask = "3.000000"
maskstr = "1.000000"
deconrr = "0.750000"
deconrb = "-0.750000"
deconrry = "1.500000"
deconrby = "-1.500000"
decons = "-2.000002"
addnoised = "-0.800000"
textures = "MaskTexture;NTSCArtifactSampler;shadowMaskSampler;SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
MaskTexture = "shaders_slang/crt/shaders/mame_hlsl/resources/aperture-grille.png"
MaskTexture_wrap_mode = "clamp_to_border"
MaskTexture_mipmap = "false"
NTSCArtifactSampler = "shaders_slang/crt/shaders/crtsim/artifacts.png"
NTSCArtifactSampler_linear = "true"
NTSCArtifactSampler_wrap_mode = "clamp_to_border"
NTSCArtifactSampler_mipmap = "false"
shadowMaskSampler = "shaders_slang/crt/shaders/crtsim/mask.png"
shadowMaskSampler_linear = "true"
shadowMaskSampler_wrap_mode = "clamp_to_border"
shadowMaskSampler_mipmap = "false"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron1.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron2.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/crt/shaders/guest/lut/other1.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
SamplerLUT4 = "shaders_slang/crt/shaders/guest/lut/custom_lut.png"
SamplerLUT4_linear = "true"
SamplerLUT4_wrap_mode = "clamp_to_border"
SamplerLUT4_mipmap = "false"
9 Likes

It should be good you know but I’ve just found out that 1080p can be pretty good as well! You can take a look at my presets above to see what I’m talking about.

1 Like

Hello! Just sharing here what I created with HSM’s awesome shaders for my 3440x1440 21:9 monitor (check the full resolution screenshots):

Simple stuff, love how much you can customize this.

3 Likes

Honestly I have never seen a TV that looks as bad as the “what they actually looked like” pic. I’m guessing that’s a 14” or smaller screen. Anything above that is going to have visible scanlines.

Like 90% of all TVs in all living rooms were 27” back in the day.

Still, good approximation of the photo.

5 Likes

Glad you’re still alive :joy:

1 Like

Day job keeping me busy, not much time for retro gaming these days but I’m still here :slightly_smiling_face:

I really need to update stuff.

2 Likes

I was reading a forum post a while ago where the the guy who made it wrote that the pic is taken out of context, I believe it was Bob the RetroRGB guy, but I may misremember that. Last pic looks pretty bad, but I think he even wrote it looks similar on his BVM via composite or something, there’s probably really some missing context and circumstances there.

Don’t think at all that TVs were like mostly 27" when Zelda was a thing though. That’s sound’s pretty big even by the 90’s, was that the norm in your neighborhood :crazy_face:. Consider that standard computer monitors where like 12-14 Inch in the 80’s. Check this out:

https://www.researchgate.net/figure/3-Percentage-of-TV-screen-sizes-sold-in-the-US-between-1985-and-1998-13-18_fig6_237218888

3 Likes

By the 90s, 20” was considered small in the US. You can see this on the graph, by the mid-90s 27” was the most common size sold while sales of 20” and smaller screens were declining. Everyone I grew up with in the 90s had 27” TVs in the living room, I think this was fairly typical.

Computer monitors are much higher quality than TVs. Computer monitors had to display at least 640x480 progressive (at least by the 90s). This puts the TVL for a monitor at around 500, while 300 TVL was more typical for a TV.

And yeah, it’s possible for a small PVM to have almost no scanlines. A 9” PVM with 250 TVL won’t show scanlines. So it’s possible that the “what they actually looked like” pic is from a PVM, sure.

Brainbin posted a shot a while back that nicely illustrated the relationship between screen size, TVL and scanlines.

Basically: small BVM = medium PVM = large Wega.

3 Likes

Ever since I posted the shader up I found myself using it more and now I pretty much started using it for nes/pre nes era consoles exclusively lol, also looks ok with the 16 bit era consoles as well. I love how the static noise gives it a “dirty” look, makes it look like an old crt

1 Like

So that’s why I’ve never seen scanlines, I played on a 14" screen my whole childhood.

1 Like

Sure, my point about computer monitors was just that they grew similar in size as TVs, by the end of the 90s they were mostly in the 17"-19" range, at the beginnning more like 15", and during the 15 Khz era of the 80’s (mostly also the time of the NES) even smaller (not necessarily here refering to PC monitors only either, during that time, composite only was still a thing for some systems).

2 Likes

I think most TVs were around 300 tvl, so to simulate that I believe you would need a 4x4 mask on a 1080p monitor , 1080/4=270 so it should be mask 6 on guest.r-dr.venom. Mask 0/5/7 should simulate the look of a PVM I believe with 500+ TVL. Or no mask at all for BVM.

1 Like

Were there any TV makers that could believably claim a significantly higher TVL count? I’ve seen a lot of talk about JVC’s marketing being deceiving regarding this, but I’ve seen marketing by Panasonic that also talked about “600 horizontal lines” via RGB, which would be, what, 450 TVL?

I went and tweaked the shader I made on the last post since it seems you guys liked it, this version is a little more refined. It’s funny cause I only messed around with this just trying to copy that Zelda pic, now I love using it myself:

shader0 = "shaders_slang/crt/shaders/crtsim/composite.slang"
filter_linear0 = "true"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "shaders_slang/misc/grade.slang"
filter_linear1 = "true"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "PrePass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders_slang/crt/shaders/guest/advanced/avg-lum.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "true"
alias2 = "AvgLumPass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders_slang/crt/shaders/guest/advanced/linearize.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "LinearizePass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders_slang/crt/shaders/guest/advanced/gaussian_horizontal.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = ""
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "absolute"
scale_x4 = "800"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "GlowPass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "absolute"
scale_x5 = "800"
scale_type_y5 = "absolute"
scale_y5 = "600"
shader6 = "shaders_slang/crt/shaders/guest/advanced/bloom_horizontal.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "absolute"
scale_x6 = "800"
scale_type_y6 = "absolute"
scale_y6 = "600"
shader7 = "shaders_slang/crt/shaders/guest/advanced/bloom_vertical.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "BloomPass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = ""
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "viewport"
scale_x8 = "1.000000"
scale_type_y8 = "viewport"
scale_y8 = "1.000000"
shader9 = "shaders_slang/crt/shaders/guest/advanced/deconvergence.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = ""
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "viewport"
scale_x9 = "1.000000"
scale_type_y9 = "viewport"
scale_y9 = "1.000000"
interm = "5.000000"
bloom = "0.900000"
halation = "0.400000"
rolling_scan = "-0.100000"
h_sharp = "2.000000"
s_sharp = "0.000000"
BLOOM = "1.000000"
csize = "0.030000"
barspeed = "200.000000"
barintensity = "0.010000"
warpX = "0.040000"
warpY = "0.050000"
c_shape = "0.600000"
shadowMask = "3.000000"
maskstr = "1.000000"
deconrr = "0.750000"
deconrb = "-0.750000"
deconrry = "1.500000"
deconrby = "-1.500000"
decons = "-2.000002"
addnoised = "-0.600000"
noiseresd = "1.000000"
textures = "MaskTexture;NTSCArtifactSampler;shadowMaskSampler;SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
MaskTexture = "shaders_slang/crt/shaders/mame_hlsl/resources/aperture-grille.png"
MaskTexture_wrap_mode = "clamp_to_border"
MaskTexture_mipmap = "false"
NTSCArtifactSampler = "shaders_slang/crt/shaders/crtsim/artifacts.png"
NTSCArtifactSampler_linear = "true"
NTSCArtifactSampler_wrap_mode = "clamp_to_border"
NTSCArtifactSampler_mipmap = "false"
shadowMaskSampler = "shaders_slang/crt/shaders/crtsim/mask.png"
shadowMaskSampler_linear = "true"
shadowMaskSampler_wrap_mode = "clamp_to_border"
shadowMaskSampler_mipmap = "false"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron1.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron2.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/crt/shaders/guest/lut/other1.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
SamplerLUT4 = "shaders_slang/crt/shaders/guest/lut/custom_lut.png"
SamplerLUT4_linear = "true"
SamplerLUT4_wrap_mode = "clamp_to_border"
SamplerLUT4_mipmap = "false"

Edit: I changed the Noise Resolution parameter down to 1.00, the image looks a little better that way, that way if you want to reduce the noise back to -80 the way I had in the Zelda comparison pic there won’t be as much macro blocking, the noise is still severe though lol. If you want the noise to look exactly how it does in the pics simply press start on the Noise Resolution parameter.

5 Likes