Please show off what crt shaders can do!

This is the most xVM-like thing I could make in guest-dr-venom.

Edit: the way the vertical blur works is somewhat annoying because it results in what looks like badly scaled scanlines when using very high scanline settings. I may have to switch shaders to get the xVM look that I’m going for.

(adjust backlight to 100%, view at full size):

3 Likes

I’m really liking the NEW PIXIE shader at the minute but it never seems to get much love. The scrolling scanline effect and accumulative motion blur it adds look different from any other shader without any major tinkering (Mattias offers a similar scanline effect but has a way more aggressive blur effect which cannot be removed).

For whatever reason it scales your image down a few pixels though which can be annoying when adding it to a game you’ve already rescaled to fit a certain overlay.

1 Like

I just ported it a couple of weeks ago, so probably many people just haven’t tried it. It’s also slang-only, so GLSL people can’t use it.

There’s good reason for that, as it’s an updated, expanded shader by the same guy!

2 Likes

Just trying to figure out if there’s something weird going on with the scanlines (uniform width and spacing). When I zoom in everything looks fine. When I play a game it looks like integer scaling was turned off. It’s most noticeable in high contrast areas. I think this is probably an optical illusion resulting from the subpixel structure. Seems to be more noticeable at a certain distance. Does anyone else see anything weird?

.

2 Likes

Are you talking about the black lines being somewhat thicker in some areas in the characters hair & jacket? Which I think is something caused by the brightness of the pixels in-between the black lines.

Other than that the scanlines look fine on my end.

1 Like

Looks like Integer Scaling isn’t everything, in this topic I talked about a similar issue but with crt-royale which indeed is a more finicky shader. In my case it was present even with Integer Scaling x7 (4K or so) so to rule out the LCD subpixel interference.

2 Likes

No, not that. Here’s a very exaggerated representation of what I’m seeing.

image

It looks like the black lines are not a uniform size over the same color, but alternate between thick/thin.

Thanks for the link. Yeah it’s really strange because the top/bottom of the scanlines are just barely different, not perceptible when you zoom in, but somehow you and I can see this at normal viewing distance.

Did you ever have any luck with this? I notice that the effect is not present on my iPhone screen, because it adds some very light antialiasing, I think.

@Dogway

2 Likes

In your case I analyzed the image and the scanlines are perfectly even at inspection so it’s either an optical illusion (this is exaggerated with high contrast scanlines) or the subpixel structure is messing with it, or both.

In your image there’s no underlying dithering I think, in my case there is so it might be wise to remove that, there are great shaders for that already but my best ones are the NTSC blur passes so I don’t know. About stranded pixels I can pass a convolution but I find no need in this case. My recommendation is to add some underlying or overlying (glow) blur, scanlines can play tricky effects on the eyes like strobing.

3 Likes

Wow, pretty amazing how well this worked! Guest really knew what he was doing with the default glow settings, too. It doesn’t completely solve the issue, but it’s so much better now.

Before, the effect was very noticeable with the magic meter and the other shades of green seen here. I don’t see anything weird at normal viewing distance now unless I’m really trying to see it. Thanks for the tip!

As you said though, the scanlines are actually perfect so I guess it’s my eyes/brain doing something weird. Guess it’s time for a new pair of glasses.

2 Likes

Yeah, sounds like human eye aliasing, since it was fixed by low-passing. Guess you’re out of luck until the new models come out :wink:

4 Likes

lol. I really just need a whole new body.

image

5 Likes

The one thing I like about the grade shader is how it makes color temperatures appear more cool. I came across this video of a Sony Trinitron, I know it’s not the best quality but I like how the overall image appears more cool, whites appearing more blueish instead of that yellow hue most shaders display. Maybe it’s just the quality of the tv and footage that makes it appear that way but I still like it.

I messed around a little with the grade shader chained with the guest shader and it’s nice, just can’t decide if I should leave the Phosphor option on default:

Or go with this option which makes colors appear more stronger:

3 Likes

Personally I prefer a cooler and more saturated image.

So I’d go with the second screen.

It’s all a matter of personal preference honestly, unless you’re doing what @Nesguy is doing and trying to recreate a specific type of CRT and using a test suite to calibrate everything.

2 Likes

Yeah I already chose the second one, first one looks to washed out for me, second one brings life to the picture in my opinion.

1 Like

Yeah, I tend to probably oversaturate things for that very reason. (I feel if I’m not increasing the saturation the image looks dull and lifeless, imo.) Then again it’s still very much a personal preference thing.

