| Shader "Hidden/Post FX/Motion Blur" | 
| { | 
|     CGINCLUDE | 
|   | 
|         #pragma target 3.0 | 
|   | 
|     ENDCG | 
|   | 
|     SubShader | 
|     { | 
|         Cull Off ZWrite Off ZTest Always | 
|   | 
|         // (0) Velocity texture setup | 
|         Pass | 
|         { | 
|             CGPROGRAM | 
|   | 
|                 #include "MotionBlur.cginc" | 
|                 #pragma vertex VertDefault | 
|                 #pragma fragment FragVelocitySetup | 
|   | 
|             ENDCG | 
|         } | 
|   | 
|         // (1) TileMax filter (2 pixel width with normalization) | 
|         Pass | 
|         { | 
|             CGPROGRAM | 
|   | 
|                 #include "MotionBlur.cginc" | 
|                 #pragma vertex VertDefault | 
|                 #pragma fragment FragTileMax1 | 
|   | 
|             ENDCG | 
|         } | 
|   | 
|         //  (2) TileMax filter (2 pixel width) | 
|         Pass | 
|         { | 
|             CGPROGRAM | 
|   | 
|                 #include "MotionBlur.cginc" | 
|                 #pragma vertex VertDefault | 
|                 #pragma fragment FragTileMax2 | 
|   | 
|             ENDCG | 
|         } | 
|   | 
|         // (3) TileMax filter (variable width) | 
|         Pass | 
|         { | 
|             CGPROGRAM | 
|   | 
|                 #include "MotionBlur.cginc" | 
|                 #pragma vertex VertDefault | 
|                 #pragma fragment FragTileMaxV | 
|   | 
|             ENDCG | 
|         } | 
|   | 
|         // (4) NeighborMax filter | 
|         Pass | 
|         { | 
|             CGPROGRAM | 
|   | 
|                 #include "MotionBlur.cginc" | 
|                 #pragma vertex VertDefault | 
|                 #pragma fragment FragNeighborMax | 
|   | 
|             ENDCG | 
|         } | 
|   | 
|         // (5) Reconstruction filter | 
|         Pass | 
|         { | 
|             CGPROGRAM | 
|   | 
|                 #include "MotionBlur.cginc" | 
|                 #pragma vertex VertMultitex | 
|                 #pragma fragment FragReconstruction | 
|   | 
|             ENDCG | 
|         } | 
|   | 
|         // (6) Frame compression | 
|         Pass | 
|         { | 
|             CGPROGRAM | 
|   | 
|                 #pragma multi_compile __ UNITY_COLORSPACE_GAMMA | 
|                 #include "MotionBlur.cginc" | 
|                 #pragma vertex VertFrameCompress | 
|                 #pragma fragment FragFrameCompress | 
|   | 
|             ENDCG | 
|         } | 
|   | 
|         // (7) Frame blending | 
|         Pass | 
|         { | 
|             CGPROGRAM | 
|   | 
|                 #pragma multi_compile __ UNITY_COLORSPACE_GAMMA | 
|                 #include "MotionBlur.cginc" | 
|                 #pragma vertex VertMultitex | 
|                 #pragma fragment FragFrameBlending | 
|   | 
|             ENDCG | 
|         } | 
|   | 
|         // (8) Frame blending (without chroma subsampling) | 
|         Pass | 
|         { | 
|             CGPROGRAM | 
|   | 
|                 #include "MotionBlur.cginc" | 
|                 #pragma vertex VertMultitex | 
|                 #pragma fragment FragFrameBlendingRaw | 
|   | 
|             ENDCG | 
|         } | 
|     } | 
| } |