Commit: 376b125a8650d18e2f1be1cb2dd208f51b7e3808
Author: Antony Riakiotakis
Date:   Wed Jul 15 19:57:23 2015 +0200
Branches: temp-derivedmesh-looptri
https://developer.blender.org/rB376b125a8650d18e2f1be1cb2dd208f51b7e3808

Port texture paint and mcolor GPU upload to new design

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

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

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

diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c 
b/source/blender/blenkernel/intern/cdderivedmesh.c
index d5c5984..bf1a9cf 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -1383,17 +1383,18 @@ static void cdDM_buffer_copy_uv(
 static void cdDM_buffer_copy_uv_texpaint(
         DerivedMesh *dm, float *varray)
 {
-       int i, tottri;
+       int i, j, totpoly;
        int start;
 
        const MPoly *mpoly;
-       const MLoopTri *lt;
 
        int totmaterial = dm->totmat;
        const MLoopUV **uv_base;
        const MLoopUV  *uv_stencil_base;
        int stencil;
 
+       totpoly = dm->getNumPolys(dm);
+
        /* should have been checked for before, reassert */
        BLI_assert(DM_get_loop_data_layer(dm, CD_MLOOPUV));
        uv_base = MEM_mallocN(totmaterial * sizeof(*uv_base), "texslots");
@@ -1406,23 +1407,16 @@ static void cdDM_buffer_copy_uv_texpaint(
        uv_stencil_base = CustomData_get_layer_n(&dm->loopData, CD_MLOOPUV, 
stencil);
 
        mpoly = dm->getPolyArray(dm);
-       lt = dm->looptris.array;
-       tottri = dm->looptris.num;
        start = 0;
 
-       for (i = 0; i < tottri; i++, lt++) {
-               const MPoly *mp = &mpoly[lt->poly];
-               const unsigned int *ltri = lt->tri;
-               int mat_i = mp->mat_nr;
+       for (i = 0; i < totpoly; i++, mpoly++) {
+               int mat_i = mpoly->mat_nr;
 
-               /* v1 v2 v3 */
-               copy_v2_v2(&varray[start + 0], uv_base[mat_i][ltri[0]].uv);
-               copy_v2_v2(&varray[start + 2], uv_stencil_base[ltri[0]].uv);
-               copy_v2_v2(&varray[start + 4], uv_base[mat_i][ltri[1]].uv);
-               copy_v2_v2(&varray[start + 6], uv_stencil_base[ltri[1]].uv);
-               copy_v2_v2(&varray[start + 8], uv_base[mat_i][ltri[2]].uv);
-               copy_v2_v2(&varray[start + 10], uv_stencil_base[ltri[2]].uv);
-               start += 12;
+               for (j = 0; j < mpoly->totloop; j++) {
+                       copy_v2_v2(&varray[start], 
uv_base[mat_i][mpoly->loopstart + j].uv);
+                       copy_v2_v2(&varray[start + 2], 
uv_stencil_base[mpoly->loopstart + j].uv);
+                       start += 4;
+               }
        }
 
        MEM_freeN(uv_base);
@@ -1433,24 +1427,21 @@ static void cdDM_buffer_copy_mcol(
         DerivedMesh *dm, unsigned char *varray,
         const void *user_data)
 {
-       int i, tottri;
+       int i, j, totpoly;
        int start;
-       const MLoopTri *lt;
 
        const MLoopCol *mloopcol = user_data;
+       const MPoly *mpoly = dm->getPolyArray(dm);
 
-       lt = dm->looptris.array;
-       tottri = dm->looptris.num;
-       start = 0;
+       totpoly = dm->getNumPolys(dm);
 
-       for (i = 0; i < tottri; i++, lt++) {
-               const unsigned int *ltri = lt->tri;
+       start = 0;
 
-               /* v1 v2 v3 */
-               copy_v3_v3_char((char *)&varray[start + 0], 
&mloopcol[ltri[0]].r);
-               copy_v3_v3_char((char *)&varray[start + 3], 
&mloopcol[ltri[1]].r);
-               copy_v3_v3_char((char *)&varray[start + 6], 
&mloopcol[ltri[2]].r);
-               start += 9;
+       for (i = 0; i < totpoly; i++, mpoly++) {
+               for (j = 0; j < mpoly->totloop; j++) {
+                       copy_v3_v3_char((char *)&varray[start], 
&mloopcol[mpoly->loopstart + j].r);
+                       start += 3;
+               }
        }
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to