Please show off what crt shaders can do!

More images: https://imgur.com/gallery/7H9Q4kh

Reshade files: https://drive.google.com/drive/folders/1NaLeRqm-gLJ5ry_te5Oah6niSCBaA5iN?usp=sharing

5 Likes

@hagelslag5 Beautiful setting! I don’t particularly like to simulate the curvature of the screen, but the look was charming! I remember adjusting the sharpness of the TV to look like this.

1 Like

Are you using any retroarch shaders with this?

Yes. I was using Retroarch’s crt-geom to get the curvature. Though there is a Reshade port of crt-geom as well.

1 Like

Here’s a great reference image. This is an actual CRT connected to what is obviously an RGB modded NES.

6 Likes

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 = "1.000000"
shader1 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-prep-intro.slang"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
float_framebuffer1 = "true"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.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_CURVATURE_2D_SCALE_LONG_AXIS = "0.000000"
HSM_CURVATURE_2D_SCALE_SHORT_AXIS = "0.000000"
HSM_TUBE_BLACK_EDGE_THICKNESS = "300.000000"
HSM_BZL_USE_INDEPENDENT_SCALE_AND_CURVATURE = "1.000000"
DG_WHITE_POINT_TEMP = "7504.000000"
GDV_BRIGHT_BOOST_DARK_COLORS = "1.300000"
GDV_BRIGHT_BOOST_BRIGHT_COLORS = "1.300000"
GDV_SCANLINE_TYPE = "2.000000"
GDV_SCANLINE_1_2_SATURATION = "1.000000"
GDV_SCANLINE_SHAPE_CENTER_HIGH = "5.000000"
GDV_SCANLINE_SHAPE_EDGES_LOW = "15.000000"
GDV_SCANLINE_DARK_BEAM_SIZE_MIN = "1.500000"
GDV_SCANLINE_BRIGHT_BEAM_SIZE_MAX = "1.000000"
GDV_SCANLINE_OVERGROWN_BRIGHT_BEAM = "0.000000"
GDV_PVM_LIKE_COLORS = "0.000000"
GDV_HORIZONTAL_SHARPNESS = "4.000000"
GDV_SUBTRACTIVE_SHARPNESS = "0.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/BackgroundImage_Carbon_3840x2160.png"
BackgroundImage_linear = "true"
BackgroundImage_wrap_mode = "clamp_to_border"
BackgroundImage_mipmap = "false"
BackgroundVertImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/BackgroundImage_Carbon_3840x2160.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"
4 Likes

Hi @Nesguy, I’m noticing that your preset is a full preset (with all the passes) instead of a simple preset (only a reference with changed parameters).

I would strongly suggest especially with the Mega Bezel to use simple presets in the save menu, otherwise when the shader updates later in the future your preset will break or not work as expected.

It also has the additional benefit of a very simple preset to look at.

You end up with a file which looks something like this

#reference :/shaders/shaders_slang/bezel/Mega_Bezel/Presets/MBZ__2__STANDARD.slangp
HSM_CURVATURE_2D_SCALE_LONG_AXIS = "0.000000"
HSM_CURVATURE_2D_SCALE_SHORT_AXIS = "0.000000"
HSM_TUBE_BLACK_EDGE_THICKNESS = "300.000000"
HSM_BZL_USE_INDEPENDENT_SCALE_AND_CURVATURE = "1.000000"
DG_WHITE_POINT_TEMP = "7504.000000"
GDV_BRIGHT_BOOST_DARK_COLORS = "1.300000"
GDV_BRIGHT_BOOST_BRIGHT_COLORS = "1.300000"
GDV_SCANLINE_TYPE = "2.000000"
GDV_SCANLINE_1_2_SATURATION = "1.000000"
GDV_SCANLINE_SHAPE_CENTER_HIGH = "5.000000"
GDV_SCANLINE_SHAPE_EDGES_LOW = "15.000000"
GDV_SCANLINE_DARK_BEAM_SIZE_MIN = "1.500000"
GDV_SCANLINE_BRIGHT_BEAM_SIZE_MAX = "1.000000"
GDV_SCANLINE_OVERGROWN_BRIGHT_BEAM = "0.000000"
GDV_PVM_LIKE_COLORS = "0.000000"
GDV_HORIZONTAL_SHARPNESS = "4.000000"
GDV_SUBTRACTIVE_SHARPNESS = "0.000000"

