MotionBlurClear.shader 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
  2. Shader "Hidden/MotionBlurClear"
  3. {
  4. Properties { }
  5. SubShader {
  6. Pass {
  7. //ZTest LEqual
  8. ZTest Always // lame depth test
  9. ZWrite Off // lame depth test
  10. CGPROGRAM
  11. #pragma vertex vert
  12. #pragma fragment frag
  13. #include "UnityCG.cginc"
  14. struct vs_input {
  15. float4 vertex : POSITION;
  16. };
  17. struct ps_input {
  18. float4 pos : SV_POSITION;
  19. float4 screen : TEXCOORD0;
  20. };
  21. sampler2D_float _CameraDepthTexture;
  22. ps_input vert (vs_input v)
  23. {
  24. ps_input o;
  25. o.pos = UnityObjectToClipPos (v.vertex);
  26. o.screen = ComputeScreenPos(o.pos);
  27. COMPUTE_EYEDEPTH(o.screen.z);
  28. return o;
  29. }
  30. float4 frag (ps_input i) : SV_Target
  31. {
  32. // superlame: manual depth test needed as we can't bind depth, FIXME for 4.x
  33. // alternatively implement SM > 3 version where we write out custom depth
  34. float d = SAMPLE_DEPTH_TEXTURE_PROJ(_CameraDepthTexture, UNITY_PROJ_COORD(i.screen));
  35. d = LinearEyeDepth(d);
  36. clip(d - i.screen.z + 1e-2f);
  37. return float4(0, 0, 0, 0);
  38. }
  39. ENDCG
  40. }
  41. }
  42. Fallback Off
  43. }