New CRT shader from Guest + CRT Guest Advanced updates

Thanks @guest.r, I was literallyt working on the same thing and about to share what AI proposed for the Shadow Masks:

if( zoomed ) { if ((mask_layout < 0.5 || mask_layout > 2.5) && bsm_offset) sm_offset = 1.0; else if (bsm_offset) sm_offset = -1.0; }

I hope I’m not frustrating you with my “slowness” but I noticed that you used GBR for Mask Layout 3 instead of BRG. I’m assuming this 4th layout is supposed to address BWRG/WOLED.

Since RBG works properly for RWBG/WOLED (but BRG does not), why did you stray from BRG?

Forgive me for thinking that this is an enlightenment classroom but I find all of this quite interesting.

If I recall correctly, @azurfel used BRG subpixel layout for his Adamantron fork of Sony Megatron Colour Video Monitor to add tentative support for BWRG/WOLED.

Update, seems like he included BRG as well as GBR and a host of other possibilities for mask layouts as well as the kitchen sink.

1 Like

OK now the 4th layout (3.0) is BRG.

2 Likes

GBR wasn’t intentional?

This is a snippet from @azurfel’s Adamantron fork. It includes a host of other combinations, probably for contingency and testing purposes. I’m just trying to understand the reasoning behind the choices.

#define kBGR              ((kBlue  << 0) | (kGreen << 4) | (kRed  << 8))
#define kGBR              ((kGreen << 0) | (kBlue  << 4) | (kRed  << 8))
#define kRGB              ((kRed   << 0) | (kGreen << 4) | (kBlue << 8))
#define kGRB              ((kGreen   << 0) | (kRed << 4) | (kBlue << 8))

Anyway, @guest.r, thanks alot for your precious time today. A lot was accomplished. Now off to playing and testing. The next thing I would like to do for my shader stack is to integrate adaptive-strobe-koko into my final pass, which happens to be Phosphor Persistence.

@kokoko3k, any ideas?

1 Like

There are 6 permutations and 2 different sequences possible. There is no other major science behind it. The real thing begins with testing with a display with an exotic panel, which i do not posses. So it’s gotta start somewhere. At the time being expanded layout options only make sense for testing.

1 Like

Initial test results:

Mask 6, Size 2 RGB/BRG and RBG/BGR look very similar, just shifted.

While with Mask 12, Size 1 each mask layout appeared distinct. There was a huge difference between RBG and BGR, with RBG’s blue emulated phosphor looking half as wide as the Red and Green emulated phosphors.

With RGB, the blue phosphor appeared dark, almost like navy blue.

BGR looked the best. Pics should follow when I get a chance.

On another note @kokoko3k, I was able to roll adaptive-strobe-koko into hdr.slang with the assistance of AI.

1 Like

I added BRG equivalents to the mask patterns that were already included for the various combos of RGB/RBG/BGR, resolution, and TVL, under the existing system inherited from Megatron v2.

The define section also includes patterns to support the equivalents for GRB and GBR subpixel layouts. But as you may recall from discord discussion, i found that actually adding those subpixel layouts caused notable performance issues, even on my desktop 2080, so they were not included in the beta release.

2 Likes

Note, when I said I was trying to understand the reasoning behind the choices I was equally thinking about why Guest.R might have chosen GBR initially for the 4th Mask Layout.

I used the layouts in your fork as a point of reference. Guest.r opted to substitute GBR for BRG.

It was only on going through the Adamantron fork that I noticed the long list of subpixel mask possibilities included. I didn’t realize that they were not all active. On seeing that you also had a GBR mask, I was wondering about the reason for it in both instances.

1 Like

Ah. GBR is used for RBG/4K/800TVL, for both aperture grille and slot, in both Megatron v2 and Adamant. Not even one that i added

2 Likes

@PU786 too

Oky, I’m on holiday for a few days, so I could not be helpful, but usually when a shader is single tap, its vertex and fragmeny code (the text) can be blindly appended or prepended and it just works. You could ideally combine persistance,strobe and hdr.

1 Like

That’s easy for you to say! :sweat_smile:

Will this “just work” or be so easy if one is utilizng the “only moving parts of the screen” feature?

