New CRT shader from Guest + CRT Guest Advanced updates

@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

It’s New Zero Team (Arcade).

2 Likes

Hey, this game is really cool! :smiley:

It’s marked “not working” game, on Launchbox, so I never saw it.

I think to disable this function, to not lose pearls like this!

It looks great in @Cyber RGB Smooth PVM preset

2 Likes

Hey @guest.r, a question about NTSC phase.

Phase 2 NTSC (like on Genesis, Saturn) produces a significant desaturation and an overall quality loss of the image, even if it’s the correct option (using auto sets it on 2, which is used for 320px output); if you switch to phase 3 you have “true” colors, better definition, but a loss in dithering.

Is it something I can correct in some way, or is there a way to have the best of both worlds?

Phase 2 NTSC:

Phase 3 NTSC:

1 Like

Thanks @soqueroeu. Is this from a recent version of my preset pack or is it modified in some way? I find the scanlines look a bit uneven in this screenshot.

It could just be the jpeg compression hard at work though.

2 Likes

I don’t remember making any changes to the preset. If you notice any improvement, please let me know.

2 Likes

It could very well be the jpeg compression. If you want to further investigate, you can post a *.png and I’ll take a look.

1 Like

You can increase the NTSC Color saturation parameter for better saturation. NTSC Sharpness (negative) should provide better definition. There are a lot of parameters you can tweak, including brigthness etc.

1 Like

I have been toying around a bit with mame vertical presets:

Newest version is required for this setup, you can also copy the content of the provided dl. version into the slang/crt folder.

shaders = "12"
shader0 = "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_slang/xbr/shaders/xbr-lv3-standalone.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 = "3.000000"
scale_type_y1 = "source"
scale_y1 = "3.000000"
shader2 = "shaders_slang/crt/shaders/guest/advanced/afterglow0.slang"
filter_linear2 = "false"
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_slang/crt/shaders/guest/advanced/pre-shaders-afterglow.slang"
filter_linear3 = "false"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "true"
alias3 = "PrePass"
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/advanced/avg-lum.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "true"
alias4 = "AvgLumPass"
float_framebuffer4 = "false"
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/advanced/linearize.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "LinearizePass"
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/advanced/gaussian_horizontal.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "absolute"
scale_x6 = "800"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "GlowPass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "absolute"
scale_x7 = "800"
scale_type_y7 = "absolute"
scale_y7 = "600"
shader8 = "shaders_slang/crt/shaders/guest/advanced/bloom_horizontal.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = ""
float_framebuffer8 = "true"
srgb_framebuffer8 = "false"
scale_type_x8 = "absolute"
scale_x8 = "800"
scale_type_y8 = "absolute"
scale_y8 = "600"
shader9 = "shaders_slang/crt/shaders/guest/advanced/bloom_vertical.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = "BloomPass"
float_framebuffer9 = "true"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "1.000000"
shader10 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = ""
float_framebuffer10 = "true"
srgb_framebuffer10 = "false"
scale_type_x10 = "viewport"
scale_x10 = "1.000000"
scale_type_y10 = "viewport"
scale_y10 = "1.000000"
shader11 = "shaders_slang/crt/shaders/guest/advanced/deconvergence.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = ""
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "viewport"
scale_x11 = "1.000000"
scale_type_y11 = "viewport"
scale_y11 = "1.000000"
XBR_BLENDING = "0.000000"
BP = "-20.000000"
prescalex = "3.000000"
SIGMA_HB = "0.600000"
SIGMA_VB = "0.500000"
mask_bloom = "0.650000"
halation = "-0.300000"
gsl = "-1.000000"
scanline1 = "5.000000"
scanline2 = "7.000000"
h_sharp = "2.000003"
s_sharp = "1.000000"
ring = "1.500000"
TATE = "1.000000"
shadowMask = "10.000000"
maskstr = "1.000000"
maskboost = "1.599999"
mshift = "2.500000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/advanced/lut/trinitron-lut.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "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_slang/crt/shaders/guest/advanced/lut/nec-lut.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
SamplerLUT4 = "shaders_slang/crt/shaders/guest/advanced/lut/ntsc-lut.png"
SamplerLUT4_linear = "true"
SamplerLUT4_wrap_mode = "clamp_to_border"
SamplerLUT4_mipmap = "false"
8 Likes

Is there a method to disable scanlines without using interlace? Some shaders (easymode, lottes-fast) allow this without side effects (e.g. image getting blurrier).

1 Like