|
Blender V4.5
|
Classes | |
| struct | MaterializeArgInfo |
| class | CustomMF |
Enumerations | |
| enum class | MaterializeArgMode { Unknown , Single , Span , Materialized } |
Functions | |
| template<typename MaskT, typename... Args, typename... ParamTags, size_t... I, typename ElementFn> | |
| void | execute_array (TypeSequence< ParamTags... >, std::index_sequence< I... >, ElementFn element_fn, MaskT mask, Args &&__restrict... args) |
| template<typename... ParamTags, typename ElementFn, typename... Chunks> | |
| void | execute_materialized_impl (TypeSequence< ParamTags... >, const ElementFn element_fn, const int64_t size, Chunks &&__restrict... chunks) |
| template<typename... ParamTags, size_t... I, typename ElementFn, typename... LoadedParams> | |
| void | execute_materialized (TypeSequence< ParamTags... >, std::index_sequence< I... >, const ElementFn element_fn, const IndexMaskSegment mask, const std::tuple< LoadedParams... > &loaded_params) |
| template<typename ElementFn, typename ExecPreset, typename... ParamTags, size_t... I> | |
| void | execute_element_fn_as_multi_function (const ElementFn element_fn, const ExecPreset exec_preset, const IndexMask &mask, Params params, TypeSequence< ParamTags... >, std::index_sequence< I... >) |
| template<typename ElementFn, typename ExecPreset, typename... ParamTags> | |
| auto | build_multi_function_call_from_element_fn (const ElementFn element_fn, const ExecPreset exec_preset, TypeSequence< ParamTags... >) |
| template<typename Out, typename... In, typename ElementFn, typename ExecPreset> | |
| auto | build_multi_function_with_n_inputs_one_output (const char *name, const ElementFn element_fn, const ExecPreset exec_preset, TypeSequence< In... >) |
| template<typename Out1, typename Out2, typename... In, typename ElementFn, typename ExecPreset> | |
| auto | build_multi_function_with_n_inputs_two_outputs (const char *name, const ElementFn element_fn, const ExecPreset exec_preset, TypeSequence< In... >) |
| Enumerator | |
|---|---|
| Unknown | |
| Single | |
| Span | |
| Materialized | |
Definition at line 158 of file FN_multi_function_builder.hh.
|
inline |
element_fn is expected to return nothing and to have the following parameters:
Definition at line 490 of file FN_multi_function_builder.hh.
References build_multi_function_call_from_element_fn(), execute_element_fn_as_multi_function(), and mask().
Referenced by build_multi_function_call_from_element_fn(), build_multi_function_with_n_inputs_one_output(), build_multi_function_with_n_inputs_two_outputs(), blender::fn::multi_function::build::SI1_SO3(), blender::fn::multi_function::build::SI1_SO4(), and blender::fn::multi_function::build::SM().
|
inline |
Definition at line 529 of file FN_multi_function_builder.hh.
References build_multi_function_call_from_element_fn(), build_multi_function_with_n_inputs_one_output(), blender::fn::multi_function::build::detail::CustomMF< CallFn, ParamTags >::CustomMF(), in, and out.
Referenced by build_multi_function_with_n_inputs_one_output(), blender::fn::multi_function::build::SI1_SO(), blender::fn::multi_function::build::SI2_SO(), blender::fn::multi_function::build::SI3_SO(), blender::fn::multi_function::build::SI4_SO(), blender::fn::multi_function::build::SI5_SO(), blender::fn::multi_function::build::SI6_SO(), and blender::fn::multi_function::build::SI8_SO().
|
inline |
Definition at line 544 of file FN_multi_function_builder.hh.
References build_multi_function_call_from_element_fn(), build_multi_function_with_n_inputs_two_outputs(), and blender::fn::multi_function::build::detail::CustomMF< CallFn, ParamTags >::CustomMF().
Referenced by build_multi_function_with_n_inputs_two_outputs(), blender::fn::multi_function::build::SI1_SO2(), blender::fn::multi_function::build::SI2_SO2(), blender::fn::multi_function::build::SI3_SO2(), blender::fn::multi_function::build::SI4_SO2(), and blender::fn::multi_function::build::SI5_SO2().
|
inline |
Executes #element_fn for all indices in the mask. The passed in #args contain the input as well as output parameters. Usually types in #args are devirtualized (e.g. a Span<int> is passed in instead of a VArray<int>).
Definition at line 135 of file FN_multi_function_builder.hh.
References execute_array(), i, and mask().
Referenced by execute_array(), and execute_element_fn_as_multi_function().
|
inline |
Definition at line 383 of file FN_multi_function_builder.hh.
References blender::call_with_devirtualized_parameters(), blender::fn::multi_function::ParamTag< Category, T >::category, data, ELEM, execute_array(), execute_element_fn_as_multi_function(), execute_materialized(), blender::GVArray::GVArray(), I, mask(), blender::fn::multi_function::build::exec_presets::Materialized, blender::fn::multi_function::Params::readonly_single_input(), blender::fn::multi_function::Params::single_mutable(), blender::fn::multi_function::SingleInput, blender::fn::multi_function::SingleMutable, blender::fn::multi_function::SingleOutput, T, blender::fn::multi_function::Params::uninitialized_single_output(), and UNUSED_VARS.
Referenced by build_multi_function_call_from_element_fn(), and execute_element_fn_as_multi_function().
|
inline |
Executes #element_fn for all indices in mask. However, instead of processing every element separately, processing happens in chunks. This allows retrieving from input virtual arrays in chunks, which reduces virtual function call overhead.
Definition at line 194 of file FN_multi_function_builder.hh.
References blender::OffsetSpan< T, BaseT >::base_span(), blender::fn::multi_function::ParamTag< Category, T >::category, blender::GVArrayImpl::common_info(), blender::CommonVArrayInfo::data, blender::destruct_n(), ELEM, execute_materialized(), execute_materialized_impl(), i, blender::fn::multi_function::build::detail::MaterializeArgInfo< ParamTag >::internal_span_data, mask(), blender::GVArrayImpl::materialize_compressed_to_uninitialized(), Materialized, blender::fn::multi_function::build::detail::MaterializeArgInfo< ParamTag >::mode, blender::unique_sorted_indices::non_empty_is_range(), blender::CommonVArrayInfo::Single, Single, blender::fn::multi_function::SingleInput, blender::fn::multi_function::SingleMutable, blender::fn::multi_function::SingleOutput, blender::CommonVArrayInfo::Span, Span, T, blender::CommonVArrayInfo::type, blender::uninitialized_fill_n(), and blender::index_mask::IndexMaskFromSegment::update().
Referenced by execute_element_fn_as_multi_function(), and execute_materialized().
|
inline |
Similar to execute_array but is only used with arrays and does not need a mask.
Definition at line 178 of file FN_multi_function_builder.hh.
References execute_materialized_impl(), and i.
Referenced by execute_materialized(), and execute_materialized_impl().