Commit: f036e1875f3dc4caa550078acdffb077f7f082f6
Author: Campbell Barton
Date:   Mon Mar 21 16:06:04 2016 +1100
Branches: blender-v2.77-release
https://developer.blender.org/rBf036e1875f3dc4caa550078acdffb077f7f082f6

GPU: avoid redundant logic for non-spot lamps

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

M       source/blender/editors/space_view3d/view3d_draw.c
M       source/blender/gpu/intern/gpu_material.c

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

diff --git a/source/blender/editors/space_view3d/view3d_draw.c 
b/source/blender/editors/space_view3d/view3d_draw.c
index 087c533..d81ef17 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -2508,7 +2508,11 @@ static void gpu_render_lamp_update(Scene *scene, View3D 
*v3d,
                if (srl)
                        layers &= srl->lay;
 
-               if (layers && GPU_lamp_override_visible(lamp, srl, NULL) && 
GPU_lamp_has_shadow_buffer(lamp)) {
+               if (layers &&
+                   GPU_lamp_has_shadow_buffer(lamp) &&
+                   /* keep last, may do string lookup */
+                   GPU_lamp_override_visible(lamp, srl, NULL))
+               {
                        shadow = MEM_callocN(sizeof(View3DShadow), 
"View3DShadow");
                        shadow->lamp = lamp;
                        BLI_addtail(shadows, shadow);
diff --git a/source/blender/gpu/intern/gpu_material.c 
b/source/blender/gpu/intern/gpu_material.c
index fcace47..7437e2d 100644
--- a/source/blender/gpu/intern/gpu_material.c
+++ b/source/blender/gpu/intern/gpu_material.c
@@ -2186,12 +2186,16 @@ void GPU_lamp_update(GPULamp *lamp, int lay, int hide, 
float obmat[4][4])
        copy_m4_m4(lamp->obmat, mat);
        invert_m4_m4(lamp->imat, mat);
 
-       /* update spotlamp scale on X and Y axis */
-       lamp->spotvec[0] = obmat_scale[0] / obmat_scale[2];
-       lamp->spotvec[1] = obmat_scale[1] / obmat_scale[2];
+       if (lamp->type == LA_SPOT) {
+               /* update spotlamp scale on X and Y axis */
+               lamp->spotvec[0] = obmat_scale[0] / obmat_scale[2];
+               lamp->spotvec[1] = obmat_scale[1] / obmat_scale[2];
+       }
 
-       /* makeshadowbuf */
-       gpu_lamp_calc_winmat(lamp);
+       if (GPU_lamp_has_shadow_buffer(lamp)) {
+               /* makeshadowbuf */
+               gpu_lamp_calc_winmat(lamp);
+       }
 }
 
 void GPU_lamp_update_colors(GPULamp *lamp, float r, float g, float b, float 
energy)

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to