[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