Commit: a102b60d92e85a02576a6d4c2eafaece4fa0ddd8 Author: Hans Goudey Date: Sat Jan 21 15:52:35 2023 -0600 Branches: refactor-mesh-sharp-face-generic https://developer.blender.org/rBa102b60d92e85a02576a6d4c2eafaece4fa0ddd8
Merge branch 'master' into refactor-mesh-sharp-face-generic =================================================================== =================================================================== diff --cc source/blender/blenkernel/intern/key.cc index 3f17416e1e6,7d835c2464d..bb8375d0cd4 --- a/source/blender/blenkernel/intern/key.cc +++ b/source/blender/blenkernel/intern/key.cc @@@ -2272,12 -2272,10 +2272,12 @@@ void BKE_keyblock_mesh_calc_normals(con vert_normals); } if (loop_normals_needed) { - short(*clnors)[2] = static_cast<short(*)[2]>( - CustomData_get_layer(&mesh->ldata, CD_CUSTOMLOOPNORMAL)); /* May be nullptr. */ + short(*clnors)[2] = static_cast<short(*)[2]>(CustomData_get_layer_for_write( + &mesh->ldata, CD_CUSTOMLOOPNORMAL, mesh->totloop)); /* May be nullptr. */ const bool *sharp_edges = static_cast<const bool *>( CustomData_get_layer_named(&mesh->edata, CD_PROP_BOOL, "sharp_edge")); + const bool *sharp_faces = static_cast<const bool *>( + CustomData_get_layer_named(&mesh->pdata, CD_PROP_BOOL, "sharp_face")); BKE_mesh_normals_loop_split(positions, vert_normals, mesh->totvert, diff --cc source/blender/blenkernel/intern/mesh.cc index c1f9bba7659,71275444028..9de9d829562 --- a/source/blender/blenkernel/intern/mesh.cc +++ b/source/blender/blenkernel/intern/mesh.cc @@@ -1841,11 -1843,11 +1845,12 @@@ void BKE_mesh_calc_normals_split_ex(Mes const float split_angle = (mesh->flag & ME_AUTOSMOOTH) != 0 ? mesh->smoothresh : float(M_PI); /* may be nullptr */ - short(*clnors)[2] = (short(*)[2])CustomData_get_layer(&mesh->ldata, CD_CUSTOMLOOPNORMAL); + short(*clnors)[2] = (short(*)[2])CustomData_get_layer_for_write( + &mesh->ldata, CD_CUSTOMLOOPNORMAL, mesh->totloop); const bool *sharp_edges = static_cast<const bool *>( CustomData_get_layer_named(&mesh->edata, CD_PROP_BOOL, "sharp_edge")); - + const bool *sharp_faces = static_cast<const bool *>( + CustomData_get_layer_named(&mesh->pdata, CD_PROP_BOOL, "sharp_face")); const Span<float3> positions = mesh->vert_positions(); const Span<MEdge> edges = mesh->edges(); const Span<MPoly> polys = mesh->polys(); diff --cc source/blender/blenkernel/intern/subdiv_ccg_material.cc index d10b162f426,23f5371b504..424a11f0941 --- a/source/blender/blenkernel/intern/subdiv_ccg_material.cc +++ b/source/blender/blenkernel/intern/subdiv_ccg_material.cc @@@ -13,11 -13,11 +13,11 @@@ #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" - typedef struct CCGMaterialFromMeshData { + struct CCGMaterialFromMeshData { const Mesh *mesh; - const MPoly *polys; + const bool *sharp_faces; const int *material_indices; - } CCGMaterialFromMeshData; + }; static DMFlagMat subdiv_ccg_material_flags_eval( SubdivCCGMaterialFlagsEvaluator *material_flags_evaluator, const int coarse_face_index) diff --cc source/blender/blenkernel/intern/subsurf_ccg.cc index ad4d902fb41,a3c634bff89..a4e043556b4 --- a/source/blender/blenkernel/intern/subsurf_ccg.cc +++ b/source/blender/blenkernel/intern/subsurf_ccg.cc @@@ -1594,15 -1568,15 +1565,18 @@@ static void set_ccgdm_all_geometry(CCGD medge = dm->getEdgeArray(dm); - const int *material_indices = CustomData_get_layer_named( - &dm->polyData, CD_MPOLY, "material_index"); - const bool *sharp_faces = CustomData_get_layer_named(&dm->polyData, CD_PROP_BOOL, "sharp_face"); - const int *base_polyOrigIndex = CustomData_get_layer(&dm->polyData, CD_ORIGINDEX); + const MPoly *mpoly = static_cast<const MPoly *>(CustomData_get_layer(&dm->polyData, CD_MPOLY)); + const int *material_indices = static_cast<const int *>( + CustomData_get_layer_named(&dm->polyData, CD_MPOLY, "material_index")); ++ const bool *sharp_faces = static_cast<const bool *>( ++ CustomData_get_layer_named(&dm->polyData, CD_PROP_BOOL, "sharp_face")); + - int *vertOrigIndex = DM_get_vert_data_layer(&ccgdm->dm, CD_ORIGINDEX); - int *edgeOrigIndex = DM_get_edge_data_layer(&ccgdm->dm, CD_ORIGINDEX); + const int *base_polyOrigIndex = static_cast<const int *>( + CustomData_get_layer(&dm->polyData, CD_ORIGINDEX)); - int *polyOrigIndex = DM_get_poly_data_layer(&ccgdm->dm, CD_ORIGINDEX); + int *vertOrigIndex = static_cast<int *>(DM_get_vert_data_layer(&ccgdm->dm, CD_ORIGINDEX)); + int *edgeOrigIndex = static_cast<int *>(DM_get_edge_data_layer(&ccgdm->dm, CD_ORIGINDEX)); + int *polyOrigIndex = static_cast<int *>(DM_get_poly_data_layer(&ccgdm->dm, CD_ORIGINDEX)); has_edge_cd = ((ccgdm->dm.edgeData.totlayer - (edgeOrigIndex ? 1 : 0)) != 0); diff --cc source/blender/io/collada/MeshImporter.cpp index 9719b1ffa47,52eb852e1ed..5531e62de6c --- a/source/blender/io/collada/MeshImporter.cpp +++ b/source/blender/io/collada/MeshImporter.cpp @@@ -625,12 -625,6 +625,12 @@@ void MeshImporter::read_polys(COLLADAFW MaterialIdPrimitiveArrayMap mat_prim_map; int *material_indices = BKE_mesh_material_indices_for_write(me); - bool *sharp_faces = (bool *)CustomData_duplicate_referenced_layer_named( - &me->pdata, CD_PROP_BOOL, "material_index", me->totpoly); ++ bool *sharp_faces = (bool *)CustomData_get_layer_named_for_write( ++ &me->pdata, CD_PROP_BOOL, "sharp_face", me->totpoly); + if (sharp_faces) { + sharp_faces = (bool *)CustomData_add_layer_named( + &me->pdata, CD_PROP_BOOL, CD_SET_DEFAULT, NULL, me->totpoly, "sharp_face"); + } COLLADAFW::MeshPrimitiveArray &prim_arr = collada_mesh->getMeshPrimitives(); COLLADAFW::MeshVertexData &nor = collada_mesh->getNormals(); diff --cc source/blender/makesdna/intern/dna_rename_defs.h index c386c303534,ab543eb611f..66257873c9d --- a/source/blender/makesdna/intern/dna_rename_defs.h +++ b/source/blender/makesdna/intern/dna_rename_defs.h @@@ -84,8 -87,17 +87,18 @@@ DNA_STRUCT_RENAME_ELEM(LineartGpencilMo DNA_STRUCT_RENAME_ELEM(LineartGpencilModifierData, transparency_flags, mask_switches) DNA_STRUCT_RENAME_ELEM(LineartGpencilModifierData, transparency_mask, material_mask_bits) DNA_STRUCT_RENAME_ELEM(MDefCell, totinfluence, influences_num) + DNA_STRUCT_RENAME_ELEM(MEdge, bweight, bweight_legacy) + DNA_STRUCT_RENAME_ELEM(MEdge, crease, crease_legacy) ++DNA_STRUCT_RENAME_ELEM(MPoly, flag, flag_legacy) + DNA_STRUCT_RENAME_ELEM(MPoly, mat_nr, mat_nr_legacy) + DNA_STRUCT_RENAME_ELEM(MVert, bweight, bweight_legacy) + DNA_STRUCT_RENAME_ELEM(MVert, co, co_legacy) + DNA_STRUCT_RENAME_ELEM(MVert, flag, flag_legacy) DNA_STRUCT_RENAME_ELEM(MaskLayer, restrictflag, visibility_flag) DNA_STRUCT_RENAME_ELEM(MaterialLineArt, transparency_mask, material_mask_bits) + DNA_STRUCT_RENAME_ELEM(Mesh, loc, texspace_location) + DNA_STRUCT_RENAME_ELEM(Mesh, size, texspace_size) + DNA_STRUCT_RENAME_ELEM(Mesh, texflag, texspace_flag) DNA_STRUCT_RENAME_ELEM(MeshDeformModifierData, totcagevert, cage_verts_num) DNA_STRUCT_RENAME_ELEM(MeshDeformModifierData, totinfluence, influences_num) DNA_STRUCT_RENAME_ELEM(MeshDeformModifierData, totvert, verts_num) diff --cc source/blender/modifiers/intern/MOD_normal_edit.cc index 8ec68021069,d6089372da6..9b373bbe121 --- a/source/blender/modifiers/intern/MOD_normal_edit.cc +++ b/source/blender/modifiers/intern/MOD_normal_edit.cc @@@ -557,14 -562,14 +566,15 @@@ static Mesh *normalEditModifier_do(Norm bke::SpanAttributeWriter<bool> sharp_edges = attributes.lookup_or_add_for_write_span<bool>( "sharp_edge", ATTR_DOMAIN_EDGE); - short(*clnors)[2] = static_cast<short(*)[2]>(CustomData_get_layer(ldata, CD_CUSTOMLOOPNORMAL)); + short(*clnors)[2] = static_cast<short(*)[2]>( + CustomData_get_layer_for_write(ldata, CD_CUSTOMLOOPNORMAL, loops_num)); if (use_current_clnors) { clnors = static_cast<short(*)[2]>( - CustomData_duplicate_referenced_layer(ldata, CD_CUSTOMLOOPNORMAL, loops_num)); + CustomData_get_layer_for_write(ldata, CD_CUSTOMLOOPNORMAL, loops_num)); loop_normals = static_cast<float(*)[3]>( MEM_malloc_arrayN(size_t(loops_num), sizeof(*loop_normals), __func__)); - + const bool *sharp_faces = static_cast<const bool *>( + CustomData_get_layer_named(&result->pdata, CD_PROP_BOOL, "sharp_face")); BKE_mesh_normals_loop_split(positions, vert_normals, verts_num, diff --cc source/blender/modifiers/intern/MOD_solidify_extrude.cc index 2f671b041e4,2c51c430e1e..3ef6099959f --- a/source/blender/modifiers/intern/MOD_solidify_extrude.cc +++ b/source/blender/modifiers/intern/MOD_solidify_extrude.cc @@@ -1082,8 -1088,9 +1088,8 @@@ Mesh *MOD_solidify_extrude_modifyMesh(M /* copy most of the face settings */ CustomData_copy_data( - &mesh->pdata, &result->pdata, (int)pidx, (int)((polys_num * stride) + i), 1); - mp->loopstart = (int)(j + (loops_num * stride)); + &mesh->pdata, &result->pdata, int(pidx), int((polys_num * stride) + i), 1); + mp->loopstart = int(j + (loops_num * stride)); - mp->flag = mpoly[pidx].flag; /* notice we use 'mp->totloop' which is later overwritten, * we could lookup the original face but there's no point since this is a copy diff --cc source/blender/modifiers/intern/MOD_solidify_nonmanifold.cc index 8a5f9a2c8e1,53ebf814a26..cec4c040710 --- a/source/blender/modifiers/intern/MOD_solidify_nonmanifold.cc +++ b/source/blender/modifiers/intern/MOD_solidify_nonmanifold.cc @@@ -2564,8 -2595,9 +2593,8 @@@ Mesh *MOD_solidify_nonmanifold_modifyMe 0) + (fr->reversed != do_flip ? mat_ofs : 0); CLAMP(dst_material_index[poly_index], 0, mat_nr_max); - mpoly[poly_index].flag = fr->face->flag; if (fr->reversed != do_flip) { - for (int l = (int)k - 1; l >= 0; l--) { + for (int l = int(k) - 1; l >= 0; l--) { if (shell_defgrp_index != -1) { BKE_defvert_ensure_index(&dst_dvert[face_verts[l]], shell_defgrp_index)->weight = 1.0f; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs