rangeFogFactor
rangeFogFactor
一个用于计算基于距离的线性雾化因子的节点。它根据与摄像机的距离,在指定的 `near` 和 `far` 范围内生成一个 0 到 1 的平滑过渡值。
核心优势
封装了获取深度和使用 `smoothstep` 进行平滑插值的核心雾化逻辑,极大地简化了自定义雾效的创建。它性能高且过渡自然,避免了雾效边缘的突变。
常见用途
实现标准场景雾,通过混合物体颜色与雾颜色。
实现基于距离的细节淡出(LOD),通过控制远处物体的透明度。
模拟大气透视效果,将远处物体的颜色与天空颜色混合。
如何调整
通过调整 `near` 和 `far` 参数来控制雾的分布。增大 `near` 会使雾“后退”,扩大清晰区域。减小 `far` 会使雾的过渡更急促,形成“雾墙”效果。`far` 与 `near` 的差值决定了雾从清晰到浓密的过渡带有多宽。
代码示例
1// 定义雾的起始和结束距离
2const fogNear = uniform(10);
3const fogFar = uniform(50);
4
5// 计算雾化因子 (0-1)
6const fogFactor = rangeFogFactor( fogNear, fogFar );
7
8// 根据因子混合物体颜色与雾颜色
9const finalColor = mix( objectColor, fogColor, fogFactor );