Quick tech talk time! So For a few years I've been tinkering with an idea to use fast, per-pixel lightfields encoded in fourier series for 2D games. Veridian Expanse uses it extensively. Without the lighting, the pixel art has it's charm, but it's certainly not the mood I was trying to set. 1/6
Since the game is set within subterranean caves on an asteroid, the only light comes from the objects around you. That means putting lights on everything, and I'm a big sucker for the bio-luminescent sci-fi aesthetic! Most frames have hundreds of lights to render. 2/6
The lightfield itself is stored as 5 fourier coefficients in the layers of a low resolution texture array. A good way to visualize the lightfield is using a grid of diffuse spheres. 3/6
To generate the lightfield, VE additively draws all the lights using a single batch, and renders out the coefficients using multiple render targets. The first coefficient (left) is the total light moves through a given pixel. The next two (middle) show how much light is moving up and down (red vs green), and the final two (right) are sort of the diagonal cotributions. There's some color information lost in this graphic, but the raw data is sort of hard to visualize otherwise. 4/6
To render the soft shadows, VE makes a second, higher resolution lightfield and subtract the shadws from it. Perhaps that's worthy of a post another day. As for the algorithm to generate the soft shadow masks, I have a blog post about that with code and everything! https://slembcke.github.io/SuperFastSoftShadows 5/6
2D Lighting with Soft Shadows

Extending the hard shadow technique with accurate penumbras.

Slembcke’s Computational Corner
Overall this algorithm has similar performance benefits to deferred lighting. The main difference is that deferred combines surface properties, which prevents transparent surfaces. My lightfield method combines the light, which prevents high frequency details like specular highlights. Overall performance is great, and part of the reason why I decided to try and target the weak GPU in the Raspberry Pi. :) 6/6
@vexpanse Nothing to add regarding the tech. Just wanted to say that the result is gorgeous.