Note that this is a feature which was added in Retroarch V1.9.1

6 Likes

@Duimon

I’m liking your TV1 overlay, but is there an easy way to make it not overlap the bezel in the bezel shader? Or do I need to edit the image and remove the bezel? Do you have a version that’s just the speakers on the sides of the bezel?

2 Likes

There is a TV1 graphic and preset in my repo. No need to use the overlay. Essentially it is just a simple edit to the background image path and color adjustment on the bezel.

3 Likes

Some damn witchcraft here, definitely will be borrowing this trick.

3 Likes

I like some aspects of crt Royale but it lacks contrast and is slow to load. I mimicked what I like in Guest-Advanced for a fuzzy, sparkly, glowy shader. I let the brights blob together but kept a hint of the mask. I like what is does in Dreamcast games as well.

11 Likes

Post settings please :grin:

1 Like

One thing I’ve neglected so far in emulators is paying attention to how the physical LCD screen plays tricks with the content when conveying effects. Masking pixels with a CRT shader is one thing in trying to recreate the original visual experience. But you also need to tinker with gamma, brightness and contrast, as many connoisseurs are probably aware.

Below is a screenshot straight from a GBA emulator, and also a camera capture of how it looks to me that helps emphasize the point I’m making. The water is actually just homogenous blue with random 2-5 pixel long “reflection” lines. But depending on the viewing angles there’s a neat gamma gradient illusion where the two different blues mix together. Left half is with ReShade off and right half is with CRT Royale+vibrance shader enabled which I think contributes to the effect. Game is Super Robot Wars J.

3 Likes

Very Nice, I really like this!

I’d love to make a preset for this for the Mega Bezel sometime for those that really like Royale. Gotta get GDV ADV into the Mega Bezel first though :slight_smile:

4 Likes

Can you share your settings? This aspect looks very very good! Amazing!

Here are my settings. I’m not sure how to get the shader “simple settings” to work as it will just save a single line referencing my preset name and not the elements that make it up. So here is the not simple version:

shaders = "12"
shader0 = "shaders_slang/sharpen/shaders/fast-sharpen.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/misc/grade.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 = "false"
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 = "false"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "PrePass"
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/avg-lum.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "true"
alias4 = "AvgLumPass"
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/guest/advanced/linearize.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "LinearizePass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders_slang/crt/shaders/guest/advanced/gaussian_horizontal.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "false"
srgb_framebuffer6 = "false"
scale_type_x6 = "viewport"
scale_x6 = "0.500000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "GlowPass"
float_framebuffer7 = "false"
srgb_framebuffer7 = "false"
scale_type_x7 = "viewport"
scale_x7 = "0.500000"
scale_type_y7 = "viewport"
scale_y7 = "0.500000"
shader8 = "shaders_slang/crt/shaders/guest/advanced/bloom_horizontal.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = ""
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/bloom_vertical.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = "BloomPass"
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/crt-guest-advanced.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = ""
float_framebuffer10 = "false"
srgb_framebuffer10 = "false"
scale_type_x10 = "viewport"
scale_x10 = "1.000000"
scale_type_y10 = "viewport"
scale_y10 = "1.000000"
shader11 = "shaders_slang/crt/shaders/guest/advanced/deconvergence.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = ""
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "viewport"
scale_x11 = "1.000000"
scale_type_y11 = "viewport"
scale_y11 = "1.000000"
SHARPEN = "0.150000"
CONTR = "0.250000"
g_crtgamut = "0.000000"
g_space_out = "-1.000000"
g_vignette = "0.000000"
wp_temperature = "7004.000000"
LUT_Size1 = "32.000000"
LUT_Size2 = "32.000000"
LUTLOW = "12.000000"
interm = "4.000000"
iscan = "0.100000"
SIZEH = "10.000000"
SIGMA_H = "2.400000"
SIZEV = "1.000000"
SIGMA_V = "0.500000"
SIGMA_VB = "0.550000"
bogus_brightness = "1.000000"
glow = "0.010000"
bloom = "1.000000"
halation = "0.450000"
brightboost = "2.999999"
brightboost1 = "1.250000"
bogus_scanline = "1.000000"
scanline2 = "10.000000"
beam_min = "1.799999"
beam_max = "0.900000"
s_sharp = "0.000000"
smart_ei = "2.000000"
shadowMask = "2.000000"
maskDark = "0.400000"
mcut = "1.550000"
mask_gamma = "1.699999"
slotmask = "0.900000"
slotwidth = "3.000000"
mclip = "0.700000"
deconrr = "-0.500000"
deconrg = "0.500000"
decons = "0.250000"
deconsmooth = "0.250000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron1.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron2.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/crt/shaders/guest/lut/other1.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
SamplerLUT4 = "shaders_slang/crt/shaders/guest/lut/custom_lut.png"
SamplerLUT4_linear = "true"
SamplerLUT4_wrap_mode = "clamp_to_border"
SamplerLUT4_mipmap = "false"
7 Likes

