Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2018-08-17 14:04:18 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-08-17 14:04:26 +0300
commit8b79a150f8e170b3c015693751d657bc4000998e (patch)
tree2c66e5c6c91595ad28514b72b9d44b985ace1042 /source/blender/draw/engines/workbench/solid_mode.c
parentf031e8d3ac5598abcbe24922bad36e1e44c3c949 (diff)
Workbench: Fix buggy shadow
Was caused by shadow bbox not being updated.
Diffstat (limited to 'source/blender/draw/engines/workbench/solid_mode.c')
-rw-r--r--source/blender/draw/engines/workbench/solid_mode.c13
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,
};