HSM Mega Bezel Reflection Shader! - Feedback and Updates

Now that you mention it. I did this using the alpha shader so it may not be possible using the release version. In any case it isn’t necessarily intentional, just possible due to @HyperspaceMadness thorough consideration.


I don’t understand why they should get angry or feel threatened. People should be free to like what they like and also to share what they like with others. That doesn’t mean death to preservation or that even people who like what I like or what you like are even against preservation.

Death To Pixels does not mean death to preservation. Those with different tastes as well as interests and ultimate goals should be able to co-exist harmoniously and respectfully within the same wider community.


Thanks for your response! Just wanted to mention that I was not aware there was a new repo, and the HSM Mega Bezels in the new repo work just fine. Thank you again for your work!


I thought I would make a point of announcing this ahead of time. The current slang_shaders repo is not being updated any more, and the development has moved to the Mega_Bezel repo, so if you want to follow the development build, that is where you will want to go.

In the future the shaders_slang repo will reflect things that are about to be submitted to the main libretro repo or have already been submitted.

A link to the Mega_Bezel repo is in the first post


I also wanted to share a cool effect someone else brought up in the thread last year sometime.

Basically if you raise the black level (make the black in the game image brighter) in the Grade settings you will get slight scanlines on the black area of your game which add a nice texture to it.

Here it is with the black level raised a lot:

Zoomed in!



Just sharing some up to date screenshots from my CyberLab Mega Bezel Death To Pixels Shader Preset Pack. I know it’s been a while since I’ve shared anything new so these are representative of what my presets currently look like!

Oh wow, lots of news here! I’ve been pretty fugitive because of the heavy workload on my incoming PVM Pack, the Mega Bezel 1.0 release, the Commodore Pack so…

… ignite your pixels!


:star_struck: :star_struck: :star_struck: :star_struck: Fantástic work @TheNamec ! I want it, a love it!


Been a while. Haven’t had a chance to do much retro gaming lately. Still, decided to replay the zero series and wow does this shader looks stunning on an OLED. Even GBA games look amazing. I always look forward to new updates!


Hey @HyperspaceMadness an idea struck me and I had to share it, even if I suppose you are in feature freeze on the road to the 1.0 release!

Introducing Mega Backlight

I am thinking about some sort of full screen dynamic backlight à la “Philips Hue/Ambilight”.

Feels like we are really close to something like this thanks to the GLASS feature, of course we need the device layer to be on top for extra silhouette coolness.

To perfect the control you may add customisation for:

  • Blurriness
  • Light transitions decay speed (the upper limit being ‘real-time’ like the GLASS preset)
  • Backlightning area (width/height, posX, posY)
  • Colorization controls (hue, saturation, brightness)

It would be the ultimate filler and a new modern enhancement for retrogaming! Bonus side effects: less fatigue on eyes and IRL room lightning effect for people playing on big TVs :star_struck:


On a sidenote… this would introduce a problem with my actual implementation of device layer assets as I embed a little outershadow to add some depth between device/decal and background/led layers. I will of course remove them.


Some beloved one :heart_eyes: may develop an outer shadow control like the one already existing on bezel frame. This way we can perfect the silhouette effect on NIGHT lightning presets, while keeping the realistic shadow on DAY ones.


OMGosh @HyperspaceMadness! This is a brilliant idea! Especially for those on IPS screens that struggle to display true black in pitch black rooms! I can see myself using this in a very subtle quantity. I’m imagining a soft, dark blue as I write. This can even supliment those with RGB lighting setups! I can see that Phillps example with independent left and right lighting with the Blue blending into Red to make magenta in the center!

I’m also thinking morphing mode for OLEDs in addition to static mode!


This sounds like a really cool idea! I think this management of lighting and animating lighting of some sort for our OLED users is probably the next bigish feature after the V1 release.

We’ll have to think about about how we want to do the background light, if the light added is actually a super blurred version of the screen/reflection image, or an automatic choice of some colors from the image to simulate a few different colors of lights blending together.

Yeah it would be nice to be able to have this shadow be autogenerated by the shader. I’ll have to see how we could achieve this soft shadow based on the outline/mask of the upper layers. We may need an additional blur pass for it.


I just came across this and it looks very promising:

Apparently @Juandiegous fine tuned the Blargg NTSC Filter to match a real Sega Genesis without producing the undesirable artifacts we have all come to expect from it!

Can this be tested to verify the improvements and integrated into the Mega Bezel Reflection Shader?

So this is a filter rather than a shader, I haven’t used filters much. I’m not sure if they are applied before or after the retroarch shader pipeline. If they are going to be applied after they aren’t going to be any use with the mega bezel. You should try them out and see what happens, I think also sometimes a core can use the filter directly.

Dunno - Shaders & Filters? - RetroArch / General - Libretro Forums