First thing to mention is the simple preset feature is only in 1.9.1 and later.

The way saving a simple preset works is you load the base preset, change some parameter values then do save with Simple Presets set to ON. It will then save the file with the reference line as well as the parameter lines.

If you load a preset with all the passes in it like this which already has the settings in it, then save it as a simple preset there will be no parameters in the file because no parameters have been changed relative to the loaded preset.

To turn an existing full preset into a simple preset all you need to do is create a new file, place the reference line in it, then add the parameter lines into it like this

#reference ":/shaders/shaders_slang/crt/crt-guest-dr-venom2.slangp"
SHARPEN = "0.150000"
CONTR = "0.250000"
g_crtgamut = "0.000000"
g_space_out = "-1.000000"
g_vignette = "0.000000"

But it looks like from your preset is a custom preset with a couple different passes at the beginning (fast-sharpen.slang & grade.slang)

So to use a simple preset with this you would need to save this full preset somewhere, then load the preset in retroarch, make some parameter changes and save a new simple preset.

Edit:

One other thing to mention is that if you change anything other than parameters (passes, pass settings) then even if you choose simple presets when it is saved it will save a full preset with all the passes.

Here’s the doc which explains a bit Shaders - Libretro Docs

4 Likes

Thanks, I’ll give that a try.

1 Like

So I finally upgraded to the advanced grade shader to give it a try and the first thing I loved about it was the interlacing downsampling, now 2D dreamcast games look way better.

Retro-Arch-AArch64-20210505-173457

Retro-Arch-AArch64-20210505-161405

Retro-Arch-AArch64-20210505-154746

Retro-Arch-AArch64-20210505-173720

Retro-Arch-32-bit-20210505-165007

Retro-Arch-AArch64-20210505-162357

Retro-Arch-AArch64-20210505-172342

Retro-Arch-AArch64-20210505-165846

Here’s another with downsampling enabled

Retro-Arch-AArch64-20210505-170413

Finally here’s one thing I’ve been adding into my shader mixes for a while now, the Composite Sharp parameter from the crtsim shader. That parameter added to the mix with both grade and the glass shader adds the cherry on top for me. I forgot which user here used it first but I’ve been adding that to my chain for a while now, here’s an example of what it does.

First here’s my guest shader with the composite disabled:

Retro-Arch-AArch64-20210505-174755

Now here it is enabled default at 0.20:

Retro-Arch-AArch64-20210505-174819

Then finally here it is cranked up a notch at 0.40:

Retro-Arch-AArch64-20210505-174859

You can see how it alters the image. Maybe some of you will like it if you play around with it.

