Mega Bezel Reflection Shader! - Feedback and Updates

Imho better way would be to add additional curvature code for the 2d cylinder curvature.

I had a modified version of one of the 2d curvatures for that.


Yes this would probably be a nice ease of use, so we could have the curvature mode being something like:

  • 0 - No Curvature
  • 1 - 2D
  • 2 - 2D Cylinder
  • 3 - 3D
  • 4 - 3D v2
  • 5 - 3D Cylinder

I did some testing, and I probably won’t be able to replace the Royale curvature with CRTGeom’s, it has has discontinuities outside the screen which is a deal breaker for the reflection, especially for the Glass preset. It also doesn’t look quite as good with a significant amount of tilt.


Imho flip the order of 4 and 5.

Order would make more sense to the end user.

I like this! Is this your PVM20 preset in action?


Looks lovely. Can’t wait to try this. Tried using a few images of PVM’s recently and there is always something not right with the image. Maybe it’s how people have taken the photos of their sets, I don’t know, but the results always feel a little off when used with the bezel reflection. This clean rendered image looks really nice and doesn’t seem out-of-place, at all. Will you make it so the wooden desk and wallpaper can be replaced ? I tend to go all black.


The two series of stand-alone PVMs are in my repo.

(The last shot is the TM20 and all three backgrounds are available.)

All of the presets have separate layers for the background so you can replace it with one of your own or comment it out and go black.

I also have PVM presets for all my CRT systems. You may find night mode to be as good or better than a black background.

You can download the graphics and presets individually, from my repo, or use Git to install everything at once. There is info here:

BTW. The HDD controller for my external dock crashed and burned. Having my source on GitHub rescued a lot of things during the roller coaster ride, but the source for the 1st background was lost. It has been replaced with this:


Any chance of a recovery at some point?

1 Like

No. The only difference is the texture used for the wood. I tried every texture in my library and couldn’t replicate it. I will probably try again. (I think it is a bit too similar to the dark wood version.)

Th PSD source is also available if someone wants to use it to create their own backgrounds. (They are packed in 7z archive format because the file size was too large for GitHub even in ZIP format.)


It’s been a bit since I’ve used RetroArch or this shader, so I thought I would dip my toes back in and I’m noticing performance issues again (I never really fully got rid of them before, either).

Can someone explain to me if this makes sense? As a test case I’m running Super Mario World on Mesen-S with the latest standard bezel preset and it kind of hovers just below 60fps, so there’s constant audio crackling and stuttering and everything, but if I turn fast-forward on then I get, like, 165fps? Why can’t it hit a solid 60fps all of the time if I can get 165fps when I fast-forward?

This has been an issue I’ve had with the shader for years for whatever reason, but in the past I would still at least usually be able to find a way to solidly hit 60 by making certain sacrifices, so I didn’t worry about it too much, but I really would like to understand what’s going on here. Or is this just expected behavior?

EDIT: I’ve got an i5-3570k and a GTX 1070 Ti, if that matters. And I’m running at 2560x1440.

1 Like

I’m running a GTX 1070 with a Ryzen 5 5600X at 4K and have no issues with performance. I do know that I can’t run these shaders on every core and have Run Ahead and Frame Delay enabled. Do you have Run Ahead and/or Frame Delay enabled? What’s your CPU usage and GPU usage like? What preset/presets are you using?

Also, for what it’s worth HSM_Bezel_Reflection_V0.9.21_2021-07-05 seems to be significantly less performance intensive than the latest versions.

Just thought of something. I run with Curvature turned off and with the latest version HSM Mega Bezel Reflection Shader I can easily have GPU usage hovering around the low 90% range with Run Ahead and Frame Delay enabled using certain cores. Perhaps another factor that can help explain our discrepancies in performance could be that you’re running with Curvature turned on?

I do not have Run Ahead or Frame Delay enabled. In the case I described above (using Mesen-S with Super Mario World) my GPU usage hangs around 30%-40% and my CPU usage is around 20%. This is with the standard preset. The framerate hangs around 50-60fps. If I turn fast-forward on the framerate jumps to around 165fps and my GPU usage basically jumps to 100%. My CPU usage stays roughly the same, around 20%.


It is a bit weird that your percentages are so low but you are still having audio crackling. I would say that SNES is not really a fair judge in this case. It is a surprisingly complex system to emulate and audio timing is the first thing to go. (The Playstation is less taxing in most cases.)

The good news is that behind the scene changes in the shader should improve performance across the board. Look for them soon at your local Mega Bezel retailer. :grin:

In the mean time, if you are using my presets, try the Basic with Reflection versions.


Have you tried setting your estimated refresh rate in RA?

Go to “Video/output” highlight estimated refresh rate, and hold down start on your gamepad until the system reports.

This can help with synchronization issues.


Perhaps, you might want to try out another core? Maybe, Higan, BSNES or SNES9X?

Hello and thank the people behind this great work.

The shaders are installed inside my home directory.

I’m using the last pack and whenever I try to load a variation from preset, it does not load. Retroarch log told me that

failed to read preset in reference line : /usr/local/bin/shader/shader_slang/bezel/Mega_Bezel/…


Hi @Mauricio, Thanks :slight_smile:

this is an error which happens on some operating systems when a shader uses absolute paths E.G. :shaders/shaders_slang/blah/... . Instead of relative paths E.G. ../Base_CRT_Presets /blah/...

I’ll adjust these for the next release so we don’t have these problems anymore.

One fix is to have the shaders in the retroarch folder.

If this doesn’t fix it or you don’t want your shaders installed there, a workaround is to adjust the paths, in the variations presets you can replace where it says

#reference ":/shaders/shaders_slang/bezel/Mega_Bezel/Presets/Base_CRT_Presets/


#reference "../Base_CRT_Presets/

I’ll update the presets on the next release to fix this, sorry for the bump in the road :upside_down_face:


Iqarujanus a user on Steam has shared a fun collection of screenshots using @Duimon and @TheNamec’s presets :star_struck:

I really enjoy seeing how people decide to use this stuff :smiling_face_with_three_hearts:

Thanks Iqarujanus! :smiley:


I have the paths issue on Archlinux too. The shaders are in my /home/tromzy/.config/retroarch/shaders folder, though. Hope the next update will fix it !


This is great! Congratulations @HyperspaceMadness, @Duimon and @TheNamec. I’m sure you must feel proud of this accomplishment!