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 }