Please show off what crt shaders can do!

That looks great. I’ve been using this screen as a sharpness test - both of Mario’s eyes should be “solid” black. Also the vertical lines, etc. Can it pass?

These are the settings I’m currently using for guest-advanced-ntsc, using an HDR1000 MiniLED with local dimming enabled.

For comparison’s sake

shaders = "19"
feedback_pass = "0"
shader0 = "shaders_slang/misc/shaders/grade-no-LUT.slang"
alias0 = ""
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "viewport"
scale_x0 = "1.000000"
scale_type_y0 = "viewport"
scale_y0 = "1.000000"
shader1 = "shaders_slang/crt/shaders/guest/advanced/stock.slang"
alias1 = ""
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
filter_linear1 = "false"
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/stock.slang"
alias2 = "StockPass"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
filter_linear2 = "false"
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/afterglow0.slang"
alias3 = "AfterglowPass"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
filter_linear3 = "true"
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/pre-shaders-afterglow.slang"
alias4 = "PrePass0"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
filter_linear4 = "true"
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/ntsc/ntsc-pass1.slang"
alias5 = "NPass1"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
filter_linear5 = "false"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "4.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass2.slang"
alias6 = ""
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
filter_linear6 = "true"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "0.500000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders_slang/crt/shaders/guest/advanced/ntsc/ntsc-pass3.slang"
alias7 = ""
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
filter_linear7 = "true"
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/custom-fast-sharpen.slang"
alias8 = "NtscPass"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
filter_linear8 = "true"
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/stock.slang"
alias9 = "PrePass"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "true"
filter_linear9 = "true"
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/avg-lum-ntsc.slang"
alias10 = "AvgLumPass"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "true"
filter_linear10 = "true"
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/advanced/linearize-ntsc.slang"
alias11 = "LinearizePass"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
filter_linear11 = "true"
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/advanced/crt-guest-advanced-ntsc-pass1.slang"
alias12 = "Pass1"
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "false"
filter_linear12 = "true"
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/hd/gaussian_horizontal.slang"
alias13 = ""
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "false"
filter_linear13 = "true"
float_framebuffer13 = "true"
srgb_framebuffer13 = "false"
scale_type_x13 = "absolute"
scale_x13 = "800"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
alias14 = "GlowPass"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
filter_linear14 = "true"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "absolute"
scale_x14 = "800"
scale_type_y14 = "absolute"
scale_y14 = "600"
shader15 = "shaders_slang/crt/shaders/guest/hd/bloom_horizontal.slang"
alias15 = ""
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
filter_linear15 = "true"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "absolute"
scale_x15 = "800"
scale_type_y15 = "absolute"
scale_y15 = "600"
shader16 = "shaders_slang/crt/shaders/guest/advanced/bloom_vertical.slang"
alias16 = "BloomPass"
wrap_mode16 = "clamp_to_border"
mipmap_input16 = "false"
filter_linear16 = "true"
float_framebuffer16 = "true"
srgb_framebuffer16 = "false"
scale_type_x16 = "absolute"
scale_x16 = "800"
scale_type_y16 = "absolute"
scale_y16 = "600"
shader17 = "shaders_slang/crt/shaders/guest/advanced/crt-guest-advanced-ntsc-pass2.slang"
alias17 = ""
wrap_mode17 = "clamp_to_border"
mipmap_input17 = "false"
filter_linear17 = "true"
float_framebuffer17 = "true"
srgb_framebuffer17 = "false"
scale_type_x17 = "viewport"
scale_x17 = "1.000000"
scale_type_y17 = "viewport"
scale_y17 = "1.000000"
shader18 = "shaders_slang/crt/shaders/guest/advanced/deconvergence-ntsc.slang"
alias18 = ""
wrap_mode18 = "clamp_to_border"
mipmap_input18 = "false"
filter_linear18 = "true"
float_framebuffer18 = "false"
srgb_framebuffer18 = "false"
scale_type_x18 = "viewport"
scale_x18 = "1.000000"
scale_type_y18 = "viewport"
scale_y18 = "1.000000"
g_CRT_l = "2.300000"
g_vibr = "1.000000"
wp_saturation = "1.200000"
cust_artifacting = "0.000000"
ntsc_taps = "6.000000"
ntsc_shape = "1.000000"
CCONTR = "0.000000"
CDETAILS = "0.000000"
NDEBLUR = "8.000000"
GAMMA_INPUT = "2.200000"
gamma_out = "2.200000"
interm = "5.000000"
HSHARPNESS = "1.400000"
SIGMA_HOR = "0.800001"
S_SHARP = "1.000000"
HSHARP = "2.000000"
MAXS = "0.300000"
HARNG = "0.200000"
m_glow = "2.000000"
glow = "0.050000"
brightboost = "1.000000"
brightboost1 = "1.000000"
gsl = "2.000000"
scanline1 = "5.000000"
scanline2 = "40.000000"
beam_min = "1.200000"
beam_size = "0.000000"
scans = "1.500000"
shadowMask = "12.000000"
maskstr = "0.800000"
mcut = "1.000000"
deconrry = "1.000000"
deconrby = "-1.000000"
post_br = "1.500000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/advanced/lut/trinitron-lut.png"
SamplerLUT1_mipmap = "false"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT2 = "shaders_slang/crt/shaders/guest/advanced/lut/inv-trinitron-lut.png"
SamplerLUT2_mipmap = "false"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT3 = "shaders_slang/crt/shaders/guest/advanced/lut/nec-lut.png"
SamplerLUT3_mipmap = "false"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT4 = "shaders_slang/crt/shaders/guest/advanced/lut/ntsc-lut.png"
SamplerLUT4_mipmap = "false"
SamplerLUT4_wrap_mode = "clamp_to_border"
4 Likes

