[Bf-blender-cvs] [660deeb] temp-derivedmesh-looptri: use loop-data for subsurf uv's

Campbell Barton noreply at git.blender.org
Thu Jul 16 13:16:46 CEST 2015


Commit: 660deeb9ca0f2c55be6c5458f225d033cc6f83d4
Author: Campbell Barton
Date:   Thu Jul 16 21:06:12 2015 +1000
Branches: temp-derivedmesh-looptri
https://developer.blender.org/rB660deeb9ca0f2c55be6c5458f225d033cc6f83d4

use loop-data for subsurf uv's

===================================================================

M	source/blender/blenkernel/intern/subsurf_ccg.c

===================================================================

diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c
index 5a7c4bc..b6894a8 100644
--- a/source/blender/blenkernel/intern/subsurf_ccg.c
+++ b/source/blender/blenkernel/intern/subsurf_ccg.c
@@ -1998,7 +1998,7 @@ static void ccgDM_buffer_copy_uv(
 	CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm;
 	CCGSubSurf *ss = ccgdm->ss;
 	CCGKey key;
-	MTFace *tf = DM_get_tessface_data_layer(dm, CD_MTFACE);
+	MLoopUV *mloopuv = DM_get_loop_data_layer(dm, CD_MLOOPUV);
 	int gridSize = ccgSubSurf_getGridSize(ss);
 	int gridFaces = gridSize - 1;
 	int i, totface = ccgSubSurf_getNumFaces(ss);
@@ -2013,12 +2013,12 @@ static void ccgDM_buffer_copy_uv(
 		for (S = 0; S < numVerts; S++) {
 			for (y = 0; y < gridFaces; y++) {
 				for (x = 0; x < gridFaces; x++) {
-					copy_v2_v2(&varray[start], tf->uv[0]);
-					copy_v2_v2(&varray[start + 2], tf->uv[3]);
-					copy_v2_v2(&varray[start + 4], tf->uv[2]);
-					copy_v2_v2(&varray[start + 6], tf->uv[1]);
+					copy_v2_v2(&varray[start + 0], mloopuv[0].uv);
+					copy_v2_v2(&varray[start + 2], mloopuv[3].uv);
+					copy_v2_v2(&varray[start + 4], mloopuv[2].uv);
+					copy_v2_v2(&varray[start + 6], mloopuv[1].uv);
 
-					tf++;
+					mloopuv += 4;
 					start += 8;
 				}
 			}
@@ -2038,22 +2038,22 @@ static void ccgDM_buffer_copy_uv_texpaint(
 	int start = 0;
 	DMFlagMat *faceFlags = ccgdm->faceFlags;
 	int totmaterial = dm->totmat;
-	MTFace **mtface_base;
-	MTFace *stencil_base;
+	MLoopUV **mloopuv_base;
+	MLoopUV  *stencil_base;
 	int stencil;
 
 	CCG_key_top_level(&key, ss);
 
 	/* should have been checked for before, reassert */
-	BLI_assert(DM_get_tessface_data_layer(dm, CD_MTFACE));
-	mtface_base = MEM_mallocN(totmaterial * sizeof(*mtface_base), "texslots");
+	BLI_assert(DM_get_loop_data_layer(dm, CD_MLOOPUV));
+	mloopuv_base = MEM_mallocN(totmaterial * sizeof(*mloopuv_base), "texslots");
 
 	for (i = 0; i < totmaterial; i++) {
-		mtface_base[i] = DM_paint_uvlayer_active_get(dm, i);
+		mloopuv_base[i] = DM_paint_uvlayer_active_get_mloopuv(dm, i);
 	}
 
-	stencil = CustomData_get_stencil_layer(&dm->faceData, CD_MTFACE);
-	stencil_base = CustomData_get_layer_n(&dm->faceData, CD_MTFACE, stencil);
+	stencil = CustomData_get_stencil_layer(&dm->loopData, CD_MLOOPUV);
+	stencil_base = CustomData_get_layer_n(&dm->loopData, CD_MLOOPUV, stencil);
 
 	start = 0;
 
@@ -2073,23 +2073,23 @@ static void ccgDM_buffer_copy_uv_texpaint(
 		for (S = 0; S < numVerts; S++) {
 			for (y = 0; y < gridFaces; y++) {
 				for (x = 0; x < gridFaces; x++) {
-					/* divide by 16, gives us current tface */
-					unsigned int i_tf = start / 16;
-					copy_v2_v2(&varray[start], mtface_base[matnr][i_tf].uv[0]);
-					copy_v2_v2(&varray[start + 2], stencil_base[i_tf].uv[0]);
-					copy_v2_v2(&varray[start + 4], mtface_base[matnr][i_tf].uv[3]);
-					copy_v2_v2(&varray[start + 6], stencil_base[i_tf].uv[3]);
-					copy_v2_v2(&varray[start + 8], mtface_base[matnr][i_tf].uv[2]);
-					copy_v2_v2(&varray[start + 10], stencil_base[i_tf].uv[2]);
-					copy_v2_v2(&varray[start + 12], mtface_base[matnr][i_tf].uv[1]);
-					copy_v2_v2(&varray[start + 14], stencil_base[i_tf].uv[1]);
+					/* divide by 4, gives us current loop-index */
+					unsigned int i_ml = start / 4;
+					copy_v2_v2(&varray[start + 0],  mloopuv_base[matnr][i_ml + 0].uv);
+					copy_v2_v2(&varray[start + 2],         stencil_base[i_ml + 0].uv);
+					copy_v2_v2(&varray[start + 4],  mloopuv_base[matnr][i_ml + 3].uv);
+					copy_v2_v2(&varray[start + 6],         stencil_base[i_ml + 3].uv);
+					copy_v2_v2(&varray[start + 8],  mloopuv_base[matnr][i_ml + 2].uv);
+					copy_v2_v2(&varray[start + 10],        stencil_base[i_ml + 2].uv);
+					copy_v2_v2(&varray[start + 12], mloopuv_base[matnr][i_ml + 1].uv);
+					copy_v2_v2(&varray[start + 14],        stencil_base[i_ml + 1].uv);
 					start += 16;
 				}
 			}
 		}
 	}
 
-	MEM_freeN(mtface_base);
+	MEM_freeN(mloopuv_base);
 }
 
 static void ccgDM_copy_gpu_data(




More information about the Bf-blender-cvs mailing list