Please show off what crt shaders can do!

Nothing new and exciting or even technical as I’m not a coder, just the lut and d65 passes from guest-venom and the img-adj shader to do the colours, then easymode-halation and finally mame-focus for the subtle blurring which you kindly isolated for me from mame-hlsl :+1:.

As mentioned, still tweaking it so nothing to shout about yet.

2 Likes

Sounds decent, imo. Have you tried grade yet?

Honestly I forgot about disconnecting mame-focus, lol. At this point I don’t remember which all passes I’ve disconnected from mame-hlsl, le sigh. I know that I’ve disconnected, these passes as of now (phosphor, deconvergence, focus, ntsc), I think I’ve also done (distortion, and whichever pass the mask is in, lol.)

I really need to round up all of the disconnects I’ve done or just redo them, and post it on GitHub or something, lol.

Back to the main topic though, mind sharing some screenies? I understand the never ending tweaking, lol. (I finish a thing and then I’m like wellllll I could do this, lol.)

1 Like

Yes I have tried grade but didn’t want to commit to it just yet as it was still in development.

Sure, will post some screens once I’m a bit more happier with the results.

1 Like

I think grade is basically done for the time being, as Dogway’s last couple updates have been release candidates, it’s entirely up to you though.

Look forward to some screens when you are more happy with things, I’m currently fiddling with a vcr shader and trying to tweak my settings some more. (As no one is a fan, lol.)

2 Likes

Yeah, I just don’t get it :stuck_out_tongue:

Basically, by running stuff through the VCR’s RF connection you’re degrading the signal to the worst possible quality; most VCRs used a crappy notch filter AFAIK. So you’d get dot crawl and rainbows galore.

Nostalgia is a powerful thing, though.

1 Like

Basically we’re trying to hit opposite ends of the spectrum.

You’re trying to go for an accurate shader that is almost sterile looking, imo. (Not complaining or anything your shots look great!)

Whereas I’m going for an accurate-ish shader with all the garbage included. (Though I am trying to not go crazy with the garbage.)

Will I actually use it? 🤷

Am I having fun working on it? Most the time, lol.

EDIT: To clarify on my sterile comment. Even when I was using composite or svideo on a CRT, there’s some kind of (motion?) on screen regardless of whether there’s actually animation or movement in the image. Either from barely noticeable static, minor twitching to the image, etc.

If the image is completely without motion when no animation is on screen, I feel like I’m looking at idealization of a CRT, not an actual CRT it gives me an digital (artificial) vibe instead of a analog (organic?) vibe.

Again I do like what you’re doing, and my images need cleaning up for sure. Hope this made some sense.

I’m simply going for the best possible image quality and have pretty much abandoned any notions of “authenticity.” I’ve spent FAR more time playing these games as an adult than I ever did as a kid, so nostalgia just isn’t a big motivation for me.

That said, many CRTs (including some consumer models) were quite capable of the “sterile” look with strong scanlines and sharp pixels. Photos of CRTs are typically blurrier than what we see in person (see the example I posted a few posts ago; the Trinitron is almost as sharp as the plasma TV with every third line blanked).

We just don’t have enough pixels at 1080p to do the full array of CRT effects in a convincing way, IMO. Then there’s the lack of contrast and brightness, etc…

It sounds like what you’re describing here is the effect of capacitors that have dried out. A good wash and cap kit should take care of that :wink:

EDIT: just to be clear, my comments weren’t meant as a knock against you or anything.

1 Like

At this point I feel I’ve spent equal amounts of time as a child and an adult playing some of these titles, so it’s a mixed bag of nostalgia for me. On one hand I’m going for that, but on the other hand I’m not really.

I’ve never had a CRT look that sterile, mainly it was background static. I’m not personally going off images but memory which is about as bad, lol. (Though I do own and have access to a few CRT’s.) Though I believe CRT’s can get close to being that sterile.

I feel like resolution is only a portion of the problem for emulating CRT effects. (Brightness, color range, screen surface “matte vs gloss”, and just a slew of other things I’m probably overlooking right now.)

