Mega Bezel Reflection Shader! - Feedback and Updates

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.

2 Likes

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.

2 Likes

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!

3 Likes

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.

4 Likes

Thanks @emmak50, that’s pretty good if your carpentry skills are anywhere as bad as mine. For my own setup I purchased the RecRoomMasters 40" vertical arcade cabinet, which unfortunately they don’t offer anymore. But a lot of people use the vCabinet plans, you can find links to some options on our verticalarcade.com site here: https://www.verticalarcade.com/resources. We have more than 130 overlays posted to our site now with more coming every week.

You can download all of our vertical overlays there but we also post frequently to this thread on libretro and people occasionally post about their vertical arcade cabinet setups there too: 4K Vertical Overlays thread.

I’m glad to see more people building vertical cabs like this. One of the reasons I started to make these overlays was to popularize this format, I personally feel it’s the best way to recreate the arcade experience in the home.

4 Likes

I agree. I had a massive 4 player cabinet with a real CRT but I only moved it out of the garage on a couple occasions. It was too much for me. This is more efficient, and vertical allows for raster horizontal and vertical and VECTOR horizontal and vertical.

Other things I recommend…

  • use LAG REDUCTION. It makes subtle but huge difference (if that makes sense). That’s why I rely on FBNeo so heavily.
  • I sprung for UltraStik 360s because I wanted an analog “leaf” switch feel for everything. My last cab was very “clicky” and it kind of took me out of the mood. (If you buy these, just be aware there are other issues, like it is not straightforward to map multiple controls to a single player like you might need for Robotron.)
3 Likes

Hi, @emmak50! Is this LAG REDUCTION that you are talking about the same thing as run-ahead or a different one?

Increasing Frame delay is also a nice lag reduction feature. Set the number as high as you can before you start hearing crackling audio.

1 Like

Yes, run-ahead latency reduction.

I think this is the missing factor when we re-visit games we used to like and decide they aren’t as good as we remembered. Part of the problem is that some of these games were super responsive in the arcade (or on a console) but when emulated there can be some input lag.

Just remember you have to set it for each game (so it can be tedious), and not all games can handle running it with a second-instance.

1 Like

Interesting about frame delay, I never played with it.

Yes, for me the perfect setup is : set run ahead by using the Pause and Advance frame options (or whatever it is called), for example : push “P” (the default Pause key) and then push the jump button on your controller ; then, push “K” (the default “Advance frame by frame” key) several times until your character starts his jumping animation ; if he starts jumping after, let’s say 3 pushes on the “K” key, you should set run ahead to 2 frames, so that your character will start his jump on the immediate next frame. Don’t set it too high or you’ll miss the first frames of the jumping animation, and you don’t want that.

Then, use frame delay and set it as high as possible before the game stutters or sound crackles ; now you’ve got the lowest latency you can get. It can even be better than the real hardware.

5 Likes

Thanks, just when I thought I had everything dialed in… :joy:

So, I’ve been playing around with Flycast and HSM shaders, usually I run Flycast at 640x480 internal game resolution, but this time I’ve been using 3840x2880 on my 1440p monitor with nVidia DSR at 5120x2880. My custom HSM_Bezel_CRT_Royale_Kurozumi gives REALLY weird results, like greenish color and really bad looking textures, so I switched to regular HSM_Bezel_CRT_Royale with a few tweaks, and MAN, the image quality is phenomenal !!

Here is a screenshot from Crazy Taxi I uploaded (I took several but the upload of such big sized pictures takes too long, so here’s only one :smiley: ) :

https://imgur.com/a/Qfy4f0Y

Edit : added some more screenshots :

1 Like

Hi, i’m having a problem adding a overlay to this shader now.

I don’t know which step i’m missing. I think i’m doing something wrong with the path, as i have them in overlay/final/SNES.png, how can i make a relative path? Is something like: …/…/…/…/…/Overlay/Final/SNES.png?

Thx guys, i want to update this thing.

2 Likes

Hi, where is your preset saved? The path will be relative to that folder

And yes that will make it a relative path

../../../overlays/mytexture.png

1 Like

I think i got it working, i see that you added a way to have only the reflections, very good choice!!

I’m gonna test it. wohooo PS: What preset would you recommend to use custom Background images and overlays from the internet? There must be a way to see the reflections on this custom background image, instead the bezel which is autoloaded by the shader. Thx again

Hello all. First I just want to give a huge thanks to HSM (and all the respective shader coders) for making all this possible. Mere words written here couldn’t possibly fully convey the utter joy you feel when you fire this bad boy up. You’ve gone beyond just providing something useful and bring actual joy into peoples lives!

Without knowing too much about shaders I was able to set up PS1 with a shader I like. Saved a core preset. Grabbed a graphic from Duimon’s repo and injected the path into the preset. Saved a core override… and I think I am done. I am guessing most consoles will be just as easy since the content is always output the same.

Mame is where the fun begins for me though. I realize that I will probably have to save per game presets and overrides instead and that’s fine although a little time consuming. The problem for me right now is that most horizontal games seem to load and the AR looks good but vertical games are being stretched horizontally like it expects me to rotate the screen:

I have integer off and scaling to 16:9 (which is my monitor resolution). Changing all 3 aspect values in the parameters does not seem to fix this. What am I missing?

3 Likes

Nice, it makes me smile to hear it brings you joy :smiling_face_with_three_hearts:

Hmm, Looking at the screenshot I can see that the Mega Bezel operated on it as if it was sideways, You can tell because the carbon fiber texture is squashed. This sort of remaping problem happens when the core and retroarch take the image from the core then re-map it onto the viewport with an additional transform, to rotate or flip the image.

This is the reason that no matter what you to tweak the aspect parameters did you got something funky, because in essence all the output from the mega bezel got rotated sideways and stretched to fit the screen.

When you don’t have this sort of bezel shader this transposition of the image buffer happens under the hood and the user is none the wiser

So I think it is something to do with the mame core, and core auto-rotation settings. Take a look at the core options in the quick menu and see if there is any auto-rotation type settings, and likely you will need to turn them all off. Then if the image shows up sideways you should use the rotation in the Mega Bezel to turn it vertical. This is what you need to do in Final Burn Neo as well.

Some of the cores work differently though, I use Mame 2016 and it works as I expect out of the box, vertical games show up vertical.

If you do make presets for vertical vs non vertical one thing you can do is separate your roms into vertical and horizontal folders and save a content directory preset for each, this avoids you having to do it for every vertical game.

1 Like

OK, thank you for the detailed answer. I am using the mame2003plus core so I guess it’s possible that’s the culprit? There is a “TATE” option that does turn the play field sideways, and then the “ROATATE” option works in the parameters but the screen is now upside down!

1 Like