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:
authorSergey Sharybin <sergey.vfx@gmail.com>2019-02-27 13:17:36 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2019-02-27 16:50:42 +0300
commit87066782e720257bef19450f0e3f7c739101b9b8 (patch)
tree40240cc52841fa80b3b33ff7bb0cb5ca513d7649 /source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc
parent05dc3d43caf5a5153a8bd1e69d5f77b0e019aa3d (diff)
Depsgraph: Make it easier to control which bases being pulled into the graph
Just de-duplicates some logic. Should be no functional changes.
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.cc15
1 files changed, 7 insertions, 8 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 411199fe9be..db1cfa6b83f 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
@@ -97,16 +97,15 @@ void DepsgraphNodeBuilder::build_view_layer(
* but object is expected to be an original one. Hence we go into some
* tricks here iterating over the view layer. */
int base_index = 0;
- const int base_flag = (graph_->mode == DAG_EVAL_VIEWPORT) ?
- BASE_ENABLED_VIEWPORT : BASE_ENABLED_RENDER;
LISTBASE_FOREACH (Base *, base, &view_layer->object_bases) {
/* object itself */
- const bool is_object_visible = (base->flag & base_flag);
- if (is_object_visible) {
- build_object(base_index,
- base->object,
- linked_state,
- is_object_visible);
+ if (needPullBaseIntoGraph(base)) {
+ /* NOTE: We consider object visible even if it's currently
+ * restricted by the base/restriction flags. Otherwise its drivers
+ * will never be evaluated.
+ *
+ * TODO(sergey): Need to go more granular on visibility checks. */
+ build_object(base_index, base->object, linked_state, true);
++base_index;
}
base->object->select_id = select_id++;