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
path: root/source
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2018-11-14 18:03:24 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-11-15 20:16:30 +0300
commitd082b18d877f2da661ee2a48fdf3c69d67406e86 (patch)
tree46a03e66cfa4ee8f405667fc68a3939880264d45 /source
parentd0b0e7efed709613e53effa3e0381312310a117f (diff)
Eevee: Optimisation: Bypass light power calculation when not needed
This makes quite a big improvement in my case 1.8ms vs 2.3ms for a single area light. This will make even more difference with light attenuation.
Diffstat (limited to 'source')
-rw-r--r--source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl7
1 files changed, 6 insertions, 1 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 091709ebdd1..5631957ca31 100644
--- a/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl
+++ b/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl
@@ -215,7 +215,12 @@ void CLOSURE_NAME(
l_vector.xyz = ld.l_position - worldPosition;
l_vector.w = length(l_vector.xyz);
- vec3 l_color_vis = ld.l_color * light_visibility(ld, worldPosition, viewPosition, viewNormal, l_vector);
+ float l_vis = light_visibility(ld, worldPosition, viewPosition, viewNormal, l_vector);
+
+ if (l_vis < 1e-8)
+ continue;
+
+ vec3 l_color_vis = ld.l_color * l_vis;
#ifdef CLOSURE_DIFFUSE
out_diff += l_color_vis * light_diffuse(ld, N, V, l_vector);