N64 over S-Video “PVM-style”

EDIT: these are a little blurry because the focus setting was set wrong.

6 Likes

Those are excellent mate. Excellent!

@anikom15 it looks good, but nothing like a PVM. A monitor like that is more in line with something like this. xVMs are notorious for their strong scanlines, high line counts and sharpness.

2 Likes

Yes the focus knob was set wrong, 0.5% instead of 50%. Gives me an opportunity to show off the focus knob setting though:

Focus setting 0.5%, sharpness 0%

Focus setting 50%, sharpness 0%

Focus setting 100%, sharpness 0%

There is a sharpness setting, but it isn’t quite ready yet:

Focus setting 25%, sharpness 50%

4 Likes

Yeah this second batch is getting closer, particularly the third shot :slight_smile: What shader is it btw?

It’s my own which I’ve been providing updates and using as a blog here:

https://forums.libretro.com/t/the-scanline-classic-shader/41497/32?u=anikom15

That beta you are welcome to try, but it’s already out-of-date and I think I will post a new ‘beta’ this evening (I actually ended up changing the structure around A LOT; hopefully that won’t need to happen again for a long time). The new beta should also run faster; not sure if it will make a difference for our lighter hardware friends.

I try to limit postings in this thread to things I think people will find interesting or aesthetically pleasing. For example we don’t see a lot of 3D and I wanted to show how 3D at 240p can look good with the right shader. In my thread you are mostly just going to see screenshots of F-Zero over and over :stuck_out_tongue:

1 Like

Ah it’s your own, cool! Sure thing I will try it, love exploring new territory. Oh and btw F-Zero rocks, and the Snes is a great benchmark. I tend to use arcades (for 2D) and PS1 (lo-res 3D) for my experiments.

I hadn’t messed with the N64 (not the easiest system to make look pretty) for quite a while, and that Ocarina PVM test made me want to create a good preset for that system. This is only WIP based on my most recent xVM settings, and of course there’s room for improvement (highlight masks are clipped, for starters), but it is already the best looking Super Mario 64 rendition I have ever seen. As per usual, download to see it without scaling issues.

2 Likes

Small test: I’m trying to create a good shader for arcade. I started from the base of crt-guest-advanced-hd.slangp

