diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-08-24 23:02:41 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-08-24 23:02:41 +0300 |
commit | e8a0478c63c5f611d086920976815f7d78e915e3 (patch) | |
tree | 546ec9cbc04d7c2e4458a5827592b76ee7abe290 /source | |
parent | 2fb639deedbdb0b0a821eb04ef69a7dd0080ea94 (diff) |
Fix T45833: Light group instances are not rendered in the 3D viewport
The issue was introduced in c9ac51e by trying to use original's objects layers
for light visibility check instead of using duplicator's layers.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_draw.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index 9fb7bce9372..5327499db50 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -2502,8 +2502,10 @@ typedef struct View3DShadow { GPULamp *lamp; } View3DShadow; -static void gpu_render_lamp_update(Scene *scene, View3D *v3d, Object *ob, Object *par, - float obmat[4][4], ListBase *shadows, SceneRenderLayer *srl) +static void gpu_render_lamp_update(Scene *scene, View3D *v3d, + Object *ob, Object *par, + float obmat[4][4], uint lay, + ListBase *shadows, SceneRenderLayer *srl) { GPULamp *lamp; Lamp *la = (Lamp *)ob->data; @@ -2513,10 +2515,10 @@ static void gpu_render_lamp_update(Scene *scene, View3D *v3d, Object *ob, Object lamp = GPU_lamp_from_blender(scene, ob, par); if (lamp) { - GPU_lamp_update(lamp, ob->lay, (ob->restrictflag & OB_RESTRICT_RENDER), obmat); + GPU_lamp_update(lamp, lay, (ob->restrictflag & OB_RESTRICT_RENDER), obmat); GPU_lamp_update_colors(lamp, la->r, la->g, la->b, la->energy); - layers = ob->lay & v3d->lay; + layers = lay & v3d->lay; if (srl) layers &= srl->lay; @@ -2545,7 +2547,7 @@ static void gpu_update_lamps_shadows_world(Scene *scene, View3D *v3d) ob = base->object; if (ob->type == OB_LAMP) - gpu_render_lamp_update(scene, v3d, ob, NULL, ob->obmat, &shadows, srl); + gpu_render_lamp_update(scene, v3d, ob, NULL, ob->obmat, ob->lay, &shadows, srl); if (ob->transflag & OB_DUPLI) { DupliObject *dob; @@ -2553,7 +2555,7 @@ static void gpu_update_lamps_shadows_world(Scene *scene, View3D *v3d) for (dob = lb->first; dob; dob = dob->next) if (dob->ob->type == OB_LAMP) - gpu_render_lamp_update(scene, v3d, dob->ob, ob, dob->mat, &shadows, srl); + gpu_render_lamp_update(scene, v3d, dob->ob, ob, dob->mat, ob->lay, &shadows, srl); free_object_duplilist(lb); } |