New CRT shader from Guest + CRT Guest Advanced updates

“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

Hey there! I’m very happy for the nice feedback. Maybe i’ll (manage to) improve the existing features even more, i would be definitelly nice if some effects could get an upgrade. :smiley:

The effect in the video has two components which currently aren’t included with my shaders, namely PAL signaling and camera effects. There are existing PAL shaders available for Retroarch, but getting a nice cam effects shader could be a bit of a challenge. :grin: The latter is a layer which doesn’t actually contribute to the natural perception of a crt display, but much hype is nevertheless involved, because it’s the only connection to the retro feel for most of the viewers. Actually i might add a ‘cam’ pass sometime, but dunno at this point…

1 Like

Crosire would work on that.

But that depends on asking him at reshade forums if he wants to implement on the next updates.

also here is a before and after of the same preset, but with dgvoodoo2’s stretched crt mode

2 Likes

I tested a pal pre-shader with the hd version and it can indeed contribute very nicely to the vintage look.

6 Likes

Amiga monitors are RGB, not PAL :wink:

2 Likes

Dunno, since PAL is not a connection type. :thinking:

https://wiki.amigaos.net/wiki/AmigaOS_Manual:_Workbench_Monitors#Video_Monitors

Video monitors, such as the Commodore 1084 series, accept only the standard Amiga 15 kHz scan rate (NTSC and PAL display modes); a television is considered a video monitor.

1 Like

See https://en.wikipedia.org/wiki/Amiga_video_connector. You could also use RGB instead of PAL on TVs, if the TV had a SCART connector (which many PAL TVs had.)

You only got an actual PAL color signal if you used RF or composite output.

2 Likes

I know what you mean, but it’s not commonly used to name an amiga cable connection type “PAL”, because it’s not entirely accurate. :wink:

1 Like

Fun fact is that most 1084 monitors could take a composite connection. Newer amiga models also had a composite output.

Commodore 1084 back:

4 Likes