[Bf-blender-cvs] [45da7ce1779] master: Cycles: Followup fixes for node ownership refactor.
Stefan Werner
noreply at git.blender.org
Tue Sep 1 11:48:07 CEST 2020
Commit: 45da7ce177995e0847ba8bf415505b29e0e1413f
Author: Stefan Werner
Date: Tue Sep 1 11:45:22 2020 +0200
Branches: master
https://developer.blender.org/rB45da7ce177995e0847ba8bf415505b29e0e1413f
Cycles: Followup fixes for node ownership refactor.
There were some places where nodes still would end up without owners.
See D8540 and 429afe0c626a
===================================================================
M intern/cycles/graph/node.cpp
M intern/cycles/render/graph.cpp
===================================================================
diff --git a/intern/cycles/graph/node.cpp b/intern/cycles/graph/node.cpp
index 14e66959f4f..37387053d97 100644
--- a/intern/cycles/graph/node.cpp
+++ b/intern/cycles/graph/node.cpp
@@ -692,7 +692,8 @@ const NodeOwner *Node::get_owner() const
void Node::set_owner(const NodeOwner *owner_)
{
- owner_ = owner;
+ assert(owner_);
+ owner = owner_;
}
CCL_NAMESPACE_END
diff --git a/intern/cycles/render/graph.cpp b/intern/cycles/render/graph.cpp
index 684fe6a82c4..485d6167ee3 100644
--- a/intern/cycles/render/graph.cpp
+++ b/intern/cycles/render/graph.cpp
@@ -585,7 +585,7 @@ void ShaderGraph::constant_fold(Scene *scene)
* that happens to ensure there is still a valid graph for displacement.
*/
if (has_displacement && !output()->input("Displacement")->link) {
- ColorNode *value = (ColorNode *)add(new ColorNode());
+ ColorNode *value = (ColorNode *)add(create_node<ColorNode>());
value->value = output()->displacement;
connect(value->output("Color"), output()->input("Displacement"));
@@ -999,10 +999,10 @@ void ShaderGraph::bump_from_displacement(bool use_object_space)
* output, so it can finally set the shader normal, note we are only doing
* this for bump from displacement, this will be the only bump allowed to
* overwrite the shader normal */
- ShaderNode *set_normal = add(new SetNormalNode());
+ ShaderNode *set_normal = add(create_node<SetNormalNode>());
/* add bump node and connect copied graphs to it */
- BumpNode *bump = (BumpNode *)add(new BumpNode());
+ BumpNode *bump = (BumpNode *)add(create_node<BumpNode>());
bump->use_object_space = use_object_space;
bump->distance = 1.0f;
@@ -1012,15 +1012,15 @@ void ShaderGraph::bump_from_displacement(bool use_object_space)
ShaderOutput *out_dy = nodes_dy[out->parent]->output(out->name());
/* convert displacement vector to height */
- VectorMathNode *dot_center = (VectorMathNode *)add(new VectorMathNode());
- VectorMathNode *dot_dx = (VectorMathNode *)add(new VectorMathNode());
- VectorMathNode *dot_dy = (VectorMathNode *)add(new VectorMathNode());
+ VectorMathNode *dot_center = (VectorMathNode *)add(create_node<VectorMathNode>());
+ VectorMathNode *dot_dx = (VectorMathNode *)add(create_node<VectorMathNode>());
+ VectorMathNode *dot_dy = (VectorMathNode *)add(create_node<VectorMathNode>());
dot_center->type = NODE_VECTOR_MATH_DOT_PRODUCT;
dot_dx->type = NODE_VECTOR_MATH_DOT_PRODUCT;
dot_dy->type = NODE_VECTOR_MATH_DOT_PRODUCT;
- GeometryNode *geom = (GeometryNode *)add(new GeometryNode());
+ GeometryNode *geom = (GeometryNode *)add(create_node<GeometryNode>());
connect(geom->output("Normal"), dot_center->input("Vector2"));
connect(geom->output("Normal"), dot_dx->input("Vector2"));
connect(geom->output("Normal"), dot_dy->input("Vector2"));
More information about the Bf-blender-cvs
mailing list