Please show off what crt shaders can do!

So, a friend gave me a CRT monitor, and I honestly think I kinda hate it tbh lol.

Like maybe I need to poke around the settings some, but I don’t think it’ll fix my issue with the monitor (being it’s razor thin scanlines, that make me sad)

Besides that the image is super clean, and as a side note I’m experiencing bloom halos on black screens when colors are available, so that’s cool, like bloom halos exist on actual hardware. (So I’m not completely crazy yet)

1 Like

The scanlines should be razor sharp and thick on a CRT monitor in 240p mode. What kind of monitor is it?

1 Like

Some emachine thing, probably need to mess with MiSTer settings or something I guess. (As tbh I wasn’t paying attention to what the resolution was set at, I was just happy I won the argument of it displaying anything to begin with)

EDIT: Also I’m really tired rn and can’t be assed to look it up, but I think the 240p (mode?) on CRT monitors is only for multi-sync monitors. Like 15khz/31khz monitors, which iirc not all CRT monitors are multi-sync, btw to clarify CRT Monitors are normally 31khz, CRT TVs are 15khz, pvms/bvms are probably multi-sync if I had to guess lol.

2 Likes

Some NES shots from my simple & clean GDV-Advanced preset.

Normal :

#reference "shaders_slang/crt/crt-guest-advanced.slangp"
GAMMA_INPUT = "2.400000"
interm = "4.000000"
glow = "0.050000"
bloom = "0.050000"
bloom_dist = "0.050000"
halation = "0.050000"
gsl = "-1.000000"
scanline2 = "6.000000"
warpX = "0.030000"
warpY = "0.040000"
csize = "0.080000"
bsize1 = "0.250000"
shadowMask = "-1.000000"
slotmask = "0.300000"
slotmask1 = "0.700000"
slotwidth = "1.000000"
gamma_out = "2.200000"
deconrr = "1.000000"
deconrb = "-1.000000"
deconrry = "1.000000"
deconrby = "-1.000000"

NTSC :

#reference "shaders_slang/crt/crt-guest-advanced-ntsc.slangp"
GAMMA_INPUT = "2.400000"
interm = "4.000000"
glow = "0.100000"
bloom = "0.100000"
bloom_dist = "0.100000"
halation = "0.100000"
gsl = "-1.000000"
scanline2 = "6.000000"
warpX = "0.030000"
warpY = "0.040000"
csize = "0.080000"
bsize1 = "0.250000"
shadowMask = "-1.000000"
slotmask = "0.300000"
slotmask1 = "0.700000"
slotwidth = "1.000000"
gamma_out = "2.200000"
deconrr = "1.000000"
deconrb = "-1.000000"
deconrry = "1.000000"
deconrby = "-1.000000"
9 Likes
  • VGA PC monitors are usually 31 Khz only with very rare exceptions, scanline 240p can be achieved by doubling refresh rate to 120 Hz.

  • For other CRT monitors it depends on what systems they were meant for. E.g. older PC monitors are 15 Khz (CGA). EGA required 15/21 Khz for all graphics modes, so a suitable monitor is at least sort of limited multi-sync. True Multisync is more of a thing with Japanese systems (mostly the X68000) and some European Acorn machines.

  • PVMs/BVMS are rarely multi-sync, too.

Standard CRT TVs are 15 Khz, HD AND 100Hz Tvs are not.

5 Likes

Just sharing a few shots from my recent preset pack updates.

CyberLab SNES (MDAPT Off)

CyberLab SNES

CyberLab SNES

CyberLab SNES (MDAPT Off)

5 Likes

Well at least I’m not crazy, I’ll figure out if my monitor will even support 120khz

You mean 120 Hz vertical refresh rate, right? 120 KHz would refer to horizontal refresh rate. As long as your monitor supports 480 lines at 60 Hz (that would be 31 KHz output, which your monitor certainly supports), it ought to be able to output 240 lines at 120 Hz, which is also 31 KHz output…

2 Likes

Honestly the interlacing shader looks almost identical to “true” 240p on a 31 kHz monitor.

It’s also not that hard to set up true 240p, though. Custom Resolution Utility is how I did it.

