Point lights
- Synthesised lights for fire and lamp models that author none (benilla-formats
fire_light.rs: flame route from the particle emitter's over-life colour, name and
emissive-glass routes for lampposts/lanterns/candelabra; NoOmni braziers included —
they are Orgrimmar's street lighting). Spawned on every lane: ADT doodads, WMO props
in interior and exterior groups (2.5 yd dedupe against authored MOLT fixtures),
GameObjects and creatures (carried). Cvar fireLightGain (synthetic only).
- Light LANE decided by a down-ray at the light's position: exterior consumers
(terrain, models, WMO exterior batches — new per-vertex point term) read exterior
lights; the interior room lane reads interior fixtures. Fixes interior fixtures
leaking onto lawns and street torches lighting nothing.
- Interior attenuation: the authored MOLT reach replaces the flat 48 yd, with a soft
long-tailed profile (constant 1.75 yd core so energy no longer scales with reach),
cvar interiorAttenScale; a 1.6x default.
- ROOM GATE: a WMO surface takes an interior fixture only if the fixture claims its
group — claims = containment ∪ MOLR ∪ portal-adjacent rooms (2 hops), shared rule in
benilla-formats room_claim.rs, packed per light into a 32 KB storage buffer; portal
claims are weighted (1 across the door frame, fading into the next room) so doorways
carry no seam; in-building exterior-class groups take claimed fixtures. Carried
lights (GameObjects, pets) claim rooms from their world position once settled.
Cvar interiorRoomGate.
Torch shadows
- Casters ranked by contribution at the player with hysteresis and fade weights
(no pop-in); eligibility 4R+3 and the shadowDistance setting; caster geometry
gathered around the fixtures, not the camera.
- Static cube maps cached per fixture (rendered once), entity casters rendered per
frame only for the nearest interiorShadowDynamic fixtures via a depth copy; up to
16 resident maps (interiorShadowCasters), interiorShadowSoft PCF radius.
- Carried lights: rest-pose flame position (no hand-bone jitter), lane from the
bearer's cross-fade weight, caster only while settled — the imp no longer strobes.
Entities
- Portal lane cross-fade (tag bits 15..18) and MATTE_INDOOR bit so a unit keeps its
room lighting across a Bake/Matte flicker; hover highlight folded into the room lane;
the blob shadow returns whenever the realtime sun lane is inactive (night, beyond
shadow distance) with a crossfade at dusk/dawn.
Robustness
- A placement or WMO prop whose model fails to load is retired instead of pinning
the loading screen forever (Stormwind's alliancebrasscannon_flat.m2).
- benilla-extract: wmolights (MOLT + claims + group classes), wmolamps (corpus audit),
m2firescan (synthesis routes).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>