Shared concatenation helpers for the progressive (additive-LOD) loaders.
The points / lines / gsplats progressive loaders each concatenate a set of
per-LOD typed-array fields. The "allocate total * perItem, copy at a
running offset" loop and the "all-or-nothing optional field" gate were
duplicated across all three; they live here once, as does the shared colour
policy (concatColorsWhiteFilled: a rung without colours is filled
with white, the others keep theirs). Geometry-specific wrinkles
(segment-index offsetting, Lines' sharpness default) stay in the loaders.
The helpers are structurally generic over the concrete typed-array type
A (Float32Array, Uint8/16/32Array, Float16Array, …) so each loader keeps
its own narrow field types (e.g. ColorArray, ScalarArray) with the
source dtype preserved.
Shared concatenation helpers for the progressive (additive-LOD) loaders.
The points / lines / gsplats progressive loaders each concatenate a set of per-LOD typed-array fields. The "allocate
total * perItem, copy at a running offset" loop and the "all-or-nothing optional field" gate were duplicated across all three; they live here once, as does the shared colour policy (concatColorsWhiteFilled: a rung without colours is filled with white, the others keep theirs). Geometry-specific wrinkles (segment-index offsetting, Lines' sharpness default) stay in the loaders.The helpers are structurally generic over the concrete typed-array type
A(Float32Array, Uint8/16/32Array, Float16Array, …) so each loader keeps its own narrow field types (e.g.ColorArray,ScalarArray) with the source dtype preserved.