Please show off what crt shaders can do!

Nope not yet :), it’s not forgotten, just on the very long TODO list :wink:

It might be tricky to figure out because again Royale works a bit differently than most shaders and does things in a bunch of different passes, then does the curvature at the end.

This is one of the reasons why it can be a bit slower than some other shaders as well as it has a number of passes at the final viewport res.

Basically any issue that I need to fix with Royale takes me maybe 4X as long figure out how to fix as with any other CRT shader because of the complexity of all the multiple passes.

3 Likes

What shader is that? Is it available through Retroarch?

It’s a collection of shaders for ReShade. I’m still tweaking some things and will post a link to it here in a few days. Some more screenshots :

1 Like

Made some changes to my VHS shader. (Also didn’t realise it was too bright in some games) :

An alternate clean version I’m currently working on :

5 Likes

Great! I’m looking forward to it.

An update to crt-super-xbr. It now uses crt-hyllian-multipass and became much faster. Other than that, there’s a glow version (first release). I’ve managed to fix some weird artifacts from old versions, it’s now much lighter (it uses linear gamma since first pass now).

crt-super-xbr and glow + crt-hyllian-multipass (slang)

Some screens from crt-super-xbr-glow:

9 Likes

Hi Hyllian,Thanks for the efforts. Link isn’t working for me , would you please upload on another site?

Sure! --> alternative link

Someone that goes by ‘WolfWings’ submitted a nice new mask in a comment on my blog:

 {green, magenta, green, magenta},
 {black, blue, green, red},
 {green, magenta, green, magenta},
 {green, red, black, blue}

it ends up with slotmask triads that are taller than they are wide, which threw me at first, until I realized that it makes a perfect simulation of TATE mode :slight_smile:

11 Likes

Oooh, this one looks really cool! @guest.r any interest in trying this one out? :wink:

3 Likes

Small fix to crt-super-xbr that was causing some tiny artifacts when scaling at nPOT scale factors:

crt-super-xbr - 21-01-22 (slang)

7 Likes

Yeah I loaded this up on my 4K monitor and it is pretty convincing. :grinning:

It might end up needing a bit of boost of the brightness because of the black pixel.

1 Like

It would be really nice if Hyllian’s updated shaders could be uploaded to the official shaders repo !

they have been, about at week ago.

3 Likes

Looks like now I know why I shouldn’t forget to enable the preset param ‘srgb_framebuffer’ when making precise computations and saving it to framebuffer to be used among passes. (LOL).

This fix will preserve some subtle color transitions from becoming harsh transitions.

Thanks to @Tatsuya79 I found it was necessary to use that param in crt-super-xbr. So, here’s a new release with that fix:

crt-super-xbr (slang) (21-01-22)

Screenshots of crt-super-xbr-glow:

5 Likes

Do you know exactly what using the srgb_framebuffer does? It seems like the gamma function used to get srgb to linear is not a straight gamma application.

I know that using it, the colors don’t loose precision. And the results of using gamma in and gamma out in different passes now are identical to using both in only one pass.

1 Like

It is kinda hard to show how a preset look on a certain tv, but I habe tried with this image. Still not correct, but close.

1 Like

Been a while since I posted, thought I’d give the new guest shader a spin.

And here’s a few shots with just the slot mask:

shaders = "11"
shader0 = "shaders_slang/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/reshade/shaders/FilmGrain.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/misc/grade.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/bloom_horizontal.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = ""
float_framebuffer7 = "false"
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/crt-gdv-new/bloom_vertical.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = "BloomPass"
float_framebuffer8 = "false"
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-gdv-new/crt-guest-dr-venom2.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"
shader10 = "shaders_slang/crt/shaders/guest/crt-gdv-new/deconvergence.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = ""
float_framebuffer10 = "false"
srgb_framebuffer10 = "false"
scale_type_x10 = "viewport"
scale_x10 = "1.000000"
scale_type_y10 = "viewport"
scale_y10 = "1.000000"
Intensity = "0.250000"
g_vignette = "0.000000"
wp_temperature = "8004.000000"
g_sat = "0.400000"
GAMMA_INPUT = "3.499999"
interm = "5.000000"
bloom = "0.900000"
halation = "0.075000"
gamma_c = "1.500000"
brightboost = "2.000000"
brightboost1 = "3.000000"
scanline1 = "15.000000"
scanline2 = "5.000000"
beam_min = "2.499999"
beam_size = "0.700000"
s_sharp = "1.000000"
BLOOM = "1.000000"
csize = "0.010000"
warpX = "0.030000"
warpY = "0.040000"
shadowMask = "7.000000"
maskstr = "1.000000"
mask_gamma = "3.499999"
gamma_out = "3.499999"
deconr = "-1.000000"
decons = "1.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"

Slot Mask settings

shaders = "11"
shader0 = "shaders_slang/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/reshade/shaders/FilmGrain.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/misc/grade.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/bloom_horizontal.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = ""
float_framebuffer7 = "false"
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/crt-gdv-new/bloom_vertical.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = "BloomPass"
float_framebuffer8 = "false"
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-gdv-new/crt-guest-dr-venom2.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"
shader10 = "shaders_slang/crt/shaders/guest/crt-gdv-new/deconvergence.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = ""
float_framebuffer10 = "false"
srgb_framebuffer10 = "false"
scale_type_x10 = "viewport"
scale_x10 = "1.000000"
scale_type_y10 = "viewport"
scale_y10 = "1.000000"
Intensity = "0.250000"
g_vignette = "0.000000"
wp_temperature = "8004.000000"
g_sat = "0.400000"
GAMMA_INPUT = "3.499999"
interm = "5.000000"
bloom = "0.900000"
halation = "0.075000"
gamma_c = "1.500000"
brightboost = "2.000000"
brightboost1 = "3.000000"
scanline1 = "15.000000"
scanline2 = "5.000000"
beam_min = "2.499999"
beam_size = "0.700000"
s_sharp = "1.000000"
BLOOM = "1.000000"
csize = "0.010000"
warpX = "0.030000"
warpY = "0.040000"
shadowMask = "-1.000000"
maskstr = "1.000000"
slotmask = "1.000000"
mask_gamma = "3.499999"
gamma_out = "3.499999"
deconr = "-1.000000"
decons = "1.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"
4 Likes

Finally posting here a link to my ReShade VHS setup. It contains both the Blurry/LowRes and the Clean version in 16:9 and 4:3 aspect ratios (labeled as 1920 and 1440 respectively).

Some screenshots (LowRes version) :

Clean version :

You’ll have to use Res-o-matic to get 4:3 in emulators like RetroArch or Dolphin on widescreen displays!

Without Res-o-matic :

With Res-o-matic :

This was made on a 1920x1080 monitor. So it may not work as expected on other resolutions! DM me if you need help with this (or anything else related to this shader).

7 Likes