New CRT shader from Guest + CRT Guest Advanced updates

It’s definitely really cool to see it as an adjustable setting!

1 Like

Not sure that guest.r’s change is similar to that VSM. In guest.r’s images black lines seem to get thinner, while in that wiki black lines get thicker with higher VSM option.

1 Like

Yes, is why I said Inverted VSM. :o

1 Like

New Release Version (2025-02-18-r1):

Notable changes:

  • Mitigate Mask on Edges functionality/parameter added (standard, ntsc, hd, fast versions).
  • New: “side effect” mitigation for the new functionality, is now nicer to include within presets.
  • Edit: small improvement, grade black level parameter range increase.

Download link:

https://mega.nz/file/Bph3jabA#YA9DghGun0y1MrXzwjjaUCw1zCbBjltsP-T2JlSxR4A

16 Likes

thanks, I already use Mitigate Mask on Edges with 0.5 in my preset

2 Likes

Did a quick test with that new setting and indeed 0.5 seems to be the sweet spot.

2 Likes

It’s now ‘safer’ to build presets with wider filtering, since there are means to compensate stronger mask application / falloff on brighter edges. Especially with the ntsc version, followed by HD.

Presets mostly benefit if the TVL is somewhat lowered. Here are two examples of mask 10 (RGBX) setups and edge mask mitigation:

9 Likes

Hey, these presets are looking beautiful. It’s good to see how high the bar has been raised for CRT Shader presets in general by all of the incremental updates over the years.

In other words, more accurate looks are becoming more of a norm rather than the exception!

Thanks again and keep up the great work!

This goes out to @kokoko3k and @Hyllian as well!

5 Likes

Hey Guest & others I’m trying to get a BVM w/ Aperture grill style shader that will still show black scan line gaps.

I can do this really easily with default internal scaling on any core with the CRT Megatron shader.

However, when I try to up the internal resolution of a core, say like the PPSSPP to 8x, the beutiful scan line gaps disappear.

The device I’m trying to get to work is a 4k HDR phone, so the Megatron HDR support is really nice, but I’m looking fore alternatives that could still show the black gaps in between even at a high internal resolution.

Hyllian 3d is the best I’ve found so far, but I’d like to get the scan line gaps bigger

2 Likes

On my personal Megatron testing/playground build, i implemented a 1/2 vertical resolution scanline option a while back (along with a doublescan option for DOS games and such). I should be able to add options for additional divisors trivially. Let me take a look and see.

It won’t necessarily work as cleanly as you want it to tho. Ideally a PPSSPP option for downsampling back to native res would be needed.

2 Likes

Done, and it actually works beautifully when using (the decoupled) crt-guest-advanced-ntsc’s Internal Resolution setting as a downsampler. Fair bit of shimmer without that downsample effect tho.

Let me get this all buttoned up and i’ll share it as a preset pack/experimental build over in the Megatron thread later tonight or tomorrow.

3 Likes

With guest-advanced shaders, you can use the Internal Resolution Y: 0.5...y-dowsample divider parameter to increase scanline height.

It’s found under [ INTERLACING OPTIONS ].

3 Likes

I think the setting you’re after are:

-To enable scanlines again-

Interlaced Mode: 0

-To size the scanlines properly for increased game resolution-

Internal Resolution Y: 0.5…y-downsample divider: 0.5 for 640x480, 1.0 for 800x600, 1.5 for 1280x960, etc.

libretro forums please don’t screw my formatting challenge. u.u

2 Likes

Could you put down the shader settings you used for this screenshot for me to poke at and learn from?

1 Like

Sure, here are the parameters for the ntsc version:

ntsc_gamma = "1.350000"
ntsc_taps = "15.000000"
ntsc_charp = "6.000000"
ntsc_charp3 = "2.500000"
ntsc_cscale = "1.200000"
ntsc_cscale1 = "1.500000"
ntsc_ring = "1.000000"
ntsc_sharp = "8.000000"
HSHARPNESS = "1.500000"
SIGMA_HOR = "0.700000"
S_SHARP = "0.800000"
HSHARP = "1.500000"
MAXS = "0.200000"
HARNG = "0.750000"
FINE_BLOOM = "3.000000"
mask_bloom = "-0.750000"
halation = "0.200000"
gamma_c2 = "1.250000"
clips = "0.350000"
gsl = "-1.000000"
scanline1 = "5.000000"
scanline2 = "15.000000"
scans = "1.100000"
shadowMask = "10.000000"
maskstr = "1.000000"
maskboost = "1.400000"
mask_gamma = "1.500001"
slotmask = "1.000000"
slotmask1 = "1.000000"
edgemask = "0.800000"
4 Likes

An alternative to any downsampling is to disable scanlines in Guest (or any shader of your choice where you can make them effectively disappear), then attach the res-independent scanlines from the “Scanlines” folder. Enter 272 as simulated height. In this example the gaps aren’t quite BVM wide because I don’t have the necessary resolution when using the minimum 2 pixel mask, but with 4k it should be different. Well, to the extent you can see anything on a phone screen.

3 Likes

I must test your tip next time, it seems to give more control. But I think we can technically set downsample without really downsampling in Guest’s shader, in the interlacing section there’s a boolean to set “high-res scanline (prepend a scaler)”. It should work for classic resolutions and content that was upscaled 2x, 4x or 8x (likely not for non integer ratios I think).

I was tweaking that option yesterday, trying to make a Guest’s advanced shader preset for the weird but great Gabriel Knight CD-ROM version. This game had mixed VGA 320x200 4:3 that was not evenly upscaled to 640x480 4:3 for the rise of SVGA graphics, so ultimately the game is SVGA but with uneven weird blocks of its VGA version mixed in. With “high-res scanline” set to 1 and Y Internal resolution downscaling =1 I can force 240 scanlines (which is not correct, but neither is 200 because they upscaled VGA so weirdly). Interestingly you can see all the SVGA parts of the image still retaining a lot of detail (like the UI and the newspaper on the desk).

3 Likes

@kanjieater As promised: AzMods.

1 Like

Just for some more info, guest advanced downsampling on y-axis “always” does integer level resolution reduction in an integer value (greater than 0.0) is selected.

It’s fitting the situation almost every time, especially when a core supports internal resolution multiplying.

There are also possible values like “3.5”, a plausible option with some cores like N64, which operate at selected original resolutions (i.e. 800x600, 1024x768…) instead.

With the mentioned DOS game using “1.0” parameter value does a smart integer resolution divider, which favours certain scanline resolutions (based around 200-240). Specific scanline resolution isn’t forced, but specific integer divider instead.

If a game runs in 640x480, then downsampling to 240px is probably the only reasonable option. If vertical pixel information gets discarded in the process, then there are interpolation options for both x and y axsis, which add the flavour of quality downsampling.

1 Like

Got a little time to play in the lab today, testing out new filtering, glow and both the new “Mitigate mask” settings:

Wanted to try cranking that “Mitigate Mask on edges” setting to the max and try to create something out of it, I see some potential there. If not then using it at 0.5 also brings good results.

2 Likes