Please show off what crt shaders can do!

I too had similar burn-in issues with interlacing in CRT-Geom!

Have you ever used interlacing in Guest-Dr-Venom? It doesn’t seem to cause any burn-in on my display at least.

3 Likes

No i haven’t, I just fear the effect lol. I might try to add a subpixel shift that is easier to the display, maybe what guest shader does probably.

3 Likes

Scanline flickering and BFI can indeed cause “burn-in”-like image persistence. You can see the Blur Busters explanation in this post:

The checkerboard is positive-negative … Imagine a chess board where black squares are negative voltages and white squares are positive voltages. And it alternates voltages the next refresh cycle. That’s how LCD panels avoid a static charge buildup (image retention / burn-in effect). IPS panels don’t have this artifact very visible, while TN panels have this more visible. As a rule of thumb, the faster the LCD (GtG becoming a tiny fraction of refresh cycle), the more likely the inversion artifact becomes visible.

If you black out one polarity, you end up getting a static charge buildup. That’s what happens with software BFI. Monitors aren’t expecting software BFI to be subjected to them. So 60fps@120Hz strobing (50% black:50% bright) and 60fps@240Hz strobing (75% black:25% bright) can cause the visible frame to be the same polarity, and lead to a burn in effect (image retention).

And yeah, that looks like interlacing flicker. I’m overhauling the mame_hlsl shader to use the newer BGFX code, so I’ll try to get the scanline jitter working at the same time and include off/on/auto (automatically enable/disable based on vertical resolution) settings.

7 Likes

Woot woot updated mame hlsl!

2 Likes

Oh, I knew you were helping with figuring out what scanline jitter is, lol! Still, is there something else that jitter effect is supposed to do that I’m not seeing in the video you posted?

1 Like

I’m not sure but I think it’s supposed to be scanlines randomly jumping around. So in theory it’s different than interlacing which is uniform.

As I think it’s supposed to be like regular scanlines with signal interference causing randomly jumping scanlines.

1 Like

I use for years and o problem. :ok_hand:

Thanks!. :+1:

Hum bar speed too? more speed, less darky and pum!

It’s just ported directly from the code. I don’t use MAME on its own, so I have no idea how it’s supposed to look.

2 Likes

Nice, let’s destroy our monitors to experience the RF connection jitter. LOL

And our eyes. Would be cool to visit the eye doctor in the middle of summer. During covid-19

1 Like

@hunterk

People need to try that filter…

I make with the shader that told me some user abobe, with that thing that ave retroarch… dint know how to look in people TV or monitor but mine…esence arcade pure.

But i dont know why hum bar not appear in the filter i ave made…

Remember, darky before the brigtnes in your monitor or tv for good first impression.

a filter for old arcade games, tried in mame with retroarch, in flycast not work good, cause i not know even how to make good, in the x5 that you see…down to x3 and in flycast now more speed.

old crt arcade


