Cast tree shadows and bake cavity ambient occlusion #93

Merged
sermuns merged 1 commit from tree-shadows into main 2026-10-20 09:29:37 +00:00
Owner

Two cheap lighting steps: static casters for the forest, and baked cavity AO.

  • Trees are now instanced casters in the one static campus shadow map, and the fitted shadow box includes the forest. This adds no per-frame work: the map is still built once.
  • Scene vertices carry a baked AO value (new vertex attribute at location 7). An analytic floor/ceiling term darkens interior walls and circulation, where the geometry already has a vertex at the junction. Ambient light is multiplied by it; direct sun still comes from the shadow map.
  • Exterior facades are excluded from the cavity term because they are one full-height quad, so darkening their corners would smear a gradient across the wall. Slabs and ground have no dense vertices for a contact term. The raycast bake remains the follow-up for the second half of #82.

Closes #80. Part of #82.

Checks

  • just check (fmt, clippy, workspace tests, deny)
  • cargo test -p liuverse-render --lib pipelines_build_without_binding_mismatches
Two cheap lighting steps: static casters for the forest, and baked cavity AO. - Trees are now instanced casters in the one static campus shadow map, and the fitted shadow box includes the forest. This adds no per-frame work: the map is still built once. - Scene vertices carry a baked AO value (new vertex attribute at location 7). An analytic floor/ceiling term darkens interior walls and circulation, where the geometry already has a vertex at the junction. Ambient light is multiplied by it; direct sun still comes from the shadow map. - Exterior facades are excluded from the cavity term because they are one full-height quad, so darkening their corners would smear a gradient across the wall. Slabs and ground have no dense vertices for a contact term. The raycast bake remains the follow-up for the second half of #82. Closes #80. Part of #82. ## Checks - `just check` (fmt, clippy, workspace tests, deny) - `cargo test -p liuverse-render --lib pipelines_build_without_binding_mismatches`
Trees join the static shadow map as instanced casters, and the fitted box includes the forest. Scene vertices carry a baked AO value; an analytic floor/ceiling term darkens interior walls and circulation. Part of #82 (the raycast bake remains).

Closes #80.
sermuns force-pushed tree-shadows from 35c47defd1 to cf09ac669b 2026-10-20 09:29:29 +00:00 Compare
Sign in to join this conversation.
No description provided.