Mega Bezel Reflection Shader! - Feedback and Updates

It’s a snapshot of my in progress integration of the Sony Megatron by @MajorPainTheCactus


I might start goofing around a little with some of the presets and see if I can come up with some tweaks of my own - I’m not remotely familiar with C. I don’t even know what a glsl command is but who knows maybe I’ll fall down the rabbit hole and figure some stuff out, or at least learn something along the way.

How did all of you learn about the difference between various masks or the color science behind CRT displays, or the various visual aspects of it? All of this is fascinating.

Edit: found a post by hunterk from 2017 explaining what glsl/slang are. Makes more sense now. Modular coding languages for shaders.


I think I’ve learned the most from the users on this forum personally, this is a great blog post by hunterk which talks about masks:

Filthy Pants: A Computer Blog: CRT shader masks


:rofl: Brilliant! Well done!!! I cant wait to try this all out!

1 Like

Thanks for that link - really cool information on that blog.


Not sure if your question was also directed to me because I don’t program shaders just develop presets based on the already developed shaders but I’ll still give it a go.

I started this mainly because the CRT Shaders I used for years stopped working due to a change in the newer versions of RetroArch. At first I tried “hacking” RetroArch to restore the lost functionality but at the same time I was seeking and seeing possible alternatives.

Then I stumbled upon some screenshots by @HyperspaceMadness of his shader and CRT presets in action and the rest is history!

At first I was attracted by the CRT Shader presets themselves just as much as the reflections because they seemed to provide the look I was going for and I really appreciated the fact that there was a bezel because that’s what I was used to. I was also fascinated by the realtime reflections.

I took it for a spin and was trying to choose a preset that closely matched what I was used to or might have been better.

The first one I liked was one of BendBombBoom’s presets then I tried the @HyperspaceMadness’s NewPixie clone smoothed rolling scanlines and that busy preset seemed to be on the right track to give me what I was looking for. I didn’t like the fishbowl effect I was getting from the curvature so that was the first thing I went through the settings and learned to turn off.

For months there on, I kept tweaking and tweaking and I also shared my results so that anyone else who was in the same predicament as me, who had lost the ability to use the Analog Shader Pack could have shared in my solution.

I initially posted my updates in the old Analog Shader Pack thread, the Please Show Off What CRT Shaders Can Do thread and right here in this thread then eventually was encouraged to start a thread of my own. Since then my presets have evolved into a comprehensive package designed to assist users with varying configurations and has continued to grow in popularity and appreciation in ways that I could never have imagined when I just started.

My first computer was a Commodore 64 and it came with a book full of games coded in BASIC that I had to spend hours typing out before I could be disappointed by the actual game.

I also had some further exposure to BASIC programming during a couple summer camp courses I took as a teen and I really excelled in those. That camp was specifically a “Computer Camp” where our daily activities consisted of learning about computers in addition to playing sports and games and doing other summer camp stuff. We even went on a field trip to our local IBM office/datacenter which was so fascinating at the time! Man that was sooo long ago!

In my second time at the camp, we had to do a project in BASIC to make an address book using what we had learned. I got 10/10!

After the course, I started working on my first game in BASIC called “Attack Of The Shapes”. I had reached the intro sequence along with a simple melody which my mom helped me to figure out the notes to program using our electric piano and I guess something else caught my attention at the time because I never reached further than that.

Same for graphics, I used to make a lot of computer graphics, full scenes, I even drew my living room in Paint Shop Pro and was starting to make some characters for my own digitally animated cartoon but again something else caught my attention or something came up and changed my focus at the time.

Now, I can’t even come up with an avatar from scratch nor understand where a loop begins and the array for the subroutine ends.

All hope was not lost though, I became an avid video game player! That’s a skill right?

I took up music production late in the game and stuck with that for a while and I also build and repair computers for a living and of course now there’s CyberLab Mega Bezel Death To Pixels Shader Preset Pack!

1 Like

Hello. I cannot download it. The shader link on the onedrive doesn’t seem to wanna download.

1 Like

It worked now. Not sure why it didn’t work before.

1 Like

Definitely was an open question to anyone here, so it’s cool to hear your background on this stuff for sure. I like that you managed to create some cool stuff by starting off with some tweaks. I think a lot can come from just tinkering - that’s my main computer “skill set” anyhow.

1 Like

Hi, is it possible to speed up the Reflect-Only__STD.slangp shader in any way? I’d like to use this but it’s choppy on 4K. Wondering if there’s anything I can turn off that would give a large performance boost.


I want to see a super lite and fast version that only contains the most essential features (reflection and adjustable bezel size), probably based on guest-advanced-fastest, hopefully no more than 15 or 20 passes, so it can run on less-powerful systems. I know the chance is slim and the author(s) probably already put a lot of effort into optimization. And if the less essential features actually do not impact processing load much, we are probably doomed…


Have you guys tried the GDV-MINI versions?

