SGENPT-MIX - Sega Genesis Pseudo Transparency Mixer shader

First release of SgenPT-Mix-Multipass:

Use online update from RA to get it.

What’s new:

  • Checkerboard treatment on par with checkerboar-dedither shaders (it’ll indeed be incorporated eventually);
  • Vertical Lines dedither improved, less false positives (though a bit of false negative);
  • CB and VL independent options.

It’s in development, so I won’t upload to RA repo until some stable version is achieved. Eventually it’ll replace checkerboard-dedither shaders.

9 Likes

Amazing! In cases where the blending interferes with the reading, just decreasing the blend works, The waterfalls, glass reflections and lights look beautiful!

Only some small dithers are ignored, maybe if using multipass together with sgenpt mix in blend 0

The only problem I found was with the fog blending in Streets of Rage 2, it doesn’t seem to be able to blend the dither at all.

3 Likes

I’m not home to try this yet but I wonder if the dreaded “x” in both super mario world and sonic 1 has been fixed.

Edit: Wait that happened in the checkerboard dedither shader I believe.

1 Like

Some dithering are ignored more or less depending on the mitigation settings. If you want full filtering, then set all mitigations to ZERO. The drawback is that false positives will happen more.

Those fog on SOR are really a mess of patterns. The best way to filter that is setting mitigations to ZERO.

And, NO, the cross in Sonic and Mario aren’t fixed, yet.

The new advancements I’ve got with this release are mitigations for Vertical Lines dithering. If you set them to ZERO you’ll see how blurred the image appear. But, setting mitigations to some positive values, most blurring are gone.

BTW, here’s a preset combining it with a crt shader (it needs to be put inside crt folder and it load sgenpt-mix-multipass from dithering folder):

shaders = "11"

shader0 = "../dithering/shaders/sgenpt-mix/linearize.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = "LinearGamma"
float_framebuffer0 = "false"
srgb_framebuffer0 = "true"

shader1 = ../dithering/shaders/sgenpt-mix/sgenpt-mix-pass1.slang
filter_linear1 = false
scale_type1 = source
scale1 = 1.0

shader2 = ../dithering/shaders/sgenpt-mix/sgenpt-mix-pass2.slang
filter_linear2 = false
scale_type2 = source
scale2 = 1.0

shader3 = ../dithering/shaders/sgenpt-mix/sgenpt-mix-pass3.slang
filter_linear3 = false
scale_type3 = source
scale3 = 1.0
alias3 = CB_Output

shader4 = ../dithering/shaders/sgenpt-mix/sgenpt-mix-pass4.slang
filter_linear4 = false
scale_type4 = source
scale4 = 1.0


shader5 = ../dithering/shaders/sgenpt-mix/sgenpt-mix-pass5.slang
filter_linear5 = false
scale_type5 = source
scale5 = 1.0


shader6 = "shaders/hyllian/crt-hyllian.slang"
filter_linear6 = "false"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = "CRTPass"
float_framebuffer6 = "false"
srgb_framebuffer6 = "true"
scale_type_x6 = "viewport"
scale_x6 = "1.000000"
scale_type_y6 = "viewport"
scale_y6 = "1.000000"
shader7 = "../crt/shaders/glow/threshold.slang"
filter_linear7 = "false"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = ""
float_framebuffer7 = "false"
srgb_framebuffer7 = "true"
shader8 = "../crt/shaders/glow/blur_horiz.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "true"
alias8 = ""
float_framebuffer8 = "false"
srgb_framebuffer8 = "true"
scale_type_x8 = "viewport"
scale_x8 = "0.200000"
scale_type_y8 = "viewport"
scale_y8 = "0.200000"
shader9 = "../crt/shaders/glow/blur_vert.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = ""
float_framebuffer9 = "false"
srgb_framebuffer9 = "true"
shader10 = "../crt/shaders/glow/resolve.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = ""
float_framebuffer10 = "false"
srgb_framebuffer10 = "false"
parameters = "INPUT_GAMMA;HFILTER_PROFILE;BEAM_MIN_WIDTH;BEAM_MAX_WIDTH;SCANLINES_STRENGTH;COLOR_BOOST;SHARPNESS_HACK;PHOSPHOR_LAYOUT;MASK_INTENSITY;InputGamma;OutputGamma;VSCANLINES;GLOW_WHITEPOINT;GLOW_ROLLOFF;BLOOM_STRENGTH;OUTPUT_GAMMA;CURVATURE;warpX;warpY;cornersize;cornersmooth;noise_amt;shadowMask;maskDark;maskLight"
INPUT_GAMMA = "2.000000"
HFILTER_PROFILE = "0.000000"
BEAM_MIN_WIDTH = "1.000000"
BEAM_MAX_WIDTH = "1.000000"
SCANLINES_STRENGTH = "0.580000"
COLOR_BOOST = "1.300000"
SHARPNESS_HACK = "1.000000"
PHOSPHOR_LAYOUT = "4.000000"
MASK_INTENSITY = "0.700000"
InputGamma = "2.400000"
OutputGamma = "1.000000"
VSCANLINES = "0.000000"
GLOW_WHITEPOINT = "0.900000"
GLOW_ROLLOFF = "3.000000"
BLOOM_STRENGTH = "0.100000"
OUTPUT_GAMMA = "2.200000"
CURVATURE = "0.000000"
warpX = "0.010000"
warpY = "0.020000"
cornersize = "0.010000"
cornersmooth = "280.000000"
noise_amt = "1.000000"
shadowMask = "0.000000"
maskDark = "0.500000"
maskLight = "1.500000"

