[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20311] trunk/blender/source/blender/ blenkernel/intern/customdata.c: [#18795] Subdivide Smooth can give wrong vcol

Campbell Barton ideasman42 at gmail.com
Thu May 21 09:28:02 CEST 2009


Revision: 20311
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20311
Author:   campbellbarton
Date:     2009-05-21 09:28:02 +0200 (Thu, 21 May 2009)

Log Message:
-----------
[#18795] Subdivide Smooth can give wrong vcol
weights given by subdivide are not normalized, if that was fixed could avoid clamping.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/customdata.c

Modified: trunk/blender/source/blender/blenkernel/intern/customdata.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/customdata.c	2009-05-20 23:31:58 UTC (rev 20310)
+++ trunk/blender/source/blender/blenkernel/intern/customdata.c	2009-05-21 07:28:02 UTC (rev 20311)
@@ -33,7 +33,7 @@
 */ 
 
 #include "BKE_customdata.h"
-
+#include "BKE_utildefines.h" // CLAMP
 #include "BLI_blenlib.h"
 #include "BLI_linklist.h"
 #include "BLI_mempool.h"
@@ -421,6 +421,14 @@
 			col.b += src->b * weight;
 		}
 	}
+	
+	/* Subdivide smooth or fractal can cause problems without clamping
+	 * although weights should also not cause this situation */
+	CLAMP(col.a, 0.0f, 255.0f);
+	CLAMP(col.r, 0.0f, 255.0f);
+	CLAMP(col.g, 0.0f, 255.0f);
+	CLAMP(col.b, 0.0f, 255.0f);
+	
 	mc->a = (int)col.a;
 	mc->r = (int)col.r;
 	mc->g = (int)col.g;
@@ -496,6 +504,14 @@
 	}
 
 	for(j = 0; j < 4; ++j) {
+		
+		/* Subdivide smooth or fractal can cause problems without clamping
+		 * although weights should also not cause this situation */
+		CLAMP(col[j].a, 0.0f, 255.0f);
+		CLAMP(col[j].r, 0.0f, 255.0f);
+		CLAMP(col[j].g, 0.0f, 255.0f);
+		CLAMP(col[j].b, 0.0f, 255.0f);
+		
 		mc[j].a = (int)col[j].a;
 		mc[j].r = (int)col[j].r;
 		mc[j].g = (int)col[j].g;





More information about the Bf-blender-cvs mailing list