diff --git a/scripts/startup/bl_ui/properties_grease_pencil_common.py b/scripts/startup/bl_ui/properties_grease_pencil_common.py index 5326eae1c7f..d83b0ea912c 100644 --- a/scripts/startup/bl_ui/properties_grease_pencil_common.py +++ b/scripts/startup/bl_ui/properties_grease_pencil_common.py @@ -184,8 +184,8 @@ class GreasePencilBrushFalloff: row = col.row(align=True) col.prop(brush, "curve_preset", text="") - if brush.curve_preset == 'CUSTOM': - layout.template_curve_mapping(brush, "curve", brush=True, use_negative_slope=True) + if brush.curve_distance_falloff_preset == 'CUSTOM': + layout.template_curve_mapping(brush, "curve_distance_falloff", brush=True, use_negative_slope=True) col = layout.column(align=True) row = col.row(align=True) diff --git a/scripts/startup/bl_ui/properties_paint_common.py b/scripts/startup/bl_ui/properties_paint_common.py index f69dad5bf91..5635e733c71 100644 --- a/scripts/startup/bl_ui/properties_paint_common.py +++ b/scripts/startup/bl_ui/properties_paint_common.py @@ -630,7 +630,7 @@ class FalloffPanel(BrushPanel): if not super().poll(context): return False settings = cls.paint_settings(context) - if not (settings and settings.brush and settings.brush.curve): + if not (settings and settings.brush and settings.brush.curve_distance_falloff): return False if cls.get_brush_mode(context) == 'SCULPT_CURVES': brush = settings.brush @@ -654,8 +654,8 @@ class FalloffPanel(BrushPanel): row = col.row(align=True) col.prop(brush, "curve_preset", text="") - if brush.curve_preset == 'CUSTOM': - layout.template_curve_mapping(brush, "curve", brush=True, use_negative_slope=True) + if brush.curve_distance_falloff_preset == 'CUSTOM': + layout.template_curve_mapping(brush, "curve_distance_falloff", brush=True, use_negative_slope=True) col = layout.column(align=True) row = col.row(align=True) diff --git a/scripts/startup/bl_ui/space_view3d_toolbar.py b/scripts/startup/bl_ui/space_view3d_toolbar.py index f6d51255abc..6991121ef19 100644 --- a/scripts/startup/bl_ui/space_view3d_toolbar.py +++ b/scripts/startup/bl_ui/space_view3d_toolbar.py @@ -871,8 +871,8 @@ class VIEW3D_PT_tools_weight_gradient(Panel, View3DPaintPanel): col = layout.column(align=True) col.prop(brush, "curve_preset", expand=True) - if brush.curve_preset == 'CUSTOM': - layout.template_curve_mapping(brush, "curve", brush=True) + if brush.curve_distance_falloff_preset == 'CUSTOM': + layout.template_curve_mapping(brush, "curve_distance_falloff", brush=True) col = layout.column(align=True) row = col.row(align=True) @@ -1616,7 +1616,7 @@ class VIEW3D_PT_tools_grease_pencil_brush_weight_falloff(GreasePencilBrushFallof tool_settings = context.tool_settings settings = tool_settings.gpencil_weight_paint brush = settings.brush - return (brush and brush.curve) + return (brush and brush.curve_distance_falloff) class VIEW3D_PT_tools_grease_pencil_weight_options(Panel, View3DPanel, GreasePencilWeightPanel): @@ -1719,7 +1719,7 @@ class VIEW3D_PT_tools_grease_pencil_brush_vertex_falloff(GreasePencilBrushFallof def poll(cls, context): tool_settings = context.tool_settings settings = tool_settings.gpencil_vertex_paint - return (settings and settings.brush and settings.brush.curve) + return (settings and settings.brush and settings.brush.curve_distance_falloff) class VIEW3D_PT_tools_grease_pencil_brush_vertex_palette(View3DPanel, Panel): diff --git a/source/blender/blenkernel/intern/brush.cc b/source/blender/blenkernel/intern/brush.cc index 79c56bbc82e..e3d4e3ba864 100644 --- a/source/blender/blenkernel/intern/brush.cc +++ b/source/blender/blenkernel/intern/brush.cc @@ -82,7 +82,7 @@ static void brush_copy_data(Main * /*bmain*/, brush_dst->preview = nullptr; } - brush_dst->curve = BKE_curvemapping_copy(brush_src->curve); + brush_dst->curve_distance_falloff = BKE_curvemapping_copy(brush_src->curve_distance_falloff); brush_dst->automasking_cavity_curve = BKE_curvemapping_copy(brush_src->automasking_cavity_curve); brush_dst->curve_rand_hue = BKE_curvemapping_copy(brush_src->curve_rand_hue); @@ -130,7 +130,7 @@ static void brush_copy_data(Main * /*bmain*/, static void brush_free_data(ID *id) { Brush *brush = reinterpret_cast(id); - BKE_curvemapping_free(brush->curve); + BKE_curvemapping_free(brush->curve_distance_falloff); BKE_curvemapping_free(brush->automasking_cavity_curve); BKE_curvemapping_free(brush->curve_rand_hue); @@ -236,8 +236,8 @@ static void brush_blend_write(BlendWriter *writer, ID *id, const void *id_addres BLO_write_id_struct(writer, Brush, id_address, &brush->id); BKE_id_blend_write(writer, &brush->id); - if (brush->curve) { - BKE_curvemapping_blend_write(writer, brush->curve); + if (brush->curve_distance_falloff) { + BKE_curvemapping_blend_write(writer, brush->curve_distance_falloff); } if (brush->automasking_cavity_curve) { @@ -311,12 +311,12 @@ static void brush_blend_read_data(BlendDataReader *reader, ID *id) Brush *brush = reinterpret_cast(id); /* Falloff curve. */ - BLO_read_struct(reader, CurveMapping, &brush->curve); + BLO_read_struct(reader, CurveMapping, &brush->curve_distance_falloff); BLO_read_struct(reader, ColorBand, &brush->gradient); - if (brush->curve) { - BKE_curvemapping_blend_read(reader, brush->curve); + if (brush->curve_distance_falloff) { + BKE_curvemapping_blend_read(reader, brush->curve_distance_falloff); } else { BKE_brush_curve_preset(brush, CURVE_PRESET_SHARP); @@ -878,14 +878,14 @@ void BKE_brush_curve_preset(Brush *b, eCurveMappingPreset preset) CurveMapping *cumap = nullptr; CurveMap *cuma = nullptr; - if (!b->curve) { - b->curve = BKE_curvemapping_add(1, 0, 0, 1, 1); + if (!b->curve_distance_falloff) { + b->curve_distance_falloff = BKE_curvemapping_add(1, 0, 0, 1, 1); } - cumap = b->curve; + cumap = b->curve_distance_falloff; cumap->flag &= ~CUMA_EXTEND_EXTRAPOLATE; cumap->preset = preset; - cuma = b->curve->cm; + cuma = b->curve_distance_falloff->cm; BKE_curvemap_reset(cuma, &cumap->clipr, cumap->preset, CURVEMAP_SLOPE_NEGATIVE); BKE_curvemapping_changed(cumap, false); BKE_brush_tag_unsaved_changes(b); @@ -1617,7 +1617,8 @@ float BKE_brush_curve_strength(const eBrushCurvePreset preset, float BKE_brush_curve_strength(const Brush *br, float p, const float len) { - return BKE_brush_curve_strength(eBrushCurvePreset(br->curve_preset), br->curve, p, len); + return BKE_brush_curve_strength( + eBrushCurvePreset(br->curve_distance_falloff_preset), br->curve_distance_falloff, p, len); } float BKE_brush_curve_strength_clamped(const Brush *br, float p, const float len) @@ -1666,7 +1667,7 @@ ImBuf *BKE_brush_gen_radial_control_imbuf(Brush *br, bool secondary, bool displa int side = 512; int half = side / 2; - BKE_curvemapping_init(br->curve); + BKE_curvemapping_init(br->curve_distance_falloff); float *rect_float = MEM_calloc_arrayN(size_t(side) * size_t(side), "radial control rect"); IMB_assign_float_buffer(im, rect_float, IB_DO_NOT_TAKE_OWNERSHIP); diff --git a/source/blender/blenkernel/intern/paint.cc b/source/blender/blenkernel/intern/paint.cc index ee47ece8927..777aea3a4cc 100644 --- a/source/blender/blenkernel/intern/paint.cc +++ b/source/blender/blenkernel/intern/paint.cc @@ -284,7 +284,7 @@ void BKE_paint_invalidate_cursor_overlay(Scene *scene, ViewLayer *view_layer, Cu } Brush *br = BKE_paint_brush(paint); - if (br && br->curve == curve) { + if (br && br->curve_distance_falloff == curve) { overlay_flags |= PAINT_OVERLAY_INVALID_CURVE; } } diff --git a/source/blender/blenloader/intern/versioning_250.cc b/source/blender/blenloader/intern/versioning_250.cc index 3f5d88038b8..bbd2de7282d 100644 --- a/source/blender/blenloader/intern/versioning_250.cc +++ b/source/blender/blenloader/intern/versioning_250.cc @@ -1391,8 +1391,8 @@ void blo_do_versions_250(FileData *fd, Library * /*lib*/, Main *bmain) if (!MAIN_VERSION_FILE_ATLEAST(bmain, 252, 1)) { LISTBASE_FOREACH (Brush *, brush, &bmain->brushes) { - if (brush->curve) { - brush->curve->preset = CURVE_PRESET_SMOOTH; + if (brush->curve_distance_falloff) { + brush->curve_distance_falloff->preset = CURVE_PRESET_SMOOTH; } } diff --git a/source/blender/blenloader/intern/versioning_280.cc b/source/blender/blenloader/intern/versioning_280.cc index e8252d99b7c..a6ca2c95d6a 100644 --- a/source/blender/blenloader/intern/versioning_280.cc +++ b/source/blender/blenloader/intern/versioning_280.cc @@ -838,8 +838,8 @@ static void do_version_curvemapping_walker(Main *bmain, void (*callback)(CurveMa FOREACH_NODETREE_END; LISTBASE_FOREACH (Brush *, brush, &bmain->brushes) { - if (brush->curve) { - callback(brush->curve); + if (brush->curve_distance_falloff) { + callback(brush->curve_distance_falloff); } if (brush->gpencil_settings) { if (brush->gpencil_settings->curve_sensitivity) { diff --git a/source/blender/blenloader/intern/versioning_300.cc b/source/blender/blenloader/intern/versioning_300.cc index 1ed48397e92..2a36e208122 100644 --- a/source/blender/blenloader/intern/versioning_300.cc +++ b/source/blender/blenloader/intern/versioning_300.cc @@ -3302,7 +3302,7 @@ void blo_do_versions_300(FileData *fd, Library * /*lib*/, Main *bmain) br->spacing = 5; br->flag &= ~BRUSH_ALPHA_PRESSURE; br->flag &= ~BRUSH_SPACE_ATTEN; - br->curve_preset = BRUSH_CURVE_SPHERE; + br->curve_distance_falloff_preset = BRUSH_CURVE_SPHERE; } } @@ -3456,7 +3456,7 @@ void blo_do_versions_300(FileData *fd, Library * /*lib*/, Main *bmain) br->spacing = 5; br->flag &= ~BRUSH_ALPHA_PRESSURE; br->flag &= ~BRUSH_SPACE_ATTEN; - br->curve_preset = BRUSH_CURVE_SPHERE; + br->curve_distance_falloff_preset = BRUSH_CURVE_SPHERE; } } diff --git a/source/blender/editors/sculpt_paint/brushes/clay_strips.cc b/source/blender/editors/sculpt_paint/brushes/clay_strips.cc index 9393df93c7c..101988611e7 100644 --- a/source/blender/editors/sculpt_paint/brushes/clay_strips.cc +++ b/source/blender/editors/sculpt_paint/brushes/clay_strips.cc @@ -169,8 +169,11 @@ static void calc_faces(const Depsgraph &depsgraph, calc_brush_cube_distances(brush, xy_positions, distances); filter_distances_with_radius(1.0f, distances, factors); apply_hardness_to_distances(1.0f, cache.hardness, distances); - BKE_brush_calc_curve_factors( - eBrushCurvePreset(brush.curve_preset), brush.curve, distances, 1.0f, factors); + BKE_brush_calc_curve_factors(eBrushCurvePreset(brush.curve_distance_falloff_preset), + brush.curve_distance_falloff, + distances, + 1.0f, + factors); auto_mask::calc_vert_factors(depsgraph, object, cache.automasking.get(), node, verts, factors); @@ -221,8 +224,11 @@ static void calc_grids(const Depsgraph &depsgraph, calc_brush_cube_distances(brush, xy_positions, distances); filter_distances_with_radius(1.0f, distances, factors); apply_hardness_to_distances(1.0f, cache.hardness, distances); - BKE_brush_calc_curve_factors( - eBrushCurvePreset(brush.curve_preset), brush.curve, distances, 1.0f, factors); + BKE_brush_calc_curve_factors(eBrushCurvePreset(brush.curve_distance_falloff_preset), + brush.curve_distance_falloff, + distances, + 1.0f, + factors); auto_mask::calc_grids_factors(depsgraph, object, cache.automasking.get(), node, grids, factors); @@ -272,8 +278,11 @@ static void calc_bmesh(const Depsgraph &depsgraph, calc_brush_cube_distances(brush, xy_positions, distances); filter_distances_with_radius(1.0f, distances, factors); apply_hardness_to_distances(1.0f, cache.hardness, distances); - BKE_brush_calc_curve_factors( - eBrushCurvePreset(brush.curve_preset), brush.curve, distances, 1.0f, factors); + BKE_brush_calc_curve_factors(eBrushCurvePreset(brush.curve_distance_falloff_preset), + brush.curve_distance_falloff, + distances, + 1.0f, + factors); auto_mask::calc_vert_factors(depsgraph, object, cache.automasking.get(), node, verts, factors); diff --git a/source/blender/editors/sculpt_paint/brushes/multiplane_scrape.cc b/source/blender/editors/sculpt_paint/brushes/multiplane_scrape.cc index 3ca84856b86..07b7d6421c2 100644 --- a/source/blender/editors/sculpt_paint/brushes/multiplane_scrape.cc +++ b/source/blender/editors/sculpt_paint/brushes/multiplane_scrape.cc @@ -163,8 +163,11 @@ static void sample_node_surface_mesh(const Depsgraph &depsgraph, calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); filter_distances_with_radius(radius, distances, factors); apply_hardness_to_distances(radius, cache.hardness, distances); - BKE_brush_calc_curve_factors( - eBrushCurvePreset(brush.curve_preset), brush.curve, distances, radius, factors); + BKE_brush_calc_curve_factors(eBrushCurvePreset(brush.curve_distance_falloff_preset), + brush.curve_distance_falloff, + distances, + radius, + factors); tls.local_positions.resize(verts.size()); MutableSpan local_positions = tls.local_positions; @@ -206,8 +209,11 @@ static void sample_node_surface_grids(const Depsgraph &depsgraph, calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); filter_distances_with_radius(radius, distances, factors); apply_hardness_to_distances(radius, cache.hardness, distances); - BKE_brush_calc_curve_factors( - eBrushCurvePreset(brush.curve_preset), brush.curve, distances, radius, factors); + BKE_brush_calc_curve_factors(eBrushCurvePreset(brush.curve_distance_falloff_preset), + brush.curve_distance_falloff, + distances, + radius, + factors); tls.local_positions.resize(positions.size()); MutableSpan local_positions = tls.local_positions; @@ -252,8 +258,11 @@ static void sample_node_surface_bmesh(const Depsgraph &depsgraph, calc_brush_distances(ss, positions, eBrushFalloffShape(brush.falloff_shape), distances); filter_distances_with_radius(radius, distances, factors); apply_hardness_to_distances(radius, cache.hardness, distances); - BKE_brush_calc_curve_factors( - eBrushCurvePreset(brush.curve_preset), brush.curve, distances, radius, factors); + BKE_brush_calc_curve_factors(eBrushCurvePreset(brush.curve_distance_falloff_preset), + brush.curve_distance_falloff, + distances, + radius, + factors); tls.local_positions.resize(verts.size()); MutableSpan local_positions = tls.local_positions; diff --git a/source/blender/editors/sculpt_paint/brushes/plane.cc b/source/blender/editors/sculpt_paint/brushes/plane.cc index f2786bead3e..c09ed72ebf2 100644 --- a/source/blender/editors/sculpt_paint/brushes/plane.cc +++ b/source/blender/editors/sculpt_paint/brushes/plane.cc @@ -225,8 +225,11 @@ static void calc_faces(const Depsgraph &depsgraph, filter_distances_with_radius(1.0f, distances, factors); apply_hardness_to_distances(1.0f, cache.hardness, distances); - BKE_brush_calc_curve_factors( - eBrushCurvePreset(brush.curve_preset), brush.curve, distances, 1.0f, factors); + BKE_brush_calc_curve_factors(eBrushCurvePreset(brush.curve_distance_falloff_preset), + brush.curve_distance_falloff, + distances, + 1.0f, + factors); auto_mask::calc_vert_factors(depsgraph, object, cache.automasking.get(), node, verts, factors); @@ -279,8 +282,11 @@ static void calc_grids(const Depsgraph &depsgraph, filter_distances_with_radius(1.0f, distances, factors); apply_hardness_to_distances(1.0f, cache.hardness, distances); - BKE_brush_calc_curve_factors( - eBrushCurvePreset(brush.curve_preset), brush.curve, distances, 1.0f, factors); + BKE_brush_calc_curve_factors(eBrushCurvePreset(brush.curve_distance_falloff_preset), + brush.curve_distance_falloff, + distances, + 1.0f, + factors); auto_mask::calc_grids_factors(depsgraph, object, cache.automasking.get(), node, grids, factors); @@ -331,8 +337,11 @@ static void calc_bmesh(const Depsgraph &depsgraph, filter_distances_with_radius(1.0f, distances, factors); apply_hardness_to_distances(1.0f, cache.hardness, distances); - BKE_brush_calc_curve_factors( - eBrushCurvePreset(brush.curve_preset), brush.curve, distances, 1.0f, factors); + BKE_brush_calc_curve_factors(eBrushCurvePreset(brush.curve_distance_falloff_preset), + brush.curve_distance_falloff, + distances, + 1.0f, + factors); auto_mask::calc_vert_factors(depsgraph, object, cache.automasking.get(), node, verts, factors); diff --git a/source/blender/editors/sculpt_paint/grease_pencil_erase.cc b/source/blender/editors/sculpt_paint/grease_pencil_erase.cc index c15b4e58d9f..9de9a14ca58 100644 --- a/source/blender/editors/sculpt_paint/grease_pencil_erase.cc +++ b/source/blender/editors/sculpt_paint/grease_pencil_erase.cc @@ -1061,7 +1061,7 @@ void EraseOperation::on_stroke_begin(const bContext &C, const InputSample & /*st } BLI_assert(brush->gpencil_settings != nullptr); - BKE_curvemapping_init(brush->curve); + BKE_curvemapping_init(brush->curve_distance_falloff); BKE_curvemapping_init(brush->gpencil_settings->curve_strength); eraser_mode_ = eGP_BrushEraserMode(brush->gpencil_settings->eraser_mode); diff --git a/source/blender/editors/sculpt_paint/grease_pencil_paint_common.cc b/source/blender/editors/sculpt_paint/grease_pencil_paint_common.cc index 41e58cc3361..c7a1fa2a118 100644 --- a/source/blender/editors/sculpt_paint/grease_pencil_paint_common.cc +++ b/source/blender/editors/sculpt_paint/grease_pencil_paint_common.cc @@ -73,7 +73,7 @@ void init_brush(Brush &brush) BKE_brush_init_gpencil_settings(&brush); } BLI_assert(brush.gpencil_settings != nullptr); - BKE_curvemapping_init(brush.curve); + BKE_curvemapping_init(brush.curve_distance_falloff); BKE_curvemapping_init(brush.gpencil_settings->curve_strength); BKE_curvemapping_init(brush.gpencil_settings->curve_sensitivity); BKE_curvemapping_init(brush.gpencil_settings->curve_jitter); diff --git a/source/blender/editors/sculpt_paint/grease_pencil_sculpt_smooth.cc b/source/blender/editors/sculpt_paint/grease_pencil_sculpt_smooth.cc index e76cdf7e631..bc7deb548ab 100644 --- a/source/blender/editors/sculpt_paint/grease_pencil_sculpt_smooth.cc +++ b/source/blender/editors/sculpt_paint/grease_pencil_sculpt_smooth.cc @@ -76,7 +76,7 @@ void SmoothOperation::toggle_smooth_brush_on(const bContext &C) const int current_brush_size = BKE_brush_size_get(paint, current_brush); BKE_brush_size_set(paint, smooth_brush, current_brush_size); - BKE_curvemapping_init(smooth_brush->curve); + BKE_curvemapping_init(smooth_brush->curve_distance_falloff); } void SmoothOperation::toggle_smooth_brush_off(const bContext &C) diff --git a/source/blender/editors/sculpt_paint/grease_pencil_tint.cc b/source/blender/editors/sculpt_paint/grease_pencil_tint.cc index 39c18482225..2b574d9d30e 100644 --- a/source/blender/editors/sculpt_paint/grease_pencil_tint.cc +++ b/source/blender/editors/sculpt_paint/grease_pencil_tint.cc @@ -82,7 +82,7 @@ void TintOperation::on_stroke_begin(const bContext &C, const InputSample & /*sta } BLI_assert(brush->gpencil_settings != nullptr); - BKE_curvemapping_init(brush->curve); + BKE_curvemapping_init(brush->curve_distance_falloff); radius_ = brush->size / 2.0f; strength_ = brush->alpha; diff --git a/source/blender/editors/sculpt_paint/grease_pencil_weight_paint.hh b/source/blender/editors/sculpt_paint/grease_pencil_weight_paint.hh index e5550b6dcae..a94746fc3bd 100644 --- a/source/blender/editors/sculpt_paint/grease_pencil_weight_paint.hh +++ b/source/blender/editors/sculpt_paint/grease_pencil_weight_paint.hh @@ -137,7 +137,7 @@ class WeightPaintOperation : public GreasePencilStrokeOperation { this->mouse_position_previous = start_sample.mouse_position; this->invert_brush_weight = false; - BKE_curvemapping_init(brush->curve); + BKE_curvemapping_init(brush->curve_distance_falloff); /* Auto-normalize weights is only applied when the object is deformed by an armature. */ const ToolSettings *ts = CTX_data_tool_settings(&C); diff --git a/source/blender/editors/sculpt_paint/paint_cursor.cc b/source/blender/editors/sculpt_paint/paint_cursor.cc index c91d68a94b9..65238f7de85 100644 --- a/source/blender/editors/sculpt_paint/paint_cursor.cc +++ b/source/blender/editors/sculpt_paint/paint_cursor.cc @@ -429,7 +429,7 @@ static int load_tex_cursor(Brush *br, ViewContext *vc, float zoom) int size; const bool refresh = !cursor_snap.overlay_texture || (overlay_flags & PAINT_OVERLAY_INVALID_CURVE) || cursor_snap.zoom != zoom || - cursor_snap.curve_preset != br->curve_preset; + cursor_snap.curve_preset != br->curve_distance_falloff_preset; init = (cursor_snap.overlay_texture != nullptr); @@ -463,7 +463,7 @@ static int load_tex_cursor(Brush *br, ViewContext *vc, float zoom) } buffer = MEM_malloc_arrayN(size * size, "load_tex"); - BKE_curvemapping_init(br->curve); + BKE_curvemapping_init(br->curve_distance_falloff); LoadTexData data{}; data.br = br; @@ -500,7 +500,7 @@ static int load_tex_cursor(Brush *br, ViewContext *vc, float zoom) size = cursor_snap.size; } - cursor_snap.curve_preset = br->curve_preset; + cursor_snap.curve_preset = br->curve_distance_falloff_preset; BKE_paint_reset_overlay_invalid(PAINT_OVERLAY_INVALID_CURVE); return 1; diff --git a/source/blender/editors/sculpt_paint/paint_image_2d_curve_mask.cc b/source/blender/editors/sculpt_paint/paint_image_2d_curve_mask.cc index 9f2ea11e356..869351a5c84 100644 --- a/source/blender/editors/sculpt_paint/paint_image_2d_curve_mask.cc +++ b/source/blender/editors/sculpt_paint/paint_image_2d_curve_mask.cc @@ -112,7 +112,8 @@ static bool is_sampled_curve_valid(const CurveMaskCache *curve_mask_cache, const if (curve_mask_cache->sampled_curve == nullptr) { return false; } - return curve_mask_cache->last_curve_timestamp == brush->curve->changed_timestamp; + return curve_mask_cache->last_curve_timestamp == + brush->curve_distance_falloff->changed_timestamp; } static void sampled_curve_free(CurveMaskCache *curve_mask_cache) @@ -132,7 +133,7 @@ static void update_sampled_curve(CurveMaskCache *curve_mask_cache, const Brush * const float sample_weight = BKE_brush_curve_strength_clamped(brush, len, 1.0f); curve_mask_cache->sampled_curve[i] = sample_weight; } - curve_mask_cache->last_curve_timestamp = brush->curve->changed_timestamp; + curve_mask_cache->last_curve_timestamp = brush->curve_distance_falloff->changed_timestamp; } static size_t diameter_to_curve_mask_size(const int diameter) diff --git a/source/blender/editors/sculpt_paint/paint_stroke.cc b/source/blender/editors/sculpt_paint/paint_stroke.cc index cdb13d2d859..e4ca791eec4 100644 --- a/source/blender/editors/sculpt_paint/paint_stroke.cc +++ b/source/blender/editors/sculpt_paint/paint_stroke.cc @@ -988,7 +988,7 @@ PaintStroke *paint_stroke_new(bContext *C, } /* initialize here to avoid initialization conflict with threaded strokes */ - BKE_curvemapping_init(br->curve); + BKE_curvemapping_init(br->curve_distance_falloff); if (paint->flags & PAINT_USE_CAVITY_MASK) { BKE_curvemapping_init(paint->cavity_curve); } diff --git a/source/blender/editors/sculpt_paint/paint_utils.cc b/source/blender/editors/sculpt_paint/paint_utils.cc index 8082774536d..439ba3de65d 100644 --- a/source/blender/editors/sculpt_paint/paint_utils.cc +++ b/source/blender/editors/sculpt_paint/paint_utils.cc @@ -189,7 +189,7 @@ static wmOperatorStatus brush_curve_preset_exec(bContext *C, wmOperator *op) Scene *scene = CTX_data_scene(C); ViewLayer *view_layer = CTX_data_view_layer(C); BKE_brush_curve_preset(br, eCurveMappingPreset(RNA_enum_get(op->ptr, "shape"))); - BKE_paint_invalidate_cursor_overlay(scene, view_layer, br->curve); + BKE_paint_invalidate_cursor_overlay(scene, view_layer, br->curve_distance_falloff); } return OPERATOR_FINISHED; @@ -199,7 +199,7 @@ static bool brush_curve_preset_poll(bContext *C) { Brush *br = BKE_paint_brush(BKE_paint_get_active_from_context(C)); - return br && br->curve; + return br && br->curve_distance_falloff; } static const EnumPropertyItem prop_shape_items[] = { diff --git a/source/blender/editors/sculpt_paint/paint_vertex.cc b/source/blender/editors/sculpt_paint/paint_vertex.cc index 9d933a19322..5d7eedbe607 100644 --- a/source/blender/editors/sculpt_paint/paint_vertex.cc +++ b/source/blender/editors/sculpt_paint/paint_vertex.cc @@ -599,7 +599,7 @@ void smooth_brush_toggle_on(const bContext *C, Paint *paint, StrokeCache *cache) cache->saved_active_brush = cur_brush; cache->saved_smooth_size = BKE_brush_size_get(paint, smooth_brush); BKE_brush_size_set(paint, smooth_brush, cur_brush_size); - BKE_curvemapping_init(smooth_brush->curve); + BKE_curvemapping_init(smooth_brush->curve_distance_falloff); } /** \} */ } // namespace blender::ed::sculpt_paint::vwpaint diff --git a/source/blender/editors/sculpt_paint/paint_vertex_weight_ops.cc b/source/blender/editors/sculpt_paint/paint_vertex_weight_ops.cc index 9eb74cd8517..cc290d0f061 100644 --- a/source/blender/editors/sculpt_paint/paint_vertex_weight_ops.cc +++ b/source/blender/editors/sculpt_paint/paint_vertex_weight_ops.cc @@ -819,7 +819,7 @@ static wmOperatorStatus paint_weight_gradient_exec(bContext *C, wmOperator *op) VPaint *wp = ts->wpaint; Brush *brush = BKE_paint_brush(&wp->paint); - BKE_curvemapping_init(brush->curve); + BKE_curvemapping_init(brush->curve_distance_falloff); data.brush = brush; data.weightpaint = BKE_brush_weight_get(&wp->paint, brush); diff --git a/source/blender/editors/sculpt_paint/sculpt.cc b/source/blender/editors/sculpt_paint/sculpt.cc index 71f3a162e41..a1eb9e0dcd1 100644 --- a/source/blender/editors/sculpt_paint/sculpt.cc +++ b/source/blender/editors/sculpt_paint/sculpt.cc @@ -3902,7 +3902,7 @@ static void smooth_brush_toggle_on(const bContext *C, Paint *paint, StrokeCache cache->saved_smooth_size = BKE_brush_size_get(paint, smooth_brush); BKE_brush_size_set(paint, smooth_brush, cur_brush_size); - BKE_curvemapping_init(smooth_brush->curve); + BKE_curvemapping_init(smooth_brush->curve_distance_falloff); } static void smooth_brush_toggle_off(Paint *paint, StrokeCache *cache) @@ -7185,8 +7185,11 @@ void calc_brush_strength_factors(const StrokeCache &cache, const Span distances, const MutableSpan factors) { - BKE_brush_calc_curve_factors( - eBrushCurvePreset(brush.curve_preset), brush.curve, distances, cache.radius, factors); + BKE_brush_calc_curve_factors(eBrushCurvePreset(brush.curve_distance_falloff_preset), + brush.curve_distance_falloff, + distances, + cache.radius, + factors); } void calc_brush_texture_factors(const SculptSession &ss, diff --git a/source/blender/editors/sculpt_paint/sculpt_boundary.cc b/source/blender/editors/sculpt_paint/sculpt_boundary.cc index 104b0af48b9..9cf47601e27 100644 --- a/source/blender/editors/sculpt_paint/sculpt_boundary.cc +++ b/source/blender/editors/sculpt_paint/sculpt_boundary.cc @@ -2891,7 +2891,7 @@ static void init_falloff_mesh(const Span mask, boundary.edit_info.strength_factor.size()); const int num_elements = boundary.edit_info.strength_factor.size(); - BKE_curvemapping_init(brush.curve); + BKE_curvemapping_init(brush.curve_distance_falloff); for (const int i : IndexRange(num_elements)) { if (boundary.edit_info.propagation_steps_num[i] != BOUNDARY_STEPS_NONE) { @@ -2937,7 +2937,7 @@ static void init_falloff_grids(const SubdivCCG &subdiv_ccg, const CCGKey key = BKE_subdiv_ccg_key_top_level(subdiv_ccg); - BKE_curvemapping_init(brush.curve); + BKE_curvemapping_init(brush.curve_distance_falloff); for (const int grid : IndexRange(subdiv_ccg.grids_num)) { for (const int index : bke::ccg::grid_range(key, grid)) { @@ -2986,7 +2986,7 @@ static void init_falloff_bmesh(BMesh *bm, const int num_elements = boundary.edit_info.strength_factor.size(); - BKE_curvemapping_init(brush.curve); + BKE_curvemapping_init(brush.curve_distance_falloff); for (const int i : IndexRange(num_elements)) { if (boundary.edit_info.propagation_steps_num[i] != BOUNDARY_STEPS_NONE) { diff --git a/source/blender/editors/sculpt_paint/sculpt_expand.cc b/source/blender/editors/sculpt_paint/sculpt_expand.cc index f28419fc52e..a72ef7844d2 100644 --- a/source/blender/editors/sculpt_paint/sculpt_expand.cc +++ b/source/blender/editors/sculpt_paint/sculpt_expand.cc @@ -2646,7 +2646,7 @@ static void cache_initial_config_set(bContext *C, wmOperator *op, Cache &expand_ const Sculpt &sd = *CTX_data_tool_settings(C)->sculpt; expand_cache.paint = paint; expand_cache.brush = BKE_paint_brush_for_read(&sd.paint); - BKE_curvemapping_init(expand_cache.brush->curve); + BKE_curvemapping_init(expand_cache.brush->curve_distance_falloff); copy_v4_fl(expand_cache.fill_color, 1.0f); copy_v3_v3(expand_cache.fill_color, BKE_brush_color_get(paint, expand_cache.brush)); diff --git a/source/blender/editors/sculpt_paint/sculpt_paint_color.cc b/source/blender/editors/sculpt_paint/sculpt_paint_color.cc index 37acfb909de..e53bc97a3ae 100644 --- a/source/blender/editors/sculpt_paint/sculpt_paint_color.cc +++ b/source/blender/editors/sculpt_paint/sculpt_paint_color.cc @@ -399,8 +399,11 @@ static void do_paint_brush_task(const Depsgraph &depsgraph, } filter_distances_with_radius(radius, distances, factors); apply_hardness_to_distances(radius, cache.hardness, distances); - BKE_brush_calc_curve_factors( - eBrushCurvePreset(brush.curve_preset), brush.curve, distances, radius, factors); + BKE_brush_calc_curve_factors(eBrushCurvePreset(brush.curve_distance_falloff_preset), + brush.curve_distance_falloff, + distances, + radius, + factors); MutableSpan auto_mask; if (cache.automasking) { @@ -574,7 +577,7 @@ void do_paint_brush(const Depsgraph &depsgraph, return; } - BKE_curvemapping_init(brush.curve); + BKE_curvemapping_init(brush.curve_distance_falloff); float4x4 mat; @@ -901,7 +904,7 @@ void do_smear_brush(const Depsgraph &depsgraph, }); } - BKE_curvemapping_init(brush.curve); + BKE_curvemapping_init(brush.curve_distance_falloff); /* Smooth colors mode. */ if (ss.cache->alt_smooth) { diff --git a/source/blender/editors/sculpt_paint/sculpt_pose.cc b/source/blender/editors/sculpt_paint/sculpt_pose.cc index 7b83f673131..4443e65bd5b 100644 --- a/source/blender/editors/sculpt_paint/sculpt_pose.cc +++ b/source/blender/editors/sculpt_paint/sculpt_pose.cc @@ -1949,7 +1949,7 @@ std::unique_ptr preview_ik_chain_init(const Depsgraph static void sculpt_pose_do_translate_deform(SculptSession &ss, const Brush &brush) { IKChain &ik_chain = *ss.cache->pose_ik_chain; - BKE_curvemapping_init(brush.curve); + BKE_curvemapping_init(brush.curve_distance_falloff); solve_translate_chain(ik_chain, ss.cache->grab_delta); } @@ -1988,7 +1988,7 @@ static void calc_twist_deform(SculptSession &ss, const Brush &brush) /* Calculate the maximum roll. 0.02 radians per pixel works fine. */ float roll = (ss.cache->initial_mouse[0] - ss.cache->mouse[0]) * ss.cache->bstrength * 0.02f; - BKE_curvemapping_init(brush.curve); + BKE_curvemapping_init(brush.curve_distance_falloff); solve_roll_chain(ik_chain, brush, roll); } diff --git a/source/blender/makesdna/DNA_brush_types.h b/source/blender/makesdna/DNA_brush_types.h index 3950347422a..48bb1baa6da 100644 --- a/source/blender/makesdna/DNA_brush_types.h +++ b/source/blender/makesdna/DNA_brush_types.h @@ -172,8 +172,7 @@ typedef struct Brush { ID id; - /** Falloff curve. */ - struct CurveMapping *curve; + struct CurveMapping *curve_distance_falloff; struct MTex mtex; struct MTex mask_mtex; @@ -331,7 +330,7 @@ typedef struct Brush { float texture_sample_bias; - int curve_preset; + int curve_distance_falloff_preset; /* Maximum distance to search fake neighbors from a vertex. */ float disconnected_distance_max; diff --git a/source/blender/makesdna/intern/dna_rename_defs.h b/source/blender/makesdna/intern/dna_rename_defs.h index 576c82be337..fb34c3fef6f 100644 --- a/source/blender/makesdna/intern/dna_rename_defs.h +++ b/source/blender/makesdna/intern/dna_rename_defs.h @@ -66,6 +66,8 @@ DNA_STRUCT_RENAME_MEMBER(Bone, scaleIn, scale_in_x) DNA_STRUCT_RENAME_MEMBER(Bone, scaleOut, scale_out_x) DNA_STRUCT_RENAME_MEMBER(Bone, scale_in_y, scale_in_z) DNA_STRUCT_RENAME_MEMBER(Bone, scale_out_y, scale_out_z) +DNA_STRUCT_RENAME_MEMBER(Brush, curve, curve_distance_falloff) +DNA_STRUCT_RENAME_MEMBER(Brush, curve_preset, curve_distance_falloff_preset) DNA_STRUCT_RENAME_MEMBER(Brush, curves_sculpt_tool, curves_sculpt_brush_type) DNA_STRUCT_RENAME_MEMBER(Brush, gpencil_sculpt_tool, gpencil_sculpt_brush_type) DNA_STRUCT_RENAME_MEMBER(Brush, gpencil_tool, gpencil_brush_type) diff --git a/source/blender/makesrna/intern/rna_brush.cc b/source/blender/makesrna/intern/rna_brush.cc index 5d79c6a3d40..6158db84e76 100644 --- a/source/blender/makesrna/intern/rna_brush.cc +++ b/source/blender/makesrna/intern/rna_brush.cc @@ -2563,9 +2563,9 @@ static void rna_def_brush(BlenderRNA *brna) RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_MASK); RNA_def_property_update(prop, 0, "rna_Brush_update"); - prop = RNA_def_property(srna, "curve_preset", PROP_ENUM, PROP_NONE); + prop = RNA_def_property(srna, "curve_distance_falloff_preset", PROP_ENUM, PROP_NONE); RNA_def_property_enum_items(prop, rna_enum_brush_curve_preset_items); - RNA_def_property_ui_text(prop, "Curve Preset", ""); + RNA_def_property_ui_text(prop, "Falloff Curve Preset", ""); RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_CURVE_LEGACY); /* Abusing id_curve :/ */ RNA_def_property_update(prop, 0, "rna_Brush_update"); @@ -3749,9 +3749,9 @@ static void rna_def_brush(BlenderRNA *brna) prop, "Affect Alpha", "When this is disabled, lock alpha while painting"); RNA_def_property_update(prop, 0, "rna_Brush_update"); - prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE); + prop = RNA_def_property(srna, "curve_distance_falloff", PROP_POINTER, PROP_NONE); RNA_def_property_flag(prop, PROP_NEVER_NULL); - RNA_def_property_ui_text(prop, "Curve", "Editable falloff curve"); + RNA_def_property_ui_text(prop, "Falloff Curve", "Editable falloff curve"); RNA_def_property_update(prop, 0, "rna_Brush_update"); prop = RNA_def_property(srna, "paint_curve", PROP_POINTER, PROP_NONE); diff --git a/source/blender/windowmanager/intern/wm_operators.cc b/source/blender/windowmanager/intern/wm_operators.cc index 6c511bae816..08d73a7d3a7 100644 --- a/source/blender/windowmanager/intern/wm_operators.cc +++ b/source/blender/windowmanager/intern/wm_operators.cc @@ -2783,7 +2783,7 @@ static void radial_control_paint_curve(uint pos, Brush *br, float radius, int li GPU_line_width(2.0f); immUniformColor4f(0.8f, 0.8f, 0.8f, 0.85f); float step = (radius * 2.0f) / float(line_segments); - BKE_curvemapping_init(br->curve); + BKE_curvemapping_init(br->curve_distance_falloff); immBegin(GPU_PRIM_LINES, line_segments * 2); for (int i = 0; i < line_segments; i++) { float h1 = BKE_brush_curve_strength_clamped(br, fabsf((i * step) - radius), radius); diff --git a/tests/python/sculpt_paint/brush_strength_curves_test.py b/tests/python/sculpt_paint/brush_strength_curves_test.py index d2a27135a9c..bcccfd6bfdc 100644 --- a/tests/python/sculpt_paint/brush_strength_curves_test.py +++ b/tests/python/sculpt_paint/brush_strength_curves_test.py @@ -113,39 +113,39 @@ class BrushCurvesTest(unittest.TestCase): self.assertTrue(all_valid, "All position componentes should be rational values") def test_smooth_preset_curve_creates_valid_stroke(self): - bpy.context.tool_settings.sculpt.brush.curve_preset = 'SMOOTH' + bpy.context.tool_settings.sculpt.brush.curve_distance_falloff_preset = 'SMOOTH' self._check_stroke() def test_smoother_preset_curve_creates_valid_stroke(self): - bpy.context.tool_settings.sculpt.brush.curve_preset = 'SMOOTHER' + bpy.context.tool_settings.sculpt.brush.curve_distance_falloff_preset = 'SMOOTHER' self._check_stroke() def test_sphere_preset_curve_creates_valid_stroke(self): - bpy.context.tool_settings.sculpt.brush.curve_preset = 'SPHERE' + bpy.context.tool_settings.sculpt.brush.curve_distance_falloff_preset = 'SPHERE' self._check_stroke() def test_root_preset_curve_creates_valid_stroke(self): - bpy.context.tool_settings.sculpt.brush.curve_preset = 'ROOT' + bpy.context.tool_settings.sculpt.brush.curve_distance_falloff_preset = 'ROOT' self._check_stroke() def test_sharp_preset_curve_creates_valid_stroke(self): - bpy.context.tool_settings.sculpt.brush.curve_preset = 'SHARP' + bpy.context.tool_settings.sculpt.brush.curve_distance_falloff_preset = 'SHARP' self._check_stroke() def test_linear_preset_curve_creates_valid_stroke(self): - bpy.context.tool_settings.sculpt.brush.curve_preset = 'LIN' + bpy.context.tool_settings.sculpt.brush.curve_distance_falloff_preset = 'LIN' self._check_stroke() def test_sharper_preset_curve_creates_valid_stroke(self): - bpy.context.tool_settings.sculpt.brush.curve_preset = 'POW4' + bpy.context.tool_settings.sculpt.brush.curve_distance_falloff_preset = 'POW4' self._check_stroke() def test_inverse_square_preset_curve_creates_valid_stroke(self): - bpy.context.tool_settings.sculpt.brush.curve_preset = 'INVSQUARE' + bpy.context.tool_settings.sculpt.brush.curve_distance_falloff_preset = 'INVSQUARE' self._check_stroke() def test_constant_preset_curve_creates_valid_stroke(self): - bpy.context.tool_settings.sculpt.brush.curve_preset = 'CONSTANT' + bpy.context.tool_settings.sculpt.brush.curve_distance_falloff_preset = 'CONSTANT' self._check_stroke()