New CRT shader from Guest + CRT Guest Advanced updates

You’re absolutely correct! My bad. I’ve edited my post.

You must have some stuttering or screen tearing, since synchronization with a 60hz display is impossible at 57fps. But if it’s so small that you don’t notice it, then it’s all good!

1 Like

Tearing was there before changing video_hard_sync_frames and while using adaptive vsync, now there is no tearing at all and no stuttering that I can percive… I’m kinda “sensitive” to tearing (cannot stand it) and now is smooth to me…

1 Like

Note that GPU hard sync has no effect on input lag when using a high refresh rate VRR display. So when in VRR more in higher than 60Hz, you can turn off hard sync for better performance with no negative impact on latency.

Hard sync eliminates swap buffers in the vsync queue when not being frame-limited below the vsync rate. When you run higher than 60Hz, which is what you do anyway when using VRR, then RA limits the frame rate instead of relying on vsync, so hard sync isn’t needed and only hurts performance, at least in my tests using a native g-sync display with 144Hz and 165Hz.

2 Likes

@guest.r

Very nice updates! NTSC is looking better than it ever has, IMO.

Here’s an example with “analogue overshoot” added.

4 Likes

I would imagine that this preset using Mask 12 at 4K might be even crisper and more my kinda flavour!

1 Like

Congrats @Cyber, your edition Blargg’s video filters are now a part of the official collection. I recommend the ‘HD’ version of ‘GDV’ for good results, at least with genesis composite and svideo versions.

8 Likes

Thank you very much @guest.r!

I’ll give it a try sometime! I wonder if those can be integrated with HSM Mega Bezel Reflection Shader as well because I don’t remember seeing them there.

So far I’ve been using the CRT-Guest-Advanced in HSM Mega Bezel Reflection Shader and using Max Horizontal Sharpness and Subtractive Sharpness, plus some Fast Sharpen to keep things from looking too soft in the end.

2 Likes

This looks amazing! Care to share a simple preset?

2 Likes

here you go:

shaders = "18"
shader0 = "shaders_slang/misc/grade.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/NTSC analog overshoot.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 = "640"
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 = "640"
scale_type_y13 = "absolute"
scale_y13 = "480"
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 = "640"
scale_type_y14 = "absolute"
scale_y14 = "480"
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 = "640"
scale_type_y15 = "absolute"
scale_y15 = "480"
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"
g_gamma_in = "2.250000"
g_crtgamut = "0.000000"
g_vignette = "0.000000"
pre_bb = "0.950000"
quality = "0.000000"
ntsc_bright = "0.950000"
hermite_tension = "0.010000"
hermite_bias = "0.500001"
decode_chroma_luma_separately = "0.000000"
GAMMA_INPUT = "2.399999"
SIGMA_HOR = "1.000000"
S_SHARP = "1.000000"
HSHARP = "0.000000"
HARNG = "0.000000"
spike = "0.000000"
glow = "0.000000"
gamma_c = "1.200000"
brightboost = "2.000000"
brightboost1 = "1.999999"
beam_min = "1.400000"
beam_max = "1.100000"
beam_size = "0.000000"
scans = "1.000001"
maskstr = "1.000000"
mclip = "0.000000"
gamma_out = "2.199999"
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

Is this in one of your threads or GitHub Repo?

On another note, I just got an idea. I see you’ve been tweaking and fine tuning your @guest.r presets over the past few months.

Have you tried using your sharp Non-CRT-Guest-Advanced-NTSC presets with Blargg NTSC S-Video or RGB filters?

1 Like

hello boss, where can I get this NTSC analog overshoot shader ? doesn’t seem to come with the last crt guest build. Thanks for sharing as always your awesome work.

Hello no news about this shader ?

1 Like

What kind of news are you expecting?

3 Likes

i like to follow the development and improving of this shader because for me it’s the best… no more ^^

1 Like

Development on this new shader is now pretty much complete. It does all the things guest wanted it to do and all known bugs have been fixed.

3 Likes

Sometimes no news is good news!

3 Likes

What mask and mask size settings would give me RGB/BGR triads on a 1440p display?

For example I know Mask 6, size 1 is ideal for 1080p. Mask 12, size 1 for 4K.

What about 1440p?

1 Like

The only masks that don’t result in clean triads of some kind are masks 1, 3, 4, 7, 8, and 11. Masks 2 and 6 are identical in layout, and so are masks 0 and 5 for that matter.

What TVL count are you shooting for? For instance, Mask 6 size 1 at 1080p results in 360 TVL (preferably using the subpixel arrangement opposite that of the panel’s to have cleanly spaced subpixels i.e. using BGR on an RGB panel). This is more or less how it boils down:

1080p
Mask 0 = 540 TVL
Mask 6 = 360 TVL
Mask 10 = 270 TVL
Mask 12 = 154 TVL (waaaaay too low to be usable lol)

1440p
Mask 0 = 720 TVL
Mask 6 = 480 TVL
Mask 10 = 360 TVL
Mask 12 = 205 TVL (still too low)

4K
Mask 0 = 1080 TVL
Mask 6 = 720 TVL
Mask 10 = 540 TVL
Mask 12 = 308 TVL

Since you brought up Mask 6 being ideal at 1080p, and Mask 10 has an identical TVL count to that at 1440p, I’d say you want Mask 10, size 1.

1 Like

Thanks @GPDP1! I’m looking for around 300TVL to 360TVL. Your answer is exactly what I’m looking for. I can use this to start creating some 1440p Optimized versions of my recent presets without having to resort to using a 1440p screen.

Thanks again @GPDP1. This is exactly which mask and size I’ve been using for my existing 1440p presets. I wasn’t able to see proper RGB triads when I was testing them a long time ago but then I was actually scaling the 1440p resolution to fill my 4K screen instead of using 1 to 1 with no scaling when making my initial 1440p Optimized presets.

You live and you learn so this is what I would use to convert my Trinitron presets.

Now for my Slot_Mask presets at 4K, I use 7 wide, 2, 3 or 4 tall with Mask 12 at size 1 or 3 wide, 1 or 2 tall with Mask 6 at size 2.

I get RGB/BGR triads with those at 4K. I wonder what combination I would have to use to get similar results at 1440p or at least something that gets me the RGB/BGR triads without being too chunky at 1440p.

For a slot mask preset, you’ll probably want 4 wide, 2 tall for Mask 10 at 1440p.

1 Like