shaders = "11"
shader0 = "shaders_slang/crt/shaders/crtsim/composite.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/misc/grade.slang"
filter_linear1 = "true"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "PrePass"
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/avg-lum.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "true"
alias2 = "AvgLumPass"
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/linearize.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "LinearizePass"
float_framebuffer3 = "true"
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/gaussian_horizontal.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = ""
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "absolute"
scale_x4 = "800"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "GlowPass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "absolute"
scale_x5 = "800"
scale_type_y5 = "absolute"
scale_y5 = "600"
shader6 = "shaders_slang/crt/shaders/guest/advanced/bloom_horizontal.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "absolute"
scale_x6 = "800"
scale_type_y6 = "absolute"
scale_y6 = "600"
shader7 = "shaders_slang/crt/shaders/guest/advanced/bloom_vertical.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "BloomPass"
float_framebuffer7 = "true"
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/crt-guest-advanced.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = ""
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "viewport"
scale_x8 = "1.000000"
scale_type_y8 = "viewport"
scale_y8 = "1.000000"
shader9 = "shaders_slang/crt/shaders/guest/advanced/deconvergence.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = ""
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "viewport"
scale_x9 = "1.000000"
scale_type_y9 = "viewport"
scale_y9 = "1.000000"
shader10 = "shaders_slang/misc/glass.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = ""
float_framebuffer10 = "false"
srgb_framebuffer10 = "false"
scale_type_x10 = "source"
scale_x10 = "1.000000"
scale_type_y10 = "source"
scale_y10 = "1.000000"
Tuning_Persistence_R = "0.000000"
Tuning_Persistence_G = "0.000000"
Tuning_Persistence_B = "0.000000"
Tuning_Bleed = "0.000000"
Tuning_Artifacts = "0.000000"
NTSCLerp = "0.000000"
NTSCArtifactScale = "0.000000"
g_space_out = "3.000000"
g_mid = "1.000000"
wp_temperature = "8004.000000"
g_sat = "0.600000"
g_lift = "-0.150000"
LUT_Size1 = "32.000000"
LUT_Size2 = "32.000000"
lsmooth = "0.900000"
GAMMA_INPUT = "3.499999"
interm = "5.000000"
bloom = "0.900000"
halation = "0.450000"
gamma_c = "1.500000"
brightboost = "2.000000"
brightboost1 = "3.000000"
scanline1 = "15.000000"
scanline2 = "5.000000"
beam_min = "2.499999"
beam_size = "0.700000"
h_sharp = "3.000001"
s_sharp = "1.000000"
smart_ei = "20.000000"
ei_limit = "12.000000"
sth = "1.000000"
BLOOM = "1.000000"
csize = "0.010000"
warpX = "0.030000"
warpY = "0.040000"
shadowMask = "3.000000"
maskstr = "1.000000"
maskDark = "0.000000"
maskLight = "1.000000"
mcut = "0.250000"
mask_gamma = "3.499999"
mclip = "0.900000"
gamma_out = "3.499999"
deconrr = "0.500000"
deconrg = "-0.500000"
deconrb = "-0.500000"
deconrry = "0.500000"
deconrgy = "-0.500000"
deconrby = "0.500000"
deconsmooth = "0.500000"
g_reflgrain = "0.700000"
g_reflstr = "0.100000"
g_fresnel = "0.500000"
gz = "1.100000"
gzr = "1.000000"
gzg = "1.000000"
goyr = "0.000000"
goyg = "0.000000"
TO = "0.000000"
ASAT = "1.000000"
PER = "2.000000"
temperature = "8004.000000"
textures = "MaskTexture;NTSCArtifactSampler;shadowMaskSampler;SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
MaskTexture = "shaders_slang/crt/shaders/mame_hlsl/resources/aperture-grille.png"
MaskTexture_wrap_mode = "clamp_to_border"
MaskTexture_mipmap = "false"
NTSCArtifactSampler = "shaders_slang/crt/shaders/crtsim/artifacts.png"
NTSCArtifactSampler_linear = "true"
NTSCArtifactSampler_wrap_mode = "clamp_to_border"
NTSCArtifactSampler_mipmap = "false"
shadowMaskSampler = "shaders_slang/crt/shaders/crtsim/mask.png"
shadowMaskSampler_linear = "true"
shadowMaskSampler_wrap_mode = "clamp_to_border"
shadowMaskSampler_mipmap = "false"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron1.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron2.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/crt/shaders/guest/lut/other1.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
SamplerLUT4 = "shaders_slang/crt/shaders/guest/lut/custom_lut.png"
SamplerLUT4_linear = "true"
SamplerLUT4_wrap_mode = "clamp_to_border"
SamplerLUT4_mipmap = "false"

Edit: So after Guest updated the shader the other day I went and made a small tweak, I raised the Composite Sharp parameter from 0.20 to 0.30 (I go back and forth between these two so pick which one you like better) and Halation Strength from 0.40 to 0.45, I think it gives the overall image a nice boost in brightness and sharpness. Here’s a few before and after pics:

Retro-Arch-AArch64-20210509-082138

Retro-Arch-AArch64-20210509-082212

Retro-Arch-AArch64-20210509-083904

Retro-Arch-AArch64-20210509-083959

By the way for all 8/16 bit systems I turn on the Blargg NTSC Filter to Composite which can either be found within the core options itself or you can turn it on in the video options under Video Filter. This shader looks better overall with that filter turned on for those type of systems, for 32 bit and beyond it looks ok as is.

5 Likes

CRT Royale MMX4 on a CRT Monitor ( Viewsonic )

8 Likes