SGENPT-MIX - Sega Genesis Pseudo Transparency Mixer shader

@kadet87 when you download Retroarch, it should come with it. Check the shaders\shaders_slang\presets directory, or the shaders\shaders_glsl\presets

3 Likes

I would like to know if any false positive mitigation method would be possible for the sgenpt mix shader?

I’ll be working on that next using some knowledge gained from checkerboard-dedither. I already made some tests and the results were very good, getting rid of many false positives and giving the image a less blurring aspect.

I’m solving some personal matters this month, btw.

7 Likes

In fact, sgenpt is the best option in my opinion for Mega Drive, and the blurry aspect only bothers at lower resolutions like the Master System or NES. I think the blurring you say would be what happens here on the black edges of the hud where it seems to blend in a little with the white of the font:

The truth is that this has become my default shader for Arcade, Saturn and Mega Drive games, as the same setting (both blend at 90) looks good on all games with resolutions larger than 320x224!

3 Likes

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