Until I get a much brighter display, I’m sticking with just scanlines + gamma correction. Your standard LED-lit LCD just doesn’t have the brightness to do phosphor/mask emulation without A LOT of compromises. Anything you do to make up for the lost brightness via software just winds up making the image quality worse in other ways. I wind up tweaking settings for hours and am never quite satisfied with the result.
It’s worth pointing out that black frame insertion is essential if you want to preserve mask detail whenever there’s any horizontal motion. Without it, the mask just disappears whenever an object scrolls horizontally. On top of this, the mask actually exacerbates the motion blur on an LCD if you’re not using BFI (at least in my experiments).
That said, the scanline-mask shader still looks damn good sans mask, so I’ll still be using this shader for the foreseeable future.
Should be viewed @ 1080p and with display backlight set to 100%:
Color saturation seems off and the phosphors aren’t displaying anything close to accurate intensity values- remember, 100% white should be 100% red, blue and green (or 100% magenta/green if using the magenta/green mask). This goes back to my point that there’s no way to get adequate brightness when using the mask other than cranking up the backlight. Anything else you do is compromising the objective picture quality or compromising the accuracy of the CRT emulation. Of course, it’s up to individual preference whether these compromises are acceptable, but I’m a bit of a perfectionist when it comes to these things (in case you couldn’t tell).
This may be of interest. Regarding bloom, I think I found an objective reason why it’s undesirable - it negatively affects the ability of the screen to deliver contrast. You’re increasing brightness at the expense of contrast (and saturation). You’re already dealing with a pretty severe lack of contrast and saturation when trying to emulate a CRT on an LCD; adding bloom just makes the problem worse.
When a single pixel is displayed on the screen of a CRT it has a spatial profile that extends beyond the borders of thecell in which it is conceptually localized. This ‘leakage’ turns out to be the limiting factor in the ability of the CRTto deliver contrast on its screen.
shaders = "2"
shader0 = "shaders_glsl/crt/shaders/guest/d65-d50.glsl"
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_glsl/crt/shaders/guest/crt-guest-sm.glsl"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
parameters = "WP;wp_saturation;smart;brightboost1;brightboost2;stype;scanline1;scanline2;beam_min;beam_max;cutoff;s_beam;cubic;h_sharp;mask;maskmode;maskdark;maskbright;masksize;gamma_out"
WP = "0.000000"
wp_saturation = "1.000000"
smart = "0.000000"
brightboost1 = "1.000000"
brightboost2 = "1.000000"
stype = "0.000000"
scanline1 = "14.000000"
scanline2 = "16.000000"
beam_min = "1.300000"
beam_max = "1.000000"
cutoff = "0.000000"
s_beam = "0.000000"
cubic = "0.000000"
h_sharp = "4.599999"
mask = "0.000000"
maskmode = "0.000000"
maskdark = "0.000000"
maskbright = "-0.000000"
masksize = "1.000000"
gamma_out = "2.600000"