Please show off what crt shaders can do!

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

The screenshots are nice, I just wish it looked that good on my TV.

I don’t like the noise though, there’s some obvious macro-blocking going on. Look at the bright green window on Samus’ ship, for example.

2 Likes

The noise is pretty high strength, but I felt like I was just being an old man yelling about my lawn

4 Likes

Maybe for you you’d have to bring the noise down to -30 or something. Please keep in mind this shader was created randomly by coming across that Zelda pic and me just trying to copy that, I’m not even sure what the hell kind of crt this shader is trying to be lol. Somehow I ended up liking it and now just trying to experiment with this creation. It does give off a nice analog kind of feeling to me though for the older systems

3 Likes

I will follow up with that I use low levels of noise in all my presets. (Tho I’ve been doing weird stuff with my presets since the beginning :man_shrugging:)

2 Likes

I haven’t seen you post up anything in a while, let us see what you been cooking up in your shader lab lol. And the high noise was a personal choice, I don’t mind the macro blocking I feel it adds to the analog look. It’s on -60, it was on -80 in the first pic with Zelda so it was even crazier then. Even I felt like it needed to be toned down a bit the more I looked at it

2 Likes

:joy: honestly my computer died a couple of weeks ago. I’m sad, just sitting around doing nothing.

(If I decide to poke at the shell that is my PC, I might try and pull some presets and modified shaders and chains off the HDD)

4 Likes

What was the cause of death?

An upgrade to a shader I tweaked before (from Fake-lottes code, mask from crt-geom) , with added corner borrowed from crt-geom and sharp filter lifted from crt-pi. This one pushes my old HTC one almost to its limit running around 65-68 fps.

https://mega.nz/file/77xlxYgI#ljIRadQ4fSavor0brlt6ke6cYHrwUzkbOZ-GTF1PeB8

3 Likes

Have no idea, stopped getting picture. (Removed GPU and tried MB HDMI port, still no picture no even the bios, no codes, everything lighting up and fans spinning, hdds fine)

The cable, and port on the display were fine.

2 Likes