Blacksite/.cursor/plans/renderer_material_component_foundation_2026-07-11.plan.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

2.5 KiB

Renderer, material, and component foundation

Goal

Separate static and skinned renderer ownership, restore deterministic skinned edit poses, add shared material/material-instance slots, and make authoring components registry-driven and composable.

Component foundation milestone

  • Give authoring components immutable IDs distinct from Rust type paths.
  • Split persisted active state from inspector ordering with legacy-state migration.
  • Route presence, persistence, add/remove/reset/copy/paste, and component history through Bevy reflection and atomic transactions.
  • Treat ActorKind as a derived compatibility/display hint; validate component data and explicit requirements/conflicts.
  • Provide one statically linked extension registration helper and reflection round-trip fixture.
  • Verify registry integrity, transaction undo/redo, scene save inclusion, composition, and legacy enable-state preservation.
  • Keep StaticMeshRenderer and SkinnedMeshRenderer as separate authoring and hydration paths.
  • Give both renderer types stable imported-source/explicit Material slots and preserve orphaned assignments by ID across source changes.
  • Add versioned Material and direct-base Material Instance assets, sparse editor overrides, shared handle live refresh, and runtime-only property blocks.
  • Capture and restore imported Transform/MorphWeights baselines; sample only the explicitly chosen default edit clip and never reload a rig for a material-only change.
  • Compose one validated Surface evaluator into raster and Solari, including normal/emissive/unlit fields and exact cutout candidate acceptance. Safely omit skinned/morph geometry from Solari until instance-owned deformed vertices and dynamic BLAS updates exist.
  • Upgrade scenes/materials explicitly to schema v4 with dry-run, staged writes, backup, rollback, stable slot normalization, and active-state separation.

Acceptance

  • Shared, scene, game, game-hot, editor, Surface, and maintained Solari-fork tests pass.
  • cargo --locked validate-levels reports zero blocking findings.
  • A second project-upgrade dry run reports no changes after apply.
  • Editor evidence shows the stable component cards, static/skinned material slots, Material Instance workflow, deterministic animated actor pose, and Surface/Solari diagnostics.
  • Gitea implementation issue and related roadmap issues link the documentation and screenshot evidence without claiming unsupported dynamic deformed BLAS behavior.