Please show off what crt shaders can do!

An example how i like to play some games, but is quite a quick setup.

Sometimes i find the Smart Edge Interpolation feature very handy also.

Edit:

parameter values for the standard preset (copy/paste into an existing saved preset):

bloom = "-0.500000"
halation = "0.050000"
brightboost = "1.800000"
gsl = "1.000000"
scanline1 = "2.000000"
scanline2 = "16.000000"
beam_min = "2.499999"
beam_size = "0.750000"
scans = "1.750000"
scan_falloff = "0.500000"
h_sharp = "3.300002"
smart_ei = "0.200000"
sth = "0.100000"
warpX = "0.050000"
warpY = "0.070000"
csize = "0.080000"
bsize1 = "0.100000"
shadowMask = "6.000000"
maskstr = "1.000000"
mask_layout = "1.000000"
deconrby = "-1.500000"
post_br = "1.200000"
13 Likes

That looks great! Would you mind sharing the preset?

2 Likes

Sure, maybe it needs some more tweaking though. :smiley:

2 Likes

Good work from the master himself! Maybe you should start including your current personal shader preset as an example preset in your package from now on!

I could see this benefiting many users, both new and experienced alike.

4 Likes

Hello everybody! Well I made this preset with Hillian sinc, I confess that I would like to get this sharpness with the guest advanced mask 10, but it doesn’t get the sharpness like this:

shaders = “6”
shader0 = “shaders_slang/ntsc/shaders/ntsc-adaptive/ntsc-pass1.slang”
filter_linear0 = “false”
wrap_mode0 = “clamp_to_border”
mipmap_input0 = “false”
alias0 = “”
float_framebuffer0 = “true”
srgb_framebuffer0 = “false”
scale_type_x0 = “source”
scale_x0 = “4.000000”
scale_type_y0 = “source”
scale_y0 = “1.000000”
shader1 = “shaders_slang/ntsc/shaders/ntsc-adaptive/ntsc-pass2.slang”
filter_linear1 = “true”
wrap_mode1 = “clamp_to_border”
mipmap_input1 = “false”
alias1 = “”
float_framebuffer1 = “false”
srgb_framebuffer1 = “false”
scale_type_x1 = “source”
scale_x1 = “0.500000”
scale_type_y1 = “source”
scale_y1 = “1.000000”
shader2 = “shaders_slang/misc/image-adjustment.slang”
filter_linear2 = “false”
wrap_mode2 = “clamp_to_border”
mipmap_input2 = “false”
alias2 = “”
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/custom-fast-sharpen.slang”
filter_linear3 = “false”
wrap_mode3 = “clamp_to_border”
mipmap_input3 = “false”
alias3 = “”
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/sharpen/shaders/adaptive-sharpen.slang”
filter_linear4 = “false”
wrap_mode4 = “clamp_to_border”
mipmap_input4 = “false”
alias4 = “”
float_framebuffer4 = “false”
srgb_framebuffer4 = “false”
scale_type_x4 = “source”
scale_x4 = “1.000000”
scale_type_y4 = “source”
scale_y4 = “1.000000”
shader5 = “shaders_slang/crt/shaders/hyllian/crt-hyllian-sinc.slang”
wrap_mode5 = “clamp_to_border”
mipmap_input5 = “false”
alias5 = “”
float_framebuffer5 = “false”
srgb_framebuffer5 = “false”
quality = “-1.000000”
ntsc_phase = “2.000000”
cust_artifacting = “1.100000”
ia_saturation = “1.100000”
ia_contrast = “1.050000”
SHARPEN = “4.000000”
CONTR = “0.000000”
BEAM_MIN_WIDTH = “0.360000”
COLOR_BOOST = “2.000000”
PHOSPHOR_LAYOUT = “8.000000”
OutputGamma = “2.999999”

6 Likes

It would require a special parameter with substractive sharpness. Been thinking about it since a long time ago and found a very nice code solution, will add it as a new release soon.

5 Likes

Great looking shader preset! I don’t see why you couldn’t get CRT-Guest-Advance to be as sharp though.

1 Like

I used custom fast sharpen in this preset here, but in guest advanced I can’t add another sharpening pass after ntsc.

In this case, I used two sharpening shaders in this preset with Hyllian crt sync, the second being the adaptive sharpen.

I left the sharpen custom strength at max and the amount at 0, I left the rest for adaptive sharpen at 0.80. With luck I think I got a not too destructive result.

