[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41461] branches/soc-2011-carrot/source/ blender/blenkernel/intern/dynamicpaint.c: Dynamic Paint:

Miika Hamalainen miika.hamalainen at kolumbus.fi
Wed Nov 2 12:32:22 CET 2011


Revision: 41461
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41461
Author:   miikah
Date:     2011-11-02 11:32:22 +0000 (Wed, 02 Nov 2011)
Log Message:
-----------
Dynamic Paint:
* Some fixes and tweaking for the previous commit.

Modified Paths:
--------------
    branches/soc-2011-carrot/source/blender/blenkernel/intern/dynamicpaint.c

Modified: branches/soc-2011-carrot/source/blender/blenkernel/intern/dynamicpaint.c
===================================================================
--- branches/soc-2011-carrot/source/blender/blenkernel/intern/dynamicpaint.c	2011-11-02 09:13:04 UTC (rev 41460)
+++ branches/soc-2011-carrot/source/blender/blenkernel/intern/dynamicpaint.c	2011-11-02 11:32:22 UTC (rev 41461)
@@ -2794,25 +2794,28 @@
 
 	/* Add paint	*/
 	if (!(paintFlags & MOD_DPAINT_ERASE)) {
-		float wetness, mix[4];
+		float mix[4];
 		float temp_alpha = (*paintAlpha) * ((paintFlags & MOD_DPAINT_ABS_ALPHA) ? 1.0f : (*timescale));
 
 		/* mix brush color with wet layer color */
 		blendColors(pPoint->e_color, pPoint->e_alpha, paintColor, temp_alpha, mix);
 		copy_v3_v3(pPoint->e_color, mix);
 
-		/* alpha */
+		/* mix wetness and alpha depending on selected alpha mode */
 		if (paintFlags & MOD_DPAINT_ABS_ALPHA) {
+			/* update values to the brush level unless theyre higher already */
 			if (pPoint->e_alpha < (*paintAlpha)) pPoint->e_alpha = (*paintAlpha);
+			if (pPoint->wetness < (*paintWetness)) pPoint->wetness = (*paintWetness);
 		}
 		else {
+			float wetness = (*paintWetness);
+			CLAMP(wetness, 0.0f, 1.0f);
 			pPoint->e_alpha = mix[3];
+			pPoint->wetness = pPoint->wetness*(1.0f-wetness) + wetness;
 		}
 
-		/* only increase wetness if it's below paint level */
-		wetness = (*paintWetness) * pPoint->e_alpha;
-		CLAMP(wetness, 0.0f, 1.0f);
-		if (pPoint->wetness < wetness) pPoint->wetness = wetness;
+		if (pPoint->wetness<MIN_WETNESS) pPoint->wetness = MIN_WETNESS;
+
 		pPoint->state = DPAINT_PAINT_NEW;
 	}
 	/* Erase paint	*/
@@ -2879,6 +2882,7 @@
 {
 		PaintSurfaceData *sData = surface->data;
 		float strength = influence * brush->alpha;
+		CLAMP(strength, 0.0f, 1.0f);
 
 		/* Sample velocity colorband if required */
 		if (brush->flags & (MOD_DPAINT_VELOCITY_ALPHA|MOD_DPAINT_VELOCITY_COLOR|MOD_DPAINT_VELOCITY_DEPTH)) {
@@ -2904,7 +2908,6 @@
 
 			float paintWetness = brush->wetness * strength;
 			float paintAlpha = strength;
-			if (paintAlpha > 1.0f) paintAlpha = 1.0f;
 
 			dynamicPaint_mixPaintColors(surface, index, brush->flags, paint, &paintAlpha, &paintWetness, &timescale);
 
@@ -4363,7 +4366,7 @@
 		if (surface->type == MOD_DPAINT_SURFACE_T_PAINT) {
 			PaintPoint *pPoint = &((PaintPoint*)sData->type_data)[index];
 			/* drying */
-			if (pPoint->wetness > MIN_WETNESS) {
+			if (pPoint->wetness >= MIN_WETNESS) {
 				int i;
 				float dry_ratio, f_color[4];
 				float p_wetness = pPoint->wetness;




More information about the Bf-blender-cvs mailing list