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
path: root/source
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2019-05-24 11:58:09 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2019-05-24 11:58:09 +0300
commitba58b9d2af5bb49ea9a3511fae18ba4d5780105b (patch)
treee6112b503dea9e8f343a66cfa7dd1c2236d18890 /source
parentdb8aa7b851207294ffc943dc201e4f2955ed01dd (diff)
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)
Diffstat (limited to 'source')
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_nodes_scene.cc1
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_relations.cc2
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_relations_scene.cc1
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_relations_view_layer.cc5
4 files changed, 8 insertions, 1 deletions
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);