From 6879d924eb043baec364dfd56fb9e82a3f2534a7 Mon Sep 17 00:00:00 2001 From: Omar Emara Date: Mon, 2 Dec 2024 18:52:44 +0200 Subject: [PATCH] Fix: Compositor: Unlinked group inputs are ignored The new CPU compositor ignores group inputs that are unlinked. This patch fixes that by considering all origin sockets in multi-function procedures, be it an input or an output. --- .../intern/multi_function_procedure_operation.cc | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/source/blender/compositor/realtime_compositor/intern/multi_function_procedure_operation.cc b/source/blender/compositor/realtime_compositor/intern/multi_function_procedure_operation.cc index 3b944b7dc8a..c1c7a3f93d8 100644 --- a/source/blender/compositor/realtime_compositor/intern/multi_function_procedure_operation.cc +++ b/source/blender/compositor/realtime_compositor/intern/multi_function_procedure_operation.cc @@ -172,14 +172,17 @@ Vector MultiFunctionProcedureOperation::get_input_variables(DNod continue; } - /* Get the output linked to the input. If it is null, that means the input is unlinked and we - * generate a constant variable for it. */ - const DOutputSocket output = get_output_linked_to_input(input); - if (!output) { - input_variables.append(this->get_constant_input_variable(input)); + /* The origin socket is an input, that means the input is unlinked and we generate a constant + * variable for it. */ + const DSocket origin = get_input_origin_socket(input); + if (origin->is_input()) { + input_variables.append(this->get_constant_input_variable(DInputSocket(origin))); continue; } + /* Otherwise, the origin socket is an output, which means it is linked. */ + const DOutputSocket output = DOutputSocket(origin); + /* If the origin node is part of the multi-function procedure operation, then the output has an * existing variable for it. */ if (compile_unit_.contains(output.node())) {