Indeed, that needs special care (not single tap, but double, because it look/up feedback too), but that setting is to reduce flicker and experimental; at 60hz is more effective, but on 120hz I think you can even avoid using it. Did you find it useful and effective in reducing flicker and motion blur at 120hz too?

1 Like

I’ve been so busy building with only a little testing/playing in between that it’s hard to really single out exactly one area or shader that is driving the improvements.

Right now spright flickering effects look flawless, like true transparency. That could be due to adaptive-strobe-koko, tweaked phosphor-persistence before it and even a side effects of running at 120Hz. Everything feels smooth. I’m definitely not missing my display’s hardware strobing BFI.

If using that is simply placebo, then I’ll take placebo any day!

I think it’s a nice baseline with less side effects, performance wise than the full screen approach.

At some point if I upgrade my hardware, I can easily switch to the full screen option but in terms of balance, this and this shader stack takes the cake (at least for me) and the icing on that cake consists of all the wonderful updates that went into CRT-Guest-Advanced-NTSC yesterday and over the past couple weeks!

I wish you could experience it man.

I just want to play all my games over again, especially ones with sprite flicker in them!

I agree, mask/scanlines are definitely on par with crt look, motion crispness is what would make it perfect; thay’s the feel I get when I play with the real cab.

1 Like

If they can be enabled when needed, yeah it’s a real benefit. But something like Phosphor Persistence I feel needs to be combined with the interlacing Trigger so it only becomes enabled with Interlacing itself.

When running back and forth across the bottom of the first level in Sega’s Lion King, I only observe the green leafs in the background being clear with that option disabled. However it’s still leagues beyond the other subframe options, very tweakable to look correct per game.

1 Like

You can give my latest updated CyberLab Guest Legendary Death To Pixels 4K HDR Shader Preset Pack 18-07-2026 a try, in particular the presets with Adaptive-Strobe 120Hz+ in their filenames. Switch the Mask Layout to the new BRG (3.0) setting!

It contains all of the optimizations discussed on this chat in the last 24 hours and more!

I was able to remove 1 more pass from adaptive-strobe-plus-hdr plus phosphor-persistence based on our discussion @kokoko3k.

1 Like

Like funny enough, I only appreciate interlacing in the Saturn/PSX/N64 era, but then it swaps back to the 240p signal and even on the most minimal setting, I don’t need these trails behind sprites. Not yet in 120hz land IMHO.

I disagree. From an actual CRT simulation perspective, Phosphor persistence takes place Regardless of if the signal is interlaced or not. From my artistic perspective, these features need to be tweaked so that they can improve the emulation experience in a tasteful, non-distracting manner.

Seeing is believing. That’s all I have to say. I don’t like ugly trails all over the place either but I have both Phosphor-Persistence and AfterGlow enabled in my presets. They aren’t turned up to 11 though, more like a subtle, 0.1 or 0.2 here and there and they do make a huge difference when it comes to sprite flickering.

This is to sprite flickering what NTSC blending is to dithering based transparencies.

Good thing @kokoko3k said his feature even works at 60Hz!

That 120hz thing was about phosphor persistence, not adaptive strobe. Like with the current trails even with full BFI, are still blurry enough to need to emulate it.

Your artistic perspective is legitimate, I agree and respect it. But the option is what’s best as people’s tastes are as varying as the colors in the rainbow.

It is indeed experimental and can look completely unacceptable on some pixel patterns, leading to bad evident flickering, i could even remove it, who knows.

Indeed it should be set on a per game basis, but on 60hz there’s little room left for improvement anyway.

2 Likes

If you’re talking about the “Use Only On Moving Areas” option for adaptive-strobe-koko, I haven’t seen any downside or artifacts. Why would you be thinking about removing it?

I’m in the process of adding it as a baseline feature of my presets, with the fullscreen option being available for those who have systems which are powerful enough or setup in such a way that they have solid enough frame pacing that they avoid the odd distracting bright frame, flickering here or there.

@PU786 I hope you would also appreciate that in these types of forums, user feedback and opinions might carry more weight than one might expect. So one could state an opinion on something that they would like changed, removed or made conditional and if the developer sees no opposition to or feedback which might express a different take on the idea then they might be more than inclined to offer a change.

So it’s important to state one’s views on matters of these sorts.

1 Like