Please show off what crt shaders can do!

Yeah if you want this you can turn off the background & bezel stuff and turn on integer scale, and set the integer scale minimum border height to negative and it should do the integer scaling you are looking for, basically a bit larger than the screen height. .

If you would like the Mega Bezel stack of shaders but without the reflection and bezel we can make a preset like this, it would run much faster than with the reflection & bezel.

5 Likes

there’s one thing those shaders don’t have: the RGB preset of blargg’s NTSC.

I thought the same thing; I don’t know why it exists, but it looks great. Now I can’t play anything without it. Is it possible to recreate it with the existing NTSC shaders?

@guest.r @HyperspaceMadness

This seems like an opportunity for further improvement, maybe you’d be interested? It seems like the RGB filter is doing everything we want subtractive sharpness to do, but without the pesky artifacts.

Yes, that would be great.

5 Likes

I’ve got a preset coming for you… :grin:

The 4.995 vertical integer scale is really just 5, same thing with the 1119, it’s really 1120

This is also a 200% performance improvement compared to the STANDARD version

11 Likes

Trying to match the brightness of the original, unshaded image. This is also a good screen for demonstrating why crt shaders matter.

Does anyone know why, even with simple preset enabled, I’m still getting the following?

shaders = "30"
shader0 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-prep-info-cache-standard.slang"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = "InfoCachePass"
float_framebuffer0 = "true"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "0.062500"
shader1 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-prep-intro.slang"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "IntroPass"
float_framebuffer1 = "true"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "16.000000"
shader2 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-dogway/hsm-grade.slang"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "ColorCorrectPass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
shader3 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-mdapt/hsm-mdapt-pass0.slang"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = ""
float_framebuffer3 = "false"
srgb_framebuffer3 = "false"
shader4 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-mdapt/hsm-mdapt-pass1.slang"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = ""
float_framebuffer4 = "false"
srgb_framebuffer4 = "false"
shader5 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-mdapt/hsm-mdapt-pass2.slang"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = ""
float_framebuffer5 = "false"
srgb_framebuffer5 = "false"
shader6 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-mdapt/hsm-mdapt-pass3.slang"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "false"
srgb_framebuffer6 = "false"
shader7 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-mdapt/hsm-mdapt-pass4.slang"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = ""
float_framebuffer7 = "false"
srgb_framebuffer7 = "false"
shader8 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-sgenpt-mix/hsm-sgenpt-mix.slang"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = ""
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
shader9 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-ps1dither/hsm-PS1-Undither-BoxBlur.slang"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = "refpass"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
shader10 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-scalefx/hsm-scalefx-pass0.slang"
filter_linear10 = "false"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = "scalefx_pass0"
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/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-scalefx/hsm-scalefx-pass1.slang"
filter_linear11 = "false"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = ""
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/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-scalefx/hsm-scalefx-pass2.slang"
filter_linear12 = "false"
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "false"
alias12 = ""
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-scalefx/hsm-scalefx-pass3.slang"
filter_linear13 = "false"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "false"
alias13 = ""
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-scalefx/hsm-scalefx-pass4.slang"
filter_linear14 = "false"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
alias14 = ""
float_framebuffer14 = "false"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "3.000000"
scale_type_y14 = "source"
scale_y14 = "3.000000"
shader15 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-gtu/hsm-gtu-pass1.slang"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = ""
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/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-gtu/hsm-gtu-pass2.slang"
filter_linear16 = "false"
wrap_mode16 = "clamp_to_border"
mipmap_input16 = "false"
alias16 = ""
float_framebuffer16 = "true"
srgb_framebuffer16 = "false"
scale_type_x16 = "source"
scale_x16 = "1.000000"
scale_type_y16 = "source"
scale_y16 = "1.000000"
shader17 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-phosphor-persistence.slang"
filter_linear17 = "false"
wrap_mode17 = "clamp_to_border"
mipmap_input17 = "false"
alias17 = "PersistencePass"
float_framebuffer17 = "false"
srgb_framebuffer17 = "false"
scale_type_x17 = "source"
scale_x17 = "1.000000"
scale_type_y17 = "source"
scale_y17 = "1.000000"
shader18 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-guest-linearize.slang"
filter_linear18 = "false"
wrap_mode18 = "clamp_to_border"
mipmap_input18 = "false"
alias18 = "LinearizePass"
float_framebuffer18 = "true"
srgb_framebuffer18 = "false"
scale_type_x18 = "source"
scale_x18 = "1.000000"
scale_type_y18 = "source"
scale_y18 = "1.000000"
shader19 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-guest-linearize_scanlines.slang"
filter_linear19 = "true"
wrap_mode19 = "clamp_to_border"
mipmap_input19 = "false"
alias19 = ""
float_framebuffer19 = "true"
srgb_framebuffer19 = "false"
shader20 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-get-linearize-pass.slang"
filter_linear20 = "true"
wrap_mode20 = "clamp_to_border"
mipmap_input20 = "true"
alias20 = ""
float_framebuffer20 = "false"
srgb_framebuffer20 = "false"
scale_type_x20 = "absolute"
scale_x20 = "320"
scale_type_y20 = "absolute"
scale_y20 = "320"
shader21 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-guest-blur_horiz.slang"
filter_linear21 = "true"
wrap_mode21 = "clamp_to_border"
mipmap_input21 = "false"
alias21 = "BR_MappingPass"
float_framebuffer21 = "true"
srgb_framebuffer21 = "false"
scale_type_x21 = "source"
scale_x21 = "1.000000"
scale_type_y21 = "source"
scale_y21 = "1.000000"
shader22 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-guest-blur_vert.slang"
filter_linear22 = "true"
wrap_mode22 = "clamp_to_border"
mipmap_input22 = "true"
alias22 = "GlowPass"
float_framebuffer22 = "true"
srgb_framebuffer22 = "false"
scale_type_x22 = "source"
scale_x22 = "1.000000"
scale_type_y22 = "source"
scale_y22 = "1.000000"
shader23 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-crt-guest-dr-venom-with-scaling.slang"
filter_linear23 = "true"
wrap_mode23 = "clamp_to_border"
mipmap_input23 = "true"
alias23 = "BR_CRTPass"
float_framebuffer23 = "false"
srgb_framebuffer23 = "false"
scale_type_x23 = "viewport"
scale_x23 = "1.000000"
scale_type_y23 = "viewport"
scale_y23 = "1.000000"
shader24 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-linearize-crt.slang"
filter_linear24 = "true"
wrap_mode24 = "clamp_to_border"
mipmap_input24 = "true"
alias24 = "BR_MirrorLowResPass"
float_framebuffer24 = "false"
srgb_framebuffer24 = "false"
scale_type_x24 = "absolute"
scale_x24 = "800"
scale_type_y24 = "absolute"
scale_y24 = "600"
shader25 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-blur-outside-screen-horiz.slang"
filter_linear25 = "true"
wrap_mode25 = "clamp_to_border"
mipmap_input25 = "true"
alias25 = ""
float_framebuffer25 = "false"
srgb_framebuffer25 = "false"
shader26 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-blur-outside-screen-vert.slang"
filter_linear26 = "true"
wrap_mode26 = "clamp_to_border"
mipmap_input26 = "false"
alias26 = "BR_MirrorBlurredPass"
float_framebuffer26 = "false"
srgb_framebuffer26 = "false"
shader27 = "shaders_slang/blurs/blur9x9.slang"
filter_linear27 = "true"
wrap_mode27 = "clamp_to_border"
mipmap_input27 = "true"
alias27 = "BR_MirrorReflectionDiffusedPass"
float_framebuffer27 = "false"
srgb_framebuffer27 = "false"
scale_type_x27 = "absolute"
scale_x27 = "128"
scale_type_y27 = "absolute"
scale_y27 = "128"
shader28 = "shaders_slang/blurs/blur9x9.slang"
filter_linear28 = "true"
wrap_mode28 = "clamp_to_border"
mipmap_input28 = "true"
alias28 = "BR_MirrorFullscreenGlowPass"
float_framebuffer28 = "false"
srgb_framebuffer28 = "false"
scale_type_x28 = "absolute"
scale_x28 = "12"
scale_type_y28 = "absolute"
scale_y28 = "12"
shader29 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-bezel-reflection-standard.slang"
wrap_mode29 = "clamp_to_border"
mipmap_input29 = "false"
alias29 = "BR_CRTAndReflectionPass"
float_framebuffer29 = "true"
srgb_framebuffer29 = "false"
scale_type_x29 = "viewport"
scale_x29 = "1.000000"
scale_type_y29 = "viewport"
scale_y29 = "1.000000"
HSM_ASPECT_RATIO_MODE = "6.000000"
HSM_CURVATURE_MODE = "-1.000000"
HSM_COLOR_CRT_GAMMA = "2.400000"
HSM_INTRO_WHEN_TO_SHOW = "0.000000"
DG_WHITE_POINT_TEMP = "7004.000000"
GTU_MODE = "1.000000"
GST_GLOW_GRADE = "0.000000"
GDV_GLOW_STRENGTH = "0.000000"
GDV_BLOOM_STRENGTH = "0.000000"
GDV_BRIGHT_BOOST_DARK_COLORS = "2.500000"
GDV_BRIGHT_BOOST_BRIGHT_COLORS = "2.499998"
GDV_SCANLINE_1_2_SATURATION = "1.000000"
GDV_SCANLINE_DARK_BEAM_SIZE_MIN = "1.500000"
GDV_SCANLINE_BRIGHT_BEAM_SIZE_MAX = "1.000000"
GDV_SCANLINE_OVERGROWN_BRIGHT_BEAM = "1.000000"
GDV_SCANLINE_SPIKE_REMOVAL = "0.000000"
GDV_PVM_LIKE_COLORS = "0.000000"
GDV_HORIZONTAL_SHARPNESS = "5.000000"
GDV_SUBTRACTIVE_SHARPNESS = "0.000000"
GDV_MASK_TYPE = "3.000000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;IntroImage;ScreenPlacementImage;ColoredGelImage;TubeStaticReflectionImage;BackgroundImage;BackgroundVertImage;ReflectionMaskImage;DecalImage;NightLightingImage;FrameTextureImage;LEDImage;TopLayerImage"
SamplerLUT1 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/lut/16.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/lut/64.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/lut/other1_32.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
IntroImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/IntroImage_MegaBezelLogo.png"
IntroImage_linear = "true"
IntroImage_wrap_mode = "clamp_to_border"
IntroImage_mipmap = "false"
ScreenPlacementImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/Placeholder_Transparent_16x16.png"
ScreenPlacementImage_linear = "false"
ScreenPlacementImage_wrap_mode = "clamp_to_border"
ScreenPlacementImage_mipmap = "false"
ColoredGelImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/Placeholder_Transparent_16x16.png"
ColoredGelImage_linear = "true"
ColoredGelImage_wrap_mode = "clamp_to_border"
ColoredGelImage_mipmap = "false"
TubeStaticReflectionImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/TubeGlassOverlayImage_3840x2160.png"
TubeStaticReflectionImage_linear = "true"
TubeStaticReflectionImage_wrap_mode = "clamp_to_border"
TubeStaticReflectionImage_mipmap = "false"
BackgroundImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/TV1.png"
BackgroundImage_linear = "true"
BackgroundImage_wrap_mode = "clamp_to_border"
BackgroundImage_mipmap = "false"
BackgroundVertImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/TV1.png"
BackgroundVertImage_linear = "true"
BackgroundVertImage_wrap_mode = "clamp_to_border"
BackgroundVertImage_mipmap = "false"
ReflectionMaskImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/Placeholder_White_16x16.png"
ReflectionMaskImage_linear = "true"
ReflectionMaskImage_wrap_mode = "clamp_to_border"
ReflectionMaskImage_mipmap = "false"
DecalImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/Placeholder_Transparent_16x16.png"
DecalImage_linear = "true"
DecalImage_wrap_mode = "clamp_to_border"
DecalImage_mipmap = "false"
NightLightingImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/NightLighting_3840x2160.jpg"
NightLightingImage_linear = "true"
NightLightingImage_wrap_mode = "clamp_to_border"
NightLightingImage_mipmap = "false"
FrameTextureImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/FrameTexture_2800x2120.png"
FrameTextureImage_linear = "true"
FrameTextureImage_wrap_mode = "clamp_to_border"
FrameTextureImage_mipmap = "false"
LEDImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/Placeholder_Transparent_16x16.png"
LEDImage_linear = "true"
LEDImage_wrap_mode = "clamp_to_border"
LEDImage_mipmap = "false"
TopLayerImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/Placeholder_Transparent_16x16.png"
TopLayerImage_linear = "true"
TopLayerImage_wrap_mode = "clamp_to_border"
TopLayerImage_mipmap = "false"
5 Likes

