Please show off what crt shaders can do!

Where we can download It?

No need to download. It’s in the presets folder.

1 Like

Might look a bit dark on certain monitors/tv’s, Iam not sure. But such thick scanlines do darken the image. I play it on a old lcd tv, would I benefit from using a modern hdr tv instead?

1 Like

Is slang format, only AMD correct? I will cry alone here , bad lucky for me

No, slang works with any GPU that’s capable of OpenGL 3.x+ via glcore, vulkan, d3d10/11/12 or GX2.

2 Likes

I made my own BVM/PVM preset for GDV2 (75-100% brightness recommended) :

shaders = "8"
shader0 = "shaders_slang/crt/shaders/guest/crt-gdv-new/stock.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = "StockPass"
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/crt-gdv-new/afterglow0.slang"
filter_linear1 = "false"
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/crt-gdv-new/pre-shaders-afterglow.slang"
filter_linear2 = "false"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "PrePass"
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/crt-gdv-new/avg-lum.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "true"
alias3 = "AvgLumPass"
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/crt-gdv-new/linearize.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = "LinearizePass"
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/crt-gdv-new/gaussian_horizontal.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = ""
float_framebuffer5 = "false"
srgb_framebuffer5 = "false"
scale_type_x5 = "viewport"
scale_x5 = "0.500000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders_slang/crt/shaders/guest/crt-gdv-new/gaussian_vertical.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = "GlowPass"
float_framebuffer6 = "false"
srgb_framebuffer6 = "false"
scale_type_x6 = "viewport"
scale_x6 = "0.500000"
scale_type_y6 = "viewport"
scale_y6 = "0.500000"
shader7 = "shaders_slang/crt/shaders/guest/crt-gdv-new/crt-guest-dr-venom2.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 = "bogus_afterglow;PR;PG;PB;AS;sat;bogus_color;TNTC;LS;LUTLOW;LUTBR;CP;CS;WP;wp_saturation;lsmooth;GAMMA_INPUT;bogus_interlacing;inter;interm;inters;iscan;bogus_glow;SIZEH;SIGMA_H;SIZEV;SIGMA_V;bogus_brightness;glow;bloom;gamma_c;brightboost;brightboost1;bogus_scanline;gsl;scanline1;scanline2;beam_min;beam_max;beam_size;vertmask;scans;spike;bogus_filtering;h_sharp;s_sharp;smart_ei;ei_limit;sth;bogus_screen;TATE;IOS;OS;BLOOM;csize;bsize;warpX;warpY;bogus_masks;shadowMask;maskstr;masksize;maskDark;maskLight;mcut;mask_gamma;slotmask;slotwidth;double_slot;slotms;mclip;gamma_out"
bogus_afterglow = "0.000000"
PR = "0.140000"
PG = "0.140000"
PB = "0.140000"
AS = "0.070000"
sat = "0.100000"
bogus_color = "0.000000"
TNTC = "0.000000"
LS = "32.000000"
LUTLOW = "5.000000"
LUTBR = "1.000000"
CP = "0.000000"
CS = "0.000000"
WP = "0.000000"
wp_saturation = "1.000000"
lsmooth = "0.750000"
GAMMA_INPUT = "2.400000"
bogus_interlacing = "0.000000"
inter = "350.000000"
interm = "1.000000"
inters = "0.000000"
iscan = "0.200000"
bogus_glow = "0.000000"
SIZEH = "5.000000"
SIGMA_H = "1.250000"
SIZEV = "5.000000"
SIGMA_V = "1.250000"
bogus_brightness = "0.000000"
glow = "0.080000"
bloom = "0.000000"
gamma_c = "1.000000"
brightboost = "1.400000"
brightboost1 = "1.100000"
bogus_scanline = "0.000000"
gsl = "1.000000"
scanline1 = "20.000000"
scanline2 = "20.000000"
beam_min = "1.300000"
beam_max = "1.000000"
beam_size = "0.600000"
vertmask = "0.000000"
scans = "0.600000"
spike = "1.000000"
bogus_filtering = "0.000000"
h_sharp = "3.000000"
s_sharp = "1.000000"
smart_ei = "0.000000"
ei_limit = "2.000000"
sth = "0.200000"
bogus_screen = "0.000000"
TATE = "0.000000"
IOS = "0.000000"
OS = "1.000000"
BLOOM = "0.000000"
csize = "0.000000"
bsize = "600.000000"
warpX = "0.000000"
warpY = "0.000000"
bogus_masks = "0.000000"
shadowMask = "5.000000"
maskstr = "1.000000"
masksize = "1.000000"
maskDark = "0.500000"
maskLight = "1.500000"
mcut = "2.000000"
mask_gamma = "2.400000"
slotmask = "0.000000"
slotwidth = "2.000000"
double_slot = "1.000000"
slotms = "1.000000"
mclip = "0.500000"
gamma_out = "2.400000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
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"
3 Likes

