diff options
author | Campbell Barton <ideasman42@gmail.com> | 2016-03-21 08:06:04 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2016-03-21 08:06:04 +0300 |
commit | fb5c6333f9aa8f05b030262d321e0233a034ab8a (patch) | |
tree | 89bad1c1c31770ebc402c949de957e6f5808871a /source | |
parent | 72bf5d13e6e65b055326e840d68f8fd9e237c1df (diff) |
GPU: avoid redundant logic for non-spot lamps
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_draw.c | 6 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_material.c | 14 |
2 files changed, 14 insertions, 6 deletions
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index 1b6435f214e..4d7cc28ca3f 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 2624bf2865a..bf9fb4cb718 100644 --- a/source/blender/gpu/intern/gpu_material.c +++ b/source/blender/gpu/intern/gpu_material.c @@ -2193,12 +2193,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) |