[Bf-blender-cvs] [77f9289c570] refactor-mesh-remove-pointers: Merge branch 'master' into refactor-mesh-remove-pointers

Hans Goudey noreply at git.blender.org
Tue Aug 30 19:43:23 CEST 2022


Commit: 77f9289c570cfbea1b06db136a0513046af110df
Author: Hans Goudey
Date:   Tue Aug 30 12:36:34 2022 -0500
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rB77f9289c570cfbea1b06db136a0513046af110df

Merge branch 'master' into refactor-mesh-remove-pointers

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



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

diff --cc source/blender/nodes/geometry/nodes/node_geo_distribute_points_on_faces.cc
index b3412fd843c,d9115d39705..3641ffba64b
--- a/source/blender/nodes/geometry/nodes/node_geo_distribute_points_on_faces.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_distribute_points_on_faces.cc
@@@ -351,9 -348,6 +350,8 @@@ BLI_NOINLINE static void compute_attrib
          attribute_outputs.rotation_id.get(), ATTR_DOMAIN_POINT);
    }
  
-   const Mesh &mesh = *mesh_component.get_for_read();
 +  const Span<MVert> verts = bke::mesh_vertices(mesh);
 +  const Span<MLoop> loops = bke::mesh_loops(mesh);
    const Span<MLoopTri> looptris{BKE_mesh_runtime_looptri_ensure(&mesh),
                                  BKE_mesh_runtime_looptri_len(&mesh)};
  
diff --cc source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc
index da91b2b07a9,2eb3706bac9..f6a4d2e6cf8
--- a/source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc
@@@ -522,14 -521,13 +521,13 @@@ static void duplicate_faces(GeometrySe
    }
    geometry_set.keep_only_during_modify({GEO_COMPONENT_TYPE_MESH});
  
-   const MeshComponent &src_component = *geometry_set.get_component_for_read<MeshComponent>();
-   const Mesh &mesh = *src_component.get_for_read();
+   const Mesh &mesh = *geometry_set.get_mesh_for_read();
 -  Span<MVert> verts(mesh.mvert, mesh.totvert);
 -  Span<MEdge> edges(mesh.medge, mesh.totedge);
 -  Span<MPoly> polys(mesh.mpoly, mesh.totpoly);
 -  Span<MLoop> loops(mesh.mloop, mesh.totloop);
 +  const Span<MVert> verts = bke::mesh_vertices(mesh);
 +  const Span<MEdge> edges = bke::mesh_edges(mesh);
 +  const Span<MPoly> polys = bke::mesh_polygons(mesh);
 +  const Span<MLoop> loops = bke::mesh_loops(mesh);
  
-   GeometryComponentFieldContext field_context{src_component, ATTR_DOMAIN_FACE};
+   bke::MeshFieldContext field_context{mesh, ATTR_DOMAIN_FACE};
    FieldEvaluator evaluator(field_context, polys.size());
    evaluator.add(count_field);
    evaluator.set_selection(selection_field);
@@@ -724,11 -722,11 +722,10 @@@ static void duplicate_edges(GeometrySe
      geometry_set.remove_geometry_during_modify();
      return;
    };
-   const MeshComponent &src_component = *geometry_set.get_component_for_read<MeshComponent>();
-   const Mesh &mesh = *src_component.get_for_read();
+   const Mesh &mesh = *geometry_set.get_mesh_for_read();
 -  Span<MVert> verts(mesh.mvert, mesh.totvert);
 -  Span<MEdge> edges(mesh.medge, mesh.totedge);
 +  const Span<MEdge> edges = bke::mesh_edges(mesh);
  
-   GeometryComponentFieldContext field_context{src_component, ATTR_DOMAIN_EDGE};
+   bke::MeshFieldContext field_context{mesh, ATTR_DOMAIN_EDGE};
    FieldEvaluator evaluator{field_context, edges.size()};
    evaluator.add(count_field);
    evaluator.set_selection(selection_field);
