[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [48912] branches/soc-2011-tomato: svn merge ^/trunk/blender -r48893:48911

Campbell Barton ideasman42 at gmail.com
Sat Jul 14 15:04:01 CEST 2012


Revision: 48912
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48912
Author:   campbellbarton
Date:     2012-07-14 13:04:01 +0000 (Sat, 14 Jul 2012)
Log Message:
-----------
svn merge ^/trunk/blender -r48893:48911

Revision Links:
--------------
    http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48893

Modified Paths:
--------------
    branches/soc-2011-tomato/build_files/cmake/config/blender_lite.cmake
    branches/soc-2011-tomato/intern/guardedalloc/MEM_guardedalloc.h
    branches/soc-2011-tomato/intern/guardedalloc/intern/mallocn.c
    branches/soc-2011-tomato/source/blender/blenkernel/intern/mask_rasterize.c
    branches/soc-2011-tomato/source/blender/blenkernel/intern/multires.c
    branches/soc-2011-tomato/source/blender/blenlib/BLI_math_geom.h
    branches/soc-2011-tomato/source/blender/blenlib/BLI_memarena.h
    branches/soc-2011-tomato/source/blender/blenlib/BLI_mempool.h
    branches/soc-2011-tomato/source/blender/blenlib/BLI_utildefines.h
    branches/soc-2011-tomato/source/blender/blenlib/intern/math_geom.c
    branches/soc-2011-tomato/source/blender/blenlib/intern/rct.c
    branches/soc-2011-tomato/source/blender/editors/sculpt_paint/paint_image.c
    branches/soc-2011-tomato/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
    branches/soc-2011-tomato/source/gameengine/Ketsji/KX_BlenderMaterial.h

Property Changed:
----------------
    branches/soc-2011-tomato/
    branches/soc-2011-tomato/source/blender/editors/interface/interface.c
    branches/soc-2011-tomato/source/blender/editors/space_outliner/


Property changes on: branches/soc-2011-tomato
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/ge_harmony:42255,42279-42282,42286,42302,42338,42349,42616,42620,42698-42699,42739,42753,42773-42774,42832,44568,44597-44598,44793-44794
/branches/soc-2011-cucumber:37517,38166-38167,38177,38179-38180,38187,38242,38384,38387,38403-38404,38407,38968,38970,38973,39045,40845,42997-42998,43439
/branches/vgroup_modifiers:38694-39989
/trunk/blender:36831-48893
   + /branches/ge_harmony:42255,42279-42282,42286,42302,42338,42349,42616,42620,42698-42699,42739,42753,42773-42774,42832,44568,44597-44598,44793-44794
/branches/soc-2011-cucumber:37517,38166-38167,38177,38179-38180,38187,38242,38384,38387,38403-38404,38407,38968,38970,38973,39045,40845,42997-42998,43439
/branches/vgroup_modifiers:38694-39989
/trunk/blender:36831-48911

Modified: branches/soc-2011-tomato/build_files/cmake/config/blender_lite.cmake
===================================================================
--- branches/soc-2011-tomato/build_files/cmake/config/blender_lite.cmake	2012-07-14 12:47:49 UTC (rev 48911)
+++ branches/soc-2011-tomato/build_files/cmake/config/blender_lite.cmake	2012-07-14 13:04:01 UTC (rev 48912)
@@ -17,6 +17,7 @@
 set(WITH_LIBMV               OFF CACHE FORCE BOOL)
 set(WITH_CARVE               OFF CACHE FORCE BOOL)
 set(WITH_GAMEENGINE          OFF CACHE FORCE BOOL)
+set(WITH_COMPOSITOR          OFF CACHE FORCE BOOL)
 set(WITH_GHOST_XDND          OFF CACHE FORCE BOOL)
 set(WITH_IK_ITASC            OFF CACHE FORCE BOOL)
 set(WITH_IMAGE_CINEON        OFF CACHE FORCE BOOL)

Modified: branches/soc-2011-tomato/intern/guardedalloc/MEM_guardedalloc.h
===================================================================
--- branches/soc-2011-tomato/intern/guardedalloc/MEM_guardedalloc.h	2012-07-14 12:47:49 UTC (rev 48911)
+++ branches/soc-2011-tomato/intern/guardedalloc/MEM_guardedalloc.h	2012-07-14 13:04:01 UTC (rev 48912)
@@ -60,8 +60,8 @@
 #ifndef __MEM_GUARDEDALLOC_H__
 #define __MEM_GUARDEDALLOC_H__
 
-#include <stdio.h> /* needed for FILE* */
-#include "MEM_sys_types.h" /* needed for uintptr_t */
+#include <stdio.h>          /* needed for FILE* */
+#include "MEM_sys_types.h"  /* needed for uintptr_t */
 
 #ifdef __cplusplus
 extern "C" {
@@ -70,7 +70,7 @@
 	/** Returns the length of the allocated memory segment pointed at
 	 * by vmemh. If the pointer was not previously allocated by this
 	 * module, the result is undefined.*/
-	size_t MEM_allocN_len(void *vmemh)
+	size_t MEM_allocN_len(const void *vmemh)
 #ifdef __GNUC__
 	__attribute__((warn_unused_result))
 #endif
@@ -111,10 +111,10 @@
 	 * Allocate a block of memory of size len, with tag name str. The
 	 * memory is cleared. The name must be static, because only a
 	 * pointer to it is stored ! */
-	void *MEM_callocN(size_t len, const char * str)
+	void *MEM_callocN(size_t len, const char *str)
 #ifdef __GNUC__
 	__attribute__((warn_unused_result))
-	__attribute__((nonnull))
+	__attribute__((nonnull(2)))
 	__attribute__((alloc_size(1)))
 #endif
 	;
@@ -122,10 +122,10 @@
 	/** Allocate a block of memory of size len, with tag name str. The
 	 * name must be a static, because only a pointer to it is stored !
 	 * */
-	void *MEM_mallocN(size_t len, const char * str)
+	void *MEM_mallocN(size_t len, const char *str)
 #ifdef __GNUC__
 	__attribute__((warn_unused_result))
-	__attribute__((nonnull))
+	__attribute__((nonnull(2)))
 	__attribute__((alloc_size(1)))
 #endif
 	;
@@ -133,10 +133,10 @@
 	/** Same as callocN, clears memory and uses mmap (disk cached) if supported.
 	 * Can be free'd with MEM_freeN as usual.
 	 * */
-	void *MEM_mapallocN(size_t len, const char * str)
+	void *MEM_mapallocN(size_t len, const char *str)
 #ifdef __GNUC__
 	__attribute__((warn_unused_result))
-	__attribute__((nonnull))
+	__attribute__((nonnull(2)))
 	__attribute__((alloc_size(1)))
 #endif
 	;
@@ -213,11 +213,10 @@
 			MEM_freeN(mem);                                                   \
 	}                                                                         \
 
-#endif
+#endif  /* __cplusplus */
 
-
 #ifdef __cplusplus
 }
-#endif
+#endif  /* __cplusplus */
 
-#endif
+#endif  /* __MEM_GUARDEDALLOC_H__ */

Modified: branches/soc-2011-tomato/intern/guardedalloc/intern/mallocn.c
===================================================================
--- branches/soc-2011-tomato/intern/guardedalloc/intern/mallocn.c	2012-07-14 12:47:49 UTC (rev 48911)
+++ branches/soc-2011-tomato/intern/guardedalloc/intern/mallocn.c	2012-07-14 13:04:01 UTC (rev 48912)
@@ -222,10 +222,10 @@
 	malloc_debug_memset = 1;
 }
 
-size_t MEM_allocN_len(void *vmemh)
+size_t MEM_allocN_len(const void *vmemh)
 {
 	if (vmemh) {
-		MemHead *memh = vmemh;
+		const MemHead *memh = vmemh;
 	
 		memh--;
 		return memh->len;

Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/mask_rasterize.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/mask_rasterize.c	2012-07-14 12:47:49 UTC (rev 48911)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/mask_rasterize.c	2012-07-14 13:04:01 UTC (rev 48912)
@@ -34,20 +34,18 @@
 #include "DNA_mask_types.h"
 
 #include "BLI_utildefines.h"
-#include "BLI_kdopbvh.h"
 #include "BLI_scanfill.h"
+#include "BLI_memarena.h"
 
 #include "BLI_math.h"
 #include "BLI_rect.h"
 #include "BLI_listbase.h"
-#include "BLI_mempool.h"
+#include "BLI_linklist.h"
 
 #include "BKE_mask.h"
 
 #ifndef USE_RASKTER
 
-#define RESOL 32
-
 /**
  * A single #MaskRasterHandle contains multile #MaskRasterLayer's,
  * each #MaskRasterLayer does its own lookup which contributes to
@@ -56,17 +54,24 @@
 
 /* internal use only */
 typedef struct MaskRasterLayer {
-	/* xy raytree */
-	BVHTree *bvhtree;
+	/* geometry */
+	unsigned int   tri_tot;
+	unsigned int (*tri_array)[4];  /* access coords tri/quad */
+	float        (*tri_coords)[3]; /* xy, z 0-1 (1.0 == filled) */
 
+
 	/* 2d bounds (to quickly skip raytree lookup) */
 	rctf bounds;
 
-	/* geometry */
-	unsigned int (*tri_array)[4];  /* access coords tri/quad */
-	float        (*tri_coords)[3]; /* xy, z 0-1 (1.0 == filled) */
 
+	/* buckets */
+	unsigned int **buckets_tri;
+	/* cache divide and subtract */
+	float buckets_xy_scalar[2]; /* 1.0 / (buckets_width + FLT_EPSILON) */
+	unsigned int buckets_x;
+	unsigned int buckets_y;
 
+
 	/* copied direct from #MaskLayer.--- */
 	/* blending options */
 	float  alpha;
@@ -75,6 +80,7 @@
 
 } MaskRasterLayer;
 
+static void layer_bucket_init(MaskRasterLayer *layer);
 
 /**
  * opaque local struct for mask pixel lookup, each MaskLayer needs one of these
@@ -104,7 +110,6 @@
 
 	/* raycast vars */
 	for (i = 0; i < layers_tot; i++, raslayers++) {
-		BLI_bvhtree_free(raslayers->bvhtree);
 
 		if (raslayers->tri_array) {
 			MEM_freeN(raslayers->tri_array);
@@ -113,27 +118,44 @@
 		if (raslayers->tri_coords) {
 			MEM_freeN(raslayers->tri_coords);
 		}
+
+		if (raslayers->buckets_tri) {
+			const unsigned int   bucket_tot = raslayers->buckets_x * raslayers->buckets_y;
+			unsigned int bucket_index;
+			for (bucket_index = 0; bucket_index < bucket_tot; bucket_index++) {
+				unsigned int *tri_index = raslayers->buckets_tri[bucket_index];
+				if (tri_index) {
+					MEM_freeN(tri_index);
+				}
+			}
+
+			MEM_freeN(raslayers->buckets_tri);
+		}
 	}
 
 	MEM_freeN(mr_handle->layers);
 	MEM_freeN(mr_handle);
 }
 
+#define RESOL 32
+
 #define PRINT_MASK_DEBUG printf
 
 #define SF_EDGE_IS_BOUNDARY 0xff
 
 #define SF_KEYINDEX_TEMP_ID ((unsigned int) -1)
+#define TRI_TERMINATOR_ID   ((unsigned int) -1)
 
 
 void maskrasterize_spline_differentiate_point_inset(float (*diff_feather_points)[2], float (*diff_points)[2],
-                                                    const int tot_diff_point, const float ofs, const int do_test)
+                                                    const unsigned int tot_diff_point, const float ofs,
+                                                    const short do_test)
 {
-	int k_prev = tot_diff_point - 2;
-	int k_curr = tot_diff_point - 1;
-	int k_next = 0;
+	unsigned int k_prev = tot_diff_point - 2;
+	unsigned int k_curr = tot_diff_point - 1;
+	unsigned int k_next = 0;
 
-	int k;
+	unsigned int k;
 
 	float d_prev[2];
 	float d_next[2];
@@ -153,9 +175,6 @@
 	sub_v2_v2v2(d_prev, co_prev, co_curr);
 	normalize_v2(d_prev);
 
-	/* TODO, speedup by only doing one normalize per iter */
-
-
 	for (k = 0; k < tot_diff_point; k++) {
 
 		co_prev = diff_points[k_prev];
@@ -202,7 +221,7 @@
 
 	const float zvec[3] = {0.0f, 0.0f, 1.0f};
 	MaskLayer *masklay;
-	int masklay_index;
+	unsigned int masklay_index;
 
 	mr_handle->layers_tot = BLI_countlist(&mask->masklayers);
 	mr_handle->layers = MEM_mallocN(sizeof(MaskRasterLayer) * mr_handle->layers_tot, STRINGIFY(MaskRasterLayer));
@@ -366,7 +385,6 @@
 			rctf bounds;
 			int tri_index;
 
-			BVHTree *bvhtree;
 			float bvhcos[4][3];
 
 			/* now we have all the splines */
@@ -397,9 +415,6 @@
 
 			tri_array = MEM_mallocN(sizeof(*tri_array) * (sf_tri_tot + tot_feather_quads), "maskrast_tri_index");
 
-			/* */
-			bvhtree = BLI_bvhtree_new(sf_tri_tot + tot_feather_quads, 0.000001f, 8, 6);
-
 			/* tri's */
 			tri = (unsigned int *)tri_array;
 			for (sf_tri = sf_ctx.fillfacebase.first, tri_index = 0; sf_tri; sf_tri = sf_tri->next, tri_index++) {
@@ -407,12 +422,6 @@
 				*(tri++) = sf_tri->v2->tmp.u;
 				*(tri++) = sf_tri->v3->tmp.u;
 				*(tri++) = TRI_VERT;
-
-				copy_v3_v3(bvhcos[0], tri_coords[*(tri - 4)]);
-				copy_v3_v3(bvhcos[1], tri_coords[*(tri - 3)]);
-				copy_v3_v3(bvhcos[2], tri_coords[*(tri - 2)]);
-
-				BLI_bvhtree_insert(bvhtree, tri_index, (float *)bvhcos, 3);
 			}
 
 			/* start of feather faces... if we have this set,
@@ -435,7 +444,7 @@
 						copy_v3_v3(bvhcos[2], tri_coords[*(tri - 2)]);
 						copy_v3_v3(bvhcos[3], tri_coords[*(tri - 1)]);
 
-						BLI_bvhtree_insert(bvhtree, tri_index++, (const float *)bvhcos, 4);
+						tri_index++;
 					}
 				}
 			}
@@ -444,21 +453,20 @@
 
 			BLI_assert(tri_index == sf_tri_tot + tot_feather_quads);
 
-			BLI_bvhtree_balance(bvhtree);
-
 			{
 				MaskRasterLayer *raslayer = &mr_handle->layers[masklay_index];
 
+				raslayer->tri_tot = sf_tri_tot + tot_feather_quads;
 				raslayer->tri_coords = tri_coords;
 				raslayer->tri_array  = tri_array;
 				raslayer->bounds  = bounds;
-				raslayer->bvhtree = bvhtree;
 
 				/* copy as-is */
 				raslayer->alpha = masklay->alpha;
 				raslayer->blend = masklay->blend;

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list