New CRT shader from Guest + CRT Guest Advanced updates

Thanks man I’m glad to be back, I should be around more regularly now for the most part.

I see. That “smart-smoothing look” is what I like the most from it, gives the image that hazy crt like vibe. I went back and tried it again adjusting the “fine bloom/halation sampling”, it seems to give a better balanced look on 3.

First here’s no bloom pixel sampling:

Bloom pixel sampling on:

Bloom pixel sampling with bloom sampling set to 3 and both vertical and horizontal bloom sigma settings lowered to .25:

It makes a small difference. I’m not sure if I’ll incorporate this feature or not but I’ll see as I continue tweaking in the lab.

8 Likes

@Jobima First, thank you so much for your work on porting CRT guest updates to to Reshade; Much appreciated. I noticed 2026-07.23 was released recently and thought I’d see if I could port it myself. Then I learned what steps are needed to convert slangp files to fx and thought… wow, that’s a lot of manual work. How do you do it? I’m thinking a script to parse the slangp file, then compile and convert the files. And then another script to merge the outputs, or something like that? I was not able to find any easy way to do it, so I was wondering if you could give a peak behind the curtain, so to speak.

I didnt make it from zero, it’s DevilSingh/HelelSingh port in the first place

anyway, to update it I do use compare/diff plugin in Notepad++ with slang versions so I know what changes, then I do the same changes in reshade manually

BTW, 2026-07.23 already ported but inside my preset of reshade since Jobima crt guest advanced presets

3 Likes

Wooowww, that’s hardcore. I also tested that approach but the shear size of the diff scared me away pretty fast. Much respect for you! And thanks for the link to your updated reshade presets. I will be trying that one later today.

Just did a test run of the 8.24 presets. Works like a charm. But I noticed that, although the shader is called guest_advanced, it seems to be the guest_ntsc version. A diff with the previous version seems to confirm this.

1 Like

it based on my preset (which is based on guest_ntsc version) as I said, so the defaults are changed and it has crt-black_crush-koko as I said

1 Like

Hey @guest.r, so I’m putting together some new rf type presets and I see the change up and how you dedicated a small section to just rf settings in the ntsc shader, it’s been a while since I tweaked any kind of rf anything but did you remove a setting by chance? I think it was labeled something like “static noise” or something, I really liked that setting but it doesn’t seem to be there anymore in your latest update.

New RF test screenie:

2 Likes

Hmm…static noise (or any kind of dedicated noise) wasn’t present in older ntsc shader releases, but you can look under the deconvergence pass settings, where there is a decent parameter section for noise.

1 Like

That’s right it was right at the bottom where it’s always been, forgot it was down there the “add noise” setting in the negative values. That setting gives the image a nice “dirty” look, almost like looking at 90’s gaming magazine photos:

Off:

On:

Alright got RF presets done already, time to go make some new s-video presets.

3 Likes

Hey! @guest.r Long time listener, first time caller… I had a few questions about higher internal resolution and downsampling options.

  1. In “crt-guest-advanced-hd” If I am using for example… 4x native res, What paramaters do I need to change?
  • “INTERNAL RESOLUTION (Quick Setup)” Do I change this to 1 and what does it do?
  • “Internal Resolution” - I know I would change this to 4, but do any other paramaters need to be changed, like “High Resolution Scanlines”?
  1. With “crt-guest-advanced-ntsc” If I wanted to run 4x native res and then use this shader to downsample back to native res so the shader works… Which paramaters do I change?

-What does “Smart Scanline Mode” do? -How does the “Internal resolution Y:” setting work/ -Do I need to chnage both Downsampling-X and -Y paramters, and how do they work? -Do I need to change anything related to NTSC if downsampling?

Sorry for all the questions I have tried to read through all of this and found some things related… Thank you for all your hard work!

1 Like

Hey! Nice for stopping by. Here are some clarifications regarding your questions, hope they will make some sense… :smiley:

