2D Lighting Engine
In 2014/15, I developed a concept 2D lighting system with shadows. A full analysis was undertaken of rendering performance vs. number of lights.
Calculating Shadow Geometry
Shadow geometry is calculated per-light with a mathematical approach. Supporting concave shapes was challenging at the time, requiring determining which object edges 'face' away from the light.
'Infinite' light support
The program uses framebuffers to support a very large number of lights. A kind of deferred rendering- lighting information is drawn to framebuffers first, and applied to the scene later. Optionally lights can be drawn a second time with an 'additive' blend mode, leading to a bloom effect.