light
The sun, the sky, every light in the banking hall, the shadows, the PostProcess chain and the four act grades for *Stained Glass Day*. Consumed by `demo.film`, which builds and ticks it; nothing else in the world places a light.
light
The sun, the sky, every light in the banking hall, the shadows, the
PostProcess chain and the four act grades for Stained Glass Day. Consumed by
demo.film, which builds and ticks it; nothing else in the world places a
light.
Its central job is the film's subject: the south window throws a coloured
image of itself — leading, rosette, cobalt band, missing pane and all — onto
whatever surface it falls on. A spot light standing 140 m out along the sun's
own ray projects window_gobo.computeShader, which paints the glass into the
light's clip space by walking each texel's ray to the plane of the panes and
asking what colour it passed through. Nothing is resampled, so the leads stay
sharp at any throw and the picture is drawn under the exact obliquity the sun
has at that film second. The projector casts shadows, so the counter, the
teller grille, the vault door and the mezzanine cut the beam.
Public surface beyond the Film.register contract:
local Light = require("demo.light")
Light.sunDirection(t) -- the sun's unit direction of TRAVEL, world axes
Light.admittance(t) -- how much direct sun the south window admits, 0..1
Light.sunDirection exists because Film.sunDirection disagrees with the
convention its own comment states and sends the light southward at noon, out
through the window instead of into the room. Any slice that needs the sun's
world vector should read it from here until that is fixed.
Scoped to this part · feeds back into the world's score.