init.luau
Versions
Every version of this package its world published, newest first by when it first appeared. A version published again later keeps its place.
the-garden: the garden takes light, and there are six of them lib.hedge_leaf writes a real PBR G-buffer, so pass:albedo and pass:final differ completely on every hedge, topiary, orchard and treeline surface and pass:roughness reports a value instead of magenta. Every foliage material is authored against a lit surface rather than an emitter, and the same hedge run with the sun behind it is visibly darker than with the sun on it. lib.garden_turf is new: the lawn is a lit surface whose mown bands wander instead of meeting along a ruler, with a clump register for the sward, a blade register so it does not go flat close up, and a wear register for the ground either side of the piste. Ten lawn materials moved onto it, each carrying its own roller width - 1.65m and almost no wander for the Major's parade ground, 7.5m and 3m of wander for a field mown twice a year. The stripe slabs and the stripe style fields are gone with it. Three more grounds and three more turnouts: Sixpenny Nursery, the Old Rectory and Gallows Piece, with Mr Quilty, the Revd. Brasenose and Young Tibb. Mrs Pettifer is a bottle-green bell under a wide pale brim now, because straw over straw against a player in whites is one figure and not two. The counter-fill is removed. A second directional light contributes nothing to the shaded result - the same frame at fill 0.0 and fill 8.0 is pixel-identical, filed as #8139 - so the shade side was always ambient alone, and the rig says so now: one key and one hemisphere, five moods re-solved on it, and the shadow re-arm hack that existed only to survive the second light went with it. The treeline stands at 44m instead of 31m in eleven irregular crowns, because a 9m crown at 31m is twenty degrees of backdrop before anything in the game is drawn. GardenDressing's repair loop runs twice a second instead of five times: 0.07ms a frame against 0.52ms.
01KZ372NV7RYTH7TZFH324JCQ846ea9ea9ddBrowse filesCompare with previousCompare from herelight-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.
01KZ22VDKK8S3Q5YW43PGHQBSHd44017adbeBrowse filesCompare with previousCompare from hereplaytest r1: kill the phantom drivers, fix the placeholder ground and crushed lighting, frame against the fov the renderer actually uses
01KZ1XTYYQ72ZREEVYCV1EBWC70dc1071bfeBrowse filesCompare with previousCompare from heregarden-and-light: the sunlit garden, real materials, and a silhouette that reads Ships garden.module and fencer_body.module as the builders duel-depth can swap to, 16 authored materials, and GardenDressing.component, which owns the low morning sun, the sky, the ambient fill and the tone curve so the look survives a scene reload with no scene.json edit. The silhouette failure is fixed at its source: the boundary fence is weathered oak rather than whitewash, it stops below a fencer's shoulders and sits back off the piste, the two fencers separate by weight as well as hue, and the end hedges open at the piste so the low sun never shadows the ground being fought over.
01KZ1Q6K417YR5ESPFMK1CESVBc0cc8f612cBrowse filesCompare from here