[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