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-10 00:24:51 +0300
committerClément Foucault <foucault.clem@gmail.com>2017-06-10 00:24:51 +0300
commit97a77b43bea495ed39e9fcaaade3f6f179a5fa75 (patch)
tree74aab1b820975bc5717ffee3c5d4f1dca2ed3365 /source/blender/draw/engines/eevee/shaders
parenta17bb772a04fd34b6a2e03bf2dfde29aa20ec930 (diff)
Eevee: Probe: fix roughness bug and optimize probe evaluation.
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders')
-rw-r--r--source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl17
1 files changed, 11 insertions, 6 deletions
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 e2d92a31f72..e361f08b26b 100644
--- a/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl
+++ b/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl
@@ -283,14 +283,19 @@ vec3 eevee_surface_lit(vec3 world_normal, vec3 albedo, vec3 f0, float roughness,
for (int i = 1; i < MAX_PROBE && i < probe_count; ++i) {
ProbeData pd = probes_data[i];
- vec3 sample_vec = probe_parallax_correction(sd.W, spec_dir, pd, roughness);
- vec4 sample = textureLod_octahedron(probeCubes, vec4(sample_vec, i), roughness * lodMax).rgba;
-
float dist_attenuation = probe_attenuation(sd.W, pd);
- float influ_spec = min(dist_attenuation, (1.0 - spec_accum.a));
- spec_accum.rgb += sample.rgb * influ_spec;
- spec_accum.a += influ_spec;
+ if (dist_attenuation > 0.0) {
+ float roughness_copy = roughness;
+
+ vec3 sample_vec = probe_parallax_correction(sd.W, spec_dir, pd, roughness_copy);
+ vec4 sample = textureLod_octahedron(probeCubes, vec4(sample_vec, i), roughness_copy * lodMax).rgba;
+
+ float influ_spec = min(dist_attenuation, (1.0 - spec_accum.a));
+
+ spec_accum.rgb += sample.rgb * influ_spec;
+ spec_accum.a += influ_spec;
+ }
}
/* World probe */