Adding halation/glow/other effects to scanline shaders?

Is there a way to add something like adjustable halation to a scanline shader like Sine-Abs? I’m currently experimenting with a 640x480 LCD again, most CRT shaders don’t work correctly with that.

TV-Out + with Scanlines Sine-Abs works, NTSC effects work, Masks are a no-go because the LCD pixels are so chunky (20 inch TV) that they practically constitute their own. But maybe there are other effects I can’t think of at the moment that would be compatible. Interlaced-Halation also works, but I don’t like the curvature (trying to comment it out broke the shader for me), and having the effects addjustable would be neat.

You can try the ‘kawase-glow’ preset in ‘blurs’. Just replace the first ‘stock’ pass with scanline-sine-abs and set the scale to 2x. If that looks decent (the effect is very strong), you can potentially try to set up some other shaders, but that’s the easiest way to test it out.


Yup, works, thanks again! Put Image Adjustment for needed tweaks and an Interpolation pass afterwards, looks good. :smiley:

1 Like

if you open pass2 of the shader with sublime text etc and comment line 33 #define CURVATURE as //#define CURVATURE, the curvature goes away (tested).

I did this before. The curvature goes away, but so do the scanlines provided by interlacing on that display (it’s fine on my desktop monitor), and adding passes afterwards makes it look a little strange on first glance.

I found that some other shaders like easymode-halation seem to work, after disabling/changing their own scanline parameter to zero and adding my own passes. The halation parameter works there and is better for universal use, after testing more, the kawase-glow effect seems very content-dependent. I guess I just do some directory/game dependent presets after all.

If you look at the code of lottes, crt-geom, easy mode, hyllian etc these are massive shaders, except the mask. If you add functions from there like halation, curvature, glow they contain matrices and dozens of pow(), mix() functions etc that will make the ‘light’ shader crawl on slow gpu’s. Even lots of if-else, and usage of vec4 will slow down a slow gpu.

1 Like

Check this out, Scanline-sine-abs with bloom


It’s not identical to the standard version if bloom is set at 0, is that correct?

Probably needs Gamma correction too.