diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-08-17 14:04:18 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-08-17 14:04:26 +0300 |
commit | 8b79a150f8e170b3c015693751d657bc4000998e (patch) | |
tree | 2c66e5c6c91595ad28514b72b9d44b985ace1042 /source/blender/draw | |
parent | f031e8d3ac5598abcbe24922bad36e1e44c3c949 (diff) |
Workbench: Fix buggy shadow
Was caused by shadow bbox not being updated.
Diffstat (limited to 'source/blender/draw')
-rw-r--r-- | source/blender/draw/engines/workbench/solid_mode.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/source/blender/draw/engines/workbench/solid_mode.c b/source/blender/draw/engines/workbench/solid_mode.c index 5c64cebd981..e4bf47810b0 100644 --- a/source/blender/draw/engines/workbench/solid_mode.c +++ b/source/blender/draw/engines/workbench/solid_mode.c @@ -85,6 +85,17 @@ static void workbench_solid_view_update(void *vedata) workbench_taa_view_updated(data); } +static void workbench_solid_id_update(void *UNUSED(vedata), struct ID *id) +{ + if (GS(id->name) == ID_OB) { + WORKBENCH_ObjectData *oed = (WORKBENCH_ObjectData *)DRW_drawdata_get(id, &draw_engine_workbench_solid); + if (oed != NULL && oed->dd.recalc != 0) { + oed->shadow_bbox_dirty = (oed->dd.recalc & ID_RECALC_ALL) != 0; + oed->dd.recalc = 0; + } + } +} + static void workbench_render_to_image(void *vedata, RenderEngine *engine, RenderLayer *render_layer, const rcti *rect) { workbench_render(vedata, engine, render_layer, rect); @@ -104,6 +115,6 @@ DrawEngineType draw_engine_workbench_solid = { &workbench_solid_draw_background, &workbench_solid_draw_scene, &workbench_solid_view_update, - NULL, + &workbench_solid_id_update, &workbench_render_to_image, }; |