[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49031] trunk/blender/source/blender/ blenkernel/intern/mask_rasterize.c: change bucket size to give better performance for high detail 4k masks, also clamp from 0-1 for each layer when accumulating.

Campbell Barton ideasman42 at gmail.com
Wed Jul 18 15:34:14 CEST 2012


Revision: 49031
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49031
Author:   campbellbarton
Date:     2012-07-18 13:34:14 +0000 (Wed, 18 Jul 2012)
Log Message:
-----------
change bucket size to give better performance for high detail 4k masks, also clamp from 0-1 for each layer when accumulating.

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

Modified: trunk/blender/source/blender/blenkernel/intern/mask_rasterize.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mask_rasterize.c	2012-07-18 12:56:36 UTC (rev 49030)
+++ trunk/blender/source/blender/blenkernel/intern/mask_rasterize.c	2012-07-18 13:34:14 UTC (rev 49031)
@@ -51,7 +51,8 @@
 #define SPLINE_RESOL_CAP_MIN 8
 #define SPLINE_RESOL_CAP_MAX 64
 
-#define BUCKET_PIXELS_PER_CELL 8
+/* found this gives best performance for high detail masks, values between 2 and 8 work best */
+#define BUCKET_PIXELS_PER_CELL 4
 
 #define SF_EDGE_IS_BOUNDARY 0xff
 #define SF_KEYINDEX_TEMP_ID ((unsigned int) -1)
@@ -60,8 +61,9 @@
 #define TRI_VERT            ((unsigned int) -1)
 
 /* for debugging add... */
+#ifndef NDEBUG
 /* 	printf("%u %u %u %u\n", _t[0], _t[1], _t[2], _t[3]); \ */
-#define FACE_ASSERT(face, vert_max)                      \
+#  define FACE_ASSERT(face, vert_max)                    \
 {                                                        \
 	unsigned int *_t = face;                             \
 	BLI_assert(_t[0] < vert_max);                        \
@@ -69,6 +71,10 @@
 	BLI_assert(_t[2] < vert_max);                        \
 	BLI_assert(_t[3] < vert_max || _t[3] == TRI_VERT);   \
 } (void)0
+#else
+   /* do nothing */
+#  define FACE_ASSERT(face, vert_max)
+#endif
 
 static void rotate_point_v2(float r_p[2], const float p[2], const float cent[2], const float angle, const float asp[2])
 {
@@ -1234,9 +1240,13 @@
 				value += value_layer;
 				break;
 		}
+
+		/* clamp after applying each layer so we don't get
+		 * issues subtracting after accumulating over 1.0f */
+		return CLAMPIS(value, 0.0f, 1.0f);
 	}
 
-	return CLAMPIS(value, 0.0f, 1.0f);
+	return value;
 }
 
 #endif /* USE_RASKTER */




More information about the Bf-blender-cvs mailing list