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

25 lines
1.5 KiB
Markdown

# 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.