Bake ambient occlusion into the geometry #82
Labels
No labels
animation
audio
blocked
bug report
controversial
documentation
easy
feature request
hard
medium
multiplayer
physics
ui
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
elsie/liuverse#82
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
A
Soupis positions, per-face normals and UVs. There is no color channel,and
G.ambientadds the same value to every fragment, so every triangle of awall, slab or shell shades identically to its neighbours. Interiors, doorways and
the joints between a slab and a facade read as cardboard.
Two phases, in order:
junctions and in inward corners, and write it to a new vertex color attribute
that multiplies
lightin the shared fragment. This is a vertex format changeplus one term and already removes most of the flatness.
result in the same channel. The bake CLI is the right place because it can
afford the time and the result is deterministic.
Vertex color also gives the geometry a place for per-vertex variation later
(weathering, room tint, snow), so it is not a one-purpose attribute.
Related: #7 owns the lighting revamp this belongs to; #79 gives the ambient it
modulates, and #81 is the outdoor variant of the same problem.
Phase 1 landed. Phase 2 has not.
The analytic cavity term is in:
apply_cavity_aodarkens the vertices near the floor and slab junctions at build time and writes it into the soup, and the shared lit fragment scales the ambient by it. The same per-vertex channel also carries the baked room lamp spill, which is what the attribute was wanted for anyway.What is missing is phase 2: a real bake, a raycast against the soup or a coarse occupancy grid, run in the bake CLI, which is where the time to afford it is.
Status check: unchanged. Phase 1 (
apply_cavity_aoplus the ground-contact darkening, multiplied into ambient throughsoup.ao) is the shipped half; phase 2 — a raycast against the soup or a coarse occupancy grid in the bake CLI — is still absent fromliuverse-fetch-map.