diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-08-23 17:17:06 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-08-23 17:40:35 +0300 |
commit | f97d61c4bd2a9ab3c1dd0ae4902778bc9703a716 (patch) | |
tree | 1d426512c88b369396cc6885523570606f57347f /source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc | |
parent | a9ecfc965349241b858b1b23d0a3d9b987600b5d (diff) |
Depsgraph: Bring back visibility checks based on collection restrict flags
The title says it all actually, the idea is to speedup the following case:
- Visible duplicator of a restricted collection (reported as T56512),
One of the questionable change is that none of the view layer bases is
ignored now. This ensures corresponding objects will have copy-on-write
component evaluated, making it possible to access those pointers. The
evaluation of those objects is skipped.
Reviewers: brecht
Differential Revision: https://developer.blender.org/D3641
Diffstat (limited to 'source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc')
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc index 3d7b2d6d232..409df45de27 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc @@ -75,7 +75,7 @@ void DepsgraphNodeBuilder::build_layer_collections(ListBase *lb) continue; } if ((lc->flag & LAYER_COLLECTION_EXCLUDE) == 0) { - build_collection(DEG_COLLECTION_OWNER_SCENE, lc->collection); + build_collection(lc->collection); } build_layer_collections(&lc->layer_collections); } @@ -108,10 +108,9 @@ void DepsgraphNodeBuilder::build_view_layer( BASE_ENABLED_VIEWPORT : BASE_ENABLED_RENDER; LISTBASE_FOREACH(Base *, base, &view_layer->object_bases) { /* object itself */ - if (base->flag & base_flag) { - build_object(base_index, base->object, linked_state); - base->object->select_color = select_color++; - } + const bool is_object_visible = (base->flag & base_flag); + build_object(base_index, base->object, linked_state, is_object_visible); + base->object->select_color = select_color++; ++base_index; } build_layer_collections(&view_layer->layer_collections); |