ReadonlyboundsObject-space box around the mesh: [minX, minY, minZ, maxX, maxY, maxZ].
ReadonlyleafReadonlymaxLevels of nodes on the longest path.
ReadonlynodeOptional ReadonlynodeHow nodes stores them; omitted means 'f32'.
ReadonlynodesnodeCount nodes, 64 bytes each; node 0 is the root. With
nodeFormat: 'quantized', the frame slot and then nodeCount 32-byte
nodes (gpuLayoutNodeBufferBytes); node i is slot i + 1.
ReadonlyparentsParent of each node (0xffffffff for the root), for a bottom-up refit.
ReadonlyslotRecords: each slot's flags word (7), or null when every one is 0. Null for indexed trees.
ReadonlyslotRecords: each slot's padding word (11), or null when every one is 0. Null for indexed trees.
ReadonlyslotEach triangle slot's original triangle (records' word 3; an indexed record's id bits).
ReadonlytriangleOptional ReadonlytriangleHow triangles stores them; omitted means 'records'.
What a CPU pose (refitLayoutToPose) needs of a mesh tree, without its triangles: the nodes and parents, and per triangle slot the original triangle and (records) the flags and padding words, where any is non-zero. The corners a pose rewrites anyway, so the 48-byte records go: 4 bytes per triangle stay in place of 48 (16 for indexed trees). The P9 lever "freeing CPU copies" for deforming meshes (
SceneTrees'deformingLayouts: 'compact'). Made by compactPoseLayout.