Software rasterization using the HTML5 canvas element (all 3D math and triangle rasterization done via javascript). Following Chapter 2 of 3D Game Engine Design by David Eberly