Progressive GSplats loader for multi-LOD datasets.
Wraps N GSplatsSpatialIndexLoader instances (one per LOD subgroup) using the
Composite pattern. Implements the same GSplatsDataLoader interface so the
scene loader's update loop works unchanged.
The per-view lifecycle (streaming policy, SliceCache departure/adoption/
restore, B6 index warm, pinned concurrent rungs, signal-linked lookahead,
B5 neighbour read-ahead, memoized concat) is the shared
AdditiveLadderCore (../loaders/progressive/additive-ladder-core). GSplats
adds its concatenation and a deeper lookahead: up to three unloaded LODs
when the L0 cache has headroom (one rung otherwise, and none during
playback).
LODs are additive: LOD 0 contains the coarsest (highest-amplitude) splats,
and each subsequent LOD adds residual detail. The loader concatenates all
loaded LODs into a single LoadedGSplatsData.
Progressive GSplats loader for multi-LOD datasets.
Wraps N GSplatsSpatialIndexLoader instances (one per LOD subgroup) using the Composite pattern. Implements the same GSplatsDataLoader interface so the scene loader's update loop works unchanged.
The per-view lifecycle (streaming policy, SliceCache departure/adoption/ restore, B6 index warm, pinned concurrent rungs, signal-linked lookahead, B5 neighbour read-ahead, memoized concat) is the shared
AdditiveLadderCore(../loaders/progressive/additive-ladder-core). GSplats adds its concatenation and a deeper lookahead: up to three unloaded LODs when the L0 cache has headroom (one rung otherwise, and none during playback).LODs are additive: LOD 0 contains the coarsest (highest-amplitude) splats, and each subsequent LOD adds residual detail. The loader concatenates all loaded LODs into a single LoadedGSplatsData.