I just want to say, that I am glad that this shader is getting better and better through you guys, especially with correct color conversion and gamma mapping, as you are doing at the moment. Thank you so much.
In my opinion this is the most authentic shader available today and that it’s very well worth every improvement. It’s just sad, that the reshade port doesn’t seem to work with DirectX9, Open GL and Vulkan, which many Standalone emulators use.
For example, the excellent Redream Dreamcast emulator is based on Open GL and therefore I can’t run it with the shader in HDR. Also the standalone PCSX2 emulator does crash with AutoHDR, despite being configured with DirectX11/12.
I hope, that there is the possibility that the Megatron Shader with AutoHDR will support all graphic API’s in the future. Otherwise my only choice might be to get the new Retrotink 4K scaler with implemented 4K CRT HDR masks, which is independent from software compatibility issues and can just be hooked up between my OLED and PC. The only problem is, that this will be expensive…
Yes, I tried the standalone Flycast with reshade, but it also crashes with the AutoHDR files and always resets to OpenGL in the menu. Only if I delete the AutoHDR files in the Flycast main folder, it works with the shader in SDR - with low brightness.
On the other hand, the Flycast Core in Retroarch has graphical glitches and also the 4K CRT mask is not accurate, because the internal resolution is somehow used differently in RetroArch in comparison with the standalone Emulator, as it seems to scale the resolution also externally, which the Megatron shader doesn’t like and doesn’t apply the mask correctly.
The only standalone emulators which I could get to run perfect with reshade and HDR is the PS1 emulator Duckstation and Mame. The Mame standalone works correctly in HDR if I choose the video option “bgfx” under the Mame settings, which should be based on the DX11 or 12 API.
Sorry to post these pictures with the mask set in SDR, as I have not yet found a way to save screenshots correctly in HDR and view them properly. If someone has a suggestion, that would be very nice, as it would make it a lot easier to post captured screenshots here with higher brightness etc. as they would look when the game is running in HDR, without using a smartphone.
This is how the game looks in the standalone Flycast emulator, with correct mask in comparison to Retroarch. But unfortunately without HDR, as it crashes and resets to OpenGL.
From a closeup, you can see, that it faithfully resembles an Aperture Grille mask. Just a pure phosphor mask without any of additional bulk processing, which for me personal is not needed and also keeps the shader lightweight and not hardware demanding.
And HDR finally makes it possible to have sufficient brightness too.
It’s really just compatibility, which at the moment is lacking with the missing API’s and the occuring crashes I experienced. Beside this and maybe some finetuning of the Color and Gamma mapping mentioned above, the shader is probably as good as it will ever get in regards to mimicking a CRT.
I think it can even surpass CRT’s in some aspects, as OLED’s overall have no convergence issues and better black level, just to mention a few things.
I really like the way this mask is looks. What TV/display do you use if you don’t mind me asking and what are your Peak Luminance and Paperwhite settings?
This is just a “Zoom-In” from the screenshot I posted above from the Flycast Emulator running Soul Calibur. I use a LG GX OLED TV and currently I am running Peak Luminance @ 1000 and Paperwhite @ 700.
Here are some close pictures I took with my smartphone from the same scene off the TV. The first is with RGB Subpixel Layout and the second with RWBG Subpixel Layout:
It seems, that both Subpixel Layouts work well with WRGB OLED TV’s, so I will stick with RGB.
Also I want to mention, that the Red, Green and Blue Deconvergence settings in the shader allow for very precise fine tuning of the phosphors, which is a very nice addition to the shader.
It can also help to eliminate “Rainbow” artifacts when games with slightly different resolutions are being played. I experienced this for example with Mortal Kombat, which has a slightly different resolution than 240p or 224p. Here the Deconvergence settings have to be used for a clean picture.
So the shader looks better in the standalone emulator with reshade than in retroarch? I had problems dialling in the correct resolution when using crt shaders in reshade, but haven’t tried in a while. Has it got easier?
I’m surprised by the rgb mask on your oled, looks good. Does your tv actually reach 1000 nits or is that just the setting you preferred the look of from the shader?
As a side note, I’ve also been watching the retrotink4k progress with interest. Tempted to use it for connecting an Amiga to my oled, but as you say it’s quite an expense!
This has been proven to not generally be the case at least with LG OLED TV models/shader preset settings prior to yours.
If you don’t mind, can you take some stabilized pics of something white or grey showing the RGB phosphor triads using RGB layout and OLED layout, both with and without Deconvergence using the Mask Accurate Mode (feel free to include Colour Accurate as well if you wish) please?
I just want to see if there has been a positive change in the layout or panel technology for our use case.
This is correct, I more use vertical Deconvergence to attempt to mimic the slight imperfections in convergence that a real CRT might have but I haven’t been using it in a more intricate way recently.
Are you saying that the tweaked Deconvergence is what might also be contributing to that near perfect RGB layout in those pics you shared?
I really have to ask again…just for confirmation…not doubting you…
This is from your LG GX OLED TV using RGB Layout in Sony Megatron Color Video Monitor using tweaked Deconvergence settings?
Okay so I just did this and it looks much better. Just the way it did when I made my presets.
The only difference between colour_grade.h in 5.6 vs 5.7 is that this:
v5.6
const vec3 linear = r601r709ToLinear(white_point); //pow(white_point, vec3(HCRT_GAMMA_IN));
…was changed to this:
v5.7
const vec3 linear = pow(white_point, vec3(HCRT_GAMMA_IN)); // r601r709ToLinear(white_point);
I’m not a coder so I don’t know what it does but it looked and worked much better before. Unless this is really how things are supposed to be and need to be for whatever reason, can I kindly ask that this be reverted in the main RetroArch repo please?
That would be the bugfix. The version in 4.2-5.6 was causing the darkest colors to be brighter than they should have been relative to brighter colors, at least on my, @MajorPainTheCactus’, and @Wilch’s systems. MajorPainTheCactus thought it was double tonemapping.
If you set Megatron’s brightness, saturation, and contrast to 0, gamma to 2.22, enable Colour Accurate mode, plug the same peak luminance and paper white settings you use for Megatron into Retroarch’s stock HDR menu, and compare Megatron to disabled shaders, does the output without shaders look more similar to 5.6 or 5.7?
Edit: It’s probably not this, but can you double check if you somehow ended up with “Output dynamic range” set to Full in NVCP, but your display’s Video Range/Black Level set to Limited/Low? Because as it turns out, that more or less completely covers up the bug in 4.2-5.6 and crushes blacks in 5.7.
Okay, I did this and at first I was wondering how I was going to compare output with scanlines and Mask enabled to without because obviously the Shader On would be darker but I did test both scenarios with the v5.6 and v5.7 colour_grade.h and the version 5.6 one is definitely closer to with the shader off. i.e. It’s considerably brighter overall and therefore it’s much closer to the brightness with the Shader Off compared to v5.7.
It doesn’t only affect the near blacks, even the Yellows, Blues and Reds seem darker in the game that I used for my latest test - Lords Of Thunder - TurboGrafx16 Super CD-ROM².
It’s probably not, because I just checked this and my driver is set to RGB 4:4:4 Full and my TV’s Black Level is set to Auto.
The Megatron Shader is also usable with Open GL and Vulkan API’s in HDR - if you own a Nvidia graphics card. I searched online for solutions and discovered this thread at the reddit forums:
In Reshade in the Megatron menu you have to leave the SDR/HDR setting in SDR, but it works in HDR, because windows converts everything now from SDR in HDR, regardless if reshade is used or not. And all colors look like they should look with correct color and gamma tonemapping - aaand HDR brightness
I think you can now run every CRT shader you like, for example from guest or CRT royale etc. with higher HDR brightness and also use the Megatron shader within Retroarch with the SDR/HDR setting set to SDR and it will work too in HDR.
Only the Megatron reshade shader from our man, MajorPainTheCactus is needed, the AutoHDR reshade plugin is not needed for HDR to work anymore!
When you start the Game, you even get a HDR message from Windows, stating that it’s activated.
I hope you will test it out, if you have a NVidia card - and post some feedback.
Also a little hint I discovered: In Windows 11 you can press the following buttons on your keyboard simultaneously to activate and deactivate HDR without going in to the settings menu:
This is the message I get now from Windows 11, when I start a game (sorry for german language, it somewhat says, that the game was improved with a brighter and more vivid image via Auto HDR ):
This is how it looks ingame (as far as my camera is capturing it) with the Megatron Reshade shader set to SDR running the Sega Supermodel Emulator and Daytona USA 2:
My camera somewhat makes the colors slightly duller than they really are, in reality it all looks punchy and vibrant like on a real CRT TV, without any exeggaration or oversaturating like the “HDR Vivid” setting in the Megatron shader does ever so slightly.
Basically the Swapchain setting in the Nvidia control panel activated Auto HDR for games on my PC and in the first place allows Open GL and Vulkan games via DirectX API to run also in AutoHDR, which was the missing part with Megatron reshade, as the AutoHDR reshade Plugin from MajorPainTheCactus does not work with Open GL and Vulkan at the moment.
Here is some discription from Microsoft regarding AutoHDR:
Originally this statement along with your enthusiasm about your discovery had me a little confused because I wasn’t sure if you were referring to the Sony Megatron Color Video Monitor shader in RetroArch as well because this has supported HDR in Vulkan for a very long time now.
You seem to have a really good emulation setup there, especially with those magic RGB phosphors seemingly working properly on an LG WRGB/W-OLED TV, which is actually a first at least for me.
Would it be possible for you to create a couple step by step guides using text, images and video or a combination of the 3 in a simple and clear manner that a baby can understand, showing users how they can set things up the way you have so that they can also share and experience what you might be experiencing?
I think this would be an immense contribution to the emulation community in my opinion.
As a matter of fact with this entire area of HDR implementation is probably one of the most significant milestones in CRT emulation development and history to take place in a very long time, yet who really knows about this appart from possibly a handful of us forum lurkers?
I would say that that is a tragedy.
I’m nervous. I hope I can get mine to look as good as yours. Lol
I believe you! I’m just imagining all the succulent CRTness you’re enjoying!
Thanks a lot for sharing this!
There was another user over on my preset pack thread a while ago who told me he used AutoHDR with other shaders. At the time I didn’t really think much of it. Just felt like AutoHDR might alter the colours but now you have me really interested in seeing it for myself.
After experiencing these HDR shaders it’s really hard to go back. It feels like a generational advance in CRT emulation.
I look forward to seeing universal support for HDR modes in all shaders in the future.
After I posted here this morning, I did some more tests with the PCSX2 and Redream emulators and they don’t work with the Windows 11 AutoHDR feature, but I think there are also workarounds for this, if you dig deep enough in the internet for solutions.
But so far I got some of my favorite emulators working with AutoHDR, which includes Teknoparrot and Sega Supermodel.
Here is a quick Step by Step guide. At the moment I am not home, so I can’t post videos or pictures, but I try to explain it as good as possible.
Windows 11 is mandatory and any other OS will not work as far as I know.
Make sure that your TV or Monitor is working in 4:4:4 chroma, so the shader will not look distorted. Look also in the control panel of the graphics card, that the signal is send in RGB
Check your video levels, the TV and PC should work in full range 0-255
Install your favourite emulator and set your video settings as wished in the emulator before installing reshade. Set the resolution output to borderless full screen in the emulator
Install the reshade Addon version and select the emulators exe file during installation. Then choose the API the emulator will use, i.e. DirectX, Vulkan or Open GL
Note, that Vulkan and Open GL will only work if you have a Nvidia graphics card with a current driver and set the Swapchain “hack” in the Nvidia Control panel, as described here:
This will allow the Vulkan and Open GL API to “work over” the DirectX API within windows and makes it possible to run the AutoHDR Windows 11 feature which normally only would work with DirectX11 and 12.
Run the emulator and look if the “AutoHDR” message from windows pops up and also look if the reshade menu in the left upper corner is activated
If everything went fine, close the emulator and insert the reshade files from MajorPainTheCactus into the reshade-shaders / Shaders folder:
Start the emulator again and the Megatron shader menu should be available in reshade now. There you can tune it to your liking. With Windows’ AutoHDR you have to set the shader itself to SDR, as Windows 11 now does all the tonemapping
I think these are the basics and it would be nice if you try it for yourself and post your opinion.
If you search on Youtube about the Windows 11 AutoHDR feature, you can see that it works remarkably well with many games:
Even if it’s a kind of “fake” HDR solution, because the games we use are not programmed with HDR in mind, I think it can look very convincing. With OLED’s I see no other solution, as they are just too dim in SDR for my taste with shaders that use 100% masks. Brighter LED, especially newer Mini LED TV’s and monitors should work in SDR too without all those workarounds. Maybe even the newer LG G3 OLED, which I want to buy next year when prices come down, may work in SDR, as it has much higher brightness than my current LG GX.
If there are any questions regarding the setup, I try to help.
Thank you so much for this, you’ve given us plenty to work with here. I’ll definitely give it a try at some point time permitting.
For Dreamcast you can use the FlyCast Core in RetroArch alongside the Sony Megatron Color Video Monitor Shader.
On another note, this is what my LG 55OLEDE6P Subpixel Layout looks like when displaying Full White using Aperture Grille Mask at 300TVL. Mask Accurate
Mode, No Deconvergence.
I’ve tried adjusting the Horizontal Deconvergence while using RGB Layout to see if I can get my triads to look more like your RGB example but I it doesn’t seem to have the ability to move the subpixels any nearer or closer to one another (which is understandable because you can’t light subpixels which aren’t there so how do you move red, blue or green phosphors horizontally in relation to one another.
Would it be possible for you to share a couple photos of your screen showing its subpixel layout under similar conditions?
I just want to see if there is a difference in the layout of the subpixels in your more modern panel.
I used Macro Mode with exposure set to the lowest with some basic mechanical stabilization for my pics.
I am also using Subixel RGB layout and it looks good on my LG GX.
As soon as I am home and have some time I will post some screenshots.
Regarding Flycast, I already tested the Retroarch Core as I posted earlier, but the Core has more graphical glitches than the standalone Flycast emu and also scales the games differently resulting in weird looking CRT masks.
I also have to try out Flycast with Windows AutoHDR again, maybe this will work.
if you use auto hdr, make sure to use the calibration tool to get accurate nits and white level.
“Windows HDR Calibration”. This will create a special HDR color profile that Windows will use for AutoHDR.
If you need to automatically turn HDR on/off, you can try AutoActions