New CRT shader from Guest + CRT Guest Advanced updates

Hey there,

Thanks for looking into this. I just love the look you’ve created there, with the super subtle gradual increase in scanline thickness of white over the other parts. It’s like a very nicely tuned real CRT that has little overdrive and contrast (voltage) set moderately.

SUPER nice, great that this is possible, and very different from creating just a complete (boring) flat scanline, loving the subtleness of the beam dynamics in your example.

I tried to recreate your look but am running into the issue that reducing dark scanline beam and scanline beam center by a lot (which I think is what you did?) some dark colors start flaring out into thickness in a particular “side effect” way.

So I looked closer at your examples and see the same. I enlarged a cutout below 10x, and you see the scanlines “flaring out” in the dark parts wider than the bright parts. It’s a particular side effect.

I guess this is what you talked about that we have to accept some sideeffects to “fix” others.

Thanks anyway for looking into this, you’re the best :+1:

1 Like

In order to go completely nitpicky on this i would really need to implement another type of scanlines, but you should really consider how these situations look with actual gaming, in fact, i miss some regular feedback from gaming screens from mr. rafan. :rofl:

2 Likes

Ha ha LOL I can understand your reaction :rofl:

Yes I’m ocd AND I see these things during gaming. I understand I’m the picky guy sorry about that man :blush:

Just to be level headed I’m trying to achieve the look of scanline saturation 0.00 (see below again) for my examples (they’re cutouts from games, not hypothetical shades) only then with a “scanline saturation” value of between 0.35 and 0.50. As you can see there’s no flaring out of the dark colors, while the whites are in very smooth gradual increase with increasing brightness of surrounding pixels.

The issue I’m having as soon as you moderately add the saturation the smooth gradual increase in the examples disappear and there’s a discontinuity between the saturated and unsaturated (grayscale) thickness of the scanlines.

I’ve attached the 320x240 raw testimage with the cutouts in case you feel bored enough to take another look.

BTW, who says I’m MR.rafan ? :kissing_smiling_eyes:

scanlinesaturation0vs12

RAW test image 320x240

scanlinesaturationtest

1 Like

I’m somewhat bored because the implementation it’s not going to change. :wink: And i find some sort of achievements on enlarged patterns somewhat boring too. I already explained that linear space and math/color operations in it have it’s features, which are beneficial pro beam dynamics and most setups include beam dynamics. It’s a feature of the shader, integral part. But you’ve made your point i think, you can start a new thread if you want to continue ‘the testing’. :stuck_out_tongue_winking_eye:

2 Likes

New Release Version (16.02.2021-r1.1):

Notable changes:

  • Pre-scalers don’t need downsampling any more, very good results are possible even with 2x scale and increasing the scale-x factor now (regular and fast versions). Greater scaling and dowsampling are still working nice.
  • NTSC version has glow and bloom passes now, up from bloom passes only.
  • Scanline Shape Dark Pixels bottom limit decreased to 0.25, should be enough.
  • Edit: two small regressions corrected

Download link:

https://mega.nz/file/cogAnYhR#ze8I5g7GsvChKyy-CxozvMFtD2qBLWAxmWcORWSOKkY

Example of xBR at 2x scale, scale-x factor 2.0, no downsampling:

Example of xBR at 2x scale, scale-x factor 4.0, no downsampling:

11 Likes

Thanks I appreciate the explanation, the shader is wonderful. I love beam dynamics, it’s what sets apart your work. Maybe I’m of the school of a little toned down beam dynamics, but that’s all. With the scanline type 0 or “-1” it brings me very close so not being nitpicky is a solution too :smiley: .

2 Likes

I’m glad you see it this way. You can really belive me that the scanline implementation is fine, not the nitpickiest one, but quite nice.

1 Like

I updated from an older version (18th January?) and I notice I have to bump “scanline beam shape high” from 32 to 40 to get the same result.

Just mentioning that. :thinking:

1 Like

I have updated the recent download link with a new version, two small regressions were found. One in fact affected overall brightness, other was vignette / image frame related. Otherwise the most prominent change regarding the default appearance from January 18th is the glow range.

4 Likes

I really like the improvements to the shader, especially the higher res content. It’s cool how interlacing can create scanlines now. I’m undecided which method of interlacing I like more. Both look nice.

4 Likes

New preset is similar to the old one now. :+1:

2 Likes

Hello, i have really very good result ! Thank you again for your shader!

5 Likes

