New CRT shader from Guest + CRT Guest Advanced updates

New Release Version (20.05.2021-r1):

Notable changes:

  • New deconvergence pass implementation, masks are less prone to smear with different offsets.
  • Dynamic deconvergence added as suggested by @rafan.
  • Warp/curvature function optimization.
  • Edit: small bugfix

Download link:

https://mega.nz/file/wxx2wZ4Z#hnF0QXgQMvjcJJLTZtbscoPpQ3WjvpZ6xpn1wVZrBLw

About noise, maybe i should adjust the noise resolution, since it can get quite fine with increased resolution. I guess current noise generating function can be used in many ways, as @hunterk discussed.

11 Likes

I’m liking the dynamic deconvergence, very nice :slight_smile:

There seems to be one issue with the deconvergence however, see below shot in which I used exaggerated setting (only static deconvergence as example) vertical blue at -7 and strength max.

The deconvergence seems only to be applied to lines that have black around them, all vertical white lines remain unaffected by the deconvergence setting.

EDIT: on 100IRE test screen the issue is more clearly seen, settings are for both horizontal and vertical blue deconvergence -7 and strength at max. White square remains unaffected, only border to black shows the deconvergence.

3 Likes

Thanks for the link :v:

3 Likes

That’s normal as coordinates for separate RGB components pick up ‘maximum’ value while not at edges, and if you combine them you get RGB(1.0, 1.0, 1.0), which means the color white. If you want some sort of scanline color effect, you can tweak the offsets or use ‘Scanline Color Deconvergence’.

Edit: if it’s the other issue about not ‘shadowing’ over black colors, then it can be corrected. The deconvergence implementation as the last pass is pretty much balancing around color vs. mask accuracy.

2 Likes

I was trying to match the convergence from the video of the retrotech guy, as in the caption from below

and thought at first glance that the vertical deconvergence in the shader wasn’t being applied for the vertical white lines, but upon closer inspection that appears to be an optical illusion. When zooming in on the shader ouput (in paint) and making the bright scanlines more defined (scanline shape bright to 1.30-1.50) the deconvergence is there :blush:.

Been playing a bit more with it and dynamic convergence works really nice :ok_hand:

Maybe it would be useful, if possible, to have one configuration option added, that is whether or not the deconvergence is mirrored or not versus the middle of the screen. Currently when you enable dynamic it both creates deconvergence towards the edges but also mirrors deconvergence left/right and top/bottom. It would be useful if the latter could be a separate switch?

3 Likes

New Release Version (20.05.2021-r1):

Notable changes:

  • New deconvergence pass implementation, masks are less prone to smear with different offsets.
  • Dynamic deconvergence rearranged as suggested by @rafan.
  • Two deconvergence modes, one without ‘dark deconvergence’ and one including it.
  • Edit: small fix

Download link:

https://mega.nz/file/5sRmATZS#-srK5I1dftB8aPx4O7WGJZwvqxNkCA8nPZREbGYrhP0

I’m overall more pleased how the deconvergence pass is working now, although it might require some adjustments if changing masks. As i already mentioned, it’s not a straightforward implementation, but it works quite nice.

8 Likes

actual CRT owners: spend hours trying to eliminate deconvergence

CRT shader users: spend hours trying to add deconvergence

7 Likes

Shhhh, my sweet summer child, we all be crazy, don’t question just accept. ROFL

2 Likes

I’ve been trying the new deconvergence modes, but I’m not sure what to think as I’m running into some things that you may help with.

One example is that if I only deconvergence red on a single pixel pure red line than some sort of ghost image appears of the red line, whereas with previous versions it would move the entire red line without any ghost image remaining.

My understanding of deconvergence is that for the primary colors the whole beam should move position. With the ghosting in the shader it’s like part of the electrons / beam move while the rest remain in their old place. This is especially happening for decon. strenght < 1.50. For > 1.50 strength some sort of accumulation effect takes place that brightens the whole beam. Both don’t look very good?

It would be nice if you could load up below 256x224 testimage and deconvergence -only- red in the shader for various offsets/strength and see whether the result is what should be expected.

I think with the old deconvergence the red lines would move postion only, without any ghosting or accumulation?

test-image 256x224 Convergence-test2

red hor. and vert. deconvergence at +7, strength 0.5

red hor. and vert. deconvergence at +7, strength 4.0

Don’t sit on your ears ^^. :wink:

Deconvergence is very easy if you don’t have to mess with mask accuracy. The coordinate shift is authentic, but the image layout is also considered.

‘Old’ mode is still available as negative deconvergence strength, as it has some benefits.

It looks quite nice on the test pattern:

1 Like

I’m old mate, you have to be really load or i’ll miss these haha :slight_smile:

