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.

This is a collaborative effort between

Matthew Wagerfield and Tobias van Schneider – a couple of pandas trying to make the web a more magical place.