I tried some Blargg Videofilters within Retroarch, but they don’t do anything when using the Megatron shader. I can activate them, but the picture looks the same as without.
I wasn’t suggesting nor expecting that you might actually want to play using that TV setting was just sharing my experience.
I think that has to do with the particular core or game. Possibly something about the pixel format being output so not all cores would support them.
Many do though for example Beetle PSX HW, SNES9X, Genesis Plus GX, Beetle PCE/Fast/SGX, PicoDrive to name a few.
For the ones which don’t support them, you can prepend the NTSC Adaptive Shader or use one of the Sony Megatron Color Video Presets which already has the NTSC Adaptive Shader integrated.
@GPDP1 has provided @guest.r’s more up to date version a few posts above.
Thanks, with the SNES Snes9x Core it works! And it looks good so far. The composite and S-Video versions can help to hide the limitations of lowres games pretty good, especially on a 55 inch OLED, which normally is way too big for 240p content.
The 4:3 diagonal is between 40 and 45 inch approx. which translates to a huge CRT. Normally I would play 240p games on a CRT with a max. diagonal of 25 to 29 inch, so games look not too crappy. This is why I am thinking about getting a second 27 or 32 inch 4K monitor. But the affordable monitors are all LCD and not OLED, which at the moment stops me from buying. Maybe in the future I will get one, when they get cheaper.
Oh no, no your feedback is reward enough but thank you for the offer! Im actually going to start a YouTube channel shortly (next few weeks), going through the rendering pipeline of modern games (D3D11 and 12) and profiling them (with a special tool Ive written). Explaining what part is doing what and which parts are fast and slow and why. Essentially have you ever wondered what actually happens behind the scenes when you choose ‘high’ or ‘low’ on a graphics option in a game. Hopefully I can shed some light on that for you. So be my first YT subscriber - its going to be bumpy ride.
Oh wow, please let us now when you started the Youtube channel, I will be your subscriber Now I will test out Reshade with your Megatron Shader
@guest.r, @hunterk Any chance we could see this available as a standalone NTSC Shader/Preset merged and included in the RetroArch repo?
more likely I would just replace ntsc-adaptive with it, since it’s just that with some more stuff added on top (and ntsc-adaptive is itself just maister’s ntsc shader variants smooshed together with automated switching of its behavior based on the image dimensions).
I had been backporting guest’s additions into ntsc-adaptive and modifying his presets to point there (as is standard practice in the repo to avoid unnecessary code duplication) but it was making it harder to update guest’s shaders, so I just stopped bothering with it.
This is the way.
I just swapped out the old NTSC Adaptive for the updated Guest-Advanced-NTSC version and came up with a new mind blowing (at least to me) Sony Megatron Color Video Monitor preset!
It’s really seems better in every way than the old NTSC Adaptive while maintaining similar functionality as well as usability.
Too bad sharing a regular screen shot isn’t going to convey how awesome this preset looks in person.
There must be a way to capture proper screenshots using RetroArch in HDR mode.
I might have to setup my camera and tripod and practice a bit because I really want others to be able to understand how awesome this simple combination is.
Thanks @hunterk, @GPDP1, @guest.r, themaister and last but not least @MajorPainTheCactus for making this awesomeness possible.
If only @Nesguy could see what I’m seeing right now!
I tried.
In person the colours glow naturally a lot more and they’re a bit more saturated.
Be sure to brighten your device when viewing in order to recreate the glow.
CyberLab Megatron 4K HDR Game SNES Composite
@MajorPainTheCactus, all that I would like to see is probably an easy way for users to integrate the new Guest NTSC stuff in your MegaTron signal chain because that’s a part of the CRT emulation process in my opinion and Shadow (Dot) and Slot Mask implementations that would work correctly with my LG OLED TV in a similar manner what how they work in when I use CRT-Guest-Advance and Mega Bezel Reflection Shader. We know that LG OLED TVs can do all three mask types but what we might need is just a special implementation to get things drawn and aligned correctly.
This thing (shader) is fantastic and game changing. I have no reason not to use it because I already paid for the HDR right so why compromise when the tech is available now?
It’s just too ironic that it’s just as difficult to show off as a real CRT so many of the uninitiated might just shrug their shoulders and bypass it.
Please, I deserve no credit. I’m flattered, but all I did was delete passes and change a couple of things in the preset file so it all linked up without all the other passes in guest’s shader chain. The real hard work was, of course, done by Themaister, guest, and everyone else who worked on NTSC emulation before them.
Is it possible to also include the Filtering Section in a similar preset?
That Horizontal Filter Range plus the Horizontal Filter Sigma, Subtractive Sharpness and Subtractive Sharpness Shape can really get back some of what’s lost when doing lower resolution scales for blending purposes and on the contrary can also allow the use of high resolution scales while taking a little off the edge if the Filtering Section is used for more softening than sharpening.
I had a similar thought a few weeks ago, actually. I briefly attempted to include it, but I had some trouble getting it to work. I could give it another attempt, I suppose. I wonder if the HD preset’s filtering implementation would be better for a standalone NTSC preset, though, as that can also filter vertically.
Trust me, don’t do this. Leave the NTSC filtering set as it is. HD isn’t “better” it’s just more optimized for high resolution cores and upscaling.
Something like this was attempted before (splicing together different parts of different Guest Shaders) and the result was a mess.
I need a crash course on how to append and prepend shaders so that they almost always work. I don’t yet understand what I need to do or change if I wanted to add Super-XBR to Sony Megatron Color Video Monitor for example or more specifically how to combine both the Guest-NTSC section and Super-XBR with Sony Megatron Color Video Monitor.
The icing on the cake might be Grade too but at the moment, I’ve been able to get things looking really good.
I’d really love to learn how.
If you’re mixing in xBR, you probably won’t be able to do it just with append/prepend because you’ll need to set fractional scaling in the preset, which you can’t do via the menus.
Maybe that might make for a nice PR? That way we’ll be able to see the Shader come to life once we start plugging the right values in the Shader Menu.
Thanks @hunterk, I think I just need to dedicate some time and try to follow some of the many existing examples and I should be fine.
Oh wow this looks fantastic - great work @cyber. So what can I do to help integrate? In fact do you need me to do anything?
I started a lot of the colour stuff based on the Grade implementation but then over time slowly ditched stuff as it didnt quite work with the way I had done stuff. However most of the end result is there already.
Where do I find this preset? Do I just download your cyberlab pack?
Glad to see you excited about your stuff again!
Well it’s really my shortcoming that I don’t fully understand how to or know when to use what scale settings in order to combine certain shaders so I was just going to spend the time to finally try to learn but I think what might be useful to help users create some beautiful presets are maybe a few more generic base presets which include a few very powerful and effective Shaders pre-integrated.
The first of which is the one that @GPDP1 helped us with already. That’s a direct upgrade and drop-in replacement for the example you included which uses the old NTSC Adaptive Shader which happens to be broken.
He didn’t include the Filtering Section, which might have come in handy in some instances but I don’t think it’s absolutely necessary at this point. What he did is a great start.
The next thing would be to integrate the new Super-XBR from Hyllian in a generic Base Preset. So just the Megatron and Super-XBR would make for some really awesome RGB-esque presets or even cleaner than RGB without some of the low res harshness which can be seen on some consoles.
Last but not least a generic base preset that combines Super-XBR, the new Guest enhanced NTSC-adaptive that @GPDP1 isolated and good old Sony Megatron Color Video Monitor.
Instead of 3 separate base presets you could have 1 or 2 with toggles to disable Super-XBR or the NTSC Section.
Not sure what the defaults are but it would be nice to have a decent starting point for the two luminance values.
For My TV in HDR Game Mode, I’m having success with Peak Luminance of 630 nits and either 720, 830 and 900 for Paperwhite. So maybe 600 and 700 or 700, 700 might be good at least for LG OLED TV users. I’m still experimenting though.
I guess we can take it one step at a time. Cover the low hanging fruit first, give users time to get more familiar and fine tune stuff as best as they can, then from there see what can be improved.
Other than these things mentioned here, I mentioned some other stuff in a previous recent post that I’d like to see implemented, which are some working Dot and Slot masks for my display type.
Don’t forget the quick workaround for the Vulkan HDR bug. I just added a # to the offending line in the Shader.
Oh, I’m still working on my Sony Megatron Color Video Monitor preset pack. I should have something releasable probably before the weekend is over.
I really want to try to integrate the Super-XBR shader before releasing but I can do that after. It might be hard for me to go back to using non HDR Shaders at least on an HDR display.
I can PM you a preliminary version of my preset pack if you’re eager to start to do some stuff right away though.
Finally I’m not sure how possible or feasible this might be but I really enjoyed using the Mask - Triad Size Desired feature in CRT-Royale. I know it’s mask implementation might be different due to the use of LUTs but the scalability is remarkable. Sometimes when the TVL is too low, they leave all sorts of untidy artifacts at the edges of objects. I was able to almost fully eliminate stuff like that, while achieving my desired low TVL looks.
While with Sony Megatron Color Video Monitor and CRT-Guest-CRT-Advanced the TVL might be adjustable only in larger steps.
CRT-Guest-Advanced recently got a Mask Width feature but I’m not sure if it’s similar to what I saw with CRT-Royale because I haven’t tried it yet.
Currently I use the NTSC Resolution Scale to achieve a similar effect but as you go down in resolution things can get soft and blurry.
So this is a sort of wishlist for Sony Megatron Color Video Monitor.
Thanks for making this possible!
Another nice Shader to add would be the Sharp Smoother Shader.
I ignored Grade but the new Grade has some really nice features, for example the Sega Genesis/Mega Drive colour palette!
It also includes the Sega Brightness Fix.
One more thing, would it be okay if I distributed my modified version of the crt-sony-megatron.slangp file in which I commented out the scale_type2 = viewport
line or should I wait until there’s an official fix to deal with that issue?
I actually ported the phosphors/color systems that you didn’t already have included from the current version of Dogway’s grading shader for my own use if you want to include them:
NTSC-J P22
- const mat3 kNTSCJ_to_XYZ = mat3(
- 0.458432f, 0.309549f, 0.182474f,
- 0.256722f, 0.668848f, 0.074430f,
- 0.018337f, 0.127136f, 0.943584f);
P22 (80’s)
- const mat3 kP2280_to_XYZ = mat3(
- 0.460844f, 0.307613f, 0.181910f,
- 0.244311f, 0.676311f, 0.079378f,
- 0.007123f, 0.106901f, 0.975034f);
P22 (90’s/tinted phosphors)
- const mat3 kP2290_to_XYZ = mat3(
- 0.404151f, 0.354887f, 0.191418f,
- 0.201984f, 0.714530f, 0.083485f,
- 0.000607f, 0.062960f, 1.025491f);
RPTV (late 90’s/early 00’s)
- const mat3 kRPTV00_to_XYZ = mat3(
- 0.331718f, 0.429476f, 0.189261f,
- 0.173634f, 0.738044f, 0.088322f,
- 0.012958f, 0.091941f, 0.984159f);
Generated using https://www.russellcottrell.com/photo/matrixCalculator.htm with the reference white set to D65 so they would play nice with either your color temperature adjustment system or just changing the color temperature on the display (which is my personal preference).
Welp, I managed to get it working after all:
shaders = "9"
shader0 = "shaders_slang/crt/shaders/guest/advanced/stock.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = "PrePass0"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass1.slang"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "NPass1"
float_framebuffer1 = "true"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "4.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass2.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = ""
float_framebuffer2 = "true"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "0.500000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass3.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = ""
float_framebuffer3 = "false"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders_slang/crt/shaders/guest/advanced/custom-fast-sharpen.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = "NtscPass"
float_framebuffer4 = "false"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders_slang/crt/shaders/guest/advanced/stock.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "true"
alias5 = "PrePass"
float_framebuffer5 = "false"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders_slang/crt/shaders/guest/advanced/stock.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "true"
alias6 = "AvgLumPass"
float_framebuffer6 = "false"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders_slang/crt/shaders/guest/advanced/stock.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "LinearizePass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced-ntsc-pass1.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = "Pass1"
float_framebuffer8 = "true"
srgb_framebuffer8 = "false"
scale_type_x8 = "viewport"
scale_x8 = "1.000000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
I ended up having to replace all the in-between passes with stock passes. I’m guessing it’s probably possible to do it more cleanly without all those stock passes, but as far as I can tell, this works. Here’s a shot of this preset combined with Megatron’s PVM 20L4 preset on my humble 1080p monitor set to max brightness: