This page isn't quite the picture of perfection due to an in progress upgrade.
and an an ocean with fishies
(be warned - windows with Chrome on high-end CPU required!), though they seem to missing one end right now. The library I built does back-culling and fixed index sine and cosine lookups to improve performance. Lighting is done with light objects that can have varying intensity and color and are applied and averaged across the whole scene, see an example here
. I was disappointed that the fill function on the canvas occasionally doesn't seem to catch 100% of the edges of the triangles, leaving a nasty black artifact at certain angles. This was solved by also stroking the triangle path, though this impacts performance somewhat. Another potential approach might be to 'grow' the triangle slightly so that the edges always overlap.