THREE.JS / FOUNDATIONS 110

Shadow nodes have owners.

A custom point light can register its own LightNode, return a custom PointShadowNode, and still reuse Three.js's cube-shadow machinery. This scene makes that ownership and cache boundary visible.

Initializing -

Registering one custom point-light node beside the built-in path.

Point maps
-
Custom light nodes
-
Custom shadow nodes
-
Receiver policy
-
Compile ms
-
Shadow strength
-
Draw calls
-
Frame ms
-
Cache boundary-

The left receiver consumes the built-in point light; the right receiver consumes the registered custom point light.

Renderer ownership chainsame custom light reused twice
libraryCachePointLight -> CachePointLightNode
light nodesetupShadowNode() -> CachePointShadowNode
shadow nodePointShadowNode cube target + custom strength
cacheone custom node should serve both receivers

Changing receiver policy rebuilds material light-list contracts. Strength is a live custom-shadow uniform; repeated rebuilds should not create another light or shadow node for the same light object. Try ?forceWebGL=1 for the GLSL backend.

Next boundary: clustered shadow ownership ->
LAB 110 / SHADOW NODE CACHE