diff --git a/source/blender/editors/sculpt_paint/brushes/clay.cc b/source/blender/editors/sculpt_paint/brushes/clay.cc index e491e3bea22..8adde88eba5 100644 --- a/source/blender/editors/sculpt_paint/brushes/clay.cc +++ b/source/blender/editors/sculpt_paint/brushes/clay.cc @@ -80,8 +80,9 @@ static void calc_faces(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances( + ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); calc_brush_strength_factors(cache, brush, distances, factors); if (cache.automasking) { @@ -129,8 +130,8 @@ static void calc_grids(const Sculpt &sd, tls.distances.reinitialize(grid_verts_num); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); calc_brush_strength_factors(cache, brush, distances, factors); if (cache.automasking) { @@ -176,8 +177,8 @@ static void calc_bmesh(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); calc_brush_strength_factors(cache, brush, distances, factors); if (cache.automasking) { diff --git a/source/blender/editors/sculpt_paint/brushes/clay_strips.cc b/source/blender/editors/sculpt_paint/brushes/clay_strips.cc index adbb381c13b..eee4a59d14b 100644 --- a/source/blender/editors/sculpt_paint/brushes/clay_strips.cc +++ b/source/blender/editors/sculpt_paint/brushes/clay_strips.cc @@ -67,7 +67,7 @@ static void calc_faces(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_cube_distance_falloff(ss, brush, mat, positions_eval, verts, distances, factors); + calc_brush_cube_distances(ss, brush, mat, positions_eval, verts, distances, factors); scale_factors(distances, cache.radius); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -128,7 +128,7 @@ static void calc_grids(const Sculpt &sd, tls.distances.reinitialize(grid_verts_num); const MutableSpan distances = tls.distances; - calc_cube_distance_falloff(ss, brush, mat, positions, distances, factors); + calc_brush_cube_distances(ss, brush, mat, positions, distances, factors); scale_factors(distances, cache.radius); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -187,7 +187,7 @@ static void calc_bmesh(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_cube_distance_falloff(ss, brush, mat, positions, distances, factors); + calc_brush_cube_distances(ss, brush, mat, positions, distances, factors); scale_factors(distances, cache.radius); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); diff --git a/source/blender/editors/sculpt_paint/brushes/clay_thumb.cc b/source/blender/editors/sculpt_paint/brushes/clay_thumb.cc index baa0e6a1216..1883107360d 100644 --- a/source/blender/editors/sculpt_paint/brushes/clay_thumb.cc +++ b/source/blender/editors/sculpt_paint/brushes/clay_thumb.cc @@ -73,8 +73,8 @@ static void calc_faces(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -125,8 +125,8 @@ static void calc_grids(const Sculpt &sd, tls.distances.reinitialize(grid_verts_num); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -175,8 +175,8 @@ static void calc_bmesh(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); diff --git a/source/blender/editors/sculpt_paint/brushes/crease.cc b/source/blender/editors/sculpt_paint/brushes/crease.cc index 84ac9ff42be..2df6f5734b4 100644 --- a/source/blender/editors/sculpt_paint/brushes/crease.cc +++ b/source/blender/editors/sculpt_paint/brushes/crease.cc @@ -93,8 +93,9 @@ static void calc_faces(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances( + ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -155,8 +156,8 @@ static void calc_grids(const Sculpt &sd, tls.distances.reinitialize(grid_verts_num); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -212,8 +213,8 @@ static void calc_bmesh(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); diff --git a/source/blender/editors/sculpt_paint/brushes/draw.cc b/source/blender/editors/sculpt_paint/brushes/draw.cc index 0a19fc971f3..c6600fd5dd6 100644 --- a/source/blender/editors/sculpt_paint/brushes/draw.cc +++ b/source/blender/editors/sculpt_paint/brushes/draw.cc @@ -62,8 +62,9 @@ static void calc_faces(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances( + ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -109,8 +110,8 @@ static void calc_grids(const Sculpt &sd, tls.distances.reinitialize(grid_verts_num); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -154,8 +155,8 @@ static void calc_bmesh(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); diff --git a/source/blender/editors/sculpt_paint/brushes/draw_vector_displacement.cc b/source/blender/editors/sculpt_paint/brushes/draw_vector_displacement.cc index cc7dcc189e3..f888362af53 100644 --- a/source/blender/editors/sculpt_paint/brushes/draw_vector_displacement.cc +++ b/source/blender/editors/sculpt_paint/brushes/draw_vector_displacement.cc @@ -103,8 +103,9 @@ static void calc_faces(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances( + ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -150,8 +151,8 @@ static void calc_grids( tls.distances.reinitialize(grid_verts_num); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -195,8 +196,8 @@ static void calc_bmesh( tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); diff --git a/source/blender/editors/sculpt_paint/brushes/fill.cc b/source/blender/editors/sculpt_paint/brushes/fill.cc index bf51eb34e29..ec56616e18a 100644 --- a/source/blender/editors/sculpt_paint/brushes/fill.cc +++ b/source/blender/editors/sculpt_paint/brushes/fill.cc @@ -64,8 +64,9 @@ static void calc_faces(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances( + ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -118,8 +119,8 @@ static void calc_grids(const Sculpt &sd, tls.distances.reinitialize(grid_verts_num); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -170,8 +171,8 @@ static void calc_bmesh(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); diff --git a/source/blender/editors/sculpt_paint/brushes/flatten.cc b/source/blender/editors/sculpt_paint/brushes/flatten.cc index a2d13f9ee6c..db1b5c27248 100644 --- a/source/blender/editors/sculpt_paint/brushes/flatten.cc +++ b/source/blender/editors/sculpt_paint/brushes/flatten.cc @@ -63,8 +63,9 @@ static void calc_faces(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances( + ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -115,8 +116,8 @@ static void calc_grids(const Sculpt &sd, tls.distances.reinitialize(grid_verts_num); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -165,8 +166,8 @@ static void calc_bmesh(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); diff --git a/source/blender/editors/sculpt_paint/brushes/grab.cc b/source/blender/editors/sculpt_paint/brushes/grab.cc index e19aa8ebd47..b877227a488 100644 --- a/source/blender/editors/sculpt_paint/brushes/grab.cc +++ b/source/blender/editors/sculpt_paint/brushes/grab.cc @@ -75,8 +75,9 @@ static void calc_faces(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, orig_data.positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances( + ss, orig_data.positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -123,8 +124,9 @@ static void calc_grids(const Sculpt &sd, tls.distances.reinitialize(grid_verts_num); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, orig_data.positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances( + ss, orig_data.positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -172,8 +174,8 @@ static void calc_bmesh(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, orig_positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, orig_positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); diff --git a/source/blender/editors/sculpt_paint/brushes/inflate.cc b/source/blender/editors/sculpt_paint/brushes/inflate.cc index e30986ee909..55ee6bf75fc 100644 --- a/source/blender/editors/sculpt_paint/brushes/inflate.cc +++ b/source/blender/editors/sculpt_paint/brushes/inflate.cc @@ -70,8 +70,9 @@ static void calc_faces(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances( + ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -119,8 +120,8 @@ static void calc_grids(const Sculpt &sd, tls.distances.reinitialize(grid_verts_num); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -166,8 +167,8 @@ static void calc_bmesh(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); diff --git a/source/blender/editors/sculpt_paint/brushes/mask.cc b/source/blender/editors/sculpt_paint/brushes/mask.cc index 92b5539b963..878ccfc1f90 100644 --- a/source/blender/editors/sculpt_paint/brushes/mask.cc +++ b/source/blender/editors/sculpt_paint/brushes/mask.cc @@ -84,8 +84,8 @@ static void calc_faces(const Brush &brush, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, verts, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, verts, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -169,8 +169,8 @@ static void calc_grids( tls.distances.reinitialize(grid_verts_num); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -246,8 +246,8 @@ static void calc_bmesh( tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); diff --git a/source/blender/editors/sculpt_paint/brushes/multiplane_scrape.cc b/source/blender/editors/sculpt_paint/brushes/multiplane_scrape.cc index fe0b3f9e4a8..59112b48b78 100644 --- a/source/blender/editors/sculpt_paint/brushes/multiplane_scrape.cc +++ b/source/blender/editors/sculpt_paint/brushes/multiplane_scrape.cc @@ -197,8 +197,8 @@ static void calc_faces(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; /* NOTE: The distances are not used from this call, it's only used for filtering. */ - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); tls.local_positions.reinitialize(verts.size()); MutableSpan local_positions = tls.local_positions; @@ -261,8 +261,8 @@ static void calc_grids(const Sculpt &sd, tls.distances.reinitialize(grid_verts_num); const MutableSpan distances = tls.distances; /* NOTE: The distances are not used from this call, it's only used for filtering. */ - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); tls.local_positions.reinitialize(grid_verts_num); MutableSpan local_positions = tls.local_positions; @@ -323,8 +323,8 @@ static void calc_bmesh(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; /* NOTE: The distances are not used from this call, it's only used for filtering. */ - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); tls.local_positions.reinitialize(verts.size()); MutableSpan local_positions = tls.local_positions; diff --git a/source/blender/editors/sculpt_paint/brushes/multires_displacement_eraser.cc b/source/blender/editors/sculpt_paint/brushes/multires_displacement_eraser.cc index 15b5995cc99..84ed2f98bda 100644 --- a/source/blender/editors/sculpt_paint/brushes/multires_displacement_eraser.cc +++ b/source/blender/editors/sculpt_paint/brushes/multires_displacement_eraser.cc @@ -74,8 +74,8 @@ static void calc_node(const Sculpt &sd, tls.distances.reinitialize(grid_verts_num); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); diff --git a/source/blender/editors/sculpt_paint/brushes/multires_displacement_smear.cc b/source/blender/editors/sculpt_paint/brushes/multires_displacement_smear.cc index f4f96519f68..19e5d90545c 100644 --- a/source/blender/editors/sculpt_paint/brushes/multires_displacement_smear.cc +++ b/source/blender/editors/sculpt_paint/brushes/multires_displacement_smear.cc @@ -59,8 +59,8 @@ static void calc_node( tls.distances.reinitialize(grid_verts_num); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); diff --git a/source/blender/editors/sculpt_paint/brushes/pinch.cc b/source/blender/editors/sculpt_paint/brushes/pinch.cc index 5ac08fd05b8..59f427a9238 100644 --- a/source/blender/editors/sculpt_paint/brushes/pinch.cc +++ b/source/blender/editors/sculpt_paint/brushes/pinch.cc @@ -92,8 +92,8 @@ static void calc_faces(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -147,8 +147,8 @@ static void calc_grids(const Sculpt &sd, tls.distances.reinitialize(grid_verts_num); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -200,8 +200,8 @@ static void calc_bmesh(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); diff --git a/source/blender/editors/sculpt_paint/brushes/rotate.cc b/source/blender/editors/sculpt_paint/brushes/rotate.cc index 9317ccd4041..e37dc742555 100644 --- a/source/blender/editors/sculpt_paint/brushes/rotate.cc +++ b/source/blender/editors/sculpt_paint/brushes/rotate.cc @@ -79,8 +79,9 @@ static void calc_faces(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, orig_data.positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances( + ss, orig_data.positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -127,8 +128,9 @@ static void calc_grids(const Sculpt &sd, tls.distances.reinitialize(grid_verts_num); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, orig_data.positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances( + ss, orig_data.positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -175,8 +177,8 @@ static void calc_bmesh(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, orig_positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, orig_positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); diff --git a/source/blender/editors/sculpt_paint/brushes/scrape.cc b/source/blender/editors/sculpt_paint/brushes/scrape.cc index ee648adbcbf..3f32e7c40a7 100644 --- a/source/blender/editors/sculpt_paint/brushes/scrape.cc +++ b/source/blender/editors/sculpt_paint/brushes/scrape.cc @@ -64,8 +64,9 @@ static void calc_faces(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances( + ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -118,8 +119,8 @@ static void calc_grids(const Sculpt &sd, tls.distances.reinitialize(grid_verts_num); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -170,8 +171,8 @@ static void calc_bmesh(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); diff --git a/source/blender/editors/sculpt_paint/brushes/smooth.cc b/source/blender/editors/sculpt_paint/brushes/smooth.cc index d568a058428..7d6570c486c 100644 --- a/source/blender/editors/sculpt_paint/brushes/smooth.cc +++ b/source/blender/editors/sculpt_paint/brushes/smooth.cc @@ -128,8 +128,9 @@ BLI_NOINLINE static void apply_positions_faces(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances( + ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); diff --git a/source/blender/editors/sculpt_paint/brushes/smooth_mask.cc b/source/blender/editors/sculpt_paint/brushes/smooth_mask.cc index 6c710e8d2a3..cba8de6cd35 100644 --- a/source/blender/editors/sculpt_paint/brushes/smooth_mask.cc +++ b/source/blender/editors/sculpt_paint/brushes/smooth_mask.cc @@ -126,8 +126,9 @@ static void apply_masks_faces(const Brush &brush, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances( + ss, positions_eval, verts, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); diff --git a/source/blender/editors/sculpt_paint/brushes/thumb.cc b/source/blender/editors/sculpt_paint/brushes/thumb.cc index 12a9abd07da..daf03662373 100644 --- a/source/blender/editors/sculpt_paint/brushes/thumb.cc +++ b/source/blender/editors/sculpt_paint/brushes/thumb.cc @@ -62,8 +62,9 @@ static void calc_faces(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, orig_data.positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances( + ss, orig_data.positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -107,8 +108,9 @@ static void calc_grids(const Sculpt &sd, tls.distances.reinitialize(grid_verts_num); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, orig_data.positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances( + ss, orig_data.positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); @@ -153,8 +155,8 @@ static void calc_bmesh(const Sculpt &sd, tls.distances.reinitialize(verts.size()); const MutableSpan distances = tls.distances; - calc_distance_falloff( - ss, orig_positions, eBrushFalloffShape(brush.falloff_shape), distances, factors); + calc_brush_distances(ss, orig_positions, eBrushFalloffShape(brush.falloff_shape), distances); + filter_distances_with_radius(cache.radius, distances, factors); apply_hardness_to_distances(cache, distances); calc_brush_strength_factors(cache, brush, distances, factors); diff --git a/source/blender/editors/sculpt_paint/mesh_brush_common.hh b/source/blender/editors/sculpt_paint/mesh_brush_common.hh index 6344e8b64de..a206922af48 100644 --- a/source/blender/editors/sculpt_paint/mesh_brush_common.hh +++ b/source/blender/editors/sculpt_paint/mesh_brush_common.hh @@ -131,35 +131,36 @@ void filter_region_clip_factors(const SculptSession &ss, * Calculate distances based on the distance from the brush cursor and various other settings. * Also ignore vertices that are too far from the cursor. */ -void calc_distance_falloff(const SculptSession &ss, - Span vert_positions, - Span vert_indices, - eBrushFalloffShape falloff_shape, - MutableSpan r_distances, - MutableSpan factors); -void calc_distance_falloff(const SculptSession &ss, - Span positions, - const eBrushFalloffShape falloff_shape, - MutableSpan r_distances, - MutableSpan factors); +void calc_brush_distances(const SculptSession &ss, + Span vert_positions, + Span vert_indices, + eBrushFalloffShape falloff_shape, + MutableSpan r_distances); +void calc_brush_distances(const SculptSession &ss, + Span positions, + const eBrushFalloffShape falloff_shape, + MutableSpan r_distances); + +/** Set the factor to zero for all distances greater than the radius. */ +void filter_distances_with_radius(float radius, Span distances, MutableSpan factors); /** * Calculate distances based on a "square" brush tip falloff and ignore vertices that are too far * away. */ -void calc_cube_distance_falloff(SculptSession &ss, - const Brush &brush, - const float4x4 &mat, - Span positions, - Span verts, - MutableSpan r_distances, - MutableSpan factors); -void calc_cube_distance_falloff(SculptSession &ss, - const Brush &brush, - const float4x4 &mat, - const Span positions, - const MutableSpan r_distances, - const MutableSpan factors); +void calc_brush_cube_distances(SculptSession &ss, + const Brush &brush, + const float4x4 &mat, + Span positions, + Span verts, + MutableSpan r_distances, + MutableSpan factors); +void calc_brush_cube_distances(SculptSession &ss, + const Brush &brush, + const float4x4 &mat, + const Span positions, + const MutableSpan r_distances, + const MutableSpan factors); /** * Scale the distances based on the brush radius and the cached "hardness" setting, which increases diff --git a/source/blender/editors/sculpt_paint/sculpt.cc b/source/blender/editors/sculpt_paint/sculpt.cc index 1ab757c3836..58a7e56d0de 100644 --- a/source/blender/editors/sculpt_paint/sculpt.cc +++ b/source/blender/editors/sculpt_paint/sculpt.cc @@ -6914,12 +6914,11 @@ void filter_region_clip_factors(const SculptSession &ss, } } -void calc_distance_falloff(const SculptSession &ss, - const Span positions, - const Span verts, - const eBrushFalloffShape falloff_shape, - const MutableSpan r_distances, - const MutableSpan factors) +void calc_brush_distances(const SculptSession &ss, + const Span positions, + const Span verts, + const eBrushFalloffShape falloff_shape, + const MutableSpan r_distances_sq) { BLI_assert(verts.size() == factors.size()); BLI_assert(verts.size() == r_distances.size()); @@ -6933,32 +6932,20 @@ void calc_distance_falloff(const SculptSession &ss, for (const int i : verts.index_range()) { float3 projected; closest_to_plane_normalized_v3(projected, test_plane, positions[verts[i]]); - r_distances[i] = math::distance_squared(projected, test_location); + r_distances_sq[i] = math::distance(projected, test_location); } } else { for (const int i : verts.index_range()) { - r_distances[i] = math::distance_squared(test_location, positions[verts[i]]); - } - } - - const float radius_sq = ss.cache ? ss.cache->radius_squared : - ss.cursor_radius * ss.cursor_radius; - for (const int i : r_distances.index_range()) { - if (r_distances[i] < radius_sq) { - r_distances[i] = std::sqrt(r_distances[i]); - } - else { - factors[i] = 0.0f; + r_distances_sq[i] = math::distance(test_location, positions[verts[i]]); } } } -void calc_distance_falloff(const SculptSession &ss, - const Span positions, - const eBrushFalloffShape falloff_shape, - const MutableSpan r_distances, - const MutableSpan factors) +void calc_brush_distances(const SculptSession &ss, + const Span positions, + const eBrushFalloffShape falloff_shape, + const MutableSpan r_distances_sq) { BLI_assert(positions.size() == factors.size()); BLI_assert(positions.size() == r_distances.size()); @@ -6972,34 +6959,34 @@ void calc_distance_falloff(const SculptSession &ss, for (const int i : positions.index_range()) { float3 projected; closest_to_plane_normalized_v3(projected, test_plane, positions[i]); - r_distances[i] = math::distance_squared(projected, test_location); + r_distances_sq[i] = math::distance(projected, test_location); } } else { for (const int i : positions.index_range()) { - r_distances[i] = math::distance_squared(test_location, positions[i]); + r_distances_sq[i] = math::distance(test_location, positions[i]); } } +} - const float radius_sq = ss.cache ? ss.cache->radius_squared : - ss.cursor_radius * ss.cursor_radius; - for (const int i : r_distances.index_range()) { - if (r_distances[i] < radius_sq) { - r_distances[i] = std::sqrt(r_distances[i]); - } - else { +void filter_distances_with_radius(const float radius, + const Span distances, + const MutableSpan factors) +{ + for (const int i : distances.index_range()) { + if (distances[i] > radius) { factors[i] = 0.0f; } } } -void calc_cube_distance_falloff(SculptSession &ss, - const Brush &brush, - const float4x4 &mat, - const Span positions, - const Span verts, - const MutableSpan r_distances, - const MutableSpan factors) +void calc_brush_cube_distances(SculptSession &ss, + const Brush &brush, + const float4x4 &mat, + const Span positions, + const Span verts, + const MutableSpan r_distances, + const MutableSpan factors) { BLI_assert(verts.size() == factors.size()); BLI_assert(verts.size() == r_distances.size()); @@ -7023,12 +7010,12 @@ void calc_cube_distance_falloff(SculptSession &ss, } } -void calc_cube_distance_falloff(SculptSession &ss, - const Brush &brush, - const float4x4 &mat, - const Span positions, - const MutableSpan r_distances, - const MutableSpan factors) +void calc_brush_cube_distances(SculptSession &ss, + const Brush &brush, + const float4x4 &mat, + const Span positions, + const MutableSpan r_distances, + const MutableSpan factors) { BLI_assert(positions.size() == factors.size()); BLI_assert(positions.size() == r_distances.size());