[Bf-blender-cvs] [ba58b9d2af5] master: Depsgraph: Fixes for render pipeline building

Sergey Sharybin noreply at git.blender.org
Fri May 24 11:00:17 CEST 2019


Commit: ba58b9d2af5bb49ea9a3511fae18ba4d5780105b
Author: Sergey Sharybin
Date:   Fri May 24 10:58:09 2019 +0200
Branches: master
https://developer.blender.org/rBba58b9d2af5bb49ea9a3511fae18ba4d5780105b

Depsgraph: Fixes for render pipeline building

- Need to assign current scene in the builder: it is used to
  route relations for object's customdata.

- Tweak relation from scene to object for the customdaat: this
  didn't work before because the render pipeline scene has no
	view layer component.

Fixes T65044: Crash when Rendering (F12)

===================================================================

M	source/blender/depsgraph/intern/builder/deg_builder_nodes_scene.cc
M	source/blender/depsgraph/intern/builder/deg_builder_relations.cc
M	source/blender/depsgraph/intern/builder/deg_builder_relations_scene.cc
M	source/blender/depsgraph/intern/builder/deg_builder_relations_view_layer.cc

===================================================================

diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes_scene.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes_scene.cc
index 4d2fe48e974..b092799e692 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes_scene.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes_scene.cc
@@ -29,6 +29,7 @@ namespace DEG {
 
 void DepsgraphNodeBuilder::build_scene_render(Scene *scene)
 {
+  scene_ = scene;
   const bool build_compositor = (scene->r.scemode & R_DOCOMP);
   IDNode *id_node = add_id_node(&scene->id);
   id_node->linked_state = DEG_ID_LINKED_DIRECTLY;
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index dcdd4e5cefb..54d5223497e 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@ -1858,7 +1858,7 @@ void DepsgraphRelationBuilder::build_object_data_geometry(Object *object)
   /* Special case: modifiers evaluation queries scene for various things like
    * data mask to be used. We add relation here to ensure object is never
    * evaluated prior to Scene's CoW is ready. */
-  OperationKey scene_key(&scene_->id, NodeType::LAYER_COLLECTIONS, OperationCode::VIEW_LAYER_EVAL);
+  OperationKey scene_key(&scene_->id, NodeType::PARAMETERS, OperationCode::SCENE_EVAL);
   Relation *rel = add_relation(scene_key, obdata_ubereval_key, "CoW Relation");
   rel->flag |= RELATION_FLAG_NO_FLUSH;
   /* Modifiers */
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations_scene.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations_scene.cc
index beada644f71..26bb1bd3d2a 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations_scene.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations_scene.cc
@@ -29,6 +29,7 @@ namespace DEG {
 
 void DepsgraphRelationBuilder::build_scene_render(Scene *scene)
 {
+  scene_ = scene;
   const bool build_compositor = (scene->r.scemode & R_DOCOMP);
   build_scene_parameters(scene);
   if (build_compositor) {
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations_view_layer.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations_view_layer.cc
index 8f705fcaae5..b832473bde9 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations_view_layer.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations_view_layer.cc
@@ -127,6 +127,11 @@ void DepsgraphRelationBuilder::build_view_layer(Scene *scene, ViewLayer *view_la
   /* Scene parameters, compositor and such. */
   build_scene_compositor(scene);
   build_scene_parameters(scene);
+  /* Make final scene evaluation dependent on view layer evaluation. */
+  OperationKey scene_view_layer_key(
+      &scene->id, NodeType::LAYER_COLLECTIONS, OperationCode::VIEW_LAYER_EVAL);
+  OperationKey scene_eval_key(&scene->id, NodeType::PARAMETERS, OperationCode::SCENE_EVAL);
+  add_relation(scene_view_layer_key, scene_eval_key, "View Layer -> Scene Eval");
   /* Build all set scenes. */
   if (scene->set != NULL) {
     ViewLayer *set_view_layer = BKE_view_layer_default_render(scene->set);



More information about the Bf-blender-cvs mailing list