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())) {