[Bf-blender-cvs] [f07380d01f9] refactor-mesh-remove-pointers: More progress
Hans Goudey
noreply at git.blender.org
Sun Jul 17 18:07:46 CEST 2022
Commit: f07380d01f9b8f2118301a4e4766bea62d2e3edc
Author: Hans Goudey
Date: Sun Jul 17 12:07:58 2022 -0400
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rBf07380d01f9b8f2118301a4e4766bea62d2e3edc
More progress
===================================================================
M source/blender/blenkernel/intern/fluid.c
M source/blender/blenkernel/intern/mesh_boolean_convert.cc
M source/blender/blenkernel/intern/multires.c
M source/blender/blenkernel/intern/object.cc
M source/blender/blenkernel/intern/object_deform.c
M source/blender/blenkernel/intern/particle.c
M source/blender/blenkernel/intern/particle_distribute.c
M source/blender/blenkernel/intern/particle_system.c
M source/blender/blenkernel/intern/pbvh_pixels.cc
M source/blender/blenkernel/intern/rigidbody.c
M source/blender/blenkernel/intern/subdiv_ccg_mask.c
M source/blender/blenkernel/intern/subdiv_ccg_material.c
M source/blender/blenkernel/intern/subdiv_displacement_multires.c
M source/blender/blenkernel/intern/volume_to_mesh.cc
M source/blender/draw/intern/draw_cache_impl_subdivision.cc
M source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_weights.cc
M source/blender/editors/armature/armature_skinning.c
M source/blender/editors/mesh/mesh_data.cc
M source/blender/editors/mesh/mesh_mirror.c
M source/blender/editors/mesh/meshtools.cc
M source/blender/editors/object/object_bake.c
M source/blender/editors/object/object_remesh.cc
M source/blender/editors/object/object_vgroup.c
M source/blender/editors/physics/particle_edit.c
M source/blender/editors/physics/particle_object.c
M source/blender/editors/sculpt_paint/paint_image_proj.c
M source/blender/editors/sculpt_paint/paint_utils.c
M source/blender/editors/sculpt_paint/paint_vertex.cc
M source/blender/editors/sculpt_paint/paint_vertex_weight_ops.c
M source/blender/editors/sculpt_paint/sculpt_expand.c
M source/blender/editors/sculpt_paint/sculpt_face_set.c
M source/blender/editors/space_view3d/drawobject.c
M source/blender/editors/space_view3d/view3d_iterators.c
M source/blender/editors/space_view3d/view3d_select.c
M source/blender/geometry/intern/mesh_primitive_cuboid.cc
M source/blender/io/alembic/exporter/abc_writer_hair.cc
M source/blender/io/alembic/exporter/abc_writer_mesh.cc
M source/blender/io/alembic/intern/abc_reader_mesh.cc
M source/blender/io/collada/GeometryExporter.cpp
M source/blender/io/collada/MeshImporter.cpp
M source/blender/io/stl/importer/stl_import_mesh.cc
M source/blender/io/usd/intern/usd_reader_mesh.cc
M source/blender/io/usd/intern/usd_writer_mesh.cc
M source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc
M source/blender/io/wavefront_obj/importer/obj_import_mesh.cc
M source/blender/io/wavefront_obj/tests/obj_importer_tests.cc
M source/blender/makesrna/intern/rna_mesh.c
M source/blender/makesrna/intern/rna_mesh_api.c
M source/blender/makesrna/intern/rna_particle.c
M source/blender/modifiers/intern/MOD_boolean.cc
M source/blender/modifiers/intern/MOD_datatransfer.c
M source/blender/modifiers/intern/MOD_explode.c
M source/blender/modifiers/intern/MOD_meshcache.c
M source/blender/modifiers/intern/MOD_meshsequencecache.cc
M source/blender/modifiers/intern/MOD_ocean.c
M source/blender/modifiers/intern/MOD_surface.c
===================================================================
diff --git a/source/blender/blenkernel/intern/fluid.c b/source/blender/blenkernel/intern/fluid.c
index fd73e29b197..609e4551bb4 100644
--- a/source/blender/blenkernel/intern/fluid.c
+++ b/source/blender/blenkernel/intern/fluid.c
@@ -3248,7 +3248,7 @@ static Mesh *create_liquid_geometry(FluidDomainSettings *fds,
* If there are no faces in original mesh, keep materials and flags unchanged. */
MPoly *mpoly;
MPoly mp_example = {0};
- mpoly = orgmesh->mpoly;
+ mpoly = BKE_mesh_polygons_for_write(orgmesh);
if (mpoly) {
mp_example = *mpoly;
}
diff --git a/source/blender/blenkernel/intern/mesh_boolean_convert.cc b/source/blender/blenkernel/intern/mesh_boolean_convert.cc
index 742d3ca8324..31311e173ee 100644
--- a/source/blender/blenkernel/intern/mesh_boolean_convert.cc
+++ b/source/blender/blenkernel/intern/mesh_boolean_convert.cc
@@ -160,9 +160,10 @@ const MPoly *MeshesToIMeshInfo::input_mpoly_for_orig_index(int orig_index,
int orig_mesh_index = input_mesh_for_imesh_face(orig_index);
BLI_assert(0 <= orig_mesh_index && orig_mesh_index < meshes.size());
const Mesh *me = meshes[orig_mesh_index];
+ MutableSpan<MPoly> polygons = bke::mesh_polygons_for_write(*me);
int index_in_mesh = orig_index - mesh_poly_offset[orig_mesh_index];
BLI_assert(0 <= index_in_mesh && index_in_mesh < me->totpoly);
- const MPoly *mp = &me->mpoly[index_in_mesh];
+ const MPoly *mp = &polygons[index_in_mesh];
if (r_orig_mesh) {
*r_orig_mesh = me;
}
diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c
index 63945f9ed42..06c9bca8aea 100644
--- a/source/blender/blenkernel/intern/multires.c
+++ b/source/blender/blenkernel/intern/multires.c
@@ -183,6 +183,7 @@ static BLI_bitmap *multires_mdisps_downsample_hidden(const BLI_bitmap *old_hidde
static void multires_output_hidden_to_ccgdm(CCGDerivedMesh *ccgdm, Mesh *me, int level)
{
+ const MPoly *polygons = BKE_mesh_polygons(me);
const MDisps *mdisps = CustomData_get_layer(&me->ldata, CD_MDISPS);
BLI_bitmap **grid_hidden = ccgdm->gridHidden;
int *gridOffset;
@@ -191,7 +192,7 @@ static void multires_output_hidden_to_ccgdm(CCGDerivedMesh *ccgdm, Mesh *me, int
gridOffset = ccgdm->dm.getGridOffset(&ccgdm->dm);
for (i = 0; i < me->totpoly; i++) {
- for (j = 0; j < me->mpoly[i].totloop; j++) {
+ for (j = 0; j < polygons[i].totloop; j++) {
int g = gridOffset[i] + j;
const MDisps *md = &mdisps[g];
BLI_bitmap *gh = md->hidden;
@@ -466,15 +467,16 @@ void multires_force_external_reload(Object *object)
static int get_levels_from_disps(Object *ob)
{
Mesh *me = ob->data;
+ const MPoly *polygons = BKE_mesh_polygons(me);
MDisps *mdisp, *md;
int i, j, totlvl = 0;
mdisp = CustomData_get_layer(&me->ldata, CD_MDISPS);
for (i = 0; i < me->totpoly; i++) {
- md = mdisp + me->mpoly[i].loopstart;
+ md = mdisp + polygons[i].loopstart;
- for (j = 0; j < me->mpoly[i].totloop; j++, md++) {
+ for (j = 0; j < polygons[i].totloop; j++, md++) {
if (md->totdisp == 0) {
continue;
}
@@ -633,6 +635,7 @@ static void multires_grid_paint_mask_downsample(GridPaintMask *gpm, int level)
static void multires_del_higher(MultiresModifierData *mmd, Object *ob, int lvl)
{
Mesh *me = (Mesh *)ob->data;
+ const MPoly *polygons = BKE_mesh_polygons(me);
int levels = mmd->totlvl - lvl;
MDisps *mdisps;
GridPaintMask *gpm;
@@ -652,8 +655,8 @@ static void multires_del_higher(MultiresModifierData *mmd, Object *ob, int lvl)
int i, j;
for (i = 0; i < me->totpoly; i++) {
- for (j = 0; j < me->mpoly[i].totloop; j++) {
- int g = me->mpoly[i].loopstart + j;
+ for (j = 0; j < polygons[i].totloop; j++) {
+ int g = polygons[i].loopstart + j;
MDisps *mdisp = &mdisps[g];
float(*disps)[3], (*ndisps)[3], (*hdisps)[3];
int totdisp = multires_grid_tot[lvl];
@@ -828,7 +831,7 @@ typedef struct MultiresThreadedData {
CCGElem **gridData, **subGridData;
CCGKey *key;
CCGKey *sub_key;
- MPoly *mpoly;
+ const MPoly *mpoly;
MDisps *mdisps;
GridPaintMask *grid_paint_mask;
int *gridOffset;
@@ -846,7 +849,7 @@ static void multires_disp_run_cb(void *__restrict userdata,
CCGElem **gridData = tdata->gridData;
CCGElem **subGridData = tdata->subGridData;
CCGKey *key = tdata->key;
- MPoly *mpoly = tdata->mpoly;
+ const MPoly *mpoly = tdata->mpoly;
MDisps *mdisps = tdata->mdisps;
GridPaintMask *grid_paint_mask = tdata->grid_paint_mask;
int *gridOffset = tdata->gridOffset;
@@ -939,7 +942,7 @@ static void multiresModifier_disp_run(
CCGDerivedMesh *ccgdm = (CCGDerivedMesh *)dm;
CCGElem **gridData, **subGridData;
CCGKey key;
- MPoly *mpoly = me->mpoly;
+ const MPoly *mpoly = BKE_mesh_polygons(me);
MDisps *mdisps = CustomData_get_layer(&me->ldata, CD_MDISPS);
GridPaintMask *grid_paint_mask = NULL;
int *gridOffset;
diff --git a/source/blender/blenkernel/intern/object.cc b/source/blender/blenkernel/intern/object.cc
index f7436b6112c..8848a13a55f 100644
--- a/source/blender/blenkernel/intern/object.cc
+++ b/source/blender/blenkernel/intern/object.cc
@@ -145,6 +145,8 @@
#include "atomic_ops.h"
using blender::float3;
+using blender::MutableSpan;
+using blender::Span;
static CLG_LogRef LOG = {"bke.object"};
@@ -3188,6 +3190,7 @@ static void give_parvert(Object *par, int nr, float vec[3])
BKE_object_get_evaluated_mesh(par);
if (me_eval) {
+ const MVert *vertices = BKE_mesh_vertices(me_eval);
int count = 0;
int numVerts = me_eval->totvert;
@@ -3221,14 +3224,14 @@ static void give_parvert(Object *par, int nr, float vec[3])
/* Get the average of all verts with (original index == nr). */
for (int i = 0; i < numVerts; i++) {
if (index[i] == nr) {
- add_v3_v3(vec, me_eval->mvert[i].co);
+ add_v3_v3(vec, vertices[i].co);
count++;
}
}
}
else {
if (nr < numVerts) {
- add_v3_v3(vec, me_eval->mvert[nr].co);
+ add_v3_v3(vec, vertices[nr].co);
count++;
}
}
@@ -3242,7 +3245,7 @@ static void give_parvert(Object *par, int nr, float vec[3])
else {
/* use first index if its out of range */
if (me_eval->totvert) {
- copy_v3_v3(vec, me_eval->mvert[0].co);
+ copy_v3_v3(vec, vertices[0].co);
}
}
}
@@ -4126,10 +4129,10 @@ void BKE_object_foreach_display_point(Object *ob,
float3 co;
if (mesh_eval != nullptr) {
- const MVert *mv = mesh_eval->mvert;
+ const MVert *vertices = BKE_mesh_vertices(mesh_eval);
const int totvert = mesh_eval->totvert;
- for (int i = 0; i < totvert; i++, mv++) {
- mul_v3_m4v3(co, obmat, mv->co);
+ for (int i = 0; i < totvert; i++) {
+ mul_v3_m4v3(co, obmat, vertices[i].co);
func_cb(co, user_data);
}
}
@@ -4753,7 +4756,8 @@ bool BKE_object_shapekey_remove(Main *bmain, Object *ob, KeyBlock *kb)
switch (ob->type) {
case OB_MESH: {
Mesh *mesh = (Mesh *)ob->data;
- BKE_keyblock_convert_to_mesh(key->refkey, mesh->mvert, mesh->totvert);
+ MutableSpan<MVert> vertices = blender::bke::mesh_vertices_for_write(*mesh);
+ BKE_keyblock_convert_to_mesh(key->refkey, vertices.data(), mesh->totvert);
break;
}
case OB_CURVES_LEGACY:
@@ -5249,32 +5253,31 @@ KDTree_3d *BKE_object_as_kdtree(Object *ob, int *r_tot)
const int *index;
if (me_eval && (index = (const int *)CustomData_get_layer(&me_eval->vdata, CD_ORIGINDEX))) {
- MVert *mvert = me_eval->mvert;
- uint totvert = me_eval->totvert;
+ const Span<MVert> vertices = blender::bke::mesh_vertices(*me);
/* Tree over-allocates in case where some verts have #ORIGINDEX_NONE. */
tot = 0;
- tree = BLI_kdtree_3d_new(totvert);
+ tree = BLI_kdtree_3d_new(vertices.size());
/* We don't how many verts from the DM we can use. */
- for (i = 0; i < totvert; i++) {
+ for (i = 0; i < vertices.size(); i++) {
if (index[i] != ORIGINDEX_NONE) {
float co[3];
- mul_v3_m4v3(co, ob->obmat, mvert[i].co);
+ mul_v3_m4v3(co, ob->obmat, vertices[i].co);
BLI_kdtree_3d_insert(tree, index[i], co);
tot++;
}
}
}
else {
- MVert *mvert = me->mvert;
+ const Span<MVert> vertices = blender::bke::mesh_vertices(*me);
- tot = me->totvert;
+ tot = vertices.size();
tree = BLI_kdtree_3d_new(tot);
for (i = 0; i < tot; i++) {
float co[3];
- mul_v3_m4v3(co, ob->obmat, mvert[i].co);
+ mul_v3_m4v3(co, ob->obmat, vertices[i].co);
BLI_kdtree_3d_insert(tree, i, co);
}
}
diff --git a/source/blender/blenkernel/intern/object_deform.c b/source/blender/blenkernel/intern/object_deform.c
index 04a13493da9..e3eeae706e8 100644
--- a/source/blender/blenkernel/intern/object_deform.c
+++ b/source/blender/blenkernel/intern/object_deform.c
@@ -162,12 +162,12 @@ bool BKE_object_defgroup_clear(Object *ob, bDeformGroup *dg, const bool use_sele
}
}
else {
- if (me->dvert) {
+ if (CustomData_has_layer(&me->vdata, CD_MDEFORMVERT)) {
MVert *mv;
int i;
- mv = me->mvert;
- dv = me->dvert;
+ mv = BKE_mesh_vertices(me);
+ dv = BKE_mesh_deform_verts_for_write(me);
for (i = 0; i < me->totvert; i++, mv++, dv++) {
if (dv->dw && (!use_selection || (mv->flag & SELECT))) {
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index 2471d3baa59..1d61a57610c 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -14,7 +14,7 @@
#include "MEM_guardedalloc.h"
-#include "DNA_defaults.h"
+// #include "DNA_defaults.h"
#include "DNA_cloth_types.h"
#include "DNA_collection_types.h"
@@ -72,7 +72,7 @@
#include "RE_texture.h"
-#include
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list