@@@ -907,11 -905,10 +903,10 @@@ static void duplicate_points_mesh(Geome
                                    const Field<bool> &selection_field,
                                    const IndexAttributes &attribute_outputs)
  {
-   const MeshComponent &src_component = *geometry_set.get_component_for_read<MeshComponent>();
    const Mesh &mesh = *geometry_set.get_mesh_for_read();
 -  Span<MVert> src_verts(mesh.mvert, mesh.totvert);
 +  const Span<MVert> src_verts = bke::mesh_vertices(mesh);
  
-   GeometryComponentFieldContext field_context{src_component, ATTR_DOMAIN_POINT};
+   bke::MeshFieldContext field_context{mesh, ATTR_DOMAIN_POINT};
    FieldEvaluator evaluator{field_context, src_verts.size()};
    evaluator.add(count_field);
    evaluator.set_selection(selection_field);
diff --cc source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
index 9192a0326ee,237e8ffaa7c..b4427903ed6
--- a/source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
@@@ -389,13 -412,12 +388,12 @@@ static void extrude_mesh_edges(Mesh &me
                                 const Field<float3> &offset_field,
                                 const AttributeOutputs &attribute_outputs)
  {
-   Mesh &mesh = *component.get_for_write();
    const int orig_vert_size = mesh.totvert;
 -  Span<MEdge> orig_edges = mesh_edges(mesh);
 -  Span<MPoly> orig_polys = mesh_polys(mesh);
 +  Span<MEdge> orig_edges = bke::mesh_edges(mesh);
 +  Span<MPoly> orig_polys = bke::mesh_polygons(mesh);
    const int orig_loop_size = mesh.totloop;
  
-   GeometryComponentFieldContext edge_context{component, ATTR_DOMAIN_EDGE};
+   bke::MeshFieldContext edge_context{mesh, ATTR_DOMAIN_EDGE};
    FieldEvaluator edge_evaluator{edge_context, mesh.totedge};
    edge_evaluator.set_selection(selection_field);
    edge_evaluator.add(offset_field);
@@@ -654,13 -675,12 +652,12 @@@ static void extrude_mesh_face_regions(M
                                        const Field<float3> &offset_field,
                                        const AttributeOutputs &attribute_outputs)
  {
-   Mesh &mesh = *component.get_for_write();
    const int orig_vert_size = mesh.totvert;
 -  Span<MEdge> orig_edges = mesh_edges(mesh);
 -  Span<MPoly> orig_polys = mesh_polys(mesh);
 -  Span<MLoop> orig_loops = mesh_loops(mesh);
 +  Span<MEdge> orig_edges = bke::mesh_edges(mesh);
 +  Span<MPoly> orig_polys = bke::mesh_polygons(mesh);
 +  Span<MLoop> orig_loops = bke::mesh_loops(mesh);
  
-   GeometryComponentFieldContext poly_context{component, ATTR_DOMAIN_FACE};
+   bke::MeshFieldContext poly_context{mesh, ATTR_DOMAIN_FACE};
    FieldEvaluator poly_evaluator{poly_context, mesh.totpoly};
    poly_evaluator.set_selection(selection_field);
    poly_evaluator.add(offset_field);
@@@ -1040,11 -1059,10 +1037,10 @@@ static void extrude_individual_mesh_fac
                                            const Field<float3> &offset_field,
                                            const AttributeOutputs &attribute_outputs)
  {
-   Mesh &mesh = *component.get_for_write();
    const int orig_vert_size = mesh.totvert;
    const int orig_edge_size = mesh.totedge;
 -  Span<MPoly> orig_polys = mesh_polys(mesh);
 -  Span<MLoop> orig_loops = mesh_loops(mesh);
 +  Span<MPoly> orig_polys = bke::mesh_polygons(mesh);
 +  Span<MLoop> orig_loops = bke::mesh_loops(mesh);
  
    /* Use a mesh for the result of the evaluation because the mesh is reallocated before
     * the vertices are moved, and the evaluated result might reference an attribute. */
diff --cc source/blender/nodes/geometry/nodes/node_geo_flip_faces.cc
index 0395e1e635c,a752abc2522..2178b9283fb
--- a/source/blender/nodes/geometry/nodes/node_geo_flip_faces.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_flip_faces.cc
@@@ -31,10 -30,9 +30,9 @@@ static void mesh_flip_faces(Mesh &mesh
    evaluator.evaluate();
    const IndexMask selection = evaluator.get_evaluated_as_mask(0);
  
 -  mesh.mloop = (MLoop *)CustomData_duplicate_referenced_layer(&mesh.ldata, CD_MLOOP, mesh.totloop);
 -  const Span<MPoly> polys{mesh.mpoly, mesh.totpoly};
 -  MutableSpan<MLoop> loops{mesh.mloop, mesh.totloop};
 +  Mesh &mesh = *component.get_for_write();
- 
 +  const Span<MPoly> polys = bke::mesh_polygons(mesh);
 +  MutableSpan<MLoop> loops = bke::mesh_loops_for_write(mesh);
  
    for (const int i : selection.index_range()) {
      const MPoly &poly = polys[selection[i]];
diff --cc source/blender/nodes/geometry/nodes/node_geo_input_mesh_edge_angle.cc
index 6fa6efbd98d,3e9fcb10c8e..94402c94c14
--- a/source/blender/nodes/geometry/nodes/node_geo_input_mesh_edge_angle.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_input_mesh_edge_angle.cc
@@@ -64,22 -64,13 +64,12 @@@ class AngleFieldInput final : public bk
                                   const eAttrDomain domain,
                                   IndexMask UNUSED(mask)) const final
    {
-     if (component.type() != GEO_COMPONENT_TYPE_MESH) {
-       return {};
-     }
- 
-     const MeshComponent &mesh_component = static_cast<const MeshComponent &>(component);
-     const Mesh *mesh = mesh_component.get_for_read();
-     if (mesh == nullptr) {
-       return {};
-     }
- 
-     const Span<MVert> verts = bke::mesh_vertices(*mesh);
-     const Span<MPoly> polys = bke::mesh_polygons(*mesh);
-     const Span<MLoop> loops = bke::mesh_loops(*mesh);
-     Array<EdgeMapEntry> edge_map = create_edge_map(polys, loops, mesh->totedge);
 -    Span<MVert> vertices{mesh.mvert, mesh.totvert};
 -    Span<MPoly> polys{mesh.mpoly, mesh.totpoly};
 -    Span<MLoop> loops{mesh.mloop, mesh.totloop};
++    const Span<MVert> verts = bke::mesh_vertices(mesh);
++    const Span<MPoly> polys = bke::mesh_polygons(mesh);
++    const Span<MLoop> loops = bke::mesh_loops(mesh);
+     Array<EdgeMapEntry> edge_map = create_edge_map(polys, loops, mesh.totedge);
  
 -    auto angle_fn =
 -        [edge_map = std::move(edge_map), vertices, polys, loops](const int i) -> float {
 +    auto angle_fn = [edge_map = std::move(edge_map), verts, polys, loops](const int i) -> float {
        if (edge_map[i].face_count != 2) {
          return 0.0f;
        }
@@@ -119,24 -110,14 +109,14 @@@ class SignedAngleFieldInput final : pub
                                   const eAttrDomain domain,
                                   IndexMask UNUSED(mask)) const final
    {
-     if (component.type() != GEO_COMPONENT_TYPE_MESH) {
-       return {};
-     }
- 
-     const MeshComponent &mesh_component = static_cast<const MeshComponent &>(component);
-     const Mesh *mesh = mesh_component.get_for_read();
-     if (mesh == nullptr) {
-       return {};
-     }
- 
-     const Span<MVert> verts = bke::mesh_vertices(*mesh);
-     const Span<MEdge> edges = bke::mesh_edges(*mesh);
-     const Span<MPoly> polys = bke::mesh_polygons(*mesh);
-     const Span<MLoop> loops = bke::mesh_loops(*mesh);
-     Array<EdgeMapEntry> edge_map = create_edge_map(polys, loops, mesh->totedge);
 -    const Span<MVert> vertices(mesh.mvert, mesh.totvert);
 -    const Span<MEdge> edges(mesh.medge, mesh.totedge);
 -    const Span<MPoly> polys(mesh.mpoly, mesh.totpoly);
 -    const Span<MLoop> loops(mesh.mloop, mesh.totloop);
++    const Span<MVert> verts = bke::mesh_vertices(mesh);
++    const Span<MEdge> edges = bke::mesh_edges(mesh);
++    const Span<MPoly> polys 

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list