Mega Bezel Reflection Shader! - Feedback and Updates

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.

2 Likes

I see plenty of images around showing a bezel featuring a Commodore 1084S monitor. I still couldn’t find how to use it. I also downloaded the extra examples packages.

I would love to use the default shader, with the 1084S bezel (just the monitor if possible, without extra stuff to the sides).

2 Likes

In the “RESOURCES” section at the top of this thread you will find links to my thread and @TheNamec’s thread. We both have presets that use a 1084S… each of our own making.

The installation instructions can be found on the relative thread. If you have any questions/issues please post in those threads so other users may benefit from the answers.

Once you have the presets working you can load one and save a core, game, or content directory preset. Then the saved preset can be edited, (For your personal use.) and the unwanted elements replaced with a placeholder.

4 Likes

So the caching in referring to is the caching of onscreen graphics from frame to frame when they are not changing.

For caching of graphics between frames, I’m not sure this is done at all. For texture load time, one Mega Bezel preset could easily have 6 4k textures to load.

I haven’t profiled this, but in a shader chain like the Mega Bezel which has a lot of code and a lot of passes if you get the log window to come up, and watch while it’s loading you can see all the time it’s talking to recompile the same shaders as the last time you loaded.

Also if someone is using the Mega Bezel they are 99% not using the D3D driver, as the load time is crazy long, like 5-10 minutes, if it manages to load at all.

It seems likely that we need to add compiled shader caching to the Vulkan & GLCore drivers, so we can do a checksum on the pre-compiled shader to see if it has changed and if not reuse the last compiled shader.

1 Like

What data would you expect to get cached across frames? I suppose more generally what caches are we expecting to help in this situation. It’s highly unlikely any data will survive more than a pass in the GPU caches for instance.

Regardless it’s very strange that even 20 shaders would take more than a second each to compile. Im going to guess something else is going on.

1 Like

There might be a strong correlation between compilation times and coding approaches. On my rig the crt-guest-advanced-ntsc compiles like in 1 second. It contains 15 passes and runs like 950 fps on the test image. crt-royale is a 12 pass shader, runs 1150 fps and compiles like 5 seconds. OTOH the coding approach is different. While guest-advanced is quite linear with if-else-parameter code path logic, royale uses more constants, #defines, #includes and heavy function nesting, a bit scattered in different files too. I guess it’s very optimized for execution, but it takes a while for assembly and register/shader processor usage optimizations.

Also d3d hlsl code is translated from .slang in real time and complex shaders might give some processes a hard time to finish with compiling.

2 Likes

I don’t know I doubt very much coding style is going to dent compilation perf that much - certainly not to the degree we’re seeing here. If you look at a UE4 or UE5 shader they take in tens of files 1000s of lines of code and are a huge rat’s nest of #defines etc and d3d compiler will just smash through them regardless.

I’m guessing it’s your last point: the slang conversion that is the source of the issues. But then until someone has profiled it who knows, you could well be right on coding style.

2 Likes

Yeah, I’m not suggesting that things should be cached across frames automatically, I was just explaining that the Mega Bezel does “caching” of graphic elements so they do not have to be regenerated every frame, for example all of the image elements behind screen are rendered once, and then in the next frame if no parameter values change then the pass will just output the result of the last frame.

Some presets in the Mega Bezel have up to 40 passes, so one second a piece would still add up to 40 seconds :frowning:

Although there still may be something else going on

In guessing it may be the slang conversion as well

2 Likes

Yeah but the vast majority of those shaders are super simple right - it still doesn’t add to me.

2 Likes

Thank the author for his great efforts! The appearance of this filter gave me enthusiasm to make one with the appearance of my own room。

15 Likes

Ha, great idea and execution :smiley:

4 Likes

This is Awesome! :star_struck:

I love the video panning over to show the real thing :grin:!

One of the things I really enjoy about this and the video is how it shows all these forms of playing games together, hardware and emulation :smiling_face_with_three_hearts:

Great game room by the way :grinning:

6 Likes

Here’s the blasting Amiga artwork Scarecrow by Made mangled thru Mega Bezel Reflection Shader.

Would you believe it’s just 64 colours? :heart_eyes:

The level of detail is astonishing and brings some evidence that these artworks were not meant to shine on razor sharp pixels, but rather on smoothed, subtly glowing phosphors.

I was so impressed by the CRT - A2080 - HiRes SmartRes Shader from @guest.r included in WinUAE pack by @Rincewind… I had to build my personal take leveraging on extra candies from Mega Bezel and Guest Advanced.

9 Likes

Nice work @TheNamec! I can see you were going for an aperture-grille look here, well done. Indeed, Guest’s CRT shaders really bring these Amiga low-res images to life — just like how I remember them on my Philips CM8833 monitor back in the day.

By the way, there is a whole pack of test images in the files section at the end of my article. I’ve spent quite some time finding images that are useful for testing the various aspects of the CRT shaders, others might find them useful too.

4 Likes

Thank you! That screenshoot was done using Shadomask type 2 following the original preset, with CRT mask just adding subtle zig-zag pattern (more noticeable in dark areas).

By looking at your captures, I think the “stiched” look from Commodore slot-mask suits better with Shadowmask type 3 (at least on 1080p).

Type 2

Type 3

And these really are beautiful!

In this case I used Shadowmask type 3 and ScanlineType - GSL 2. I think it’s the right combination to have both the stiched texture and the subtle scanlines from Commodore Monitors. Looks pretty fine on integer scaling.

4 Likes

Thank you for the test images… they are priceless!

3 Likes

This is similar to the premise behind my new CyberLab Sega Genesis for Blargg_NTSC_Genesis_Composite_CyberLab_Special_Edition console specific preset.

This is also similar to my reasoning behind using Mask 4 with my Computer Monitor presets which were inspired not necessarily strictly by the look but by the thoughts, ideas and memories of my Commodore 1702 Monitor that I grew up playing on.

I wholeheartedly concur @Rincewind. I will definitely download and take these for a spin when I get a chance and run them through my shader preset pack. They look absolutely gorgeous.

It feels like we’re slowly drifting into the stage of our lives akin to our grandfather’s having a smoke of their pipes while having a chat and a drink of Scotch or Brandy over these vintage works of art from the old days of our youth.

So this is what getting old feels like…lol.

2 Likes