Ehhh, I don’t feel like opening up my current CRT. If I ever convince my friend’s grandmother to let go of her Trinitron I’d consider it though lol.

You’re fine man, lol. I mean it kinda bums me out when people don’t seem to be into what I’m doing, but I’m not taking any of it personally. My explanations are just me trying to give more context to my thought process for what I’m doing. (Give people a better understanding of why I’m doing, what I’m doing, lol.)

1 Like

Added the Lottes stretched dot mask. Even with subtractive (bicubic?) sharpening maxed out, this Link still isn’t as sharp as what you see on a consumer-grade Trinitron w/RGB, but it’s getting pretty close. Kind of an apples to oranges comparison since this is comparing a dot mask effect to an aperture grille, but the TVL count / dot pitch is similar.

Also, is it just me or does this gamma seem too high?

image

4 Likes

It’s kinda hard to tell from that image, imo. Though it does seem fine on my end. Like to see a few full screens though, lol. (Honestly I think half the color issue may be from comparing it to those pictures, as it’s hard telling what the cameras are doing to the images colors. But they don’t look right at least from a color perspective, imo.)

Edit: About the colors, idk wth I was talking about, this is what happens when you multitask, lol. The only thing I can really see going on with the colors is the saturation might be boosted some (maybe, 🤷)

1 Like

Yeah I’m just going to assume that the camera is doing stuff to the colors :stuck_out_tongue:

I think the website finally cut me off because now it’s saying that all my images are too big to be uploaded, lol. No full screens for you!

Edit: forgot to correct the color temperature but oh well. White point should probably be set to ~7500K.

Editedit: yeah, I boosted the saturation some but everything is still in range AFAIK (no clipping or anything).

:joy:

5 Likes

Sounds like the file size is too big, lol.

Off to an image hosting site with you, lol.

Images look nice.

1 Like

Very, very, very nice :black_heart: Settings for those last shots?

2 Likes

Thanks! I’m pretty happy with these. Just a reminder, I’m using an HDTV with limited range sRGB with a temperature of ~7500K, backlight @ 100%. I’m also using 5x scale (vertical) at 1080p.

You can substitute the guest-dr-venom slot mask for the Lottes mask by setting slot mask width to 2.00 and slot mask strength to 0.65; brightness and contrast should be close to an exact match. The slot mask has some handy options for adjusting the size/width so it can be used at any resolution. I just kinda prefer Lottes, though.

shaders = "10"
shader0 = "shaders_slang/stock.slang"
filter_linear0 = "false"
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/stock.slang"
filter_linear1 = "true"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
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/misc/grade.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "WhitePointPass"
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/afterglow.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "AfterglowPass"
float_framebuffer3 = "false"
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/avg-lum.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "true"
alias4 = "AvgLumPass"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders_slang/crt/shaders/guest/linearize.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "LinearizePass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders_slang/crt/shaders/guest/blur_horiz.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders_slang/crt/shaders/guest/blur_vert.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "GlowPass"
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/linearize_scanlines.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = ""
float_framebuffer8 = "true"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders_slang/crt/shaders/guest/crt-guest-dr-venom.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"
parameters = "g_gamma_in;g_signal_type;g_gamma_type;g_crtgamut;g_space_out;g_hue_degrees;g_I_SHIFT;g_Q_SHIFT;g_I_MUL;g_Q_MUL;g_lum_fix;g_vignette;g_vstr;g_vpower;g_lum;g_cntrst;g_mid;wp_temperature;g_sat;g_satr;g_satg;g_satb;g_vibr;g_lift;blr;blg;blb;wlr;wlg;wlb;rg;rb;gr;gb;br;bg;LUT_Size1;LUT1_toggle;LUT_Size2;LUT2_toggle;SW;AR;PR;AG;PG;AB;PB;sat;lsmooth;GAMMA_INPUT;TAPSH;GLOW_FALLOFF_H;TAPSV;GLOW_FALLOFF_V;TATE;IOS;OS;BLOOM;brightboost;brightboost1;gsl;scanline1;scanline2;beam_min;beam_max;beam_size;h_sharp;s_sharp;csize;bsize;warpX;warpY;glow;shadowMask;masksize;vertmask;slotmask;slotwidth;double_slot;slotms;mcut;maskDark;maskLight;CGWG;gamma_out;spike;inter;interm;bloom;scans"
g_gamma_in = "2.200000"
g_signal_type = "0.000000"
g_gamma_type = "1.000000"
g_crtgamut = "0.000000"
g_space_out = "0.000000"
g_hue_degrees = "0.000000"
g_I_SHIFT = "0.000000"
g_Q_SHIFT = "0.000000"
g_I_MUL = "1.000000"
g_Q_MUL = "1.000000"
g_lum_fix = "0.000000"
g_vignette = "0.000000"
g_vstr = "40.000000"
g_vpower = "0.200000"
g_lum = "0.000000"
g_cntrst = "0.000000"
g_mid = "0.500000"
wp_temperature = "6505.000000"
g_sat = "0.000000"
g_satr = "0.000000"
g_satg = "0.000000"
g_satb = "0.000000"
g_vibr = "0.000000"
g_lift = "0.000000"
blr = "0.000000"
blg = "0.000000"
blb = "0.000000"
wlr = "1.000000"
wlg = "1.000000"
wlb = "1.000000"
rg = "0.000000"
rb = "0.000000"
gr = "0.000000"
gb = "0.000000"
br = "0.000000"
bg = "0.000000"
LUT_Size1 = "16.000000"
LUT1_toggle = "0.000000"
LUT_Size2 = "64.000000"
LUT2_toggle = "0.000000"
SW = "1.000000"
AR = "0.070000"
PR = "0.050000"
AG = "0.070000"
PG = "0.050000"
AB = "0.070000"
PB = "0.050000"
sat = "0.000000"
lsmooth = "0.900000"
GAMMA_INPUT = "2.200000"
TAPSH = "4.000000"
GLOW_FALLOFF_H = "0.000000"
TAPSV = "4.000000"
GLOW_FALLOFF_V = "0.000000"
TATE = "0.000000"
IOS = "0.000000"
OS = "1.000000"
BLOOM = "0.000000"
brightboost = "1.000000"
brightboost1 = "1.000000"
gsl = "2.000000"
scanline1 = "15.000000"
scanline2 = "5.000000"
beam_min = "1.000000"
beam_max = "0.850001"
beam_size = "0.000000"
h_sharp = "3.000000"
s_sharp = "1.000000"
csize = "0.000000"
bsize = "600.000000"
warpX = "0.000000"
warpY = "0.000000"
glow = "0.000000"
shadowMask = "3.000000"
masksize = "1.000000"
vertmask = "0.000000"
slotmask = "0.000000"
slotwidth = "2.000000"
double_slot = "1.000000"
slotms = "1.000000"
mcut = "0.000000"
maskDark = "0.500000"
maskLight = "1.500000"
CGWG = "0.000000"
gamma_out = "2.200000"
spike = "1.000000"
inter = "400.000000"
interm = "1.000000"
bloom = "0.000000"
scans = "1.000000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3"
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"
2 Likes

Slightly off-tangent but you can also swap the afterglow pass for Dogway’s glass shader.

You can lower both of the reflection brightness and fresnel to basically remove the reflection effect while keeping the afterglow and deconvergence effects from the shader.

3 Likes

Thank you so much! Chrono Trigger looks AMAZING in your easymode-2d and 3d shaders. Appreciate this alot man!!

4 Likes

CRT-easymode-halation, (view image to see)

4 Likes

Album (82 images)

settings screencap

ini file (pastebin)

2 Likes

Altered Beast

Road Rush

3 Likes

I guess most people don’t have a real CRT for reference, i see many screens with blurry image and sharp bold scanlines. In reality image is sharp with subtle scanlines on RGB signals.

2 Likes