From f7dfd7a09fef9c91c9b85e7b8c78eacd4cd261b0 Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Mon, 27 Feb 2023 11:08:55 +0100 Subject: [PATCH] Compositor: Compositor Output should Follow Active Node. When using multiple compositor output nodes, compositing would fail ,showing a completly black output as it doesn't respect the active node. This patch will equalize the implementation with the viewer nodes. Patch created by @OmarEmaraDev Fixes: #86836 --- source/blender/compositor/nodes/COM_CompositorNode.cc | 3 ++- source/blender/compositor/nodes/COM_SplitViewerNode.cc | 4 ++-- source/blender/compositor/nodes/COM_ViewerNode.cc | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/source/blender/compositor/nodes/COM_CompositorNode.cc b/source/blender/compositor/nodes/COM_CompositorNode.cc index 444dcbd5c6c..447386e4019 100644 --- a/source/blender/compositor/nodes/COM_CompositorNode.cc +++ b/source/blender/compositor/nodes/COM_CompositorNode.cc @@ -15,7 +15,8 @@ void CompositorNode::convert_to_operations(NodeConverter &converter, const CompositorContext &context) const { const bNode *editor_node = this->get_bnode(); - bool is_active = (editor_node->flag & NODE_DO_OUTPUT_RECALC) || context.is_rendering(); + bool is_active = ((editor_node->flag & NODE_DO_OUTPUT_RECALC) || context.is_rendering()) && + (editor_node->flag & NODE_DO_OUTPUT); bool ignore_alpha = (editor_node->custom2 & CMP_NODE_OUTPUT_IGNORE_ALPHA) != 0; NodeInput *image_socket = this->get_input_socket(0); diff --git a/source/blender/compositor/nodes/COM_SplitViewerNode.cc b/source/blender/compositor/nodes/COM_SplitViewerNode.cc index 0f21bd6e50d..2921405585b 100644 --- a/source/blender/compositor/nodes/COM_SplitViewerNode.cc +++ b/source/blender/compositor/nodes/COM_SplitViewerNode.cc @@ -17,7 +17,7 @@ void SplitViewerNode::convert_to_operations(NodeConverter &converter, const CompositorContext &context) const { const bNode *editor_node = this->get_bnode(); - bool do_output = (editor_node->flag & NODE_DO_OUTPUT_RECALC || context.is_rendering()) && + bool is_active = (editor_node->flag & NODE_DO_OUTPUT_RECALC || context.is_rendering()) && (editor_node->flag & NODE_DO_OUTPUT); NodeInput *image1Socket = this->get_input_socket(0); @@ -54,7 +54,7 @@ void SplitViewerNode::convert_to_operations(NodeConverter &converter, converter.add_preview(split_viewer_operation->get_output_socket()); - if (do_output) { + if (is_active) { converter.register_viewer(viewer_operation); } } diff --git a/source/blender/compositor/nodes/COM_ViewerNode.cc b/source/blender/compositor/nodes/COM_ViewerNode.cc index 47056bcd8c4..96634a44dd8 100644 --- a/source/blender/compositor/nodes/COM_ViewerNode.cc +++ b/source/blender/compositor/nodes/COM_ViewerNode.cc @@ -16,7 +16,7 @@ void ViewerNode::convert_to_operations(NodeConverter &converter, const CompositorContext &context) const { const bNode *editor_node = this->get_bnode(); - bool do_output = (editor_node->flag & NODE_DO_OUTPUT_RECALC || context.is_rendering()) && + bool is_active = (editor_node->flag & NODE_DO_OUTPUT_RECALC || context.is_rendering()) && (editor_node->flag & NODE_DO_OUTPUT); bool ignore_alpha = (editor_node->custom2 & CMP_NODE_OUTPUT_IGNORE_ALPHA) != 0; @@ -61,7 +61,7 @@ void ViewerNode::convert_to_operations(NodeConverter &converter, converter.add_node_input_preview(image_socket); - if (do_output) { + if (is_active) { converter.register_viewer(viewer_operation); } } -- 2.30.2