From 4f386999ea92ad0f22bffa151581cf5c615c660b Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 26 Jun 2019 14:28:26 +0200 Subject: Fix T66111: animated lights not updating in Cycles --- intern/cycles/blender/blender_object.cpp | 13 ++++++++----- intern/cycles/blender/blender_shader.cpp | 3 --- intern/cycles/blender/blender_sync.cpp | 4 ++++ 3 files changed, 12 insertions(+), 8 deletions(-) (limited to 'intern') diff --git a/intern/cycles/blender/blender_object.cpp b/intern/cycles/blender/blender_object.cpp index c07e896ab33..17a0dbb43e7 100644 --- a/intern/cycles/blender/blender_object.cpp +++ b/intern/cycles/blender/blender_object.cpp @@ -116,15 +116,18 @@ void BlenderSync::sync_light(BL::Object &b_parent, /* test if we need to sync */ Light *light; ObjectKey key(b_parent, persistent_id, b_ob_instance); + BL::Light b_light(b_ob.data()); + /* Update if either object or light data changed. */ if (!light_map.sync(&light, b_ob, b_parent, key)) { - if (light->is_portal) - *use_portal = true; - return; + Shader *shader; + if (!shader_map.sync(&shader, b_light)) { + if (light->is_portal) + *use_portal = true; + return; + } } - BL::Light b_light(b_ob.data()); - /* type */ switch (b_light.type()) { case BL::Light::type_POINT: { diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp index 13097f6bf8e..f952b3025f0 100644 --- a/intern/cycles/blender/blender_shader.cpp +++ b/intern/cycles/blender/blender_shader.cpp @@ -1437,9 +1437,6 @@ void BlenderSync::sync_shaders(BL::Depsgraph &b_depsgraph) sync_world(b_depsgraph, auto_refresh_update); sync_lights(b_depsgraph, auto_refresh_update); sync_materials(b_depsgraph, auto_refresh_update); - - /* false = don't delete unused shaders, not supported */ - shader_map.post_sync(false); } CCL_NAMESPACE_END diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp index 8d93d517d4e..95ecb4200c2 100644 --- a/intern/cycles/blender/blender_sync.cpp +++ b/intern/cycles/blender/blender_sync.cpp @@ -216,6 +216,10 @@ void BlenderSync::sync_data(BL::RenderSettings &b_render, mesh_synced.clear(); + /* Shader sync done at the end, since object sync uses it. + * false = don't delete unused shaders, not supported. */ + shader_map.post_sync(false); + free_data_after_sync(b_depsgraph); } -- cgit v1.2.3