Please show off what crt shaders can do!

Yes without ntsc passes.Vanilla shader.

1 Like

What shader settings are you using in this screenshot? It looks really nice

2 Likes

Hmmmm, I’m not the biggest fan of the pseudo-composite mode (destroys the details, at least on mobile. Mainly the blue electrical things on the giant purple energy orb thing.)

The s-video mode is doing some nicer checkerboard blending then I thought it could, again on mobile so mileage may vary lol.

RGB mode looks like RGB mode, no blending for anything, lol.

1 Like

Yes, I play all my games in RGB mode even there is no blending. The 3.0 value is very blurry, 4.0 is less blurry. You can put 5.0-6.0 etc and still have transparency, but it depends what gpu you have,I can go up to 12.

(12.0) https://pasteboard.co/J17Wnkw.png

1 Like

Yes, the settings require some training: :grinning:

shaders = "10"
shader0 = "shaders_slang/crt/shaders/guest/lut/lut.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/color-profiles.slang"
filter_linear1 = "true"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
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/d65-d50.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "WhitePointPass"
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/afterglow.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "AfterglowPass"
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/avg-lum.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "true"
alias4 = "AvgLumPass"
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/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/blur_horiz.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
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/blur_vert.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "GlowPass"
float_framebuffer7 = "true"
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/linearize_scanlines.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = ""
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/crt-guest-dr-venom.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"
parameters = "TNTC;CP;CS;WP;wp_saturation;SW;AR;PR;AG;PG;AB;PB;sat;lsmooth;GAMMA_INPUT;TAPSH;GLOW_FALLOFF_H;TAPSV;GLOW_FALLOFF_V;TATE;IOS;OS;BLOOM;brightboost;brightboost1;gsl;scanline1;scanline2;beam_min;beam_max;beam_size;h_sharp;s_sharp;csize;bsize;warpX;warpY;glow;shadowMask;masksize;vertmask;slotmask;slotwidth;double_slot;mcut;maskDark;maskLight;CGWG;gamma_out;spike;inter;interm;bloom;scans"
TNTC = "0.000000"
CP = "0.000000"
CS = "0.000000"
WP = "0.000000"
wp_saturation = "1.000000"
SW = "1.000000"
AR = "0.070000"
PR = "0.050000"
AG = "0.070000"
PG = "0.050000"
AB = "0.070000"
PB = "0.050000"
sat = "0.100000"
lsmooth = "0.900000"
GAMMA_INPUT = "2.400000"
TAPSH = "4.000000"
GLOW_FALLOFF_H = "0.300000"
TAPSV = "4.000000"
GLOW_FALLOFF_V = "0.300000"
TATE = "0.000000"
IOS = "0.000000"
OS = "1.000000"
BLOOM = "0.000000"
brightboost = "1.400000"
brightboost1 = "1.150000"
gsl = "0.000000"
scanline1 = "6.000000"
scanline2 = "8.000000"
beam_min = "1.350000"
beam_max = "1.050000"
beam_size = "0.700000"
h_sharp = "3.750000"
s_sharp = "0.350000"
csize = "0.000000"
bsize = "600.000000"
warpX = "0.000000"
warpY = "0.000000"
glow = "0.020000"
shadowMask = "5.000000"
masksize = "1.000000"
vertmask = "0.000000"
slotmask = "0.600000"
slotwidth = "2.000000"
double_slot = "1.000000"
mcut = "0.200000"
maskDark = "0.200000"
maskLight = "1.000000"
CGWG = "0.300000"
gamma_out = "2.400000"
spike = "1.000000"
inter = "300.000000"
interm = "1.000000"
bloom = "0.700000"
scans = "0.400000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3"
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"
2 Likes

What’s the scans parameter?

It’s not in the repos.

Is it this?

return mix(vec3(mx), res, scans);

where you replace the ‘scans’ with values between 0.0 (no added saturation) and 1.0 (full added saturation).

So scanline saturation?

I actually added my own contrast, saturation, brightness, RGB levels parameter inside the shader. Was that a bad idea? :man_facepalming:t2:

Hi! I’ll try to get you an 8k mockup today :slight_smile: I also ended up adding a scanline parameter to the shader but it still needs a bit of work, but I’m happy that it looks good for non-integer scales so that’s a start :blush:

As for the cyan and magenta phosphors (that’s what it was right?) maybe I’ll add a parameter to select which type of phosphors the user wants, but that would add another if clause to my shader and I’m not sure I like that. I’ll have to think about it :thinking: it’s definitely worth a try I guess :slight_smile: :slight_smile:

3 Likes

Yes, i started with ‘fixing’ some small issues. I’ll post an update when i polished it.

1 Like

Magenta and green, actually.

More info can be found here.

1 Like

No not all it, it’s fine having the colour parameters baked in to the shader, I wasn’t aware your shader had this, so just suggested if people viewing your screen shots found them too dark or bright they could adjust colour settings using the img adj pass. Apologies might have been a bit of a random comment in my previous post!

Yeah this might be helpful, some of the mask patterns don’t work on different types of monitors, like lg oled which has a white element as well as RGB.

@HyperspaceMadness

It’s worth pointing out that none of the subpixel respecting patterns will work with the funky subpixels on an OLED. Best bet in that case is to use the highest resolution possible and use naive tiling with the rotated shadowmask pattern in Lottes. It’s not accurate but it avoids uneven subpixel spacing and chromatic aberration.

Thank you for this link! It covered a lot of what I figured out after a lot of trial and error and them some. It could have saved me a lot of time had I known about it :joy:

I’m still thinking about the 2 pixel wide triad, but if anything, I wanted to mention that my shader also has an option to invert the triads (BGR) which doesn’t increase the dpi, obviously, but this configuration packs the phosphors tighter and leaves GBRG free between the triads to better simulate the vertical section of the slot mask :blush:

2 Likes

Looking forward to your update, always has cool additions!

Hopefully when you finish your update you’ll post here with your changes. (Sorta like a changelog, lol.)

I decided the shader still needs work and made a few changes. How does this look for faint scanlines? I’m not quite satisfied but there’s only so much one can do at 1366x768, sadly.

Photo of the screen for comparison. I don’t know if that will help :slight_smile:

1 Like

I implemented some changes which were discussed in this thread. The most prominent ones are

  • mask 7 can now be adjusted with bright pixels
  • mask 5, 6 and 7 edge application is now different (kurozumi presed looks better now for example)
  • slotmask size is now implemented to support 4k
  • scanline saturation param added for scanlines type 1 and 2
  • some additional tweaks

I’ll post a crt-guest-dr-venom-kurozumi screenie, masks look better now:

9 Likes

yeah, 720p is tough. There just aren’t enough pixels to work with. That looks good, though, especially the photo :slight_smile:

1 Like

A post was split to a new topic: Dogway’s grading shader (slang)

Yeah, this looks pretty good for 720p - scanlines are still really hard to detect at all, though. Might bump up the strength just a tad.

1 Like