orthographicDepthToViewZ
orthographicDepthToViewZ
将正交相机渲染出的 [0, 1] 范围内的深度值,转换为线性的、具有物理意义的视图空间 Z 坐标。
核心优势
将正交投影的深度逆运算封装为单个节点,使开发者能基于真实的线性距离实现效果,而无需手动处理复杂的数学公式,提高了代码可读性并降低了出错风险。
常见用途
自定义距离雾效
重建像素的世界坐标(用于 SSAO、延迟渲染等)
实现屏幕空间的体积效果或贴花
如何调整
此节点的效果取决于输入参数的准确性。输入的 `near` 和 `far` 值必须与生成深度图的相机参数严格匹配。例如,如果在后期处理中提供一个比原始相机更小的 `far` 值,会导致距离重建被“压缩”,使远处的雾效无法正确显示或过早消失。
代码示例
1// 使用 uv().x 模拟一个从近到远 [0, 1] 的深度输入
2const simulatedDepth = uv().x;
3
4// 将模拟深度转换为线性的视图空间 Z 坐标
5const viewZ = orthographicDepthToViewZ( simulatedDepth, cameraNear, cameraFar );
6
7// 为了可视化,将 viewZ 从 [-near, -far] 重新映射回 [0, 1] 的颜色范围
8const visualizedZ = remap( viewZ, cameraNear.negate(), cameraFar.negate(), 0, 1 );
9material.colorNode = visualizedZ;