[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