shadowTransmittance top-level property

Vector3 shadowTransmittance
final

ShadowFactor: how much of the directional light survives here.

One — not zero — outside the map, off the caster, or with shadows off. A fragment beyond the shadow volume is unshadowed, and getting that backwards puts a hard edge across the scene at the edge of the map.

lightNDotL is the light's n_dot_l, which ShadowFactor is handed with the light and no longer reads: the offset measures the slope along the map's own axes instead. What the see-through casters between the sun and the fragment last given to shadowFactor let through — light_transmittance in surface.glsl, and the same arrangement: set as a side effect, white whenever the call does not reach the atlas, read by accumulateLights beside the visibility.

Implementation

final Vector3 shadowTransmittance = Vector3.all(1.0);