How did you load then save this preset? and are you saving a per-game preset?

Or are you saving a specific file?

Also can you show your log?

If you have Simple Presets on and you have the log enabled to show debug info it will actually print out in the log why it saved a full preset.

5 Likes

Figured it out, thanks :slight_smile:

Mask 7 is really the best for preserving contrast, looks amazing on the plasma.

Also, compare the texture to this shot of a CRT from the movie “Earth Girls Are Easy:”

#reference "shaders_slang/bezel/Mega_Bezel/Presets/MBZ__2__STANDARD.slangp"
HSM_ASPECT_RATIO_MODE = "6.000000"
HSM_CURVATURE_MODE = "-1.000000"
HSM_COLOR_BLACK_LEVEL = "0.000000"
HSM_INTRO_WHEN_TO_SHOW = "0.000000"
DG_WHITE_POINT_TEMP = "8004.000000"
GTU_MODE = "1.000000"
GDV_GLOW_STRENGTH = "0.000000"
GDV_BLOOM_STRENGTH = "0.000000"
GDV_BRIGHT_BOOST_DARK_COLORS = "2.999999"
GDV_BRIGHT_BOOST_BRIGHT_COLORS = "2.999998"
GDV_SCANLINE_TYPE = "1.000000"
GDV_SCANLINE_1_2_SATURATION = "1.000000"
GDV_SCANLINE_DARK_BEAM_SIZE_MIN = "1.600000"
GDV_SCANLINE_BRIGHT_BEAM_SIZE_MAX = "1.100000"
GDV_SCANLINE_SPIKE_REMOVAL = "0.000000"
GDV_PVM_LIKE_COLORS = "0.000000"
GDV_HORIZONTAL_SHARPNESS = "3.000000"
GDV_SUBTRACTIVE_SHARPNESS = "0.000000"
GDV_MASK_SIZE = "2.000000"
GDV_MASK_0_7_STRENGTH = "0.500000"