First of all, it also matters if you are using scanline mode or not. If using scanlines and increased internal resolution, then you are good with Internal Resolution Y: 0.5...y-dowsample divider parameter set to the internal resolution multiplier. You can use X/Y downsampling for the pixel influence effect or increase Internal Resolution with the HD version.

You change the first parameter named Internal Resolution for the increased filter range. It’s WYSIWYG coded, so you don’t need to set it to 4x if to blurry, maybe 3.5 will do better for you etc. For scanlines it’s already explained a bit above.

This is a parameter section description, has no operational value, you must alter the parameter below.

High resolution scanlines enabled make sure that the vertical scaling component is also enabled if using a pre-scaler or increased internal resolution. Only valid when using scanlines and compatible with the Internal Resolution parameter with the HD version.

For the authentic buffer shrink downsampling it’s best to pre-pend a DREZ preset, there are many and serve the exactly this purpose. Normally shader parameters can’t control buffer sizes, so guest-advanced shaders do this visually while maintaining original output buffer sizes, but this can be slower.

With the ntsc preset you can lower the "NTSC Resolution Scaling" parameter to a reciprocal of the internal resolution (i.e. 0.5 for 2x, 0.33 for 3x, 0.25 for 4x…) and use the speedup parameter. Later on you set Downsampling-X and -Y paramters to 4x and add some neighbour pixel influence with Downsampling parameters.

Setting the Internal Resolution Y: 0.5...y-dowsample divider to 1.0 makes sure you are in the correct scanline mode regardless of the internal resolution or resolution changes which might trigger interlacing… It’s a set-and-forget setting for users who want scanlines. It’s benefits are you can change internal resolutions and use it with different cores without changing the preset.

“INFO --> Internal Resolution Y: 1.0 - Smart Scanline Mode” is only an info line for the next parameter and how it’s working, it’s parameter values are here because even an info line must be a parameter and must have a value…

Many settings in the guest-advanced shaders have, as i mentioned, immediate visual impact, so it’s ok to play a bit with them, see how it goes and keep the most appealing setting.

2 Likes

Thank you for all of that clarification, it was extremely helpful!

2 Likes

New Release Version (2026-10-25-r1):

Notable changes:

  • Nice NTSC shader changes.
  • Old Resolution scaling retired or better said upgraded - new concept is more authentic, reliable and it’s much simpler now to use regular presets with high resolution content. Old presets shouldn’t be affected if they don’t rely on old NTSC resolution scaling, but it’s a simple process to mend with the new parameter.
  • NTSC De-dithering Booster added (similar to PAL shaders), works very well with new resolution scaling.
  • Default Interlacing mode is now mode 4.0.
  • NTSC shaders now work out of the box with high resolution content, no need for resolution scaling adjustments to get proper temporal and chromatic behaviour.
  • Update1: more parameter range for resolution scaling
  • Update2: De-Dither booster only active with progressive modes

Download Link:

https://mega.nz/file/Z4hRmQoC#24P5MGf4QfZ7D_8Z7ev7o_qOY-4GhTAza2aDOAXhzHY

17 Likes

Should the canonical/standard luma bandwidth limits actually apply for anything other than OTA broadcast? And maybe devices with RF connections?

Poking around online, i’m seeing lots of discussion of laserdisc’s luma bandwidth being in the 5Mhz+ range, and i would suspect the same would apply for many other NTSC devices that used composite, s-video, or component connections.

Aside from that, i’m also noticing some unusual, very “digital” looking chroma artifacting in 480 line content, particularly with 2-phase chroma scaling set to 3.2 as is my usual preference.

Using decoupled to show it, because it is much easier to see it that way. Take particular note of the wireframe view of the Command Center at the bottom of the screen.

decoupled20260723

decoupled20261025

Increasing the NTSC Filter (Resolution) Scaling to 2 brings 20261025 closer to the old result in terms of clarity, but the chroma artifacts remain

(Also, should NTSC De-dithering Booster’s default be set to 0, as is the case for PAL De-dithering Booster?)

1 Like

Purely diagnostic info, (probably) not a solution:

