Commit: 17a586794c1a13b1a5010a19df8e1d4de3f920b6
Author: Hans Goudey
Date:   Wed Jul 20 14:30:02 2022 -0500
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rB17a586794c1a13b1a5010a19df8e1d4de3f920b6

Progress

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

M       source/blender/blenkernel/BKE_mesh.h
M       source/blender/draw/intern/draw_cache_impl_particles.c
M       
source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_sculpt_data.cc
M       source/blender/geometry/intern/add_curves_on_mesh.cc
M       source/blender/geometry/intern/mesh_to_curve_convert.cc
M       source/blender/geometry/intern/mesh_to_volume.cc
M       source/blender/geometry/intern/realize_instances.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_customdata.cc
M       source/blender/io/alembic/intern/abc_customdata.h
M       source/blender/io/alembic/intern/abc_reader_mesh.cc
M       source/blender/io/alembic/intern/abc_reader_mesh.h
M       source/blender/io/collada/ArmatureExporter.cpp
M       source/blender/io/collada/ControllerExporter.cpp
M       source/blender/io/collada/GeometryExporter.cpp
M       source/blender/io/collada/MeshImporter.cpp
M       source/blender/io/usd/intern/usd_reader_mesh.cc
M       source/blender/io/usd/intern/usd_reader_mesh.h
M       source/blender/io/usd/intern/usd_writer_mesh.cc
M       source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc
M       source/blender/makesrna/intern/rna_mesh.c
M       source/blender/render/intern/bake.c
M       source/blender/render/intern/multires_bake.c
M       source/blender/render/intern/texture_pointdensity.c

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

diff --git a/source/blender/blenkernel/BKE_mesh.h 
b/source/blender/blenkernel/BKE_mesh.h
index d852ae633bd..63272b8d968 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -1089,7 +1089,8 @@ BLI_INLINE MDeformVert 
*BKE_mesh_deform_verts_for_write(Mesh *mesh)
   if (dvert) {
     return dvert;
   }
-  return CustomData_add_layer(&meshs->vdata, CD_MDEFORMVERT, CD_CALLOC, NULL, 
mesh->totvert);
+  return (MDeformVert *)CustomData_add_layer(
+      &mesh->vdata, CD_MDEFORMVERT, CD_CALLOC, NULL, mesh->totvert);
 }
 
 #ifdef __cplusplus
