New CRT shader from Guest + CRT Guest Advanced updates

New Release Version (2022-11-09-r1):

Notable changes:

  • (added a new option to clean up / adjust mask-scanline interaction in brighter tones when mask effects is too dominant between two of them)
  • new feature improvements and optimizations

Download link:

https://mega.nz/file/B043jQoA#o0O2dKek8YBms-cvYlh5swAH1iybuOWbOkUx_bodaRo

14 Likes

I was in the middle of tweaking my shaders last night with the previous update now you just dropped another bomb on us lol. Can’t wait to get home and play with this update now.

4 Likes

I 'd just like you guys to know I actually was convinced to make slotmask preset. Mostly because I’m getting sick of reading my own words after I type “Opus”. I need to make some sister presets just so can mention something else.

Here’s an early screenshot. So far I’ve done an initial balancing between bloom/halation and the mask. I haven’t “neutralized” it yet and it’s far from done.

I noticed something when referencing those packs; how often do you guys adjust the bright boost settings? The default settings make a fine preset but Bright Boost Dark’s 1.40 does affect the luminosity range in a very direct manner.

Also @Cyber and I have reconciled.

EDIT: @MajorPainTheCactus’s post here is probably what prompted me to play the genesis version of VR.

2 Likes

I’m sure this has been answered a dozen times, but what does the base default preset have that HD does not?

Should I port every non-NTSC preset over?

1 Like

NTSC version comes with all the NTSC features…

Compared with standard version the HD misses:

  • raster bloom
  • smart edge filtering
  • rolling scanlines
  • separate bloom and glow passes
  • TATE mode
  • automatic smoother filter when swiching to interlaced mode

But the HD version is otherwise pretty much suitable for normal content.

Compared with standard version it has:

  • more adjustable horizontal filter
  • fully capable vertical filter (activated with interlaced modes)
  • is like 30% faster with ‘standard’ content

So if you are doing standard content you can pretty much also use the HD version. Best give it a try first. For increased internal resolution content i prefer the HD otherwise.

5 Likes

I was about to say that the missing TATE mode is the biggest deal breaker. Then it hit me just how much I rely on separate bloom and glow.

If i were to port anything I’d have to give up glow to retain halation.

Not too costly, but my gut tells me to only use HD in a dedicated “image/movie viewer” preset, or something DOS focused. I don’t think I’ll be making either soon though.

1 Like

You can also use it for “Sony” cores, N64 or any other cores which natively output more than 400x300, also with pre-scaling with xBR(Z), ScaleFX…

2 Likes

I’m not really a fan of scalers or raising the resolution. For 6th gen 480i content I keep interlacing disabled. Standard handles it just fine if you ask me.

1 Like

“One does not argue about taste” is an old saying, but standard is indeed quite equipped. Misses an accurate vertical filter though. You can also switch more content to 720p or 1080p…internal resolution and texture scaling are super thingies. :wink:

2 Likes

What is the link for NTSC version?

2 Likes

NTSC version is included with the regular downloads in this thread.

Somewhat older version is available in the slang/crt folder as a part of the official libretro slang shaders repository.

1 Like

Cool, thanks…

1 Like

I have also updated @DevilSingh’s reshade port of crt-guest-advanced with the new mask options, it can be found in the top post of this thread.

Highlights compared with “guest-dr-venom” version are better glow, more precise bloom, halation, deconvergence, other improved features…

6 Likes

New Release Version (2022-11-14-r1):

Notable changes:

  • mask boost feature is now ‘edge’ aware
  • some scanline parameter range adjustments
  • edit: small feature update

Download link:

https://mega.nz/file/4xJHCZjR#-EjqF4H1XzUmfeYtY71Q6smSf30UAg385kOi8jGHGg0

16 Likes

Can you go into more detail on those range adjustments?

Or is it a suprise, and I have to wait till I get back to my computer to find out?

1 Like

“Scanline Shape Dark Pixels” went form max 5.0 to 10.0

“Scanline Falloff” went from min 0.25 to 0.2 ( or 1.0/5.0).

Here is also the mask boost feature comparison (before / new):

Before:

New:

9 Likes

:man_facepalming: “Smooth Masks in bright scanlines” previously had a cap of 2. It now has a cap of 1.

I understand if you intended it as a “toggle” effect, but I kinda based my brightness settings around that new feature being set to 2.

it allowed me to ensure Axel’s (Streets of Rage) face was the correct color. If it was set to either 1 or 0 then seemingly nothing could help the matter.

I was about ready to post the config for my high neutrality mask 13 slotmask preset; I can’t now.

