[Bf-blender-cvs] [709ec5ea3a6] refactor-mesh-face-generic: Merge branch 'refactor-mesh-corners-generic' into refactor-mesh-face-generic

Hans Goudey noreply at git.blender.org
Tue Feb 7 00:00:56 CET 2023


Commit: 709ec5ea3a6d5b9e251e42aca156a71b1d8697c0
Author: Hans Goudey
Date:   Mon Feb 6 17:21:34 2023 -0500
Branches: refactor-mesh-face-generic
https://developer.blender.org/rB709ec5ea3a6d5b9e251e42aca156a71b1d8697c0

Merge branch 'refactor-mesh-corners-generic' into refactor-mesh-face-generic

===================================================================



===================================================================

diff --cc source/blender/blenkernel/intern/mesh.cc
index 1ff8f918c61,08183e85ad2..53c8a777db5
--- a/source/blender/blenkernel/intern/mesh.cc
+++ b/source/blender/blenkernel/intern/mesh.cc
@@@ -273,9 -271,7 +273,8 @@@ static void mesh_blend_write(BlendWrite
        BKE_mesh_legacy_convert_hide_layers_to_flags(mesh);
        BKE_mesh_legacy_convert_selection_layers_to_flags(mesh);
        BKE_mesh_legacy_convert_material_indices_to_mpoly(mesh);
 +      BKE_mesh_legacy_sharp_faces_to_flags(mesh);
        BKE_mesh_legacy_bevel_weight_from_layers(mesh);
-       BKE_mesh_legacy_face_set_from_generic(mesh, poly_layers);
        BKE_mesh_legacy_edge_crease_from_layers(mesh);
        BKE_mesh_legacy_sharp_edges_to_flags(mesh);
        BKE_mesh_legacy_attribute_strings_to_flags(mesh);
diff --cc source/blender/blenkernel/intern/mesh_boolean_convert.cc
index 32163f8bbfc,d9c2b95e536..751d2844104
--- a/source/blender/blenkernel/intern/mesh_boolean_convert.cc
+++ b/source/blender/blenkernel/intern/mesh_boolean_convert.cc
@@@ -280,13 -280,13 +279,13 @@@ static IMesh meshes_to_imesh(Span<cons
     * of the target, multiply each transform by the inverse of the
     * target matrix. Exact Boolean works better if these matrices are 'cleaned'
     *  -- see the comment for the `clean_transform` function, above. */
-   const float4x4 inv_target_mat = clean_transform(target_transform).inverted();
+   const float4x4 inv_target_mat = math::invert(clean_transform(target_transform));
  
    /* For each input `Mesh`, make `Vert`s and `Face`s for the corresponding
 -   * vertices and `MPoly`s, and keep track of the original indices (using the
 +   * vertices and polygons, and keep track of the original indices (using the
     * concatenating offset scheme) inside the `Vert`s and `Face`s.
     * When making `Face`s, we also put in the original indices for `MEdge`s that
 -   * make up the `MPoly`s using the same scheme. */
 +   * make up the polygons using the same scheme. */
    for (int mi : meshes.index_range()) {
      const Mesh *me = meshes[mi];
      r_info->mesh_vert_offset[mi] = v;
diff --cc source/blender/blenkernel/intern/mesh_iterators.cc
index 0dd0677cd43,6413d9fd3be..dfdfb9ec423
--- a/source/blender/blenkernel/intern/mesh_iterators.cc
+++ b/source/blender/blenkernel/intern/mesh_iterators.cc
@@@ -306,23 -308,23 +306,22 @@@ void BKE_mesh_foreach_mapped_subdiv_fac
      MeshForeachFlag flag)
  {
    const float(*positions)[3] = BKE_mesh_vert_positions(mesh);
-   const OffsetIndices polys = mesh->polys();
 -  const MPoly *mp = BKE_mesh_polys(mesh);
++  const blender::OffsetIndices polys = mesh->polys();
    const blender::Span<int> corner_verts = mesh->corner_verts();
    const float(*vert_normals)[3] = (flag & MESH_FOREACH_USE_NORMAL) ?
                                        BKE_mesh_vertex_normals_ensure(mesh) :
                                        nullptr;
    const int *index = static_cast<const int *>(CustomData_get_layer(&mesh->pdata, CD_ORIGINDEX));
-   const BLI_bitmap *facedot_tags = mesh->runtime->subsurf_face_dot_tags;
-   BLI_assert(facedot_tags != nullptr);
+   const blender::BitVector<> &facedot_tags = mesh->runtime->subsurf_face_dot_tags;
  
    if (index) {
-     for (int i = 0; i < mesh->totpoly; i++) {
 -    for (int i = 0; i < mesh->totpoly; i++, mp++) {
++    for (const int i : polys.index_range()) {
        const int orig = *index++;
        if (orig == ORIGINDEX_NONE) {
          continue;
        }
 -      for (int j = 0; j < mp->totloop; j++) {
 -        const int vert = corner_verts[mp->loopstart + j];
 +      for (const int vert : corner_verts.slice(polys[i])) {
-         if (BLI_BITMAP_TEST(facedot_tags, vert)) {
+         if (facedot_tags[vert]) {
            func(userData,
                 orig,
                 positions[vert],
@@@ -332,9 -334,10 +331,9 @@@
      }
    }
    else {
-     for (int i = 0; i < mesh->totpoly; i++) {
 -    for (int i = 0; i < mesh->totpoly; i++, mp++) {
 -      for (int j = 0; j < mp->totloop; j++) {
 -        const int vert = corner_verts[mp->loopstart + j];
++    for (const int i : polys.index_range()) {
 +      for (const int vert : corner_verts.slice(polys[i])) {
-         if (BLI_BITMAP_TEST(facedot_tags, vert)) {
+         if (facedot_tags[vert]) {
            func(userData,
                 i,
                 positions[vert],
diff --cc source/blender/blenkernel/intern/mesh_mirror.cc
index 4e898983bbc,e605d3d9785..58ffd46eaf2
--- a/source/blender/blenkernel/intern/mesh_mirror.cc
+++ b/source/blender/blenkernel/intern/mesh_mirror.cc
@@@ -201,8 -202,8 +201,8 @@@ Mesh *BKE_mesh_mirror_apply_mirror_on_a
    CustomData_copy_data(&mesh->pdata, &result->pdata, 0, 0, maxPolys);
  
    /* Subdivision-surface for eg won't have mesh data in the custom-data arrays.
 -   * Now add position/#MEdge/#MPoly layers. */
 +   * Now add position/#MEdge layers. */
-   if (BKE_mesh_vert_positions(mesh) != NULL) {
+   if (BKE_mesh_vert_positions(mesh) != nullptr) {
      memcpy(BKE_mesh_vert_positions_for_write(result),
             BKE_mesh_vert_positions(mesh),
             sizeof(float[3]) * mesh->totvert);
diff --cc source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_edituv.cc
index 4da16a73259,eba70ed8850..5bf2d507b85
--- a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_edituv.cc
+++ b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_edituv.cc
@@@ -550,13 -555,14 +550,13 @@@ static void extract_edituv_fdots_iter_p
    const bool mp_select = (efa) ? BM_elem_flag_test_bool(efa, BM_ELEM_SELECT) : false;
  
    if (mr->use_subsurf_fdots) {
-     const BLI_bitmap *facedot_tags = mr->me->runtime->subsurf_face_dot_tags;
+     const BitVector<> &facedot_tags = mr->me->runtime->subsurf_face_dot_tags;
  
 -    const int ml_index_end = mp->loopstart + mp->totloop;
 -    for (int ml_index = mp->loopstart; ml_index < ml_index_end; ml_index += 1) {
 +    for (const int ml_index : mr->polys[mp_index]) {
-       const int vert_i = mr->corner_verts[ml_index];
+       const int vert = mr->corner_verts[ml_index];
  
        const bool real_fdot = !mr->p_origindex || (mr->p_origindex[mp_index] != ORIGINDEX_NONE);
-       const bool subd_fdot = BLI_BITMAP_TEST(facedot_tags, vert_i);
+       const bool subd_fdot = facedot_tags[vert];
        edituv_facedot_add(data, mp_hidden || !real_fdot || !subd_fdot, mp_select, mp_index);
      }
    }
diff --cc source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_fdots.cc
index 1163af065b4,3785fff3245..9f2dbd1d907
--- a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_fdots.cc
+++ b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_fdots.cc
@@@ -45,11 -46,12 +45,11 @@@ static void extract_fdots_iter_poly_mes
  
    GPUIndexBufBuilder *elb = static_cast<GPUIndexBufBuilder *>(_userdata);
    if (mr->use_subsurf_fdots) {
-     const BLI_bitmap *facedot_tags = mr->me->runtime->subsurf_face_dot_tags;
+     const BitVector<> &facedot_tags = mr->me->runtime->subsurf_face_dot_tags;
  
 -    const int ml_index_end = mp->loopstart + mp->totloop;
 -    for (int ml_index = mp->loopstart; ml_index < ml_index_end; ml_index += 1) {
 +    for (const int ml_index : mr->polys[mp_index]) {
-       const int vert_i = mr->corner_verts[ml_index];
-       if (BLI_BITMAP_TEST(facedot_tags, vert_i) && !hidden) {
+       const int vert = mr->corner_verts[ml_index];
+       if (facedot_tags[vert] && !hidden) {
          GPU_indexbuf_set_point_vert(elb, mp_index, mp_index);
          return;
        }
diff --cc source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_fdots_pos.cc
index ee573cd6184,f04e95e69de..de443d7831e
--- a/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_fdots_pos.cc
+++ b/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_fdots_pos.cc
@@@ -74,12 -75,13 +74,12 @@@ static void extract_fdots_pos_iter_poly
    float *co = center[mp_index];
    zero_v3(co);
  
-   const BLI_bitmap *facedot_tags = mr->me->runtime->subsurf_face_dot_tags;
+   const BitVector<> &facedot_tags = mr->me->runtime->subsurf_face_dot_tags;
  
 -  const int ml_index_end = mp->loopstart + mp->totloop;
 -  for (int ml_index = mp->loopstart; ml_index < ml_index_end; ml_index += 1) {
 +  for (const int ml_index : mr->polys[mp_index]) {
      const int vert = mr->corner_verts[ml_index];
      if (mr->use_subsurf_fdots) {
-       if (BLI_BITMAP_TEST(facedot_tags, vert)) {
+       if (facedot_tags[vert]) {
          copy_v3_v3(center[mp_index], mr->vert_positions[vert]);
          break;
        }
diff --cc source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_fdots_uv.cc
index a496fc38313,402b6066db8..25f0eeb912a
--- a/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_fdots_uv.cc
+++ b/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_fdots_uv.cc
@@@ -73,12 -74,13 +73,12 @@@ static void extract_fdots_uv_iter_poly_
                                              void *_data)
  {
    MeshExtract_FdotUV_Data *data = static_cast<MeshExtract_FdotUV_Data *>(_data);
-   const BLI_bitmap *facedot_tags = mr->me->runtime->subsurf_face_dot_tags;
+   const BitVector<> &facedot_tags = mr->me->runtime->subsurf_face_dot_tags;
  
 -  const int ml_index_end = mp->loopstart + mp->totloop;
 -  for (int ml_index = mp->loopstart; ml_index < ml_index_end; ml_index += 1) {
 +  for (const int ml_index : mr->polys[mp_index]) {
      const int vert = mr->corner_verts[ml_index];
      if (mr->use_subsurf_fdots) {
-       if (BLI_BITMAP_TEST(facedot_tags, vert)) {
+       if (facedot_tags[vert]) {
          copy_v2_v2(data->vbo_data[mp_index], data->uv_data[ml_index]);
        }
      }



More information about the Bf-blender-cvs mailing list