Commit: 7003a0ddfbdc0258362b4667a8fc80f423bda879
Author: Campbell Barton
Date:   Thu Jul 16 20:49:44 2015 +1000
Branches: temp-derivedmesh-looptri
https://developer.blender.org/rB7003a0ddfbdc0258362b4667a8fc80f423bda879

Fix for flipped colors drawing vertex colors in subsurf

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

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 5f2fabc..5a7c4bc 100644
--- a/source/blender/blenkernel/intern/subsurf_ccg.c
+++ b/source/blender/blenkernel/intern/subsurf_ccg.c
@@ -1953,13 +1953,6 @@ static void ccgDM_buffer_copy_vertex(
        }
 }
 
-static void copy_mcol_uc3(unsigned char *v, const unsigned char *col)
-{
-       v[0] = col[3];
-       v[1] = col[2];
-       v[2] = col[1];
-}
-
 /* Only used by non-editmesh types */
 static void ccgDM_buffer_copy_color(
         DerivedMesh *dm, unsigned char *varray,
@@ -1968,7 +1961,7 @@ static void ccgDM_buffer_copy_color(
        CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm;
        CCGSubSurf *ss = ccgdm->ss;
        CCGKey key;
-       const unsigned char *mcol = user_data;
+       const char *mloopcol = user_data;
        int gridSize = ccgSubSurf_getGridSize(ss);
        int gridFaces = gridSize - 1;
        int i, totface = ccgSubSurf_getNumFaces(ss);
@@ -1985,10 +1978,10 @@ static void ccgDM_buffer_copy_color(
                for (S = 0; S < numVerts; S++) {
                        for (y = 0; y < gridFaces; y++) {
                                for (x = 0; x < gridFaces; x++) {
-                                       copy_mcol_uc3(&varray[start], 
&mcol[iface * 16]);
-                                       copy_mcol_uc3(&varray[start + 3], 
&mcol[iface * 16 + 12]);
-                                       copy_mcol_uc3(&varray[start + 6], 
&mcol[iface * 16 + 8]);
-                                       copy_mcol_uc3(&varray[start + 9], 
&mcol[iface * 16 + 4]);
+                                       copy_v3_v3_char((char *)&varray[start + 
0], &mloopcol[iface * 16 + 0]);
+                                       copy_v3_v3_char((char *)&varray[start + 
3], &mloopcol[iface * 16 + 12]);
+                                       copy_v3_v3_char((char *)&varray[start + 
6], &mloopcol[iface * 16 + 8]);
+                                       copy_v3_v3_char((char *)&varray[start + 
9], &mloopcol[iface * 16 + 4]);
 
                                        start += 12;
                                        iface++;
@@ -2882,16 +2875,16 @@ static void ccgDM_drawMappedFaces(DerivedMesh *dm,
                                                                float *c = 
CCG_grid_elem_co(&key, faceGridData, x + 1, y + 1);
                                                                float *d = 
CCG_grid_elem_co(&key, faceGridData, x, y + 1);
 
-                                                               if (cp) 
glColor3ub(cp[7], cp[6], cp[5]);
+                                                               if (cp) 
glColor3ubv(&cp[4]);
                                                                
glNormal3sv(ln[0][1]);
                                                                glVertex3fv(d);
-                                                               if (cp) 
glColor3ub(cp[11], cp[10], cp[9]);
+                                                               if (cp) 
glColor3ubv(&cp[8]);
                                                                
glNormal3sv(ln[0][2]);
                                                                glVertex3fv(c);
-                                                               if (cp) 
glColor3ub(cp[15], cp[14], cp[13]);
+                                                               if (cp) 
glColor3ubv(&cp[12]);
                                                                
glNormal3sv(ln[0][3]);
                                                                glVertex3fv(b);
-                                                               if (cp) 
glColor3ub(cp[3], cp[2], cp[1]);
+                                                               if (cp) 
glColor3ubv(&cp[0]);
                                                                
glNormal3sv(ln[0][0]);
                                                                glVertex3fv(a);
 
@@ -2909,10 +2902,10 @@ static void ccgDM_drawMappedFaces(DerivedMesh *dm,
                                                                a = 
CCG_grid_elem(&key, faceGridData, x, y + 0);
                                                                b = 
CCG_grid_elem(&key, faceGridData, x, y + 1);
        
-                                                               if (cp) 
glColor3ub(cp[3], cp[2], cp[1]);
+                                                               if (cp) 
glColor3ubv(&cp[0]);
                                                                
glNormal3fv(CCG_elem_no(&key, a));
                                                                
glVertex3fv(CCG_elem_co(&key, a));
-                                                               if (cp) 
glColor3ub(cp[7], cp[6], cp[5]);
+                                                               if (cp) 
glColor3ubv(&cp[4]);
                                                                
glNormal3fv(CCG_elem_no(&key, b));
                                                                
glVertex3fv(CCG_elem_co(&key, b));
 
@@ -2924,10 +2917,10 @@ static void ccgDM_drawMappedFaces(DerivedMesh *dm,
                                                        a = CCG_grid_elem(&key, 
faceGridData, x, y + 0);
                                                        b = CCG_grid_elem(&key, 
faceGridData, x, y + 1);
 
-                                                       if (cp) 
glColor3ub(cp[15], cp[14], cp[13]);
+                                                       if (cp) 
glColor3ubv(&cp[12]);
                                                        
glNormal3fv(CCG_elem_no(&key, a));
                                                        
glVertex3fv(CCG_elem_co(&key, a));
-                                                       if (cp) 
glColor3ub(cp[11], cp[10], cp[9]);
+                                                       if (cp) 
glColor3ubv(&cp[8]);
                                                        
glNormal3fv(CCG_elem_no(&key, b));
                                                        
glVertex3fv(CCG_elem_co(&key, b));
 
@@ -2947,13 +2940,13 @@ static void ccgDM_drawMappedFaces(DerivedMesh *dm,
 
                                                                
ccgDM_glNormalFast(a, b, c, d);
        
-                                                               if (cp) 
glColor3ub(cp[7], cp[6], cp[5]);
+                                                               if (cp) 
glColor3ubv(&cp[4]);
                                                                glVertex3fv(d);
-                                                               if (cp) 
glColor3ub(cp[11], cp[10], cp[9]);
+                                                               if (cp) 
glColor3ubv(&cp[8]);
                                                                glVertex3fv(c);
-                                                               if (cp) 
glColor3ub(cp[15], cp[14], cp[13]);
+                                                               if (cp) 
glColor3ubv(&cp[12]);
                                                                glVertex3fv(b);
-                                                               if (cp) 
glColor3ub(cp[3], cp[2], cp[1]);
+                                                               if (cp) 
glColor3ubv(&cp[0]);
                                                                glVertex3fv(a);
 
                                                                if (cp) cp += 
16;

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

Reply via email to