New CRT shader from Guest + CRT Guest Advanced updates

Chroma scaling on the 3-phase processing is more or less the same compared with the old version.

With 2-phase the implementation is quite different, but the results are very close.

I like to mention that reducing the number of TAPS also influences chroma scaling, it’s very straightforward with 2-phase. With 16 TAPS chroma spread is 2x smaller compared with default 32 TAPS, for example.

Reducing number of TAPS can have it’s benefits, for example notable speedups with certain situations/resolutions, a more clear image, especially 2-phase etc.

You can also use default values, it’s the same thing with old and new versions.

4 Likes

Preset for beetle saturn and blastem (mask 2,3,4 tested). I tried something with all the pragmas having the word gamma :orangutan:

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/hd/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/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/shaders_slang/crt/shaders/guest/hd/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/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/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"
AS = "0.000000"
cust_artifacting = "0.000000"
cust_fringing = "0.000000"
ntsc_fields = "1.000000"
ntsc_phase = "3.000000"
ntsc_taps = "6.000000"
ntsc_charp3 = "10.000000"
ntsc_cscale1 = "2.250000"
ntsc_ring = "1.000000"
ntsc_sharp = "10.000000"
ntsc_shape = "0.500000"
CCONTR = "0.000000"
GAMMA_INPUT = "2.800000"
gamma_out = "2.200000"
interm = "0.000000"
HSHARPNESS = "1.000000"
SIGMA_HOR = "0.400000"
S_SHARP = "0.000000"
HSHARP = "0.000000"
MAXS = "0.000000"
HARNG = "0.000000"
spike = "0.000000"
m_glow = "1.000000"
m_glow_cutoff = "0.300000"
m_glow_low = "5.100000"
m_glow_high = "4.800000"
m_glow_mask = "0.000000"
SIZEH = "4.000000"
SIGMA_H = "0.800000"
SIZEV = "4.000000"
SIGMA_V = "0.600000"
SIGMA_HB = "0.975000"
SIGMA_VB = "0.975000"
glow = "0.020000"
halation = "0.290000"
hmask1 = "0.000000"
gamma_c = "1.325000"
brightboost = "2.500000"
brightboost1 = "2.500000"
gsl = "-1.000000"
scanline1 = "70.000000"
scanline2 = "70.000000"
beam_min = "0.550000"
beam_max = "0.600000"
beam_size = "0.000000"
scans = "0.000000"
scangamma = "2.200000"
csize = "0.030000"
bsize1 = "0.160000"
sborder = "0.250000"
shadowMask = "2.000000"
maskstr = "1.000000"
mcut = "1.000000"
masksize = "3.000000"
mask_zoom = "-3.000000"
mzoom_sh = "1.000000"
mshift = "1.000000"
maskDark = "0.000000"
maskLight = "1.000000"
mask_gamma = "5.000000"
double_slot = "3.000000"
pr_scan = "0.000000"
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"
4 Likes

Is this full resolution?

dont know if this the right topic to ask but I think it worth someone port CRT Guest Advanced to Magpie similar to reshade case, there are some old PC games like Touhou Soccer 2 that need Magpie, I did ask them https://github.com/Blinue/Magpie/issues/860#issuecomment-2800476090 but they said “currently no plans to add new effects” but they also said “contributions are always welcome”

Yes the screenshots should be full resolution with the links I provided, or are you talking about something else ?

In real CRT RF (I think it even in AV but not as clear) there are some Chroma side bleed if there are some dark next to a bright edge (Especially if it is saturated), and of course there is some movement (Right and left) in it (from what I remember), I think it called fuzzy?

edit: its not always “dark next to a bright edge” case

it will be nice if there was some option in NTSC adaptive to mimic that

I just noted it is even in the S-video too!

but I dont think it moving like others, so maybe it’s in any analog

8 Likes

@Jobima that’s what looking for in RetroArch. More RF preset/shaders if possible please! Those pixels with Rainboweffect always look so nice !

Its little imperfections that make it accurate to the old school experience !

5 Likes