2 Likes

Interesting, I use CRT-Guest-Advance via HSM Mega Bezel Reflection Shader so there are a couple additional options available to me. I haven’t really mastered using the CRT-Guest-Advance-NTSC version and I’ve been instead using Blargg NTSC video filters with custom settings where possible in order to incorporate NTSC artifacts into my CRT Shader presets.

Within HSM Mega Bezel Reflection Shader I get to use Horizontal Sharpness, Subtractive Sharpness as well as Fast Sharpen. I think the Blargg video filter also has a Sharpness setting but I haven’t found the need to adjust that as well.

This is the result:

If you’re still getting proper transparencies in the Sonic The Hedgehog Waterfalls with that level of sharpness on the edges, I think you’ve done a fantastic job there!

2 Likes

Hey thank you so much!! This is amazing!! It’s better than I could have imagined!!

before and after (my preset on the left, your update on the right)

3 Likes

I’ve noticed in your screenshot that although overall sharpness is improved, you can now notice the individual vertical lines (jail bars) that make up the waterfall which were more blended in your older screenshot producing a more convincing transparency effect.

Here are some examples using the “old” CRT-Guest-Advance in HSM Mega Reflection Shader using Horizontal Sharpness, Subtractive Sharpness and Fast Sharpen plus custom Blargg SNES Video filter settings to do transparency effects.

You have to load full resolution then zoom in or view fullscreen in order for these to look correct because of the mask and scanline settings.

1 Like

I found that what caused this in the jailbar was Ringing, I set it to 1.100000. Actually this way is good for me, because Master System games are more blurred, since I only use one preset for several colors. The ringing made things much better.

But I tweaked it a little more, and lowered the ringing to just 0.200000, and the rest of the sharpening settings looked like this:

Ringing makes a lot of difference! even at 0.200000 it already provides a good highlight!

SHARPEN = “4.000000”
CONTR = “0.140000”
blendMode = “2.000000”
h_sharp = “0.900001”
s_sharp = “1.500000”
ring = “0.200000”

2 Likes

I have several custom presets laying around in my shader folder but most of the time (~70% of the time) I only use the following 2:

PVM look: The look that almost never fails. Kong_01PVM

Average composite look: PVM may look boring if there’s not much going on on the screen (primitive 8bit/16bit graphics) Kong_02Composite

8 Likes

Ok here we go again another guest shader update another tweak. @guest.r that ringing option you added in was a nice touch, it put the cherry right on top of my presets. This is probably the cleanest I’ve gotten my presets to look so far, both the arcade and 8/16 bits got cleaned up. Previously my arcade sets didnt display dithering properly, that’s now been fixed especially when playing cps2 games:

https://www.mediafire.com/file/4xlh52p1qoz89fe/crt-guest-advanced-ntsc-slotmask_presets_05-16-2022.zip/file

You must have guest’s latest shader update for my presets to display properly which you can find here.

@HyperspaceMadness this set will replace my last set. I hope you all enjoy the new look.

9 Likes

Could I ask what’s the difference from “U” and “J” preset versions ? would appreciate the info and thanks again for sharing such wonderful work bud.

3 Likes

I think the (U)S preset should have warmer colors while the (J)apanese preset comes in a bit cooler. I am just guessing here, but this was what he was referring to in one of his earlier posts:

https://forums.libretro.com/t/please-show-off-what-crt-shaders-can-do/19193/4429

5 Likes

Yup it’s exactly what Dr.bloodSpinat2000 said, I wanted to give you guys multiple options to enjoy your games with, my personal favorite presets are 05 and 12.

By the way for the 8/16 bit presets you can make the pixels even sharper by going into the parameters and switch the very first setting from “4.Both” to “2.CB” and you’ll go from this:

to this:

Notice Link’s ears, you can see the black outline around his whole body clearly now along with all other objects/characters.

4 Likes

i have went a little on the US warm preset and gotta say that sonic waterfall and chemical plant pipes don’t look too blurry as expected from the several composite-looking options available already. Specially the pipes in sonic 2 where you can sort of see the grey vertical lines without much issue.

This whole set of presets would be actually perfect if can be address the proper Rainbow effect for the Genesis, at least for my taste. I think the Rainbow effects are rather decent for the NES though. But the rainbow on pipes is far still from what I can get on the mame hlsl preset. Still is a great job though, either for the CRT guy or your presets.

