Mega Bezel Reflection Shader! - Feedback and Updates

For those of you using non 16x9 screens. Everyone of my ADV and STD presets that can possibly support it are now using the split scaling for the graphics and will automatically fit the screen.

Even 4x3 works. :grin:

If you switch to windowed mode and resize the window… it works well for some casual gaming off to the side. (To create a more productive environment. :wink:)


I honestly can’t even slightly understand how you guys can manage through all these shaders and graphics all this time :exploding_head:

If it wasn’t for true passion, I don’t think these amazing projects could ever gone this far and scale. I wouldn’t have think of a ‘thanks’ word would remain this bald to express an appreciation :smile:


I’m looking forward to this!

I’m not sure if it’s a placebo effect but I think I’m now noticing this GTU related “blurring” issue in my Computer Monitor Presets.

Even if I set the Opposite Direction Downsampling Blur to 0, I think I can see a slight blur in my Computer Monitor Raw Preset (which is probably my sharpest preset) in the Options Menu text in Lords of Thunder for TurboGrafx-CD whereas that preset was one of the first of mine to display the text in that menu crisply.

Turning GTU off completely makes the blur disappear and restores the crispness but it’s not as nice looking as before when it was still crisp but with Signal Resolution at 640. Maxing Signal Resolution to 1024 seemed to reduce or eliminate the blur as well. I use this setting to control harshness/aliasing in lower resolution games with higher contrast edges without introducing blur.

I’m going to back track through my Mega Bezel versions until I get back to where the aforementioned menu text was crisp using Computer Monitor Raw, which has the Signal Resolution set to 640.

I’m not trying to fix the issue using GTU settings because I know you said not to do that and that you’ll fix it in the Shader. I’m just trying to confirm whether this is a manifestation of that particular issue or something else, especially when I didn’t think my newest presets were being affected by this until recently.

Thanks again for your yeoman service to this cause, passion and community!

I don’t need it per say but it would be nice to have it formally preserved and made more accessible because of how “official” (authentic) it looks in its current state. I can see some users passing through who might dig that look and want to use it themselves.

As for this, I have a couple presets of my own that may or may not have been directly or indirectly influenced and inspired by these and other sets that you can checkout if you wish. They aim to replicate the imaginary line of CyberLab TV/Monitor models in my head that I use as my reference.


Mega Bezel is updated to V 0.9.093 2021-12-26 Rev 1


  • Negative Crop removed temporarily
    • I’m removing this temporarily while I add the compensation in the chain so it doesn’t add blurring to the crt shader

Download links and Install instructions are in the first post of this thread :slight_smile:



How do I replace the background layer with just solid black?

shaders = "18"
shader0 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm/hsm-prep-add-params-basic.slang"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
shader1 = "shaders_slang/stock.slang"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "DerezedPass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "true"
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/hsm-prep-info-cache-basic.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "InfoCachePass"
float_framebuffer2 = "true"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm/hsm-prep-intro-basic.slang"
filter_linear3 = "false"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "IntroPass"
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/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-custom-fast-sharpen.slang"
filter_linear4 = "false"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = ""
float_framebuffer4 = "false"
srgb_framebuffer4 = "true"
shader5 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-dogway/hsm-grade.slang"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = ""
float_framebuffer5 = "false"
srgb_framebuffer5 = "false"
shader6 = "shaders_slang/stock.slang"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = "PreCRTPass"
float_framebuffer6 = "false"
srgb_framebuffer6 = "false"
shader7 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-afterglow0.slang"
filter_linear7 = "false"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "AfterglowPass"
float_framebuffer7 = "false"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-pre-shaders-afterglow.slang"
filter_linear8 = "false"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "true"
alias8 = "PrePass"
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/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-avg-lum.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/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-interlace-and-linearize.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/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-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 = "800"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-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 = "800"
scale_type_y12 = "absolute"
scale_y12 = "600"
shader13 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-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 = "800"
scale_type_y13 = "absolute"
scale_y13 = "600"
shader14 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-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 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-crt-guest-advanced.slang"
filter_linear15 = "true"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = ""
float_framebuffer15 = "false"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "1.000000"
scale_type_y15 = "viewport"
scale_y15 = "1.000000"
shader16 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/hsm-deconvergence.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"
shader17 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm/hsm-prep-post-crt-basic.slang"
wrap_mode17 = "clamp_to_border"
mipmap_input17 = "false"
alias17 = "MBZ_PostCRTPass"
float_framebuffer17 = "false"
srgb_framebuffer17 = "false"
HSM_INT_SCALE_MODE = "1.000000"
HSM_CURVATURE_MODE = "-1.000000"
g_crtgamut = "0.000000"
g_vignette = "0.000000"
WP = "-100.000000"
glow = "-0.000000"
brightboost = "1.000000"
brightboost1 = "1.000000"
gsl = "2.000000"
scanline1 = "10.000000"
scanline2 = "12.000000"
beam_max = "1.300000"
scans = "1.000000"
spike = "0.000000"
h_sharp = "5.399999"
s_sharp = "0.000000"
maskstr = "1.000000"
mcut = "1.000000"
mclip = "0.000000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4;IntroImage;ScreenPlacementImage;ColoredGelImage;TubeStaticReflectionImage;BackgroundImage;BackgroundVertImage;NightLightingImage"
SamplerLUT1 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/lut/trinitron-lut.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/lut/inv-trinitron-lut.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/lut/nec-lut.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
SamplerLUT4 = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/hsm-guest/lut/ntsc-lut.png"
SamplerLUT4_linear = "true"
SamplerLUT4_wrap_mode = "clamp_to_border"
SamplerLUT4_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/Baked_Frame_Carbonfiber_Background.png"
BackgroundImage_linear = "true"
BackgroundImage_wrap_mode = "clamp_to_border"
BackgroundImage_mipmap = "false"
BackgroundVertImage = "shaders_slang/bezel/Mega_Bezel/shaders/HyperspaceMadness/textures/Baked_Frame_Carbonfiber_Background_Vert.png"
BackgroundVertImage_linear = "true"
BackgroundVertImage_wrap_mode = "clamp_to_border"
BackgroundVertImage_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"

