From aa133b1a42022fcd4fb5cd71340f2f5612aff0cc Mon Sep 17 00:00:00 2001 From: Sean Kim Date: Mon, 5 Aug 2024 21:22:33 +0200 Subject: [PATCH] Cleanup: Extract and rename filter_positions_pivot_symmetry Pull Request: https://projects.blender.org/blender/blender/pulls/125914 --- .../editors/sculpt_paint/mesh_brush_common.hh | 6 +++++ source/blender/editors/sculpt_paint/sculpt.cc | 14 ++++++++++ .../editors/sculpt_paint/sculpt_transform.cc | 26 +++++-------------- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/source/blender/editors/sculpt_paint/mesh_brush_common.hh b/source/blender/editors/sculpt_paint/mesh_brush_common.hh index 5a9beb219cd..86b88078a3e 100644 --- a/source/blender/editors/sculpt_paint/mesh_brush_common.hh +++ b/source/blender/editors/sculpt_paint/mesh_brush_common.hh @@ -433,6 +433,12 @@ void calc_translations_to_plane(Span positions, const float4 &plane, MutableSpan translations); +/** Ignores verts outside of a symmetric area defined by a pivot point. */ +void filter_verts_outside_symmetry_area(Span positions, + const float3 &pivot, + ePaintSymmetryFlags symm, + MutableSpan factors); + /** Ignore points that fall below the "plane trim" threshold for the brush. */ void filter_plane_trim_limit_factors(const Brush &brush, const StrokeCache &cache, diff --git a/source/blender/editors/sculpt_paint/sculpt.cc b/source/blender/editors/sculpt_paint/sculpt.cc index c702dc26171..6f40d0155f9 100644 --- a/source/blender/editors/sculpt_paint/sculpt.cc +++ b/source/blender/editors/sculpt_paint/sculpt.cc @@ -7751,6 +7751,20 @@ void calc_translations_to_plane(const Span positions, } } +void filter_verts_outside_symmetry_area(const Span positions, + const float3 &pivot, + const ePaintSymmetryFlags symm, + const MutableSpan factors) +{ + BLI_assert(positions.size() == factors.size()); + + for (const int i : positions.index_range()) { + if (!SCULPT_check_vertex_pivot_symmetry(positions[i], pivot, symm)) { + factors[i] = 0.0f; + } + } +} + void filter_plane_trim_limit_factors(const Brush &brush, const StrokeCache &cache, const Span translations, diff --git a/source/blender/editors/sculpt_paint/sculpt_transform.cc b/source/blender/editors/sculpt_paint/sculpt_transform.cc index 20a40638003..78d315d1950 100644 --- a/source/blender/editors/sculpt_paint/sculpt_transform.cc +++ b/source/blender/editors/sculpt_paint/sculpt_transform.cc @@ -631,20 +631,6 @@ static AveragePositionAccumulation combine_average_position_accumulation( return AveragePositionAccumulation{a.position + b.position, a.weight_total + b.weight_total}; } -BLI_NOINLINE static void filter_positions_pivot_symmetry(const Span positions, - const float3 &pivot, - const ePaintSymmetryFlags symm, - const MutableSpan factors) -{ - BLI_assert(positions.size() == factors.size()); - - for (const int i : positions.index_range()) { - if (!SCULPT_check_vertex_pivot_symmetry(positions[i], pivot, symm)) { - factors[i] = 0.0f; - } - } -} - BLI_NOINLINE static void accumulate_weighted_average_position(const Span positions, const Span factors, AveragePositionAccumulation &total) @@ -694,7 +680,7 @@ static float3 average_unmasked_position(const Object &object, tls.factors.resize(verts.size()); const MutableSpan factors = tls.factors; fill_factor_from_hide_and_mask(mesh, verts, factors); - filter_positions_pivot_symmetry(positions, pivot, symm, factors); + filter_verts_outside_symmetry_area(positions, pivot, symm, factors); accumulate_weighted_average_position(positions, factors, sum); } @@ -720,7 +706,7 @@ static float3 average_unmasked_position(const Object &object, tls.factors.resize(positions.size()); const MutableSpan factors = tls.factors; fill_factor_from_hide_and_mask(subdiv_ccg, grids, factors); - filter_positions_pivot_symmetry(positions, pivot, symm, factors); + filter_verts_outside_symmetry_area(positions, pivot, symm, factors); accumulate_weighted_average_position(positions, factors, sum); } @@ -743,7 +729,7 @@ static float3 average_unmasked_position(const Object &object, tls.factors.resize(verts.size()); const MutableSpan factors = tls.factors; fill_factor_from_hide_and_mask(*ss.bm, verts, factors); - filter_positions_pivot_symmetry(positions, pivot, symm, factors); + filter_verts_outside_symmetry_area(positions, pivot, symm, factors); accumulate_weighted_average_position(positions, factors, sum); } @@ -809,7 +795,7 @@ static float3 average_mask_border_position(const Object &object, fill_factor_from_hide(mesh, verts, factors); mask_border_weight_calc(masks, factors); - filter_positions_pivot_symmetry(positions, pivot, symm, factors); + filter_verts_outside_symmetry_area(positions, pivot, symm, factors); accumulate_weighted_average_position(positions, factors, sum); } @@ -839,7 +825,7 @@ static float3 average_mask_border_position(const Object &object, const MutableSpan factors = tls.factors; fill_factor_from_hide(subdiv_ccg, grids, factors); mask_border_weight_calc(masks, factors); - filter_positions_pivot_symmetry(positions, pivot, symm, factors); + filter_verts_outside_symmetry_area(positions, pivot, symm, factors); accumulate_weighted_average_position(positions, factors, sum); } @@ -867,7 +853,7 @@ static float3 average_mask_border_position(const Object &object, const MutableSpan factors = tls.factors; fill_factor_from_hide(verts, factors); mask_border_weight_calc(masks, factors); - filter_positions_pivot_symmetry(positions, pivot, symm, factors); + filter_verts_outside_symmetry_area(positions, pivot, symm, factors); accumulate_weighted_average_position(positions, factors, sum); }