Blender V5.0
blender::array_utils Namespace Reference

Enumerations

enum class  BooleanMix { None , AllFalse , AllTrue , Mixed }

Functions

void copy (const GVArray &src, GMutableSpan dst, int64_t grain_size=4096)
template<typename T>
void copy (const VArray< T > &src, MutableSpan< T > dst, const int64_t grain_size=4096)
template<typename T>
void copy (const Span< T > src, MutableSpan< T > dst, const int64_t grain_size=4096)
void copy (const GVArray &src, const IndexMask &selection, GMutableSpan dst, int64_t grain_size=4096)
template<typename T>
void copy (const Span< T > src, const IndexMask &selection, MutableSpan< T > dst, const int64_t grain_size=4096)
template<typename T>
T compute_sum (const Span< T > data)
template<typename T, typename IndexT>
void scatter (const Span< T > src, const Span< IndexT > indices, MutableSpan< T > dst, const int64_t grain_size=4096)
template<typename T>
void scatter (const Span< T > src, const IndexMask &indices, MutableSpan< T > dst, const int64_t grain_size=4096)
void gather (const GVArray &src, const IndexMask &indices, GMutableSpan dst, int64_t grain_size=4096)
void gather (GSpan src, const IndexMask &indices, GMutableSpan dst, int64_t grain_size=4096)
template<typename T>
void gather (const VArray< T > &src, const IndexMask &indices, MutableSpan< T > dst, const int64_t grain_size=4096)
template<typename T>
void gather (const Span< T > src, const IndexMask &indices, MutableSpan< T > dst, const int64_t grain_size=4096)
template<typename T, typename IndexT>
void gather (const Span< T > src, const Span< IndexT > indices, MutableSpan< T > dst, const int64_t grain_size=4096)
template<typename T, typename IndexT>
void gather (const VArray< T > &src, const Span< IndexT > indices, MutableSpan< T > dst, const int64_t grain_size=4096)
template<typename T>
void gather_group_to_group (const OffsetIndices< int > src_offsets, const OffsetIndices< int > dst_offsets, const IndexMask &selection, const Span< T > src, MutableSpan< T > dst)
template<typename T>
void gather_group_to_group (const OffsetIndices< int > src_offsets, const OffsetIndices< int > dst_offsets, const IndexMask &selection, const VArray< T > src, MutableSpan< T > dst)
template<typename T>
void gather_to_groups (const OffsetIndices< int > dst_offsets, const IndexMask &src_selection, const Span< T > src, MutableSpan< T > dst)
void copy_group_to_group (OffsetIndices< int > src_offsets, OffsetIndices< int > dst_offsets, const IndexMask &selection, GSpan src, GMutableSpan dst)
template<typename T>
void copy_group_to_group (OffsetIndices< int > src_offsets, OffsetIndices< int > dst_offsets, const IndexMask &selection, Span< T > src, MutableSpan< T > dst)
void count_indices (Span< int > indices, MutableSpan< int > counts)
void invert_booleans (MutableSpan< bool > span)
void invert_booleans (MutableSpan< bool > span, const IndexMask &mask)
int64_t count_booleans (const VArray< bool > &varray)
int64_t count_booleans (const VArray< bool > &varray, const IndexMask &mask)
BooleanMix booleans_mix_calc (const VArray< bool > &varray, IndexRange range_to_check)
BooleanMix booleans_mix_calc (const VArray< bool > &varray)
bool contains (const VArray< bool > &varray, const IndexMask &indices_to_check, bool value)
template<typename T>
Vector< IndexRangefind_all_ranges (const Span< T > span, const T &value)
template<typename T>
void fill_index_range (MutableSpan< T > span, const T start=0)
template<typename T>
bool indexed_data_equal (const Span< T > all_values, const Span< int > indices, const Span< T > values)
bool indices_are_range (Span< int > indices, IndexRange range)
static bool all_equal (const Span< bool > span, const bool test)
static bool all_equal (const VArray< bool > &varray, const IndexRange range, const bool test)

