diff options
author | Antony Riakiotakis <kalast@gmail.com> | 2015-06-10 14:32:11 +0300 |
---|---|---|
committer | Antony Riakiotakis <kalast@gmail.com> | 2015-06-10 14:32:28 +0300 |
commit | 9f911f62dcefd3ce4312bb8aa1d522cae6bbf6e9 (patch) | |
tree | 15729122676546f1b41a7b20f2255222d67ca7b9 /source/blender/blenkernel/intern/brush.c | |
parent | 6e844da9dad5bcbc1fb747879fa2a11715223d84 (diff) |
Fix T45013 negative curve falloff not working.
Was doing clamping as fix for T42984. Seems we can ommit clamping for
sculpting if we make sure overlap is not zero with negative values.
Control for clamping is moved to the "Use Clipping" function of curves
(which is on by default), so both bugs remain squashed and advanced
users can now properly utilize curves in sculpting, though not all
brushes work well with negative curves.
Diffstat (limited to 'source/blender/blenkernel/intern/brush.c')
-rw-r--r-- | source/blender/blenkernel/intern/brush.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index 307f97f1344..2464b3b2668 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -971,7 +971,7 @@ void BKE_brush_randomize_texture_coords(UnifiedPaintSettings *ups, bool mask) } } -/* Uses the brush curve control to find a strength value between 0 and 1 */ +/* Uses the brush curve control to find a strength value */ float BKE_brush_curve_strength(Brush *br, float p, const float len) { float strength; @@ -981,6 +981,15 @@ float BKE_brush_curve_strength(Brush *br, float p, const float len) strength = curvemapping_evaluateF(br->curve, 0, p); + return strength; +} + + +/* Uses the brush curve control to find a strength value between 0 and 1 */ +float BKE_brush_curve_strength_clamped(Brush *br, float p, const float len) +{ + float strength = BKE_brush_curve_strength(br, p, len); + CLAMP(strength, 0.0f, 1.0f); return strength; @@ -1042,7 +1051,7 @@ struct ImBuf *BKE_brush_gen_radial_control_imbuf(Brush *br, bool secondary) for (i = 0; i < side; ++i) { for (j = 0; j < side; ++j) { float magn = sqrtf(pow2f(i - half) + pow2f(j - half)); - im->rect_float[i * side + j] = BKE_brush_curve_strength(br, magn, half); + im->rect_float[i * side + j] = BKE_brush_curve_strength_clamped(br, magn, half); } } |