[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