Use WASD to move. Click & drag to rotate the object. Press 1 to show a low-poly diffuse-lit textured dog. Press 2 to show a vase. The vase is pretty slow (it has a hollow inside).* Press 3 to show a sphere. Press 9 to toggle between reflectivity and Phong shading. *TurboWarp suggested for performance. Then drop max pixel size to 2 or 1. turbowarp.org/1256399853
This implements Phong (Blinn) lighting, affine texture mapping, and crude sphere map reflectivity. The equation for sphere mapping is from OpenGL 1.x spec. (With the texture mapper I already had what I needed to interpolate colours or vectors per-pixel, so I did lighting) Shading still basically has the behaviour of affine texture mapping (for large tris), but I couldn't make out any difference from warping except in extreme cases: u.cubeupload.com/Jonathan50/lighting.png To add textures (256x256, RGB, concatenated) use https://gist.github.com/jeandrek/56b04c480aa2ca29d36a2434f23f9a3a#file-simple_rle-py