Blender
V3.3
|
Classes | |
struct | ArgInfo |
Enumerations | |
enum class | ArgMode { Unknown , Single , Span , Materialized } |
Functions | |
template<typename... ParamTags, typename ElementFn , typename... Chunks> | |
void | execute_materialized_impl (TypeSequence< ParamTags... >, const ElementFn element_fn, const IndexRange in_mask, const IndexMask out_mask, Chunks &&__restrict... chunks) |
template<typename... ParamTags, size_t... I, typename ElementFn , typename... Args> | |
void | execute_materialized (TypeSequence< ParamTags... >, std::index_sequence< I... >, const ElementFn element_fn, const IndexMask mask, Args &&...args) |
|
strong |
Enumerator | |
---|---|
Unknown | |
Single | |
Span | |
Materialized |
Definition at line 138 of file FN_multi_function_builder.hh.
void blender::fn::materialize_detail::execute_materialized | ( | TypeSequence< ParamTags... > | , |
std::index_sequence< I... > | , | ||
const ElementFn | element_fn, | ||
const IndexMask | mask, | ||
Args &&... | args | ||
) |
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 183 of file FN_multi_function_builder.hh.
References blender::IndexMask::as_range(), blender::io::obj::chunk_size, blender::MutableSpan< T >::data(), blender::destruct_n(), execute_materialized_impl(), blender::VArrayCommon< T >::get_internal_single(), blender::VArrayCommon< T >::get_internal_span(), blender::fn::materialize_detail::ArgInfo< ParamTag >::internal_span, blender::Span< T >::is_empty(), blender::IndexMask::is_range(), blender::VArrayCommon< T >::is_single(), blender::VArrayCommon< T >::is_span(), mask(), blender::VArrayCommon< T >::materialize_compressed_to_uninitialized(), Materialized, min, blender::fn::materialize_detail::ArgInfo< ParamTag >::mode, Single, blender::fn::SingleInput, blender::fn::SingleOutput, blender::IndexMask::size(), blender::MutableSpan< T >::size(), blender::Span< T >::slice(), Span, T, and blender::uninitialized_fill_n().
Referenced by blender::fn::CustomMF< ParamTags >::execute().
void blender::fn::materialize_detail::execute_materialized_impl | ( | TypeSequence< ParamTags... > | , |
const ElementFn | element_fn, | ||
const IndexRange | in_mask, | ||
const IndexMask | out_mask, | ||
Chunks &&__restrict... | chunks | ||
) |
Similar to #execute_array but accepts two mask inputs, one for inputs and one for outputs.
Definition at line 154 of file FN_multi_function_builder.hh.
References BLI_assert, blender::fn::SingleInput, blender::fn::SingleOutput, blender::IndexMask::size(), and blender::IndexRange::size().
Referenced by execute_materialized().