[Bf-blender-cvs] [a102b60d92e] refactor-mesh-sharp-face-generic: Merge branch 'master' into refactor-mesh-sharp-face-generic

Hans Goudey noreply at git.blender.org
Sun Jan 22 17:16:51 CET 2023


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;



More information about the Bf-blender-cvs mailing list