Disable a static assert on gcc.
This commit is contained in:
parent
015dae3dc5
commit
2b2b569229
|
@ -856,12 +856,19 @@ def brush_settings(layout, context, brush, popover=False):
|
|||
|
||||
if capabilities.has_color:
|
||||
ups = context.scene.tool_settings.unified_paint_settings
|
||||
row = layout.row(align=True)
|
||||
|
||||
if context.mode == "SCULPT":
|
||||
row = layout.column(align=True)
|
||||
else:
|
||||
row = layout.row(align=True)
|
||||
|
||||
UnifiedPaintPanel.prop_unified_color(row, context, brush, "color", text="")
|
||||
UnifiedPaintPanel.prop_unified_color(row, context, brush, "secondary_color", text="")
|
||||
row.separator()
|
||||
row.operator("paint.brush_colors_flip", icon='FILE_REFRESH', text="", emboss=False)
|
||||
row.prop(ups, "use_unified_color", text="", icon='BRUSHES_ALL')
|
||||
|
||||
if context.mode != "SCULPT":
|
||||
row.separator()
|
||||
row.operator("paint.brush_colors_flip", icon='FILE_REFRESH', text="", emboss=False)
|
||||
row.prop(ups, "use_unified_color", text="", icon='BRUSHES_ALL')
|
||||
layout.prop(brush, "blend", text="Blend Mode")
|
||||
|
||||
# Per sculpt tool options.
|
||||
|
|
|
@ -1218,6 +1218,58 @@ static void float_set_uninherit(BrushChannelSet *chset, const char *channel, flo
|
|||
ch->flag &= ~BRUSH_CHANNEL_INHERIT;
|
||||
}
|
||||
|
||||
ATTR_NO_OPT static void bke_builtin_commandlist_create_paint(Brush *brush,
|
||||
BrushChannelSet *chset,
|
||||
BrushCommandList *cl,
|
||||
int tool,
|
||||
BrushMappingData *mapdata)
|
||||
{
|
||||
BrushCommand *cmd;
|
||||
|
||||
cmd = BKE_brush_commandlist_add(cl, chset, true);
|
||||
BKE_brush_command_init(cmd, tool);
|
||||
|
||||
float radius = BKE_brush_channelset_get_float(chset, "radius", mapdata);
|
||||
|
||||
/* build autosmooth command */
|
||||
float autosmooth_scale = BKE_brush_channelset_get_float(
|
||||
chset, "autosmooth_radius_scale", mapdata);
|
||||
float autosmooth_projection = BKE_brush_channelset_get_float(
|
||||
chset, "autosmooth_projection", NULL);
|
||||
|
||||
float autosmooth_spacing;
|
||||
|
||||
if (BKE_brush_channelset_get_int(chset, "autosmooth_use_spacing", mapdata)) {
|
||||
autosmooth_spacing = BKE_brush_channelset_get_float(chset, "autosmooth_spacing", mapdata);
|
||||
}
|
||||
else {
|
||||
autosmooth_spacing = BKE_brush_channelset_get_float(chset, "spacing", mapdata);
|
||||
}
|
||||
|
||||
float autosmooth = BKE_brush_channelset_get_float(chset, "autosmooth", mapdata);
|
||||
if (autosmooth > 0.0f) {
|
||||
cmd = BKE_brush_command_init(BKE_brush_commandlist_add(cl, chset, true), SCULPT_TOOL_SMOOTH);
|
||||
float_set_uninherit(cmd->params, "strength", autosmooth);
|
||||
float_set_uninherit(cmd->params, "radius", radius * autosmooth_scale);
|
||||
float_set_uninherit(cmd->params, "projection", autosmooth_projection);
|
||||
float_set_uninherit(cmd->params, "spacing", autosmooth_spacing);
|
||||
}
|
||||
|
||||
float vcol_boundary = BKE_brush_channelset_get_float(chset, "vcol_boundary_factor", mapdata);
|
||||
#define GETF(key) BKE_brush_channelset_get_float(chset, key, mapdata)
|
||||
|
||||
if (vcol_boundary > 0.0f) {
|
||||
cmd = BKE_brush_command_init(BKE_brush_commandlist_add(cl, chset, true),
|
||||
SCULPT_TOOL_VCOL_BOUNDARY);
|
||||
float_set_uninherit(cmd->params, "radius", radius * GETF("vcol_boundary_radius_scale"));
|
||||
float_set_uninherit(cmd->params, "spacing", GETF("vcol_boundary_spacing"));
|
||||
float_set_uninherit(cmd->params, "strength", vcol_boundary);
|
||||
}
|
||||
|
||||
#undef GETF
|
||||
// float
|
||||
}
|
||||
|
||||
ATTR_NO_OPT void BKE_builtin_commandlist_create(Brush *brush,
|
||||
BrushChannelSet *chset,
|
||||
BrushCommandList *cl,
|
||||
|
@ -1227,6 +1279,10 @@ ATTR_NO_OPT void BKE_builtin_commandlist_create(Brush *brush,
|
|||
BrushCommand *cmd;
|
||||
|
||||
/* add main tool */
|
||||
if (ELEM(tool, SCULPT_TOOL_PAINT, SCULPT_TOOL_SMEAR)) {
|
||||
bke_builtin_commandlist_create_paint(brush, chset, cl, tool, mapdata);
|
||||
return;
|
||||
}
|
||||
|
||||
cmd = BKE_brush_commandlist_add(cl, chset, true);
|
||||
BKE_brush_command_init(cmd, tool);
|
||||
|
@ -1253,8 +1309,7 @@ ATTR_NO_OPT void BKE_builtin_commandlist_create(Brush *brush,
|
|||
|
||||
float autosmooth = BKE_brush_channelset_get_float(chset, "autosmooth", mapdata);
|
||||
if (!no_autosmooth && autosmooth > 0.0f) {
|
||||
cmd = BKE_brush_command_init(BKE_brush_commandlist_add(cl, brush->channels, true),
|
||||
SCULPT_TOOL_SMOOTH);
|
||||
cmd = BKE_brush_command_init(BKE_brush_commandlist_add(cl, chset, true), SCULPT_TOOL_SMOOTH);
|
||||
float_set_uninherit(cmd->params, "strength", autosmooth);
|
||||
float_set_uninherit(cmd->params, "radius", radius * autosmooth_scale);
|
||||
float_set_uninherit(cmd->params, "projection", autosmooth_projection);
|
||||
|
@ -1279,7 +1334,7 @@ ATTR_NO_OPT void BKE_builtin_commandlist_create(Brush *brush,
|
|||
}
|
||||
|
||||
if (topology_rake > 0.0f) {
|
||||
cmd = BKE_brush_command_init(BKE_brush_commandlist_add(cl, brush->channels, true),
|
||||
cmd = BKE_brush_command_init(BKE_brush_commandlist_add(cl, chset, true),
|
||||
SCULPT_TOOL_TOPOLOGY_RAKE);
|
||||
|
||||
float_set_uninherit(cmd->params, "strength", topology_rake);
|
||||
|
@ -1291,8 +1346,7 @@ ATTR_NO_OPT void BKE_builtin_commandlist_create(Brush *brush,
|
|||
/* build dyntopo command */
|
||||
|
||||
if (!BKE_brush_channelset_get_int(chset, "dyntopo_disabled", NULL)) {
|
||||
cmd = BKE_brush_command_init(BKE_brush_commandlist_add(cl, brush->channels, true),
|
||||
SCULPT_TOOL_DYNTOPO);
|
||||
cmd = BKE_brush_command_init(BKE_brush_commandlist_add(cl, chset, true), SCULPT_TOOL_DYNTOPO);
|
||||
|
||||
float spacing = BKE_brush_channelset_get_float(chset, "dyntopo_spacing", mapdata);
|
||||
float radius2 = BKE_brush_channelset_get_float(chset, "dyntopo_radius_scale", mapdata);
|
||||
|
|
|
@ -76,7 +76,7 @@ To enable converting to/from old data:
|
|||
.type = BRUSH_CHANNEL_VEC3,\
|
||||
.vector = {r, g, b, 1.0f},\
|
||||
.min = 0.0f, .max = 5.0f,\
|
||||
.min = 0.0f, .max = 1.0f,\
|
||||
.soft_min = 0.0f, .soft_max = 1.0f,\
|
||||
.flag = BRUSH_CHANNEL_COLOR,\
|
||||
}
|
||||
|
||||
|
@ -87,7 +87,7 @@ To enable converting to/from old data:
|
|||
.type = BRUSH_CHANNEL_VEC4,\
|
||||
.vector = {r, g, b, a},\
|
||||
.min = 0.0f, .max = 5.0f,\
|
||||
.min = 0.0f, .max = 1.0f,\
|
||||
.soft_min = 0.0f, .soft_max = 1.0f,\
|
||||
.flag = BRUSH_CHANNEL_COLOR,\
|
||||
}
|
||||
|
||||
|
@ -475,7 +475,15 @@ BrushChannelType brush_builtin_channels[] = {
|
|||
MAKE_COLOR4("cursor_color_add", "Add Color", "Color of cursor when adding", 1.0f, 0.39f, 0.39f, 1.0f),
|
||||
MAKE_COLOR4("cursor_color_sub", "Subtract Color", "Color of cursor when subtracting", 0.39f, 0.39f, 1.0f, 1.0f),
|
||||
MAKE_COLOR3("color", "Color", "", 1.0f, 1.0f, 1.0f),
|
||||
MAKE_COLOR3("secondary_color", "Secondary Color", "", 0.0f, 0.0f, 0.0f)
|
||||
MAKE_COLOR3("secondary_color", "Secondary Color", "", 0.0f, 0.0f, 0.0f),
|
||||
MAKE_FLOAT("vcol_boundary_factor", "Boundary Hardening", "Automatically align edges on color boundaries"
|
||||
"to generate sharper features. ", 0.0f, 0.0f, 1.0f),
|
||||
MAKE_FLOAT_EX("vcol_boundary_exponent", "Exponent", "Hardening exponent (smaller values make smoother edges)",
|
||||
1.0, 0.001f, 6.0f, 0.001, 3.0f),
|
||||
MAKE_FLOAT_EX("vcol_boundary_radius_scale", "Radius Scale",
|
||||
"Scale brush radius for vcol boundary hardening",
|
||||
1.0f, 0.0001f, 100.0f, 0.001f, 3.0f),
|
||||
MAKE_FLOAT_EX("vcol_boundary_spacing", "Spacing", "Spacing for vcol boundary hardening", 15, 0.25, 5000, 0.5, 300),
|
||||
};
|
||||
|
||||
/* clang-format on */
|
||||
|
@ -573,6 +581,8 @@ static BrushSettingsMap brush_settings_map[] = {
|
|||
DEF(sub_col, cursor_color_sub, FLOAT4, FLOAT4)
|
||||
DEF(rgb, color, FLOAT3, FLOAT3)
|
||||
DEF(secondary_rgb, secondary_color, FLOAT3, FLOAT3)
|
||||
DEF(vcol_boundary_factor, vcol_boundary_factor, FLOAT, FLOAT)
|
||||
DEF(vcol_boundary_exponent, vcol_boundary_exponent, FLOAT, FLOAT)
|
||||
};
|
||||
|
||||
static const int brush_settings_map_len = ARRAY_SIZE(brush_settings_map);
|
||||
|
@ -921,6 +931,11 @@ void BKE_brush_builtin_patch(Brush *brush, int tool)
|
|||
ADDCH("autosmooth_use_spacing");
|
||||
ADDCH("autosmooth_projection");
|
||||
|
||||
ADDCH("vcol_boundary_exponent");
|
||||
ADDCH("vcol_boundary_factor");
|
||||
ADDCH("vcol_boundary_radius_scale");
|
||||
ADDCH("vcol_boundary_spacing");
|
||||
|
||||
ADDCH("topology_rake");
|
||||
ADDCH("topology_rake_mode");
|
||||
ADDCH("topology_rake_radius_scale");
|
||||
|
@ -1090,6 +1105,11 @@ void BKE_brush_check_toolsettings(Sculpt *sd)
|
|||
ADDCH("automasking");
|
||||
ADDCH("topology_rake_mode");
|
||||
|
||||
ADDCH("vcol_boundary_exponent");
|
||||
ADDCH("vcol_boundary_factor");
|
||||
ADDCH("vcol_boundary_radius_scale");
|
||||
ADDCH("vcol_boundary_spacing");
|
||||
|
||||
ADDCH("color");
|
||||
ADDCH("secondary_color");
|
||||
|
||||
|
|
|
@ -8428,7 +8428,9 @@ void do_brush_action(Sculpt *sd, Object *ob, Brush *brush, UnifiedPaintSettings
|
|||
SCULPT_TOOL_CLAY,
|
||||
SCULPT_TOOL_CREASE,
|
||||
SCULPT_TOOL_CLOTH,
|
||||
SCULPT_TOOL_SIMPLIFY)) {
|
||||
SCULPT_TOOL_SIMPLIFY,
|
||||
SCULPT_TOOL_PAINT,
|
||||
SCULPT_TOOL_SMEAR)) {
|
||||
|
||||
if (SCULPT_stroke_is_first_brush_step(ss->cache)) {
|
||||
if (ss->cache->commandlist) {
|
||||
|
|
|
@ -81,9 +81,11 @@ typedef enum {
|
|||
BRUSH_MAPPING_MAX = 5 // see BrushChannel.mappings
|
||||
} BrushMappingType;
|
||||
|
||||
#ifndef __GNUC__
|
||||
static_assert(offsetof(BrushChannel, type) - offsetof(BrushChannel, mappings) ==
|
||||
sizeof(BrushMapping) * BRUSH_MAPPING_MAX,
|
||||
"BrushChannel.mappings must == BRUSH_MAPPING_MAX");
|
||||
#endif
|
||||
|
||||
// BrushChannel->flag
|
||||
enum {
|
||||
|
|
Loading…
Reference in New Issue