[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29596] branches/soc-2010-nicolasbishop/ source/blender: More changes in prepping for mask layers:

Nicholas Bishop nicholasbishop at gmail.com
Mon Jun 21 21:46:23 CEST 2010


Revision: 29596
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29596
Author:   nicholasbishop
Date:     2010-06-21 21:46:23 +0200 (Mon, 21 Jun 2010)

Log Message:
-----------
More changes in prepping for mask layers:
* Reversed direction of mask strength
* Changed subsurf_make_derived_from_derived to take a gridkey parameter, or NULL for the default key (just coords + normals)

Modified Paths:
--------------
    branches/soc-2010-nicolasbishop/source/blender/blenkernel/BKE_subsurf.h
    branches/soc-2010-nicolasbishop/source/blender/blenkernel/intern/multires.c
    branches/soc-2010-nicolasbishop/source/blender/blenkernel/intern/shrinkwrap.c
    branches/soc-2010-nicolasbishop/source/blender/blenkernel/intern/subsurf_ccg.c
    branches/soc-2010-nicolasbishop/source/blender/editors/sculpt_paint/paint_mask.c
    branches/soc-2010-nicolasbishop/source/blender/editors/sculpt_paint/sculpt.c
    branches/soc-2010-nicolasbishop/source/blender/gpu/intern/gpu_buffers.c
    branches/soc-2010-nicolasbishop/source/blender/modifiers/intern/MOD_subsurf.c

Modified: branches/soc-2010-nicolasbishop/source/blender/blenkernel/BKE_subsurf.h
===================================================================
--- branches/soc-2010-nicolasbishop/source/blender/blenkernel/BKE_subsurf.h	2010-06-21 17:37:50 UTC (rev 29595)
+++ branches/soc-2010-nicolasbishop/source/blender/blenkernel/BKE_subsurf.h	2010-06-21 19:46:23 UTC (rev 29596)
@@ -68,12 +68,12 @@
 #define GRIDELEM_NO_OFFSET(_key) (_key->no ? (3*_key->co + _key->mask) * sizeof(float) : -1)
 #define GRIDELEM_INTERP_COUNT(_key) (3*_key->co + _key->mask)
 
-#define GRIDELEM_AT(_grid, _elem, _key) (struct DMGridData*)(((char*)(_grid)) + (_elem) * GRIDELEM_SIZE(_key))
+#define GRIDELEM_AT(_grid, _elem, _key) ((struct DMGridData*)(((char*)(_grid)) + (_elem) * GRIDELEM_SIZE(_key)))
 #define GRIDELEM_INC(_grid, _inc, _key) ((_grid) = GRIDELEM_AT(_grid, _inc, _key))
 
-#define GRIDELEM_CO(_grid, _key) (float*)(_grid)
-#define GRIDELEM_NO(_grid, _key) (float*)((char*)(_grid) + GRIDELEM_NO_OFFSET(_key))
-#define GRIDELEM_MASK(_grid, _key) (float*)((char*)(_grid) + GRIDELEM_MASK_OFFSET(_key))
+#define GRIDELEM_CO(_grid, _key) ((float*)(_grid))
+#define GRIDELEM_NO(_grid, _key) ((float*)((char*)(_grid) + GRIDELEM_NO_OFFSET(_key)))
+#define GRIDELEM_MASK(_grid, _key) ((float*)((char*)(_grid) + GRIDELEM_MASK_OFFSET(_key)))
 
 #define GRIDELEM_CO_AT(_grid, _elem, _key) GRIDELEM_CO(GRIDELEM_AT(_grid, _elem, _key), _key)
 #define GRIDELEM_NO_AT(_grid, _elem, _key) GRIDELEM_NO(GRIDELEM_AT(_grid, _elem, _key), _key)
@@ -82,6 +82,7 @@
 struct DerivedMesh *subsurf_make_derived_from_derived(
 						struct DerivedMesh *dm,
 						struct SubsurfModifierData *smd,
+						struct GridKey *gridkey,
 						int useRenderParams, float (*vertCos)[3],
 						int isFinalCalc, int editMode);
 