shaders = "5"
shader0 = "shaders_slang/crt/shaders/newpixie/accumulate.slang"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = "accum1"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
shader1 = "shaders_slang/crt/shaders/newpixie/blur_horiz.slang"
filter_linear1 = "true"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "blur1"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
shader2 = "shaders_slang/crt/shaders/newpixie/blur_vert.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "blur2"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
shader3 = "shaders_slang/crt/shaders/newpixie/newpixie-crt.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = ""
float_framebuffer3 = "false"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "5.000000"
scale_type_y3 = "source"
scale_y3 = "5.000000"
shader4 = "shaders_slang/crt/shaders/mame_hlsl/shaders/mame_distortion.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = ""
float_framebuffer4 = "false"
srgb_framebuffer4 = "false"
parameters = "acc_modulate;blur_x;blur_y;use_frame;curvature;wiggle_toggle;ntscsignal;scanlinetoggle;bloomtoggle;chromatoggle;distortiontoggle;phosphortoggle;screenscale_x;screenscale_y;screenoffset_x;screenoffset_y;swapxy;bloomblendmode;bloomscale;bloomoverdrive_r;bloomoverdrive_g;bloomoverdrive_b;level0weight;level1weight;level2weight;level3weight;level4weight;level5weight;level6weight;level7weight;level8weight;humbaralpha;backcolor_r;backcolor_g;backcolor_b;shadowtilemode;shadowalpha;shadowcount_x;shadowcount_y;shadowuv_x;shadowuv_y;mask_width;mask_height;mask_offset_x;mask_offset_y;chromamode;conversiongain_x;conversiongain_y;conversiongain_z;power_r;power_g;power_b;floor_r;floor_g;floor_b;preparebloom;avalue;bvalue;ccvalue;ovalue;pvalue;scantime;notchhalfwidth;yfreqresponse;ifreqresponse;qfreqresponse;signaloffset;col_red;col_grn;col_blu;col_offset_x;col_offset_y;col_offset_z;col_scale_x;col_scale_y;col_scale_z;col_saturation;converge_x_r;converge_x_g;converge_x_b;converge_y_r;converge_y_g;converge_y_b;radial_conv_x_r;radial_conv_x_g;radial_conv_x_b;radial_conv_y_r;radial_conv_y_g;radial_conv_y_b;scanlinealpha;scanlinescale;scanlineheight;scanlinevariation;scanlineoffset;scanlinebrightscale;scanlinebrightoffset;defocus_x;defocus_y;deltatime;phosphor_r;phosphor_g;phosphor_b;ygain_r;ygain_g;ygain_b;chromaa_x;chromaa_y;chromab_x;chromab_y;chromac_x;chromac_y;distortion_amount;cubic_distortion_amount;distort_corner_amount;round_corner_amount;smooth_border_amount;vignette_amount;reflection_amount;reflection_col_r;reflection_col_g;reflection_col_b"
acc_modulate = "0.650000"
blur_x = "1.000000"
blur_y = "1.000000"
use_frame = "0.000000"
curvature = "0.000100"
wiggle_toggle = "1.000000"
ntscsignal = "0.000000"
scanlinetoggle = "0.000000"
bloomtoggle = "1.000000"
chromatoggle = "0.000000"
distortiontoggle = "1.000000"
phosphortoggle = "1.000000"
screenscale_x = "1.000000"
screenscale_y = "1.000000"
screenoffset_x = "0.005000"
screenoffset_y = "0.000000"
swapxy = "0.000000"
bloomblendmode = "0.000000"
bloomscale = "0.330000"
bloomoverdrive_r = "1.000000"
bloomoverdrive_g = "1.000000"
bloomoverdrive_b = "1.000000"
level0weight = "0.640000"
level1weight = "0.640000"
level2weight = "0.320000"
level3weight = "0.160000"
level4weight = "0.080000"
level5weight = "0.060000"
level6weight = "0.040000"
level7weight = "0.020000"
level8weight = "0.010000"
humbaralpha = "0.100000"
backcolor_r = "0.000000"
backcolor_g = "0.000000"
backcolor_b = "0.000000"
shadowtilemode = "0.000000"
shadowalpha = "0.000000"
shadowcount_x = "1.000000"
shadowcount_y = "1.000000"
shadowuv_x = "0.000000"
shadowuv_y = "0.000000"
mask_width = "0.000000"
mask_height = "0.000000"
mask_offset_x = "-10.000000"
mask_offset_y = "-10.000000"
chromamode = "3.000000"
conversiongain_x = "0.000000"
conversiongain_y = "0.000000"
conversiongain_z = "0.000000"
power_r = "1.000000"
power_g = "1.000000"
power_b = "1.000000"
floor_r = "0.000000"
floor_g = "0.000000"
floor_b = "0.000000"
preparebloom = "0.000000"
avalue = "0.500000"
bvalue = "0.500000"
ccvalue = "3.579545"
ovalue = "0.000000"
pvalue = "1.000000"
scantime = "52.599998"
notchhalfwidth = "1.000000"
yfreqresponse = "6.000000"
ifreqresponse = "1.200000"
qfreqresponse = "0.600000"
signaloffset = "1.000000"
col_red = "1.000000"
col_grn = "1.000000"
col_blu = "1.000000"
col_offset_x = "0.000000"
col_offset_y = "0.000000"
col_offset_z = "0.000000"
col_scale_x = "1.000000"
col_scale_y = "1.000000"
col_scale_z = "1.000000"
col_saturation = "1.000000"
converge_x_r = "0.000000"
converge_x_g = "0.000000"
converge_x_b = "0.000000"
converge_y_r = "0.000000"
converge_y_g = "0.000000"
converge_y_b = "0.000000"
radial_conv_x_r = "0.000000"
radial_conv_x_g = "0.000000"
radial_conv_x_b = "0.000000"
radial_conv_y_r = "0.000000"
radial_conv_y_g = "0.000000"
radial_conv_y_b = "0.000000"
scanlinealpha = "0.000000"
scanlinescale = "1.000000"
scanlineheight = "0.000000"
scanlinevariation = "1.000000"
scanlineoffset = "1.000000"
scanlinebrightscale = "1.000000"
scanlinebrightoffset = "1.000000"
defocus_x = "2.400000"
defocus_y = "2.400000"
deltatime = "1.000000"
phosphor_r = "0.800000"
phosphor_g = "0.000000"
phosphor_b = "0.000000"
ygain_r = "0.212600"
ygain_g = "0.715200"
ygain_b = "0.072200"
chromaa_x = "0.630000"
chromaa_y = "0.340000"
chromab_x = "0.310000"
chromab_y = "0.595000"
chromac_x = "0.155000"
chromac_y = "0.070000"
distortion_amount = "0.600000"
cubic_distortion_amount = "0.200000"
distort_corner_amount = "0.000000"
round_corner_amount = "0.230000"
smooth_border_amount = "0.090000"
vignette_amount = "0.500000"
reflection_amount = "0.000000"
reflection_col_r = "1.000000"
reflection_col_g = "0.900000"
reflection_col_b = "0.800000"
textures = "frametexture"
frametexture = "shaders_slang/crt/shaders/newpixie/crtframe.png"
frametexture_linear = "true"
frametexture_wrap_mode = "clamp_to_border"
frametexture_mipmap = "false"

