How a tree stores its nodes (docs/internals/design/compressed-nodes.md). Every tree
and scene is one or the other, and the walk is compiled for one
(traceModuleWgsl({ nodeFormat })):
'f32': 64-byte nodes with f32 child boxes,
GPU_LAYOUT_NODE_WORD. The format of a single mesh's tree from
every builder unless asked otherwise (refits run on it), and of data
that names no format.
'quantized' (the default for scenes and walks,
DEFAULT_NODE_FORMAT): 32-byte nodes, GPU_LAYOUT_QUANTIZED_NODE_WORD: each
child box as 16-bit planes on a grid (the frame) that covers the mesh, and
each child as one stack reference. The buffer starts with the frame slot
(32 bytes, GPU_LAYOUT_NODE_FRAME_WORD), then the nodes: node i
is slot i + 1, so nodes holds nodeCount + 1 slots. A scene keeps the
frame slot right before each mesh's root (rootNodeOffset - 1). Boxes are
rounded outward, so a decoded box always contains the exact one.
How a tree stores its nodes (docs/internals/design/compressed-nodes.md). Every tree and scene is one or the other, and the walk is compiled for one (
traceModuleWgsl({ nodeFormat })):'f32': 64-byte nodes withf32child boxes, GPU_LAYOUT_NODE_WORD. The format of a single mesh's tree from every builder unless asked otherwise (refits run on it), and of data that names no format.'quantized'(the default for scenes and walks, DEFAULT_NODE_FORMAT): 32-byte nodes, GPU_LAYOUT_QUANTIZED_NODE_WORD: each child box as 16-bit planes on a grid (the frame) that covers the mesh, and each child as one stack reference. The buffer starts with the frame slot (32 bytes, GPU_LAYOUT_NODE_FRAME_WORD), then the nodes: nodeiis sloti + 1, sonodesholdsnodeCount + 1slots. A scene keeps the frame slot right before each mesh's root (rootNodeOffset - 1). Boxes are rounded outward, so a decoded box always contains the exact one.