Admit it, 3D is cool. But, you know what's cooler? 2D.
I love WebGL, but unfortunately it doesn't work everywhere.
This lighting simulation can be configured to use either the 2D context of a canvas element or an array of SVG polygons to draw the triangles. It also utilises native Float32Arrays to store numerical data for highly optimised calculations.