fix drag handling, missing WebGL 2, normal fallback and HiDPI canvas
- pointer events with pointer capture: a drag only starts on the canvas,
continues outside it and ends on release; deltas from clientX/Y instead
of the non-standard layerX (a drag entering from outside made the
camera NaN)
- without WebGL 2 show a message in the page instead of an alert with raw
HTML, and refuse to load files
- normal fallback for zero-area polygons used vec3.create(args), which
ignores its arguments and returned a zero normal
- canvas resolution in device pixels (CSS size * devicePixelRatio), mouse
movement stays in CSS pixels
- index.html: charset, viewport and lang
Co-Authored-By:
Claude Opus 5.5 (1M context) <noreply@anthropic.com>