Modified: branches/soc-2010-nicolasbishop/source/blender/blenkernel/intern/multires.c
===================================================================
--- branches/soc-2010-nicolasbishop/source/blender/blenkernel/intern/multires.c	2010-06-21 17:37:50 UTC (rev 29595)
+++ branches/soc-2010-nicolasbishop/source/blender/blenkernel/intern/multires.c	2010-06-21 19:46:23 UTC (rev 29596)
@@ -447,6 +447,15 @@
 	return multires_dm_create_from_derived(&mmd, 1, dm, ob, 0, 0);
 }
 
+static GridKey *create_gridkey(DerivedMesh *dm)
+{
+	GridKey *gridkey = MEM_callocN(sizeof(GridKey), "create_gridkey");
+
+	GRIDELEM_KEY_INIT(gridkey, 1, 1, 1);
+
+	return gridkey;
+}
+
 static DerivedMesh *subsurf_dm_create_local(Object *ob, DerivedMesh *dm, int lvl, int simple, int optimal)
 {
 	SubsurfModifierData smd;
@@ -459,7 +468,7 @@
 	if(optimal)
 		smd.flags |= eSubsurfModifierFlag_ControlEdges;
 
-	return subsurf_make_derived_from_derived(dm, &smd, 0, NULL, 0, 0);
+	return subsurf_make_derived_from_derived(dm, &smd, create_gridkey(dm), 0, NULL, 0, 0);
 }
 
 static DMGridData **copy_grids(DMGridData **grids, int totgrid, int gridsize, GridKey *gridkey)
@@ -645,8 +654,6 @@
 			/* TODO: for now we just always have a paintmask layer */
 			if(!stored_mask_layer) {
 				stored_mask_layer = CustomData_add_layer(&stored_grids[i], CD_PAINTMASK, CD_CALLOC, NULL, dGridSize*dGridSize*numVerts);
-				for(x = 0; x < dGridSize*dGridSize*numVerts; ++x)
-					stored_mask_layer[x] = 1;
 			}
 		}
 

Modified: branches/soc-2010-nicolasbishop/source/blender/blenkernel/intern/shrinkwrap.c
===================================================================
--- branches/soc-2010-nicolasbishop/source/blender/blenkernel/intern/shrinkwrap.c	2010-06-21 17:37:50 UTC (rev 29595)
+++ branches/soc-2010-nicolasbishop/source/blender/blenkernel/intern/shrinkwrap.c	2010-06-21 19:46:23 UTC (rev 29596)
@@ -559,7 +559,7 @@
 			ssmd.subdivType	= ME_CC_SUBSURF;		//catmull clark
 			ssmd.levels		= smd->subsurfLevels;	//levels
 
