surface shader获取像素深度差值

        void vert (inout appdata_full v, out Input i) {
            UNITY_INITIALIZE_OUTPUT(Input, i);

            i.proj = ComputeScreenPos(UnityObjectToClipPos(v.vertex));
            COMPUTE_EYEDEPTH(i.proj.z);
        }

        void surf (Input IN, inout SurfaceOutput o) {

            half m_depth = LinearEyeDepth(tex2Dproj (_CameraDepthTexture, IN.proj).r);
            half deltaDepth = m_depth - IN.proj.z;

        }

  基于深度视差可以用来做很多效果,比如水的深度效果之类的。

原文地址:https://www.cnblogs.com/sifenkesi/p/9530401.html