1 Like

I just tried @Juandiegous’s custom filter and it works very well in conjunction with HSM Mega Bezel Reflection Shader! The results are better than the filters that are currently there in the Filters folder. It does the blending without being too excessive in the blur and distortion department.


Whoo hoo just hit 6000 downloads of this little package!

Big “surprise” incoming, hopefully tonight :slight_smile:


Fingers crossed and waiting with baited breath!


Mega Bezel is updated to V 0.9.090 2021-12-24

This is the first release candidate for the V1, We’ll get some usage from the community & do some bug fixes, then probably another RC then when things are super stable it will get submitted to the main repo as the V1.


  • The Headlines:

    • Caching for Improved Performance
    • Guest NTSC presets added
    • Big rework on preset levels
      • Different levels of presets are now relatively consistent and make more sense from a user perspective
      • You may need adjust the paths in your presets to point to these new file names
  • BIG Changes to the preset levels,

Snapshot from the help in a markdown reader

Change Details:

  • Viewport Zoom & Position
  • Caching Added for much better Performance
    • When caching is on (on by default) the performance will be much better
    • Stuff that is cached:
      • Passes which do not change dynamically every frame
      • Portions of the viewport which do not change dynamically every frame (E.G. Outside the Bezel)
      • Blinking red visual indicator when cache is updating
  • Added Negative Cropping
  • Readme/Help partially updated
    • Read in a markdown reader for nice formatting
    • Some explanation of some of the new features is in here
  • Guest DrVenom
    • New Guest-DrVenom NTSC preset added, Thanks @guest.r!!!
    • Updated Guest shaders to crt-guest-advanced-2021-10-22-release1
    • Scanline Gamma is on all GDV presets and is a 1 based gamma adjustment
    • Noise can now be turned on/off separately from deconvergence
  • @DariusG’s GDV-Mini is now used for the POTATO preset which scales better than ZFast
  • Cyber’s Presets added to Experimental folder
  • Community_CRT_Variations presets added (Moved from Experimental) includes:
    • BendBombBoom Presets
    • NESGuy presets
  • Put Vignette in Post-CRT pass, Turn off Grade Vignette by default
  • Put Grade after afterglow, remove brighten black from afterglow
  • Added STD-GLASS preset
  • Auto Aspect Ratio
    • Catch sony fmv res 320x480 as Horizontal Aspect
    • Catch sony fmv res 512x480 is now caught as 4:3 and Horizontal
  • Independent Black Edge Corner scaling
  • Color Tweaks fixed, Display Gamut last option is now in range
  • Image Layering
    • Image aspect is now taken from the image resolution instead of setting extra parameters
    • Added Mipmapping blend to avoiding the crunchy pixel look when graphics are scaled down, e.g. 4k background on 1080p monitor
    • Added Color Control on all Layers
    • Added Viewport and Full scaling mode for image layers and AmbientLightingImage
  • Automatic screen placement
    • Add option for Black and White placement image requested by @briball
  • Night Lighting / Ambient Lighting
    • AMBIENT LIGHTING now affects tube static reflection & Tube diffuse image
    • New great Night Lighting image by @Duimon
  • Graphics global brightness added so Mega Bezel can be used with “Dark” presets which try to preserve phosphors and then user increases monitor brightness
  • Screen Curvature: Added 2D Cylindrical Curvature mode requested by @syh
    • This makes the indexes change so they now start at 0 and end at 5.
    • 3D mode is now 3 and 3D cylinder mode is 5
  • Intro Logo is now scaled nicely in Vertical and Dual Screen
  • Tube Diffuse image added, so you can show the phosphor surface behind the CRT image if desired
  • ColoredGelImage renamed to TubeColoredGelImage for consistency
  • Corner radius’ for are now independent, Black Edge, Bezel inside, Bezel Outside
  • On/Off for some effects, which will be off by default like Tube Static Reflection Image


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
  • Set Video / Bilinear to OFF
    • 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

Give it a Whirl and let us know what you think!!!

Edit, there was a syncing problem but the files should now be updated


Nice! @HyperspaceMadness!

I have a “bug” to report. When the cache graphics are on, my custom TV image is downsized until it’s gone, leaving only the bezel and reflections (and the game image inside).

This is the background, I’m running Retroarch in 4K. Cache off still works.

Also, can you increase the negative cropping to -15 or -20?


Ok, so does the graphics appear then kind of slide off the viewport?

This is due to having retroarch’s billinear filter on, if you turn this off it will go away :slight_smile: .

I’ll try to fix this so we don’t get this interaction.

It’s sort of possible, but the 10% that’s there now is adds 20% to the core image as it goes through the pre-crt pipeline. To increase it to 20% would add 40% to the core image. The more that is added would slightly slow down the pre-crt processing.