New CRT shader from Guest + CRT Guest Advanced updates

A little guide to preset setting tweaking will be very helpful (noob friendly) :yum:

2 Likes

@guest.r

I was trying the various interlaced modes a bit, looks great, and noticed that “Scanline Saturation” (param.scans) doesn’t seem to do anything when interlaced mode is active. Is that right?

For consistency when games switch in and out of interlace I would love if the scans parameter would work the same in interlaced modes as in normal mode.

Tested with the “hires” shader btw, maybe that makes a difference.

2 Likes

I second this request tbh, consistency is important tbh.

1 Like

There is some bad news also, namely if i use the same parameter as for scanline saturation, then it will show up only under interlacing options, because this shader is prior in the chain. A separate parameter is an option otoh.

2 Likes

That wouldn’t be too much of an issue, imho anyway.

I do think some scanline settings for the interlacing modes could be interesting, but the interlacing code hurts my head so idk the feasibility of that.

1 Like

A separate parameter wouldn’t be a real issue for me either.

1 Like

New Release Version (14.05.2021-r1):

Notable changes:

  • Interlacing saturation option added.
  • Deconvergence codepath enable bug fixed, parameter step adjustments

Download link:

https://mega.nz/file/0o5nAC7D#JGMb6KPuiG14dMygXK5hkcuLEBSIeB9LbAiBCXoI1pw

6 Likes

Hi I was trying this out and the Horizontal deconvergence seems to be working, but the vertical doesn’t

Here’s what I mean, here’s the horizontal convergence

And here’s the Vertical

3 Likes

It’s fixed now. Vertical deconvergence worked only in you also added a notch of horizontal deconvergence to trigger the codepath. Stilly a silly bug. :smile:

4 Likes

I have been playing a bit with a new fast curvature function, but it looks like more opinions could be helpful. Compared with quadratic curvature in ‘GDV’ this one does a bit more curving on edges.

Old:

Experimental:

Anyway, here is the experimental warp function:

vec2 Warp(vec2 pos)
{
	pos  = pos*2.0-1.0;    
	pos  = mix(pos, vec2(pos.x/sqrt(1.0-0.5*pos.y*pos.y), pos.y/sqrt(1.0-0.5*pos.x*pos.x)), vec2(warpX,warpY));
	return pos*0.5 + 0.5;
} 

Parameter range has to be increased though due slower curving.

5 Likes

I like that new one much better. And just a mix() and a sqrt() is very impressive!

3 Likes

Thanks @hunterk. (and @Syh :grin:)

I think it can be optimized a bit further:

vec2 Warp(vec2 pos)
{
	pos  = pos*2.0-1.0;    
	pos  = vec2(pos.x/sqrt(1.0-pos.y*pos.y*warpX), pos.y/sqrt(1.0-pos.x*pos.x*warpY));
	return pos*0.5 + 0.5;
} 

It can be quite radial with increased settings:

6 Likes

sphere

5 Likes

I prefer the new curvature too.

3 Likes

New Release Version (17.05.2021-r1):

Notable changes:

  • New curvature implementation, another parameter added for shape control.
  • Vignette parameter range and defaults tweaks.
  • Some code cleanup.

Download link:

https://mega.nz/file/8lhUWaJT#crlu9kbcvc6AF0c9v9RD5hMrGyzeNnsEp96bIlEq7L0

8 Likes

This is really nice I like the more rounded results, great stuff!

5 Likes

Is there a way to make the mask (mask 0 and 7) darker over bright pixels and lighter over dark pixels? This might be more accurate/might look good, I think.

2 Likes

A similar approach is used in the shader, it’s got an extra parameter though for ‘curve progression’. The deficit of many fast implementation can be that when the curve is adjusted it tends to bend the edges, leaving the middle more or less almost linear.

It can be done with masks 5 (can look same as 0), 6 and 7 if you adjust the ‘low strength’ to like 0.30 and increase the mask ‘0, 5-8 strength’ to like 0.70.

4 Likes

@HyperspaceMadness

The parameters guest mentioned above aren’t in the Mega bezel, could they be added? :slightly_smiling_face:

5 Likes

Hi, these are from GDV-Advanced, which isn’t integrated yet. So when it’s in, these parameters will be in too.

6 Likes