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:
authorClément Foucault <foucault.clem@gmail.com>2017-06-22 04:50:50 +0300
committerClément Foucault <foucault.clem@gmail.com>2017-06-22 04:51:06 +0300
commit87adeb8dd91db5bfada04f6df749c28cc4b79251 (patch)
tree617a7cc9f8c7b61662b378f9587f334f3d573941 /source/blender/draw/engines/eevee
parent779c950098e46a34f89f1705be61b4b24be11568 (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')
-rw-r--r--source/blender/draw/engines/eevee/eevee_effects.c2
-rw-r--r--source/blender/draw/engines/eevee/shaders/ambient_occlusion_lib.glsl4
-rw-r--r--source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl2
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;
}