You can probably replace this with a solid black *.png file. Other that there might also be an Opacity setting somewhere that controls it’s visibility.

Season’s Greetings! Since you’re here, what do you think of this? Does it pass your Pepsi challenge?


You can just set the Opacity of the Background image to 0, or swap the image with a new one.

You can do it this way, or through the UI HSM_BG_OPACITY = 0

Or you can use

HSM_GLOBAL_GRAPHICS_BRIGHTNESS = 0 to reduce the brightness of all the graphics down to 0

This is what you should use if you have one of these dim presets and you want to reduce the brightness of all the graphics.


If you don’t want to supply an image you can swap in one of the placeholder images that @HyperspaceMadness supplies with the shader. (i.e. “Placeholder_Black_16x16.png” or “Placeholder_Transparent_16x16.png”.)


The photos are quite blurry, can’t even really see the mask detail, so it’s hard to tell. These are low mask strength settings, though, so it’s not going to hold up in a close-up comparison. Also, with curvature you’re going to lose proper subpixel mapping.

The colors are a tad washed out/too bright compared to the PVM, but it’s really hard to judge these things by photos, could just be the camera doing that.

1 Like

Are these PVM bezels available somewhere??



Mega Bezel is updated to V 0.9.094 2021-12-27 Rev 1


  • Added Caching for the Debug Text so it won’t be so painfully slow
  • Add Dual Screen visibility param for tube effects for:
    • Screen Vignette
    • Monochrome
    • Colored Gel
    • Tube Reflection
    • Tube Diffuse
  • @cyber Updated Presets


Shader Package Approx. 15 MB

Extra Examples Package


  • You MUST use Retroarch Version 1.9.8 or Later (It will fail to load on earlier versions)
    • If you have previous versions of the Mega Bezel installed:
      • Delete the old Mega Bezel stuff from shaders/shaders_slang/bezel
    • Inside the .zip is a bezel folder, copy the bezel folder into your Retroarch/shaders/shaders_slang folder
      • The final path to the Mega bezel should be Retroarch/shaders/shaders_slang/bezel/Mega_Bezel
    • Set video driver to Vulcan
      • It will run in GLCore but seems faster in Vulcan
    • Some users have run it successfully in D3D11 but with a slow load time
    • Set Video / Scaling / Aspect Ratio to Full
      • This will match your monitor aspect aspect ratio
    • Set Video / Scaling / Integer Scale to OFF
    • Set Video / Output / Rotation to Normal
    • Set Settings / Core / Allow Rotation to OFFImportant for FB Neo
    • Load a preset in the shaders menu, Mega Bezel shader presets are found in:
      • shaders/shaders_slang/bezel/Mega_Bezel/Presets
    • When you save a preset make sure you have the Simple Presets feature set to ON
      • This will save a preset with a reference to the preset you loaded plus whatever parameter changes you made
      • This will keep your presets loading properly when the shader updates in the future


Is it possible to make a pack that is compatible with RA on the Xbox Series X console, as they dont seem to work on the xbox atm??


Does the console support Vulkan? Try changing the driver to glcore.


Just for information, the very long loading times of the shaders with the Dx12 video driver are not shorter with the new version, I did not see any difference.


Yeah i tried change to glcore but or thought it appears to load the shader no effects are applied to the screen. Using DX11 or 12 just causes RA to hang when loading the shader

1 Like

Retroarch for the Xbox only supports DX11 as of now. No vulcan, etc.

1 Like

That’s a known issue. See here.

This is a known issue. It should finish loading eventually.

I left it for 15 minutes and still wasn’t loaded :rofl:

1 Like