diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-06-22 04:50:50 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-06-22 04:51:06 +0300 |
commit | 87adeb8dd91db5bfada04f6df749c28cc4b79251 (patch) | |
tree | 617a7cc9f8c7b61662b378f9587f334f3d573941 /source/blender/draw/engines/eevee | |
parent | 779c950098e46a34f89f1705be61b4b24be11568 (diff) |
Eevee: Ambient Occlusion: Enable Multibounce approximation and Change influence factor.
Making the influence a power for easy tuning. Works like a contrast knob.
Diffstat (limited to 'source/blender/draw/engines/eevee')
3 files changed, 4 insertions, 4 deletions
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; } |