Please show off what crt shaders can do!

I figured if I kept the same slot mask look it’s pretty much gonna look exactly the way it already it is except I’ll be changing how the dithering blends, thought I’d present something different just for the arcades. Correct me if I’m wrong but didn’t arcade monitors also use lottes masks as well?

1 Like

I understand, but I don’t think Lottes is actually a “real” CRT Mask pattern. It was actually invented for the purpose of CRT emulation. So a more authentic Arcade Monitor Preset would definitely be using Slot Mask.

3 Likes

Lottes’ mask 3 should be an arcade monitor (1 consumer slot CRT, 2 aperture grille, 4 PC monitor), but in my opinion is not as as good as guest’s slots.

3 Likes

Yeah I agree with both you and @Fab, I tried messing around with it last night, compared to that slot mask nothing seems to compare that’s how much I love that mask. The most I’ll probably tell someone if they want that arcade monitor dithering is switch over to blend mode 2 and call it a day lol.

2 Likes

Looks nostalgic!

I think you need a minimum of 6x scale (1440p) to avoid the weird artifacts you’re talking about when using this mask.

1 Like

Fun fact, the dithering on arcade games is not blended. All arcade monitors were RGB, without exception.

Not all dithering is meant to be blended.

3 Likes

No, it’s a “fake” mask that never existed IRL and was created purely for emulation because it works well on LCD monitors. Basically what Cyber said.

2 Likes

I don’t know how I didn’t correct myself to that fact earlier, and that’s exactly what Blend Mode 2 in guest’s NTSC shader gives you when you also raise the NTSC resolution up as well.

2 Likes

Playing around with a new filter for the ntsc-fast version:

7 Likes

Is this filter to create the rainbow effect?

1 Like

Hey everyone quick update, I have updated my 8/16 bit shaders from my last shader pack post. There was excessive jittering going on and I managed to not only reduce it but also sharpen up the overall picture a little more in the process. That juicy rainbow banding now looks better than ever. You can grab the new dl link at the same post here.

4 Likes

If you use the latest version of the ntsc shaders, then resolution scaling can be combined with sharpening to create different coloring effects. It’s also important if the ntsc shaders operate with 2 or 3 phase filtering. Anything above 300 horizontal original resolution triggers 2-phase by default.

It’s also possible that different horizontal resolutions produce a different effect in some situations:

If i play with resolution scaling a bit i get this:

An interesting remark about photos of the rainbow effect would be, that 2-phase encoding/decoding produce different odd/even frames, probably on real HW too. It’s also especially hard to grasp the 2-phase screenies, because merging the frames produces color artifact free images and normal screenshots only an odd or even frame. So to speak TV photos might not consider temporal merging.

I’m also demonstrating a new pixel filter with the ntsc-fast version, which can produce a much smoother image if set accordingly.

TL;DR;

With newest versions of the ntsc shaders resolution scaling and sharpening can be used to adjust the ‘rainbow’ effect.

9 Likes

Introducing, my first SlotMask Preset!

CyberLab Ultimate Virtual Slot Mask CRT-1P2RTA

CyberLab Ultimate Virtual SlotMask CRT - 1P2RTA - Video 1

CyberLab Ultimate Virtual SlotMask CRT - 1P2RTA - Video 2

CyberLab Ultimate Virtual SlotMask CRT - 1P2RTA - Video 3

You can use MPC-HC, MX Player or VLC Player to view the videos.

You have to load full resolution, then open in new tab or window, zoom in or view fullscreen in order for these to look correct because of the mask and scanline settings.

7 Likes

Here we go again another guest shader update another shader pack update. First notable change about this pack is I gave arcade systems its own shader presets so now we have preset shaders for 8/16 bit, 32/64/128 bit and now one for arcade systems bringing the shader pack up to 18 presets for you to play with:

https://www.mediafire.com/file/fjd34pp71x7oims/crt-guest-advanced-ntsc-slotmask_presets_06-01-2022.zip/file

All 8/16 bit game pics were taken with “NTSC Signal Mode” in the parameters turned off (except the Sonic pic, had to show off that rainbow banding). Now you can switch between the RF cable look or a crispy clean sharp look on the fly simply by going into parameters and turning off/on the very first setting.

You must have guest’s latest shader update for my presets to display properly which you can find here.

@HyperspaceMadness this new set will replace the last one. As always, hope you all enjoy.

Edit: As of 06/01 I went and refined the sharpness a bit on all presets so if you downloaded the pack before please grab it again.

8 Likes

maybe this is useful for you bud. Thanks for sharing as always. Now you can control the rainbow intensity. @sonkun

