HSM Mega Bezel Reflection Shader! - Feedback and Updates

Just to show a bit of progression. Here is a test for future things we can do with shaders.
This shows all layers controlled by the shader, layered in whatever order you want. The top layer is the environment reflection layer, I have purposely left it at max opacity to show what it looks like, this can go as low as 1, or 0 for off. Obviously, you wouldn’t want it on max, but it looks a cool effect - It automatically reflects into the cabinet sides, although this is done post process, not in the shader (but means it only has to be done once, not for every preset).


OK I think I followed the instructions correctly yet it fails on me. This is the first error…

[ERROR] Failed to open shader file: “C:\RetroArch\shaders\shaders_slang\include\compat_macros.inc”.

That “include” folder doesn’t exist.

Is it supposed to? Or is it no longer supposed to be seeking this include file at all?

EDIT: Fixed it… I think I followed the instructions too literally and cleared out stuff that should have stayed.

It looks amazing – sadly even my fairly decent PC struggles with some of these!


Remember that you can set the aspect ratio to 4:3 and then use overlays. That’s what I do to speed up things with this horrible GTX 1060 in my laptop.


Plainly I M P R E S S I V E


Yes, that’s what the reflection-only presets are for, @Duimon makes static versions of a lot of his setups for this reason.



@emmak50 You’ll be looking for the Hybrid versions of my console graphics. There are rudimentary instructions on my GitHub on how to get them to work. I have had it running passably on a GTX 750. Good luck!


I managed to get the “level 3” reflection shaders working without any lag. It looks SO good.

Another question, sorry if I missed it, but how do you get vertical games set-up properly? I did it but it was clunky and there must be cleaner way. The big issue the way I did it is the reflections on the curved glass are on the side rather than in the upper right and left corners.


So I think this is because you are using a core which outputs vertical games sideways, then I think you have a core rotation happening, I think this setting should be in the core’s options.

What you want to do is let the core output sideways without rotating, then in the Mega Bezel use the rotation option to get it back vertical.


Interesting… The sounds right. I am using FBNeo for virtually everything. Thanks!


My cabinet isn’t finished, and I’m glad it wasn’t because whatever I would have done for a bezel would have paled in comparison to this! I can’t get over how nice this looks. Thanks to all involved!

(EDIT: I might have had the scanlines in the wrong direction in the pic, but still…)


Very cool!

I’m going to go with a vertical cabinet as well, and of course Black Tiger is one of my favorites too :grin:


Yeah, it is a great form factor because if you grab a 43" (this is a refurb 4K TCL that supports 4:4:4 chroma subsampling) you can basically simulate a full 25" CRT screen oriented either horizontally or vertically in a 2160x2160 viewport.

And you can make it very slim… mine is actually mounted on the wall.


I’m not sure if you’ve already seen it but there is a group of artists making great arcade graphics for the vertical format


You can see a their work here too


Hey @emmak50, I’m one of the people making the vertical overlays @HyperspaceMadness mentioned. How did you build your vertical cab, did you go off existing plans or design your own? I’d love to see a full length photo too. Longer term we will be doing HSM based distributions for our work (right now we are just aiming for lowest common denominator, so standard MAME and RetroArch) now that @HyperspaceMadness has been creating new configuration tools in the RetroArch shader code that will simplify the distribution of these overlays.


Now it would be REALLY amazing would be if we could animate that reflection layer so the screens in the background would also be in motion :smiley:

I just saw @John.Merrit mentioned that in a prior post, so +1 on that feature request!


Yeah I agree this would be interesting. We’d have to figure out how to get the movies/image sequences into the retroarch shader system.

Right now the only way I think this is sort of possible is with a sprite sheet, but you can imagine that it would be a pretty low resolution image for each block in the sheet. :frowning:

If we had GIF support and a way to access the frames in the GIF from the shader system this might be the best way (Because a GIF is a much simpler file format than an MP4). But we’d need to add both of these to Retroarch. :thinking:

One thing to note is that it would need to load all the frames uncompressed into memory, no streaming/on demand load. This could take some memory, but since pc graphics cards have a lot of memory this might not be a big deal, it would depend on the resolution and number of frames.


Attract screens would posssibly only require a “loop” of 20 - 30 frames, roughly. Just need to get a nice quality looping gif, lots of work, but results could be a immense.
ArsInvictus, love those 4k screens. Haven’t made the jump to 4k yet, my PC is also my gaming PC and not quite upto 4k 144Hz, but 1440p 144Hz is awesome.


I don’t know about ALL the screens, might be a little ambitious. Maybe one screen. :grin:

If we are talking about even 10fps animation we are still talking about 200 - 300 frames. I think we need to lower our expectations a bit.

On a positive note. :innocent: If we are going to make the attempt I think that a numbered image sequence might be our best bet, from a graphics development perspective.

The reason I say this is because Photoshop can already load the right format of video as a multi-layer image. Once it’s loaded we can add them to a group and do manipulations and masking on the group, crop the final images as one, and output the layers as a new image sequence.

This, coupled with X and Y position adjustments in the shader, makes it easy to put that video on the screen of the little TV or arcade machine in the background. :wink:

(Maybe reusing the same layer in multiple passes would allow us to put the video on more than one screen?)

Using a GIF or even a sprite sheet would require special software that might be beyond reach for a lot of artist.

1 Like

Thanks @John.Merrit, I’m glad you like what we’re doing. Good to see you active on here, it was your overlays that got me interested in making these!


I had a rough sketch of an idea but honestly my (lack of) carpentry skills necessitated a lot of “hacks” that fortunately worked out.

Here are a couple pics to give you a better idea. The control panel and box are a separate piece that can be removed. The panel can be lifted up, but the entire box can be removed from the rest of the cabinet. This enabled me to make the control panel wider than the cabinet, and I suppose in the future I could make a second control panel with a trackball or spinners or whatever.

I could probably have shortened the height of the cabinet slightly, but I was afraid once I got everything crammed inside I would run out of room. It’s 5ft tall. It is 25 1/2" wide, which means between the 3/4" MDF panels that form the sides it is exactly 24"… this was convenient and provides ample room for a vertical 43" display.

The cabinet extends about 13" from the wall for the marquee, and at the bottom only 12" from the wall (plus the control panel box is another 11" so 23" total. It hangs from French cleats and although I was terrified when I hung it on the wall it turns out it is very sturdy.

Is there a separate thread on this topic? If there is I will jump over there, maybe help avoid pitfalls I encountered, or get some ideas from others who want to build something like this.