[Bf-blender-cvs] [26b08d47fda] cycles_procedural_api: fix regression regarding missing BVH update

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


Commit: 26b08d47fda25069930a527aeb7356896ebca2dc
Author: Kévin Dietrich
Date:   Wed Nov 11 08:41:36 2020 +0100
Branches: cycles_procedural_api
https://developer.blender.org/rB26b08d47fda25069930a527aeb7356896ebca2dc

fix regression regarding missing BVH update

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

M	intern/cycles/render/geometry.h
M	intern/cycles/render/object.cpp

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

diff --git a/intern/cycles/render/geometry.h b/intern/cycles/render/geometry.h
index 07f7f144ad6..4d2684606f8 100644
--- a/intern/cycles/render/geometry.h
+++ b/intern/cycles/render/geometry.h
@@ -153,6 +153,11 @@ class Geometry : public Node {
     return geometry_type == HAIR;
   }
 
+  bool is_volume() const
+  {
+    return geometry_type == VOLUME;
+  }
+
   /* Updates */
   void tag_update(Scene *scene, bool rebuild);
 };
diff --git a/intern/cycles/render/object.cpp b/intern/cycles/render/object.cpp
index 6fa10c9b495..e013114c42e 100644
--- a/intern/cycles/render/object.cpp
+++ b/intern/cycles/render/object.cpp
@@ -238,6 +238,20 @@ void Object::tag_update(Scene *scene)
     flag |= HOLDOUT_MODIFIED;
   }
 
+  if (tfm_is_modified()) {
+    /* tag the geometry as modified so the BVH is updated, but do not tag everything as modified */
+    if (geometry) {
+      if (geometry->is_mesh() || geometry->is_volume()) {
+        Mesh *mesh = static_cast<Mesh *>(geometry);
+        mesh->tag_verts_modified();
+      }
+      else if (geometry->is_hair()) {
+        Hair *hair = static_cast<Hair *>(geometry);
+        hair->tag_curve_keys_modified();
+      }
+    }
+  }
+
   scene->object_manager->tag_update(scene, flag);
 }



More information about the Bf-blender-cvs mailing list