That being said I like how your second shot looks, an idea to possibly try is to add a deconvergence shader to you’re chain and do a green/purple deconvergence. (Makes the image pop even more imho, that being said a little deconvergence goes a long way.)

I completely agree with you, the last couple of shots I posted I tried putting the saturation back to default, it just wasn’t feeling right to me in the end when I looked back on it. With how it looks now not only do I like it better it looks a lot closer to my favorite shader crt-royale-xm29plus when displayed in 4k.

Where do I find that deconvergence shader? And I remember you saying to turn greens into blues and blues into greens on the grade shader, I’m not sure if I tweaked it right when I tried it but it came out looking crazy lol

1 Like

What shader are you currently running?

I’ll have to send you a deconvergence shader, as I’m not sure there’s any that are just plug and play with other chains. (I just decoupled mame-hlsl deconvergence pass, and am using it.)

You could use Dogway’s glass shader for deconvergence as well but it’s doing a bunch of other stuff on top of deconvergence so it may not be what you want personally.

I’ll send you some settings for colors when I send you the deconvergence pass. Give me about 20 minutes or so.

You’re using slang right?

Yeah I’m using slang. Also this is the preset I’m using right here if you wanna whip something up with it:

shaders = "10"
shader0 = "shaders_slang/stock.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/stock.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/misc/grade.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 = "g_gamma_in;g_signal_type;g_gamma_type;g_crtgamut;g_space_out;g_hue_degrees;g_I_SHIFT;g_Q_SHIFT;g_I_MUL;g_Q_MUL;g_lum_fix;g_vignette;g_vstr;g_vpower;g_lum;g_cntrst;g_mid;wp_temperature;g_sat;g_satr;g_satg;g_satb;g_vibr;g_lift;blr;blg;blb;wlr;wlg;wlb;rg;rb;gr;gb;br;bg;LUT_Size1;LUT1_toggle;LUT_Size2;LUT2_toggle;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;slotms;mcut;maskDark;maskLight;CGWG;gamma_out;spike;inter;interm;bloom;scans"
g_gamma_in = "2.400000"
g_signal_type = "1.000000"
g_gamma_type = "1.000000"
g_crtgamut = "-4.000000"
g_space_out = "0.000000"
g_hue_degrees = "0.000000"
g_I_SHIFT = "0.000000"
g_Q_SHIFT = "0.000000"
g_I_MUL = "1.000000"
g_Q_MUL = "1.000000"
g_lum_fix = "0.000000"
g_vignette = "0.000000"
g_vstr = "40.000000"
g_vpower = "0.200000"
g_lum = "0.000000"
g_cntrst = "0.000000"
g_mid = "0.500000"
wp_temperature = "6505.000000"
g_sat = "0.000000"
g_satr = "0.000000"
g_satg = "0.000000"
g_satb = "0.000000"
g_vibr = "0.000000"
g_lift = "0.000000"
blr = "0.000000"
blg = "0.000000"
blb = "0.000000"
wlr = "1.000000"
wlg = "1.000000"
wlb = "1.000000"
rg = "0.000000"
rb = "0.000000"
gr = "0.000000"
gb = "0.000000"
br = "0.000000"
bg = "0.000000"
LUT_Size1 = "16.000000"
LUT1_toggle = "0.000000"
LUT_Size2 = "64.000000"
LUT2_toggle = "0.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 = "7.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 = "2.000000"
s_sharp = "0.400000"
csize = "0.010000"
bsize = "600.000000"
warpX = "0.030000"
warpY = "0.040000"
glow = "0.020000"
shadowMask = "5.000000"
masksize = "1.000000"
vertmask = "0.000000"
slotmask = "0.000000"
slotwidth = "2.000000"
double_slot = "1.000000"
slotms = "1.000000"
mcut = "0.250000"
maskDark = "0.500000"
maskLight = "1.500000"
CGWG = "0.300000"
gamma_out = "2.400000"
spike = "1.000000"
inter = "400.000000"
interm = "1.000000"
bloom = "0.000000"
scans = "0.500000"
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"

By the way does the glsl version of grade load up for you? Whenever I try to apply it I get a failed message. I need the glsl grade shader version for the Saturn and N64 cores since those are the only drivers I get good results with when using the mupen and yaba sanshiro cores for those two systems, maybe it’s just because I’m using a Android don’t know. Never tried the glass shader but maybe sometime in the future.

1 Like

I haven’t messed with the glsl version of grade in a bit did you make sure to have this in your glsl preset?

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"
1 Like

Yeah I got that at the bottom of my guest shader but the problem is I can’t even get grade glsl shader to load up even on it’s own with no chain involved at all, I just get a failed message.

1 Like