New CRT shader from Guest + CRT Guest Advanced updates

Looks like a very nice addition for 4k setups indeed.

And it’s an even sized mask, so it can be staggered nicely and even used with 1080p:

3 Likes

Looks good ! mask shift -1.0 works too on my side,how does it looks for you ?

1 Like

Hey this game looks interesting, which game is it?

2 Likes

This is Xexyz on Nes,good game.

3 Likes

Looks like there’s a brightness advantage with mask 13 stagger 3 compared to mask 6 stagger 1. (Both used for a VGA look in DOS games.)

(1440p)

Mask 6:

Mask 13:

2 Likes

The lazy preset post returns. Screenshots come later, elsewhere.

shaders = "18"
shader0 = "../shaders/shaders_slang/crt/shaders/guest/advanced/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/shaders_slang/crt/shaders/guest/advanced/stock.slang"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "StockPass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "../shaders/shaders_slang/crt/shaders/guest/advanced/afterglow0.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "AfterglowPass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "../shaders/shaders_slang/crt/shaders/guest/advanced/pre-shaders-afterglow.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "PrePass0"
float_framebuffer3 = "false"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "../shaders/shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass1.slang"
filter_linear4 = "false"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = "NPass1"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "4.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "../shaders/shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass2.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = ""
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "../shaders/shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass3.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "false"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "../shaders/shaders_slang/crt/shaders/guest/advanced/custom-fast-sharpen.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "NtscPass"
float_framebuffer7 = "false"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "../shaders/shaders_slang/crt/shaders/guest/advanced/stock.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "true"
alias8 = "PrePass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "../shaders/shaders_slang/crt/shaders/guest/advanced/avg-lum-ntsc.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "true"
alias9 = "AvgLumPass"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "1.000000"
shader10 = "../shaders/shaders_slang/crt/shaders/guest/advanced/linearize-ntsc.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = "LinearizePass"
float_framebuffer10 = "true"
srgb_framebuffer10 = "false"
scale_type_x10 = "source"
scale_x10 = "1.000000"
scale_type_y10 = "source"
scale_y10 = "1.000000"
shader11 = "../shaders/shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced-ntsc-pass1.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = "Pass1"
float_framebuffer11 = "true"
srgb_framebuffer11 = "false"
scale_type_x11 = "viewport"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "../shaders/shaders_slang/crt/shaders/guest/advanced/gaussian_horizontal.slang"
filter_linear12 = "true"
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "false"
alias12 = ""
float_framebuffer12 = "true"
srgb_framebuffer12 = "false"
scale_type_x12 = "absolute"
scale_x12 = "640"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "../shaders/shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "false"
alias13 = "GlowPass"
float_framebuffer13 = "true"
srgb_framebuffer13 = "false"
scale_type_x13 = "absolute"
scale_x13 = "640"
scale_type_y13 = "absolute"
scale_y13 = "480"
shader14 = "../shaders/shaders_slang/crt/shaders/guest/advanced/bloom_horizontal.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
alias14 = ""
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "absolute"
scale_x14 = "640"
scale_type_y14 = "absolute"
scale_y14 = "480"
shader15 = "../shaders/shaders_slang/crt/shaders/guest/advanced/bloom_vertical.slang"
filter_linear15 = "true"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "BloomPass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "absolute"
scale_x15 = "640"
scale_type_y15 = "absolute"
scale_y15 = "480"
shader16 = "../shaders/shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced-ntsc-pass2.slang"
filter_linear16 = "true"
wrap_mode16 = "clamp_to_border"
mipmap_input16 = "false"
alias16 = ""
float_framebuffer16 = "true"
srgb_framebuffer16 = "false"
scale_type_x16 = "viewport"
scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
shader17 = "../shaders/shaders_slang/crt/shaders/guest/advanced/deconvergence-ntsc.slang"
filter_linear17 = "true"
wrap_mode17 = "clamp_to_border"
mipmap_input17 = "false"
alias17 = ""
float_framebuffer17 = "false"
srgb_framebuffer17 = "false"
scale_type_x17 = "viewport"
scale_x17 = "1.000000"
scale_type_y17 = "viewport"
scale_y17 = "1.000000"
PR = "0.460000"
PG = "0.460000"
PB = "0.460000"
AS = "0.100000"
sat = "1.000000"
quality = "-1.000000"
ntsc_ring = "1.000000"
lsmooth = "0.600000"
interm = "0.000000"
iscan = "0.000000"
HSHARPNESS = "1.000000"
SIGMA_HOR = "0.550000"
S_SHARP = "1.100000"
HSHARP = "2.000000"
spike = "0.000000"
SIZEH = "50.000000"
SIGMA_H = "3.000000"
SIZEV = "50.000000"
SIGMA_V = "2.999999"
SIZEHB = "50.000000"
SIGMA_HB = "0.350000"
SIZEVB = "50.000000"
SIGMA_VB = "0.350000"
glow = "0.020000"
mask_bloom = "0.300000"
bloom_dist = "0.500000"
halation = "0.200000"
brightboost = "0.900000"
gsl = "2.000000"
scanline1 = "4.500000"
scanline2 = "10.000000"
beam_min = "0.800000"
beam_max = "1.499999"
beam_size = "0.000000"
scans = "0.150000"
scan_falloff = "2.000000"
shadowMask = "13.000000"
maskstr = "1.000000"
mcut = "1.000000"
maskboost = "1.649999"
mshift = "5.000000"
slotwidth = "6.000000"
gamma_out = "2.000000"
addnoised = "0.140000"
noisetype = "1.000000"
post_br = "1.300000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
SamplerLUT1 = "../shaders/shaders_slang/crt/shaders/guest/advanced/lut/trinitron-lut.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "../shaders/shaders_slang/crt/shaders/guest/advanced/lut/inv-trinitron-lut.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "../shaders/shaders_slang/crt/shaders/guest/advanced/lut/nec-lut.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
SamplerLUT4 = "../shaders/shaders_slang/crt/shaders/guest/advanced/lut/ntsc-lut.png"
SamplerLUT4_linear = "true"
SamplerLUT4_wrap_mode = "clamp_to_border"
SamplerLUT4_mipmap = "false"

