Blacksite/third_party/bevy_solari/BLACKSITE_PATCH.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.5 KiB

Blacksite Solari Patch Boundary

Base: bevy_solari 0.19.0.

Blacksite-owned changes are deliberately limited to the scene module and dependency manifest:

  • extract either MeshMaterial3d<StandardMaterial> or MeshMaterial3d<SurfaceMaterial>;
  • pack the Surface ABI v1 uniform lanes, UV transforms, and eight texture bindings into Solari's scene material buffer;
  • rebuild the embedded scene shader library from the active, validated SurfaceEvaluatorRegistry;
  • namespace evaluator/helper functions by stable shader ID and use the same evaluator for ray-hit shading and cutout candidate acceptance;
  • build shared mesh BLAS geometry as non-opaque so per-instance cutout materials can reject hits;
  • retain standard Bevy materials and reject blended material modes from the ray scene.

The game_hot bridge owns eligibility and diagnostics. Until an instance-owned post-morph/post-skin vertex buffer can feed a dynamic BLAS, it removes RaytracingMesh3d from skinned or morphed entities and reports them through deformed_meshes_excluded. Rigid animated descendants remain supported because their geometry is static and their current/previous transforms are already extracted.

When rebasing, compare upstream changes only in src/scene/ first. Preserve the evaluator-registry extraction, GPU/WGSL material layouts, non-opaque BLAS flag, and candidate traversal as one atomic unit; a layout mismatch can pass Rust compilation but corrupt GPU reads. Validate the generated WGSL with Naga and run cargo test -p game_hot --lib after every rebase.