New CRT shader from Guest + CRT Guest Advanced updates

I guess it OK as long the image isn’t tinted by mask. Some mask widths are tricky, since they aren’t perfectly RGB symmetrical and such phenomena can occour.

2 Likes

Yes a mask 5px wide for example, can give a different tint depending on whether the mask layout is set to 0,0 or 1,0.

Also color temperature helps, I improved my preset by using “-29.10” because I was losing detail in the red colors and to rebalance the whites.

1 Like

@guest.r

Would it be alright if I added the latest version of crt-guest-advanced-ntsc-decoupled to the shader repository in it’s own ntsc section subfolder so it doesn’t impact crt-guest-advanced?

I had been intending to wait until crt-guest-advanced itself was updated on the repository, but there is an appetite over in the Megatron thread to get to work on more NTSC presets for Megatron v2.

(Also, do you want me to name it differently and make a separate thread so that it is clearer that i am the one maintaining it? I want to strike the right balance between making sure that it remains absolutely clear that the grand majority is your work, but not have everyone coming to you with support requests that aren’t necessarily applicable to crt-guest-advanced itself.)

@guest.r It’s incredible the possibilities your shader offers when you take the time to adjust the parameters.

In my old presets, when I tried to use deconvergence, the loss of brightness in the vivid colors forced me back to the default preset.

But now, with all the tips I mentioned earlier and since I had some free time. I was able to finish my preset, including deconvergence!

I also tried your PAL shader, the default preset is so good that I only changed one setting in SCART mode and nothing else :eyes:. This is my default for my pal folder.

5 Likes

I’ve improved my preset so that users with lower resolutions get results almost identical to my original preset in terms of brightness and color, while using a slot mask.

I’ve also tweaked the deconvergence by boosting the reds more than the rest to cheat in the center of the scanline relative to the LUT I’m using.

Mask 2.0 / Size 2.0

Mask 10.0 / Size 2.0 / Mask Zoom -4.0

Preset for BlastEm :video_game:

shaders = "18"
shader0 = "shaders_slang/crt/shaders/guest/advanced/stock.slang"
alias0 = ""
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
filter_linear0 = "false"
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"
alias1 = "StockPass"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
filter_linear1 = "false"
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"
alias2 = "AfterglowPass"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
filter_linear2 = "true"
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"
alias3 = "PrePass0"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
filter_linear3 = "true"
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"
alias4 = "NPass1"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
filter_linear4 = "false"
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"
alias5 = ""
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
filter_linear5 = "true"
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"
alias6 = ""
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
filter_linear6 = "true"
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"
alias7 = "NtscPass"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
filter_linear7 = "true"
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"
alias8 = "PrePass"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "true"
filter_linear8 = "true"
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"
alias9 = "AvgLumPass"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "true"
filter_linear9 = "true"
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"
alias10 = "LinearizePass"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
filter_linear10 = "true"
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"
alias11 = "Pass1"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
filter_linear11 = "true"
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"
alias12 = ""
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "false"
filter_linear12 = "true"
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"
alias13 = "GlowPass"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "false"
filter_linear13 = "true"
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"
alias14 = ""
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
filter_linear14 = "true"
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"
alias15 = "BloomPass"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
filter_linear15 = "true"
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"
alias16 = ""
wrap_mode16 = "clamp_to_border"
mipmap_input16 = "false"
filter_linear16 = "true"
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"
alias17 = ""
wrap_mode17 = "clamp_to_border"
mipmap_input17 = "false"
filter_linear17 = "true"
float_framebuffer17 = "false"
srgb_framebuffer17 = "false"
scale_type_x17 = "viewport"
scale_x17 = "1.000000"
scale_type_y17 = "viewport"
scale_y17 = "1.000000"
esrc = "2.000000"
bth = "1.000000"
PR = "0.000000"
PG = "0.000000"
PB = "0.000000"
AS = "0.250000"
agsat = "1.000000"
CP = "2.000000"
TNTC = "4.000000"
WP = "-30.000000"
cust_artifacting = "0.000000"
cust_fringing = "0.000000"
ntsc_scale = "2.500000"
nscale = "0.575000"
ntsc_taps = "6.000000"
ntsc_ring = "1.000000"
ntsc_sharp = "10.000000"
ntsc_shape = "0.500000"
GAMMA_INPUT = "2.400000"
gamma_out = "2.200000"
interm = "0.000000"
HSHARPNESS = "1.000000"
SIGMA_HOR = "0.525000"
S_SHARP = "0.000000"
HSHARP = "0.000000"
MAXS = "0.000000"
HARNG = "0.000000"
m_glow = "1.000000"
m_glow_cutoff = "0.000000"
m_glow_low = "0.500000"
m_glow_high = "7.000000"
m_glow_dist = "4.000000"
m_glow_mask = "0.000000"
SIGMA_H = "0.800000"
SIGMA_V = "0.600000"
SIZEHB = "1.000000"
SIGMA_HB = "0.350000"
SIZEVB = "1.000000"
SIGMA_VB = "0.400000"
halation = "0.100000"
hmask1 = "0.000000"
brightboost = "3.000000"
brightboost1 = "3.000000"
gsl = "2.000000"
scanline1 = "20.000000"
scanline2 = "20.000000"
beam_min = "0.300000"
beam_size = "0.000000"
scans = "0.000000"
scan_falloff = "2.000000"
scangamma = "2.200000"
shadowMask = "10.000000"
maskstr = "1.000000"
mcut = "1.000000"
masksize = "2.000000"
mask_zoom = "-4.000000"
maskDark = "0.000000"
maskLight = "1.000000"
mask_gamma = "5.000000"
slotmask = "1.000000"
slotmask1 = "1.000000"
pr_scan = "0.000000"
deconrr = "1.750000"
deconrb = "-0.250000"
deconrry = "1.750000"
deconrby = "-0.250000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/advanced/lut/trinitron-lut.png"
SamplerLUT1_mipmap = "false"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT2 = "shaders_slang/crt/shaders/guest/advanced/lut/inv-trinitron-lut.png"
SamplerLUT2_mipmap = "false"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT3 = "shaders_slang/crt/shaders/guest/advanced/lut/nec-lut.png"
SamplerLUT3_mipmap = "false"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT4 = "shaders_slang/crt/shaders/guest/advanced/lut/ntsc-lut.png"
SamplerLUT4_mipmap = "false"
SamplerLUT4_linear = "true"
SamplerLUT4_wrap_mode = "clamp_to_border"
6 Likes

Hey, that are some really good looking presets, you should definitelly save them as a part of a collection or similar. :smiley:

Sometimes I also like to mention that guest-advanced shaders are quite compatible with pre-scalers, there are also some performance boosting mechanisms for the ntsc shader part.

4 Likes

Thanks! Yes, that would be a good idea if I weren’t so lazy haha. :older_man:

Yeah I remember you mentioning it for a PSP preset. It’s worth checking out. :100:

1 Like

You know, I was thinking the same thing. Especially when @ProfessorBraun mentioned this:

If you’re gearing towards, other users, then where are other users supposed to get these presets from?

2 Likes

Ah, I see how I worded my sentence. I had a preset with mask 2 without magic glow high strength and different settings.

Others masks with negative zoom was not looking the same.

Now my preset with mask 2 is improved in many ways and mask (10-12) with slotmask/negative zoom looks close to my preset with mask 2 (settings are the same). :v:

2 Likes

May I have your preset, ProfessorB? I’m not at skilled at entering your values or anyone else into RA. I’m sorry for this.

3 Likes

Hey sure! :smiley:

Open your RetroArch folder, then the shaders folder.

Inside, create a text document and copy the preset I posted earlier.

Then rename this text document to “test.slangp” without the quotes.

3 Likes

Thanks, I will try to do replicate that when I’m off from work. I’m trying to get better at that so I can take down y’all’s values.

2 Likes

I guess it’s been a while and the last guest-advanced version is doing well without some issues.

Would like to ask @hunterk politely if he would merge the last version into the slang repository.

