New CRT shader from Guest + CRT Guest Advanced updates

Awesome thanks for making this, it’s quite another thing to be able to test quickly with many more games :slight_smile: The idea works okayish I would say, it’s interesting to see it’s not working as well as I expected, as white-black adjacent areas create more visible “sawtooths” patterns then when it’s not black as adjacent color. So overal the sawtooth pattern is not equally divided / visible as a normal mask would. Very nice to have tried this though, thanks as it satisfied the hunger! :smiley:

There’s one other thing: I’m testing a bit with the “CRT Color Profile” and would be interested where these things clip in sRGB space. I was having this idea that maybe would be possible to have a “test hack” for.

Could it be made such (as temp hack) that when a CRT Color Profile is set and colors clip outside of the sRGB that it is not given the max clipping value but instead turned into (for example) a bright neon green color?

With such a feature we could easily see IF, WHEN and WHERE colors from the CRT Color Profiles clip in the various games. Maybe this could work for the LUTs too?

3 Likes

It’s doable, but not much of it. :grin: Three lines must be calculated and three linear inequations solved in the xyY space. It’s not interesting for colorspace transformations the way they work, since the gamut is narrowed. Maybe, when i’m somewhat or very bored.

But gave me a nice idea though…

2 Likes

I think you can sort of get the desired effect with the slot mask in GDV. The sawtooths aren’t quite as pronounced as we’d like them to be, maybe, but I think it looks pretty nice nonetheless.

1 Like

I’m testing beam non-linearity, with default settings I found a linear response (no beam dynamics at all) and only a 10% loss on luminance output. What presets do you recommend for monitor CRTs and consumer CRTs so I can test further (no glow involved).

2 Likes

Great idea.

Mine are actually all a bit weird right now, as I was recently testing how high I could push brightness before I started to get clipping.

I’m currently working on a pro monitor setup (mask 0) and two consumer-grade setups (mask 8 and GDV slotmask).

They’re all currently too bright, but I think most of the other settings are pretty neutral, scanline shape and bright boost are probably where you want to make changes. Scanline dark @ 1.50 is arbitrary but I find it’s easy to work with; a lower value like 1.30 might be better. Scanline saturation and bright beam are at 1.00 for increased flexibility.

Gamma on my plasma is 2.4 so that’s what I have output gamma set to.

Glow is at 0.01; need to disable that.

Protip: I think if you raise/lower bright boost dark and bright boost bright by the same amount it will keep the gamma curve intact and just raise/lower the whole thing.

Edit: @Tatsuya79’s recent settings also look very good, especially after adding grade and increasing the bright boost a bit (I think 1.80/1.80 is reasonable with mask 0).

I’d recommend @Kurozumi’s excellent preset, but it no longer works with the new GDV.

3 Likes

I tested with your GDV preset and is spot on, phoshor gamma with Scanline dark @ 1.50. I was reading the paper I shared a few days ago and phosphor gamma has to be between 0.9 and 0.88 to retrieve an absolute output gamma of 2.2 from the signal gamma of 2.5 = (2.5 * 0.88).

So I would say you are right, 1.50 matches 0.9, I need to measure which value complies for 0.88 to have a working range. For crt-royale I found good values range from beam-min-sigma of 0.05 to 0.10 for 0.88 (2.2 absolute gamma output) and 0.9 (2.25 absolute gamma output) respectively.

Typically I measured between 10% and 15% brightness loss with crt-guest Scanline bright @ 1.00, so that’s something to be aware when adjusting the monitor brightness (two or three notches up when calibrated to 100 cd/m2)

EDIT: for crt-guest scanline dark pixels should be between 1.50 and 1.70, that is with scanline beam shape low of 14.0 (not sure what is its function)

3 Likes

Today i was working on new glow implementation, based on resizable and adjustable gaussian blur implementation.

First image is 13x13 gaussian blur:

Second image is 31x31 gaussian blur:

Last image is 51x51 gaussian blur:

I will set it to max. 31x31 in the shader, but otherwise it can go until it reaches the texture sample fetch limit.

Source image size is 256x224.

4 Likes

That’s interesting, I’d like to see some shots with it being completely implemented, as it’s kinda hard to get a complete feel for it XD

It’s implemented already, had to ‘unimplement’ it for the screenies. :grin: Much easier to tweak compared with the GDV repo version and supports resize.

1 Like

Looks very clean, you can try to mix them so they add each other for an exponential effect (think neons)

2 Likes

So does the bigger sizes mean larger halos?

1 Like

It would mean 2 extra buffers. I would need a second instance for bloom, for example, but the speed increase is more tempting.

Yes, but i will probably limit it to 0.5*viewport not to stall adapters with less bandwidth and minding 4k performance a bit. The main benefit is speed increase though, better ‘configurability’ and larger halos. It’s not doing as much compromises compared with two former implementations, although they both looked OK with moderate settings.

3 Likes

I’m not sure how to really explain it either, a lot of this was trial and error and me just eyeballing things.

I used the clouds in Outrun to try to get things as bright as possible while still preserving all the detail, but this wound up being a bit too washed out so then I lowered bright boost while simultaneously increasing beam shape until it just felt right. Still tweaking it but it’s good to know I’m not too far off with my GDV preset!

Some kind of settings guide would be very useful IMO.

2 Likes

Dr. Venom did a very good job with the first ‘readme’, but the shader is quite different now. A guide would be the final thing to do though, but the shader overhaul is pretty much at end. About the ‘scanline shape low’, it determines the roundness and convergence to ‘dark’ for the lower values of the input ‘f’ parameter and it should be preferably lower than the ‘sister’ parameter. With both parameters you can have rounded, flat, something in between… scanlines.

3 Likes

How fast does 51x51 run?

I might replace out my blur at some point for the mega bezel reflections. I had difficulty controlling more vs less blur with a varying parameter, but it is working at the moment, so perhaps I should let sleeping dogs lie :wink:

1 Like

I like the idea of being able to fine tune the halos tbh.

1 Like

It’s not that bad, it’s O(n), but you can have low-res input and stop halfways to continue with linear filtering resizing, which is very ‘cheap’. The main benefit is a pixel-perfect resize capability and custom range. Less range means more speed, although it depends from the output size as much.

2 Likes

Edit:

I agree doing it this way does help quite a bit.

Is there variable amount of blur with the same number of samples? Or is the spread all based on the number samples?

2 Likes

That’s the main thing I’m concerned with, if I’m able to fine-tune the halo spread.

1 Like

Former implementation used exp2, now it uses exp with exact sigma implementation, which means quite better control. Ofc. you can under-develop it or produce a harsh threshold, but increasing the number of taps usually helps a lot.

2 Likes