[Bf-blender-cvs] [c70aa9042c4] cycles_procedural_api: tweak object update tagging a bit

Kévin Dietrich noreply at git.blender.org
Mon Nov 16 13:10:58 CET 2020


Commit: c70aa9042c4d6baf06c5d523d430a7b58405a8ee
Author: Kévin Dietrich
Date:   Tue Nov 10 18:15:39 2020 +0100
Branches: cycles_procedural_api
https://developer.blender.org/rBc70aa9042c4d6baf06c5d523d430a7b58405a8ee

tweak object update tagging a bit

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

M	intern/cycles/blender/blender_object.cpp
M	intern/cycles/render/object.cpp

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

diff --git a/intern/cycles/blender/blender_object.cpp b/intern/cycles/blender/blender_object.cpp
index 752eae077cb..ca813119c08 100644
--- a/intern/cycles/blender/blender_object.cpp
+++ b/intern/cycles/blender/blender_object.cpp
@@ -245,9 +245,6 @@ Object *BlenderSync::sync_object(BL::Depsgraph &b_depsgraph,
 
   /* holdout */
   object->set_use_holdout(use_holdout);
-  if (object->use_holdout_is_modified()) {
-    scene->object_manager->tag_update(scene, HOLDOUT_MODIFIED);
-  }
 
   object->set_visibility(visibility);
 
diff --git a/intern/cycles/render/object.cpp b/intern/cycles/render/object.cpp
index f81186a055b..6fa10c9b495 100644
--- a/intern/cycles/render/object.cpp
+++ b/intern/cycles/render/object.cpp
@@ -231,7 +231,14 @@ void Object::tag_update(Scene *scene)
   }
 
   scene->camera->need_flags_update = true;
-  scene->object_manager->tag_update(scene, OBJECT_MODIFIED);
+
+  UpdateFlags flag = OBJECT_MODIFIED;
+
+  if (use_holdout_is_modified()) {
+    flag |= HOLDOUT_MODIFIED;
+  }
+
+  scene->object_manager->tag_update(scene, flag);
 }
 
 bool Object::use_motion() const
@@ -563,9 +570,6 @@ void ObjectManager::device_update_object_transform(UpdateObjectTransformState *s
   kobject.shadow_terminator_offset = 1.0f / (1.0f - 0.5f * ob->shadow_terminator_offset);
 
   /* Object flag. */
-  if (ob->use_holdout) {
-    flag |= SD_OBJECT_HOLDOUT_MASK;
-  }
   state->object_flag[ob->index] = flag;
   state->object_volume_step[ob->index] = FLT_MAX;
 
@@ -791,6 +795,18 @@ void ObjectManager::device_update_flags(
       object_flag[object->index] &= ~SD_OBJECT_SHADOW_CATCHER;
     }
 
+    if (object->use_holdout) {
+      object_flag[object->index] |= SD_OBJECT_HOLDOUT_MASK;
+    }
+
+    if (object->geometry->transform_applied) {
+      object_flag[object->index] |= SD_OBJECT_TRANSFORM_APPLIED;
+
+      if (object->geometry->transform_negative_scaled) {
+        object_flag[object->index] |= SD_OBJECT_NEGATIVE_SCALE_APPLIED;
+      }
+    }
+
     if (bounds_valid) {
       foreach (Object *volume_object, volume_objects) {
         if (object == volume_object) {
@@ -930,10 +946,6 @@ void ObjectManager::apply_static_transforms(DeviceScene *dscene, Scene *scene, P
           if (progress.get_cancel())
             return;
         }
-
-        object_flag[i] |= SD_OBJECT_TRANSFORM_APPLIED;
-        if (geom->transform_negative_scaled)
-          object_flag[i] |= SD_OBJECT_NEGATIVE_SCALE_APPLIED;
       }
     }
 
@@ -943,6 +955,11 @@ void ObjectManager::apply_static_transforms(DeviceScene *dscene, Scene *scene, P
 
 void ObjectManager::tag_update(Scene *scene, UpdateFlags flag)
 {
+  /* todo:
+   * HOLDOUT_MODIFIED
+   * PARTICLE_MODIFIED
+   * GEOMETRY_MANAGER
+   */
   update_flags |= flag;
 
   /* avoid infinite loops if the geometry manager tagged us for an update */



More information about the Bf-blender-cvs mailing list