Fix #134706: Vertex & Weight Paint do not respect clipping

This commit adds the `filter_region_clip_factors` call to each of the
brush types in vertex and weight paint modes to ensure that the region
clip state is accurately handled.

Pull Request: https://projects.blender.org/blender/blender/pulls/134717
This commit is contained in:
Sean Kim
2025-02-18 22:21:02 +01:00
committed by Sean Kim
parent 69f16764a2
commit c07f37287c
2 changed files with 9 additions and 0 deletions

View File

@@ -1080,6 +1080,7 @@ static void do_vpaint_brush_blur_loops(const bContext *C,
tls.factors.resize(verts.size());
const MutableSpan<float> factors = tls.factors;
fill_factor_from_hide(hide_vert, verts, factors);
filter_region_clip_factors(ss, vert_positions, verts, factors);
if (!select_vert.is_empty()) {
filter_factors_with_selection(select_vert, verts, factors);
}
@@ -1235,6 +1236,7 @@ static void do_vpaint_brush_blur_verts(const bContext *C,
tls.factors.resize(verts.size());
const MutableSpan<float> factors = tls.factors;
fill_factor_from_hide(hide_vert, verts, factors);
filter_region_clip_factors(ss, vert_positions, verts, factors);
if (!select_vert.is_empty()) {
filter_factors_with_selection(select_vert, verts, factors);
}
@@ -1393,6 +1395,7 @@ static void do_vpaint_brush_smear(const bContext *C,
tls.factors.resize(verts.size());
const MutableSpan<float> factors = tls.factors;
fill_factor_from_hide(hide_vert, verts, factors);
filter_region_clip_factors(ss, vert_positions, verts, factors);
if (!select_vert.is_empty()) {
filter_factors_with_selection(select_vert, verts, factors);
}
@@ -1575,6 +1578,7 @@ static void calculate_average_color(VPaintData &vpd,
tls.factors.resize(verts.size());
const MutableSpan<float> factors = tls.factors;
fill_factor_from_hide(hide_vert, verts, factors);
filter_region_clip_factors(ss, vert_positions, verts, factors);
if (!select_vert.is_empty()) {
filter_factors_with_selection(select_vert, verts, factors);
}
@@ -1704,6 +1708,7 @@ static void vpaint_do_draw(const bContext *C,
tls.factors.resize(verts.size());
const MutableSpan<float> factors = tls.factors;
fill_factor_from_hide(hide_vert, verts, factors);
filter_region_clip_factors(ss, vert_positions, verts, factors);
if (!select_vert.is_empty()) {
filter_factors_with_selection(select_vert, verts, factors);
}

View File

@@ -1137,6 +1137,7 @@ static void do_wpaint_brush_blur(const Depsgraph &depsgraph,
tls.factors.resize(verts.size());
const MutableSpan<float> factors = tls.factors;
fill_factor_from_hide(hide_vert, verts, factors);
filter_region_clip_factors(ss, vert_positions, verts, factors);
if (!select_vert.is_empty()) {
filter_factors_with_selection(select_vert, verts, factors);
}
@@ -1255,6 +1256,7 @@ static void do_wpaint_brush_smear(const Depsgraph &depsgraph,
tls.factors.resize(verts.size());
const MutableSpan<float> factors = tls.factors;
fill_factor_from_hide(hide_vert, verts, factors);
filter_region_clip_factors(ss, vert_positions, verts, factors);
if (!select_vert.is_empty()) {
filter_factors_with_selection(select_vert, verts, factors);
}
@@ -1372,6 +1374,7 @@ static void do_wpaint_brush_draw(const Depsgraph &depsgraph,
tls.factors.resize(verts.size());
const MutableSpan<float> factors = tls.factors;
fill_factor_from_hide(hide_vert, verts, factors);
filter_region_clip_factors(ss, vert_positions, verts, factors);
if (!select_vert.is_empty()) {
filter_factors_with_selection(select_vert, verts, factors);
}
@@ -1459,6 +1462,7 @@ static float calculate_average_weight(const Depsgraph &depsgraph,
tls.factors.resize(verts.size());
const MutableSpan<float> factors = tls.factors;
fill_factor_from_hide(hide_vert, verts, factors);
filter_region_clip_factors(ss, vert_positions, verts, factors);
if (!select_vert.is_empty()) {
filter_factors_with_selection(select_vert, verts, factors);
}