svn merge ^/trunk/blender -r41961:41998
[blender.git] / source / blender / blenkernel / intern / DerivedMesh.c
index 68aa5f883f49c59ec2a7a03719e01b2f76942977..5985049ea565a640e8e6af43c25d87e44d5c6400 100644 (file)
@@ -354,7 +354,7 @@ void DM_to_mesh(DerivedMesh *dm, Mesh *me, Object *ob)
 {
        /* dm might depend on me, so we need to do everything with a local copy */
        Mesh tmp = *me;
-       int totvert, totedge, totface, totloop, totpoly;
+       int totvert, totedge /*, totface */ /* UNUSED */, totloop, totpoly;
        int did_shapekeys=0;
        
        memset(&tmp.vdata, 0, sizeof(tmp.vdata));
@@ -484,7 +484,7 @@ void DM_add_tessface_layer(DerivedMesh *dm, int type, int alloctype, void *layer
        CustomData_add_layer(&dm->faceData, type, alloctype, layer, dm->numFaceData);
 }
 
-static void DM_add_loop_layer(DerivedMesh *dm, int type, int alloctype, void *layer)
+void DM_add_loop_layer(DerivedMesh *dm, int type, int alloctype, void *layer)
 {
        CustomData_add_layer(&dm->loopData, type, alloctype, layer, dm->numLoopData);
 }
@@ -1454,6 +1454,12 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
        }
 #endif /* WITH_GAMEENGINE */
 
+       /* Re-tesselation is necessary to push render data (uvs, textures, colors)
+          from loops and polys onto the tessfaces. This may be currently be redundant
+          in cases where the render mode doesn't use these inputs, but ideally
+          eventually tesselation would happen on-demand, and this is one of the primary
+          places it would be needed. */
+       finaldm->recalcTesselation(finaldm);
        finaldm->calcNormals(finaldm);
 
        *final_r = finaldm;