Table 1: All the buffers used in the process. Nb, Ne and Nf each denotes the maximum number of blocks, vertices and triangles, respectively, and are assigned 50% of the overall blocks, edges and cells.

buffer size type usage
blocks Bx × By × Bz float2 min/max blocks
block buffer Bx × By × Bz int active/inactive (0/1) (shared with edge buffer)
block index buffer Nb int block sequential indices
edge buffer Nb × 128 × 7 int edge/isosurface intersections(0/1))
cell buffer Nb × 128 × 6 int 4-bit value for cells
edge index buffer Nb × 128 × 7 int edge indices (incremented by 1 if intersected with the isosurface) (shared with cell index buffer)
cell index buffer Nb × 128 × 6 int before serialization: intersections (0/1/2) after serialization: cell indices (shared with edge index buffer)
intersection buffer Ne int3 edge indices
triangle buffer Nf int3 triangle indices
vertex buffer Ne float3 isosurface vertex buffer (shared with intersection buffer)
normal buffer Ne float3 isosurface normal vector buffer
index buffer Nf int3 isosurface index buffer (shared with triangles buffer)