[Bf-blender-cvs] [af71f0814dd] refactor-mesh-remove-pointers: Progress
Hans Goudey
noreply at git.blender.org
Sat Jul 23 06:37:15 CEST 2022
Commit: af71f0814ddfc3c1b08b92a46579215b054b5e45
Author: Hans Goudey
Date: Fri Jul 22 23:37:08 2022 -0500
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rBaf71f0814ddfc3c1b08b92a46579215b054b5e45
Progress
===================================================================
M source/blender/blenkernel/BKE_bvhutils.h
M source/blender/blenkernel/intern/bvhutils.cc
M source/blender/blenkernel/intern/cloth.c
M source/blender/blenkernel/intern/data_transfer.c
M source/blender/blenkernel/intern/mesh.cc
M source/blender/blenloader/intern/versioning_250.c
M source/blender/blenloader/intern/versioning_280.c
M source/blender/blenloader/intern/versioning_defaults.c
M source/blender/editors/mesh/editface.cc
M source/blender/editors/mesh/mesh_data.cc
M source/blender/editors/mesh/mesh_mirror.c
M source/blender/editors/object/object_bake.c
M source/blender/editors/object/object_vgroup.c
M source/blender/editors/physics/particle_edit.c
M source/blender/editors/sculpt_paint/curves_sculpt_add.cc
M source/blender/editors/sculpt_paint/curves_sculpt_slide.cc
M source/blender/editors/space_view3d/view3d_iterators.c
M source/blender/editors/space_view3d/view3d_select.c
M source/blender/geometry/intern/add_curves_on_mesh.cc
M source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
M source/blender/io/collada/MeshImporter.cpp
M source/blender/io/usd/intern/usd_reader_mesh.cc
M source/blender/makesdna/DNA_mesh_types.h
M source/blender/makesrna/intern/rna_mesh.c
M source/blender/modifiers/intern/MOD_array.c
M source/blender/modifiers/intern/MOD_boolean.cc
M source/blender/modifiers/intern/MOD_build.c
M source/blender/modifiers/intern/MOD_collision.c
M source/blender/modifiers/intern/MOD_correctivesmooth.c
M source/blender/modifiers/intern/MOD_datatransfer.c
M source/blender/modifiers/intern/MOD_displace.c
M source/blender/modifiers/intern/MOD_explode.c
M source/blender/modifiers/intern/MOD_meshcache.c
M source/blender/nodes/geometry/nodes/node_geo_flip_faces.cc
M source/blender/nodes/geometry/nodes/node_geo_material_selection.cc
M source/blender/nodes/geometry/nodes/node_geo_set_position.cc
M source/blender/nodes/geometry/nodes/node_geo_transfer_attribute.cc
M source/blender/nodes/geometry/nodes/node_geo_uv_pack_islands.cc
M source/blender/nodes/geometry/nodes/node_geo_volume_to_mesh.cc
===================================================================
diff --git a/source/blender/blenkernel/BKE_bvhutils.h b/source/blender/blenkernel/BKE_bvhutils.h
index d22abd235df..705a44dc3c3 100644
--- a/source/blender/blenkernel/BKE_bvhutils.h
+++ b/source/blender/blenkernel/BKE_bvhutils.h
@@ -57,8 +57,9 @@ typedef struct BVHTreeFromMesh {
const struct MVert *vert;
const float (*vert_normals)[3];
const struct MEdge *edge;
- const struct MFace *face;
+ const struct MPoly *polygons;
const struct MLoop *loop;
+ const struct MFace *face;
const struct MLoopTri *looptri;
/* Private data */
diff --git a/source/blender/blenkernel/intern/bvhutils.cc b/source/blender/blenkernel/intern/bvhutils.cc
index e802a5f08c0..e70fd8bd577 100644
--- a/source/blender/blenkernel/intern/bvhutils.cc
+++ b/source/blender/blenkernel/intern/bvhutils.cc
@@ -587,8 +587,9 @@ static void bvhtree_from_mesh_setup_data(BVHTree *tree,
r_data->vert = vert;
r_data->edge = edge;
- r_data->face = face;
+ r_data->polygons = polygons;
r_data->loop = loop;
+ r_data->face = face;
r_data->looptri = looptri;
r_data->vert_normals = vert_normals;
@@ -1259,7 +1260,7 @@ BVHTree *BKE_bvhtree_from_mesh_get(struct BVHTreeFromMesh *data,
vertices.data(),
edges.data(),
polygons.data(),
- mesh->mface,
+ (const MFace *)CustomData_get_layer(&mesh->fdata, CD_MFACE),
loops.data(),
looptri,
BKE_mesh_vertex_normals_ensure(mesh),
@@ -1307,12 +1308,18 @@ BVHTree *BKE_bvhtree_from_mesh_get(struct BVHTreeFromMesh *data,
case BVHTREE_FROM_FACES:
BLI_assert(!(mesh->totface == 0 && mesh->totpoly != 0));
- const MFace *mfaces = (const MFace *)CustomData_get_layer(&mesh->fdata, CD_MFACE);
data->tree = bvhtree_from_mesh_faces_create_tree(
- 0.0f, tree_type, 6, vertices.data(), mfaces, mesh->totface, nullptr, -1);
+ 0.0f,
+ tree_type,
+ 6,
+ vertices.data(),
+ (const MFace *)CustomData_get_layer(&mesh->fdata, CD_MFACE),
+ mesh->totface,
+ nullptr,
+ -1);
break;
- case BVHTREE_FROM_LOOPTRI_NO_HIDDEN:
+ case BVHTREE_FROM_LOOPTRI_NO_HIDDEN: {
blender::bke::AttributeAccessor attributes = blender::bke::mesh_attributes(*mesh);
mask = looptri_no_hidden_map_get(
polygons.data(),
@@ -1320,49 +1327,50 @@ BVHTree *BKE_bvhtree_from_mesh_get(struct BVHTreeFromMesh *data,
looptri_len,
&mask_bits_act_len);
ATTR_FALLTHROUGH;
+ }
+ case BVHTREE_FROM_LOOPTRI:
+ data->tree = bvhtree_from_mesh_looptri_create_tree(0.0f,
+ tree_type,
+ 6,
+ vertices.data(),
+ loops.data(),
+ looptri,
+ looptri_len,
+ mask,
+ mask_bits_act_len);
+ break;
+ case BVHTREE_FROM_EM_VERTS:
+ case BVHTREE_FROM_EM_EDGES:
+ case BVHTREE_FROM_EM_LOOPTRI:
+ case BVHTREE_MAX_ITEM:
+ BLI_assert(false);
+ break;
}
- case BVHTREE_FROM_LOOPTRI:
- data->tree = bvhtree_from_mesh_looptri_create_tree(0.0f,
- tree_type,
- 6,
- vertices.data(),
- loops.data(),
- looptri,
- looptri_len,
- mask,
- mask_bits_act_len);
- break;
- case BVHTREE_FROM_EM_VERTS:
- case BVHTREE_FROM_EM_EDGES:
- case BVHTREE_FROM_EM_LOOPTRI:
- case BVHTREE_MAX_ITEM:
- BLI_assert(false);
- break;
-}
-if (mask != nullptr) {
- MEM_freeN(mask);
-}
+ if (mask != nullptr) {
+ MEM_freeN(mask);
+ }
-bvhtree_balance(data->tree, lock_started);
+ bvhtree_balance(data->tree, lock_started);
-/* Save on cache for later use */
-// printf("BVHTree built and saved on cache\n");
-BLI_assert(data->cached == false);
-data->cached = true;
-bvhcache_insert(*bvh_cache_p, data->tree, bvh_cache_type);
-bvhcache_unlock(*bvh_cache_p, lock_started);
+ /* Save on cache for later use */
+ // printf("BVHTree built and saved on cache\n");
+ BLI_assert(data->cached == false);
+ data->cached = true;
+ bvhcache_insert(*bvh_cache_p, data->tree, bvh_cache_type);
+ bvhcache_unlock(*bvh_cache_p, lock_started);
#ifdef DEBUG
-if (data->tree != nullptr) {
- if (BLI_bvhtree_get_tree_type(data->tree) != tree_type) {
- printf(
- "tree_type %d obtained instead of %d\n", BLI_bvhtree_get_tree_type(data->tree), tree_type);
+ if (data->tree != nullptr) {
+ if (BLI_bvhtree_get_tree_type(data->tree) != tree_type) {
+ printf("tree_type %d obtained instead of %d\n",
+ BLI_bvhtree_get_tree_type(data->tree),
+ tree_type);
+ }
}
-}
#endif
-return data->tree;
+ return data->tree;
}
BVHTree *BKE_bvhtree_from_editmesh_get(BVHTreeFromEditMesh *data,
diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c
index 5268df7b4e8..ef3d71cdacf 100644
--- a/source/blender/blenkernel/intern/cloth.c
+++ b/source/blender/blenkernel/intern/cloth.c
@@ -97,7 +97,7 @@ static BVHTree *bvhtree_build_from_cloth(ClothModifierData *clmd, float epsilon)
}
}
else {
- MEdge *edges = cloth->edges;
+ const MEdge *edges = cloth->edges;
for (int i = 0; i < cloth->primitive_num; i++) {
float co[2][3];
@@ -177,7 +177,7 @@ void bvhtree_update_from_cloth(ClothModifierData *clmd, bool moving, bool self)
}
else {
if (verts) {
- MEdge *edges = cloth->edges;
+ const MEdge *edges = cloth->edges;
for (i = 0; i < cloth->primitive_num; i++) {
float co[2][3];
diff --git a/source/blender/blenkernel/intern/data_transfer.c b/source/blender/blenkernel/intern/data_transfer.c
index a6aae4e84bf..b73f9de170f 100644
--- a/source/blender/blenkernel/intern/data_transfer.c
+++ b/source/blender/blenkernel/intern/data_transfer.c
@@ -322,11 +322,11 @@ static void data_transfer_dtdata_type_postprocess(Object *UNUSED(ob_src),
/* Bake edited destination loop normals into custom normals again. */
const MVert *verts_dst = BKE_mesh_vertices(me_dst);
const int num_verts_dst = me_dst->totvert;
- const MEdge *edges_dst = BKE_mesh_edges(me_dst);
+ MEdge *edges_dst = BKE_mesh_edges_for_write(me_dst);
const int num_edges_dst = me_dst->totedge;
- const MPoly *polys_dst = BKE_mesh_polygons(me_dst);
+ MPoly *polys_dst = BKE_mesh_polygons_for_write(me_dst);
const int num_polys_dst = me_dst->totpoly;
- const MLoop *loops_dst = BKE_mesh_loops(me_dst);
+ MLoop *loops_dst = BKE_mesh_loops_for_write(me_dst);
const int num_loops_dst = me_dst->totloop;
CustomData *ldata_dst = &me_dst->ldata;
diff --git a/source/blender/blenkernel/intern/mesh.cc b/source/blender/blenkernel/intern/mesh.cc
index 0170039ae59..7ec3b09baf1 100644
--- a/source/blender/blenkernel/intern/mesh.cc
+++ b/source/blender/blenkernel/intern/mesh.cc
@@ -220,7 +220,8 @@ static void mesh_blend_write(BlendWriter *writer, ID *id, const void *id_address
Vector<CustomDataLayer, 16> poly_layers;
/* cache only - don't write */
- mesh->mface = nullptr;
+ // TODO: Reenable. */
+ // mesh->mface = nullptr;
mesh->totface = 0;
memset(&mesh->fdata, 0, sizeof(mesh->fdata));
mesh->runtime = blender::dna::shallow_zero_initialize();
@@ -278,13 +279,10 @@ static void mesh_blend_read_data(BlendDataReader *reader, ID *id)
Mesh *mesh = (Mesh *)id;
BLO_read_pointer_array(reader, (void **)&mesh->mat);
- BLO_read_data_address(reader, &mesh->mface);
BLO_read_data_address(reader, &mesh->tface);
- BLO_read_data_address(reader, &mesh->mtface);
/* Read mcol for compatibility with old files. */
BLO_read_data_address(reader, &mesh->mcol);
- BLO_read_data_address(reader, &mesh->mloopuv);
BLO_read_data_address(reader, &mesh->mselect);
/* animdata */
@@ -293,7 +291,8 @@ static void mesh_blend_read_data(BlendDataReader *reader, ID *id)
/* Normally BKE_defvert_blend_read should be called in CustomData_blend_read,
* but for backwards compatibility in do_versions to work we do it here. */
- BKE_defvert_blend_read(reader, mesh->totvert, mesh->dvert);
+ // TODO: Reenable.
+ // BKE_defvert_blend_read(reader, mesh->totvert, mesh->dvert);
BLO_read_list(reader, &mesh->vertex_group_names);
CustomData_blend_read(reader, &mesh->vdata, mesh->totvert);
@@ -870,8 +869,6 @@ static void mesh_update_linked_customdata(Mesh *me, const bool do_ensure_tess_cd
void BKE_mesh_update_customdata_pointers(Mesh *me, const bool do_ensure_tess_cd)
{
mesh_update_linked_customdata(me, do_ensure_tess_cd);
-
- me->mloopuv = (MLoopUV *)CustomData_get_layer(&me->ldata, CD_MLOOPUV);
}
bool BKE_mesh_has_custom_loop_normals(Mesh *me)
@@ -1635,25 +1632,24 @@ void BKE_mesh_do_versions_cd_flag_init(Mesh *mesh)
return;
}
- MVert *mv;
- MEdge *med;
- int i;
+ const Span<MVert> vertices = blender::bke::mesh_vertices(*mesh);
+ const Span<MEdge> edges = blender::bke::mesh_edges(*mesh);
- for (mv = mesh->mvert, i = 0; i < mesh->totvert; mv++, i++) {
- if (mv->bweight != 0) {
+ for (const MVert &vert : vertices) {
+ if (vert.bweight != 0) {
mesh->cd_flag |= ME_CDFLAG_VERT_BWEIGHT;
break;
}
}
- for (med = mesh->medge, i = 0; i < mesh->totedge; med++, i++) {
- if (med->bweight != 0) {
+ for (const MEdge &edge : edges) {
+ if (edge.bweight != 0) {
mesh->cd_fla
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list