In understanding how the rotation was implemented, it took me longer than it probably should have to realize that the normal map (which I think of in terms of lighting) is actually a radial position on the sphere.
I had to go back and forth with the final and original code a few times, and finally noted that "n" gets renamed to "point" when it becomes an argument to colorLookup.
This dual usage of the normal for lighting brightness calculation and as a radial position on the sphere surface for looking up the color makes sense in retrospect but is also a somewhat subtle aspect that you might want to address more explicitly in your text instead of just silently renaming the variable in the code.
It might also be simpler to do your rotations without a matrix, for the learners ( just expand out the functions, e.g. https://github.com/magcius/sw3dv/blob/gh-pages/b_vert.glsl#L... )
Over the last few months, I’ve started competing in billiards, and the roll vs slide, english, tangent lines, and even forced follow to be incredibly interesting.
Is any of that involved in the physics simulations that you’ve worked out? If it is, I would really like to know more.
Where or how did you learn GLSL?
https://duckduckgo.com/?q=opengl+orange+book
Also the quick reference card helps
The resources are really good, hadn’t found something like that yet!
We had Renderman on NeXT, TI TMS34010, and a couple of other attempts outside the PC world.