[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