In ntsc-pass1, changing

pix_no = vTexCoord * vec2(ntsc_sizex,ntsc_sizey) * vec2(4.0, 1.0);

to

pix_no = vTexCoord * vec2(ntsc_sizex,ntsc_sizey) * vec2(8.0, 1.0);

gets rid of the chroma artifacts:

and then setting NTSC Filter (Resolution) Scaling to 2 gives a result that looks similar to the 20260723 baseline:

1 Like

Hey there! Thanks for testing the shader.

The new concept honors some simple NTSC standards with interlaced content, means 3.579545 MHz color subcarrier frequency, 15.734 kHz horizontal scan rate and 227.5 subcarrier cycles per line.

The NTSC shaders encoding and decoding were initially designed for progressive content, so interlaced content was open for different interpretations, which included the NTSC resolution scaling feature. Later had it’s quirks when not set exactly, so there was some need for a more faithful out-of-the box implementation.

So to say, the first gen. screenies used in comparison are “wrong” if NTSC resolution scaling would not be set to 0.5.

So the new implementation sets the NTSC Resolution Scaling value automatically, but the tweaking options are better and still more faithful.

480i, for example, is nothing more than 2x alternating 640x240p fields with a half line shift and the new implementation is also considering this more strictly.

This also brings in the chromatic behaviour you mentioned which follows NTSC chroma bandwidth limitations and typical consumer TV lowpass simplifications.

Current NTSC shaders aren’t officially optimized for 31.5 kHz modes, but these looks can also be achieved with some parameter tweaking.

I see no problems emulating these, just set artifacting / fringing to 0.0 or even merge fields. You can increase luma resolution with the NTSC Filter (Resolution) Scaling even beyond “5MHz+”. Or even use the HD shader version, it’s very good for “component” looks.

This would mean “overclocking” the NTSC standard, can be done with shaders. :grin:

The value is set to 1.25 to compensate the a bit sharper new default look and still resolve dithering patterns. This is a very deliberate decision.

Anyway, i’m very glad for your feedback, will probably fix something if needed.

2 Likes

did you tried these?

image

1 Like

Those images are all using 2-phase chroma scaling 3.2. It currently isn’t possible to replicate the old behaviors with parameter settings, even if you use a 2-phase chroma scaling setting far higher than the maximum.

1 Like

New Release Version (2026-10-26-r1):

Notable changes:

  • Nice NTSC shader changes.
  • Old Resolution scaling retired or better said upgraded - new concept is more authentic, reliable and it’s much simpler now to use regular presets with high resolution content. Old presets shouldn’t be affected if they don’t rely on old NTSC resolution scaling, but it’s a simple process to mend with the new parameter.
  • NTSC De-dithering Booster added (similar to PAL shaders), works very well with new resolution scaling.
  • Default Interlacing mode is now mode 4.0.
  • NTSC shaders now work out of the box with high resolution content, no need for resolution scaling adjustments to get proper temporal and chromatic behaviour.
  • Update1: more parameter range for resolution scaling
  • Update2: De-Dither booster only active with progressive modes
  • Update3: Old chroma frequency behaviour option added
  • Update4: automatic phase calculation bugfix, small performance optimisation
  • Update5: Progressive behaviour improvements.

Download Link:

https://mega.nz/file/Mkg0AILB#BMPR9YH7Gif1ygbfcUIdhAIhiGcFqmciiQcg7QNvaX8

10 Likes

New Release Version (2026-10-29-r1):

Notable changes:

  • Vignette overhaul (all versions)
  • NTSC De-dithering booster auto mode added (QoL)
  • Some small bugfixes and parameter value optimisations
  • NTSC 2-phase chroma sampling improved, more control, better results
  • Update: after some testing, introducing a small regression regarding InterlacePass, because it breaks compatibility with some former presets. Shouldn’t matter with ReShade.

Download Link:

https://mega.nz/file/sxpQRSaI#v5Rz5IGVNwIV3418T7vIwcn6v0qxa4Bij9NtV_broxI

16 Likes