Work continues. After making some changes to GLSL registers and how that is reported through the stack all the way up to WebGL, I was pleased to discover that lesson 15 is now (mostly) working correctly. My guess is that there must not have been enough registers to run correctly, but I’m not 100% sure on that. There are still some minor graphical artifacts, but it appears to be the same problem as the Earth demo, so if I can figure that one out, then that should fix both of them. Probably an overflow, as it seems to localize around areas of strong lighting influence.
After that, that leaves only demo 16, which will require some additional functionality, and demo 10, which seems to be showing a severe clipping bug.