Some more pvm like images :slight_smile:

That’s for sure. As I see, you’re using a 720p display, which means you can only scale at most by 3x. It’s not enough for crt shaders. A 1080p display is the minimum you can benefit from characteristics of crt shaders.

2 Likes

It is a 1080 tv. However I have to run Retroarch in 1024*768 because that is the only resolution where my tv dont tries to autoscale the image, making the scanlines uneven. I have a more modern projektor(1080p) with wich I can play in 1080, but I cant see much of a difference between that and the tv. I think I need 4k and hdr for bigger improvements.

Blazing Chrome (CRT-Guest-Dr-Venom-Kurozumi) :

4 Likes

That looks amazing. I have to admit I never have any luck with any of the reshade CRT shaders. They just never look right for me.

1 Like

Here is a CRT Configuration I made using CRT Hyllian Sinc, used with Grade in the first pass. I couldn’t find a mask with a one-pixel wide RGB aperture grill like in GDV so I resorted to using Mask 9, which even then on my 1440p monitor is a bit intense for my liking.

Here are the settings (Grade adjusted for NTSC-J).

shaders = "2"
shader0 = "shaders_slang/misc/grade.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = "StockPass"
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/crt-hyllian-sinc.slang"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
parameters = "g_gamma_in;g_gamma_out;g_signal_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;BEAM_PROFILE;BEAM_MIN_WIDTH;BEAM_MAX_WIDTH;SCANLINES_STRENGTH;COLOR_BOOST;HFILTER_SHARPNESS;PHOSPHOR_LAYOUT;MASK_INTENSITY;CRT_ANTI_RINGING;InputGamma;OutputGamma;VSCANLINES"
g_gamma_in = "2.222000"
g_gamma_out = "2.500000"
g_signal_type = "0.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 = "7504.000000"
g_sat = "0.150000"
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"
BEAM_PROFILE = "0.000000"
BEAM_MIN_WIDTH = "0.920000"
BEAM_MAX_WIDTH = "0.760000"
SCANLINES_STRENGTH = "0.800000"
COLOR_BOOST = "1.250000"
HFILTER_SHARPNESS = "1.000000"
PHOSPHOR_LAYOUT = "9.000000"
MASK_INTENSITY = "0.600000"
CRT_ANTI_RINGING = "1.000000"
InputGamma = "2.400000"
OutputGamma = "2.200000"
VSCANLINES = "0.000000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
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"
3 Likes

Thank you. And if you didn’t know I did a port of Guest-Dr-Venom to ReShade. You can get it here :

(Those screenshots in my last post are from the same ReShade port!)

2 Likes

Wow, the “Normal CRT style” shots look very similar to the way arcade game screenshots looked in 1980s game magazines like Computer & Video Games.

When you actually play a game with the Zombs Neuromancer shader, it reminds me of playing on a slightly shabby and neglected cabinet in a Midlands fish and chip shop circa 1990!

2 Likes

Some years ago i played an old cabinet of pacman, absolute rubbish screen with washed out colors etc and scanlines were very clear and quite big, monitor was some 26-28". Scanlines were not so obvious on old TVs with composite signal C64 etc.

Thanks for the work! How can i use these shaders in my nvidia Shield with Vulkan driver? I am downloading and unzipping to my shaders_slang folder but cant load it. Sorry for my poor english… Great work mate

Go to Retroarch configuration menu and enter drivers menu. If your device suports, choose vulkan as video driver.


BTW, here’s a small update to crt-hyllian (glsl and slang). I tweaked scanlines a bit and now crt-hyllian default is on par with sinc version.

crt-hyllian and variants (glsl and slang) (updated at 21-01-12)

Screenshots using crt-hyllian-glow preset:

The default configuration is recomended for 1080p displays.

If your display is 4k, change the mask from 4 to 9 (or 10) and increase mask_intensity to 0.70.

10 Likes

Hey this looks amazing. Thanks for your hard work :+1:

3 Likes

Hyllian, can you take a look at this PR I made to add your GLSL shaders to the repo? I moved a few things around and put all of your CRT shaders into a single directory and then put the NTSC and sgenpt presets into the presets dir.

I’m not sure if it was a result of merging things into the repo and getting mixed up with existing files or something, but I was getting a double-mask on your glow preset (1 from crt-hyllian and 1 from the resolve pass), so I changed the name of the mask intensity parameter in the resolve pass to GLOW_MASK_INTENSITY and then set the regular MASK_INTENSITY to 0.0 in the preset to get rid of it.

1 Like

Ok, I’ll look at it later.

1 Like