shadow
shadow
shadow 节点封装了标准阴影贴图(Shadow Mapping)的复杂逻辑,使其能够轻松地为自定义 TSL 材质添加来自场景中标准光源(如平行光、聚光灯)的阴影。它通过输出一个阴影因子来简化阴影计算。
核心优势
极大地简化了在自定义材质中实现阴影的过程,用户无需了解阴影贴图、深度比较或 PCF 过滤的底层 GLSL 细节。它能无缝继承 Three.js 光源的阴影设置,确保与标准材质表现一致。
常见用途
为自定义 TSL 材质添加真实感阴影
创建风格化的阴影效果(如卡通或彩色阴影)
在多光源场景中,计算并混合来自不同光源的阴影
如何调整
该节点的效果完全通过在 JavaScript 中配置其关联的 `THREE.Light` 对象的 `.shadow` 属性来调整。关键属性包括:通过 `shadow.bias` 解决阴影痤疮,通过 `shadow.radius` 创建柔和的软阴影边缘,以及通过 `shadow.mapSize` 控制阴影贴图的分辨率来平衡质量与性能。
代码示例
1// 获取该光源的阴影因子 (0.0 = 完全阴影, 1.0 = 完全照亮)
2const shadowFactor = shadow( dirLight );
3
4// 将颜色与阴影因子相乘
5material.colorNode = baseColor.mul( shadowFactor );