Commit: 87adeb8dd91db5bfada04f6df749c28cc4b79251
Author: Clément Foucault
Date:   Thu Jun 22 03:50:50 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB87adeb8dd91db5bfada04f6df749c28cc4b79251

Eevee: Ambient Occlusion: Enable Multibounce approximation and Change influence 
factor.

Making the influence a power for easy tuning. Works like a contrast knob.

===================================================================

M       source/blender/draw/engines/eevee/eevee_effects.c
M       source/blender/draw/engines/eevee/shaders/ambient_occlusion_lib.glsl
M       source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl

===================================================================

diff --git a/source/blender/draw/engines/eevee/eevee_effects.c 
b/source/blender/draw/engines/eevee/eevee_effects.c
index 0aa72f6bc2c..b02109960c5 100644
--- a/source/blender/draw/engines/eevee/eevee_effects.c
+++ b/source/blender/draw/engines/eevee/eevee_effects.c
@@ -391,7 +391,7 @@ void EEVEE_effects_init(EEVEE_Data *vedata)
                /* Ambient Occlusion*/
                stl->effects->ao_dist = 
BKE_collection_engine_property_value_get_float(props, "gtao_distance");
                stl->effects->ao_samples = 
BKE_collection_engine_property_value_get_int(props, "gtao_samples");
-               stl->effects->ao_factor = 1.0f - 
BKE_collection_engine_property_value_get_float(props, "gtao_factor");
+               stl->effects->ao_factor = 
BKE_collection_engine_property_value_get_float(props, "gtao_factor");
        }
 
        /* MinMax Pyramid */
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 a3a1d989475..65ff09c4eae 100644
--- a/source/blender/draw/engines/eevee/shaders/ambient_occlusion_lib.glsl
+++ b/source/blender/draw/engines/eevee/shaders/ambient_occlusion_lib.glsl
@@ -124,7 +124,7 @@ void gtao(vec3 normal, vec3 position, vec2 noise, out float 
visibility
 #endif
        }
 
-       visibility = min(1.0, visibility / aoSamples);
+       visibility = clamp(visibility / aoSamples, 1e-8, 1.0);
 
 #ifdef USE_BENT_NORMAL
        /* The bent normal will show the facet look of the mesh. Try to 
minimize this. */
@@ -132,7 +132,7 @@ void gtao(vec3 normal, vec3 position, vec2 noise, out float 
visibility
 #endif
 
        /* Scale by user factor */
-       visibility = max(0.0, mix(aoFactor, 1.0, visibility));
+       visibility = pow(visibility, aoFactor);
 }
 
 /* Multibounce approximation base on surface albedo.
diff --git a/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl 
b/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl
index 44bfc5353ea..21ca08e109c 100644
--- a/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl
+++ b/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl
@@ -494,7 +494,7 @@ vec3 eevee_surface_lit(vec3 world_normal, vec3 albedo, vec3 
f0, float roughness,
 
        vec3 indirect_radiance =
                spec_accum.rgb * F_ibl(f0, brdf_lut) * float(specToggle) * 
specular_occlusion(dot(sd.N, sd.V), final_ao, roughness) +
-               diff_accum.rgb * albedo * final_ao;
+               diff_accum.rgb * albedo * gtao_multibounce(final_ao, albedo);
 
        return radiance + indirect_radiance;
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to