2 Likes

I used to have a CRT monitor 240p setup myself some years back. I tried both the “true” and “fake” 240p methods, and after applying BFI on the former, I literally couldn’t tell the difference between them, so I just went with the latter because it’s also compatible with 480i whenever it shows up in a game.

I really miss that monitor…

4 Likes

Then, yes that. Idfk anything about CRT monitors tbh, CRT TV’s I’m more comfortable with.

I’ll have to look into that this weekend.

I don’t think my monitor likes 480i, or at the very least it’s yet again a MiSTer issue (PS1 core said no)

1 Like

I smashed together venom fast and reshade to make an “FX” shader. Is it good? I don’t know but it’s entertaining. It works best with games like Super Metroid and top down shooters. It’s hard to capture the split second flares and bloom so I’ve found some screenshots and exaggerated them for viewing. It’s better in motion when gun shots or sword slashes flare up.

You can dial things up and down with the threshold values. If you download it and find a game that shows off the silly FX let me know.

shaders = "17"
shader0 = "shaders_slang/reshade/shaders/bloom/BloomPass0.slang"
filter_linear0 = "true"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = "SamplerBloom1"
float_framebuffer0 = "true"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "4.000000"
scale_type_y0 = "source"
scale_y0 = "4.000000"
shader1 = "shaders_slang/reshade/shaders/bloom/BloomPass1.slang"
filter_linear1 = "true"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "SamplerBloom2"
float_framebuffer1 = "true"
srgb_framebuffer1 = "false"
shader2 = "shaders_slang/reshade/shaders/bloom/BloomPass2.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "SamplerBloom3"
float_framebuffer2 = "true"
srgb_framebuffer2 = "false"
shader3 = "shaders_slang/reshade/shaders/bloom/BloomPass3.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "SamplerBloom4"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
shader4 = "shaders_slang/reshade/shaders/bloom/BloomPass4.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = "SamplerBloom5"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
shader5 = "shaders_slang/reshade/shaders/bloom/LensFlarePass0.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "LensFlare1"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
shader6 = "shaders_slang/reshade/shaders/bloom/LensFlarePass1.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = "LensFlare2"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
shader7 = "shaders_slang/reshade/shaders/bloom/LensFlarePass2.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "LensFlare3"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
shader8 = "shaders_slang/reshade/shaders/bloom/LightingCombine.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = ""
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "0.250000"
scale_type_y8 = "source"
scale_y8 = "0.250000"
shader9 = "shaders_slang/stock.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = ""
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
shader10 = "shaders_slang/crt/shaders/guest/fast/pre-shaders.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = "PrePass"
float_framebuffer10 = "false"
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/fast/linearize.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = "LinearizePass"
float_framebuffer11 = "true"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders_slang/crt/shaders/guest/fast/crt-guest-advanced-pass1.slang"
filter_linear12 = "true"
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "false"
alias12 = "Pass1"
float_framebuffer12 = "true"
srgb_framebuffer12 = "false"
scale_type_x12 = "viewport"
scale_x12 = "1.000000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders_slang/crt/shaders/guest/fast/bloom_horizontal.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "false"
alias13 = ""
float_framebuffer13 = "true"
srgb_framebuffer13 = "false"
scale_type_x13 = "absolute"
scale_x13 = "640"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders_slang/crt/shaders/guest/fast/bloom_vertical.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
alias14 = "BloomPass"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "absolute"
scale_y14 = "480"
shader15 = "shaders_slang/crt/shaders/guest/fast/crt-guest-advanced-pass2.slang"
filter_linear15 = "true"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = ""
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "1.000000"
scale_type_y15 = "viewport"
scale_y15 = "1.000000"
shader16 = "shaders_slang/crt/shaders/guest/fast/deconvergence-f.slang"
filter_linear16 = "true"
wrap_mode16 = "clamp_to_border"
mipmap_input16 = "false"
alias16 = ""
float_framebuffer16 = "false"
srgb_framebuffer16 = "false"
scale_type_x16 = "viewport"
scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
bLensdirtEnable_toggle = "1.000000"
bAnamFlareEnable_toggle = "1.000000"
bChapFlareEnable_toggle = "1.000000"
bGodrayEnable_toggle = "1.000000"
iBloomMixmode = "1.000000"
fBloomAmount = "1.500000"
fBloomSaturation = "1.100000"
fBloomTint_r = "1.000000"
fBloomTint_g = "0.500000"
fBloomTint_b = "0.800000"
iLensdirtMixmode = "1.000000"
fAnamFlareWideness = "1.200000"
fAnamFlareAmount = "2.500000"
fChapFlareIntensity = "10.000000"
fGodrayDecay = "0.999900"
fGodrayWeight = "0.400000"
fGodrayThreshold = "0.850000"
iGodraySamples = "48.000000"
fFlareLuminance = "0.875000"
fFlareBlur = "10000.000000"
fFlareIntensity = "1.570000"
fFlareTint_r = "1.000000"
fFlareTint_g = "1.000000"
glow = "0.000000"
gamma_c = "1.100000"
brightboost1 = "1.300000"
scanline2 = "15.000000"
beam_min = "1.999999"
shadowMask = "10.000000"
deconrr = "-1.000000"
deconrb = "1.000000"
deconrry = "-1.000000"
deconrby = "1.000000"
post_br = "1.100000"
textures = "Dirt;Sprite;SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
Dirt = "shaders_slang/reshade/shaders/bloom/LensDB.png"
Dirt_wrap_mode = "clamp_to_border"
Dirt_mipmap = "false"
Sprite = "shaders_slang/reshade/shaders/bloom/LensSprite.png"
Sprite_wrap_mode = "clamp_to_border"
Sprite_mipmap = "false"
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"
12 Likes

