logarithmicDepthToViewZ
logarithmicDepthToViewZ
将在对数深度缓冲中存储的非线性深度值,逆向转换回它所代表的、线性的、在观察空间下的 Z 坐标 (viewZ)。
核心优势
将复杂的对数深度解码过程封装为单个函数,使开发者能在开启对数深度以解决 Z-fighting 的同时,轻松实现依赖线性深度的后期处理特效(如 SSAO、景深)。
常见用途
屏幕空间环境光遮蔽 (SSAO)
景深 (Depth of Field)
体积雾与体积光
调试和可视化深度图
如何调整
此节点的效果体现在其输出 `viewZ` 如何影响其他特效。例如,在雾效中,即使输入的 `depth` 值不变,若将摄像机的 `far` 裁剪面距离(作为输入之一)从 1000 增加到 100,000,计算出的 `viewZ` 会变得大得多,从而使该点看起来远了几个数量级,导致雾效急剧变浓。
代码示例
1// 在开启对数深度的后期处理中,将采样深度转换为线性视图Z坐标
2const logDepth = depthTexture.sample( uv ).r;
3const viewZ = logarithmicDepthToViewZ( logDepth, cameraNear, cameraFar );