Expand description
Sliding-window streaming policy for an infinite voxel world.
gfx::streaming::StreamPlanner streams a fixed pool of items known at
init (textures, build-time meshes). An infinite chunk world is different:
the item set is unbounded and only a bounded window around the camera is
ever resident. This module is that policy – given the camera’s chunk and a
view radius it decides which chunks to load (nearest first, budget-limited)
and which to evict (those that have fallen well outside the window).
Two concentric bands: chunks within near_radius stream at full voxel
detail; chunks beyond it but within far_radius stream as cheap coarse
“impostors” (a low-poly surface mesh). As the camera moves a chunk crosses
the near/far boundary and is re-detailed – evicted and reloaded at the new
detail. A small detail hysteresis keeps a chunk pacing across the boundary
from thrashing. When far_radius == near_radius (the default) the far band
is empty, so the window behaves exactly as the original single-detail one.
The std-side driver (background generation thread, GPU upload) lives in
concinnity-engine’s app::chunk_stream.
Structs§
- Chunk
Plan - The load / evict decisions produced by one
ChunkWindow::plancall. - Chunk
Window - Decides which chunks stream in and out of the camera-centred view window, and at which detail.
Enums§
- Chunk
Detail - Which representation a chunk is streamed at.