These are the fastest crt shaders integrated in the package.

Let me know how the performance works for you on those versions


STD_GDV-MINI runs at 100fps on my gtx-1050 without a problem (1440p) Just want to run the shader on a light system, like a high-end TV box or future SoC boards. I kinda miss the days when CRT-Royle was considered most demanding lol cause Royle runs at 400+ fps on the same system.

EDIT: I just remembered why I don’t use Mega Bezel shader more often… I can’t stand the GPU fan noise when I use the shader for longer playing sessions :sweat:

1 Like

Something like this would be great for more demanding cores (DC/n64/Saturn) on potato systems.


Yeah, I think I’ve been through them all. At lower resolutions they play full speed, it’s just that I would rather not do resolution switching down to 1080p because it gives me a bunch of new problems… : )

1 Like

Yeah, I hear you, although the final res you are at is going to affect performance a lot since the reflection has to be calculated at final res.

I’m not sure how much faster this can be, it’s really the full res passes which eat the performance, a faster crt shader might be slightly faster, but I’m not sure if there would be much of a difference from what GDV-MINI does.

GDV-MINI actually has 1 pass at final res, vs Guest-Advanced-Fastest which has 4 passes, with 2 at final res. GDV-MINI probably also has about 1/2 of the code compared to guest-advanced-fastest, so I’m not sure it would be any faster than GDV-MINI

It might be possible to do a potato-reflect would be limited to the potato features but add reflection.

I did some tests and you could get a potato reflect with no generated bezel in 20 passes at about a 50% increase in performance {660fps vs 450fps on a rtx2060) , and a potato with the generated bezel at about a 30% performance increase (580fps vs 450fps on a rtx2060).

But without an automatically generated bezel you have all the problems of trying to match the scaling of the background graphic exactly which is why I took @Syh’s excellent challenge to create a generated bezel.

EDIT, I messed up my words before, this should be more clear:

GDV-MINI actually has only 1 pass, and that pass is at final res vs Guest-Advanced-Fastest which has 4 passes, with 2 at final res. GDV-MINI probably also has about 1/2 of the code compared to guest-advanced-fastest, so I’m not sure it would be any faster than GDV-MINI


Up till now I’ve been testing out my RA setup (with the Mega Bezel) on a 1080p LCD TV. I moved the box to a different TV which is 4K and ended up with some interesting observations.

  1. Even when I forced Windows resolution to 1080p, everything ran more slowly with Mega Bezel loaded while connected to the 4K tv, even with “game mode” on. I don’t just mean in-game, but also in the RA menus. Less responsiveness overall, lagging input, etc. Windows and RA reported that the TV has a 60hz refresh rate, so that wasn’t the issue. As a result of the slowness, I elected to turn the Mega Bezel off (sadly). I figured that setting Windows resolution to 1080p would basically make the experience identical to when I was connected to the 1080p TV in the other room, but for whatever reason, this didn’t seem to be the case.

  2. My controller had more lag while the box was connected to the 4K tv (with and without the Mega Bezel). Obviously this has nothing to do with the Mega Bezel or any shader. The controller is an SN30 Pro, Bluetooth. Connecting it via USB cable eliminated the lag. What’s strange is that the lag is not present with the other TV. Baffling. Will probably “resolve” this issue by just switching from BT controllers to 2.4ghz USB dongle controllers.

Weird stuff, but hey, that’s an emulation box for ya…

EDIT: did some more testing this morning - changed the core overrides to just use other shaders and an overlay, then moved the box to the 4K tv again. issue #2 is gone. full responsiveness in-game and in-menu without any use of Mega Bezel. I wonder if what really happened was that Mega Bezel attempted to run at 4k resolution last night before I’d made the windows resolution change – resulting in boosting the thermals, then in throttling of the whole system. Maybe that, in turn, caused all the menu slowdown and bluetooth input lag.

I’d still love to use the Mega Bezel, so I’m going to do some more tests later in the week with a different Dp-HDMI adapter which is limited to 1080p/60hz output, which will mean that windows cannot automatically adjust the resolution (beyond 1080p) when swapping between screens.


In your testing try turning on the resolution debug text which is the first parameter in the list, this will print what the final resolution the shader is running at, this is called Viewport Res.

I mention this because I’ve had Retroarch running at a different resolution than I was expecting before – it was running at a different resolution than the desktop resolution – and this is a good way to see if this is happening.

1 Like

I’ll do that next time I have the box hooked up to the 4k tv upstairs. I thought there could have been some sort of resolution-related issue(s) contributing to all of it (including the perceived input lag). If RA and windows are not on the same page, and then the shader is in the mix also, I could see things going sideways.


In progress shots of the Mega Bezel with the Megatron integrated, sdr version. The global graphics brightness is set to 40% to be a better brightness with the full mask that the Megatron uses. These sdr presets are meant to be used on a monitor which has a high-ish brightness and increase the monitor brightness to compensate for the mask.