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.
Loading strategy:
On each updateView() call, loads LODs sequentially starting from LOD 0
Stops at the first LOD whose load takes longer than the cache-hit threshold
After first paint, initializes the remaining spatial indexes concurrently
Prefetches up to three unloaded LODs when the L0 cache has headroom
Keeps playback/shadow prefetch at one rung to avoid abandoned-slice waste
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.
Loading strategy:
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.