New CRT shader from Guest + CRT Guest Advanced updates

I’m putting it through the 240p torture tests right now and it outperforms the pre-chroma scaling version in almost every way. I can raise the brightness by a lot while still keeping everything sharp, and I can achieve better dynamic range. It’s really damn impressive.

4 Likes

Don’t forget that anti ringing setting at max values too, that looks to have also been improved by a lot since it was first introduced as well. I predict all shader tweakers will be releasing a sexy ntsc preset soon.

Also since you’ve been gone guest introduced another game changing setting called “clip saturated color beams”, be sure to play around with that, it’ll have all your “reds” looking just right.

3 Likes

It’s great to log in after a long hiatus and see all the amazing progress that’s been made, and I’m also glad to see our dedicated shader pack authors still at work. Keeping the dream alive.

I’ll check out the clip saturated beams setting, sounds cool.

4 Likes

Good to see you back as well man. Yeah guest.r and us guys are still keeping it going, even our guy Retro Crisis has blown up now and pretty much become the “go to” guy for RetroArch shader reviews on YouTube. You got a lot to catch up on so we’ll be looking forward to see what you cook up in the lab.

4 Likes

Yes, I’m working on doing an update on this now should be out in the next week

10 Likes

I have it in my local fork (https://github.com/hunterk/slang-shaders) but haven’t pushed it up to the main repo yet.

2 Likes

I tested the shader a bit, and it’s great some challenges have been addressed. 4k aperture curved mask looks really nice.

2 Likes

I have made performance comparisons with a 7/2022 release version vs. the latest. I guess these are good results. :grin:

Test image 1 (small, default preset):

  • Standard: old 1047 fps - new 1095 fps
  • NTSC: old 1210 fps - new 1267 fps
  • Fast: old 1760 fps - new 1870 fps
  • Fastest: old 2200 fps - new 2580 fps (both versions not in performance mode)

There are new features which might reduce performance if used, but I don’t see it as a bad thing. :smiley:

Test image 2 (retro-sized, default preset):

  • Standard: old 827 fps - new 871 fps
11 Likes

New Release Version (2023-11-22-r1):

Notable changes:

  • Deblur option added to the NTSC version.
  • Custom Fast sharpen parameter name changes (to label they belong to the Fast sharpen shader).
  • NTSC Blend Mode option removed (alternate mode was derelict by all means).

Download link:

https://mega.nz/file/08JCFRyY#2SLYlAfeGY4CvBntutQKiY3_VdRbeb07hVo-7TVtQLU

11 Likes

So this is the update right here that I need for my testing, damn I’m not home to try it out right now. Soon as I get home I’m getting straight to it and will post my results asap lol. Thank you for this as always.

2 Likes

Some visuals on the new feature. I wanted it to be usable out-of-the-box, without much tweaking. It’s compatible with other features, so no worries. It can do some neat stuff with fonts, while still resolving dithering (which adaptive sharpening cannot).

Examples:

Standard ntsc (s-video):

Deblur on:

Deblur on:

10 Likes

Those deblur shots look amazing though! This looks like a great excuse to update all of my NTSC Presets and switch it on!

It’s giving off a sort of reverse bilinear filtering vibe!

Great work in besting the best as if you hadn’t done so already time and time again.

@Nesguy, @sonkun et al are probably gonna have a field day with this!

4 Likes

I hope it can contribute to your’s, @Nesguy’s, @sonkun’s and other tweakers presets in a constructive way, like you mentioned it.

6 Likes

I’m literally on my way now RUSHING to get into the lab lol

4 Likes

It looks great! Can’t see any ringing on sharpening process, which is impressive!

4 Likes

New Release Version (2023-11-23-r1):

Notable changes:

  • Deblur option added to the NTSC version.
  • Custom Fast sharpen parameter name changes (to label they belong to the Fast sharpen shader).
  • NTSC Blend Mode option removed (alternate mode was derelict by all means).
  • Edit: how sharpen contrast affected deblur is now fixed.
  • Edit: possible color artifacts with deblur are now removed for better color fidelity.

Download link:

https://mega.nz/file/o8JjCCrB#Krakl3i1zshEPcU4EY7rwlJS8hykE2Om2gcg16e5nEs

18 Likes

Lol didn’t think it would be ready right after I made my post a minute ago, nice. I’ll have to test this later though have to head out smh… I’ll be back with results later, thanks for the update.

Edit: I gave it a quick test before I left (I couldn’t resist) and it solved every issue I mentioned in my post, it even eradicated the small amount of ringing I was still noticing. @guest.r this update might be the one. Will do some further testing later.

2 Likes

WOW. Christmas came early!

shaders = "18"
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/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_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_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_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_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_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_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_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_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_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_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_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 = "800"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "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 = "800"
scale_type_y13 = "absolute"
scale_y13 = "600"
shader14 = "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 = "800"
scale_type_y14 = "absolute"
scale_y14 = "600"
shader15 = "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 = "800"
scale_type_y15 = "absolute"
scale_y15 = "600"
shader16 = "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_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.000000"
PG = "0.000000"
PB = "0.000000"
AS = "0.000000"
sat = "0.000000"
cust_fringing = "0.000000"
cust_artifacting = "0.000000"
ntsc_fields = "1.000000"
ntsc_cscale = "4.000000"
ntsc_ring = "1.000000"
ntsc_shape = "1.000000"
CSHARPEN = "5.000000"
CCONTR = "0.100000"
CDETAILS = "0.000000"
DEBLUR = "3.000000"
lsmooth = "0.500000"
GAMMA_INPUT = "2.400000"
gamma_out = "2.200000"
HSHARPNESS = "1.000000"
SIGMA_HOR = "0.900000"
S_SHARP = "0.000000"
HSHARP = "2.000000"
MAXS = "0.300000"
HARNG = "0.000000"
m_glow = "1.000000"
glow = "0.010000"
brightboost = "4.000000"
brightboost1 = "3.000000"
gsl = "2.000000"
scanline1 = "20.000000"
scanline2 = "30.000000"
beam_min = "1.000000"
scans = "2.000000"
ssharp = "0.300000"
maskstr = "0.500000"
mcut = "0.500000"
deconrg = "-0.250000"
deconrry = "-0.250000"
post_br = "1.150000"
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"
4 Likes

That looks stupendous! :exploding_head:

2 Likes

CRT-Guest-Advanced-NTSC is the gift that keeps on giving!

Mind if I repost these pics on the r/crtgaming subreddit to see whether they’ll be accepted or incite the pitchforks and flames?

Also, what model or class of CRT TV/Monitor would be the closest analog of this preset?

Last request is to be able to see a decent photo or two or some video of the presets in action live, as you would see it.

That custom resolution trick you do at 1080p using 5x 224 scale is something that should be standard. I think more users need to know about things like that.

Part of the reason why I tend to avoid the higher TVL masks is because once the Mask Size/Pattern gets finer, sharpness decreases all else being equal.

These new tweaks give me a lot to look forward to as I already have some higher TVL presets which I call “Fine” and “Le’Sarsh” which should definitely see some improvement with these advancements in sharpness.

Thanks again @guest.r!

4 Likes