[Bf-blender-cvs] [6812666] soc-2013-paint: Fix some clamping issues.
Antony Riakiotakis
noreply at git.blender.org
Sun Apr 27 15:45:49 CEST 2014
Commit: 68126662f05eb262c06b21e4746b3b02118427a0
Author: Antony Riakiotakis
Date: Sun Apr 27 16:43:38 2014 +0300
https://developer.blender.org/rB68126662f05eb262c06b21e4746b3b02118427a0
Fix some clamping issues.
===================================================================
M source/blender/blenkernel/intern/brush.c
M source/blender/editors/sculpt_paint/paint_image_2d.c
M source/blender/editors/sculpt_paint/paint_image_proj.c
M source/blender/imbuf/intern/rectop.c
===================================================================
diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c
index fc9be23..3c1c2c9 100644
--- a/source/blender/blenkernel/intern/brush.c
+++ b/source/blender/blenkernel/intern/brush.c
@@ -757,12 +757,14 @@ float BKE_brush_sample_masktex(const Scene *scene, Brush *br,
rgba, rgba + 1, rgba + 2, rgba + 3, thread, pool);
}
+ CLAMP(intensity, 0.0, 1.0);
+
switch(br->mask_pressure) {
case BRUSH_MASK_PRESSURE_CUTOFF:
intensity = ((1.0 - intensity) < ups->size_pressure_value)? 1.0 : 0.0;
break;
case BRUSH_MASK_PRESSURE_RAMP:
- intensity = ups->size_pressure_value + intensity*(1.0 - ups->size_pressure_value);
+ intensity = ups->size_pressure_value + intensity * (1.0 - ups->size_pressure_value);
break;
default:
break;
diff --git a/source/blender/editors/sculpt_paint/paint_image_2d.c b/source/blender/editors/sculpt_paint/paint_image_2d.c
index e0bbaf3..31c701e 100644
--- a/source/blender/editors/sculpt_paint/paint_image_2d.c
+++ b/source/blender/editors/sculpt_paint/paint_image_2d.c
@@ -220,7 +220,6 @@ static unsigned short *brush_painter_mask_ibuf_new(BrushPainter *painter, int si
float res;
brush_imbuf_tex_co(&mask_mapping, x, y, texco);
res = BKE_brush_sample_masktex(scene, brush, texco, thread, pool);
- CLAMP(res, 0.0, 1.0);
*m = (unsigned short)(65535.0f * res);
}
}
diff --git a/source/blender/editors/sculpt_paint/paint_image_proj.c b/source/blender/editors/sculpt_paint/paint_image_proj.c
index 6d5b2f9..825ab3d 100644
--- a/source/blender/editors/sculpt_paint/paint_image_proj.c
+++ b/source/blender/editors/sculpt_paint/paint_image_proj.c
@@ -4160,15 +4160,15 @@ static void *do_projectpaint_thread(void *ph_v)
if (ps->is_maskbrush) {
float texmask = BKE_brush_sample_masktex(ps->scene, ps->brush, projPixel->projCoSS, thread_index, pool);
- CLAMP(texmask, 0.0f, 1.0f);
max_mask *= texmask;
}
if (brush->flag & BRUSH_ACCUMULATE)
- mask = min_ff(mask_accum + max_mask, 65535.0f);
+ mask = mask_accum + max_mask;
else
mask = mask_accum + (max_mask - mask_accum * falloff);
+ mask = min_ff(mask, 65535.0f);
mask_short = (unsigned short)mask;
if (mask_short > *projPixel->mask_accum) {
diff --git a/source/blender/imbuf/intern/rectop.c b/source/blender/imbuf/intern/rectop.c
index 0eb1d72..0303fca 100644
--- a/source/blender/imbuf/intern/rectop.c
+++ b/source/blender/imbuf/intern/rectop.c
@@ -551,9 +551,11 @@ void IMB_rectblend(ImBuf *dbuf, ImBuf *obuf, ImBuf *sbuf, unsigned short *dmask,
float mask;
if (accumulate)
- mask = min_ff(*dmr + mask_lim, 65535.0);
+ mask = *dmr + mask_lim;
else
- mask = *dmr + (((mask_lim - *dmr * (*cmr) / 65535.0f)));
+ mask = *dmr + mask_lim - (*dmr * (*cmr / 65535.0f));
+
+ mask = min_ff(mask, 65535.0);
if (mask > *dmr) {
unsigned char mask_src[4];
@@ -575,12 +577,14 @@ void IMB_rectblend(ImBuf *dbuf, ImBuf *obuf, ImBuf *sbuf, unsigned short *dmask,
else {
for (x = width; x > 0; x--, dr++, or++, sr++, cmr++) {
unsigned char *src = (unsigned char *)sr;
- unsigned short mask = (float)mask_max * ((float)(*cmr));
+ float mask = (float)mask_max * ((float)(*cmr));
if (texmaskrect)
mask *= ((float)(*tmr++) / 65535.0f);
- if (src[3] && mask) {
+ mask = min_ff(mask, 65535.0);
+
+ if (src[3] && (mask > 0.0)) {
unsigned char mask_src[4];
mask_src[0] = src[0];
@@ -635,13 +639,15 @@ void IMB_rectblend(ImBuf *dbuf, ImBuf *obuf, ImBuf *sbuf, unsigned short *dmask,
if (accumulate)
mask = min_ff(*dmr + mask_lim, 65535.0);
else
- mask = *dmr + (((mask_lim - *dmr * (*cmr) / 65535.0f)));
+ mask = *dmr + mask_lim - (*dmr * (*cmr / 65535.0f));
+
+ mask = min_ff(mask, 65535.0);
if (mask > *dmr) {
float mask_srf[4];
*dmr = mask;
- mul_v4_v4fl(mask_srf, srf, mask * (1.0f / 65535.0f));
+ mul_v4_v4fl(mask_srf, srf, mask / 65535.0f);
func_float(drf, orf, mask_srf);
}
@@ -657,10 +663,12 @@ void IMB_rectblend(ImBuf *dbuf, ImBuf *obuf, ImBuf *sbuf, unsigned short *dmask,
if (texmaskrect)
mask *= ((float)(*tmr++) / 65535.0f);
- if (srf[3] && mask) {
+ mask = min_ff(mask, 65535.0);
+
+ if (srf[3] && (mask > 0.0)) {
float mask_srf[4];
- mul_v4_v4fl(mask_srf, srf, mask * (1.0f / 65535.0f));
+ mul_v4_v4fl(mask_srf, srf, mask / 65535.0f);
func_float(drf, orf, mask_srf);
}
More information about the Bf-blender-cvs
mailing list