Blacksite/docs/adr/0021-brush-authoring-schema.md
Rbanh 0798aa5d57 Build renderer and material component foundations
Add dedicated skinned rendering, pose restoration, shared Material and Material Instance slots, registry-driven components, Surface/Solari integration, transactional schema upgrades, navigation authoring, documentation, and evaluation evidence.
2026-07-12 00:24:06 -04:00

1.4 KiB

ADR 0021: Brush Authoring Schema

Status

Accepted

Context

Jackdaw roadmap work needs blockout geometry that is editable as authored data, survives scene saves, hydrates into runtime render/physics components, and can later support face/edge/vertex tools and CSG operators. Treating brushes as imported static meshes would hide the authoring intent and make later geometry edits depend on generated artifacts.

Decision

Add ActorKind::Brush and BrushDesc as persisted shared authoring data. A brush stores convex polygon faces with stable face IDs, plane data, material/texture references, UV parameters, smoothing group, and shadow flags. The MVP supports additive cube brushes and hydrates active brush components into generated mesh children; generated children are stripped from saved scenes.

Brush actors conflict with Primitive, StaticMeshRenderer, SkinnedMeshRenderer, LightDesc, and ModelRef in actor validation. Scene v1-to-v2 kind backfill infers ActorKind::Brush when an older level object contains BrushDesc.

Consequences

Brush geometry is now a first-class scene authoring type rather than a renderer slot variant. Future face editing, clipping, and CSG tools should mutate BrushDesc and rebuild the generated preview mesh through hydration.

The MVP intentionally does not implement viewport face/edge/vertex tools, non-convex validation UI, or subtractive CSG evaluation. Those remain roadmap work.