freshcut: ground-truth occlusion, an antialiased image, and two defects the lit frame never showed
GTAO joins the shared stack, and with it screen-space GI, edge antialiasing and
sharpening. All four sit in base(), so any part opting into the stack gets them
rather than each part deciding again. The mansion additionally takes screen-space
reflections for the polished chequer floor and the mirror; roughnessCutoff keeps
the trace to surfaces smooth enough to show anything, so plaster and fabric never
pay for it.
Screen-space GI is the term image-based lighting could not supply indoors. It is
derived from what the frame actually drew, so a wall occludes it, where the IBL
diffuse landed sky irradiance on every interior surface at full strength.
Antialiasing comes before sharpening in the raise order: sharpening an aliased
edge sharpens the staircase. Twelve systems now, and the frame cost did not move.
Two defects found by asking the engine rather than by looking at a picture, both
invisible in every lit capture taken of this hall:
The stair carpet z-fought on every step. A tread top face sits at y + dy*0.5, and
the red runner was laid at +0.02 with a half-thickness of 0.02, putting its
underside on exactly that plane; the gold band a further 0.01 up overlapped the
red almost entirely. Two coplanar pairs per step, sixteen steps. The red now
clears the tread by ten millimetres and the gold is embedded in the red rather
than stacked on it, so no two faces share a plane.
The volume composite rebound a dead effect every frame. ensure() was guarded by a
module-level flag, spawn() called it and frame() never did — but the module
outlives a part and the effect does not, so after a mode flip the flag still
claimed a registration that had gone and every later bind failed with an invalid
effect. ensure() now verifies against the live post chain instead of trusting the
flag, and frame() re-establishes before binding. The texture and shader creates
are guarded so a re-ensure cannot abort on one already being present; the effect
re-add is the part that has to land.
Known and not addressed: the balustrade rails and a sideboard still z-fight. The
balusters top out clear of the rail underside, so it is not the coplanar cause
the treads had.