THREE.JS / FOUNDATIONS 107

One scene. Three light contracts.

A material can consume every scene light, a hand-picked LightsNode list, or a renderer-managed dynamic array. Those choices change what the graph means, what the cache keys contain, and which objects receive the light.

Initializing -

Preparing red, neutral, and blue lighting zones.

Policy
-
Lights
-
Selective nodes
-
Compile ms
-
Cache keys
-
Draw calls
-
Triangles
-
Frame ms
-
Lighting contract-

Left receives red lights, center receives all lights, and right receives blue lights.

Cache evidenceLightsNode.customCacheKey()

Selective light IDs are part of each material lighting contract.

red-
all-
blue-

Changing population rebuilds static selective contracts; in dynamic mode, add/remove updates the renderer-managed light array without rebuilding the materials. Try ?mode=dynamic&forceWebGL=1 for the labeled WebGL2 fallback.

Related: Forward+ and dynamic light budgets ->
LAB 107 / SELECTIVE LIGHTS