6 Likes

I think only Streets of Rage 2 suffers from the fog problem, setting the error mitigation to 0 does not resolve the “problem”

Many games have AMAZING results!!!

3 Likes

Those single point lines aren’t checkerboard nor vertical lines dithering, that’s why they don’t get filtered.

2 Likes

The link is not working

1 Like

I made a Pull Request with latest shaders. Just wait until it’s approved.

6 Likes

So I see the new “sgenpt-mix multipass” shader has made it upstream, before I incorporate that into my shader pack I want to ask, will this shader be the main focus as far as you working on and updating? I know you recently introduced the checkerboard dithering shader but is it ok to discard that and just use this new sgenpt-mix shader going forward for CB and VL?

1 Like

Yes. Eventually, cb-dedither will be obsolete and discarded.

1 Like

You just gave me the green light with that information, ok and thank you.

1 Like

A small update: sgenpt-mix-v9

After working with many other composite shaders lately, I’ve got some feeling about how the dithering filtered should look. I think there’s no good way to mitigate some blends like I tried in the multipass edition. It always looks weird when some pixels aren’t filterd by dithering rules.

This small update is about the single pass version of sgenpt-mix, as I think now it’s the best version I made. Here’s what I changed:

  • I noticed the way I blended the dithering was a bit wrong. So I changed it and got a slightly sharper visual;
  • Now there are only three types: VL+CB, Only VL and Only CB. I got rid of those soft modes as I think now they’re useless.

So, this screen is from old version 8b:

And this is the new Version 9:

You can see most differences on the dithered water. The new version is sharper. The hud got some shadows too. I think this new version preserves more details while keeping the transparencies.

Here’s a preset I made combining this later sgenpt-mix with my latest crt-hyllian-sinc:

shaders = "4"
feedback_pass = "0"
shader0 = "shaders_slang/dithering/shaders/sgenpt-mix.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/0-hspack/1080p/aperture-grille/hyllian/shaders/support/multiLUT-modified.slang"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
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/0-hspack/1080p/aperture-grille/hyllian/shaders/crt-hyllian-sinc-pass0.slang"
filter_linear2 = "false"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = ""
float_framebuffer2 = "false"
srgb_framebuffer2 = "true"
scale_type_x2 = "viewport"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders_slang/0-hspack/1080p/aperture-grille/hyllian/shaders/crt-hyllian-pass1.slang"
filter_linear3 = "false"
wrap_mode3 = "clamp_to_edge"
mipmap_input3 = "false"
alias3 = ""
float_framebuffer3 = "false"
srgb_framebuffer3 = "true"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "viewport"
scale_y3 = "1.000000"
SGPT_BLEND_LEVEL = "1.000000"
LUT_selector_param = "2.000000"
PHOSPHOR_LAYOUT = "2.000000"
BRIGHTBOOST = "1.500000"
CURVATURE = "1.000000"
textures = "SamplerLUT1;SamplerLUT2"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/advanced/lut/ntsc-lut.png"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/0-hspack/1080p/aperture-grille/hyllian/shaders/support/LUT/some-grade.png"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"

If you don’t know where to get those crt shaders, see this thread. Or just open any crt shader and prepend this sgenpt-mix to see immediate results in dithering.

7 Likes

Nice, I see the difference right away. It even seems to deal with the dreaded “x” a bit better. I guess you’ll get a similar result with Super Mario World’s “x” as well.

1 Like

New release: sgenpt-mix-v10

  • Added negative lobe to get a sharper visual while keeping transparencies.
  • New param to Fine Tunning the blending.

6 Likes

This version looks amazing! Now the black outlines are well marked and the texts look great! The sharpening option works wonderfully!

I like how the shadows in Sonic 3D have a dither of only two pixels in some places, and yet sgenpt manages to blend them and keep the quality great!

SoR 2’s Fog was also a nightmare to properly blend all the dither without damaging the details of the rest of the graphics. But this version is handling these extreme pseudo transparencies very well!

3 Likes

I think the only problem is regarding checkerboard-dedither. It blends very well in pseudo transparencies, but ruins the letters “x” and details in fences or grids in some graphics.

1 Like

anyone got that version 10 please, download link is down

1 Like

v10 was the last version added to slang_shaders repo in february:

Use Retroarch update online to get it.

3 Likes

Could you please make it available in glsl format? It says the latest version is v8.

1 Like

There you go: sgenpt-mix.glsl (v10).

1 Like