3 ms·
I rendered voxel iso-surfaces using blobs in the late 90's. I'd scan a full 3d voxel array for surface voxels, use the local density gradient to compute a norma
by phkahler 3y ago
I rendered voxel iso-surfaces using blobs in the late 90's. I'd scan a full 3d voxel array for surface voxels, use the local density gradient to compute a normal, quantize the normal to one of 240. Then I'd make chains of surface voxels using a table of displacement vectors. Most voxels were 2 bytes - a displacement index (from previous voxel) and a normal vector (index). Lighting was computed for all 240 normal vectors and stuffed in a lookup. Software could paint all these little colored circles in a z-buffer very fast. The only real bummer back then was that it had to be non-perspective. The displacement vectors were coverted to screen space per-frame, so it was paint a blob, offset, lookup color, paint another. One displacement value was used to indicate the chain ended and I needed to store an absolute position next, but most voxels were just 2 bytes.