You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

212 lines
5.3 KiB

  1. Shader "Hidden/Post FX/Depth Of Field"
  2. {
  3. Properties
  4. {
  5. _MainTex ("", 2D) = "black"
  6. }
  7. CGINCLUDE
  8. #pragma exclude_renderers d3d11_9x
  9. ENDCG
  10. // SubShader with SM 5.0 support
  11. // Gather intrinsics are used to reduce texture sample count.
  12. SubShader
  13. {
  14. Cull Off ZWrite Off ZTest Always
  15. Pass // 0
  16. {
  17. Name "CoC Calculation"
  18. CGPROGRAM
  19. #pragma target 3.0
  20. #pragma vertex VertDOF
  21. #pragma fragment FragCoC
  22. #include "DepthOfField.cginc"
  23. ENDCG
  24. }
  25. Pass // 1
  26. {
  27. Name "CoC Temporal Filter"
  28. CGPROGRAM
  29. #pragma target 5.0
  30. #pragma vertex VertDOF
  31. #pragma fragment FragTempFilter
  32. #include "DepthOfField.cginc"
  33. ENDCG
  34. }
  35. Pass // 2
  36. {
  37. Name "Downsample and Prefilter"
  38. CGPROGRAM
  39. #pragma target 5.0
  40. #pragma vertex VertDOF
  41. #pragma fragment FragPrefilter
  42. #pragma multi_compile __ UNITY_COLORSPACE_GAMMA
  43. #include "DepthOfField.cginc"
  44. ENDCG
  45. }
  46. Pass // 3
  47. {
  48. Name "Bokeh Filter (small)"
  49. CGPROGRAM
  50. #pragma target 3.0
  51. #pragma vertex VertDOF
  52. #pragma fragment FragBlur
  53. #define KERNEL_SMALL
  54. #include "DepthOfField.cginc"
  55. ENDCG
  56. }
  57. Pass // 4
  58. {
  59. Name "Bokeh Filter (medium)"
  60. CGPROGRAM
  61. #pragma target 3.0
  62. #pragma vertex VertDOF
  63. #pragma fragment FragBlur
  64. #define KERNEL_MEDIUM
  65. #include "DepthOfField.cginc"
  66. ENDCG
  67. }
  68. Pass // 5
  69. {
  70. Name "Bokeh Filter (large)"
  71. CGPROGRAM
  72. #pragma target 3.0
  73. #pragma vertex VertDOF
  74. #pragma fragment FragBlur
  75. #define KERNEL_LARGE
  76. #include "DepthOfField.cginc"
  77. ENDCG
  78. }
  79. Pass // 6
  80. {
  81. Name "Bokeh Filter (very large)"
  82. CGPROGRAM
  83. #pragma target 3.0
  84. #pragma vertex VertDOF
  85. #pragma fragment FragBlur
  86. #define KERNEL_VERYLARGE
  87. #include "DepthOfField.cginc"
  88. ENDCG
  89. }
  90. Pass // 7
  91. {
  92. Name "Postfilter"
  93. CGPROGRAM
  94. #pragma target 3.0
  95. #pragma vertex VertDOF
  96. #pragma fragment FragPostBlur
  97. #include "DepthOfField.cginc"
  98. ENDCG
  99. }
  100. }
  101. // Fallback SubShader with SM 3.0
  102. SubShader
  103. {
  104. Cull Off ZWrite Off ZTest Always
  105. Pass // 0
  106. {
  107. Name "CoC Calculation"
  108. CGPROGRAM
  109. #pragma target 3.0
  110. #pragma vertex VertDOF
  111. #pragma fragment FragCoC
  112. #include "DepthOfField.cginc"
  113. ENDCG
  114. }
  115. Pass // 1
  116. {
  117. Name "CoC Temporal Filter"
  118. CGPROGRAM
  119. #pragma target 3.0
  120. #pragma vertex VertDOF
  121. #pragma fragment FragTempFilter
  122. #include "DepthOfField.cginc"
  123. ENDCG
  124. }
  125. Pass // 2
  126. {
  127. Name "Downsample and Prefilter"
  128. CGPROGRAM
  129. #pragma target 3.0
  130. #pragma vertex VertDOF
  131. #pragma fragment FragPrefilter
  132. #pragma multi_compile __ UNITY_COLORSPACE_GAMMA
  133. #include "DepthOfField.cginc"
  134. ENDCG
  135. }
  136. Pass // 3
  137. {
  138. Name "Bokeh Filter (small)"
  139. CGPROGRAM
  140. #pragma target 3.0
  141. #pragma vertex VertDOF
  142. #pragma fragment FragBlur
  143. #define KERNEL_SMALL
  144. #include "DepthOfField.cginc"
  145. ENDCG
  146. }
  147. Pass // 4
  148. {
  149. Name "Bokeh Filter (medium)"
  150. CGPROGRAM
  151. #pragma target 3.0
  152. #pragma vertex VertDOF
  153. #pragma fragment FragBlur
  154. #define KERNEL_MEDIUM
  155. #include "DepthOfField.cginc"
  156. ENDCG
  157. }
  158. Pass // 5
  159. {
  160. Name "Bokeh Filter (large)"
  161. CGPROGRAM
  162. #pragma target 3.0
  163. #pragma vertex VertDOF
  164. #pragma fragment FragBlur
  165. #define KERNEL_LARGE
  166. #include "DepthOfField.cginc"
  167. ENDCG
  168. }
  169. Pass // 6
  170. {
  171. Name "Bokeh Filter (very large)"
  172. CGPROGRAM
  173. #pragma target 3.0
  174. #pragma vertex VertDOF
  175. #pragma fragment FragBlur
  176. #define KERNEL_VERYLARGE
  177. #include "DepthOfField.cginc"
  178. ENDCG
  179. }
  180. Pass // 7
  181. {
  182. Name "Postfilter"
  183. CGPROGRAM
  184. #pragma target 3.0
  185. #pragma vertex VertDOF
  186. #pragma fragment FragPostBlur
  187. #include "DepthOfField.cginc"
  188. ENDCG
  189. }
  190. }
  191. FallBack Off
  192. }