learning webgl lessons 3, 4 ported