1.顶点着色器中对深度进行计算
v2f vert(appdata v)
{v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.uv = TRANSFORM_TEX(v.uv, _MainTex);o.depth = (o.pos.z / o.pos.w + 1.0) * 0.5; // Normalize depth to [0, 1]return o;
}
但是达不到预期,最后返回的值一直大于1。2.片元着色器中使用深度纹理
sampler2D _CameraDepthTexture;fixed4 frag(v2f i) : SV_Target
{float depth = tex2D(_CameraDepthTexture, i.uv).r;return float4(depth, 0, 0, 1);
}