Do you have any presets for RF? I hope we get like something like 97% accurate to it.

no, these from real CRT from https://twitter.com/CRTpixels

I know but I wish we can emulate like that almost perfect from a real CRT

1 Like

I think we can probably get pretty very close to this using current implementations of CRT-Guest-Advanced-NTSC, NTSC-Adaptive or Blargg NTSC Video filters and presets.

6 Likes

We are almost there. CRT emulation is amazing, thanks to y’all.

4 Likes

Cool trick —> Chroma scaling/bleeding at 0.75 looks good with 3-phase and 32 taps. And NTSC artifacting can also be used without altering the image.

10 Likes

Looks the part! I might have swapped that glow/halation for some magic glow blending into some Base (black) Mask lines.

3 Likes

i remember making this work once in 1080p with the reshade preset once, sadly i lost the preset. Shadowmask for VGA emulation is a wonder

hope the new guy continues from where @DevilSingh stopped at the reshade thread

3 Likes

@Cyber I gave a try to magic glow mask strength and I like how it looks.

From now on I use 0.95 for “mask zoom sharpen” instead of 1.0, it will look better with strong deconvergence values, but this is picky stuff, invisible without zooming the image :smile: (empty space between the colors).

Nes preset —>

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/hd/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/hd/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"
AS = "0.000000"
cust_artifacting = "0.000000"
cust_fringing = "0.000000"
ntsc_fields = "1.000000"
ntsc_phase = "3.000000"
ntsc_cscale1 = "0.750000"
ntsc_ring = "1.000000"
ntsc_sharp = "10.000000"
ntsc_shape = "0.500000"
CCONTR = "0.000000"
GAMMA_INPUT = "2.800000"
gamma_out = "2.200000"
interm = "0.000000"
HSHARPNESS = "1.000000"
SIGMA_HOR = "0.425000"
S_SHARP = "0.000000"
HSHARP = "0.000000"
MAXS = "0.000000"
HARNG = "0.000000"
spike = "0.000000"
m_glow = "1.000000"
m_glow_cutoff = "0.000000"
m_glow_low = "7.000000"
m_glow_high = "0.000000"
m_glow_mask = "0.000000"
SIZEH = "4.000000"
SIGMA_H = "1.000000"
SIZEV = "4.000000"
SIGMA_V = "0.562500"
SIZEHB = "4.000000"
SIGMA_HB = "1.000000"
SIZEVB = "4.000000"
SIGMA_VB = "0.562500"
glow = "0.010000"
halation = "0.290000"
hmask1 = "0.000000"
gamma_c = "1.325000"
brightboost = "2.500000"
brightboost1 = "2.500000"
gsl = "-1.000000"
scanline1 = "70.000000"
scanline2 = "70.000000"
beam_min = "0.550000"
beam_max = "0.550000"
beam_size = "0.000000"
scans = "0.000000"
scangamma = "2.200000"
csize = "0.030000"
bsize1 = "0.160000"
sborder = "0.250000"
shadowMask = "2.000000"
maskstr = "1.000000"
mcut = "1.000000"
masksize = "3.000000"
mask_zoom = "-3.000000"
mzoom_sh = "0.950000"
maskDark = "0.000000"
maskLight = "1.000000"
mask_gamma = "5.000000"
slotmask = "1.000000"
slotmask1 = "1.000000"
double_slot = "3.000000"
pr_scan = "0.000000"
deconrr = "-1.000000"
deconrb = "1.000000"
decons = "3.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"

Thanks again for your shader @guest.r ! :tada:

5 Likes

Those look fantastic, well done ! :grin::+1:

4 Likes

I also love the last @guest.r last update, I’m still improving gamma and brightness :grin:

7 Likes

Thanks,same goes for you :smiley:. That’s a pretty preset you have there, screenshots looks nice. :fire: :fire:

3 Likes

Excellent! Don’t forget to try to blend it into the unlit phosphor/Mask wires with the Base (black) Mask Shader Parameter for even more realism but only just a slight hint of it though.

2 Likes