[Bf-blender-cvs] [97a77b43bea] blender2.8: Eevee: Probe: fix roughness bug and optimize probe evaluation.

Clément Foucault noreply at git.blender.org
Fri Jun 9 23:28:37 CEST 2017


Commit: 97a77b43bea495ed39e9fcaaade3f6f179a5fa75
Author: Clément Foucault
Date:   Fri Jun 9 23:24:51 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB97a77b43bea495ed39e9fcaaade3f6f179a5fa75

Eevee: Probe: fix roughness bug and optimize probe evaluation.

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

M	source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl

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

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 */




More information about the Bf-blender-cvs mailing list