-			ss_mesh = subsurf_make_derived_from_derived(dm, &ssmd, FALSE, NULL, 0, 0);
+			ss_mesh = subsurf_make_derived_from_derived(dm, &ssmd, NULL, FALSE, NULL, 0, 0);
 
 			if(ss_mesh)
 			{

Modified: branches/soc-2010-nicolasbishop/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- branches/soc-2010-nicolasbishop/source/blender/blenkernel/intern/subsurf_ccg.c	2010-06-21 17:37:50 UTC (rev 29595)
+++ branches/soc-2010-nicolasbishop/source/blender/blenkernel/intern/subsurf_ccg.c	2010-06-21 19:46:23 UTC (rev 29596)
@@ -2644,6 +2644,7 @@
 struct DerivedMesh *subsurf_make_derived_from_derived(
 						struct DerivedMesh *dm,
 						struct SubsurfModifierData *smd,
+						struct GridKey *gridkey,
 						int useRenderParams, float (*vertCos)[3],
 						int isFinalCalc, int editMode)
 {
@@ -2652,11 +2653,12 @@
 	int useSubsurfUv = smd->flags & eSubsurfModifierFlag_SubsurfUv;
 	int drawInteriorEdges = !(smd->flags & eSubsurfModifierFlag_ControlEdges);
 	CCGDerivedMesh *result;
-	GridKey *gridkey;
 
-	/* TODO */
-	gridkey = MEM_callocN(sizeof(GridKey), "subsurf_make_derived_from_derived.GridKey");
-	GRIDELEM_KEY_INIT(gridkey, 1, 1, 1);
+	if(!gridkey) {
+		/* create default gridkey */
+		gridkey = MEM_callocN(sizeof(GridKey), "subsurf_make_derived_from_derived.GridKey");
+		GRIDELEM_KEY_INIT(gridkey, 1, 0, 1);
+	}
 
 	if(editMode) {
 		int levels= (smd->modifier.scene)? get_render_subsurf_level(&smd->modifier.scene->r, smd->levels): smd->levels;

Modified: branches/soc-2010-nicolasbishop/source/blender/editors/sculpt_paint/paint_mask.c
===================================================================
--- branches/soc-2010-nicolasbishop/source/blender/editors/sculpt_paint/paint_mask.c	2010-06-21 17:37:50 UTC (rev 29595)
+++ branches/soc-2010-nicolasbishop/source/blender/editors/sculpt_paint/paint_mask.c	2010-06-21 19:46:23 UTC (rev 29596)
@@ -29,8 +29,8 @@
 
 static void set_mask_value(MaskSetMode mode, float *m)
 {
-	*m = (mode == MASKING_CLEAR ? 1 :
-	      mode == MASKING_FILL ? 0 :
+	*m = (mode == MASKING_CLEAR ? 0 :
+	      mode == MASKING_FILL ? 1 :
 	      mode == MASKING_INVERT ? (1 - *m) :
 	      mode == MASKING_RANDOM ? (float)rand() / RAND_MAX : 0);
 }

Modified: branches/soc-2010-nicolasbishop/source/blender/editors/sculpt_paint/sculpt.c
===================================================================
--- branches/soc-2010-nicolasbishop/source/blender/editors/sculpt_paint/sculpt.c	2010-06-21 17:37:50 UTC (rev 29595)
+++ branches/soc-2010-nicolasbishop/source/blender/editors/sculpt_paint/sculpt.c	2010-06-21 19:46:23 UTC (rev 29596)
@@ -745,7 +745,7 @@
 
 	avg*= brush_curve_strength(br, len, ss->cache->radius); /* Falloff curve */
 	if(mask)
-		avg*= *mask;
+		avg*= 1 - (*mask);
 
 	return avg;
 }
@@ -1426,7 +1426,7 @@
 				if(sculpt_brush_test(&test, vd.co)) {
 					float fade = tex_strength(ss, brush, vd.co, NULL, test.dist)*bstrength;
 
-					*vd.mask -= fade;
+					*vd.mask += fade;
 					CLAMP(*vd.mask, 0, 1);
 				
 					if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE;

Modified: branches/soc-2010-nicolasbishop/source/blender/gpu/intern/gpu_buffers.c
===================================================================
--- branches/soc-2010-nicolasbishop/source/blender/gpu/intern/gpu_buffers.c	2010-06-21 17:37:50 UTC (rev 29595)
+++ branches/soc-2010-nicolasbishop/source/blender/gpu/intern/gpu_buffers.c	2010-06-21 19:46:23 UTC (rev 29596)
@@ -431,7 +431,7 @@
    convert the mask strength to RGB-bytes */
 static void mask_to_gpu_colors(unsigned char out[3], float mask_strength)
 {
-	unsigned char v = (unsigned char)(mask_strength * 128.0f) + 64;
+	unsigned char v = (unsigned char)((1 - mask_strength) * 128.0f) + 64;
 	out[0] = v;
 	out[1] = v;
 	out[2] = v;

Modified: branches/soc-2010-nicolasbishop/source/blender/modifiers/intern/MOD_subsurf.c
===================================================================
--- branches/soc-2010-nicolasbishop/source/blender/modifiers/intern/MOD_subsurf.c	2010-06-21 17:37:50 UTC (rev 29595)
+++ branches/soc-2010-nicolasbishop/source/blender/modifiers/intern/MOD_subsurf.c	2010-06-21 19:46:23 UTC (rev 29596)
@@ -90,7 +90,7 @@
 	SubsurfModifierData *smd = (SubsurfModifierData*) md;
 	DerivedMesh *result;
 
-	result = subsurf_make_derived_from_derived(derivedData, smd,
+	result = subsurf_make_derived_from_derived(derivedData, smd, NULL,
 			useRenderParams, NULL, isFinalCalc, 0);
 	
 	if(useRenderParams || !isFinalCalc) {
@@ -109,7 +109,7 @@
 	SubsurfModifierData *smd = (SubsurfModifierData*) md;
 	DerivedMesh *result;
 
-	result = subsurf_make_derived_from_derived(derivedData, smd, 0,
+	result = subsurf_make_derived_from_derived(derivedData, smd, NULL, 0,
 			NULL, 0, 1);
 
 	return result;





More information about the Bf-blender-cvs mailing list