Mega Bezel Reflection Shader! - Feedback and Updates

Yeah I still don’t get it :slight_smile:

Edge curvature scale multiplier changes the shape of the bezel, too :thinking:

Am I seeing all the right options?

2 Likes

Yup that’s right image

By default the bezel follows this, It seemed like the best default behavior to have everything follow by default.

If you don’t want the bezel to follow an option would be to use the Use Independent Scale & Curvature parameter, we might want to break this into two parameters, use independent scale and use independent curvature. Because in your case I think you probably only want independent curvature.

If it was generally better to have the screen black edge not affect the bezel curvature we could go that direction as well, but we’d have to see what works better in the general case.

2 Likes

With independent scale & curvature enabled, edge curvature scale multiplier just changes the shapes of the bezel

also, I enabled simple preset, but I’m still getting this :man_shrugging:

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_CURVATURE_2D_SCALE_LONG_AXIS = "0.000000"
HSM_CURVATURE_2D_SCALE_SHORT_AXIS = "0.000000"
HSM_TUBE_BLACK_EDGE_CURVATURE_SCALE = "500.000000"
HSM_TUBE_BLACK_EDGE_THICKNESS = "150.000000"
HSM_BZL_USE_INDEPENDENT_SCALE_AND_CURVATURE = "1.000000"
HSM_BZL_WIDTH = "70.000000"
HSM_BZL_HEIGHT = "60.000000"
HSM_FRM_THICKNESS = "150.000000"
HSM_FRM_THICKNESS_SCALE_X = "120.000000"
DG_WHITE_POINT_TEMP = "8004.000000"
GDV_GLOW_STRENGTH = "0.010000"
GDV_BLOOM_STRENGTH = "0.050000"
GDV_BRIGHT_BOOST_BRIGHT_COLORS = "1.400000"
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"
GDV_MASK_0_7_STRENGTH = "0.400000"
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"
1 Like

I’ll have to check this out, I haven’t tested these two together yet

Are you saving over top of the preset you loaded?

Your steps to do this should be:

  • Open retroarch and a game
  • Load one of the Mega Bezel presets
  • Make your parameter changes
  • Save your preset
1 Like

I saw some recent screenshots someone posted, and it seems to me that the LCD-GRID V2 shader doesn’t represent the 3DS screen very well.

I’m not totally sure but I’m thinking that Guest-venom with maybe a Trinitron or aperture grill mask might represent it better (and have less artifacts)

1 Like

maybe one of the aperture grille masks (I’m partial to 7 because of how forgiving it is of scale/resolution/subpixels), plus some fiddling with the parameters. At 4k you might have to double the mask phosphor width or whatever. I think you need to max out the sharpness, too. There’s also something weird going on with some of the scanlines (probably because they’re not really scanlines), but the gap lines are sometimes brighter than the “active” lines, like in the red text.

Also I tried black edge curvature with bezel independent scale and curvature off and on, and neither one would change the black edge curvature. What settings did you use in the example shot you posted? Thanks!

2 Likes

Are we sure that isn’t a screenshot of hacked 3DS running a CRT shader? I’ve never seen an LCD look so much like a CRT.

2 Likes

That’s a good point, it’s possible it is…

One thing I definitely don’t see at this size is the red, green & blue sub pixel elements.

I’ll ask the person who posted it…

Edit:

I just checked their post and it’s because it’s in 2d mode with what they call the parallax barrier, this page explains it

https://gbatemp.net/threads/guide-why-pixels-look-different-between-2d-and-3d-modes.482683/

So no shader is just a 3ds in 2d mode which means all the pixels are seen by both eyes, and the lcd sub pixels are arranged vertically rather than horizontally. I think it might be the blue sub-pixel which contributes to the scanline look

1 Like

I set the main screen curvature to 10 instead of 100 and then increased the black edge curvature multiplier to a lot, maybe 500 or 1000

1 Like

. It’s a multiplier, so curvature can’t be at 0, which is what I was doing before :man_facepalming:

I think this is pretty realistic, as ideally the CRT was calibrated so that straight lines appeared straight despite the curved surface. I’m still nitpicking the bezel frame corners and a few other things but overall I think it looks great :smiley:

6 Likes

While your messing with the parameters check out the Reflection Corner inner and outer spread. It’s really pretty inspiring the attention to detail that HSM has put in this thing!

3 Likes

Is it possible the new basic DS shader is darker as well?

Two screens attached. The darker one is just the new shader with a border.

1 Like

Can you take this and turn on the A/B Compare and take a snapshot so I can see the difference between the core output?

[ CRT vs ORIGINAL A/B COMPARE ]________
    Compare ON

I… think… I messed up here. This comparison shot is much lighter.

I may well have accidntally loaded a different shader by accident. Sorry!

2 Likes

yeah, the 3DS top screen is remarkably CRT like. It looks great in motion. Especially for older VC games

I’ve never noticed a grid pattern on mine.

1 Like

hi

Can the reflection shaders be installed on retroarch android? Please tell me step by step how this works.

thx

1 Like

I have no idea how to install it but I can say that the only Android device that has any chance at running it is the NVIDIA Shield TV Pro. :slightly_frowning_face:

1 Like

I see!

But installing bezels like from orionsangel, is this possible on retroarch on android? I can’t find how to do it

1 Like

Yes, it is possible. The method varies greatly depending on which Android device you are using. I use them on all my Android devices. Your best bet is to search for help on your specific device.

It can also be a real pain and involve a LOT of manual editing of configuration files.

Even on the PC it is difficult and tedious. That is why @HyperspaceMadness developed this shader in the first place.

If and when you are successful I do have a fairly complete Overlays collection in my repo. Depending on your device you may want to convert the graphics from 4K to 1920x1080.

Here is a link to the repo.

https://github.com/Duimon/Retroarch-Overlays

They are in a “Logo” folder.

If you find it impossible to find the help you are looking for I can help you search for it.

It would be appropriate to PM me, since it is a bit off topic.

2 Likes

image

Mega Bezel is updated to V 0.9.10 2021-05-06

Changes:

  • Split The bezel scale and curvature independence into:
    • 1 Parameter for Scale Independence
    • 1 Parameter for Curvature Independence
  • Edge of screen now stays locked in place so it does not expand with curvature
    • This was causing uneven screen black edge thickness
  • Screen Black Edge Curvature now has an option to affect or not the bezel
    • Basically you turn this off if you want to adjust the screen black line without affecting the bezel
  • Fixed black edge curvature always affecting bezel even when independent
  • Fixed LED showing up on the screen in STANDARD presets
11 Likes