Changeset View
Changeset View
Standalone View
Standalone View
source/blender/functions/intern/multi_function_network_evaluation.cc
| Show First 20 Lines • Show All 160 Lines • ▼ Show 20 Lines | void MFNetworkEvaluator::call(IndexMask mask, MFParams params, MFContext context) const | ||||
| this->copy_outputs_to_storage(params, storage, outputs_to_initialize_in_the_end); | this->copy_outputs_to_storage(params, storage, outputs_to_initialize_in_the_end); | ||||
| this->evaluate_network_to_compute_outputs(context, storage); | this->evaluate_network_to_compute_outputs(context, storage); | ||||
| this->initialize_remaining_outputs(params, storage, outputs_to_initialize_in_the_end); | this->initialize_remaining_outputs(params, storage, outputs_to_initialize_in_the_end); | ||||
| } | } | ||||
| BLI_NOINLINE void MFNetworkEvaluator::copy_inputs_to_storage(MFParams params, | BLI_NOINLINE void MFNetworkEvaluator::copy_inputs_to_storage(MFParams params, | ||||
| Storage &storage) const | Storage &storage) const | ||||
| { | { | ||||
| for (int input_index : inputs_.index_range()) { | for (int input_index : iter_indices(inputs_)) { | ||||
| int param_index = input_index + 0; | int param_index = input_index + 0; | ||||
| const MFOutputSocket &socket = *inputs_[input_index]; | const MFOutputSocket &socket = *inputs_[input_index]; | ||||
| switch (socket.data_type().category()) { | switch (socket.data_type().category()) { | ||||
| case MFDataType::Single: { | case MFDataType::Single: { | ||||
| const GVArray &input_list = params.readonly_single_input(param_index); | const GVArray &input_list = params.readonly_single_input(param_index); | ||||
| storage.add_single_input_from_caller(socket, input_list); | storage.add_single_input_from_caller(socket, input_list); | ||||
| break; | break; | ||||
| } | } | ||||
| case MFDataType::Vector: { | case MFDataType::Vector: { | ||||
| const GVVectorArray &input_list_list = params.readonly_vector_input(param_index); | const GVVectorArray &input_list_list = params.readonly_vector_input(param_index); | ||||
| storage.add_vector_input_from_caller(socket, input_list_list); | storage.add_vector_input_from_caller(socket, input_list_list); | ||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| BLI_NOINLINE void MFNetworkEvaluator::copy_outputs_to_storage( | BLI_NOINLINE void MFNetworkEvaluator::copy_outputs_to_storage( | ||||
| MFParams params, | MFParams params, | ||||
| Storage &storage, | Storage &storage, | ||||
| Vector<const MFInputSocket *> &outputs_to_initialize_in_the_end) const | Vector<const MFInputSocket *> &outputs_to_initialize_in_the_end) const | ||||
| { | { | ||||
| for (int output_index : outputs_.index_range()) { | for (int output_index : iter_indices(outputs_)) { | ||||
| int param_index = output_index + inputs_.size(); | int param_index = output_index + inputs_.size(); | ||||
| const MFInputSocket &socket = *outputs_[output_index]; | const MFInputSocket &socket = *outputs_[output_index]; | ||||
| const MFOutputSocket &origin = *socket.origin(); | const MFOutputSocket &origin = *socket.origin(); | ||||
| if (origin.node().is_dummy()) { | if (origin.node().is_dummy()) { | ||||
| BLI_assert(inputs_.contains(&origin)); | BLI_assert(inputs_.contains(&origin)); | ||||
| /* Don't overwrite input buffers. */ | /* Don't overwrite input buffers. */ | ||||
| outputs_to_initialize_in_the_end.append(&socket); | outputs_to_initialize_in_the_end.append(&socket); | ||||
| ▲ Show 20 Lines • Show All 883 Lines • Show Last 20 Lines | |||||