I personally prefer blurrier looking for Sonic games but I can only bet Mario bros games will only benefit from your current presets though.

2 Likes

Lol I knew you would mention Sonic, yeah I tried my best to try to get that soft blending look but when I did achieve it I ended up losing that clarity and clearness as a trade off. Maybe you can take my shader and try to mix it in a way where you can get the pipes in Sonic 2 to look the way you want with the rainbows.

My aim at first was to have the shader as sharp as they look but have that extra soft dithering blurriness only for things like the waterfall etc but I don’t know if it’s possible or if there’s a shader I can add into the chain to do exactly that. If I could’ve achieved that one thing I think my shader presets would’ve covered all bases and it would’ve been perfect. The dithering is indeed there but it’s more like a sharp blending than a soft one.

But I thank you for trying them out and if you know what dethering shader I can add into the chain to get that look but keep everything else looking exactly the same please let me know.

2 Likes

I put this together real fast, I don’t know if this is what you’re looking for but try this out:

shaders = "17"
shader0 = "shaders_slang/crt/shaders/mame_hlsl/shaders/mame_ntsc_encode.slang"
filter_linear0 = "true"
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/mame_hlsl/shaders/mame_ntsc_decode.slang"
filter_linear1 = "true"
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/grade/pre-shaders-afterglow-grade.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"
frame_count_mod4 = "2"
mipmap_input4 = "false"
alias4 = ""
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 = "false"
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/custom-fast-sharpen.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = "NtscPass"
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/convert-ntsc.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = ""
float_framebuffer7 = "false"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "0.500000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders_slang/dithering/shaders/sgenpt-mix.slang"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "true"
alias8 = "PrePass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
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/gaussian_horizontal.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = ""
float_framebuffer11 = "true"
srgb_framebuffer11 = "false"
scale_type_x11 = "absolute"
scale_x11 = "640"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear12 = "true"
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "false"
alias12 = "GlowPass"
float_framebuffer12 = "true"
srgb_framebuffer12 = "false"
scale_type_x12 = "absolute"
scale_x12 = "640"
scale_type_y12 = "absolute"
scale_y12 = "480"
shader13 = "shaders_slang/crt/shaders/guest/advanced/bloom_horizontal.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "false"
alias13 = ""
float_framebuffer13 = "true"
srgb_framebuffer13 = "false"
scale_type_x13 = "absolute"
scale_x13 = "640"
scale_type_y13 = "absolute"
scale_y13 = "480"
shader14 = "shaders_slang/crt/shaders/guest/advanced/bloom_vertical.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
alias14 = "BloomPass"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "absolute"
scale_x14 = "640"
scale_type_y14 = "absolute"
scale_y14 = "480"
shader15 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced-ntsc.slang"
filter_linear15 = "true"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = ""
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "1.000000"
scale_type_y15 = "viewport"
scale_y15 = "1.000000"
shader16 = "shaders_slang/crt/shaders/guest/advanced/deconvergence-ntsc.slang"
filter_linear16 = "true"
wrap_mode16 = "clamp_to_border"
mipmap_input16 = "false"
alias16 = ""
float_framebuffer16 = "false"
srgb_framebuffer16 = "false"
scale_type_x16 = "viewport"
scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
ntscsignal = "1.000000"
avalue = "0.000000"
bvalue = "0.000000"
ccvalue = "3.579495"
g_crtgamut = "1.000000"
g_vignette = "0.000000"
g_cntrst = "0.400000"
ntsc_scale = "1.619999"
SHARPEN = "2.000000"
blendMode = "0.000000"
SGPT_BLEND_OPTION = "2.000000"
SGPT_BLEND_LEVEL = "0.000000"
bloom = "-0.700000"
halation = "0.100000"
gamma_c = "1.360000"
brightboost = "1.300000"
brightboost1 = "1.250000"
gsl = "-1.000000"
h_sharp = "1.100001"
s_sharp = "1.500000"
ring = "0.100000"
warpX = "0.050000"
warpY = "0.070000"
csize = "0.080000"
bsize1 = "0.300000"
shadowMask = "10.000000"
maskstr = "1.000000"
slotmask = "1.000000"
slotmask1 = "1.000000"
slotwidth = "4.000000"
double_slot = "2.000000"
mclip = "0.350000"
gamma_out = "2.000000"
addnoised = "-0.100000"
noiseresd = "1.000000"
noisetype = "1.000000"
post_br = "1.100000"
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"
2 Likes