HSM Mega Bezel Reflection Shader! - Feedback and Updates

These are the SDR… although it is present in the HDR as well, just not as blatant. Turning up the VividPixel all the way in the OSD hides it quite a bit and so does HDR.

My only other experience with anything like it was on the Guest-mini and it seemed mask related. It also seems that way here because some combination of mask and TVL fixes it in all cases.

This is not really a solution though because changing theses essentially violates the intent of the preset.

It is not exactly the same issue I was having with Guest-mini. Here it stops at the bezel, in Guest-mini it went to the edge of the screen.

Guset-mini before the mask fix.

In this shot there aren’t really any highlights in the screen image so that confuses things.

I’m positive it is hardware related since it doesn’t show up on a screenshot, but I am loath to spend $1000 on new monitors without some proof that it will fix the issue. (It also seems more fiscally responsible to just not use these shaders.)

I wish at least one other user was reporting the issue.

It would be less frustrating if there was something unique about these displays… like some of the OLEDs with 4 sub pixels, but they are just standard RGB IPS monitors.


Hello good day.

I discovered this project not long ago, and I was surprised by the way the shaders are applied. But I have a few questions that I don’t know if they’ve already answered and that could help me in the case:

–> This shader in question has a very good quality, but some consoles like MegaDrive and even Playstation use Dithering technology, and even with the beautiful (and I mean really beautiful lol) @Duimon presets that I put together, it doesn’t activate the effect, having me have to edit the same. Is there a preset already ready to accurately emulate the quality of the consoles or do I have to edit each one to taste?

–> In this case I was reading the answers a little and the “readme.md” that accompanies, and says that you can edit the backgroud to taste as well. If I can do lives on sites like Twitch, am I allowed to use the Presets presented here, giving proper credit?

I’m asking to know more about the project itself, seeing that it’s quite big and really makes several improvements, and in my case I don’t care much for high resolution games, or even upscaling within the emulator, but just playing the way I saw it. even on TV with the effects (and defects kkk) that the console itself did at the time of a CRT TV.

My focus is on older consoles like Playstation, MegaDrive and Super Nintendo.

My configuration:

i7 3770 3.8Ghz 16GB DDR3 1866Mhz SSD 1TB NESTAC RTX 2060 6GB GALAX Windows 10 x64 21H2 AOC 31.5 1080p

Thank you =)


You can save your presets and name them per console if you like and and even associate them with either the core or directory. This is the beauty of of this suite; the default settings are a catch all meant to be customized.

Yes, @HyperspaceMadness has done a great job with this. :+1:


I understood

Well in that case I’ll take a look at the options, because THERE ARE MANY, right lol and see if I can edit the backgrounds in some application like Photoshop to use Lives and leave the credits to the project.

Only that I’m experiencing some slow-downs during gameplay, but it “seems” like it’s from my external HD that I use for some Playstation games, but that doesn’t have much to do with the project lol

Too bad where I work there is an i3 3240 with an HD GRAPHICS that unfortunately doesn’t run, not even in D3D11 :confused:

And yes, the way it looks at home when I play is VERY BEAUTIFUL, even more so because of the reflections and the CRT filters present =)

1 Like

I wanted to take a moment to thank @HyperspaceMadness, @Duimon and everybody who contributed on this project. It took me a while to fine-tune this massive shader, but the result is as impressive as the work and effort put in by the developers. :+1:

I was wondering if it would ever be possible to speed up the shader loading time though? I was under the impression that most of it was cached, but it still feels like some amount of compilation is done everytime I load a game. This probably cannot be averted, and it’s only a minor annoyance in any case.


Look no further:


Thanks, everyone has put in a lot of great work!

So it’s actually the graphics which are cached. Unfortunately there is no way to cache the compiled shaders, so as you say they are recompiled every time the shader is loaded


That’s a surprise. I’m not privy to the inner workings on the shaders for RetroArch specifically, but I would assume shader caches are exactly designed for this purpose. It makes me think of Dolphin’s shaders, once they are compiled they are cached and never compiled again. Wouldn’t it work the same here? Specifically if you load the same game twice.

Perhaps it would be possible to compile the shaders in a thread so the game can still load immediately without freezing RetroArch (which can be off-putting for a lot of users). But that’s out of the shader’s scope. :sweat_smile:

Usually you will need to edit the parameters for your desired look. For blending dithering there are a couple of things that you can do, one is turning on MDAPT or other De-Dithering options in the ADV presets, they are later in the parameter list. You could also use an NTSC preset which will blend the dithering and colors.

Yeah that would be cool :slight_smile: just if you can please credit the graphics creator and a link to this thread in your description.

