THREE.JS / FOUNDATIONS 131

Give the node its own sky.

A PBR node material can inherit Scene.environment, consume a classic envMap, or own a custom envNode. Build two PMREM maps from typed-array panoramas and compare the ownership boundary without changing the mesh.

Initializing -

Creating a backend-specific PBR material and two filtered environment maps.

backend
-
material
-
scene env
-
active owner
-
Choose the ownersource -> PMREM -> node/material
Node contractwaiting
material
-
envNode
-
envMap
-
Scene.environment
-
lights
-
intensity
-

MeshStandardNodeMaterial uses EnvironmentNode for PBR image-based lighting.

Source panoramaswaiting
cool
-
warm
-
size
-
type
-
color
-
mapping
-

The two equirectangular DataTextures are synthetic but carry explicit sRGB source metadata.

PMREM outputswaiting
cool target
-
warm target
-
mapping
-
cool size
-
warm size
-
state
-

pmremTexture() consumes the filtered target in the custom NodeMaterial path.

Comparethree owners

The scene sphere inherits cool fill; the node and map spheres explicitly consume warm fill.

Scene.environmentbuilder default

PBR node materials honor Scene.environment when no material-level override exists.

material.envNodecustom node

pmremTexture(warmTarget.texture) overrides the default environment node for one material.

material.envMapclassic property

The classic texture property is still a valid explicit ownership path; WebGL2 uses this fallback.

No environmentdiagnostic baseline

Removing both scene and material ownership makes the direct-light contribution visible.

Conversion and render timingwaiting
cool PMREM ms
-
warm PMREM ms
-
CPU avg
-
CPU p95
-
source bytes
-
texture count
-

Rebuild the sources, choose an owner, then measure post-conversion PBR shading.

DataTexturePMREM CubeUVScene.environmentormaterial.envNodeormaterial.envMap

Scene.environment is the renderer-wide default for PBR node materials. envNode is a per-material node override; it is not a second Scene.environment. In WebGL2, the same explicit ownership lesson uses MeshStandardMaterial.envMap because the official LightProbeGrid and classic material path remain WebGL-specific.

Sources: EnvironmentNode · NodeMaterial · MeshStandardNodeMaterial · PMREMGenerator · official WebGPU environment example · LightProbeGrid · XREstimatedLight