Commit: a7120b97307d60a2c8bc4cf00f62a960b633e86d
Author: Bastien Montagne
Date:   Wed Apr 16 16:51:49 2014 +0200
https://developer.blender.org/rBa7120b97307d60a2c8bc4cf00f62a960b633e86d

Fix related to new split normals draw code.

Tessellated split normals CDlayer had no swap func, hence ugly little 
test_index_face()
could not rotate its values correctly when rotating tessellated faces...

Extra-reported in T39735.

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

M       source/blender/blenkernel/intern/customdata.c
M       source/blender/blenkernel/intern/mesh_evaluate.c

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

diff --git a/source/blender/blenkernel/intern/customdata.c 
b/source/blender/blenkernel/intern/customdata.c
index 0309e7d..4a76abc 100644
--- a/source/blender/blenkernel/intern/customdata.c
+++ b/source/blender/blenkernel/intern/customdata.c
@@ -1070,6 +1070,19 @@ static void layerInterp_mvert_skin(void **sources, const 
float *weights,
        vs->flag &= ~MVERT_SKIN_ROOT;
 }
 
+static void layerSwap_flnor(void *data, const int *corner_indices)
+{
+       short (*flnors)[4][3] = data;
+       short nors[4][3];
+       int i = 4;
+
+       while (i--) {
+               copy_v3_v3_short(nors[i], (*flnors)[corner_indices[i]]);
+       }
+
+       memcpy(flnors, nors, sizeof(nors));
+}
+
 static const LayerTypeInfo LAYERTYPEINFO[CD_NUMTYPES] = {
        /* 0: CD_MVERT */
        {sizeof(MVert), "MVert", 1, NULL, NULL, NULL, NULL, NULL, NULL},
@@ -1182,7 +1195,7 @@ static const LayerTypeInfo LAYERTYPEINFO[CD_NUMTYPES] = {
        /* 39: CD_MLOOPTANGENT */
        {sizeof(float[4]), "", 0, NULL, NULL, NULL, NULL, NULL, NULL},
        /* 40: CD_TESSLOOPNORMAL */
-       {sizeof(short[4][3]), "", 0, NULL, NULL, NULL, NULL, NULL, NULL},
+       {sizeof(short[4][3]), "", 0, NULL, NULL, NULL, NULL, layerSwap_flnor, 
NULL},
     /* 41: CD_DYNTOPO_NODE */
        {sizeof(int), "", 0, NULL, NULL, NULL, NULL, NULL, 
layerDefault_dyntopo_node},
 };
diff --git a/source/blender/blenkernel/intern/mesh_evaluate.c 
b/source/blender/blenkernel/intern/mesh_evaluate.c
index fe37b92..281e98e 100644
--- a/source/blender/blenkernel/intern/mesh_evaluate.c
+++ b/source/blender/blenkernel/intern/mesh_evaluate.c
@@ -1236,7 +1236,7 @@ void BKE_mesh_loops_to_tessdata(CustomData *fdata, 
CustomData *ldata, CustomData
                float (*lnors)[3] = CustomData_get_layer(ldata, CD_NORMAL);
 
                for (findex = 0, lidx = loopindices; findex < num_faces; 
lidx++, findex++, fnors++) {
-                       for (j = (*lidx)[3] ? 4 : 3; j--;) {
+                       for (j = (mface ? mface[findex].v4 : (*lidx)[3]) ? 4 : 
3; j--;) {
                                normal_float_to_short_v3((*fnors)[j], 
lnors[(*lidx)[j]]);
                        }
                }

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

Reply via email to