Enumeration Type Documentation

◆ BooleanMix

Enumerator
None 
AllFalse 
AllTrue 
Mixed 

Definition at line 280 of file BLI_array_utils.hh.

Function Documentation

◆ all_equal() [1/2]

bool blender::array_utils::all_equal ( const Span< bool > span,
const bool test )
static

◆ all_equal() [2/2]

bool blender::array_utils::all_equal ( const VArray< bool > & varray,
const IndexRange range,
const bool test )
static

◆ booleans_mix_calc() [1/2]

BooleanMix blender::array_utils::booleans_mix_calc ( const VArray< bool > & varray)
inline

◆ booleans_mix_calc() [2/2]

◆ compute_sum()

◆ contains()

◆ copy() [1/5]

void blender::array_utils::copy ( const GVArray & src,
const IndexMask & selection,
GMutableSpan dst,
int64_t grain_size = 4096 )

◆ copy() [2/5]

void blender::array_utils::copy ( const GVArray & src,
GMutableSpan dst,
int64_t grain_size = 4096 )

Fill the destination span by copying all values from the src array. Threaded based on grain-size.

Definition at line 18 of file array_utils.cc.

References BLI_assert, blender::GVArrayCommon::index_range(), blender::threading::parallel_for(), blender::GMutableSpan::size(), blender::GVArrayCommon::size(), blender::GMutableSpan::type(), and blender::GVArrayCommon::type().

Referenced by blender::bke::build_mesh_positions(), blender::ed::curves::copy_data_to_geometry(), blender::create_envelope_strokes(), blender::ed::sculpt_paint::face_set::duplicate_face_sets(), blender::ed::curves::duplicate_points(), blender::ed::pointcloud::duplicate_points(), blender::fn::evaluate_fields(), blender::geometry::execute_instances_tasks(), blender::draw::extract_face_dot_index(), blender::draw::extract_vert_idx_loose_geom_subdiv(), blender::draw::extract_vert_index_mesh(), blender::ed::curves::pen_tool::extrude_curves(), blender::ed::greasepencil::extrude_grease_pencil_curves(), blender::nodes::node_geo_scale_elements_cc::from_indices_large_groups(), blender::io::hydra::gather_vert_data(), blender::get_factor_from_draw_speed(), GPU_indexbuf_build_from_memory(), blender::draw::grease_pencil_edit_batch_ensure(), blender::ed::greasepencil::grease_pencil_primitive_load(), blender::ed::greasepencil::grease_pencil_primitive_save(), blender::ed::sculpt_paint::hide::grow_shrink_visibility_mesh(), blender::io::csv::import_csv_as_pointcloud(), blender::ed::curves::pen_tool::insert_point_to_curve(), blender::geometry::interpolate_curves_with_samples(), blender::ed::object::mesh_data_to_grease_pencil(), blender::bke::mesh_select_edge_flush(), blender::bke::mesh_select_face_flush(), blender::bke::mesh_select_vert_flush(), blender::geometry::remove_points_and_split(), blender::geometry::resample_to_count(), blender::nodes::node_geo_sort_elements_cc::sorted_indices(), blender::ed::geometry::store_attributes_to_shape_keys(), blender::io::obj::TEST_F(), blender::io::obj::TEST_F(), blender::io::obj::TEST_F(), blender::io::obj::TEST_F(), blender::io::obj::TEST_F(), blender::io::obj::TEST_F(), blender::io::stl::STLMeshHelper::to_mesh(), and blender::bke::try_capture_fields_on_geometry().

◆ copy() [3/5]

template<typename T>
void blender::array_utils::copy ( const Span< T > src,
const IndexMask & selection,
MutableSpan< T > dst,
const int64_t grain_size = 4096 )
inline

Fill the destination span by copying values from the src array. Threaded based on grain-size.

Definition at line 64 of file BLI_array_utils.hh.

References BLI_assert, blender::index_mask::IndexMask::foreach_index_optimized(), i, blender::MutableSpan< T >::size(), and blender::Span< T >::size().

