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>2015-07-17 13:14:17 +0300
committerCampbell Barton <ideasman42@gmail.com>2015-07-17 14:59:07 +0300
commite1606e8c87102a2295d40f817a3643df9b697c3d (patch)
treec540964c83b331c407485b6373934ec426ef9e4f
parent19614f4395b3a5404c96fdec02e0d5e89bfe9e32 (diff)
Don't create MFace's when calculating normals
Instead only create MFace layer when its requested
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c24
-rw-r--r--source/blender/blenkernel/intern/cdderivedmesh.c3
2 files changed, 14 insertions, 13 deletions
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index b3be4a4ebcf..a77e0767848 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -2085,11 +2085,10 @@ static void mesh_calc_modifiers(
if (sculpt_dyntopo == false) {
/* watch this! after 2.75a we move to from tessface to looptri (by default) */
-#if 0
- DM_ensure_tessface(finaldm);
-#else
+ if (dataMask & CD_MASK_MFACE) {
+ DM_ensure_tessface(finaldm);
+ }
DM_ensure_looptri(finaldm);
-#endif
/* without this, drawing ngon tri's faces will show ugly tessellated face
* normals and will also have to calculate normals on the fly, try avoid
@@ -2416,18 +2415,19 @@ static void editbmesh_calc_modifiers(
}
}
- /* --- */
/* BMESH_ONLY, ensure tessface's used for drawing,
* but don't recalculate if the last modifier in the stack gives us tessfaces
* check if the derived meshes are DM_TYPE_EDITBMESH before calling, this isn't essential
* but quiets annoying error messages since tessfaces wont be created. */
- if ((*r_final)->type != DM_TYPE_EDITBMESH) {
- DM_ensure_tessface(*r_final);
- }
- if (r_cage && *r_cage) {
- if ((*r_cage)->type != DM_TYPE_EDITBMESH) {
- if (*r_cage != *r_final) {
- DM_ensure_tessface(*r_cage);
+ if (dataMask & CD_MASK_MFACE) {
+ if ((*r_final)->type != DM_TYPE_EDITBMESH) {
+ DM_ensure_tessface(*r_final);
+ }
+ if (r_cage && *r_cage) {
+ if ((*r_cage)->type != DM_TYPE_EDITBMESH) {
+ if (*r_cage != *r_final) {
+ DM_ensure_tessface(*r_cage);
+ }
}
}
}
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index 4820514b314..6880c1c9b2a 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -2495,7 +2495,7 @@ void CDDM_calc_normals_mapping_ex(DerivedMesh *dm, const bool only_face_normals)
cddm->mvert = CustomData_duplicate_referenced_layer(&dm->vertData, CD_MVERT, dm->numVertData);
#endif
-
+#if 0
if (dm->numTessFaceData == 0) {
/* No tessellation on this mesh yet, need to calculate one.
*
@@ -2509,6 +2509,7 @@ void CDDM_calc_normals_mapping_ex(DerivedMesh *dm, const bool only_face_normals)
BLI_assert(CustomData_has_layer(&dm->faceData, CD_ORIGINDEX));
CustomData_free_layers(&dm->faceData, CD_NORMAL, dm->numTessFaceData);
}
+#endif
face_nors = MEM_mallocN(sizeof(*face_nors) * dm->numPolyData, "face_nors");