[Bf-blender-cvs] [7003a0d] temp-derivedmesh-looptri: Fix for flipped colors drawing vertex colors in subsurf

Campbell Barton noreply at git.blender.org
Thu Jul 16 12:54:48 CEST 2015


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;




More information about the Bf-blender-cvs mailing list