◆ copy() [4/5]

template<typename T>
void blender::array_utils::copy ( const Span< T > src,
MutableSpan< T > dst,
const int64_t grain_size = 4096 )
inline

Fill the destination span by copying all values from the src array. Threaded based on grain-size.

Definition at line 42 of file BLI_array_utils.hh.

References BLI_assert, blender::Span< T >::index_range(), blender::threading::parallel_for(), blender::MutableSpan< T >::size(), and blender::Span< T >::size().

◆ copy() [5/5]

template<typename T>
void blender::array_utils::copy ( const VArray< T > & src,
MutableSpan< T > dst,
const int64_t grain_size = 4096 )
inline

◆ copy_group_to_group() [1/2]

◆ copy_group_to_group() [2/2]

template<typename T>
void blender::array_utils::copy_group_to_group ( OffsetIndices< int > src_offsets,
OffsetIndices< int > dst_offsets,
const IndexMask & selection,
Span< T > src,
MutableSpan< T > dst )

Definition at line 255 of file BLI_array_utils.hh.

References copy_group_to_group().

◆ count_booleans() [1/2]

◆ count_booleans() [2/2]

◆ count_indices()

◆ fill_index_range()

template<typename T>
void blender::array_utils::fill_index_range ( MutableSpan< T > span,
const T start = 0 )
inline

Fill the span with increasing indices: 0, 1, 2, ... Optionally, the start value can be provided.

Definition at line 324 of file BLI_array_utils.hh.

References blender::MutableSpan< T >::begin(), blender::MutableSpan< T >::end(), fill_index_range(), and T.

