diff options
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.glsl | 27 |
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 +} |