[Bf-blender-cvs] [c0b0e4cd16e] sculpt-dev: Sculpt: Clay brush speedups
Joseph Eagar
noreply at git.blender.org
Wed Sep 29 10:14:51 CEST 2021
Commit: c0b0e4cd16ed41c4fd6aa356befe14e0e80bfc9d
Author: Joseph Eagar
Date: Wed Sep 29 00:15:21 2021 -0700
Branches: sculpt-dev
https://developer.blender.org/rBc0b0e4cd16ed41c4fd6aa356befe14e0e80bfc9d
Sculpt: Clay brush speedups
* Made clay brush use a spacing
of 7 for autosmooth instead of
the brush default (which is 3).
* Also fixed a few small UI issues
===================================================================
M release/scripts/startup/bl_ui/properties_paint_common.py
M source/blender/blenkernel/BKE_blender_version.h
M source/blender/blenkernel/intern/brush_channel_define.h
M source/blender/blenkernel/intern/brush_engine.c
M source/blender/blenkernel/intern/brush_engine_presets.c
M source/blender/blenloader/intern/versioning_300.c
M source/blender/makesrna/intern/rna_brush_engine.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/properties_paint_common.py b/release/scripts/startup/bl_ui/properties_paint_common.py
index d6c2c7cff3c..a9811941f38 100644
--- a/release/scripts/startup/bl_ui/properties_paint_common.py
+++ b/release/scripts/startup/bl_ui/properties_paint_common.py
@@ -358,6 +358,8 @@ class UnifiedPaintPanel:
row2.label(text=name)
row2.prop(mp0, "inherit", text="", icon="BRUSHES_ALL")
row2.prop(mp, "enabled", text="", icon="STYLUS_PRESSURE")
+ row2.prop(mp, "invert", text="", icon="ARROW_LEFTRIGHT")
+
row2.prop(mp0, "ui_expanded", text="", icon="TRIA_DOWN" if mp.ui_expanded else "TRIA_RIGHT")
if mp0.ui_expanded:
@@ -878,9 +880,18 @@ def brush_settings(layout, context, brush, popover=False):
row = layout.row(align=True)
- row.prop(brush, "hardness", slider=True)
- row.prop(brush, "invert_hardness_pressure", text="")
- row.prop(brush, "use_hardness_pressure", text="")
+ UnifiedPaintPanel.prop_unified(
+ layout,
+ context,
+ brush,
+ "hardness",
+ slider=True,
+ pressure_name = "use_hardness_pressure"
+ )
+
+ #row.prop(brush, "hardness", slider=True)
+ #row.prop(brush, "invert_hardness_pressure", text="")
+ #row.prop(brush, "use_hardness_pressure", text="")
# auto_smooth_factor and use_inverse_smooth_pressure
if capabilities.has_auto_smooth:
@@ -913,12 +924,12 @@ def brush_settings(layout, context, brush, popover=False):
text="Custom Spacing"
)
- if brush.use_custom_auto_smooth_spacing:
- UnifiedPaintPanel.prop_unified(
+ if brush.channels["autosmooth_use_spacing"].bool_value:
+ UnifiedPaintPanel.channel_unified(
box,
context,
brush,
- "auto_smooth_spacing",
+ "autosmooth_spacing",
slider=True,
text="Spacing"
)
diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h
index b3ee2f411d7..1f25106404a 100644
--- a/source/blender/blenkernel/BKE_blender_version.h
+++ b/source/blender/blenkernel/BKE_blender_version.h
@@ -39,7 +39,7 @@ extern "C" {
/* Blender file format version. */
#define BLENDER_FILE_VERSION BLENDER_VERSION
-#define BLENDER_FILE_SUBVERSION 24
+#define BLENDER_FILE_SUBVERSION 25
/* Minimum Blender version that supports reading file written with the current
* version. Older Blender versions will test this and show a warning if the file
diff --git a/source/blender/blenkernel/intern/brush_channel_define.h b/source/blender/blenkernel/intern/brush_channel_define.h
index effdcb957b5..b20e7eef182 100644
--- a/source/blender/blenkernel/intern/brush_channel_define.h
+++ b/source/blender/blenkernel/intern/brush_channel_define.h
@@ -133,8 +133,8 @@ places in rna_engine_codebase are relevent:
MAKE_FLOAT(boundary_smooth, "Boundary Smooth", "Smooth hard boundaries", 0.0f, 0.0f, 1.0f)
MAKE_BOOL(topology_rake_use_spacing, "Use Rake Spacing", "Use custom spacing for topology rake", false)
MAKE_BOOL(autosmooth_use_spacing, "Use Auto-Smooth Spacing", "Use custom spacing for autosmooth", false)
- MAKE_FLOAT_EX(topology_rake_spacing, "Rake Spacing", "Topology rake stroke spacing", 13.0f, 0.05f, 1000.0f, 0.1f, 300.0f, false)
- MAKE_FLOAT_EX(autosmooth_spacing, "Auto-Smooth Spacing", "Autosmooth stroke spacing", 13.0f, 0.05f, 1000.0f, 0.1f, 300.0f, false)
+ MAKE_FLOAT_EX(topology_rake_spacing, "Rake Spacing", "Topology rake stroke spacing", 13.0f, 0.05f, 1000.0f, 0.5f, 150.0f, false)
+ MAKE_FLOAT_EX(autosmooth_spacing, "Auto-Smooth Spacing", "Autosmooth stroke spacing", 13.0f, 0.05f, 1000.0f, 0.5f, 150.0f, false)
MAKE_ENUM(topology_rake_mode, "Topology Rake Mode", "", 1, {
{0, "BRUSH_DIRECTION", ICON_NONE, "Stroke", "Stroke Direction"},
{1, "CURVATURE", ICON_NONE, "Curvature", "Follow mesh curvature"},
diff --git a/source/blender/blenkernel/intern/brush_engine.c b/source/blender/blenkernel/intern/brush_engine.c
index 3e4974b3427..992e29ea4ce 100644
--- a/source/blender/blenkernel/intern/brush_engine.c
+++ b/source/blender/blenkernel/intern/brush_engine.c
@@ -154,7 +154,7 @@ static bool check_corrupted_curve(BrushMapping *dst)
BKE_curvemap_reset(curve->cm + i,
&(struct rctf){.xmin = 0, .ymin = 0.0, .xmax = 1.0, .ymax = 1.0},
CURVE_PRESET_LINE,
- dst->flag & BRUSH_MAPPING_INVERT);
+ 1);
BKE_curvemapping_init(dst->curve);
}
@@ -817,27 +817,27 @@ void BKE_brush_resolve_channels(Brush *brush, Sculpt *sd)
BKE_brush_channelset_merge(brush->channels_final, brush->channels, sd->channels);
}
-int BKE_brush_channelset_get_int(BrushChannelSet *chset,
- const char *idname,
- BrushMappingData *mapdata)
+static bool channel_has_mappings(BrushChannel *ch)
{
- BrushChannel *ch = BKE_brush_channelset_lookup(chset, idname);
-
- if (!ch) {
- printf("%s, unknown channel %s", __func__, idname);
- return 0;
+ for (int i = 0; i < BRUSH_MAPPING_MAX; i++) {
+ if (ch->mappings[i].flag & BRUSH_MAPPING_ENABLED) {
+ return true;
+ }
}
- return BKE_brush_channel_get_int(ch, mapdata);
+ return false;
}
-float BKE_brush_channel_get_int(BrushChannel *ch, BrushMappingData *mapdata)
+// idx is used by vector channels
+static double eval_channel_mappings(BrushChannel *ch, BrushMappingData *mapdata, double f, int idx)
{
- float f = (float)ch->ivalue;
+ if (idx == 3 && !(ch->flag & BRUSH_CHANNEL_APPLY_MAPPING_TO_ALPHA)) {
+ return f;
+ }
if (mapdata) {
- float factor = 1.0f;
+ double factor = 1.0f;
for (int i = 0; i < BRUSH_MAPPING_MAX; i++) {
BrushMapping *mp = ch->mappings + i;
@@ -846,7 +846,12 @@ float BKE_brush_channel_get_int(BrushChannel *ch, BrushMappingData *mapdata)
continue;
}
- float f2 = BKE_curvemapping_evaluateF(mp->curve, 0, f);
+ float inputf = ((float *)mapdata)[i];
+ if (mp->flag & BRUSH_MAPPING_INVERT) {
+ inputf = 1.0 - inputf;
+ }
+
+ double f2 = (float)BKE_curvemapping_evaluateF(mp->curve, 0, inputf);
switch (mp->blendmode) {
case MA_RAMP_BLEND:
@@ -879,7 +884,32 @@ float BKE_brush_channel_get_int(BrushChannel *ch, BrushMappingData *mapdata)
f *= factor;
}
- return (int)f;
+ return f;
+}
+
+int BKE_brush_channelset_get_int(BrushChannelSet *chset,
+ const char *idname,
+ BrushMappingData *mapdata)
+{
+ BrushChannel *ch = BKE_brush_channelset_lookup(chset, idname);
+
+ if (!ch) {
+ printf("%s, unknown channel %s", __func__, idname);
+ return 0;
+ }
+
+ return BKE_brush_channel_get_int(ch, mapdata);
+}
+
+float BKE_brush_channel_get_int(BrushChannel *ch, BrushMappingData *mapdata)
+{
+
+ if (channel_has_mappings(ch)) {
+ return (int)eval_channel_mappings(ch, mapdata, (double)ch->ivalue, 0);
+ }
+ else {
+ return ch->ivalue;
+ }
}
void BKE_brush_channel_set_int(BrushChannel *ch, int val)
@@ -1007,56 +1037,9 @@ float BKE_brush_channelset_get_float(BrushChannelSet *chset,
float BKE_brush_channel_get_float(BrushChannel *ch, BrushMappingData *mapdata)
{
-
- float f = ch->fvalue;
-
- if (mapdata) {
- float factor = 1.0f;
-
- for (int i = 0; i < BRUSH_MAPPING_MAX; i++) {
- BrushMapping *mp = ch->mappings + i;
-
- if (!(mp->flag & BRUSH_MAPPING_ENABLED)) {
- continue;
- }
-
- float inputf = ((float *)mapdata)[i];
-
- float f2 = BKE_curvemapping_evaluateF(mp->curve, 0, inputf);
-
- switch (mp->blendmode) {
- case MA_RAMP_BLEND:
- break;
- case MA_RAMP_MULT:
- f2 *= factor;
- break;
- case MA_RAMP_DIV:
- f2 = factor / (0.00001f + f2);
- break;
- case MA_RAMP_ADD:
- f2 += factor;
- break;
- case MA_RAMP_SUB:
- f2 = factor - f2;
- break;
- case MA_RAMP_DIFF:
- f2 = fabsf(factor - f2);
- break;
- default:
- printf("Unsupported brush mapping blend mode for %s (%s); will mix instead\n",
- ch->name,
- ch->idname);
- break;
- }
-
- factor += (f2 - factor) * mp->factor;
- }
-
- f *= factor;
- }
-
- return f;
+ return (float)eval_channel_mappings(ch, mapdata, (double)ch->fvalue, 0);
}
+
void BKE_brush_channel_set_vector(BrushChannel *ch, float vec[4])
{
if (ch->type == BRUSH_CHANNEL_VEC4) {
@@ -1086,65 +1069,8 @@ int BKE_brush_channel_get_vector(BrushChannel *ch, float out[4], BrushMappingDat
size = 4;
}
- if (mapdata) {
- float factor = 1.0f;
-
- for (int i = 0; i < BRUSH_MAPPING_MAX; i++) {
- BrushMapping *mp = ch->mappings + i;
-
- if (!(mp->flag & BRUSH_MAPPING_ENABLED)) {
- continue;
- }
-
- float inputf = ((float *)mapdata)[i];
-
- float f2 = BKE_curvemapping_evaluateF(mp->curve, 0, inputf);
-
- switch (mp->blendmode) {
- case MA_RAMP_BLEND:
- break;
- case MA_RAMP_MULT:
- f2 *= inputf * f2;
- break;
- case MA_RAMP_DIV:
- f2 = inputf / (0.00001f + inputf);
- break;
- case MA_RAMP_ADD:
- f2 += inputf;
- break;
- case MA_RAMP_SUB:
- f2 = inputf - f2;
- break;
- case MA_RAMP_DIFF:
- f2 = fabsf(inputf - f2);
- break;
- default:
- printf("Unsupported brush mapping blend mode for %s (%s); will mix instead\n",
- ch->name,
- ch->idname);
- break;
- }
-
- factor += (f2 - factor) * mp->factor;
- }
-
- if (size == 3) {
- copy_v3_v3(out, ch->vec
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list