Ha! Love it. There is something about putting over the top effects on these things that I quite like the idea of. Nothing to do with CRTs just putting a completely different art style in. I haven’t really experimented with the shader’s that already exist in this direction.

4 Likes

This shader is so fun to use, pretty much any game you throw on turns it into a whole new experience and I love it. Thanks for this one

2 Likes

4 Likes

That FX shader does really well with the arcade version of Strider!

6 Likes

For anyone interested I did a port of NTSC-Adaptive to ReShade :

Some shots with CRT-Geom on top :

13 Likes

Just showing off what CyberLab Turbo Duo for Blargg + Blargg_NTSC_Turbo_Duo_SNES_PSX_S-Video_CyberLab_Special_Edition looks like today!

CyberLab Turbo Duo for Blargg + Blargg_NTSC_Turbo_Duo_SNES_PSX_S-Video_CyberLab_Special_Edition

This is what CyberLab SNES looks like today!

CyberLab SNES

This is what CyberLab Genesis for Blargg + Blargg_NTSC_Genesis_S-Video_CyberLab_Special_Edition looks like today!

CyberLab Genesis for Blargg + Blargg_NTSC_Genesis_S-Video_CyberLab_Special_Edition

This is what CyberLab NES for Blargg + Core Blargg NTSC S-Video looks like today!

CyberLab NES for Blargg + Core Blargg NTSC S-Video - 1

CyberLab NES for Blargg + Core Blargg NTSC S-Video - 2

CyberLab NES for Blargg + Core Blargg NTSC S-Video - 3

CyberLab NES for Blargg + Core Blargg NTSC S-Video - 4

CyberLab NES for Blargg + Core Blargg NTSC S-Video - 5

CyberLab NES for Blargg + Core Blargg NTSC S-Video - 6

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

CyberLab__Arcade-Sharp__PVM-Edition__ADV

You have to zoom in or view these screenshots fullscreen for them to look right.

1 Like

2 Likes

Here we go another guest shader update another shader tweak. @guest.r I like the new additions especially that alternate bloom and luma grain, made good use of both of those. Just like my last post I included presets of both warm and cool temperatures to play with:

https://www.mediafire.com/file/i8agszxm2yys04d/crt-guest-advanced-ntsc-slotmask_presets_05-08-2022.zip/file

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

@HyperspaceMadness you already know lol. As always, hope you all enjoy.

8 Likes