tex2Dproj和tex2D的区别

tex2Dproj和tex2D这两个功能几乎相同。

唯一的区别是,在对纹理进行采样之前,tex2Dproj将输入的UV xy坐标除以其w坐标。这是将坐标从正交投影转换为透视投影。

例如 以下段代码的返回值是相同的.

float existingDepth01 = tex2Dproj(_CameraDepthTexture, UNITY_PROJ_COORD(i.screenPosition)).r;


float existingDepth01 = tex2D(_CameraDepthTexture, UNITY_PROJ_COORD(i.screenPosition.xy / i.screenPosition.w)).r;


具体什么情况下使用tex2Dproj呢?

我们知道,裁剪空间的坐标经过缩放和偏移后就变成了(0,w),而当分量除以分量W以后,就变成了(0,1),这样在计算需要返回(0,1)值的时候,就可以直接使用tex2Dproj了.

发布于 2020-02-18 16:48