Paint: Smoother curve preset

This implements a 5th-order equation smoothstep, which produces a flat
surface at the brush center. Some users find that our current grab brush
is too sharp, so now we have both options.
This also improves the behavior of the new clay brushes.

Reviewed By: jbakker

Differential Revision: https://developer.blender.org/D6265
This commit is contained in:
Pablo Dobarro 2019-11-22 18:21:03 +01:00
parent 2ff1919b45
commit 71ddcf1a08
3 changed files with 5 additions and 0 deletions

View File

@ -1576,6 +1576,9 @@ float BKE_brush_curve_strength(const Brush *br, float p, const float len)
case BRUSH_CURVE_SMOOTH:
strength = 3.0f * p * p - 2.0f * p * p * p;
break;
case BRUSH_CURVE_SMOOTHER:
strength = pow3f(p) * (p * (p * 6.0f - 15.0f) + 10.0f);
break;
case BRUSH_CURVE_ROOT:
strength = sqrtf(p);
break;

View File

@ -199,6 +199,7 @@ typedef enum eBrushCurvePreset {
BRUSH_CURVE_POW4 = 6,
BRUSH_CURVE_INVSQUARE = 7,
BRUSH_CURVE_CONSTANT = 8,
BRUSH_CURVE_SMOOTHER = 9,
} eBrushCurvePreset;
typedef enum eBrushElasticDeformType {

View File

@ -1599,6 +1599,7 @@ static void rna_def_brush(BlenderRNA *brna)
static const EnumPropertyItem brush_curve_preset_items[] = {
{BRUSH_CURVE_CUSTOM, "CUSTOM", ICON_RNDCURVE, "Custom", ""},
{BRUSH_CURVE_SMOOTH, "SMOOTH", ICON_SMOOTHCURVE, "Smooth", ""},
{BRUSH_CURVE_SMOOTHER, "SMOOTHER", ICON_SMOOTHCURVE, "Smoother", ""},
{BRUSH_CURVE_SPHERE, "SPHERE", ICON_SPHERECURVE, "Sphere", ""},
{BRUSH_CURVE_ROOT, "ROOT", ICON_ROOTCURVE, "Root", ""},
{BRUSH_CURVE_SHARP, "SHARP", ICON_SHARPCURVE, "Sharp", ""},