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; }
基于深度视差可以用来做很多效果,比如水的深度效果之类的。