Splat positions (N splats * ndim dimensions), flattened row-major
Splat amplitudes (N,)
Packed Cholesky factors (N splats * k elements), flattened row-major. k = ndim * (ndim + 1) / 2
Packing order: [L00, L10, L11, L20, L21, L22, ...] Forms lower-triangular L where covariance Σ = L @ Lᵀ
Splat colors (N * colorComponents) RGB or RGBA, null if not present Supports Float32Array (HDR), Uint8Array (SDR), or Uint16Array
OptionalcolorComponents per color item: 3 (RGB) or 4 (RGBA). Absent means 3. The alpha channel is per-splat opacity (consumed by every blending mode; mapped into optical depth in volumetric).
OptionallabelCompact 1-based categorical index per loaded splat.
OptionallabelCompact-index vocabulary; entry N is addressed by labelIndices value N+1.
Number of splats loaded
Dimensionality for interpreting centers and cholesky arrays
OptionalrangesThe visible ON-DISK ranges this payload was concatenated from, ascending
and disjoint — the first half of the slot → on-disk element index map
picking needs (data/loaders/element-ids.ts). Published by
GSplatsSpatialIndexLoader ONLY when the node declares a per-element
string/image CSR (has_labels / has_image_labels / has_keys): nothing
else reads the map, and the field otherwise rides along in every SliceCache
snapshot for free.
Absent ⇒ no map is composed and picking falls back to the raw slot.
Raw gsplats data loaded from zarr before nD projection.
At this stage: