Note that even the old VRML 1.0 light nodes inherit from this. Although they interpret some bits differently ("ambientIntensity" < 0 has special meaning). But most of the fields behave identically, they only have different default values.
procedure Box3DDistances(const Box: TBox3D; out MinDistance, MaxDistance: Single); virtual; abstract;
Calculate distances between the given Box and this light source. This is intended to capture the depth distances where the box resides, useful for calculating e.g. depth ranges to capture in the shadow maps. Depending on light source type, various distance measures may be used, appropriate to light sources projection.
Always MinDistance <= MaxDistance. They may be negative when we measure along the light's direction.
Update TLightInstance record when lighting State changes. Assumes that LightInstance.Node = Self.
This will set LightInstance.Transform properties, and recalculate all LightInstance properties based on Transform.
procedure UpdateLightInstance( var LightInstance: TLightInstance); virtual;
Update TLightInstance record when lighting location/direction (and other properties precalculated on TLightInstance) change. Assumes that LightInstance.Node = Self.
Position expressed in homogeneous coordinates. For positional lights, the last component is always 1. For directional lights, the last component is always 0.
Note that this expressed is in the local light node coordinate system.
Transformation of this light node. Normal lights can be instanced many times within the scene, with various transformation, so this transformation property cannot be used.