Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacques Lucke <jacques@blender.org>2021-02-17 14:04:45 +0300
committerJacques Lucke <jacques@blender.org>2021-02-17 14:06:10 +0300
commit9419452f859117aa17dda7d89810c83bbdcda288 (patch)
treeaa7857846df27a0335446fe078c76b47287390d5 /intern/cycles/render/geometry.cpp
parent17dddc94171497c616eea8bcf47215ae118dd162 (diff)
Cycles: detect when attributes have changed
This patch has originally been written by Kévin Dietrich, thanks! It is part of D10210. As Brecht noted in D10210, this might not handle all cases yet. I better solution should come soonish.
Diffstat (limited to 'intern/cycles/render/geometry.cpp')
-rw-r--r--intern/cycles/render/geometry.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/intern/cycles/render/geometry.cpp b/intern/cycles/render/geometry.cpp
index f79b1689c14..575042360aa 100644
--- a/intern/cycles/render/geometry.cpp
+++ b/intern/cycles/render/geometry.cpp
@@ -1440,6 +1440,18 @@ void GeometryManager::device_update_preprocess(Device *device, Scene *scene, Pro
foreach (Geometry *geom, scene->geometry) {
geom->has_volume = false;
+ if (geom->attributes.modified) {
+ device_update_flags |= ATTRS_NEED_REALLOC;
+ }
+
+ if (geom->is_mesh()) {
+ Mesh *mesh = static_cast<Mesh *>(geom);
+
+ if (mesh->subd_attributes.modified) {
+ device_update_flags |= ATTRS_NEED_REALLOC;
+ }
+ }
+
foreach (Node *node, geom->get_used_shaders()) {
Shader *shader = static_cast<Shader *>(node);
if (shader->has_volume) {