It’s probably not fatal, but now I have to find another solution for the mysterious problem that yellows and desaturates the colors in Axel’s face seemingly independently of everything else.

Actually, you know what? I’m still going to post the prototype preset. it might help. just no screenshots; the results wouldn’t be the same.

shaders = "12"
shader0 = "shaders_slang/crt/shaders/guest/advanced/stock.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "shaders_slang/crt/shaders/guest/advanced/stock.slang"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "StockPass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders_slang/crt/shaders/guest/advanced/afterglow0.slang"
filter_linear2 = "false"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "AfterglowPass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders_slang/crt/shaders/guest/advanced/pre-shaders-afterglow.slang"
filter_linear3 = "false"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "true"
alias3 = "PrePass"
float_framebuffer3 = "false"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders_slang/crt/shaders/guest/advanced/avg-lum.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "true"
alias4 = "AvgLumPass"
float_framebuffer4 = "false"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders_slang/crt/shaders/guest/advanced/linearize.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "LinearizePass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders_slang/crt/shaders/guest/advanced/gaussian_horizontal.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "absolute"
scale_x6 = "800"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "GlowPass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "absolute"
scale_x7 = "800"
scale_type_y7 = "absolute"
scale_y7 = "600"
shader8 = "shaders_slang/crt/shaders/guest/advanced/bloom_horizontal.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = ""
float_framebuffer8 = "true"
srgb_framebuffer8 = "false"
scale_type_x8 = "absolute"
scale_x8 = "800"
scale_type_y8 = "absolute"
scale_y8 = "600"
shader9 = "shaders_slang/crt/shaders/guest/advanced/bloom_vertical.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = "BloomPass"
float_framebuffer9 = "true"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "1.000000"
shader10 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = ""
float_framebuffer10 = "true"
srgb_framebuffer10 = "false"
scale_type_x10 = "viewport"
scale_x10 = "1.000000"
scale_type_y10 = "viewport"
scale_y10 = "1.000000"
shader11 = "shaders_slang/crt/shaders/guest/advanced/deconvergence.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = ""
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "viewport"
scale_x11 = "1.000000"
scale_type_y11 = "viewport"
scale_y11 = "1.000000"
PR = "0.460000"
PG = "0.460000"
PB = "0.460000"
AS = "0.100000"
sat = "1.000000"
contr = "-0.250000"
vigstr = "0.100000"
GAMMA_INPUT = "2.000000"
interm = "0.000000"
SIZEH = "50.000000"
SIGMA_H = "2.999999"
SIZEV = "50.000000"
SIGMA_V = "2.999999"
SIZEHB = "50.000000"
SIGMA_HB = "0.350000"
SIZEVB = "50.000000"
SIGMA_VB = "0.350000"
glow = "0.070000"
bloom = "-0.150000"
mask_bloom = "0.200000"
bloom_dist = "0.150000"
halation = "-0.400000"
brightboost = "0.950000"
brightboost1 = "1.000000"
gsl = "-1.000000"
scanline1 = "11.000000"
scanline2 = "23.000000"
beam_min = "0.750000"
beam_max = "0.475000"
beam_size = "0.100000"
vertmask = "-0.200000"
scans = "0.000000"
scangamma = "2.149999"
s_sharp = "1.400000"
shadowMask = "13.000000"
maskstr = "0.850000"
mcut = "1.500000"
maskboost = "1.649999"
slotmask = "1.000000"
slotmask1 = "1.000000"
slotwidth = "6.000000"
double_slot = "4.000000"
mclip = "0.750000"
smoothmask = "2.000000"
gamma_out = "1.950001"
dctypex = "0.050000"
dctypey = "0.050000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/advanced/lut/trinitron-lut.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/crt/shaders/guest/advanced/lut/inv-trinitron-lut.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/crt/shaders/guest/advanced/lut/nec-lut.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
SamplerLUT4 = "shaders_slang/crt/shaders/guest/advanced/lut/ntsc-lut.png"
SamplerLUT4_linear = "true"
SamplerLUT4_wrap_mode = "clamp_to_border"
SamplerLUT4_mipmap = "false"

EDIT: On the plus side the update also seems to fixed some of the issues responsible for the problem to begin with. Readjusting should be quick… relatively.

2 Likes

Because of couple of min(color, 1.0) before the ‘featured code’ the consistency of invisible/clipped masks is a bit compromised, so i see no harm in removing the 2.0 effect, also because i managed to fix the ‘1.0 effect’ to my much better liking.

