The Guest-Advanced, 100% mask strength thread

updated the 540 TVL preset.

shaders = "12"
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 = "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"
g_gamma_in = "2.272000"
g_crtgamut = "0.000000"
g_vignette = "0.000000"
bg = "0.005000"
pre_bb = "0.900000"
GAMMA_INPUT = "2.399998"
glow = "0.000000"
brightboost = "1.000000"
brightboost1 = "1.000000"
gsl = "2.000000"
scanline1 = "10.000000"
scanline2 = "12.000000"
beam_min = "1.150000"
beam_max = "1.150000"
beam_size = "1.000000"
vertmask = "0.500000"
scans = "2.000000"
scan_falloff = "2.000000"
h_sharp = "5.199976"
maskstr = "1.000000"
mcut = "1.000000"
maskDark = "0.000000"
maskLight = "1.000000"
mask_gamma = "2.399998"
mclip = "0.000000"
gamma_out = "2.399998"
post_br = "2.000000"
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"'

reference (PVM):

7 Likes

That’s a very nice screenie + settings. (De)convergence is also quite visible on the reference image.

2 Likes

Really nice preset. It’s really dark with HSM, though. Wonder what that’s about.

3 Likes

That second image is another one that I think could fool quite a few CRT fetishists :slight_smile:

3 Likes

Oh that’s actually a PVM in the second shot :stuck_out_tongue:

Sorry, should have made that more clear.

4 Likes

lolol shows what I know.

5 Likes

Hey @Nesguy , do we have this preset on MegaBezel Shader Pack? I liked this shot. Please, can you post preset code?

3 Likes

Hi! All my presets can be found here. There may have been a couple small tweaks since that shot was taken, for the better hopefully.

4 Likes

@guest.r

I’m wondering if there’s any possibility for a shader geared exclusively to 100% strength masks? GDV works very well with the two pixel masks at 100% strength on an SDR monitor, it’s when you try to do the same with a three pixel mask that you have to resort to extreme measures, and it feels like an uphill battle. Have you considered this? Then again, I may just be running into the limitations of SDR… with a 3 pixel mask (at 100%) you need 3x the base brightness to achieve the same luminosity per pixel. :confused:

2 Likes

I have indeed considered some faux tricks, but doesn’t look to consistent. The main problem with masks is that consistency is of very great importance for an appealing look. Currently i doubt there are possible solutions available for a RGB or RGBX mask at full strength to look brighter as the display allows. My display can produce a medium level of brightness (400+ nits) in SDR mode and i still like mask mitigation techniques best, maybe only a staggered 2-size masks looks good enough to me at full strength.

2 Likes

Something about 100% mask that bothers me is how they look on bright pixels.

See this comparison:

Left: shader with 100% mask

Right: screenshot taken from a Trinitron

The 100% mask looks perfect on dark pixels. Compare the backgrounds.

But, on bright pixels, they are completely different. There be some way to fix this. I didn’t find any shaders which can overcome this.

4 Likes

I think that’s a side effect of the camera’s dynamic range rather than an actual behavior. That is, I believe it’s just bloom/flare-out in the photo.

5 Likes

Well, maybe the crt brightness is leaking over the mask, if that’s possible.

2 Likes

You could probably mimic the effect by modifying the mask strength by the inverse of the luminance, but this monkeys with the black level in a way that I don’t love:

OTOH, this also happens with luma-linked beam width, but you and guest have handled that admirably, so maybe this isn’t that big of a deal :slight_smile:

5 Likes

We need to make sure we’re comparing apples to apples, I think.

For the comparison to be useful, we need a photo of the aperture grille CRT with the individual phosphors in-focus (ie., able to see the RGB strips). Same thing with the shader, it should be a photo of the actual LCD screen (preferably a 4K one), with the emulated phosphors in-focus. Check out the Megatron shader thread for some excellent side-by-side comparisons.

4 Likes

Crt displays imo had different chromatics/lighting properties. A good example is that you need at least 2x more nits with a flat display combined with a full mask strengts shader to properly ‘emulate’ a 1x nits value crt tv display. The images above might be taken with about the same lighting strength.

3 Likes

are you saying you need (for example) 200 nits + full mask strength to equal a 100 nit CRT? That sounds right for the 2px masks, which result in a 50% reduction in brightness. For the 3px masks I think you need 3x nits, and for slotmask it’s even worse.

2 Likes

I started experimenting with -50 mask value with crt-guest-advanced and I am happy with the results. Try and see if this is something that interests you. While using HDR it looks super bright at 200 paper white (800 peak white)

2 Likes

I wrote/meant you need at least a ‘2x nits’ modern display, but you are quite right about the increasing necessarity for brightness.

2 Likes

I’m not sure about these nit comparisons as a CRT is a pulse display and a LCD is a sample and hold. Therefore one has a very intense pulse of nits then a steep fall off and the other is constantly spitting out a stream of photons at a relatively steady rate. They’re very different graphs.

Sure you can average out the pulse display but I’m not sure our brains interpret it like that. As in I think that intense pulse is being interpreted as many more nits in total than it actually is spread out over a longer period of time - with the peak lower.

Thats in the temporal dimension alone then take into account the spatial dimension differences.

From my limited testing with a HDR600 monitor it gets reasonably close in brightness to a 2730 PVM. Certainly not quite as bright but I think a modern QD-OLED or LCD will surpass it with 100% mask and a 4px mask. Whether the colorimeters agrees with that over the whole screen is a different matter.

What it won’t do is mimic the pulse though - which is really the next step and is started to being taken with backlight strobing as I’ve said (bored you with :joy:) elsewhere.

5 Likes