shaders = "18"
shader0 = "shaders_slang/crt/shaders/tvout-tweaks.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
shader1 = "shaders_slang/crt/shaders/mame_hlsl/shaders/old/shaders/mame_hlsl/shaders/mame_ntsc.slang"
filter_linear1 = "true"
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 = "true"
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 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "PrePass0"
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/ntsc/ntsc-pass1.slang"
filter_linear4 = "false"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = "NPass1"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "4.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass2.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = ""
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass3.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
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/custom-fast-sharpen.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "NtscPass"
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/stock.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "true"
alias8 = "PrePass"
float_framebuffer8 = "false"
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/avg-lum-ntsc.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "true"
alias9 = "AvgLumPass"
float_framebuffer9 = "false"
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/linearize-ntsc.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = "LinearizePass"
float_framebuffer10 = "true"
srgb_framebuffer10 = "false"
scale_type_x10 = "source"
scale_x10 = "1.000000"
scale_type_y10 = "source"
scale_y10 = "1.000000"
shader11 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced-ntsc-pass1.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = "Pass1"
float_framebuffer11 = "true"
srgb_framebuffer11 = "false"
scale_type_x11 = "viewport"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders_slang/crt/shaders/guest/advanced/gaussian_horizontal.slang"
filter_linear12 = "true"
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "false"
alias12 = ""
float_framebuffer12 = "true"
srgb_framebuffer12 = "false"
scale_type_x12 = "absolute"
scale_x12 = "640"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "false"
alias13 = "GlowPass"
float_framebuffer13 = "true"
srgb_framebuffer13 = "false"
scale_type_x13 = "absolute"
scale_x13 = "640"
scale_type_y13 = "absolute"
scale_y13 = "480"
shader14 = "shaders_slang/crt/shaders/guest/advanced/bloom_horizontal.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
alias14 = ""
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "absolute"
scale_x14 = "640"
scale_type_y14 = "absolute"
scale_y14 = "480"
shader15 = "shaders_slang/crt/shaders/guest/advanced/bloom_vertical.slang"
filter_linear15 = "true"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "BloomPass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "absolute"
scale_x15 = "640"
scale_type_y15 = "absolute"
scale_y15 = "480"
shader16 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced-ntsc-pass2.slang"
filter_linear16 = "true"
wrap_mode16 = "clamp_to_border"
mipmap_input16 = "false"
alias16 = ""
float_framebuffer16 = "true"
srgb_framebuffer16 = "false"
scale_type_x16 = "viewport"
scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
shader17 = "shaders_slang/crt/shaders/guest/advanced/deconvergence-ntsc.slang"
filter_linear17 = "true"
wrap_mode17 = "clamp_to_border"
mipmap_input17 = "false"
alias17 = ""
float_framebuffer17 = "false"
srgb_framebuffer17 = "false"
scale_type_x17 = "viewport"
scale_x17 = "1.000000"
scale_type_y17 = "viewport"
scale_y17 = "1.000000"
TVOUT_RESOLUTION = "320.000000"
TVOUT_TV_COLOR_LEVELS = "1.000000"
TVOUT_RESOLUTION_I = "184.000000"
TVOUT_RESOLUTION_Q = "105.599998"
ntscsignal = "1.000000"
avalue = "0.000000"
bvalue = "0.000000"
scantime = "51.800011"
signaloffset = "0.000000"
CS = "1.000000"
TNTC = "4.000000"
ntsc_sat = "0.900000"
ntsc_bright = "0.800000"
SHARPEN = "4.000000"
CONTR = "0.000000"
SIGMA_HOR = "2.699999"
glow = "0.200000"
bloom = "0.250000"
bloom_dist = "0.700000"
brightboost = "1.650000"
shadowMask = "5.000000"
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"
5 Likes

That’s nice. The first thing I noticed is that you turned the signal offset setting off so that the rainbows appear even when you’re not moving around and you’re welcome. These presets should hold out for a bit unless guest bring in some more goodies to add into the shader

3 Likes

CyberLab Slot Mask for Blargg + CyberLab Genesis Blargg S-Video Filter

CyberLab Slot Mask for Blargg + CyberLab Genesis Blargg Composite Filter

You have to load full resolution, then open in new tab or window, zoom in or view fullscreen in order for these to look correct because of the mask and scanline settings.

2 Likes

Hey everyone, I went and tweaked the sharpness a bit on all my presets, it’s subtle but I wanted to make things a little sharper. Here’s how it looked before:

Here’s how it looks now:

You can grab the new pack in the same post as before right here.

9 Likes

@HyperspaceMadness do you (or anyone else) still have my ReShade VHS setup? My backup drive died and I replaced the one in my google drive with a newer version.

5 Likes

Take a look at these amazing CRT-Guest-Advanced scanline dynamics!

20220602_125208

20220602_125258

20220602_124841

7 Likes