[Bf-blender-cvs] [9726bb4e51d] refactor-mesh-corners-generic: Initial progress splitting MLoop in two arrays
Hans Goudey
noreply at git.blender.org
Sun Nov 27 21:09:49 CET 2022
Commit: 9726bb4e51d73398d66649de7f157f003fe2d6dc
Author: Hans Goudey
Date: Sun Nov 27 14:09:27 2022 -0600
Branches: refactor-mesh-corners-generic
https://developer.blender.org/rB9726bb4e51d73398d66649de7f157f003fe2d6dc
Initial progress splitting MLoop in two arrays
About halfway through removing all uses of `MLoop`. See T102359
===================================================================
M intern/cycles/blender/mesh.cpp
M source/blender/blenkernel/BKE_DerivedMesh.h
M source/blender/blenkernel/BKE_bvhutils.h
M source/blender/blenkernel/BKE_deform.h
M source/blender/blenkernel/BKE_mesh.h
M source/blender/blenkernel/BKE_mesh_mapping.h
M source/blender/blenkernel/BKE_mesh_remap.h
M source/blender/blenkernel/BKE_mesh_runtime.h
M source/blender/blenkernel/BKE_mesh_sample.hh
M source/blender/blenkernel/BKE_mesh_tangent.h
M source/blender/blenkernel/BKE_multires.h
M source/blender/blenkernel/BKE_paint.h
M source/blender/blenkernel/BKE_pbvh.h
M source/blender/blenkernel/BKE_subdiv_ccg.h
M source/blender/blenkernel/BKE_volume_to_mesh.hh
M source/blender/blenkernel/intern/bvhutils.cc
M source/blender/blenkernel/intern/cloth.cc
M source/blender/blenkernel/intern/crazyspace.cc
M source/blender/blenkernel/intern/curve_to_mesh_convert.cc
M source/blender/blenkernel/intern/data_transfer.c
M source/blender/blenkernel/intern/deform.c
M source/blender/blenkernel/intern/effect.c
M source/blender/blenkernel/intern/fluid.c
M source/blender/blenkernel/intern/geometry_component_mesh.cc
M source/blender/blenkernel/intern/gpencil_geom.cc
M source/blender/blenkernel/intern/key.c
M source/blender/blenkernel/intern/mball_tessellate.cc
M source/blender/blenkernel/intern/mesh.cc
M source/blender/blenkernel/intern/mesh_calc_edges.cc
M source/blender/blenkernel/intern/mesh_evaluate.cc
M source/blender/blenkernel/intern/mesh_fair.cc
M source/blender/blenkernel/intern/mesh_iterators.cc
M source/blender/blenkernel/intern/mesh_mapping.cc
M source/blender/blenkernel/intern/mesh_mirror.c
M source/blender/blenkernel/intern/mesh_normals.cc
M source/blender/blenkernel/intern/mesh_remap.cc
M source/blender/blenkernel/intern/mesh_remesh_voxel.cc
M source/blender/blenkernel/intern/mesh_runtime.cc
M source/blender/blenkernel/intern/mesh_sample.cc
M source/blender/blenkernel/intern/mesh_tangent.cc
M source/blender/blenkernel/intern/mesh_tessellate.cc
M source/blender/blenkernel/intern/multires.cc
M source/blender/blenkernel/intern/multires_reshape.h
M source/blender/blenkernel/intern/multires_reshape_apply_base.c
M source/blender/blenkernel/intern/multires_reshape_smooth.c
M source/blender/blenkernel/intern/multires_reshape_subdivide.c
M source/blender/blenkernel/intern/multires_unsubdivide.c
M source/blender/blenkernel/intern/object_dupli.cc
M source/blender/blenkernel/intern/paint.cc
M source/blender/blenkernel/intern/pbvh.c
M source/blender/blenkernel/intern/pbvh.cc
M source/blender/blenkernel/intern/pbvh_intern.h
M source/blender/blenkernel/intern/pbvh_pixels.cc
M source/blender/blenkernel/intern/rigidbody.c
M source/blender/blenkernel/intern/shrinkwrap.cc
M source/blender/blenkernel/intern/softbody.c
M source/blender/blenkernel/intern/subdiv_ccg.cc
M source/blender/blenkernel/intern/subdiv_converter_mesh.c
M source/blender/blenkernel/intern/subdiv_eval.c
M source/blender/blenkernel/intern/subdiv_foreach.c
M source/blender/blenkernel/intern/subdiv_mesh.cc
M source/blender/blenkernel/intern/subsurf_ccg.c
M source/blender/blenkernel/intern/volume_to_mesh.cc
M source/blender/bmesh/intern/bmesh_mesh_convert.cc
M source/blender/draw/DRW_pbvh.h
M source/blender/draw/intern/draw_pbvh.cc
M source/blender/editors/curves/intern/curves_ops.cc
M source/blender/editors/mesh/editface.cc
M source/blender/editors/mesh/mesh_data.cc
M source/blender/editors/mesh/meshtools.cc
M source/blender/editors/object/object_remesh.cc
M source/blender/editors/object/object_vgroup.cc
M source/blender/editors/sculpt_paint/curves_sculpt_add.cc
M source/blender/editors/sculpt_paint/curves_sculpt_puff.cc
M source/blender/editors/sculpt_paint/curves_sculpt_slide.cc
M source/blender/editors/sculpt_paint/paint_image_proj.cc
M source/blender/editors/sculpt_paint/paint_mask.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.cc
M source/blender/editors/sculpt_paint/sculpt_expand.c
M source/blender/editors/sculpt_paint/sculpt_face_set.cc
M source/blender/editors/sculpt_paint/sculpt_geodesic.c
M source/blender/editors/space_spreadsheet/spreadsheet_data_source_geometry.cc
M source/blender/editors/space_view3d/drawobject.c
M source/blender/editors/transform/transform_snap_object.cc
M source/blender/editors/uvedit/uvedit_unwrap_ops.c
M source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
M source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
M source/blender/geometry/intern/add_curves_on_mesh.cc
M source/blender/geometry/intern/mesh_merge_by_distance.cc
M source/blender/geometry/intern/mesh_primitive_cuboid.cc
M source/blender/geometry/intern/mesh_to_volume.cc
M source/blender/geometry/intern/realize_instances.cc
M source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.cc
M source/blender/gpu/intern/gpu_shader_builder_stubs.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/collada/GeometryExporter.cpp
M source/blender/io/collada/MeshImporter.cpp
M source/blender/io/collada/MeshImporter.h
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/makesdna/DNA_mesh_types.h
M source/blender/makesdna/DNA_meshdata_types.h
M source/blender/modifiers/intern/MOD_util.cc
M source/blender/modifiers/intern/MOD_uvproject.cc
M source/blender/modifiers/intern/MOD_uvwarp.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_fill.cc
M source/blender/nodes/geometry/nodes/node_geo_deform_curves_on_surface.cc
M source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc
M source/blender/nodes/geometry/nodes/node_geo_distribute_points_on_faces.cc
M source/blender/nodes/geometry/nodes/node_geo_dual_mesh.cc
M source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc
M source/blender/nodes/geometry/nodes/node_geo_edge_split.cc
M source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
M source/blender/nodes/geometry/nodes/node_geo_flip_faces.cc
M source/blender/nodes/geometry/nodes/node_geo_input_mesh_edge_angle.cc
M source/blender/nodes/geometry/nodes/node_geo_input_mesh_edge_neighbors.cc
M source/blender/nodes/geometry/nodes/node_geo_input_mesh_face_area.cc
M source/blender/nodes/geometry/nodes/node_geo_input_mesh_face_is_planar.cc
M source/blender/nodes/geometry/nodes/node_geo_input_mesh_face_neighbors.cc
M source/blender/nodes/geometry/nodes/node_geo_input_mesh_vertex_neighbors.cc
M source/blender/nodes/geometry/nodes/node_geo_mesh_face_set_boundaries.cc
M source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_circle.cc
M source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_grid.cc
M source/blender/nodes/geometry/nodes/node_geo_mesh_topology_corners_of_vertex.cc
M source/blender/nodes/geometry/nodes/node_geo_mesh_topology_edges_of_corner.cc
M source/blender/nodes/geometry/nodes/node_geo_mesh_topology_vertex_of_corner.cc
M source/blender/nodes/geometry/nodes/node_geo_sample_nearest.cc
M source/blender/nodes/geometry/nodes/node_geo_scale_elements.cc
M source/blender/nodes/geometry/nodes/node_geo_uv_pack_islands.cc
M source/blender/nodes/geometry/nodes/node_geo_uv_unwrap.cc
M source/blender/nodes/geometry/nodes/node_geo_volume_to_mesh.cc
M source/blender/python/mathutils/mathutils_bvhtree.c
M source/blender/render/intern/bake.c
M source/blender/render/intern/multires_bake.c
M source/blender/render/intern/texture_margin.cc
M source/blender/render/intern/texture_pointdensity.c
===================================================================
diff --git a/intern/cycles/blender/mesh.cpp b/intern/cycles/blender/mesh.cpp
index fa4ddc24f56..bf387f9ad5e 100644
--- a/intern/cycles/blender/mesh.cpp
+++ b/intern/cycles/blender/mesh.cpp
@@ -866,10 +866,10 @@ static void attr_create_random_per_island(Scene *scene,
else {
if (polys_num != 0) {
const MPoly *polys = static_cast<const MPoly *>(b_mesh.polygons[0].ptr.data);
- const MLoop *loops = static_cast<const MLoop *>(b_mesh.loops[0].ptr.data);
+ const int *corner_verts = b_mesh.corner_verts[0].ptr.data;
for (int i = 0; i < polys_num; i++) {
const MPoly &b_poly = polys[i];
- const MLoop &b_loop = loops[b_poly.loopstart];
+ const int vert = corner_verts[b_poly.loopstart];
data[i] = hash_uint_to_float(vertices_sets.find(b_loop.v));
}
}
@@ -1014,7 +1014,7 @@ static void create_mesh(Scene *scene,
else {
vector<int> vi;
- const MLoop *loops = static_cast<const MLoop *>(b_mesh.loops[0].ptr.data);
+ const int *corner_verts = b_mesh.corner_verts[0].ptr.data;
for (int i = 0; i < numfaces; i++) {
const MPoly &b_poly = polys[i];
@@ -1025,8 +1025,7 @@ static void create_mesh(Scene *scene,
vi.resize(n);
for (int i = 0; i < n; i++) {
/* NOTE: Autosmooth is already taken care about. */
-
- vi[i] = loops[b_poly.loopstart + i].v;
+ vi[i] = corner_verts[b_poly.loopstart + i];
}
/* create subd faces */
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h
index 967f9ea240c..75b51552bb6 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -129,7 +129,8 @@ struct DerivedMesh {
*/
float *(*getVertArray)(DerivedMesh *dm);
struct MEdge *(*getEdgeArray)(DerivedMesh *dm);
- struct MLoop *(*getLoopArray)(DerivedMesh *dm);
+ int *(*getCornerVertArray)(DerivedMesh *dm);
+ int *(*getCornerEdgeArray)(DerivedMesh *dm);
struct MPoly *(*getPolyArray)(DerivedMesh *dm);
/** Copy all verts/edges/faces from the derived mesh into
diff --git a/source/blender/blenkernel/BKE_bvhutils.h b/source/blender/blenkernel/BKE_bvhutils.h
index 320eb698b20..087f1cf1b10 100644
--- a/source/blender/blenkernel/BKE_bvhutils.h
+++ b/source/blender/blenkernel/BKE_bvhutils.h
@@ -61,7 +61,7 @@ typedef struct BVHTreeFromMesh {
const float (*positions)[3];
const struct MEdge *edge;
const struct MFace *face;
- const struct MLoop *loop;
+ const int *corner_verts;
const struct MLoopTri *looptri;
/* Private data */
@@ -181,7 +181,7 @@ BVHTree *bvhtree_from_editmesh_looptri_ex(BVHTreeFromEditMesh *data,
*/
BVHTree *bvhtree_from_mesh_looptri_ex(struct BVHTreeFromMesh *data,
const float (*positions)[3],
- const struct MLoop *mloop,
+ const int *corner_verts,
const struct MLoopTri *looptri,
int looptri_num,
const blender::BitVector<> &mask,
diff --git a/source/blender/blenkernel/BKE_deform.h b/source/blender/blenkernel/BKE_deform.h
index 4023d6829d4..e0c2f82af28 100644
--- a/source/blender/blenkernel/BKE_deform.h
+++ b/source/blender/blenkernel/BKE_deform.h
@@ -18,7 +18,6 @@ struct ID;
struct ListBase;
struct MDeformVert;
struct MEdge;
-struct MLoop;
struct MPoly;
struct Object;
struct bDeformGroup;
@@ -265,14 +264,14 @@ void BKE_defvert_extract_vgroup_to_edgeweights(const struct MDeformVert *dvert,
void BKE_defvert_extract_vgroup_to_loopweights(const struct MDeformVert *dvert,
int defgroup,
int verts_num,
- const struct MLoop *loops,
+ const int *corner_verts,
int loops_num,
bool invert_vgroup,
float *r_weights);
void BKE_defvert_extract_vgroup_to_polyweights(const struct MDeformVert *dvert,
int defgroup,
int verts_num,
- const struct MLoop *loops,
+ const int *corner_verts,
int loops_num,
const struct MPoly *polys,
int polys_num,
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index 934847ae925..be9ab95a02d 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -34,7 +34,6 @@ struct MDeformVert;
struct MDisps;
struct MEdge;
struct MFace;
-struct MLoop;
struct MLoopTri;
struct MLoopUV;
struct MPoly;
@@ -112,14 +111,14 @@ void BKE_mesh_ensure_default_orig_index_customdata_no_check(struct Mesh *mesh);
* Find the index of the loop in 'poly' which references vertex,
* returns -1 if not found
*/
-int poly_find_loop_from_vert(const struct MPoly *poly, const struct MLoop *loopstart, int vert);
+int poly_find_loop_from_vert(const struct MPoly *poly, const int *poly_corner_verts, int vert);
/**
* Fill \a r_adj with the loop indices in \a poly adjacent to the
* vertex. Returns the index of the loop matching vertex, or -1 if the
* vertex is not in \a poly
*/
int poly_get_adj_loops_from_vert(const struct MPoly *poly,
- const struct MLoop *mloop,
+ const int *corner_verts,
int vert,
int r_adj[2]);
@@ -342,7 +341,7 @@ void BKE_mesh_vert_coords_apply(struct Mesh *mesh, const float (*vert_coords)[3]
/**
* Calculate tessellation into #MLoopTri which exist only for this purpose.
*/
-void BKE_mesh_recalc_looptri(const struct MLoop *mloop,
+void BKE_mesh_recalc_looptri(const int *corner_verts,
const struct MPoly *mpoly,
const float (*positions)[3],
int totloop,
@@ -356,7 +355,7 @@ void BKE_mesh_recalc_looptri(const struct MLoop *mloop,
* to calculate normals just to use this function as it will cause the normals for triangles
* to be calculated which aren't needed for tessellation.
*/
-void BKE_mesh_recalc_looptri_with_normals(const struct MLoop *mloop,
+void BKE_mesh_recalc_looptri_with_normals(const int *corner_verts,
const struct MPoly *mpoly,
const float (*positions)[3],
int totloop,
@@ -439,7 +438,7 @@ bool BKE_mesh_vertex_normals_are_dirty(const struct Mesh *mesh);
bool BKE_mesh_poly_normals_are_dirty(const struct Mesh *mesh);
void BKE_mesh_calc_poly_normal(const struct MPoly *mpoly,
- const struct MLoop *loopstart,
+ const int *poly_corner_verts,
const float (*positions)[3],
float r_no[3]);
@@ -451,7 +450,7 @@ void BKE_mesh_calc_poly_normal(const struct MPoly *mpoly,
*/
void BKE_mesh_calc_normals_poly(const float (*positions)[3],
int mvert_len,
- const struct MLoop *mloop,
+ const int *corner_verts,
int mloop_len,
const struct MPoly *mpoly,
int mpoly_len,
@@ -465,7 +464,7 @@ void BKE_mesh_calc_normals_poly(const float (*positions)[3],
*/
void BKE_mesh_calc_normals_poly_and_vertex(const float (*positions)[3],
int mvert_len,
- const struct MLoop *mloop,
+ const int *corner_verts,
int mloop_len,
const struct MPoly *mpoly,
int mpoly_len,
@@ -496,8 +495,9 @@ void BKE_edges_sharp_from_angle_set(const float (*positions)[3],
int numVerts,
struct MEdge *medges,
int numEdges,
- const struct MLoop *mloops,
- int numLoops,
+ const int *corner_verts,
+ const int *corner_edges,
+ int corners_num,
const struct MPoly *mpolys,
const float (*polynors)[3],
int numPolys,
@@ -620,9 +620,10 @@ void BKE_mesh_normals_loop_split(const float (*positions)[3],
int numVerts,
const struct MEdge *medges,
int numEdges,
- const struct MLoop *mloops,
+ const int *corner_verts,
+ const int *corner_edges,
float (*r_loopnors)[3],
- int numLoops,
+ int corners_num,
const struct MPoly *mpolys,
const float (*polynors)[3],
int numPolys,
@@ -637,9 +638,10 @@ void BKE_mesh_normals_loop_custom_set(const float (*positions)[3],
int numVerts,
struct MEdge *medges,
int numEdges,
- const struct MLoop *mloops,
+
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list