diff options
author | Jacques Lucke <jacques@blender.org> | 2021-02-17 14:04:45 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2021-02-17 14:06:10 +0300 |
commit | 9419452f859117aa17dda7d89810c83bbdcda288 (patch) | |
tree | aa7857846df27a0335446fe078c76b47287390d5 /intern/cycles/render/geometry.cpp | |
parent | 17dddc94171497c616eea8bcf47215ae118dd162 (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.cpp | 12 |
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) { |