For infos,

1080p GPU : intel UHD620 Vulkan

crt-guest-advanced + Xbr-lv3, shader scale 3X, pre-scale x-factor 3.

4 Likes

I’ve created a preset for the NES. It prepends nes-color decoder, colorimetry, and pixellate before crt-guest-advanced and appends a scanline interpolation shader pass (also made by @guest.r)

It’s made for 4K but you can use it @1080p by changing the mask size to 1.

If using Mesen, for example, change the palette to RAW. It’s configured to use the Sony cxa2025as palette

The idea behind this preset is to create a bright, consumer TV preset that accurately mimics a Sony Trinitron TV.

First, you need this to be present in \RetroArch\shaders\shaders_slang\crt\shaders\guest (call it coarse.slang)

Coarse.slang

#version 450

layout(push_constant) uniform Push
{
	vec4 SourceSize;
	vec4 OriginalSize;
	vec4 OutputSize;
	uint FrameCount;
	float dsize;
} params;

#pragma parameter dsize "Scanline dithering size" 1.0 0.0 2.0 0.10
#define dsize         params.dsize     // Dithering size

layout(std140, set = 0, binding = 0) uniform UBO
{
	mat4 MVP;
} global;

#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;

void main()
{
   gl_Position = global.MVP * Position;
   vTexCoord = TexCoord;
}

#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D Source;

void main()
{

   vec2 tex = vTexCoord;
   vec2 pos = tex * params.OutputSize.xy;
   vec2 dy  = dsize*vec2(0.0, params.OutputSize.w);
   float mixer = floor(mod(pos.x,2.0));
   tex = mix(tex + 0.0*dy, tex - dy, mixer);
   
   FragColor = vec4(texture(Source, tex).rgb, 1.0);
}

Here’s my NES preset:

shaders = "16"
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/nes_raw_palette/shaders/nes-color-decoder.slang"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
shader2 = "shaders_slang/misc/colorimetry.slang"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = ""
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
shader3 = "shaders_slang/interpolation/shaders/pixellate.slang"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = ""
float_framebuffer3 = "false"
srgb_framebuffer3 = "false"
shader4 = "shaders_slang/crt/shaders/guest/advanced/stock.slang"
filter_linear4 = "false"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = "StockPass"
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/afterglow0.slang"
filter_linear5 = "false"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "AfterglowPass"
float_framebuffer5 = "false"
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/pre-shaders-afterglow.slang"
filter_linear6 = "false"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "true"
alias6 = "PrePass"
float_framebuffer6 = "false"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders_slang/crt/shaders/guest/advanced/avg-lum.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "true"
alias7 = "AvgLumPass"
float_framebuffer7 = "false"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders_slang/crt/shaders/guest/advanced/linearize.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = "LinearizePass"
float_framebuffer8 = "true"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders_slang/crt/shaders/guest/advanced/gaussian_horizontal.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = ""
float_framebuffer9 = "true"
srgb_framebuffer9 = "false"
scale_type_x9 = "absolute"
scale_x9 = "800"
scale_type_y9 = "source"
scale_y9 = "1.000000"
shader10 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = "GlowPass"
float_framebuffer10 = "true"
srgb_framebuffer10 = "false"
scale_type_x10 = "absolute"
scale_x10 = "800"
scale_type_y10 = "absolute"
scale_y10 = "600"
shader11 = "shaders_slang/crt/shaders/guest/advanced/bloom_horizontal.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = ""
float_framebuffer11 = "true"
srgb_framebuffer11 = "false"
scale_type_x11 = "absolute"
scale_x11 = "800"
scale_type_y11 = "absolute"
scale_y11 = "600"
shader12 = "shaders_slang/crt/shaders/guest/advanced/bloom_vertical.slang"
filter_linear12 = "true"
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "false"
alias12 = "BloomPass"
float_framebuffer12 = "true"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "false"
alias13 = ""
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "viewport"
scale_x13 = "1.000000"
scale_type_y13 = "viewport"
scale_y13 = "1.000000"
shader14 = "shaders_slang/crt/shaders/guest/advanced/deconvergence.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
alias14 = ""
float_framebuffer14 = "false"
srgb_framebuffer14 = "false"
scale_type_x14 = "viewport"
scale_x14 = "1.000000"
scale_type_y14 = "viewport"
scale_y14 = "1.000000"
shader15 = "shaders_slang/crt/shaders/guest/coarse.slang"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = ""
float_framebuffer15 = "false"
srgb_framebuffer15 = "false"
nes_hue = "-20.000000"
nes_sony_matrix = "1.000000"
color_mode = "1.000000"
CP = "5.000000"
interm = "0.000000"
bloom = "0.300000"
halation = "0.150000"
gsl = "2.000000"
h_sharp = "4.000001"
s_sharp = "0.000000"
barintensity = "0.010000"
shadowMask = "6.000000"
masksize = "2.000000"
addnoised = "0.040000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron1.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron2.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/crt/shaders/guest/lut/other1.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
SamplerLUT4 = "shaders_slang/crt/shaders/guest/lut/custom_lut.png"
SamplerLUT4_linear = "true"
SamplerLUT4_wrap_mode = "clamp_to_border"
SamplerLUT4_mipmap = "false"

