After playing around with black frame insertion and shaders for a while, I became bothered by the moire-like patterns that I was seeing with scanlines. With BFI enabled and using 5x vertical scale, the scanlines never looked quite uniform, even though screenshots confirmed that the scanlines were pixel-perfect. After looking into this, I discovered that the problem is the inversion pattern used by the LCD’s subpixels, which is inevitable when using BFI. The solution to this problem is that you just have to use an even-numbered integer scale (2x, 4x, 6x, etc.) when using BFI if you want scanlines to look right.
At 4x scale using BFI, you can also get away with using the magenta-green mask from CRT-Easymode and CRT-Aperture. This winds up looking like the slotmask simulation from the dotmask shader, except at the level of the LCD’s subpixels. The image using CRT-Aperture at 4x scale with the mask enabled is very nice IMO, looking like a 400 - 500 TVL slotmask CRT using RGB.
(again, this is with BFI enabled and my backlight at 100%, so brightness and gamma look very different in person)
Here are the settings I used for these shots. I wound up increasing MASK_STRENGTH to 0.15 and GAMMA_INPUT to 2.70.
alias0 = ""
BRIGHTNESS = "1.750000"
filter_linear0 = "false"
float_framebuffer0 = "false"
GAMMA_INPUT = "2.600000"
GAMMA_OUTPUT = "2.400000"
GLOW_DIFFUSION = "0.050000"
GLOW_HALATION = "0.100000"
GLOW_HEIGHT = "0.500000"
GLOW_WIDTH = "0.500000"
MASK_COLORS = "2.000000"
MASK_SIZE = "1.000000"
MASK_STRENGTH = "0.100000"
mipmap_input0 = "false"
parameters = "SHARPNESS_IMAGE;SHARPNESS_EDGES;GLOW_WIDTH;GLOW_HEIGHT;GLOW_HALATION;GLOW_DIFFUSION;MASK_COLORS;MASK_STRENGTH;MASK_SIZE;SCANLINE_SIZE_MIN;SCANLINE_SIZE_MAX;SCANLINE_SHAPE;SCANLINE_OFFSET;GAMMA_INPUT;GAMMA_OUTPUT;BRIGHTNESS"
SCANLINE_OFFSET = "0.000000"
SCANLINE_SHAPE = "1.000000"
SCANLINE_SIZE_MAX = "1.500000"
SCANLINE_SIZE_MIN = "0.500000"
shader0 = "C:\Program Files\RetroArch\shaders\shaders_glsl\crt\shaders\crt-aperture.glsl"
shaders = "1"
SHARPNESS_EDGES = "2.000000"
SHARPNESS_IMAGE = "1.000000"
srgb_framebuffer0 = "false"
wrap_mode0 = "clamp_to_border"