The filter is good for low resolutions games, old…but try to play Quake 1 or Doom 3…( try low resolution in core settings)

I’ve been using HyperSpaceMadness built shaders in retroarch, and despite the moire effect on Naomi content, it’s very nice (recently discovered lowering the core internal res helps a lot, but still quite there).

One question I have about CRT shaders is how to see the shadow-mask lines. That’s the one thing missing from all shaders I’ve tried over the years. While I can get great scanlines, screen distortion to mimic round CRTs, I have never seen shadow-mask breaking up my scanlines.

I’m on a 4k display running BGFX in MAME and HSM shaders in retroarch, so perhaps it has something to do with the resolution. Is this something I should be able to see with CRT shaders? Do I need to resize the slot-mask.png or custom-mask.png files?

Thank you!

Most of the CRT shaders have mask effects built in. This blog post may be of interest to you, as well: http://filthypants.blogspot.com/2020/02/crt-shader-masks.html

4 Likes

I see many screenshots that look like magazine screenshots. Ultra blurry and extremely saturated, tons of artifacts too. Don’t know why people think the arcades looked like that.

If I had to guess probably movies lol

Thanks!!! the new HLSL shader is NOW disponible on retroarch!! ( actualizing in retroarch update shaders option)

@hunterk I didn’t know you were the creator of HLSL in retroach, legend.

Thanks a lot! try to improve it whenever you can.

Testing :+1::ok_hand::clap::clap:

Countdown …T-1 …

:two: :zero: :zero: :zero:

Congratulations for 2000 contributions in a single thread.

:clap: :clap: :clap:

1 Like

Whit the new HSLS shader, you need to use the old HSLS shader, change the path that is in the directory old, inside hlsl directory, because the new hlsl shader was change and the paramethers not work.

“shaders_slang/crt/shaders/mame_hlsl/shaders/mame_distortion.slang”

change to:

“shaders_slang/crt/shaders/mame_hlsl/shaders/old/shaders/mame_hlsl/shaders/mame_distortion.slang”

very great config for old games, new games too.

1 Like