diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-07-21 15:20:30 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-07-21 15:20:30 +0300 |
commit | 9edb7e49d7e5e69385f3a0434c568c79fad88cd8 (patch) | |
tree | 86920a3a0ca2b7ad11ce5a9c2d79786d793a7bf0 /source/blender/editors/render/render_update.c | |
parent | 4e28d88ece20fabd773a0a2e7b3423227358b7c7 (diff) |
Depsgraph: Fix missing material update when changing links in node tree
Diffstat (limited to 'source/blender/editors/render/render_update.c')
-rw-r--r-- | source/blender/editors/render/render_update.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/source/blender/editors/render/render_update.c b/source/blender/editors/render/render_update.c index 07b445fa6eb..3a9d11be3fd 100644 --- a/source/blender/editors/render/render_update.c +++ b/source/blender/editors/render/render_update.c @@ -298,6 +298,13 @@ static void material_changed(Main *bmain, Material *ma) /* icons */ BKE_icon_changed(BKE_icon_id_ensure(&ma->id)); + /* glsl */ + if (ma->id.tag & LIB_TAG_ID_RECALC) { + if (!BLI_listbase_is_empty(&ma->gpumaterial)) { + GPU_material_free(&ma->gpumaterial); + } + } + /* find node materials using this */ for (parent = bmain->mat.first; parent; parent = parent->id.next) { if (parent->use_nodes && parent->nodetree && nodes_use_material(parent->nodetree, ma)) { @@ -474,6 +481,16 @@ static void world_changed(Main *UNUSED(bmain), World *wo) /* XXX temporary flag waiting for depsgraph proper tagging */ wo->update_flag = 1; + + /* glsl */ + if (wo->id.tag & LIB_TAG_ID_RECALC) { + if (!BLI_listbase_is_empty(&defmaterial.gpumaterial)) { + GPU_material_free(&defmaterial.gpumaterial); + } + if (!BLI_listbase_is_empty(&wo->gpumaterial)) { + GPU_material_free(&wo->gpumaterial); + } + } } static void image_changed(Main *bmain, Image *ima) |