Skip to content

Terrain surfaces and detail selection

The ground pass reconstructs connected surfaces from received terrain columns. Floating objects retain voxel geometry. Detail selection uses projected size and altitude, so flying above the ground no longer retains a cylinder of full-detail blocks beneath the camera.

This is an incremental change to the region renderer. Coverage gaps and visible changes between resolutions are not fully solved. The flight report records the earlier ramp-based checkpoint and its limits.

Shape and boundaries

Ground tops remain horizontal. Differences in column height have vertical faces, including at resolution boundaries. Both averaging heights and connecting measured anchors with ramps changed voxel ridges into a soft blanket, so neither is used. Ground stays below known water. The exterior surface avoids drawing buried voxel boxes, but it preserves stepped silhouettes. Coarse steps and abrupt detail changes still need refinement.

Detailed neighbours contribute immutable occupancy data to boundary construction without becoming members of the far mesh. Boundary faces extend below the neighbouring exact column top. Previously they could stop a whole height difference above it, exposing a gap.

Near-to-far transitions retain the detailed mesh until the replacement region is published. The live-block and pruning paths previously had early removal paths that bypassed this handoff. Region revision checks reject obsolete worker results before publication.

Provider summaries

Terrain-diffusion summaries describe an exterior shell and omit buried volume. Treating that omission as ordinary voxel air classified parts of a hillside as floating objects, producing strips and underside plates.

The optional bit 32 in protocol 7's existing 92-byte summary record marks provider exterior shells. The server sets it only for synthesised records and lazily upgrades stored provider records using their existing origin metadata. Real voxel records remain unmarked. Older clients ignore the bit; unmarked replies from older servers retain the previous behaviour. Both distributed server-mod copies contain this change.

The client classifies occupied provider shell cells as ground without inventing filled occupancy below them. Prepared storage schema 2 retains the marker and rebuilds incompatible cached records. The provider fix requires the updated server mod; detail selection and handoff changes are client-side.

Geometry budget and capture

The full-detail radius is capped at approximately five pixels per node, using viewport focal length and three-dimensional distance to the nearest point of each block's bounds. The configured distance remains an upper limit. Larger output resolutions and narrower fields of view retain more detail. Inward hysteresis avoids repeated switches at the threshold.

Region capture visits known entries using ordered spatial rows instead of probing every position in a mostly empty cube. It still captures on the main thread; meshing and prepared-data loading run on workers.

Remaining limits

  • Coarse facets, stepped cliff strips and abrupt material/detail changes remain visible. Boundary faces close height gaps but do not make a seamless transition to the near voxel surface.
  • Unknown frontier terrain has no guaranteed surface. This pass does not establish continuous coverage all the way to the horizon.
  • Summaries still use the existing four-node records and coarser levels, rather than a dedicated high precision heightfield protocol.
  • Existing far-to-far handoff freeze timeouts remain. The live test is not proof that every asynchronous transition remains covered under load.
  • Main-thread publication and some capture work remain, and resident terrain memory is not globally bounded by the prepared cache limits.

Direct baked terrain

TDL providers with a revision identity can also serve compact 2D surface tiles. The client fills the coarse horizon before refining local shape, without expanding the bake into mapblock summaries. See the baked terrain contract for the protocol, cache identity, publication rules and current limits.