viewportLinearDepth
viewportLinearDepth
将GPU内部非线性的深度值,转换为与真实世界距离成正比的、范围在 [0, 1] 的线性深度值。
核心优势
提供与真实距离成正比的直观深度值,使得雾效、水下效果等依赖距离的计算变得简单且视觉上平滑自然,避免了非线性深度带来的“条带感”。
常见用途
距离雾效(Distance Fog)
水下效果(Underwater Effects)
大气散射(Atmospheric Scattering)
如何调整
该节点是只读的。其效果通过对着色器中输出的线性值应用数学函数来“调整”,例如使用 `pow()` 改变雾的浓度曲线,或使用 `smoothstep()` 创建有明确边界的体积效果。
代码示例
1// 获取与距离成正比的线性深度值 (0 to 1)
2const linearDepth = viewportLinearDepth;
3
4// 根据线性深度,将物体颜色与雾的颜色进行混合
5return objectColor.mix( fogColor, linearDepth );