Brush geometry kernel - first-class concave brushes and robust CSG #38

Open
opened 2026-06-06 13:42:16 -04:00 by Rbanh · 0 comments
Owner

Summary

Refactor brush geometry around an authored-vs-compiled architecture so Blacksite can support first-class concave authored brushes and robust CSG beyond the Jackdaw-inspired MVP.

Why

M1 brush work intentionally keeps the persisted brush contract convex and uses MVP/bounds-oriented operations for blockout speed. That is enough for milestone QA, but it is not the final architecture for production-grade CSG, concave face authoring, material-preserving cuts, collision generation, or stable face/edge editing.

Proposed architecture

  • Add an authored brush representation that can store simple concave planar faces while rejecting self-intersections, non-planar faces, zero-area faces, and ambiguous duplicate vertices.
  • Add a compiled brush representation used by rendering, picking, collision, hydration, save validation, and diagnostics.
  • Compile authored concave faces into triangulated or convex-decomposed output with stable mapping back to authored face IDs.
  • Replace MVP bounds-based CSG with geometry-kernel operations that produce validated compiled output and authoring data.
  • Preserve material refs, texture refs, UV transforms, smoothing groups, and stable face IDs where topology permits.
  • Keep generated runtime mesh/collider data out of scene save files.

Acceptance criteria

  • Authored simple concave brush faces can be saved, loaded, selected, edited, and hydrated.
  • Self-intersecting or non-planar faces are blocked with actionable diagnostics.
  • Rendering and collision consume compiled brush geometry, not ad hoc generated meshes.
  • Subtract/intersect/merge operate on arbitrary supported brush geometry, not only convex/bounds MVP cases.
  • CSG outputs preserve material/UV data on surviving or split faces where matchable.
  • Brush picking maps compiled triangles back to authored brush faces/elements.
  • Golden fixture tests cover concave face triangulation, convex decomposition, cube subtract cube, concave subtract, non-overlap, degenerates, and material/UV preservation.

Relationship to M1

M1 should not wait on this. For the current milestone, concave draw input should be normalized into a composition of convex brush pieces, and self-intersecting input should remain blocked.

## Summary Refactor brush geometry around an authored-vs-compiled architecture so Blacksite can support first-class concave authored brushes and robust CSG beyond the Jackdaw-inspired MVP. ## Why M1 brush work intentionally keeps the persisted brush contract convex and uses MVP/bounds-oriented operations for blockout speed. That is enough for milestone QA, but it is not the final architecture for production-grade CSG, concave face authoring, material-preserving cuts, collision generation, or stable face/edge editing. ## Proposed architecture - Add an authored brush representation that can store simple concave planar faces while rejecting self-intersections, non-planar faces, zero-area faces, and ambiguous duplicate vertices. - Add a compiled brush representation used by rendering, picking, collision, hydration, save validation, and diagnostics. - Compile authored concave faces into triangulated or convex-decomposed output with stable mapping back to authored face IDs. - Replace MVP bounds-based CSG with geometry-kernel operations that produce validated compiled output and authoring data. - Preserve material refs, texture refs, UV transforms, smoothing groups, and stable face IDs where topology permits. - Keep generated runtime mesh/collider data out of scene save files. ## Acceptance criteria - [ ] Authored simple concave brush faces can be saved, loaded, selected, edited, and hydrated. - [ ] Self-intersecting or non-planar faces are blocked with actionable diagnostics. - [ ] Rendering and collision consume compiled brush geometry, not ad hoc generated meshes. - [ ] Subtract/intersect/merge operate on arbitrary supported brush geometry, not only convex/bounds MVP cases. - [ ] CSG outputs preserve material/UV data on surviving or split faces where matchable. - [ ] Brush picking maps compiled triangles back to authored brush faces/elements. - [ ] Golden fixture tests cover concave face triangulation, convex decomposition, cube subtract cube, concave subtract, non-overlap, degenerates, and material/UV preservation. ## Relationship to M1 M1 should not wait on this. For the current milestone, concave draw input should be normalized into a composition of convex brush pieces, and self-intersecting input should remain blocked.
Rbanh added this to the Post-Jackdaw - Brush geometry kernel and first-class CSG milestone 2026-06-06 13:42:16 -04:00
Rbanh added the
type:feature
area:brushes
labels 2026-06-06 13:42:16 -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#38
No description provided.