light-and-shot: the frame is spent on the fight, and both ends of the piste read alike
The shot is solved against the 60 deg frustum the renderer actually draws rather
than the one Camera.fov reports. lookHeight is the dial that decides the dead
lawn - the margin under the feet is exactly the frame not spent on the world
between the ground and the point the camera aims at - so aiming at the mask
instead of the chest takes the empty grass from 33.6 % to 15.8 % while the
fencer grows from 27.9 % to 39.3 %. Over 60 samples of live play the shot sat
at minDistance for every one of them.
The garden is lit by a mirrored pair. A single sun with a large component along
the piste lights one end of a side-on arena and backlights the other by
construction, so the game got harder to see as you lost. Key at azimuth A, fill
at 180 - A: reflecting an azimuth across the Z axis flips its X component and
keeps its Z one, so the pair cancels along the piste while both still come from
the camera's side of the hedge. End-to-end contrast falls from 2.86:1 to 1.72:1.
GardenDressing.MOODS ships five complete rigs - morning, noon, overcast,
gloaming, frost - and a public mood field chooses one. A mood sets key, fill,
ambient, sky, bloom, tone and haze by writing the live dials, so hand-tuning
afterwards still works. A name that is not a mood leaves the garden exactly as
it was and logs nothing. Every mood holds its exposure inside 1.22-1.34, because
the HUD is composited before post-process and is tonemapped with the scene.
One reflection probe over the piste gives the brass and the two masks the garden
to reflect instead of a sky they cannot see; without it the same mask is a flat
unlit dome.
Both components held their subjects with a full entity scan every frame, which
on a tripled arena had made PisteCamera the second most expensive script in the
world at 4.23 ms. Held by id now: PisteCamera 1.70 -> 0.21 ms, GardenDressing
1.08 -> 0.06 ms.
Adding a second directional light silently drops the scene's shadow map and
removing it does not restore it (#8089), so the fill is written only when a
value has moved and the shadow is re-armed across two frames when it has.
---
garden-and-surfaces: the lunge carries a panel, not a beam
At 3.10 m long and 0.30 thick the lunge's active pose read as a plank driven
through the frame rather than as a section of fence at full reach. Shorter,
deeper and a shade more square: still the longest reach of the four
commitments, still the flattest panel, but recognisably the same object the
fencer was holding a moment earlier.