One thing you can do is add your side graphic as an additional image

For example you could save a new simple preset which references the one you originally loaded, then set one of the images like this:

TopLayerImage = MyTexture.png


Yeah, what I meant is that Retroarch does not have support for this, rather than to say that it’s technically not possible :wink:

It would be cool to have such a thing with a big shader like this :slight_smile:


It is likely that you are not yet aware of ALL the parameters. Many things that affect the graphic elements can be done in the shader with only parameters.

If you are needing something specific, perhaps I can save you some time. I have also been known to do requests. Feel free to contact me via PM if you’d like.



Mega Bezel is updated to V 0.9.108 2022-04-23 Rev 1


  • Fixed cropping in Megatron Presets
  • Fixed path problems in Community_CRT_Variations


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 very slow load time
      • Restart after changing the video driver
    • Open the Settings Menu and Set:
      • Video / Scaling / Aspect Ratio to Full
        • This will match your monitor aspect aspect ratio
      • Video / Scaling / Integer Scale to OFF
      • Video / Output / Video Rotation to Normal
      • User Interface / Show Advanced Settings to ON
      • Core / Allow Rotation to OFFImportant for FB Neo
      • Do this Before loading content
    • 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








Hola No puedo usar Vulkan (tengo GTS 250) :frowning: Pero les dejo mi Oerlay de Dreamcast NEGRO!


If you are interested in some nice standard overlays for the different systems, @Duimon has some great ones:

1 Like


I’m still getting a couple “path too long” errors on a couple of files related to Cyber’s presets.

Also, my presets are looking quite a bit darker than expected there. Not sure if that’s due to the smaller vertical scale being used (tested at 5x /1120px/1200px vertical scale) or if there’s some different color/brightness stuff going on in the bezel shader that I didn’t account for. All of these were edited within guest-dr-venom.

I’m going to tweak the settings within the bezel format you’ve chosen as the default as this is probably what most users will use. An additional preset at 5x scale showing the bezel only on the sides might also be a good option. In my experience there’s a big difference between 4x and 5x scale when it comes to scanlines.

edit: Yikes, the moire. Not sure what to do here. I’m thinking the curvature needs to be removed for these presets. I can also make a new one with the scanlines adjusted so that the moire is undetectable.


Hmm perhaps it’s relative to where Retroarch is installed.

I’ll take a look in the retroarch shader loading code, we may be able to fix it so it doesn’t have this problem.

This is likely, the way to test would be to set the aspect ratio to full to get it to expand to the height of the screen.

Yeah here turning on the integer scaling and adjusting the max scale should give you the integer scale around the size you are looking for

Yeah, you can set the crt curvature scale to 0 which will remove curvature on the crt screen causing the moire but keep the rounded bezel around the screen. Maybe we should do that to these presets.

But the adjustment you mention sounds good too :slight_smile:


You can try my presets in my thread in the meantime. I don’t think the latest Mega Bezel update included my most recent preset updates.

You can try changing your base preset to one of the new Max Integer Scale Presets that @HyperspaceMadness has now included. They seem to be the trick to get maximum screen real estate usage without any weirdness like a bezel on the horizontal sides only.

@HyperspaceMadness chose a default scale of 115% but in my initial testing that left some of the title text at the bottom of the screen in Street Fighter II Turbo Hyper Fighting on SNES cropped off.

A slight adjustment to 104% seemed perfect to me, at least for that game (which was the only one I tested).

That one is a game changer though for all those folks who frequently come saying they like the scanlines but want to disable the bezel for whatever strange or valid reason.

1 Like

On D3D12 the Windows drivers should automatically cache the compiled shaders and reuse the binary if the shader source is the same. Are you not seeing that behaviour? I would have imagined Vulkan by now would have this support too.

To your last point you could certainly do that without a shader being activated whilst it’s compiling but it’s a bit of work - it would just take someone to implement it for all the drivers. As @HyperspaceMadness says it’s all technically possible it’s just a lot of work.

1 Like

It is slightly faster than the first time but not as fast as without the shader. So I suppose what I’m seeing is the benefit of the cached graphics not the cached shader itself. I am indeed using vulkan.

1 Like

When you say ‘cached graphics’ Im not sure there are enough/any textures to be noticeable. There are a few small LUT textures but I’d expect those to load and be converted in under a second. Geometry is all generated on the fly.

However maybe @HyperspaceMadness can confirm whether this is the case for the Mega Bezel?

At the end of the day we know there’s a problem and I suppose we just need to profile it and identify the problem (unless @hyperspacemadness has done this already?). Maybe when I come round to trying this all out myself I’ll take a look.