I am open to feedback because it is still a WIP.

5 Likes

grade + crt-guest-advanced-ntsc + glass

grade + crt-guest-advanced + glass

5 Likes

What settings did you use for that second one?

Please, can you explain it? I don’t know how to do the mix between crt advance and xbr. Can you help me or share your shader settings in a .slang file or files?

1 Like

I was originally going to put these in the crt show off thread, but everyone’s showing off over here.

Normal version.

shaders = "12"
shader0 = "shaders_slang/crt/shaders/guest/advanced/stock.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = "StockPass"
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/afterglow0.slang"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "AfterglowPass"
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/pre-shaders-afterglow.slang"
filter_linear2 = "false"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "PrePass"
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/avg-lum.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "true"
alias3 = "AvgLumPass"
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/linearize.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = "LinearizePass"
float_framebuffer4 = "true"
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/gaussian_horizontal.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = ""
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "absolute"
scale_x5 = "800"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = "GlowPass"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "absolute"
scale_x6 = "800"
scale_type_y6 = "absolute"
scale_y6 = "600"
shader7 = "shaders_slang/crt/shaders/guest/advanced/bloom_horizontal.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = ""
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_vertical.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = "BloomPass"
float_framebuffer8 = "true"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = ""
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "viewport"
scale_x9 = "1.000000"
scale_type_y9 = "viewport"
scale_y9 = "1.000000"
shader10 = "shaders_slang/crt/shaders/guest/advanced/deconvergence.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = ""
float_framebuffer10 = "false"
srgb_framebuffer10 = "false"
scale_type_x10 = "viewport"
scale_x10 = "1.000000"
scale_type_y10 = "viewport"
scale_y10 = "1.000000"
shader11 = "shaders_slang/misc/Glass.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = ""
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
PR = "0.120000"
PG = "0.120000"
PB = "0.120000"
AS = "0.020000"
sat = "1.000000"
vigstr = "0.200001"
vigdef = "5.000005"
viground = "16.000000"
lsmooth = "0.970000"
GAMMA_INPUT = "2.500000"
interm = "4.000000"
SIZEH = "50.000000"
SIGMA_H = "2.000000"
SIZEV = "50.000000"
SIGMA_V = "2.000000"
SIZEHB = "50.000000"
SIGMA_HB = "1.000000"
SIZEVB = "50.000000"
SIGMA_VB = "1.000000"
glow = "0.100000"
halation = "0.200000"
brightboost = "1.000000"
brightboost1 = "0.700000"
scanline1 = "1.000000"
scanline2 = "20.000000"
beam_max = "0.700000"
beam_size = "0.300000"
scans = "0.000000"
spike = "0.700000"
h_sharp = "5.999999"
s_sharp = "0.000000"
OS = "0.000000"
BLOOM = "1.000000"
csize = "0.020000"
warpX = "0.030000"
warpY = "0.040000"
shadowMask = "6.000000"
mcut = "0.500000"
mask_gamma = "5.000000"
slotmask = "0.300000"
slotwidth = "3.000000"
double_slot = "2.000000"
gamma_out = "2.500000"
g_flicker = "0.120000"
g_shaker = "0.010000"
g_reflgrain = "0.500000"
gz = "1.030000"
gy = "0.000000"
gzr = "1.020000"
goyr = "0.030000"
goxg = "-0.030000"
goyg = "0.000000"
goyb = "-0.010000"
TO = "0.000000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron1.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron2.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/crt/shaders/guest/lut/other1.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
SamplerLUT4 = "shaders_slang/crt/shaders/guest/lut/custom_lut.png"
SamplerLUT4_linear = "true"
SamplerLUT4_wrap_mode = "clamp_to_border"
SamplerLUT4_mipmap = "false"

