BS-JD-218 - Built-in Default Grid fallback material #66

Closed
opened 2026-07-13 17:14:06 -04:00 by Rbanh · 1 comment
Owner

Summary

Add one immutable engine-owned WorldGrid-style fallback plus an optional project Material/Instance override so authoring geometry never disappears when no valid material resolves.

Contract

  • Material precedence is: runtime MaterialPropertyBlock -> scene/prefab assignment -> model-asset default -> imported source -> project default -> built-in DefaultGrid.
  • Missing layers inherit downward. A configured but broken scene/model reference renders the fallback with diagnostics instead of silently revealing another authored layer.
  • Built-in DefaultGrid is filesystem-independent, shared, read-only, and never a Material Instance or property-block promotion base.
  • Project Settings > Content may select a project Material/Instance as the project fallback; Clear restores DefaultGrid.
  • Coverage includes static/skinned meshes, primitives without an active material, unassigned brush faces, and model/mesh thumbnails. Terrain retains its specialized fallback.

Implementation

  • Embed one UV-independent world-space tri-planar checker Surface evaluator with a reserved built-in shader ID and forward/Solari parity.
  • Use neutral gray 0.5 m cells with a 4 m major cadence, rough lit shading, subtle visibility-preserving emissive contribution, and double-sided rendering.
  • Cache shared Surface and emergency StandardMaterial handles; remove per-use magenta error-material allocation.
  • Add material-resolution origin/health diagnostics and a read-only Built-ins row.
  • Store the optional project fallback in registry v2 content defaults and include it in the packaged runtime catalog.

Acceptance criteria

  • Unassigned or broken supported authoring geometry remains visible.
  • UV-less static and skinned meshes display the grid.
  • Forward and Solari evaluate the same fallback surface.
  • A valid project fallback replaces DefaultGrid; deleting/breaking it safely restores DefaultGrid with diagnostics.
  • Repeated hydration does not grow fallback material assets.
  • Built-in fallback cannot be edited, instanced, or promoted from a property block.
  • Focused rendering, lifecycle, thumbnail, validation, and native acceptance evidence passes.

Dependencies

Child of #59. The storage/material contract in #60 lands first; project-default stable-ID resolution coordinates with #62. Property-block behavior coordinates with #53.

## Summary Add one immutable engine-owned WorldGrid-style fallback plus an optional project Material/Instance override so authoring geometry never disappears when no valid material resolves. ## Contract - Material precedence is: runtime MaterialPropertyBlock -> scene/prefab assignment -> model-asset default -> imported source -> project default -> built-in DefaultGrid. - Missing layers inherit downward. A configured but broken scene/model reference renders the fallback with diagnostics instead of silently revealing another authored layer. - Built-in DefaultGrid is filesystem-independent, shared, read-only, and never a Material Instance or property-block promotion base. - Project Settings > Content may select a project Material/Instance as the project fallback; Clear restores DefaultGrid. - Coverage includes static/skinned meshes, primitives without an active material, unassigned brush faces, and model/mesh thumbnails. Terrain retains its specialized fallback. ## Implementation - Embed one UV-independent world-space tri-planar checker Surface evaluator with a reserved built-in shader ID and forward/Solari parity. - Use neutral gray 0.5 m cells with a 4 m major cadence, rough lit shading, subtle visibility-preserving emissive contribution, and double-sided rendering. - Cache shared Surface and emergency StandardMaterial handles; remove per-use magenta error-material allocation. - Add material-resolution origin/health diagnostics and a read-only Built-ins row. - Store the optional project fallback in registry v2 content defaults and include it in the packaged runtime catalog. ## Acceptance criteria - [ ] Unassigned or broken supported authoring geometry remains visible. - [ ] UV-less static and skinned meshes display the grid. - [ ] Forward and Solari evaluate the same fallback surface. - [ ] A valid project fallback replaces DefaultGrid; deleting/breaking it safely restores DefaultGrid with diagnostics. - [ ] Repeated hydration does not grow fallback material assets. - [ ] Built-in fallback cannot be edited, instanced, or promoted from a property block. - [ ] Focused rendering, lifecycle, thumbnail, validation, and native acceptance evidence passes. ## Dependencies Child of #59. The storage/material contract in #60 lands first; project-default stable-ID resolution coordinates with #62. Property-block behavior coordinates with #53.
Rbanh added this to the M2 - Content workspace and asset pipeline milestone 2026-07-13 17:14:06 -04:00
Author
Owner

Closed against M2 candidate cf6eaba

The immutable engine-owned DefaultGrid fallback is implemented with shared cached handles, project-default selection, broken-reference diagnostics, forward/Solari support, primitive/static/skinned/brush/thumbnail coverage, and a neutral StandardMaterial emergency path. Terrain keeps its specialized fallback.

Consolidated code, deterministic, native, and package evidence: M2 evaluation record. Candidate gates passed in full and the commit is published on codex/m2-content-workspace.

## Closed against M2 candidate `cf6eaba` The immutable engine-owned DefaultGrid fallback is implemented with shared cached handles, project-default selection, broken-reference diagnostics, forward/Solari support, primitive/static/skinned/brush/thumbnail coverage, and a neutral StandardMaterial emergency path. Terrain keeps its specialized fallback. Consolidated code, deterministic, native, and package evidence: [M2 evaluation record](https://git.spacetrainclubhouse.com/Falling-Metal-Interactive/Blacksite/src/commit/cf6eaba53473d2825d0109f5a18f44794af5bd48/docs/editor/evaluations/content-workspace-m2/README.md). Candidate gates passed in full and the commit is published on `codex/m2-content-workspace`.
Rbanh closed this issue 2026-07-17 23:47:35 -04:00
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#66
No description provided.