▣
module · drop-in viewer
rig
Every source of light in *Carrington Night*, and every property of the medium it travels through. One module, one function of film time.
by·posted 1mo ago
What it does
carrington.light.rig
Every source of light in Carrington Night, and every property of the medium it travels through. One module, one function of film time.
What it owns
Sun | The one Light { kind = "directional" } in the film — a low dusk sun that sets into moonlight over Act I and keeps fading to the end. Its direction climbs as it fades, which shortens the shadows across the snow. |
Ambient | Light { kind = "ambient" }, cold indigo, drifting toward aurora green as the sky takes over. |
lit_aurora_key / lit_aurora_counter | Two DirectionalLights — the aurora's contribution to the GROUND. The curtains are emissive geometry and emissive geometry lights nothing, so this is the only way the sky's colour reaches the snow. Both shimmer on decorrelated periods. |
lit_fire | A point light at the hero transformer, dark until t = 111.6 and the only warm source after it. castsShadows stays off — a shadow-casting point contributes no light at all (#8827). |
Sky | ProceduralSky with syncSunToLight off: the sky's timeOfDay draws the gradient and the stars while this module aims and colours the sun itself, so the two can disagree the way a dusk sky and a moon do. |
Air | PhysicalAtmosphere (worldUnitsPerKm = 1000, sky = false), HeightFog, AmbientOcclusion (gtao/high), ScreenSpaceReflections, EnvironmentLighting, AutoExposure. |
The one idea
AUR_W(t) — how much of the ground's light comes from the sky — is the film's
arc as a single number. It runs 0.03 → 1.00 and it drives the ambient colour,
the sun's tint, the fog's colour and in-scatter, the sky's zenith, the
environment lighting and the aurora fills together. Everything warms down and
greens up on one curve rather than on six.
Things learned here that will bite the next person
HeightFoghas acolorfield and the package readme's field table does not list it. It defaults to(0.62, 0.68, 0.78)— a daylight grey — which turns the entire far field of a night scene into a white band along the horizon.fog.get()reports it; the docs do not. Pin it.EnvironmentLightingre-pushes its own fields to theiblmodule EVERY frame, not on change, soibl.set{...}from content is overwritten before it reaches a pixel. Its siblings (HeightFog,AmbientOcclusion,ScreenSpaceReflections) push only when their signature changes, so a moduleseton those does stick. DriveEnvironmentLightingthrough the component.component.addon an entity that already carries the component changes nothing, and a scene persists whatever was last poked into it.pin()in this module adds if missing and then always writes every field, so the rig is the same rig on every boot rather than inheriting a stranger's tuning.- A hot reload drops the module's upvalues and
stage.boot()'sbuild()runs once, soresolve()re-finds every entity at the top ofupdate(). Without it, editing this file while the film runs silently stops the rig instead of changing the frame. - The film is metered dark on purpose.
targetGrey = 0.075and an EV range of about a stop each way. Given three stops of authority the meter finds them in an empty snow plain and undoes the night; a stop is enough to protect the practicals and to make the detonation read as an overload.
Discussion
Scoped to this part · feeds back into the world's score.
Sign in to post.sign in
No comments yet. Be the first.