“Mask 1” is a very 1080p mask, used it very often when I was on a 1080p display. You might want to use milder scanlines and a bit stronger filtering with mask 1 and that’s about it.
New Release Version (2023-11-14-r1):
Notable changes:
- More nice work on the fastest version…
- Small code improvements, some performance bump.
- New halation implementation, halation mask strength feature implemented.
- Glow/Bloom/Halation effect size parameter implemented.
Download link:
https://mega.nz/file/pgIUSRhD#lK7m5m6khOulFSv1cqNOlwzHMWeOxHmDNEj90kyEay0
I will nevertheless write “Hello there!” Just replying to a deleted post regarding PSX games resolutions:
Long time ago I wrote a shader (named OGL2Lookup shader) which gets insight into the emulated PSX VRAM and added 100px sized grid which allowed to observe game resolutions on the fly.
Here it how it looks with Brave Fencer Musashi:
Yes, I think I was incorrect about Musashi
NTSC anti-ringing solved the issue I was having with 2 phase composite (namely, text being painful to look at). It’s pretty much mandatory.
I think there is still something that could be done with automatic aspect ratio adjusting via a shader. It could be extremely useful for any game which uses multiple resolutions. You may be halfway there already?
I’d much rather have a slight change in AR than scaling artifacts while playing a game, but maybe that’s just me.
Maybe this is something I could try for these cases.
Maybe this can help in the above cases as well.
I agree and have found that depending on the game, core and shader used, I’ve had to resort to different custom aspect ratios to get rid of scaling artifacts on objects like the power bars in Super Double Dragon - SNES, Final Fantasy Mystic Quest - SNES, Mortal Kombat II, III and UMKIII - Arcade and the Pow Meter in Samurai Showdown - SNES.
It’s tricky with (smart) automatic aspect ratio. As i understand it should deliver a better experience compared with the core provided aspect ratio. What these changes are could be another story. Currently, i would make these changes regarding vertical games, because there isn’t enough side resolution for masks and scanlines to develop, at least not with landscape display orientation. Core provided aspects have a great excuse here, namely rotated displays.
But dunno with PSX games. A bit more horizontal resolution could be welcome, but core provided delivers normal experience most of the time and i would really need screenshots etc. to understand the root of the trouble, i.e. where 4:3 is failing and similar.
About implementing this in my shaders, it would hurt performance definitely, OTOH it would be a duplicated experience what Bezel shaders already offer.
Is there a way to do an all features OFF preset? I want to see what each settings do, but I don’t know which parameter setting corresponds to OFF, and also which settings turn off other settings when they are turned on.
Hey there!
The default shader settings are pretty vanilla, you can start tweaking without much consideration from here on.
Many features are disabled, you can recognize them by the default value of 0.0 (like Bloom…).
There are some features which must have a non-neutral value, because the shader works this way (like horizontal sharpness…).
Which features you can’t use at the same time:
- interlaced/no-scanline mode and scanlines
- Magic Glow and ordinary Glow
- VGA mode and interlacing
- Smart Edges Effect Strength negates Substractive Sharpness in the standard shader
Otherwise, you can combine almost every feature. Another advice on tweaking is to set mask strength quite high if you want to use more advanced mask mitigation techniques like Bloom, Mask Bloom…
You have plenty of horizontal filtering options. Just reminding, that you can achieve more appealing results, if you tweak this aspect of the shader too.
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 = "source"
scale_x12 = "1.000000"
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 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
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 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
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 = "source"
scale_x15 = "1.000000"
scale_type_y15 = "source"
scale_y15 = "1.000000"
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"
CP = "2.000000"
sega_fix = "1.000000"
BP = "-1.000000"
cust_fringing = "0.000000"
cust_artifacting = "0.000000"
ntsc_fields = "1.000000"
ntsc_phase = "2.000000"
ntsc_cscale = "2.250000"
ntsc_ring = "1.000000"
ntsc_sharp = "-10.000000"
ntsc_shape = "1.000000"
CSHARPEN = "5.000000"
CCONTR = "0.000000"
GAMMA_INPUT = "2.500000"
gamma_out = "2.200000"
interm = "0.000000"
HSHARPNESS = "3.000000"
SIGMA_HOR = "1.000000"
S_SHARP = "3.000000"
HSHARP = "2.000000"
MAXS = "0.300000"
HARNG = "0.000000"
spike = "0.000000"
m_glow = "1.000000"
m_glow_cutoff = "0.000000"
m_glow_low = "0.400000"
m_glow_high = "0.000000"
m_glow_mask = "0.000000"
SIZEH = "2.000000"
SIGMA_H = "0.500000"
SIZEV = "1.000000"
SIGMA_V = "0.200000"
SIZEHB = "2.000000"
SIGMA_HB = "0.650000"
SIZEVB = "1.000000"
SIGMA_VB = "0.325000"
glow = "0.010000"
bloom = "1.950000"
bmask1 = "0.775000"
hmask1 = "0.000000"
brightboost = "1.000000"
brightboost1 = "1.000000"
gsl = "1.000000"
scanline1 = "20.000000"
scanline2 = "20.000000"
beam_min = "1.225000"
beam_max = "1.225000"
beam_size = "1.000000"
scans = "1.000000"
scangamma = "5.000000"
shadowMask = "10.000000"
maskstr = "1.000000"
mcut = "2.000000"
masksize = "2.000000"
mask_zoom = "-2.000000"
mzoom_sh = "1.000000"
maskDark = "0.000000"
maskLight = "1.000000"
mask_gamma = "5.000000"
smoothmask = "1.000000"
post_br = "1.430000"
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"
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 = "source"
scale_x12 = "1.000000"
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 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
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 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
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 = "source"
scale_x15 = "1.000000"
scale_type_y15 = "source"
scale_y15 = "1.000000"
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"
CP = "2.000000"
cust_fringing = "0.000000"
cust_artifacting = "0.000000"
ntsc_fields = "1.000000"
ntsc_phase = "2.000000"
ntsc_cscale = "2.250000"
ntsc_ring = "1.000000"
ntsc_sharp = "10.000000"
ntsc_shape = "1.000000"
blendMode = "0.000000"
CCONTR = "0.000000"
CDETAILS = "0.000000"
GAMMA_INPUT = "2.500000"
gamma_out = "2.200000"
interm = "0.000000"
HSHARPNESS = "2.950000"
SIGMA_HOR = "1.000000"
S_SHARP = "3.000000"
HSHARP = "2.000000"
MAXS = "0.300000"
HARNG = "0.000000"
spike = "0.000000"
m_glow = "1.000000"
m_glow_cutoff = "0.000000"
m_glow_low = "0.400000"
m_glow_high = "0.000000"
m_glow_mask = "0.000000"
SIZEH = "1.000000"
SIGMA_H = "0.300000"
SIZEV = "1.000000"
SIGMA_V = "0.200000"
SIZEHB = "1.000000"
SIGMA_HB = "0.300000"
SIZEVB = "1.000000"
SIGMA_VB = "0.200000"
glow = "0.010000"
bloom = "1.900000"
bmask1 = "0.675000"
hmask1 = "0.000000"
brightboost = "1.000000"
brightboost1 = "1.000000"
gsl = "1.000000"
scanline1 = "20.000000"
scanline2 = "20.000000"
beam_min = "1.200000"
beam_max = "1.200000"
beam_size = "1.000000"
scans = "1.000000"
scangamma = "5.000000"
shadowMask = "10.000000"
maskstr = "1.000000"
mcut = "2.000000"
masksize = "2.000000"
mask_zoom = "-2.000000"
mzoom_sh = "1.000000"
maskDark = "0.000000"
maskLight = "1.000000"
mask_gamma = "5.000000"
smoothmask = "1.000000"
post_br = "1.430000"
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"
Looking good. Vampire Hunter for the playstation. I really need to play this one in the future it looks so cool
New Release Version (2023-11-18-r1):
Notable changes:
- Scanline Saturation negative parameter value code cleanup (all versions).
- NTSC: “Quality” parameter description is more clear now: Artifacting and Fringing are to be set for Svideo, Composite and RF modes…
- NTSC: Chroma bleeding can be further reduced for 2-phase mode.
- Fastest: better “performance mode” fidelity.
- Fastest: Post Brightness feature implemented.
- Fastest: large code optimizations, very notable speedup.
- Note: please test it a bit, feedback is welcome.
Download link:
https://mega.nz/file/A1JmjZQA#vFyBgpOoO3B5llMjXLv5MRW5k-zyEd7jINMRUA0-UV4
That’s the first one that caught my eye. So you managed it to where it can go pass 2.50 without colors starting to look weird? Looking forward to testing that out.
Edit:
My man @guest.r, I don’t know how you continuously improve this shader but somehow you do and this update is another home run. First thing I tested was the Sega logo in Sonic and this is the result.
Chroma scaling at previous 2.25 limit:
Chroma scaling pushed to the new max at 4.00:
Right away you can see all those little artifacts around all the letters horizontally disappear (notice the left side of the “S”). There was a user in my thread days ago trying to get rid of those very artifacts and this update has now made it possible.
Another test with Chroma scaling at 2.25:
Chroma scaling now at 4.00:
Another benefit of pushing 2phase chroma scaling to the max is that it now gets rid of that “washed out” color look giving colors that punch that 3phase games have so now both 2phase and 3phase look equal “color” wise.
Speaking of 3phase I gave a 3phase game a test
Chroma scaling at the previous 2.25 max limit:
Chroma scaling at the new 4.00 max:
Not much a difference between the two so it seems you designed the code to strictly benefit 2phase games which needed that extra punch imo. All in all this update should now allow anyone to get their 2phase games to have a crispy composite look while still getting the dithering blending:
Chroma scaling at 4.00:
With that said it’s time to work on a new shader pack with these settings PRONTO lol. Thank you once again @guest.r
Also if possible maybe you can get this update pushed upstream?
Much appreciated @guest.r! This is what I had in mind ever since I had made my original comparison comparing the bleeding and reduced black levels in your NTSC preset vs the Blargg Filter Presets.
Fantastic work! The best keeps getting better!
Thanks both for very positive feedback. I also think quite nice changes were made compared with the current repository version, and it should be updated quite soon. I’m testing different versions atm. and so far it looks good. Maybe some details needs to be ironed out first, but looks OK in general.
No problem at all. I only tested that Chroma scaling setting though didn’t touch the “fastest” shader or try any of the other settings. But for chroma scaling it’s pretty much perfect now, I see no reason to use any other “ntsc” shader besides yours at this point.
No problem at all. Anything to further perfect it is only a cherry on top so please take your time to iron any kinks out that you may see.
Nice!
Hey @HyperspaceMadness, do you intend to release any new Mega Bezel updates with these improvements?
Wow, chroma scaling is fantastic! This may be the NTSC shader update I’ve been waiting for my whole life!
Looks flawless to my untrained eyes! Lol
Also you can use the NTSC portion with any other shader now thanks to this:
Or this:
Has any progress been made on this awesome idea?