BS-JD-301 - Terrain authoring schema and chunked mesh hydration #22

Closed
opened 2026-06-06 01:48:05 -04:00 by Rbanh · 1 comment
Owner

Summary

Add a height-grid-backed TerrainDesc authoring component with chunked generated meshes.

Why

Large-world editing needs native terrain data that saves as stable authoring state and hydrates into render/collider output.

Implementation notes

  • Define versioned TerrainDesc with bounded inline height grid, chunk size, world scale, base Material/Instance reference, collision, and generation settings.
  • Hydrate deterministic chunked meshes and optional trimesh colliders.
  • Keep generated chunks out of saved scenes.
  • Add first-class terrain actor identity, registry metadata, inspector basics, reflected history, validation, and a committed showcase.
  • Material layer weights and exact terrain Surface/Solari parity remain owned by #24.

Acceptance criteria

  • Terrain authoring data serializes and migrates safely.
  • Hydration produces visible chunked mesh output.
  • Generated chunks/colliders do not leak into saves.
  • Terrain can be selected and inspected like other authoring actors.

Tests/docs

Serialization, topology, hydration/cleanup, registry, workspace, project-validation, and live native-Wayland evidence are linked in the closing comment.

## Summary Add a height-grid-backed `TerrainDesc` authoring component with chunked generated meshes. ## Why Large-world editing needs native terrain data that saves as stable authoring state and hydrates into render/collider output. ## Implementation notes - Define versioned `TerrainDesc` with bounded inline height grid, chunk size, world scale, base Material/Instance reference, collision, and generation settings. - Hydrate deterministic chunked meshes and optional trimesh colliders. - Keep generated chunks out of saved scenes. - Add first-class terrain actor identity, registry metadata, inspector basics, reflected history, validation, and a committed showcase. - Material layer weights and exact terrain Surface/Solari parity remain owned by #24. ## Acceptance criteria - [x] Terrain authoring data serializes and migrates safely. - [x] Hydration produces visible chunked mesh output. - [x] Generated chunks/colliders do not leak into saves. - [x] Terrain can be selected and inspected like other authoring actors. ## Tests/docs Serialization, topology, hydration/cleanup, registry, workspace, project-validation, and live native-Wayland evidence are linked in the closing comment.
Rbanh added this to the M3 - Terrain and physics placement milestone 2026-06-06 01:48:05 -04:00
Rbanh added the
roadmap:jackdaw
type:feature
priority:P1
area:terrain
labels 2026-06-06 01:48:05 -04:00
Rbanh closed this issue 2026-07-12 18:44:34 -04:00
Author
Owner

Acceptance complete

Implementation and evidence: ed21bcc

Delivered:

  • versioned, bounded, finite inline TerrainDesc height grid with scale, chunking, shared base Material/Instance reference, collision, and shadow settings;
  • deterministic chunk meshes with normals, UVs, tangents, U32 indices, optional Avian trimesh colliders, owner/chunk markers, and cleanup;
  • first-class Terrain actor kind, hierarchy/viewport identity, registry-driven Add Component, inspector validation, guarded flat resize, and reflected history transactions;
  • committed terrain_authoring_showcase.scn.ron fixture with stable registry identity;
  • ADR 0039, terrain workflow guide, root checklist, and evaluation record.

Terrain foundation live acceptance

Verification:

  • 4 focused descriptor/topology/hydration/cleanup tests;
  • editor registry reflection contract;
  • cargo fmt --all -- --check;
  • cargo check --workspace --all-targets;
  • cargo clippy --workspace --all-targets -- -D warnings;
  • cargo test --workspace;
  • cargo validate-levels --project .: 60 dependencies, 5 existing non-blocking findings, 0 blockers;
  • cargo bake-navigation --project . --check: 1 current artifact;
  • git diff --check.

Live native-Wayland acceptance verified the asymmetric four-chunk terrain fixture and shared Material Instance in Forward rendering. Foundation terrain is explicitly excluded from Solari rather than rendered as a black/mismatched ray proxy; exact layer/Surface parity remains tracked by #24. Packaged acceptance remains deferred by project-owner direction.

## Acceptance complete Implementation and evidence: `ed21bcc` Delivered: - versioned, bounded, finite inline `TerrainDesc` height grid with scale, chunking, shared base Material/Instance reference, collision, and shadow settings; - deterministic chunk meshes with normals, UVs, tangents, U32 indices, optional Avian trimesh colliders, owner/chunk markers, and cleanup; - first-class Terrain actor kind, hierarchy/viewport identity, registry-driven Add Component, inspector validation, guarded flat resize, and reflected history transactions; - committed `terrain_authoring_showcase.scn.ron` fixture with stable registry identity; - ADR 0039, terrain workflow guide, root checklist, and evaluation record. ![Terrain foundation live acceptance](https://git.spacetrainclubhouse.com/attachments/d466c3e3-2721-4667-b397-e204ce3e78fc) Verification: - 4 focused descriptor/topology/hydration/cleanup tests; - editor registry reflection contract; - `cargo fmt --all -- --check`; - `cargo check --workspace --all-targets`; - `cargo clippy --workspace --all-targets -- -D warnings`; - `cargo test --workspace`; - `cargo validate-levels --project .`: 60 dependencies, 5 existing non-blocking findings, 0 blockers; - `cargo bake-navigation --project . --check`: 1 current artifact; - `git diff --check`. Live native-Wayland acceptance verified the asymmetric four-chunk terrain fixture and shared Material Instance in Forward rendering. Foundation terrain is explicitly excluded from Solari rather than rendered as a black/mismatched ray proxy; exact layer/Surface parity remains tracked by #24. Packaged acceptance remains deferred by project-owner direction.
Sign in to join this conversation.
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Falling-Metal-Interactive/Blacksite#22
No description provided.