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]); } } _______________________________________________ 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