Referenced by apply_weights_vertex_normal(), BKE_mesh_legacy_convert_polys_to_offsets(), blender::geometry::build_point_to_sample_map(), blender::io::obj::OBJMesh::calc_face_order(), blender::bke::node_structure_type_inferencing::calc_node_interface(), blender::ed::sculpt_paint::cloth::calc_vert_indices_grids(), blender::bke::compute_local_mesh_groups(), blender::nodes::node_geo_mesh_primitive_circle_cc::create_circle_mesh(), blender::create_dashes(), blender::create_envelope_strokes(), blender::bke::tests::GreasePencilInterpolate::create_test_curves(), blender::geometry::tests::create_test_curves(), blender::geometry::tests::create_test_curves(), blender::nodes::node_geo_points_to_curves_cc::curve_from_points(), blender::ed::greasepencil::curve_merge_by_distance(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_faces(), blender::draw::extract_face_dot_index(), blender::ed::curves::pen_tool::extrude_curves(), blender::ed::greasepencil::extrude_grease_pencil_curves(), fill_index_range(), blender::ed::sculpt_paint::greasepencil::find_curve_mapping_from_index(), blender::geometry::fit_poly_to_bezier_curves(), blender::bke::pbvh::Tree::from_grids(), blender::bke::pbvh::Tree::from_mesh(), blender::ed::greasepencil::get_reordered_indices(), blender::nodes::node_geo_curve_topology_points_of_curve_cc::PointsOfCurveInput::get_varray_for_context(), blender::nodes::node_geo_input_shortest_edge_paths_cc::ShortestEdgePathsNextVertFieldInput::get_varray_for_context(), blender::nodes::node_geo_mesh_topology_corners_of_edge_cc::CornersOfEdgeInput::get_varray_for_context(), blender::nodes::node_geo_mesh_topology_corners_of_face_cc::CornersOfFaceInput::get_varray_for_context(), blender::nodes::node_geo_mesh_topology_corners_of_vertex_cc::CornersOfVertInput::get_varray_for_context(), blender::nodes::node_geo_mesh_topology_edges_of_vertex_cc::EdgesOfVertInput::get_varray_for_context(), blender::nodes::node_geo_sort_elements_cc::identifiers_to_indices(), blender::ed::curves::pen_tool::insert_point_to_curve(), blender::ed::sculpt_paint::greasepencil::interpolate_between_curves(), blender::ed::transform::make_sorted_index_map(), blender::bke::mesh_calc_edges(), multires_unsubdivide_add_original_index_datalayers(), blender::nodes::node_geo_split_to_instances_cc::node_geo_exec(), blender::geometry::point_merge_by_distance(), blender::reorder_cyclic_curve_points(), blender::index_mask::segments_from_batch_predicate(), and blender::bke::Instances::unique_ids().

◆ find_all_ranges()

◆ gather() [1/6]

void blender::array_utils::gather ( const GVArray & src,
const IndexMask & indices,
GMutableSpan dst,
int64_t grain_size = 4096 )

Fill the destination span by gathering indexed values from the src array.

Definition at line 40 of file array_utils.cc.

References BLI_assert, indices, blender::threading::parallel_for(), blender::GMutableSpan::size(), blender::GMutableSpan::type(), and blender::GVArrayCommon::type().

Referenced by blender::nodes::node_geo_duplicate_elements_cc::accumulate_counts_to_offsets(), blender::nodes::node_geo_instance_on_points_cc::add_instances_from_component(), blender::ed::transform::curves::append_positions_to_custom_data(), blender::ed::sculpt_paint::greasepencil::brush_point_influence_mask(), blender::nodes::node_geo_extrude_mesh_cc::build_vert_to_edge_map(), blender::nodes::node_geo_instances_to_points_cc::convert_instances_to_points(), blender::geometry::copy_and_reorder_instaces(), blender::geometry::copy_and_reorder_mesh_edges(), blender::geometry::copy_and_reorder_mesh_verts(), blender::ed::transform::pointcloud::createTransPointCloudVerts(), blender::nodes::node_geo_curves_to_grease_pencil_cc::curve_instances_to_grease_pencil_layers(), blender::bke::curves_copy_point_selection(), blender::ed::curves::duplicate_curves(), blender::ed::pointcloud::duplicate_points(), blender::ed::sculpt_paint::DensitySubtractOperationExecutor::execute(), blender::geometry::execute_instances_tasks(), blender::draw::extract_data_mesh_mapped_corner(), blender::draw::extract_edge_index_mesh(), blender::draw::extract_sculpt_data_subdiv(), blender::draw::extract_vert_idx_loose_geom_subdiv(), blender::draw::extract_vert_index_mesh(), blender::draw::extract_vert_normals(), blender::draw::extract_vert_normals_mesh(), blender::nodes::node_geo_extrude_mesh_cc::extrude_mesh_face_regions(), blender::nodes::node_geo_extrude_mesh_cc::extrude_mesh_vertices(), gather(), gather(), gather(), gather(), gather(), blender::bke::gather_attributes(), blender::nodes::node_geo_extrude_mesh_cc::gather_attributes(), blender::nodes::node_geo_scale_elements_cc::gather_edge_islands(), blender::nodes::node_geo_scale_elements_cc::gather_face_islands(), blender::nodes::node_geo_extrude_mesh_cc::gather_vert_attributes(), blender::io::hydra::gather_vert_data(), blender::nodes::node_geo_mesh_to_points_cc::geometry_set_mesh_to_points(), blender::nodes::node_geo_points_to_vertices_cc::geometry_set_points_to_vertices(), blender::draw::grease_pencil_cache_add_nurbs(), blender::draw::grease_pencil_edit_batch_ensure(), blender::ed::sculpt_paint::grease_pencil_fill_extension_lines_from_circles(), blender::geometry::join_instances(), blender::bke::mesh_calc_edges(), blender::ed::object::mesh_data_to_grease_pencil(), blender::geometry::mesh_edges_to_curves_convert(), blender::geometry::mesh_triangulate(), blender::nodes::node_geo_attribute_statistic_cc::node_geo_exec(), blender::nodes::node_geo_grease_pencil_to_curves_cc::node_geo_exec(), blender::geometry::propagate_edge_attributes(), blender::geometry::propagate_vert_attributes(), blender::nodes::node_geo_sort_elements_cc::sorted_indices(), blender::ed::sculpt_paint::expand::spherical_falloff_create(), blender::io::obj::OBJMesh::store_normal_coords_and_indices(), blender::ed::sculpt_paint::boundary::twist_data_init_grids(), blender::ed::sculpt_paint::boundary::twist_data_init_mesh(), and blender::bke::mesh::vert_tris_from_corner_tris().

◆ gather() [2/6]

template<typename T>
void blender::array_utils::gather ( const Span< T > src,
const IndexMask & indices,
MutableSpan< T > dst,
const int64_t grain_size = 4096 )
inline

Fill the destination span by gathering indexed values from the src array.

Definition at line 159 of file BLI_array_utils.hh.

References BLI_assert, gather(), i, indices, and blender::MutableSpan< T >::size().

◆ gather() [3/6]

template<typename T, typename IndexT>
void blender::array_utils::gather ( const Span< T > src,
const Span< IndexT > indices,
MutableSpan< T > dst,
const int64_t grain_size = 4096 )
inline

Fill the destination span by gathering indexed values from the src array.

Definition at line 177 of file BLI_array_utils.hh.

References BLI_assert, gather(), indices, blender::threading::parallel_for(), and blender::MutableSpan< T >::size().

◆ gather() [4/6]

template<typename T>
void blender::array_utils::gather ( const VArray< T > & src,
const IndexMask & indices,
MutableSpan< T > dst,
const int64_t grain_size = 4096 )
inline

Fill the destination span by gathering indexed values from the src array.

Definition at line 144 of file BLI_array_utils.hh.

References BLI_assert, gather(), indices, blender::threading::parallel_for(), and blender::MutableSpan< T >::size().

◆ gather() [5/6]

template<typename T, typename IndexT>
void blender::array_utils::gather ( const VArray< T > & src,
const Span< IndexT > indices,
MutableSpan< T > dst,
const int64_t grain_size = 4096 )
inline

Fill the destination span by gathering indexed values from the src array.

Definition at line 194 of file BLI_array_utils.hh.

References BLI_assert, blender::devirtualize_varray(), gather(), indices, blender::threading::parallel_for(), and blender::MutableSpan< T >::size().

◆ gather() [6/6]

void blender::array_utils::gather ( GSpan src,
const IndexMask & indices,
GMutableSpan dst,
int64_t grain_size = 4096 )

Fill the destination span by gathering indexed values from the src array.

Definition at line 52 of file array_utils.cc.

References blender::GVArray::from_span(), gather(), and indices.

◆ gather_group_to_group() [1/2]

◆ gather_group_to_group() [2/2]

template<typename T>
void blender::array_utils::gather_group_to_group ( const OffsetIndices< int > src_offsets,
const OffsetIndices< int > dst_offsets,
const IndexMask & selection,
const VArray< T > src,
MutableSpan< T > dst )
inline

◆ gather_to_groups()

template<typename T>
void blender::array_utils::gather_to_groups ( const OffsetIndices< int > dst_offsets,
const IndexMask & src_selection,
const Span< T > src,
MutableSpan< T > dst )
inline

◆ indexed_data_equal()

◆ indices_are_range()

◆ invert_booleans() [1/2]

◆ invert_booleans() [2/2]

void blender::array_utils::invert_booleans ( MutableSpan< bool > span,
const IndexMask & mask )

Definition at line 94 of file array_utils.cc.

References i, invert_booleans(), and mask().

◆ scatter() [1/2]

template<typename T>
void blender::array_utils::scatter ( const Span< T > src,
const IndexMask & indices,
MutableSpan< T > dst,
const int64_t grain_size = 4096 )
inline

◆ scatter() [2/2]

template<typename T, typename IndexT>
void blender::array_utils::scatter ( const Span< T > src,
const Span< IndexT > indices,
MutableSpan< T > dst,
const int64_t grain_size = 4096 )
inline