BLI: refactor IndexMask for better performance and memory usage #104629

Merged
Jacques Lucke merged 254 commits from JacquesLucke/blender:index-mask-refactor into main 2023-05-24 18:11:47 +02:00
3 changed files with 3 additions and 3 deletions
Showing only changes of commit 215eb87573 - Show all commits

View File

@ -128,7 +128,7 @@ struct DeleteOperationExecutor {
}
IndexMaskMemory mask_memory;
const IndexMask &mask_to_delete = IndexMask::from_bools(curves_to_delete, mask_memory);
const IndexMask mask_to_delete = IndexMask::from_bools(curves_to_delete, mask_memory);
JacquesLucke marked this conversation as resolved Outdated

Probably shouldn't be a reference here

Probably shouldn't be a reference here
/* Remove deleted curves from the stored deformed positions. */
const Vector<IndexRange> ranges_to_keep = mask_to_delete.to_ranges_invert(

View File

@ -604,7 +604,7 @@ struct DensitySubtractOperationExecutor {
}
IndexMaskMemory mask_memory;
const IndexMask &mask_to_delete = IndexMask::from_bools(curves_to_delete, mask_memory);
const IndexMask mask_to_delete = IndexMask::from_bools(curves_to_delete, mask_memory);
/* Remove deleted curves from the stored deformed root positions. */
const Vector<IndexRange> ranges_to_keep = mask_to_delete.to_ranges_invert(

View File

@ -331,7 +331,7 @@ static void node_geo_exec(GeoNodeExecParams params)
index = std::clamp(index, 0, domain_size - 1);
}
if (index >= 0 && index < domain_size) {
const IndexMask &mask = IndexRange(index, 1);
const IndexMask mask = IndexRange(index, 1);
const bke::GeometryFieldContext geometry_context(*component, domain);
FieldEvaluator evaluator(geometry_context, &mask);
evaluator.add(value_field);