lightShadowMatrix
lightShadowMatrix
在 TSL 中,提供一个自动更新的变换矩阵(mat4),用于将顶点从世界空间变换到指定光源的阴影裁剪空间,是实现自定义阴影贴图算法的数学基础。
核心优势
完美同步并自动化了阴影矩阵的更新过程,将复杂的内部矩阵组合与更新逻辑完全封装。开发者无需手动管理和同步 uniform,即可获得一个保证正确的、用于阴影计算的变换矩阵。
常见用途
在顶点着色器中,计算顶点在光源裁剪空间中的坐标(shadowCoord),用于实现自定义动态阴影。
在片元着色器中,为阴影贴图采样提供正确的投影坐标。
作为投影仪的变换矩阵,实现聚光灯下的投影纹理(Projective Texturing)效果。
用于调试,通过将阴影坐标可视化为颜色来检查阴影相机的视锥体范围。
如何调整
此节点的值无法直接调整。它的值由你在 JavaScript 中配置其关联的 `THREE.Light` 对象的 `shadow` 属性来决定,例如调整 `light.shadow.camera` 的视锥体(left, right, near, far)或移动光源本身。
代码示例
1// 顶点着色器中:将顶点从世界空间变换到光源的阴影裁剪空间
2vShadowCoord = lightShadowMatrix( myLight ).mul( positionWorld );
3
4// 片元着色器中:使用变换后的坐标进行投影采样,判断是否在阴影中
5const shadow = textureProj( shadowMap, vShadowCoord );