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.

119 lines
3.2 KiB

  1. Shader "Hidden/Post FX/Ambient Occlusion"
  2. {
  3. CGINCLUDE
  4. #pragma target 3.0
  5. ENDCG
  6. SubShader
  7. {
  8. ZTest Always Cull Off ZWrite Off
  9. // 0: Occlusion estimation with CameraDepthTexture
  10. Pass
  11. {
  12. CGPROGRAM
  13. #pragma vertex VertMultitex
  14. #pragma fragment FragAO
  15. #pragma multi_compile FOG_OFF FOG_LINEAR FOG_EXP FOG_EXP2
  16. #define SOURCE_DEPTH
  17. #include "AmbientOcclusion.cginc"
  18. ENDCG
  19. }
  20. // 1: Occlusion estimation with CameraDepthNormalsTexture
  21. Pass
  22. {
  23. CGPROGRAM
  24. #pragma vertex VertMultitex
  25. #pragma fragment FragAO
  26. #pragma multi_compile FOG_OFF FOG_LINEAR FOG_EXP FOG_EXP2
  27. #define SOURCE_DEPTHNORMALS
  28. #include "AmbientOcclusion.cginc"
  29. ENDCG
  30. }
  31. // 2: Occlusion estimation with G-Buffer
  32. Pass
  33. {
  34. CGPROGRAM
  35. #pragma vertex VertMultitex
  36. #pragma fragment FragAO
  37. #pragma multi_compile FOG_OFF FOG_LINEAR FOG_EXP FOG_EXP2
  38. #define SOURCE_GBUFFER
  39. #include "AmbientOcclusion.cginc"
  40. ENDCG
  41. }
  42. // 3: Separable blur (horizontal pass) with CameraDepthNormalsTexture
  43. Pass
  44. {
  45. CGPROGRAM
  46. #pragma vertex VertMultitex
  47. #pragma fragment FragBlur
  48. #define SOURCE_DEPTHNORMALS
  49. #define BLUR_HORIZONTAL
  50. #define BLUR_SAMPLE_CENTER_NORMAL
  51. #include "AmbientOcclusion.cginc"
  52. ENDCG
  53. }
  54. // 4: Separable blur (horizontal pass) with G-Buffer
  55. Pass
  56. {
  57. CGPROGRAM
  58. #pragma vertex VertMultitex
  59. #pragma fragment FragBlur
  60. #define SOURCE_GBUFFER
  61. #define BLUR_HORIZONTAL
  62. #define BLUR_SAMPLE_CENTER_NORMAL
  63. #include "AmbientOcclusion.cginc"
  64. ENDCG
  65. }
  66. // 5: Separable blur (vertical pass)
  67. Pass
  68. {
  69. CGPROGRAM
  70. #pragma vertex VertMultitex
  71. #pragma fragment FragBlur
  72. #define BLUR_VERTICAL
  73. #include "AmbientOcclusion.cginc"
  74. ENDCG
  75. }
  76. // 6: Final composition
  77. Pass
  78. {
  79. CGPROGRAM
  80. #pragma vertex VertMultitex
  81. #pragma fragment FragComposition
  82. #include "AmbientOcclusion.cginc"
  83. ENDCG
  84. }
  85. // 7: Final composition (ambient only mode)
  86. Pass
  87. {
  88. Blend Zero OneMinusSrcColor, Zero OneMinusSrcAlpha
  89. CGPROGRAM
  90. #pragma vertex VertCompositionGBuffer
  91. #pragma fragment FragCompositionGBuffer
  92. #include "AmbientOcclusion.cginc"
  93. ENDCG
  94. }
  95. // 8: Debug visualization
  96. Pass
  97. {
  98. CGPROGRAM
  99. #pragma vertex VertMultitex
  100. #pragma fragment FragComposition
  101. #define DEBUG_COMPOSITION
  102. #include "AmbientOcclusion.cginc"
  103. ENDCG
  104. }
  105. }
  106. }