[Bf-blender-cvs] [4f386999ea9] master: Fix T66111: animated lights not updating in Cycles

Brecht Van Lommel noreply at git.blender.org
Wed Jun 26 15:07:05 CEST 2019


Commit: 4f386999ea92ad0f22bffa151581cf5c615c660b
Author: Brecht Van Lommel
Date:   Wed Jun 26 14:28:26 2019 +0200
Branches: master
https://developer.blender.org/rB4f386999ea92ad0f22bffa151581cf5c615c660b

Fix T66111: animated lights not updating in Cycles

===================================================================

M	intern/cycles/blender/blender_object.cpp
M	intern/cycles/blender/blender_shader.cpp
M	intern/cycles/blender/blender_sync.cpp

===================================================================

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);
 }



More information about the Bf-blender-cvs mailing list