GPU: avoid redundant logic for non-spot lamps

This commit is contained in:
Campbell Barton 2016-03-21 16:06:04 +11:00
parent 72bf5d13e6
commit fb5c6333f9
2 changed files with 14 additions and 6 deletions

View File

@ -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);

View File

@ -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)