VSMShadowFilter
VSMShadowFilter
一个基于方差阴影贴图(VSM)技术的高性能软阴影函数,它通过一次纹理采样和数学计算来生成非常平滑、柔和的阴影边缘。
核心优势
核心优势是极高的性能。与需要多次采样的PCF不同,VSM通常只需一次纹理读取即可获得高质量的软阴影,并且能自然产生随距离变化的柔和半影效果。
常见用途
对性能和阴影质量有较高要求的产品展示。
建筑可视化中模拟柔和、自然的太阳光阴影。
需要平滑阴影以匹配柔和美术风格的风格化游戏。
作为动态阴影场景中的高性能替代方案,以保证流畅帧率。
如何调整
此节点的效果并非直接调整,而是通过配置光源的阴影属性来控制。首先需设置 `light.shadow.mapType = THREE.VSMShadowMap` 来启用VSM。阴影的柔和度主要通过调整 `light.shadow.radius` 来控制,该值越大,生成的阴影越模糊。其可变半影效果(阴影随距离变柔和)是自动产生的。
代码示例
1// shadowMap 节点包含了 VSM 贴图和相关坐标
2const shadowFactor = VSMShadowFilter( shadowMap );
3
4// 将 VSM 阴影因子应用于光照
5diffuseColor.rgb *= shadowFactor;