The download link:

https://mega.nz/file/QoI0wAoS#z53_-BJN5hw9QieusZzhjDAbeuYJqL4gCvBfsfnpFv4

As usual, it’s just copy-paste, no deprecated files etc…

Thanks!

7 Likes

sounds good, thanks for the heads-up.

I have the PR prepared here: https://github.com/libretro/slang-shaders/pull/880

Let me know if that looks good and I’ll merge it.

4 Likes

Thanks again. It looks fine, can be merged. Regards!

4 Likes

How do would you guys expect the new QD-OLED V-Stripe sub-pixel layout to display masks intended for the standard LCD RBG layout?

3 Likes

Miniled is turning to be better for this OLED is giving headaches over burnouts last i heard

2 Likes

is there a version for glsl, I want to try this in nintendo switch’s retroarch

1 Like

Hi everyone! I’m sharing my custom preset for Mega Drive / Genesis and Sega CD based on crt-guest-advanced-pal.

The Goal: I wanted to achieve those specific authentic PAL colors.

Why no CRT Mask? A peak brightness of 300 nits and 1080 is not enough to use a proper CRT mask without making the image too dim and muddy.

Instead of heavy CRT (which often cause moiré or look too dark on 1080p), I focused on pure color accuracy and phosphor-like glow . The main goal was to achieve the “true” blue — no more eggplant Sonic!

Transparency and Anti-aliasing: Since I’m not using a mask, I relied on other techniques to handle pixel smoothing and transparency effects (like waterfalls and shadows). By balancing Bloom, Halation, and specific PAL-pass filtering , I achieved natural blending and “melted” pixels without the loss of brightness that comes with a traditional CRT grid.

Uses pal-pass logic to get vivid PAL colors even on NTSC regions.

HDR Glow: Tuned for 1080p HDR10 (300 nits) . It uses Bloom and Halation to simulate the light energy of a real CRT without the intrusive scanlines. High contrast (5.0) and brightness boost to make the image “pop” like a high-end consumer TV.

Best(?) with PAL PAR, but versatile.

Important Setup Notes:

  • HDR Requirements: HDR must be enabled in both Windows settings and RetroArch video settings.
  • Update Shaders: Make sure to update your slang shaders in RetroArch (Online Updater -> Update Slang Shaders) to ensure all paths and files are up to date.
  • SDR Warning: In SDR mode, the image will be over-saturated and too bright. This is a dedicated HDR10 preset.

Note on Image Clarity: Screenshots look a bit blurry in static, but it’s much sharper and clearer in motion on a real screen.

