diff options
author | Hans Goudey <h.goudey@me.com> | 2022-02-19 00:17:01 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2022-02-19 00:17:01 +0300 |
commit | 7f68185d347b01a75836eb7372181a1196f546aa (patch) | |
tree | 935a55de98502bb17fe765bf4db338451333ed22 /source/blender/blenkernel | |
parent | d9d97db018d28f4c1ce7543ba275a9809d56294a (diff) | |
parent | 3cebfadb27eb4056d28211708158f9ad8a7459b7 (diff) |
Merge branch 'blender-v3.1-release'
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_mesh.h | 3 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/DerivedMesh.cc | 5 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/mesh.cc | 8 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/mesh_convert.cc | 8 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/mesh_tessellate.c | 32 |
5 files changed, 17 insertions, 39 deletions
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h index 2335ff7ad28..aa56fb7d1da 100644 --- a/source/blender/blenkernel/BKE_mesh.h +++ b/source/blender/blenkernel/BKE_mesh.h @@ -339,8 +339,7 @@ int BKE_mesh_tessface_calc_ex(struct CustomData *fdata, struct MVert *mvert, int totface, int totloop, - int totpoly, - bool do_face_nor_copy); + int totpoly); void BKE_mesh_tessface_calc(struct Mesh *mesh); /** diff --git a/source/blender/blenkernel/intern/DerivedMesh.cc b/source/blender/blenkernel/intern/DerivedMesh.cc index 633873adf33..1ccccf1acf4 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.cc +++ b/source/blender/blenkernel/intern/DerivedMesh.cc @@ -1827,9 +1827,8 @@ Mesh *mesh_get_eval_final(struct Depsgraph *depsgraph, mesh_eval = BKE_object_get_evaluated_mesh(ob); } - if (mesh_eval != nullptr) { - BLI_assert(!(mesh_eval->runtime.cd_dirty_vert & CD_MASK_NORMAL)); - } + BKE_mesh_assert_normals_dirty_or_calculated(mesh_eval); + return mesh_eval; } diff --git a/source/blender/blenkernel/intern/mesh.cc b/source/blender/blenkernel/intern/mesh.cc index 9893a9d298d..8c5be7291ca 100644 --- a/source/blender/blenkernel/intern/mesh.cc +++ b/source/blender/blenkernel/intern/mesh.cc @@ -1111,11 +1111,9 @@ Mesh *BKE_mesh_new_nomain_from_template_ex(const Mesh *me_src, /* Ensure that when no normal layers exist, they are marked dirty, because * normals might not have been included in the mask of copied layers. */ - if (!CustomData_has_layer(&me_dst->vdata, CD_NORMAL)) { - me_dst->runtime.cd_dirty_vert |= CD_MASK_NORMAL; - } - if (!CustomData_has_layer(&me_dst->pdata, CD_NORMAL)) { - me_dst->runtime.cd_dirty_poly |= CD_MASK_NORMAL; + if (!CustomData_has_layer(&me_dst->vdata, CD_NORMAL) || + !CustomData_has_layer(&me_dst->pdata, CD_NORMAL)) { + BKE_mesh_normals_tag_dirty(me_dst); } /* The destination mesh should at least have valid primary CD layers, diff --git a/source/blender/blenkernel/intern/mesh_convert.cc b/source/blender/blenkernel/intern/mesh_convert.cc index 26ef467fae5..648f0008c19 100644 --- a/source/blender/blenkernel/intern/mesh_convert.cc +++ b/source/blender/blenkernel/intern/mesh_convert.cc @@ -1486,11 +1486,9 @@ void BKE_mesh_nomain_to_mesh(Mesh *mesh_src, /* Ensure that when no normal layers exist, they are marked dirty, because * normals might not have been included in the mask of copied layers. */ - if (!CustomData_has_layer(&tmp.vdata, CD_NORMAL)) { - tmp.runtime.cd_dirty_vert |= CD_MASK_NORMAL; - } - if (!CustomData_has_layer(&tmp.pdata, CD_NORMAL)) { - tmp.runtime.cd_dirty_poly |= CD_MASK_NORMAL; + if (!CustomData_has_layer(&tmp.vdata, CD_NORMAL) || + !CustomData_has_layer(&tmp.pdata, CD_NORMAL)) { + BKE_mesh_normals_tag_dirty(&tmp); } if (CustomData_has_layer(&mesh_src->vdata, CD_SHAPEKEY)) { diff --git a/source/blender/blenkernel/intern/mesh_tessellate.c b/source/blender/blenkernel/intern/mesh_tessellate.c index 96b588779f8..ae52e31cb9b 100644 --- a/source/blender/blenkernel/intern/mesh_tessellate.c +++ b/source/blender/blenkernel/intern/mesh_tessellate.c @@ -144,8 +144,7 @@ int BKE_mesh_tessface_calc_ex(CustomData *fdata, MVert *mvert, int totface, int totloop, - int totpoly, - const bool do_face_nor_copy) + int totpoly) { #define USE_TESSFACE_SPEEDUP #define USE_TESSFACE_QUADS @@ -347,18 +346,6 @@ int BKE_mesh_tessface_calc_ex(CustomData *fdata, CustomData_add_layer(fdata, CD_ORIGINDEX, CD_ASSIGN, mface_to_poly_map, totface); CustomData_from_bmeshpoly(fdata, ldata, totface); - if (do_face_nor_copy) { - /* If polys have a normals layer, copying that to faces can help - * avoid the need to recalculate normals later. */ - if (CustomData_has_layer(pdata, CD_NORMAL)) { - float(*pnors)[3] = CustomData_get_layer(pdata, CD_NORMAL); - float(*fnors)[3] = CustomData_add_layer(fdata, CD_NORMAL, CD_CALLOC, NULL, totface); - for (mface_index = 0; mface_index < totface; mface_index++) { - copy_v3_v3(fnors[mface_index], pnors[mface_to_poly_map[mface_index]]); - } - } - } - /* NOTE: quad detection issue - fourth vertidx vs fourth loopidx: * Polygons take care of their loops ordering, hence not of their vertices ordering. * Currently, our tfaces' fourth vertex index might be 0 even for a quad. @@ -395,16 +382,13 @@ int BKE_mesh_tessface_calc_ex(CustomData *fdata, void BKE_mesh_tessface_calc(Mesh *mesh) { - mesh->totface = BKE_mesh_tessface_calc_ex( - &mesh->fdata, - &mesh->ldata, - &mesh->pdata, - mesh->mvert, - mesh->totface, - mesh->totloop, - mesh->totpoly, - /* Calculate normals right after, don't copy from polys here. */ - false); + mesh->totface = BKE_mesh_tessface_calc_ex(&mesh->fdata, + &mesh->ldata, + &mesh->pdata, + mesh->mvert, + mesh->totface, + mesh->totloop, + mesh->totpoly); BKE_mesh_update_customdata_pointers(mesh, true); } |