Just for fun, here’s another CRT closeup from the same movie. This one is a computer monitor.

6 Likes

New to this forum.

I’m having trouble finding my ideal CRT shader. I want one that adds subtle scanlines and can hide dithering, like in various Sega Genesis and SNES game, without blurring or distorting the image too much. So far the shader’s I’ve tried have either not worked at all, or they blur the image too much and make it unpleasant to look at.

Looking at some older posts on this forum, The dithering crt shader that hyllian was working on looked promising. Is that available anywhere or is it a preset included with the most recent version of Retroarch?

1 Like

This is in the most recent version of Retroarch, you might need to update your shaders through the UI. It’s called sgenpt it’s in

shaders\shaders_slang\dithering\sgenpt-mix.slangp

You can also try mdapt, if you want something more “surgical” it can blend the dithering checkerboards without affecting the rest of the image.

1 Like

Well guest.r shader can look mighty with some tweaking, even on 1080p.

4 Likes

Bahamut Lagoon is really weird.

2 Likes

Yes, in alot of ways XD.

Which mask is that, I’m dumb

1 Like

mask 7, doubled phosphor width. Mask strength 50. Looks very similar to a consumer Trinitron - see second image in this post.

2 Likes

mask 7 introduces some effect like greenify all grays on my computers. Also mask 5 introduces some artifacts here and there, talking about the old version of guest.r shader. So i am using 6. Actually i did some tests and 2, 4 and 6 should look great on 4k monitors.

