Unity CGIM Shader转URP HLSL:求COMPUTE_EYEDEPTH宏等效实现
COMPUTE_EYEDEPTH的URP HLSL等效实现
核心等效代码
在URP的HLSL Shader中,你可以用以下代码直接替代CG中的COMPUTE_EYEDEPTH宏:
// 直接计算眼睛空间深度值 float eyeDepth = -UnityObjectToViewPos(input.vertex).z; // 或者自定义宏,完全匹配原宏的使用方式 #define COMPUTE_EYEDEPTH(o) o = -UnityObjectToViewPos(input.vertex).z;
说明
- 原CG宏
COMPUTE_EYEDEPTH的本质是计算眼睛空间(视图空间)下的线性深度,即相机到物体表面的实际距离(透视相机场景)。 - Unity的视图空间中,相机前向为-z方向,因此视图空间顶点的z分量为负值,取反后得到的就是正向的深度值,和原宏的计算逻辑完全一致。
- 该实现同时兼容透视相机与正交相机场景,正交相机下视图空间z值的绝对值对应物体在相机视锥中的深度位置,行为与原宏保持一致。
内容的提问来源于stack exchange,提问作者Prateek Panwar
相关产品推荐
相关产品推荐