NTSC version.

shaders = "13"
shader0 = "shaders_slang/crt/shaders/guest/advanced/stock.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = "StockPass"
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/afterglow0.slang"
filter_linear1 = "true"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "AfterglowPass"
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/pre-shaders-afterglow.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "PrePass0"
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/ntsc/ntsc-pass1.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
frame_count_mod3 = "2"
mipmap_input3 = "false"
alias3 = ""
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "4.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass2.slang"
filter_linear4 = "false"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = "PrePass"
float_framebuffer4 = "false"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "0.500000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders_slang/crt/shaders/guest/advanced/avg-lum-ntsc.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "true"
alias5 = "AvgLumPass"
float_framebuffer5 = "false"
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/linearize-ntsc.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = "LinearizePass"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders_slang/crt/shaders/guest/advanced/gaussian_horizontal.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = ""
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "absolute"
scale_x7 = "640"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = "GlowPass"
float_framebuffer8 = "true"
srgb_framebuffer8 = "false"
scale_type_x8 = "absolute"
scale_x8 = "640"
scale_type_y8 = "absolute"
scale_y8 = "480"
shader9 = "shaders_slang/crt/shaders/guest/advanced/bloom_horizontal.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = ""
float_framebuffer9 = "true"
srgb_framebuffer9 = "false"
scale_type_x9 = "absolute"
scale_x9 = "640"
scale_type_y9 = "absolute"
scale_y9 = "480"
shader10 = "shaders_slang/crt/shaders/guest/advanced/bloom_vertical.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = "BloomPass"
float_framebuffer10 = "true"
srgb_framebuffer10 = "false"
scale_type_x10 = "absolute"
scale_x10 = "640"
scale_type_y10 = "absolute"
scale_y10 = "480"
shader11 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced-ntsc.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"
shader12 = "shaders_slang/misc/Glass.slang"
filter_linear12 = "true"
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "false"
alias12 = ""
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
PR = "0.180000"
PG = "0.180000"
PB = "0.180000"
AS = "0.020000"
sat = "1.000000"
vigstr = "0.200000"
vigdef = "4.999999"
viground = "16.000000"
quality = "1.000000"
lsmooth = "0.970000"
GAMMA_INPUT = "2.500000"
interm = "4.000000"
SIZEH = "50.000000"
SIGMA_H = "2.000000"
SIZEV = "50.000000"
SIGMA_V = "2.000000"
SIZEHB = "50.000000"
SIGMA_HB = "1.000000"
SIZEVB = "50.000000"
SIGMA_VB = "1.000000"
glow = "0.100001"
halation = "0.200000"
brightboost = "1.000000"
brightboost1 = "1.000000"
scanline1 = "0.000000"
scanline2 = "20.000000"
beam_max = "0.700000"
beam_size = "0.300000"
scans = "0.000000"
spike = "0.700000"
h_sharp = "5.999999"
s_sharp = "0.000000"
BLOOM = "1.000000"
warpX = "0.030000"
warpY = "0.040000"
shadowMask = "6.000000"
mcut = "0.500000"
mask_gamma = "5.000000"
slotmask = "0.300000"
slotwidth = "3.000000"
double_slot = "2.000000"
mclip = "1.000000"
gamma_out = "2.500000"
g_flicker = "0.120000"
g_shaker = "0.010000"
g_reflgrain = "0.500000"
gz = "1.030000"
gy = "0.000000"
gzr = "1.020000"
goyr = "0.030000"
goxg = "-0.030000"
goyg = "0.000000"
goyb = "-0.030000"
TO = "0.000000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron1.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron2.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/crt/shaders/guest/lut/other1.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
SamplerLUT4 = "shaders_slang/crt/shaders/guest/lut/custom_lut.png"
SamplerLUT4_linear = "true"
SamplerLUT4_wrap_mode = "clamp_to_border"
SamplerLUT4_mipmap = "false"
4 Likes

I can post setting when I’m near my fun times computer. It’s just a slightly altered VenomAdvanced NTSC shader. The blurring and smearing actually work out great for the higher res content.

2 Likes

You can load a scaler (xBR) instead of the first stock pass, increase the scaling, and then increase the “Prescale-X Factor (for xBR…pre-shader)” parameter.

6 Likes