HSM Mega Bezel Reflection Shader! - Feedback and Updates

Thanks for the screenshots! So this kind of performance is kind of what I expect in terms of a comparison with the old full preset.

I have some info about the examples included in the examples package:

Magic Sword

Screen placed using Image Transparency (Place where the hole is cut out), Uses @ArsInvictus’ art

This means that if you load in different images with a hole cut in a different place the screen will be placed wherever the hole is. This feature is also included in the BASIC-BORDER preset which can be used as a replacement for a simple RetroArch Overlay without the need for config files or video res overrides.

NeoGeo Plastic Bezel

Screen Placed by Image Transparency, Texture Masking Reflection, Uses @ArsInvictus’ art


Uses a Backdrop type effect and using the BASIC-BORDER preset since it doesn’t actually need reflection


This one is a pretty simple, just has an LED image and the Night Lighting is On, Uses @Duimon’s art


Congrats on the release! I upgraded from the previous stable release (from August 2020) to the new one and tested out a few games. Mostly things were good, but it seems like the new release doesn’t deal with FFVII’s menu resolution change as elegantly? At least according to the shader’s resolution info, FFVII goes from standard 320x240 to 365x240 when in menus, and with the new release it doesn’t seem to handle that as nicely. You can especially tell by looking at text.

Old stable release of mega bezel:

New stable release of mega bezel:

Not sure if there’s anything to be done about this or if there’s some setting I could change to better handle it, but thought I’d point it out to see if it’s fixable on my end or with a later release (or if there’s just something I’m missing!)

Thanks for all of the great work, by the way!


Hi, thanks for trying it out, and for the screenshots and checking the core resolution, this helps me figure out the problem. :smile:

So this is a bug, seemingly caused by the particular resolution of the menu. To fully fix this I’ll have to add a new shader language feature to retroarch. There is a workaround that I’ll mention later in this post.

The longer answer to why this is happening is that the first pass divides the resolution by 8 so it can do the calculation of a bunch of values and cache them in the most performant way possible. Then the next pass multiplies it by 8 to get back to the original size. It seems like all core resolutions divide by 8, but apparently you found the exception! The menu resolution doesn’t divide by 8 evenly, so when you multiply it by 8 in the second pass you dont get the same resolution as the original. The ideal solution would be to set the second pass to go back to the Original resolution directly, but that’s the new feature which needs to be added.

The workaround is to go into the base Mega Bezel presets and set the scale on the first and second passes to 1. This will run a bit slower, but should get rid of the resolution problem.

I need to test to see what the performance difference is. Perhaps the performance difference is not big enough to worry about and I can just change the base presets… :thinking:

Oh and I forgot, You’re Welcome!


Hi guys, i’ve a question. It’s about resolutions. Just for example :

I want to play Samurai Shodown Perfect, or Samurai Shodown V Special in their real resolution which is 320x224. Then, need 1280x896 (x4).

But… the Finalburn Neo core did a mistake with these games and tell that core provided is 304x320. Then 1216x896 (x4).

Well… i can obtain 1279x896 or 1281x896 but impossible to have 1280x896 ! And int scale mode can’t do anything for me because false core provided.

Can someone help ?

Edit : With the new Retroarch & HSM Mega Bezel, all is OK now :wink:

1 Like

Hello everyone!

For those who using the new Simple Preset option to save shader presets. If you want to replace the original background with another one, you can do this simply by adding the lines pointing to a new background. This is also true for led layers and decals. Your shader preset should look like this:


Just installed Retroarch 1.9.1 and the new HSM Mega Bezel Reflection Shader. So great ! But… Now informations doesn’t appears like my previous screenshot !

It’s impossible to know the core resolution and the screen resolution.


Take a peak further down the list in the SCALING section, the parameter to turn the debug info is called: Show Resolution Info


Thank you, It’s OK now !


Thanks a lot for this @HyperspaceMadness! I have 2 questions, what is the option to remove the Highlight on the screen? Regarding reflections, instead of showing the game reflection is it possible to just have the ‘TV’ light reflected to the bezel?

1 Like

This should actually be off by default now since many people found it distracting. If you want to turn in on however it is this one: Tube Static Reflection Opacity in the TUBE IMAGES section

I think you are asking about a much more diffused light effect on the bezel which doesn’t look like a sharper reflection?

You can do this by reducing Direct Reflection and Diffused Reflection and increasing FullScreen Glow this will give a glow from the screen which doesn’t look like a sharper reflection.

Here it is by default

And here it is with more of the fullscreen glow


Yup! that is exactly what i meant! So good!! You’re a god @HyperspaceMadness thanks!



Mega Bezel is updated to V 0.9.01 2020-04-06


  • Fixed Resolution issue with core resolutions not divisible by 8 E.G. FFVII Menu

  • Added BASIC-BORDER-WITH-REFLECT preset, this is like the basic-border one but adds reflection on top

  • There is preset in the variations folder which is Reflect-Only which references this preset

  • Performance of Base presets at 3840x2160 on Nvidia RTX2060:

    • ADVANCED --------------------------------------------- 80 FPS ---------- No comparable old preset
    • GLASS -------------------------------------------------- 150 FPS ---------- Old Glass Preset-----------------128 FPS
    • STANDARD ------------------------------------------- 135 FPS ---------- Old Full Preset--------------------140 FPS
    • BASIC-BORDER-WITH-REFLECTION ----- 156 FPS ---------- Old Reflect Only Preset-------165 FPS
    • BASIC-BORDER ------------------------------------- 295 FPS ---------- No comparable old preset

This is fantastic!

With this adjustment we can improve the realism according to type of surface imagined for Bezel/ Background, since not all are fully polished.

Once you reduce the values suggested by @HyperspaceMadness, I also recommend adjusting the values of the options below (in the same group):

Inner Edge Amount Bezel

Inner Edge Amount Frame

Usually changing their values better defines the limits of the lights in the parts that make up the screen.


This is great!

I am hoping that I can use the Screen Placement by Transparency, use one of my overlays and as the background, and one of my hybrids as an overlay, ending up with a super simple method for hybrid graphics.

I haven’t looked. Does the Basic Border have the image aspect parameter?


There isn’t one, but I can easily add it :slight_smile: probably a good idea, then it will play well with 16:10 screens


Love the new simple-reflection shader. Looks great on the CX as the entire bezel disappears when the game goes dark. Shader looks great with everything i’ve tried so far.


Hey @HyperspaceMadness how to use scalefx? It says i need to change core res sampling but to exactly what value?

1 Like

The option Fullscreen glow is also not doing anything for me @Giever Did you fix it?

I didn’t fix it, per se, but it seems like it’s working, just very faint in some cases. I was testing with Chrono Trigger at first and couldn’t notice it at all, but with Super Mario Bros. it was pretty apparent. Not sure how it determines the color/brightness to use based on the screen or anything, but by cranking it all the way up along with adjusting the gamma setting for it I was able to at least notice it when going back to Chrono Trigger.

Unfortunately however it works now doesn’t seem like it’ll serve my purposes, so I’m sticking to my mostly diffused adjustments I had beforehand.

1 Like

@HyperspaceMadness I think installation instruction inside read me isn’t updated.

This is from before V 0.9.00 update;

If you have previous versions of the Mega Bezel installed:

  • Delete shaders/shaders_slang/bezel/shaders/HyperspaceMadness

  • Delete all hsm presets from shaders/shaders_slang/bezel

While new shader update using entirely new directory path, this instruction is became unrelated.

The new HSM should refer to this path;


1 Like