For a moment I wasn’t sure if this was a miracle mask or if my brightness calibration skills had gone through the roof. The answer was both. Mask 13 is definitely brighter than the other masks. And I don’t see any brightness or tone differences between this config and raw, at max mask settings no less.

EDIT: Subtractive Sharpening reduced from 2.00 to 1.10. This will be in the screenshots later.

2 Likes

Mask shift / stagger is definitelly an interesting feature. This reminds me to add some more options… It’s nice for many users because you can nicely use wide masks with lower resolution displays.

The general brightness loss with mask 13 is quite moderate. Mask 10 is the darkest atm.

1 Like

I really like this feature,you can have completely differents looks with some minor changes in settings beetween 2 presets.

Edit:

3 Likes

New Release Version (2022-10-17-r1):

Notable changes:

  • new mask shift/stagger options, old presets are “safe”
  • values with .5 decimal value have 2-lines of vertical shift/stagger effect

Download link:

https://mega.nz/file/NggFVBDI#E8QGTVpOieQ-KowYZvL73VJZMdL1TjYYdhI2vZ5OemU

10 Likes

@guest.r are you also on the libretro discord because more people need to know of your awesome shader also i wish there was a more easy way to see if your shader gets a update

2 Likes

Thanks for the nice invitation to the discord. I’m a bit old fashioned regarding internet activities, a true old school forum hobo. :grin: Honestly i’m hoping more folks are joining the libretro forums since it’s a fun and inspiring place. Maybe i’ll take a peek at the discord community though, doesn’t hurt to try something new.

6 Likes

here is the link thanks to the libretro discord i found some great shaders like your all the projects based on mega bezel & sonkun shader https://discord.gg/6tbQpwH66p

3 Likes

Thanks for the invite, i’m taking a look around already. :smiley:

1 Like

I wanted to push to the limits some settings of your shader (saturation ,bloom,sharpness) while trying to keep gamma correct,glow and some sort of accuracy for brightness (center of scanline). Here are the results:

SIZEHB = "1.000000"
SIGMA_HB = "0.250000"
SIZEVB = "1.000000"
SIGMA_VB = "0.250000"
bloom = "0.950000"
gamma_c = "1.125000"
scans = "1.000000"
scan_falloff = "2.000000"
spike = "0.000000"
h_sharp = "15.000000"
s_sharp = "0.000000"
ei_limit = "0.000000"
sth = "0.000000"
shadowMask = "11.000000"
maskstr = "1.000000"
mcut = "1.000000"
mask_gamma = "5.000000"
mclip = "0.000000"

quality = "-1.000000"
ntsc_fields = "1.000000"
ntsc_phase = "2.000000"
GAMMA_INPUT = "2.400000"
spike = "0.000000"
SIZEHB = "1.000000"
SIGMA_HB = "0.250000"
SIZEVB = "1.000000"
SIGMA_VB = "0.250000"
bloom = "0.950000"
gamma_c = "1.125000"
scans = "1.000000"
scan_falloff = "2.000000"
shadowMask = "11.000000"
maskstr = "1.000000"
mcut = "1.000000"
mask_gamma = "5.000000"
mclip = "0.000000"
gamma_out = "2.400000"
5 Likes

I’m also testing some of the new features recently implemented. xBR is a nice pre-shader indeed. :smiley:

8 Likes

Can you share your preset ? I like the smoothness. Also you might have something for vector games with all advancements from your shader. Afterglow + xBR might be a good start.

2 Likes

Here is the preset. With arcade games i like to add some negative black level though, saturation and contrast get way better.

BP = "-25.000000"
prescalex = "3.000000"
mask_bloom = "0.650000"
halation = "-0.325000"
gamma_c = "1.200000"
h_sharp = "2.500002"
shadowMask = "10.000000"
maskstr = "1.000000"
maskboost = "1.500000"
mshift = "2.500000"

First or second pass should contain a xbr scaler with 3x scale, just a reminder.

2 Likes

I started to make some notes about shaders for me, e.g. the masks of the Guest shaders, for shifts I’ve got the following:

0,5,2,6: Shift 1 for shadow mask

8: Shift 1 + Slot = LCD grid effect

10: Shift 2 for slot mask

13: Shift 3 for shadow mask

Anything to amend/add here?

2 Likes

Nice findings there. Maybe i’ll like to add that even width masks like half-of-their-width shift and that mask size of 2.0 makes all masks with even width, ofc. this is more viable for 4k.

With current release versions (not yet in repository) there is also an option to make double-lined shifts with setting the decimal parameter value to .5.

1 Like

Please, tell me whats game in the shot?

2 Likes