Fix #124566: Compositor Normal node does not update

Changes to the compositor Normal node does not propagate and the
compositor result is not updated. That's because the node is a special
case since its output socket value is used as its input property, which
is not tracked by the node update code.

Apparently, a similar node exists in shader nodes, and a workaround is
implemented for that node in the node updater, so we just need to extend
that check to include the compositor node as well.

Pull Request: https://projects.blender.org/blender/blender/pulls/133803
This commit is contained in:
Omar Emara
2025-01-30 11:45:59 +01:00
committed by Omar Emara
parent a1d31ca412
commit 7f4cf5a949

View File

@@ -1547,7 +1547,9 @@ 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 (node.is_type("ShaderNodeNormal") && socket.index() == 1) {
if ((node.is_type("ShaderNodeNormal") || node.is_type("CompositorNodeNormal")) &&
socket.index() == 1)
{
BLI_assert(STREQ(socket.name, "Dot"));
const bNodeSocket &normal_output = node.output_socket(0);
BLI_assert(STREQ(normal_output.name, "Normal"));