The difference in contrast between mask 7 and the others is pretty amazing, the others look unplayably dull in comparison.

There is literally no green tint, I don’t know what you’re talking about. There’s no difference in tint in these two images.

Observe:

No mask:

Mask 7:

Just going back and forth between those on my OLED phone there is definitely a slight green tint to the second image.

Yeah I don’t understand how that’s even possible, though. Look at what it’s actually doing, it’s just darkening every other pixel.

edit: there’s a slight blue tint to both images, but that’s due to color temp correction.

2 Likes

There could be some practical theory behind. A good example is a conversion from colored image to BW, where RGB luma coefficients are to be considered, which again reflect perceptional properties. Display calibration or color alteration might add a notch to some tinting too. Crt shader masks in general aren’t considering luma coefficients, because this works nicest in general.

3 Likes

Post another image with a ramp of grays and no mask & mask 7 to compare. That image is just a pure white screen

1 Like

Also cobhc is using an OLED phone screen with some unknown (to us) subpixel pattern, which could be completely at fault for the tinting.

What kind of screens do you have? As to my understanding if it’s tinting grey like that white would have the same issue.

1 Like

I set color temp to ~6500K this time and disabled PVM colors; no green tint is present in the image itself. I think Syh might be right, this could be a subpixel thing.

Try doubling phosphor size and see if that still produces the green tint.