4 Likes

That’s really nice! Gamma a bit high maybe? Of course that depends on your monitor, but how about this? It looks better on my 2.2 display

#reference "shaders_slang/crt/crt-guest-advanced-hd.slangp"

gamma_out = "2.200000"
h_sharp = "2.800000"
s_sharp = "0.800000"

SIZEHB = "2.000000"
SIGMA_HB = "1.000000"
SIZEVB = "2.000000"
SIGMA_VB = "1.000000"

warpX = "0.040000"
warpY = "0.050000"

c_shape = "0.200000"
csize = "0.020000"
bsize1 = "0.050000"

glow = "0.050000"
bloom = "0.150000"
mask_bloom = "-0.200000"

halation = "0.080000"

hmask1 = "-0.000000"

brightboost = "2.200000"
brightboost1 = "1.800000"

gsl = "2.000000"

scanline1 = "12.000000"

beam_min = "1.000000"
beam_max = "1.400000"

scans = "0.600000"

shadowMask = "1.000000"
maskstr = "0.350000"
maskboost = "1.800000"
mask_layout = "1.000000"
smoothmask = "0.100000"

mclip = "0.150000"
maskmid = "1.000000"

Here’s my setting.

It’s looking great. If you agree that it appears a bit washed out though, just tone the gamma down a few notches :slight_smile:

1 Like

I agree, I just increased the gamma a little to 2.40

1 Like

There you go, that’s much better. Gamma can be a bit problematic when one sets the display up himself. This image is a reliable, quick way to know where your monitor is. You want to be as close as possible to 2.2.

Download it and look at it at its original size by the way. Don’t use it from the browser! Scaling it will give you terrible results. If you need to understand how to use it, take a look here

3 Likes

THANK YOU, I’ll take a look at that to fine-tune my shader.

new: #reference “shaders_slang/crt/crt-guest-advanced-hd.slangp”

GAMMA_INPUT = "2.400000"
gamma_out = "2.200000"
h_sharp = "2.700000"
s_sharp = "0.800000"

SIZEHB = "2.000000"
SIGMA_HB = "1.000000"
SIZEVB = "2.000000"
SIGMA_VB = "1.000000"

warpX = "0.045000"
warpY = "0.050000"

c_shape = "0.210000"
csize = "0.022000"
bsize1 = "0.055000"

glow = "0.060000"
bloom = "0.180000"
mask_bloom = "0.050000"

halation = "0.100000"

hmask1 = "-0.000000"

brightboost = "2.200000"
brightboost1 = "1.900000"

gsl = "2.000000"

scanline1 = "12.500000"

beam_min = "1.050000"
beam_max = "1.400000"

scans = "0.620000"

shadowMask = "1.000000"
maskstr = "0.350000"
maskboost = "1.800000"
mask_layout = "1.000000"
smoothmask = "0.100000"

mclip = "0.150000"
maskmid = "1.000000"
2 Likes

R-Type 4, PVM style widescreen.

4 Likes

GG! I love that boss! Got it working in stereoscopic 3D last year so I could shove that module down the alien’s throat in VR. Still got some 3D pics from the video to watch with red and cyan glasses. Fun times!

4 Likes

Haha wow cool! How did you do that? What a game that is… the crowning jewel of a most illustrious saga!

1 Like

There’s a Geo11 patch so you can mod Duckstation to render the game in stereoscopic 3D, side by side. Once the files are extracted in the emulator folder, you just need to tweak settings depending on the PSX game…

In the d3dxdpm.ini file : dm_convergence = 2.5 dm_separation = 20

But you can vary those for more or less pop out and depth 3D effects.

You can see it in movement here, but you’ll need YoutubeVR or some glasses or 3DTV. Duckstation with PGXP+CPU, 8X resolution, adaptive downsampling keeping 3D and post-process with Lottes CRT shader. Played with Desktop+ and SteamVR.

2 Likes

A small project is underway to create a nice little shader for the NES; it’s progressing slowly.

7 Likes

9 Likes