Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-05-30 22:09:19 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-05-30 22:09:19 +0400
commitd7f51f83f65799b447324d1738239cffdc5e1918 (patch)
treea050f6d3cc5ee87565bb5e56650a99bbaf411081 /source/blender/blenkernel/intern/cdderivedmesh.c
parent09e11ad6ef1187d581b64a9ac6ebbbb6f056f7d9 (diff)
remove CD_MASK_NORMAL from CD_MASK_DERIVEDMESH, bmesh merge included this but its not needed.
Now add asserts to make sure this layer is only added once the modifier stack has been calculated. this saves normal layer being calculated whenver vertex normals need updating.
Diffstat (limited to 'source/blender/blenkernel/intern/cdderivedmesh.c')
-rw-r--r--source/blender/blenkernel/intern/cdderivedmesh.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index 80bd71e7b59..af0dadeccab 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -1712,7 +1712,7 @@ static CDDerivedMesh *cdDM_create(const char *desc)
dm->getEdgeDataArray = DM_get_edge_data_layer;
dm->getTessFaceDataArray = DM_get_tessface_data_layer;
- dm->calcNormals = CDDM_calc_normals_mapping;
+ dm->calcNormals = CDDM_calc_normals;
dm->recalcTessellation = CDDM_recalc_tessellation;
dm->getVertCos = cdDM_getVertCos;
@@ -2264,7 +2264,6 @@ void CDDM_calc_normals_mapping_ex(DerivedMesh *dm, const short only_face_normals
cddm->dm.dirty &= ~DM_DIRTY_NORMALS;
}
-
void CDDM_calc_normals_mapping(DerivedMesh *dm)
{
/* use this to skip calculating normals on original vert's, this may need to be changed */
@@ -2273,6 +2272,7 @@ void CDDM_calc_normals_mapping(DerivedMesh *dm)
CDDM_calc_normals_mapping_ex(dm, only_face_normals);
}
+#if 0
/* bmesh note: this matches what we have in trunk */
void CDDM_calc_normals(DerivedMesh *dm)
{
@@ -2295,6 +2295,23 @@ void CDDM_calc_normals(DerivedMesh *dm)
cddm->dm.dirty &= ~DM_DIRTY_NORMALS;
}
+#else
+
+/* poly normal layer is now only for final display */
+void CDDM_calc_normals(DerivedMesh *dm)
+{
+ CDDerivedMesh *cddm = (CDDerivedMesh *)dm;
+
+ /* we don't want to overwrite any referenced layers */
+ cddm->mvert = CustomData_duplicate_referenced_layer(&dm->vertData, CD_MVERT, dm->numVertData);
+
+ BKE_mesh_calc_normals_poly(cddm->mvert, dm->numVertData, CDDM_get_loops(dm), CDDM_get_polys(dm),
+ dm->numLoopData, dm->numPolyData, NULL);
+
+ cddm->dm.dirty &= ~DM_DIRTY_NORMALS;
+}
+
+#endif
void CDDM_calc_normals_tessface(DerivedMesh *dm)
{