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