viewZToOrthographicDepth
viewZToOrthographicDepth
为正交相机将视图空间的Z坐标线性地转换到GPU深度缓冲区所需的标准化[0, 1]深度范围。
核心优势
提供线性深度分布,确保在整个视锥体内的深度精度是均匀的。这对于需要精确测量和无透视畸变渲染的应用(如CAD或2D游戏)至关重要。
常见用途
为2D游戏或UI元素进行渲染,以确保正确的深度排序和层次关系
在CAD、工程或建筑制图软件中以无畸变的正交视图显示模型
为特定的后期处理效果(如线性雾、非真实感渲染轮廓线)生成线性深度图
如何调整
作为一个纯函数,其行为通过改变正交相机的`near`和`far`属性来调整。缩小`near`和`far`之间的距离会集中深度精度,而增大该距离则会将其分散,可能增加远处物体产生Z冲突的风险。
代码示例
1
2// 获取视图空间位置的 z 分量。
3const viewZ = positionView.z;
4
5// 将 [-near, -far] 的 viewZ 范围线性映射到 [0, 1] 的深度范围。
6const orthoDepth = viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );
7
8// 将计算结果赋给材质的 depth 属性。
9material.depth = orthoDepth;
10