Please show off what crt shaders can do!

Yeah I’d just like to get the colors a bit closer to source, no big deal though. I’m interested in trying that mask but I can’t seem to find it. Is it unique to GDV-mini?

2 Likes

Yes it is, tried to simulate a Commodore 1084s based on actual monitor screenshots resized with gimp and reduced to 1080p size. There is another interesting thing in gdv mini, brightboost works differently from other shaders, the more bright a color is the more brightboost it will get so you won’t see e.g. two colors 0.95 and 1.0 to become the same hehe. That gives a natural sense of “glow” without spending gpu cycles on another function inside shader :wink:

4 Likes

@guest.r Can DariusG’s mask be added to guest-dr-venom? Or is there a configuration that can replicate it?

1 Like

I need to make a new release to change the slotmask size functionality into more ‘versatile’ slotmask thickness. Then you could play a bit with masks 8 or 9.

1 Like

This is the closest I could get to replicating DariusG’s mask in guest-dr-venom. There’s still some slight differences that I’m not sure how to replicate.

DariusG

guest-dr-venom

@DariusG do you know why there are some darker spots in your mask?

I think it’s easier on the eyes than the stretched lottes mask while giving a similar effect.

7 Likes

That looks great man. Good work :slight_smile:

3 Likes

Trying out a low-ish TVL slot mask look. This one uses Mask 9, slot mask width 3, height 2, with just the teensiest bit of glow and halation in an attempt to replicate the faint phosphor glow you get on CRTs in areas that aren’t actually hit by the electron beam. This one is actually using crt-guest-advanced-fast, because apparently my potato GPU cannot quite handle the standard preset once I turn on glow features, which is a damn shame.

5 Likes

Hi everyone, I bought the “Street Fighter 30th Anniversary Collection” for collection and love for the Street Fighter saga. Trying it out, I really liked the “Arcade” filter they put into the collection. Do any of you know how I could replicate the effect with the GDV Advance or the GDV Mini? Thanks for your help.

Post some good photos and we’ll see what we can do :slight_smile:

1 Like

Low TVL slotmasks are all the rage right now. Looks good!

1 Like

Hi @Nesguy - first of all thank you for your availability and kindness. Unfortunately tonight, after some photos I took, I had problems uploading the images to Imgur. Alternatively, I found on the net some images related to the Capcom Fighting Collection filters:

This is pretty much the same as what I was looking for

This is a different but equally interesting filter

I made many tests but I failed, if you help me to have these hard filters with the GDV Advance or the GDV Mini I would be infinitely grateful to anyone who can help me.

That’s a pretty strange-looking filter IMO, and it’s hard to tell what exactly is going on due to the scaling in the photo. Looks like it’s darkening every 4th(?) pixel. I don’t know if you can replicate that exactly with GDV without some alteration to the code, but you might be able to get close. Maybe mask 0 with double phosphor width?

Personally, I think the “official” efforts at CRT emulation pale in comparison to the fan-driven efforts you’ll find on this forum.

Here’s a quick stab at it. Mask 8, double mask size.

shaders = "12"
shader0 = "shaders_slang/crt/shaders/guest/advanced/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/crt/shaders/guest/advanced/stock.slang"
filter_linear1 = "false"
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 = "false"
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 = "false"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "true"
alias3 = "PrePass"
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/avg-lum.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "true"
alias4 = "AvgLumPass"
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/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/advanced/gaussian_horizontal.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "absolute"
scale_x6 = "800"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "GlowPass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "absolute"
scale_x7 = "800"
scale_type_y7 = "absolute"
scale_y7 = "600"
shader8 = "shaders_slang/crt/shaders/guest/advanced/bloom_horizontal.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = ""
float_framebuffer8 = "true"
srgb_framebuffer8 = "false"
scale_type_x8 = "absolute"
scale_x8 = "800"
scale_type_y8 = "absolute"
scale_y8 = "600"
shader9 = "shaders_slang/crt/shaders/guest/advanced/bloom_vertical.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = "BloomPass"
float_framebuffer9 = "true"
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/crt-guest-advanced.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = ""
float_framebuffer10 = "true"
srgb_framebuffer10 = "false"
scale_type_x10 = "viewport"
scale_x10 = "1.000000"
scale_type_y10 = "viewport"
scale_y10 = "1.000000"
shader11 = "shaders_slang/crt/shaders/guest/advanced/deconvergence.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = ""
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "viewport"
scale_x11 = "1.000000"
scale_type_y11 = "viewport"
scale_y11 = "1.000000"
GAMMA_INPUT = "2.500000"
gamma_out = "2.200000"
m_glow = "1.000000"
glow = "0.050000"
bloom = "0.150000"
brightboost = "2.599999"
brightboost1 = "2.300000"
gsl = "1.000000"
scanline1 = "5.000000"
scanline2 = "10.000000"
beam_max = "1.200000"
scans = "0.700000"
s_sharp = "1.000000"
shadowMask = "8.000000"
maskstr = "0.400000"
mcut = "0.400000"
masksize = "2.000000"
maskDark = "0.300000"
maskLight = "1.000000"
slotwidth = "3.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"
2 Likes

Thank you very much, you are very kind. The final effect is pretty close.

Guys, a piece of advice: what do you think?

1 Like

More attempts

2 Likes

I’d try mask 8 slotmask width 3 or mask 7 slotmask width 2.

Edit: and I’d enable integer scaling if you haven’t done so

Also you need some kind of vertical mask as well, just the slotmask by itself looks a bit strange IMO. The slotmask is really intended to be combined with one of the vertical masks to get the best results.

Boy, did I pick the wrong kind of CRT to attempt to replicate. So I’ve been trying to more or less match these picture of an old, VERY high dot pitch VGA CRT monitor:

Notice the distinct lack of scanlines AND blockiness normally associated with line-doubled Mode 13h DOS games. It looks so natural, it almost makes me think this is precisely the kind of display DOS game developers were targeting. Problem is, most of the available masks are too fine to achieve this, and to complicate things further, the output resolution/scale also matters.

After endlessly trying out various masks, mask sizes and mask stagger values, I have determined the mask that is best suited for this particular task is Mask 4. Unfortunately, I wasn’t able to replicate the look as well as I wanted while retaining line-doubling, so I set the core to use SVGA, which in DOSBox-Core disables line-doubling, and enabled No Scanline mode in GDV. I then determined the scale that best matches the dot pitch seen in the pics is 6x scale. Here is a screenshot of the result thus far:

I’m still tweaking the parameters a bit, so perhaps it’s a tad too blurry, and I could try brightening it up a bit more, but the important thing is the dot pitch is roughly where it needs to be.

6 Likes