New CRT shader from Guest + CRT Guest Advanced updates

Yeah, I understand what you mean. And I’m aware that each piece of hardware had it’s quirks, CRT included. I admire how you guys go so deep into it and prepare very specific shaders and presets, but I don’t want to go down that rabbit hole. I really just want something barebones with minimum customization.

Guest’s slotmask presets already look great for me. A slotmask with visible triads and NTSC dedithering is all I need. The only thing that was bothering me was brightness and gamma tracking, which did not seem accurate to me. Then, as I kept experimenting to fix them, I shared those ringing problems here.

But in the end I believe I’ve arrived at a satisfactory result. I’ll make sure to share it later.

I wish I could, but I don’t have HDR on Linux yet, and increasing my TV’s brightness in SDR mode each time I open RetroArch is not practical. For now I’ll use Guest’s lovely shader :slightly_smiling_face:

That would be lovely! I’ll try it as soon as you release it. :slightly_smiling_face:

1 Like

And here it is. I believe I’m tracking gamma and saturation pretty accurately with this preset.

NTSC-Adaptive reference image:

My preset, based on Guest NTSC:

It’s not perfect. We can see that the darker column is a bit brighter than it should be, and the midrange should be ever so slightly brighter than it is, but I’m satisfied for now.

Furthermore, I had to raise Gamma Out a lot and I’m afraid of raising it more. I already had to reduce Glow to 0.01 because of that and I don’t know what else I might be breaking. What other parameters should I check because of such a big Gamma Out increase other than Glow?

Anyway, here’s the preset:

#reference "../crt/guest-advanced/crt-guest-advanced-ntsc.slangp"
quality = "0.000000"
ntsc_sharp = "-8.000000"
interm = "3.000000"
shadowMask = "12.000000"
maskstr = "1.000000"
slotmask = "1.000000"
slotmask1 = "1.000000"
slotwidth = "7.000000"
double_slot = "3.000000"
glow = "0.010000"
bloom = "0.800000"
halation = "0.050000"
brightboost = "1.000000"
brightboost1 = "1.000000"
mclip = "0.000000"
gamma_out = "2.800000"
post_br = "1.100000"

Oh, and Mario lost most of it’s exaggerated NTSC magical aura!

I’m open to criticism! :smile:

4 Likes

Ok Guys, this is the setting for the advanced version for the Mega Drive. If you like it, I’ll post the settings. Here are some pics :grin:

4 Likes

@guest.r, If possible, incorporate the “glass” effect into your shader, as it’s an option that helps increase the realism of a CRT TV simulation.

I think it’s a very welcome addition.

Thanks.

2 Likes

You can get that today with HSM Mega Bezel Reflection Shader which uses CRT-Guest-Advanced as its default shader.

4 Likes

New Release Version (2022-07-27-r1):

Notable changes:

  • ntsc anti-ringing option added (reduces halo ‘auras’)
  • hires version removed - is succeeded by HD version
  • ntsc-fast version removed - standard ntsc version got about 50% faster in later releases, fast version was only 20% faster compared with normal
  • afterglow effects added to HD version
  • bloom/glow resolution improved with non-standard versions
  • some small afterglow tweaks

Download link:

https://mega.nz/file/t4JlzISC#8FqqbBnVexxQDhk-o6THW_6US32zSun3cwfws7m2EbU

15 Likes

thx very much for the release

1 Like

It’s easy to test which is faster. In Settings->Frame Throttle, set Fast-Forward Frameskip to OFF and Fast-Forward rate to 0.0x, and then simply see which of the two cases give the highest fast-forward FPS while the game is paused in the same spot (best way to do this is to pause the game and do a save state that you then load to compare the different settings.)

1 Like

All steps of every color in that image are distinct on my display. So I would say either the gamma setting of your display is set wrongly, or you’re using some monitor preset that is not neutral (some displays come with “gaming”, “movies” etc presets that ruin the color accuracy.)

Just in case people didn’t know, you don’t have to rely on how retroarch saves presets. After you save the core preset (for example for Snes9x it would be called Snes9x.slangp), and then a game preset where you only want a few settings to be different (for example 'Final Fantasy III (USA).slangp'), you can just edit the game preset to reference the core preset. My 'Final Fantasy III (USA).slangp' for example looks like this:

#reference "Snes9x.slangp"
overscanX = "21.000000"
overscanY = "16.000000"

This loads the Snes9x preset and only changes the overscan settings. This makes it much more convenient to have per-game presets, since you don’t have to update all your game presets when you change a setting that you want to be common for all games.

4 Likes

It doesn’t “ruin” it. Yes, it doesn’t blend completely, but compare it to how it looks compared to the raw image. There’s still partial blending going on. Also, there’s photos of CRTs out there that do the same thing. They produce a sharper image that does look very similar to how this shader looks with increased NTSC res.

2 Likes

I’ve tried this new feature but it does nothing to eliminate de halos that show up when raising Gamma Correct or Bright Boost Dark Pixels. I’ve also checked the code, but it’s stuff I don’t understand.

Regardless, I’m happy with the preset I’ve arrived at on my last post. It has minimal ringing.

Anyway, thank you for the new release! :slightly_smiling_face:
Really looking forward for the stable release and documentation!

Actually, that convenience is now built into RetroArch as well (not sure what version, but it was not too long ago). Just make sure “Simple Presets” is enabled in the menu where you go to save shader presets.
The newly saved preset will reference the current preset you’ve loaded, with just the changed parameters, as per your example. It’s very handy!

