Please show off what crt shaders can do!

Is deconvergence just an artistic thing or have you been able to use it to objectively improve anything? I had an idea that it might be used to increase beam width variation even further but I’ve been too lazy to try it.

It’s probably more of an artistic choice, though it does cause stuff to pop out and some colors get more glow-ish, is the best word I can use i guess.

1 Like

I think if you can add a 1 px deconvergence to one side of a scanline (either the top or the bottom), you can get more dynamic scanlines than you otherwise could just by adjusting the scanline parameters. Idk, might be worth trying.

There is no objective improvement in terms of contrast or scan line quality. It’s all about the feelings. I tried putting glass at the end of the shader list and I like it much better. Here’s a 4k screenshot.

2 Likes

I probably did a poor job of explaining that.

Emulated scanlines, as they increase in intensity will bloom into the adjacent pixels. You start with a very thin line that is only 1 pixel wide, which then blooms into the row of pixels above it and below it as the intensity increases. Then the next most adjacent rows from the center will increase, etc. Like this:

1 = darker

3 = brighter

000000
000000
1111111
000000
000000

000000
1111111
222222
1111111
000000

1111111
222222
333333
222222
1111111

Now suppose that we can bloom in just one direction, up or down from the center of the beam, like this:

00000000
00000000
111111111
00000000
00000000

00000000
00000000
111111111
111111111
00000000

00000000
111111111
22222222
111111111
00000000

00000000
111111111
22222222
22222222
111111111

111111111
22222222
33333333
22222222
111111111

Hopefully this crappy illustration makes sense. By adding a one pixel deconvergence along the vertical axis (either up or down), it should be possible to increase the beam width variation beyond what you can achieve with just the scanline settings. This is just an untested idea, though.

A few days back I saw this post by @ImnoTapLumber and decided to try GTU’s first two passes with other scanline shaders. At first I didn’t like the results I was getting, but, then I enabled the “Composite Connection” option and now I really love it!

CRT-Geom :

CRT-Geom + GTU :

CRT-Geom :

CRT-Geom + GTU :

CRT-Geom :

CRT-Geom + GTU :

(All the pics are from ReShade. Oh, and I already realize that these results won’t be everyone’s cup of tea.)

2 Likes

Same as my post above. But, with 3D games.

Guest-Dr-Venom :

Guest-Dr-Venom + GTU :

Guest-Dr-Venom :

Guest-Dr-Venom + GTU :

Guest-Dr-Venom :

Guest-Dr-Venom + GTU :

Guest-Dr-Venom :

Guest-Dr-Venom + GTU :

(All the pics are from ReShade.)

3 Likes

I was doing this for awhile myself, when I was experimenting with composite passes.

1 Like

I really used to hate Composite shaders. Like it never made sense to me why anyone would want to add bad artifacts/effects to their games. You really have to see these shaders in motion to fully appreciate what they add to the look of old games, still images here just don’t do enough justice to them!

1 Like

There’s one or two composite shaders that have animated composite, which just adds more to that, but I can’t remember which one’s. (Also the composite shaders are a mixed bag of features and looks imho.)

1 Like

I’ve tried some other composite shaders from the NTSC folder (2 phase and 3 phase) that I didn’t like as much as GTU.

I’m just not a fan of the rainbow effect and the weird wiggly effect in most composite shaders. My favorite effects are the Blur and the Color Bleed, both of which are already in GTU’s first two passes.

Those two effects are so good that they make Gran Turismo 4’s replays look like real life racing footage on an old CRT!

Can someone here explain the three Signal Resolution settings in GTU to me? Do I have to change them (and how to calculate these new values?) for the system/console I’m trying to emulate or leave them to their default values at all times?

They’re essentially just variable blurs. The higher the res, the lower the blur strength.

1 Like

So, should I just leave them as is? Or should I atleast change Signal Y (is it width or height?) to the games resolution?

It all depends on how blurry you want it. If you want no blurring at all, make it very high. Y is from YIQ and stands for the luma component.

1 Like

Oh, so those settings are just for blur and nothing else? Cause when I googled what YIQ is before posting here, I learned that it was the color space used by NTSC TVs.

That’s why I asked here if should mess with them or not.

It’s the simulated resolution of the YIQ components. So, you can increase the res of the luma component while maintaining lower res for the IQ components to have, for example, blurry/muted colors with sharp light/dark.

1 Like

2 Likes

Yo @Nesguy, settings!

I think it was this. Still playing around with sharpness though. 4.00 - 5.00 seems about right. Not sure about scanline spike removal, maybe it should be off.

shaders = "8"
shader0 = "shaders_slang/misc/grade.slang"
filter_linear0 = "true"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = "WhitePointPass"
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/crt/shaders/guest/afterglow.slang"
filter_linear1 = "true"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "AfterglowPass"
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/avg-lum.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "true"
alias2 = "AvgLumPass"
float_framebuffer2 = "true"
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/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/blur_horiz.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = ""
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/blur_vert.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "GlowPass"
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/linearize_scanlines.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/crt-guest-dr-venom.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = ""
float_framebuffer7 = "false"
srgb_framebuffer7 = "false"
scale_type_x7 = "viewport"
scale_x7 = "1.000000"
scale_type_y7 = "viewport"
scale_y7 = "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_vibr;g_satr;g_satg;g_satb;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.500000"
g_signal_type = "0.000000"
g_gamma_type = "1.000000"
g_crtgamut = "2.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 = "8005.000000"
g_sat = "0.000000"
g_vibr = "0.000000"
g_satr = "0.000000"
g_satg = "0.000000"
g_satb = "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.100000"
lsmooth = "0.900000"
GAMMA_INPUT = "3.499996"
TAPSH = "1.000000"
GLOW_FALLOFF_H = "0.300000"
TAPSV = "1.000000"
GLOW_FALLOFF_V = "0.300000"
TATE = "0.000000"
IOS = "0.000000"
OS = "1.000000"
BLOOM = "0.000000"
brightboost = "1.000016"
brightboost1 = "3.000000"
gsl = "0.000000"
scanline1 = "1.000000"
scanline2 = "23.000000"
beam_min = "3.000000"
beam_max = "1.000000"
beam_size = "0.000000"
h_sharp = "4.500000"
s_sharp = "0.000000"
csize = "0.000000"
bsize = "600.000000"
warpX = "0.000000"
warpY = "0.000000"
glow = "0.000000"
shadowMask = "1.000000"
masksize = "1.000000"
vertmask = "0.000000"
slotmask = "0.000000"
slotwidth = "2.000000"
double_slot = "1.000000"
slotms = "1.000000"
mcut = "0.250000"
maskDark = "0.500000"
maskLight = "1.500000"
CGWG = "0.500000"
gamma_out = "3.500000"
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"

7 Likes