Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/ambient_occlusion_lib.glsl')
-rw-r--r--source/blender/draw/engines/eevee/shaders/ambient_occlusion_lib.glsl27
1 files changed, 26 insertions, 1 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/ambient_occlusion_lib.glsl b/source/blender/draw/engines/eevee/shaders/ambient_occlusion_lib.glsl
index 5a7e893deb6..5fcc24d1a73 100644
--- a/source/blender/draw/engines/eevee/shaders/ambient_occlusion_lib.glsl
+++ b/source/blender/draw/engines/eevee/shaders/ambient_occlusion_lib.glsl
@@ -213,4 +213,29 @@ float gtao_multibounce(float visibility, vec3 albedo)
float x = visibility;
return max(x, ((x * a + b) * x + c) * x);
-} \ No newline at end of file
+}
+
+/* Use the right occlusion */
+float occlusion_compute(vec3 N, vec3 vpos, float user_occlusion, vec2 randuv, out vec3 bent_normal)
+{
+#ifdef USE_AO /* Screen Space Occlusion */
+
+ float computed_occlusion;
+ vec3 vnor = mat3(ViewMatrix) * N;
+
+#ifdef USE_BENT_NORMAL
+ gtao(vnor, vpos, randuv, computed_occlusion, bent_normal);
+ bent_normal = mat3(ViewMatrixInverse) * bent_normal;
+#else
+ gtao(vnor, vpos, randuv, computed_occlusion);
+ bent_normal = N;
+#endif
+ return min(computed_occlusion, user_occlusion);
+
+#else /* No added Occlusion. */
+
+ bent_normal = N;
+ return user_occlusion;
+
+#endif
+}