| Shader "Hidden/Post FX/Depth Of Field" | 
| { | 
|     Properties | 
|     { | 
|         _MainTex ("", 2D) = "black" | 
|     } | 
|   | 
|     CGINCLUDE | 
|         #pragma exclude_renderers d3d11_9x | 
|     ENDCG | 
|   | 
|     // SubShader with SM 5.0 support | 
|     // Gather intrinsics are used to reduce texture sample count. | 
|     SubShader | 
|     { | 
|         Cull Off ZWrite Off ZTest Always | 
|   | 
|         Pass // 0 | 
|         { | 
|             Name "CoC Calculation" | 
|             CGPROGRAM | 
|                 #pragma target 3.0 | 
|                 #pragma vertex VertDOF | 
|                 #pragma fragment FragCoC | 
|                 #include "DepthOfField.cginc" | 
|             ENDCG | 
|         } | 
|   | 
|         Pass // 1 | 
|         { | 
|             Name "CoC Temporal Filter" | 
|             CGPROGRAM | 
|                 #pragma target 5.0 | 
|                 #pragma vertex VertDOF | 
|                 #pragma fragment FragTempFilter | 
|                 #include "DepthOfField.cginc" | 
|             ENDCG | 
|         } | 
|   | 
|         Pass // 2 | 
|         { | 
|             Name "Downsample and Prefilter" | 
|             CGPROGRAM | 
|                 #pragma target 5.0 | 
|                 #pragma vertex VertDOF | 
|                 #pragma fragment FragPrefilter | 
|                 #pragma multi_compile __ UNITY_COLORSPACE_GAMMA | 
|                 #include "DepthOfField.cginc" | 
|             ENDCG | 
|         } | 
|   | 
|         Pass // 3 | 
|         { | 
|             Name "Bokeh Filter (small)" | 
|             CGPROGRAM | 
|                 #pragma target 3.0 | 
|                 #pragma vertex VertDOF | 
|                 #pragma fragment FragBlur | 
|                 #define KERNEL_SMALL | 
|                 #include "DepthOfField.cginc" | 
|             ENDCG | 
|         } | 
|   | 
|         Pass // 4 | 
|         { | 
|             Name "Bokeh Filter (medium)" | 
|             CGPROGRAM | 
|                 #pragma target 3.0 | 
|                 #pragma vertex VertDOF | 
|                 #pragma fragment FragBlur | 
|                 #define KERNEL_MEDIUM | 
|                 #include "DepthOfField.cginc" | 
|             ENDCG | 
|         } | 
|   | 
|         Pass // 5 | 
|         { | 
|             Name "Bokeh Filter (large)" | 
|             CGPROGRAM | 
|                 #pragma target 3.0 | 
|                 #pragma vertex VertDOF | 
|                 #pragma fragment FragBlur | 
|                 #define KERNEL_LARGE | 
|                 #include "DepthOfField.cginc" | 
|             ENDCG | 
|         } | 
|   | 
|         Pass // 6 | 
|         { | 
|             Name "Bokeh Filter (very large)" | 
|             CGPROGRAM | 
|                 #pragma target 3.0 | 
|                 #pragma vertex VertDOF | 
|                 #pragma fragment FragBlur | 
|                 #define KERNEL_VERYLARGE | 
|                 #include "DepthOfField.cginc" | 
|             ENDCG | 
|         } | 
|   | 
|         Pass // 7 | 
|         { | 
|             Name "Postfilter" | 
|             CGPROGRAM | 
|                 #pragma target 3.0 | 
|                 #pragma vertex VertDOF | 
|                 #pragma fragment FragPostBlur | 
|                 #include "DepthOfField.cginc" | 
|             ENDCG | 
|         } | 
|     } | 
|   | 
|     // Fallback SubShader with SM 3.0 | 
|     SubShader | 
|     { | 
|         Cull Off ZWrite Off ZTest Always | 
|   | 
|         Pass // 0 | 
|         { | 
|             Name "CoC Calculation" | 
|             CGPROGRAM | 
|                 #pragma target 3.0 | 
|                 #pragma vertex VertDOF | 
|                 #pragma fragment FragCoC | 
|                 #include "DepthOfField.cginc" | 
|             ENDCG | 
|         } | 
|   | 
|         Pass // 1 | 
|         { | 
|             Name "CoC Temporal Filter" | 
|             CGPROGRAM | 
|                 #pragma target 3.0 | 
|                 #pragma vertex VertDOF | 
|                 #pragma fragment FragTempFilter | 
|                 #include "DepthOfField.cginc" | 
|             ENDCG | 
|         } | 
|   | 
|         Pass // 2 | 
|         { | 
|             Name "Downsample and Prefilter" | 
|             CGPROGRAM | 
|                 #pragma target 3.0 | 
|                 #pragma vertex VertDOF | 
|                 #pragma fragment FragPrefilter | 
|                 #pragma multi_compile __ UNITY_COLORSPACE_GAMMA | 
|                 #include "DepthOfField.cginc" | 
|             ENDCG | 
|         } | 
|   | 
|         Pass // 3 | 
|         { | 
|             Name "Bokeh Filter (small)" | 
|             CGPROGRAM | 
|                 #pragma target 3.0 | 
|                 #pragma vertex VertDOF | 
|                 #pragma fragment FragBlur | 
|                 #define KERNEL_SMALL | 
|                 #include "DepthOfField.cginc" | 
|             ENDCG | 
|         } | 
|   | 
|         Pass // 4 | 
|         { | 
|             Name "Bokeh Filter (medium)" | 
|             CGPROGRAM | 
|                 #pragma target 3.0 | 
|                 #pragma vertex VertDOF | 
|                 #pragma fragment FragBlur | 
|                 #define KERNEL_MEDIUM | 
|                 #include "DepthOfField.cginc" | 
|             ENDCG | 
|         } | 
|   | 
|         Pass // 5 | 
|         { | 
|             Name "Bokeh Filter (large)" | 
|             CGPROGRAM | 
|                 #pragma target 3.0 | 
|                 #pragma vertex VertDOF | 
|                 #pragma fragment FragBlur | 
|                 #define KERNEL_LARGE | 
|                 #include "DepthOfField.cginc" | 
|             ENDCG | 
|         } | 
|   | 
|         Pass // 6 | 
|         { | 
|             Name "Bokeh Filter (very large)" | 
|             CGPROGRAM | 
|                 #pragma target 3.0 | 
|                 #pragma vertex VertDOF | 
|                 #pragma fragment FragBlur | 
|                 #define KERNEL_VERYLARGE | 
|                 #include "DepthOfField.cginc" | 
|             ENDCG | 
|         } | 
|   | 
|         Pass // 7 | 
|         { | 
|             Name "Postfilter" | 
|             CGPROGRAM | 
|                 #pragma target 3.0 | 
|                 #pragma vertex VertDOF | 
|                 #pragma fragment FragPostBlur | 
|                 #include "DepthOfField.cginc" | 
|             ENDCG | 
|         } | 
|     } | 
|   | 
|     FallBack Off | 
| } |