materialEnvIntensity
materialEnvIntensity
提供 PBR 环境贴图强度的浮点节点:若材质设置了 envMap,则读取 `material.envMapIntensity`;否则读取 `scene.environmentIntensity`。
核心优势
自动在材质级与场景级环境强度之间切换,免去手写条件与 uniform 管理,可在节点图内直接对 IBL 强度做逐像素调制。
常见用途
统一读取并调制基于图像的照明(IBL)强度
与菲涅尔或遮罩结合,局部增强/减弱环境反射
用 UI 或动画驱动材质/场景的环境强度
调试:直接输出强度值来可视化当前 IBL 能量
如何调整
在 JavaScript 中修改 `material.envMapIntensity`(当该材质设置了 `envMap` 时生效)或 `scene.environmentIntensity`(材质未设置 `envMap` 时使用)。在节点图里可再用 `mul`、`clamp`、`mix` 等对 `materialEnvIntensity` 做逐像素调制与动画。
代码示例
1// 以环境反射颜色乘以 materialEnvIntensity,演示按强度叠加 IBL
2const I = positionWorld.sub( cameraPosition ).normalize(); // 入射方向
3const R = reflect( I, normalWorld ); // 反射方向
4const envRGB = cubeTexture( envMap, R ).rgb; // 采样环境贴图
5const ibl = envRGB.mul( materialEnvIntensity ); // 按强度缩放
6material.emissiveNode = ibl; // 用自发光通道演示叠加