I tried negative strength earlier, but then it gives a green ghost image when deconverging only red on a purely red image.

Below is the pure red boundary on the 240p grid test. If I only deconverge red and negative deconvergence strength, then a green ghost image appears? Is that also part of the tradeoff?

Personally I think that’s too much off a tradeoff, as for me it’s too far off what’s happening in a real CRT.

Did the old implementation behave the same? I can’t remember it doing that, but I may have missed it.

You are free not to use it then. Hi-res and fast versions have other implementations of the horizontal deconvergence, maybe you’ll find some peace there.

1 Like

Yeah that’s a funny contrast.

The thing is that in real CRT’s there’s no such thing as “perfect” convergence. Even “perfectly” calibrated sets have some deconvergence errors still, mostly found towards the edges I guess.

https://forums.arcade-museum.com/threads/perfect-convergence-is-it-possible.477649/

It’s the minimal deconvergence that’s an integral part of a CRT screen / technology that’s just always there, however good the set may be calibrated, that is useful to simulate with a shader for added authenticity.

Adding deconvergence is not about making the screen more “crappy”, it’s just about getting the best possible representation of a “well calibrated” CRT output trough a shader (read: guest-advanced ), which thus preferably is able to simulate that minimal part of imperfectness of a properly calibrated CRT.

tbh I would mostly find peace in a touch of true to life dynamic deconvergence, for the reason mentioned in the reply to nesguy above. For now the green shadowing on red deconvergence in the shader is a bit of a hold back for me to use it in my gameplay setup, but given how good the shader in general mimics CRT output it’s definitely no big thing.

4 Likes

Please don’t misuse the settings: :wink:

Dunno what’s happening on the other side, but these patterns are quite easily achievable. I tried different combinations and it works quite nice.

Edit: Humbar is on it’s way. :wink:

2 Likes

Is ART

Literally

The emulation of a real screen …is a true art.

"emulate the image of an electronics image " here, in retroarch/libretto forums…

and…not only electronic image to emulate, because somes different CRTs secreens/monitors.

The scence of this plaisure of shaders, is…that. when you play a game… retroarch load a filter ramdonly…predefined inside your favorites. In the true is not only a filter, is their rotation, of your predefined, perfect, choosed filters. ( filter or same filter with different mask or configuration or dynamics)

As when in the old times you play those games, most provably in different screens CRTs monitors, home…saloon arcade places, computers …

Greetings.

All with dynamics. ( right mouse for full screen to see the images big)

3 Likes

Good news that it seems to work for you. Whatever I do, I’m getting the mentioned artifacts.

I copied latest guest folder, I reloaded your default guest-advanced preset, put red deconvergence to some and I’m getting the strange ghosting.

Could you do your default setting, move red deconvergence to a plus value and share the image?

And/or share the setting that I can apply to see whether it’s the same for me. Maybe an AMD/Nvidia thing?

3 Likes

Naa, it’s probably some setting with colors in the pre-shaders, like colorspace alteration. If the color red gets some other components mixed in it, then the deconvergence process will separate it on the grid. But it’s probably unavoidable even with the simplest straightforward deconvergence method.

3 Likes

Mmm, there seems to be only one specific strength setting at which the artifacts don’t appear, which is at about strenght 1.40 (not honed in, because step value is 0.10).

Maybe the below testimage and settings are useful to see. Below are testimage and then shader output result at strength 1.40 (no artifacts), then strength 0.50 and 4.0 (artifacts)

When not knowing about this it may be challenging for the more casual user to configure the deconvergence.

testimage

Convergence-test3

if you deconverge red, green and blue such that the bottom square layers/stacks red, green blue with max offset, then at strength 1.40 there are minimal to no artifacts:

then same deconvergence setting but strength 0.5 (ghosting artifact)

then strength 4.0 brightness is blown up. and single red (top) and single blue square (third) have an artifact in the upper right and lower left corner.

3 Likes

It’s the nature of implementation. Obviously different deconvergence strengths shouldn’t produce the same result and i don’t see a problem here, especially with non-test pattern situations. Similar it’s odd to complain about different mask strengths etc. If you suggest some adjustment to avoid accumulation, then it’s viable. Starting deconvergence strength at low values is quite normal though, if someone doesn’t like it can be changed.

3 Likes

If you’re ok with it I’m ok with it.

Another thing I noticed which you already hinted at is the color profile stuff. In some situations even with “optimal” strength setting there is some deconvergence ghosting. If I then change color profile from “0” to “-1” the ghosting on the deconvergence is gone. This happens for example with the green ghosting on red in the 240p grid picture I posted earlier. So as far as I can tell both the deconvergence strength setting and color profile other than “-1” may affect the deconvergence. That’s good to know.

I’m at peace now :slight_smile:

2 Likes