OTOH you preset isn’t using scanline saturation or stronger scanlines with bright colors, so you aren’t depending on it a lot, it’s just maybe a very minor difference. It’s just how the preset interacts, so i guess you’ll manage. :grin:

2 Likes

Well High-neutrality slotmask has been achieved. Here’s another prototype.

shaders = "12"
shader0 = "shaders_slang/crt/shaders/guest/advanced/stock.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "shaders_slang/crt/shaders/guest/advanced/stock.slang"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "StockPass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders_slang/crt/shaders/guest/advanced/afterglow0.slang"
filter_linear2 = "false"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "AfterglowPass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders_slang/crt/shaders/guest/advanced/pre-shaders-afterglow.slang"
filter_linear3 = "false"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "true"
alias3 = "PrePass"
float_framebuffer3 = "false"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders_slang/crt/shaders/guest/advanced/avg-lum.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "true"
alias4 = "AvgLumPass"
float_framebuffer4 = "false"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders_slang/crt/shaders/guest/advanced/linearize.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "LinearizePass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders_slang/crt/shaders/guest/advanced/gaussian_horizontal.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "absolute"
scale_x6 = "800"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "GlowPass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "absolute"
scale_x7 = "800"
scale_type_y7 = "absolute"
scale_y7 = "600"
shader8 = "shaders_slang/crt/shaders/guest/advanced/bloom_horizontal.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = ""
float_framebuffer8 = "true"
srgb_framebuffer8 = "false"
scale_type_x8 = "absolute"
scale_x8 = "800"
scale_type_y8 = "absolute"
scale_y8 = "600"
shader9 = "shaders_slang/crt/shaders/guest/advanced/bloom_vertical.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = "BloomPass"
float_framebuffer9 = "true"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "1.000000"
shader10 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = ""
float_framebuffer10 = "true"
srgb_framebuffer10 = "false"
scale_type_x10 = "viewport"
scale_x10 = "1.000000"
scale_type_y10 = "viewport"
scale_y10 = "1.000000"
shader11 = "shaders_slang/crt/shaders/guest/advanced/deconvergence.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = ""
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "viewport"
scale_x11 = "1.000000"
scale_type_y11 = "viewport"
scale_y11 = "1.000000"
PR = "0.460000"
PG = "0.460000"
PB = "0.460000"
AS = "0.100000"
sat = "1.000000"
GAMMA_INPUT = "2.000000"
interm = "0.000000"
iscan = "0.000000"
SIZEH = "50.000000"
SIGMA_H = "2.999999"
SIZEV = "50.000000"
SIGMA_V = "2.999999"
SIZEHB = "50.000000"
SIGMA_HB = "0.350000"
SIZEVB = "50.000000"
SIGMA_VB = "0.350000"
glow = "0.070000"
mask_bloom = "0.300000"
bloom_dist = "1.000000"
halation = "0.075000"
brightboost1 = "1.000000"
gsl = "1.000000"
scanline1 = "11.000000"
scanline2 = "31.000000"
beam_min = "0.700000"
beam_max = "0.475000"
beam_size = "0.100000"
scans = "0.000000"
scan_falloff = "0.500000"
scangamma = "2.150000"
s_sharp = "1.400000"
shadowMask = "13.000000"
maskstr = "0.850000"
mcut = "1.500000"
maskboost = "1.150000"
slotmask = "0.850000"
slotmask1 = "1.000000"
slotwidth = "6.000000"
double_slot = "3.000000"
gamma_out = "2.000001"
dctypex = "0.050000"
dctypey = "0.050000"
post_br = "1.070000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/advanced/lut/trinitron-lut.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/crt/shaders/guest/advanced/lut/inv-trinitron-lut.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/crt/shaders/guest/advanced/lut/nec-lut.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
SamplerLUT4 = "shaders_slang/crt/shaders/guest/advanced/lut/ntsc-lut.png"
SamplerLUT4_linear = "true"
SamplerLUT4_wrap_mode = "clamp_to_border"
SamplerLUT4_mipmap = "false"

Now I’m trying to decide between “pre-shaders-afterglow.slang” and “pre-shaders-afterglow-grade.slang”. Taking into consideration some of @Nesguy’s points, I want the final slangp file to offer more control over the “signal” from retroarch.

It’s just that so far grade’s phosphor setting aren’t exactly impressing me, but I do see some areas where the default’s NTSC LUT Color might go a little too far.

2 Likes

is it possible to make a AMIGA CRT preset for the reshade releases, like the ones on this video?

Also, i must thank @guest.r for the updates and even the old release with the bumpmap shader included, these screenshots were taken using mask 10 and stagger 2

4 Likes