shaders = "19"
shader0 = "shaders_slang/crt/shaders/guest/advanced/stock.slang"
alias0 = ""
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
filter_linear0 = "false"
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"
alias1 = "StockPass"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
filter_linear1 = "false"
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"
alias2 = "AfterglowPass"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
filter_linear2 = "true"
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"
alias3 = "PrePass0"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
filter_linear3 = "true"
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/interlace-ntsc.slang"
alias4 = "InterlacePass"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
filter_linear4 = "true"
float_framebuffer4 = "true"
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/pal/pal-pass1.slang"
alias5 = "PalPass1"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
filter_linear5 = "false"
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/pal/pal-pass2.slang"
alias6 = "PalPass2"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
filter_linear6 = "false"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "4.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders_slang/crt/shaders/guest/advanced/pal/pal-pass3.slang"
alias7 = "PalPass3"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
filter_linear7 = "true"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "0.500000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders_slang/crt/shaders/guest/advanced/custom-fast-sharpen-pal.slang"
alias8 = "NtscPass"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
filter_linear8 = "true"
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/stock.slang"
alias9 = "PrePass"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "true"
filter_linear9 = "true"
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/avg-lum-ntsc.slang"
alias10 = "AvgLumPass"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "true"
filter_linear10 = "true"
float_framebuffer10 = "false"
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/linearize-ntsc-new.slang"
alias11 = "LinearizePass"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
filter_linear11 = "true"
float_framebuffer11 = "true"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced-ntsc-pass1.slang"
alias12 = "Pass1"
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "false"
filter_linear12 = "true"
float_framebuffer12 = "true"
srgb_framebuffer12 = "false"
scale_type_x12 = "viewport"
scale_x12 = "1.000000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders_slang/crt/shaders/guest/hd/gaussian_horizontal.slang"
alias13 = ""
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "false"
filter_linear13 = "true"
float_framebuffer13 = "true"
srgb_framebuffer13 = "false"
scale_type_x13 = "absolute"
scale_x13 = "800"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
alias14 = "GlowPass"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
filter_linear14 = "true"
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/hd/bloom_horizontal.slang"
alias15 = ""
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
filter_linear15 = "true"
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/bloom_vertical.slang"
alias16 = "BloomPass"
wrap_mode16 = "clamp_to_border"
mipmap_input16 = "false"
filter_linear16 = "true"
float_framebuffer16 = "true"
srgb_framebuffer16 = "false"
scale_type_x16 = "absolute"
scale_x16 = "800"
scale_type_y16 = "absolute"
scale_y16 = "600"
shader17 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced-ntsc-pass2.slang"
alias17 = ""
wrap_mode17 = "clamp_to_border"
mipmap_input17 = "false"
filter_linear17 = "true"
float_framebuffer17 = "true"
srgb_framebuffer17 = "false"
scale_type_x17 = "viewport"
scale_x17 = "1.000000"
scale_type_y17 = "viewport"
scale_y17 = "1.000000"
shader18 = "shaders_slang/crt/shaders/guest/advanced/deconvergence-ntsc.slang"
alias18 = ""
wrap_mode18 = "clamp_to_border"
mipmap_input18 = "false"
filter_linear18 = "true"
float_framebuffer18 = "false"
srgb_framebuffer18 = "false"
scale_type_x18 = "viewport"
scale_x18 = "1.000000"
scale_type_y18 = "viewport"
scale_y18 = "1.000000"
PR = "0.000000"
PG = "0.000000"
PB = "0.000000"
AS = "0.000000"
agsat = "0.000000"
CP = "1.000000"
TNTC = "1.000000"
WP = "-10.000000"
wp_saturation = "1.150000"
pre_bb = "1.250000"
contr = "0.100000"
pre_gc = "0.850000"
sega_fix = "1.000000"
PAL_FILT = "4.000000"
SATURATION = "0.900000"
BRIGHTNESS = "0.950000"
CHROMAF = "1.000000"
GCORR = "1.050000"
pal_ring = "0.700000"
CDETAILS = "0.600000"
gamma_out = "2.100000"
HSHARPNESS = "2.000000"
SIGMA_HOR = "1.400000"
S_SHARP = "0.400000"
HSHARP = "0.600000"
MAXS = "0.080000"
bloom = "0.250000"
halation = "0.250000"
gamma_c = "0.750000"
brightboost = "1.600000"
brightboost1 = "1.050000"
maskstr = "0.350000"
mcut = "0.700000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/advanced/lut/trinitron-lut.png"
SamplerLUT1_mipmap = "false"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT2 = "shaders_slang/crt/shaders/guest/advanced/lut/inv-trinitron-lut.png"
SamplerLUT2_mipmap = "false"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT3 = "shaders_slang/crt/shaders/guest/advanced/lut/nec-lut.png"
SamplerLUT3_mipmap = "false"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT4 = "shaders_slang/crt/shaders/guest/advanced/lut/ntsc-lut.png"
SamplerLUT4_mipmap = "false"
SamplerLUT4_linear = "true"
SamplerLUT4_wrap_mode = "clamp_to_border"
2 Likes

Glsl Buffer handling is different from slang (pot vs. npot texture sizes) and with the slang version some related coding approaches are very intuitive without needing to solve some annoying issues.

So the glsl version was deprecated quite early, but you can use slang shaders with glcore, vulkan, dx11 and dx12 video drivers.

Currently you can use some other very nice (and also fast) glsl shaders if you need to.

1 Like