Please show off what crt shaders can do!

Truly amazing, thank you. I’ve set things up and will explain here for others as well.

  • Your slang file as BendBombBoom.slangp in \shaders\
  • Dogway’s glass shader, as glass.slang in \shaders\shaders_slang\misc
  • CRT Mask size should be masksize, I set it to 1
  • Composite sharp is Tuning_Sharp?
  • Composte artifacts is Tuning_Artifacts?
  • NTSC Scale is NTSCLerp?
  • Reflection toggle is g_refltog?

I think I got them all correct. I must say, this is the best CRT shader I’ve personally seen so far. Wow. The reflection effect adds a lot, though I don’t like the dark grey overlay it adds around the image. It is however, the perfect finishing touch I remember seeing on real CRT’s.

I like Nesguy’s preset too, it’s more like a more expensive CRT. A detail I like about BendBombBoom’s version is that darker colors form a smaller line compared to brighter ones. For example, the dark grey lines on the staircase. And the bright ones pop nicely.

Detail screenshots of Nesguy’s preset, BendBombBoom’s without and with reflection:

Clean and sharp, mask is clearly visible:

Nesguy

Dotty, different, more subtle mask, but with some slight glow artifacts, like on the top of the head?:

BendBombBoom (No Reflection)

Same as above, but with the reflection (Dogway’s glass shader?) effect, smoothing things out:

BendBombBoom (Reflection)

What is the second game in your screenshot?

5 Likes

@Nesguy @BendBombBoom Thank you both for your amazing presets.

1 Like

You can definitely make the image bloomier. Lower beam max (scanline bright) and raise beam min (scanline dark) as desired while making sure you’re not clipping anything. The current settings are about as hard as I can push my poor plasma TV before it starts getting all kinds of weird artifacts.

You can also raise bloom, but you lose visibility of the phosphors and they’re already washed out compared to how a real CRT looks.

You could try adding glow, but I personally don’t care for how it looks and the effect it has on colors.

1 Like

Nightmare in the Dark, a SNK game for the arcade.

Still tweaking bright boost, my plasma TV makes this hard to test due to the automatic brightness limiter.

1 Like

hi i tried to use this preset but RA says “failed to apply shader preset” i copied the preset from BendBombBoom above then i copied glass.slang to misc folder and changed masksize to 1 (im on 1080), am i missing something?

I’m still not completely happy with bright boost, but this is what I’m currently at.

2 Likes

Now I like this mask. In a couple days I’ll stop liking it.

3 Likes

I believe that statement 100% XD

1 Like

How does deconvergence in glass work? I tried altering the shift color x/y values but nothing happens.

Make sure reflection is on

1 Like

lol yep that did it

1 Like

First attempt at adding deconvergence. I kind of like it. Might be a bit much.

1 Like

Told you fam, deconvergence is noice.

What settings are you using for the deconvergence atm?

In the process of tweaking it currently, but as of right now it’s the following. Pretty sure these settings are scale/resolution-dependent. Using a custom AR of 1120x1494. One downside is that the moire is really bad when using curvature with these settings, I’ve noticed. Not a big deal to me since I don’t think curvature is essential, anyway.

shaders = "9"
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"
shader8 = "shaders_slang/misc/glass.slang"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = ""
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
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_csize;g_bsize;g_flicker;g_shaker;g_refltog;g_reflgrain;g_reflstr;g_fresnel;g_reflblur;gz;gx;gy;gzr;gzg;gzb;goxr;goyr;goxg;goyg;goxb;goyb;TO;PH;PER;ASAT;temperature;luma_preserve;wp_red;wp_green;wp_blue"
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 = "8004.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.499999"
TAPSH = "4.000000"
GLOW_FALLOFF_H = "0.300000"
TAPSV = "4.000000"
GLOW_FALLOFF_V = "0.300000"
TATE = "0.000000"
IOS = "0.000000"
OS = "1.000000"
BLOOM = "0.000000"
brightboost = "3.999998"
brightboost1 = "2.999998"
gsl = "2.000000"
scanline1 = "1.000000"
scanline2 = "23.000000"
beam_min = "2.500000"
beam_max = "1.000000"
beam_size = "0.000000"
h_sharp = "4.000000"
s_sharp = "0.000000"
csize = "0.000000"
bsize = "600.000000"
warpX = "0.000000"
warpY = "0.000000"
glow = "0.000000"
shadowMask = "2.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.000000"
gamma_out = "3.499999"
spike = "0.000000"
inter = "400.000000"
interm = "1.000000"
bloom = "0.000000"
scans = "1.000000"
g_csize = "0.000000"
g_bsize = "600.000000"
g_flicker = "0.000000"
g_shaker = "0.000000"
g_refltog = "1.000000"
g_reflgrain = "0.000000"
g_reflstr = "0.000000"
g_fresnel = "0.000000"
g_reflblur = "0.000000"
gz = "1.000000"
gx = "1.000000"
gy = "1.000000"
gzr = "1.000000"
gzg = "1.000000"
gzb = "1.000000"
goxr = "0.040000"
goyr = "-0.020000"
goxg = "0.000000"
goyg = "0.020000"
goxb = "-0.040000"
goyb = "-0.020000"
TO = "0.000000"
PH = "2.000000"
PER = "0.750000"
ASAT = "0.200000"
temperature = "6500.000000"
luma_preserve = "1.000000"
wp_red = "0.999999"
wp_green = "0.999999"
wp_blue = "0.999999"
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 better, changed shift-Y blue to -0.01

Should be, IMO, magenta bottom, green top, red left, blue right. Gives the image a more aged/analogue/vintage feel.

2 Likes

I’ll try something later with a similar deconvergence color setup later, might be tomorrow though, I’m not feeling well atm.

1 Like

You see what I was saying about it making stuff pop more and giving it some “glow” now right (deconvergence, I mean)?

1 Like

It’s hard to explain, I wouldn’t call it glow exactly. A CRT is an additive color system, meaning different colors of light combine to form the right color. Normally the phosphors are what do this, but we can’t get the emulated phosphors bright enough to accomplish this with shaders. Adding the deconvergence splits the colors somewhat while keeping the intensity/brightness, making the colors somewhat more additive. I think this only works at normal viewing distances where you can’t resolve all the detail (pixels) in the image; up close it’s pretty bad.

Shift-y blue isn’t necessary, after at all. Changed it to 0:

3 Likes

Yeah that’s why I said it in " " basically was air quoting lol

And said pop more before I said “glow”.

1 Like