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:
authorJacques Lucke <jacques@blender.org>2022-02-14 11:09:37 +0300
committerJacques Lucke <jacques@blender.org>2022-02-14 11:09:37 +0300
commit08882ddfc2ba8aced32c97275a72234223249c43 (patch)
treeeff1879d52f6bf7f517fd9321eef2b018e9e408f /source/blender/blenkernel/intern/node_tree_update.cc
parent31be5ce8b94183e4f248cd379b4862028bed74bd (diff)
parent33dde170cecf04b97597e02281e28bd98bb26b3f (diff)
Merge branch 'blender-v3.1-release'
Diffstat (limited to 'source/blender/blenkernel/intern/node_tree_update.cc')
-rw-r--r--source/blender/blenkernel/intern/node_tree_update.cc17
1 files changed, 15 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/node_tree_update.cc b/source/blender/blenkernel/intern/node_tree_update.cc
index e14f9f79660..b1575ae833f 100644
--- a/source/blender/blenkernel/intern/node_tree_update.cc
+++ b/source/blender/blenkernel/intern/node_tree_update.cc
@@ -1468,7 +1468,8 @@ class NodeTreeMainUpdater {
while (!sockets_to_check.is_empty()) {
const SocketRef &in_out_socket = *sockets_to_check.pop();
- const bNode &bnode = *in_out_socket.node().bnode();
+ const NodeRef &node = in_out_socket.node();
+ const bNode &bnode = *node.bnode();
const bNodeSocket &bsocket = *in_out_socket.bsocket();
if (bsocket.changed_flag != NTREE_CHANGED_NOTHING) {
return true;
@@ -1493,7 +1494,7 @@ class NodeTreeMainUpdater {
}
else {
const OutputSocketRef &socket = in_out_socket.as_output();
- for (const InputSocketRef *input_socket : socket.node().inputs()) {
+ for (const InputSocketRef *input_socket : node.inputs()) {
if (input_socket->is_available()) {
bool &pushed = pushed_by_socket_id[input_socket->id()];
if (!pushed) {
@@ -1502,6 +1503,18 @@ class NodeTreeMainUpdater {
}
}
}
+ /* The Normal node has a special case, because the value stored in the first output socket
+ * is used as input in the node. */
+ if (bnode.type == SH_NODE_NORMAL && socket.index() == 1) {
+ BLI_assert(socket.name() == "Dot");
+ const OutputSocketRef &normal_output = node.output(0);
+ BLI_assert(normal_output.name() == "Normal");
+ bool &pushed = pushed_by_socket_id[normal_output.id()];
+ if (!pushed) {
+ sockets_to_check.push(&normal_output);
+ pushed = true;
+ }
+ }
}
}
return false;