diff options
Diffstat (limited to 'intern/cycles/render/object.cpp')
-rw-r--r-- | intern/cycles/render/object.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/intern/cycles/render/object.cpp b/intern/cycles/render/object.cpp index 52f63685aeb..f65f8bc6e90 100644 --- a/intern/cycles/render/object.cpp +++ b/intern/cycles/render/object.cpp @@ -153,10 +153,6 @@ void Object::update_motion() void Object::compute_bounds(bool motion_blur) { - if (!is_modified() && !geometry->is_modified()) { - return; - } - BoundBox mbounds = geometry->bounds; if (motion_blur && use_motion()) { @@ -224,6 +220,10 @@ void Object::tag_update(Scene *scene) flag |= ObjectManager::TRANSFORM_MODIFIED; } + if (visibility_is_modified()) { + flag |= ObjectManager::VISIBILITY_MODIFIED; + } + foreach (Node *node, geometry->get_used_shaders()) { Shader *shader = static_cast<Shader *>(node); if (shader->get_use_mis() && shader->has_surface_emission) @@ -918,6 +918,10 @@ void ObjectManager::tag_update(Scene *scene, uint32_t flag) geometry_flag |= GeometryManager::TRANSFORM_MODIFIED; } + if ((flag & VISIBILITY_MODIFIED) != 0) { + geometry_flag |= GeometryManager::VISIBILITY_MODIFIED; + } + scene->geometry_manager->tag_update(scene, geometry_flag); } |