diff --git a/source/blender/draw/intern/draw_cache_impl_particles.c 
b/source/blender/draw/intern/draw_cache_impl_particles.c
index dee7a8cec37..6d9e6acad11 100644
--- a/source/blender/draw/intern/draw_cache_impl_particles.c
+++ b/source/blender/draw/intern/draw_cache_impl_particles.c
@@ -296,7 +296,8 @@ static void particle_calculate_parent_uvs(ParticleSystem 
*psys,
     }
   }
   if (!ELEM(num, DMCACHE_NOTFOUND, DMCACHE_ISCHILD)) {
-    MFace *mface = &psmd->mesh_final->mface[num];
+    MFace *mfaces = CustomData_get_layer(&psmd->mesh_final->pdata, CD_MFACE);
+    MFace *mface = &mfaces[num];
     for (int j = 0; j < num_uv_layers; j++) {
       psys_interpolate_uvs(mtfaces[j] + num, mface->v4, particle->fuv, 
r_uv[j]);
     }
@@ -325,7 +326,8 @@ static void particle_calculate_parent_mcol(ParticleSystem 
*psys,
     }
   }
   if (!ELEM(num, DMCACHE_NOTFOUND, DMCACHE_ISCHILD)) {
-    MFace *mface = &psmd->mesh_final->mface[num];
+    MFace *mfaces = CustomData_get_layer(&psmd->mesh_final->pdata, CD_MFACE);
+    MFace *mface = &mfaces[num];
     for (int j = 0; j < num_col_layers; j++) {
       /* CustomDataLayer CD_MCOL has 4 structs per face. */
       psys_interpolate_mcol(mcols[j] + num * 4, mface->v4, particle->fuv, 
&r_mcol[j]);
@@ -351,7 +353,8 @@ static void 
particle_interpolate_children_uvs(ParticleSystem *psys,
   ChildParticle *particle = &psys->child[child_index];
   int num = particle->num;
   if (num != DMCACHE_NOTFOUND) {
-    MFace *mface = &psmd->mesh_final->mface[num];
+    MFace *mfaces = CustomData_get_layer(&psmd->mesh_final->pdata, CD_MFACE);
+    MFace *mface = &mfaces[num];
     for (int j = 0; j < num_uv_layers; j++) {
       psys_interpolate_uvs(mtfaces[j] + num, mface->v4, particle->fuv, 
r_uv[j]);
     }
@@ -375,7 +378,8 @@ static void 
particle_interpolate_children_mcol(ParticleSystem *psys,
   ChildParticle *particle = &psys->child[child_index];
   int num = particle->num;
   if (num != DMCACHE_NOTFOUND) {
-    MFace *mface = &psmd->mesh_final->mface[num];
+    MFace *mfaces = CustomData_get_layer(&psmd->mesh_final->pdata, CD_MFACE);
+    MFace *mface = &mfaces[num];
     for (int j = 0; j < num_col_layers; j++) {
       /* CustomDataLayer CD_MCOL has 4 structs per face. */
       psys_interpolate_mcol(mcols[j] + num * 4, mface->v4, particle->fuv, 
&r_mcol[j]);
diff --git 
a/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_sculpt_data.cc 
b/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_sculpt_data.cc
index 492721b4853..7e2f09f991e 100644
--- a/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_sculpt_data.cc
+++ b/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_sculpt_data.cc
@@ -9,6 +9,7 @@
 
 #include "BLI_string.h"
 
+#include "BKE_mesh.h"
 #include "BKE_paint.h"
 
 #include "draw_subdivision.h"
@@ -128,6 +129,9 @@ static void extract_sculpt_data_init_subdiv(const 
DRWSubdivCache *subdiv_cache,
   GPUVertBuf *subdiv_mask_vbo = nullptr;
   const float *cd_mask = (const float *)CustomData_get_layer(cd_vdata, 
CD_PAINT_MASK);
 
+  const Span<MPoly> coarse_polygons = bke::mesh_polygons(*coarse_mesh);
+  const Span<MLoop> coarse_loops = bke::mesh_loops(*coarse_mesh);
+
   if (cd_mask) {
     GPUVertFormat mask_format = {0};
     GPU_vertformat_attr_add(&mask_format, "msk", GPU_COMP_F32, 1, 
GPU_FETCH_FLOAT);
@@ -138,11 +142,11 @@ static void extract_sculpt_data_init_subdiv(const 
DRWSubdivCache *subdiv_cache,
     float *v_mask = static_cast<float *>(GPU_vertbuf_get_data(mask_vbo));
 
     for (int i = 0; i < coarse_mesh->totpoly; i++) {
-      const MPoly *mpoly = &coarse_mesh->mpoly[i];
+      const MPoly *mpoly = &coarse_polygons[i];
 
       for (int loop_index = mpoly->loopstart; loop_index < mpoly->loopstart + 
mpoly->totloop;
            loop_index++) {
-        const MLoop *ml = &coarse_mesh->mloop[loop_index];
+        const MLoop *ml = &coarse_loops[loop_index];
         *v_mask++ = cd_mask[ml->v];
       }
     }
diff --git a/source/blender/geometry/intern/add_curves_on_mesh.cc 
b/source/blender/geometry/intern/add_curves_on_mesh.cc
index bb8e1e7fd0b..47a3af7e776 100644
--- a/source/blender/geometry/intern/add_curves_on_mesh.cc
+++ b/source/blender/geometry/intern/add_curves_on_mesh.cc
@@ -3,6 +3,7 @@
 #include "BLI_length_parameterize.hh"
 
 #include "BKE_attribute_math.hh"
+#include "BKE_mesh.h"
 #include "BKE_mesh_sample.hh"
 
 #include "GEO_add_curves_on_mesh.hh"
diff --git a/source/blender/geometry/intern/mesh_to_curve_convert.cc 
b/source/blender/geometry/intern/mesh_to_curve_convert.cc
index fdacb174462..575e31a4759 100644
--- a/source/blender/geometry/intern/mesh_to_curve_convert.cc
+++ b/source/blender/geometry/intern/mesh_to_curve_convert.cc
@@ -12,6 +12,7 @@
 #include "BKE_attribute_math.hh"
 #include "BKE_curves.hh"
 #include "BKE_geometry_set.hh"
+#include "BKE_mesh.h"
 
 #include "GEO_mesh_to_curve.hh"
 
@@ -213,8 +214,9 @@ static CurveFromEdgesOutput 
edges_to_curve_point_indices(Span<MVert> verts,
 static Vector<std::pair<int, int>> get_selected_edges(const Mesh &mesh, const 
IndexMask selection)
 {
   Vector<std::pair<int, int>> selected_edges;
+  const Span<MEdge> edges = bke::mesh_edges(mesh);
   for (const int i : selection) {
-    selected_edges.append({mesh.medge[i].v1, mesh.medge[i].v2});
+    selected_edges.append({edges[i].v1, edges[i].v2});
   }
   return selected_edges;
 }
@@ -222,8 +224,8 @@ static Vector<std::pair<int, int>> get_selected_edges(const 
Mesh &mesh, const In
 bke::CurvesGeometry mesh_to_curve_convert(const Mesh &mesh, const IndexMask 
selection)
 {
   Vector<std::pair<int, int>> selected_edges = get_selected_edges(mesh, 
selection);
-  CurveFromEdgesOutput output = edges_to_curve_point_indices({mesh.mvert, 
mesh.totvert},
-                                                             selected_edges);
+  const Span<MVert> vertices = bke::mesh_vertices(mesh);
+  CurveFromEdgesOutput output = edges_to_curve_point_indices(vertices, 
selected_edges);
 
   return create_curve_from_vert_indices(
       mesh, output.vert_indices, output.curve_offsets, output.cyclic_curves);
diff --git a/source/blender/geometry/intern/mesh_to_volume.cc 
b/source/blender/geometry/intern/mesh_to_volume.cc
index ae98b048a6c..43636a4a9f0 100644
--- a/source/blender/geometry/intern/mesh_to_volume.cc
+++ b/source/blender/geometry/intern/mesh_to_volume.cc
@@ -1,5 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
 
+#include "BKE_mesh.h"
 #include "BKE_mesh_runtime.h"
 #include "BKE_volume.h"
 
@@ -29,7 +30,7 @@ class OpenVDBMeshAdapter {
 };
 
 OpenVDBMeshAdapter::OpenVDBMeshAdapter(const Mesh &mesh, float4x4 transform)
-    : vertices_(mesh.mvert, mesh.totvert), loops_(mesh.mloop, mesh.totloop), 
transform_(transform)
+    : vertices_(bke::mesh_vertices(mesh)), loops_(bke::mesh_loops(mesh)), 
transform_(transform)
 {
   /* This only updates a cache and can be considered to be logically const. */
   const MLoopTri *looptris = BKE_mesh_runtime_looptri_ensure(&mesh);
diff --git a/source/blender/geometry/intern/realize_instances.cc 
b/source/blender/geometry/intern/realize_instances.cc
index 0544f304283..9c09fbdb7d2 100644
--- a/source/blender/geometry/intern/realize_instances.cc
+++ b/source/blender/geometry/intern/realize_instances.cc
@@ -95,6 +95,11 @@ struct MeshElementStartIndices {
 
 struct MeshRealizeInfo {
   const Mesh *mesh = nullptr;
+  Span<MVert> vertices;
+  Span<MEdge> edges;
+  Span<MPoly> polygons;
+  Span<MLoop> loops;
+
   /** Maps old material indices to new material indices. */
   Array<int> material_index_map;
   /** Matches the order in #AllMeshesInfo.attributes. */
@@ -836,6 +841,10 @@ static AllMeshesInfo preprocess_meshes(const GeometrySet 
&geometry_set,
     MeshRealizeInfo &mesh_info = info.realize_info[mesh_index];
     const Mesh *mesh = info.order[mesh_index];
     mesh_info.mesh = mesh;
+    mesh_info.vertices = bke::mesh_vertices(*mesh);
+    mesh_info.edges = bke::mesh_edges(*mesh);
+    mesh_info.polygons = bke::mesh_polygons(*mesh);
+    mesh_info.loops = bke::mesh_loops(*mesh);
 
     /* Create material index mapping. */
     mesh_info.material_index_map.reinitialize(mesh->totcol);
@@ -870,28 +879,29 @@ static AllMeshesInfo preprocess_meshes(const GeometrySet 
&geometry_set,
 static void execute_realize_mesh_task(const RealizeInstancesOptions &options,
                                       const RealizeMeshTask &task,
                                       const OrderedAttributes 
&ordered_attributes,
-                                      Mesh &dst_mesh,
                                       MutableSpan<GSpanAttributeWriter> 
dst_attribute_writers,
+                                      MutableSpan<MVert> all_dst_verts,
+                                      MutableSpan<MEdge> all_dst_edges,
+                                      MutableSpan<MPoly> all_dst_polys,
+                                      MutableSpan<MLoop> all_dst_loops,
                                       MutableSpan<int> all_dst_vertex_ids)
 {
   const MeshRealizeInfo &mesh_info = *task.mesh_info;
   const Mesh &mesh = *mesh_info.mesh;
-
-  const Span<MVert> src_verts{mesh.mvert, mesh.totvert};
-  const Span<MEdge> src_edges{mesh.medge, mesh.totedge};
-  const Span<MLoop> src_loops{mesh.mloop, mesh.totloop};
-  const Span<MPoly> src_polys{mesh.mpoly, mesh.totpoly};
-
-  MutableSpan<MVert> dst_verts{dst_mesh.mvert + task.start_indices.vertex, 
mesh.totvert};
-  MutableSpan<MEdge> dst_edges{dst_mesh.medge + task.start_indices.edge, 
mesh.totedge};
-  MutableSpan<MLoop> dst_loops{dst_mesh.mloop + task.start_indices.loop, 
mesh.totloop};
-  MutableSpan<MPoly> dst_polys{dst_mesh.mpoly + task.start_indices.pol

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
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

Reply via email to