ScalableAO.shader 3.0 KB

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