EDIT: Sorry, I misinterpreted. I get what you mean now. My bad!

Wait, is that possible? I thought blending occurs because the NTSC signal has not enough horizontal color resolution to transmit that information. How can the TV reconstruct that information if it is not being transmitted?

If we look at NTSC-Adaptive, which I’ve been told is mathematically correct to the spec, it always blends, for example, the Sonic waterfalls.

Is my understanding of the NTSC signal wrong?

If we consider the shaders involved… Sonic waterfall is a 2-phase blend situation, where dithering is blended. NES and SNES games use 3-phase blending, also like on real HW, which doesn’t resolve dithering patterns.

There are major differences how the phase modes work and “ntsc-adaptive shader” is basically two prior shaders merged, one for 2-phase and one for 3-phase modes. So it’s a bit stubborn to have identicall parameter settings for two completely different situations. :slightly_smiling_face:

4 Likes

So, this bundle obsoletes all of the previous ‘advanced’ and ‘fast’ shaders. Does it also obsolete the previous crt-sm and dr-venom shaders? That is: can/should I just nuke the existing ‘guest’ folder in the repo and replace it with this one?

4 Likes

What @RealNC is talking about goes beyond what is already there including what can be done using simple presets.

His method preserves game settings even if the Core Preset Changes. Normally if you adjust croping for example in HSM Mega Bezel Reflection Shader and you save a Game Preset, those crop settings will persist as long as you don’t try to change the Core Preset to another one. If you wanted to change the Core Preset for a game that has a Game Preset saved, you would have to save it as a new Game Preset but all of your crop settings would be lost if you didn’t manually set them again before saving the new game preset.

2 Likes

I was thinking a lot about it.

It’s just this bundle for slang, perhaps i’ll add something else in the future and i don’t want there are too many presets.

Older versions are still available in the glsl repo.

Maybe it would be cool if the ntsc versions can be placed together with the other crt presets.

This leaves some non-working presets in the /presets folder and that’s it.

Anyway @hunterk, thanks in advance. :smiley:

3 Likes

Oh, sure. I was specifically talking about 2-phase NTSC and if it’s possible or not for a CRT to decode an un-dithered waterfall in 2-phase NTSC signal, as implied by @RealNC

Ah yes, you’re right. I see what you mean now. My bad!

2 Likes

The artifacting if we compare 3-phase and 2-phase is also different (default settings). 3-phase merges fields by default, leaving mostly static color artifacts. 2-phase temporal blending is quite neutral, but there is a lot of colorplay with moving scenes and screenshots, luma artifacts from sharpening are more pronounced. Default settings also involve a lot of fringing, which does temporal blending, but introduces spiked artifacts on moving scenes.

If we return to ntsc anti ringing, here is a nice example:

normal:

temp1

with anti ringing:

temp2

An advice how to perhaps setup some phase related presets:

With 2-phase ntsc adaptive sharpness works very well, since the ability to resolve dithering patterns isn’t affected.

With 3-phase there more options, including ntsc resolution scaling, together with mentioned sharpening.

Just some explanations until documentation is ready. :grin:

3 Likes

I’m not an expert. Whenever a CRT produces a sharp image through composite or RF with less artifacts and less blending, people usually mention “comb filters”. Example:

(Direct link to raw video file: https://v.redd.it/qevhw3728hu51/DASH_720.mp4)

This isn’t even composite. It’s RF. Yet the blending looks like what ntsc-adaptive looks like with increased NTSC resolution.

The user had initially posted this after he repaired the caps on the TV:

And someone asked him to post a recording of the waterfall.

3 Likes

I use my presets in S-Video mode because, in general, I don’t like NTSC temporal artifacts. I do like the other NTSC color blending artifacts, though.

Ah, I see the difference in your example there. Great!

But I don’t mind that much ringing in the normal picture. It’s very subtle and looks like it’s accurate to how NTSC works on a real CRT.
The problem I had with my presets was that increasing Gamma Correct or Bright Boost Dark Pixels exaggerated the ringing much beyond that, to the point of it being very distracting, and this new setting doesn’t work in that scenario.

Here’s a pretty bad example with some Gamma Correction and Bright Boost Dark Pixels with NTSC anti-ringing disabled:

image

And now with NTSC anti-ringing enabled:

image

There’s practically no change, so this problem is somewhere else in the way Gamma Correct is processed. But you already explained it a few posts back, so maybe it’s just intentional.

Regardless, from what I can see in your example, it’s a great new setting for those that want to slightly reduce the NTSC ringing. Thank you very much! :slightly_smiling_face:

Hmm. I watched the raw video a few times but it’s a bit hard to see. But it looks to me that the vertical bars of the waterfall are perfectly blended, like in NTSC-Adaptive.

In NTSC-Adaptive, as soon as you raise the NTSC resolution scaling parameter by a single notch, the vertical bars in the waterfall start to be visible. And correct me if I’m wrong, but I was under the impression that any NTSC resolution scaling value above 1.0 is beyond spec, and inaccurate to real CRTs and consoles.

Now, I’m not saying it’s not possible. And I might be wrong about NTSC resolution. I’m just saying that in that particular video the columns seems perfectly blended to me. But it would be cool if there were a video or photo of a more close-up shot. Link me up if you find any!

1 Like

Doesn’t look like that to me. It looks partially blended since I can see vertical lines between the water drops, just like I get with raised NTSC res.

2 Likes