[Bf-blender-cvs] [f4292febb40] refactor-mesh-sharp-edge-generic: Various fixes

Hans Goudey noreply at git.blender.org
Wed Jan 4 04:34:34 CET 2023


Commit: f4292febb409751b8da18a144fed76357a2bb2d1
Author: Hans Goudey
Date:   Tue Jan 3 20:28:02 2023 -0500
Branches: refactor-mesh-sharp-edge-generic
https://developer.blender.org/rBf4292febb409751b8da18a144fed76357a2bb2d1

Various fixes

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

M	source/blender/blenkernel/intern/curve_to_mesh_convert.cc
M	source/blender/blenkernel/intern/mesh_mapping.cc
M	source/blender/blenkernel/intern/mesh_normals.cc
M	source/blender/editors/mesh/mesh_data.cc
M	source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.cc
M	source/blender/modifiers/intern/MOD_normal_edit.cc
M	source/blender/modifiers/intern/MOD_weighted_normal.cc

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

diff --git a/source/blender/blenkernel/intern/curve_to_mesh_convert.cc b/source/blender/blenkernel/intern/curve_to_mesh_convert.cc
index 2d804da96d8..15b6af2ba39 100644
--- a/source/blender/blenkernel/intern/curve_to_mesh_convert.cc
+++ b/source/blender/blenkernel/intern/curve_to_mesh_convert.cc
@@ -631,10 +631,9 @@ static void write_sharp_bezier_edges(const CurvesInfo &curves_info,
       handle_types_right.contains(BEZIER_HANDLE_VECTOR)) {
     return;
   }
-  const VArray<int8_t> curve_types = profile.curve_types();
-
+  const VArray<int8_t> types = profile.curve_types();
   foreach_curve_combination(curves_info, offsets, [&](const CombinationInfo &info) {
-    if (curve_types[info.i_profile] == CURVE_TYPE_BEZIER) {
+    if (types[info.i_profile] == CURVE_TYPE_BEZIER) {
       const IndexRange points = profile.points_for_curve(info.i_profile);
       mark_bezier_vector_edges_sharp(points.size(),
                                      info.main_segment_num,
diff --git a/source/blender/blenkernel/intern/mesh_mapping.cc b/source/blender/blenkernel/intern/mesh_mapping.cc
index 248cfd454ef..96cdb04aeb6 100644
--- a/source/blender/blenkernel/intern/mesh_mapping.cc
+++ b/source/blender/blenkernel/intern/mesh_mapping.cc
@@ -839,7 +839,7 @@ static void poly_edge_loop_islands_calc(const MEdge *medge,
 
 static bool poly_is_island_boundary_smooth_cb(const MPoly *mp,
                                               const MLoop * /*ml*/,
-                                              const MEdge *me,
+                                              const MEdge * /*me*/,
                                               const int edge_index,
                                               const bool *sharp_edges,
                                               const int edge_user_count,
diff --git a/source/blender/blenkernel/intern/mesh_normals.cc b/source/blender/blenkernel/intern/mesh_normals.cc
index 4316d65a797..9ac49a0c872 100644
--- a/source/blender/blenkernel/intern/mesh_normals.cc
+++ b/source/blender/blenkernel/intern/mesh_normals.cc
@@ -1612,7 +1612,7 @@ void BKE_mesh_normals_loop_split(const MVert *mverts,
                        loops,
                        loop_to_poly,
                        {reinterpret_cast<const float3 *>(poly_normals), numPolys},
-                       Span<bool>(sharp_edges, numEdges),
+                       Span<bool>(sharp_edges, sharp_edges ? numEdges : 0),
                        check_angle,
                        split_angle,
                        edge_to_loops,
@@ -1974,9 +1974,7 @@ static void mesh_set_custom_normals(Mesh *mesh, float (*r_custom_nors)[3], const
   MutableSpan<MEdge> edges = mesh->edges_for_write();
   const Span<MPoly> polys = mesh->polys();
   const Span<MLoop> loops = mesh->loops();
-
   MutableAttributeAccessor attributes = mesh->attributes_for_write();
-
   SpanAttributeWriter<bool> sharp_edges = attributes.lookup_or_add_for_write_span<bool>(
       ".sharp_edge", ATTR_DOMAIN_EDGE);
 
diff --git a/source/blender/editors/mesh/mesh_data.cc b/source/blender/editors/mesh/mesh_data.cc
index c09c75b4189..2036449f887 100644
--- a/source/blender/editors/mesh/mesh_data.cc
+++ b/source/blender/editors/mesh/mesh_data.cc
@@ -787,7 +787,6 @@ static int mesh_customdata_custom_splitnormals_add_exec(bContext *C, wmOperator
       bke::MutableAttributeAccessor attributes = me->attributes_for_write();
       bke::SpanAttributeWriter<bool> sharp_edges = attributes.lookup_or_add_for_write_span<bool>(
           ".sharp_edge", ATTR_DOMAIN_EDGE);
-
       BKE_edges_sharp_from_angle_set(me->totedge,
                                      loops.data(),
                                      loops.size(),
@@ -796,7 +795,6 @@ static int mesh_customdata_custom_splitnormals_add_exec(bContext *C, wmOperator
                                      polys.size(),
                                      me->smoothresh,
                                      sharp_edges.span.data());
-
       sharp_edges.finish();
     }
 
@@ -1460,7 +1458,6 @@ void ED_mesh_split_faces(Mesh *mesh)
   const float split_angle = (mesh->flag & ME_AUTOSMOOTH) != 0 ? mesh->smoothresh : float(M_PI);
 
   Array<bool> sharp_edges(mesh->totedge, false);
-
   BKE_edges_sharp_from_angle_set(mesh->totedge,
                                  loops.data(),
                                  loops.size(),
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.cc b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.cc
index 443f8885db1..ff6c6c74029 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.cc
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.cc
@@ -2070,6 +2070,10 @@ static void lineart_geometry_object_load(LineartObjectInfo *ob_info,
   edge_feat_settings.userdata_chunk_size = sizeof(EdgeFeatReduceData);
   edge_feat_settings.func_reduce = feat_data_sum_reduce;
 
+  const bke::AttributeAccessor attributes = me->attributes();
+  const VArray<bool> sharp_edges = attributes.lookup_or_default<bool>(
+      ".sharp_edge", ATTR_DOMAIN_EDGE, false);
+
   EdgeFeatData edge_feat_data = {nullptr};
   edge_feat_data.ld = la_data;
   edge_feat_data.me = me;
@@ -2079,6 +2083,7 @@ static void lineart_geometry_object_load(LineartObjectInfo *ob_info,
   edge_feat_data.edges = me->edges();
   edge_feat_data.polys = me->polys();
   edge_feat_data.loops = me->loops();
+  edge_feat_data.sharp_edges = sharp_edges;
   edge_feat_data.edge_nabr = lineart_build_edge_neighbor(me, total_edges);
   edge_feat_data.tri_array = la_tri_arr;
   edge_feat_data.v_array = la_v_arr;
diff --git a/source/blender/modifiers/intern/MOD_normal_edit.cc b/source/blender/modifiers/intern/MOD_normal_edit.cc
index f30e98287ea..e411b3d99d4 100644
--- a/source/blender/modifiers/intern/MOD_normal_edit.cc
+++ b/source/blender/modifiers/intern/MOD_normal_edit.cc
@@ -548,9 +548,9 @@ static Mesh *normalEditModifier_do(NormalEditModifierData *enmd,
   const float(*vert_normals)[3] = BKE_mesh_vertex_normals_ensure(result);
   const float(*poly_normals)[3] = BKE_mesh_poly_normals_ensure(result);
 
-  bke::SpanAttributeWriter<bool> sharp_edges =
-      result->attributes_for_write().lookup_or_add_for_write_span<bool>(".sharp_edge",
-                                                                        ATTR_DOMAIN_EDGE);
+  bke::MutableAttributeAccessor attributes = result->attributes_for_write();
+  bke::SpanAttributeWriter<bool> sharp_edges = attributes.lookup_or_add_for_write_span<bool>(
+      ".sharp_edge", ATTR_DOMAIN_EDGE);
 
   short(*clnors)[2] = static_cast<short(*)[2]>(CustomData_get_layer(ldata, CD_CUSTOMLOOPNORMAL));
   if (use_current_clnors) {
diff --git a/source/blender/modifiers/intern/MOD_weighted_normal.cc b/source/blender/modifiers/intern/MOD_weighted_normal.cc
index d6e5bc30ccd..5a2a329f506 100644
--- a/source/blender/modifiers/intern/MOD_weighted_normal.cc
+++ b/source/blender/modifiers/intern/MOD_weighted_normal.cc
@@ -76,7 +76,6 @@ struct WeightedNormalData {
   const MVert *mvert;
   const float (*vert_normals)[3];
   const MEdge *medge;
-
   bool *sharp_edges;
 
   const MLoop *mloop;
@@ -632,9 +631,9 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *
   const Array<int> loop_to_poly_map = bke::mesh_topology::build_loop_to_poly_map(result->polys(),
                                                                                  result->totloop);
 
-  bke::SpanAttributeWriter<bool> sharp_edges =
-      result->attributes_for_write().lookup_or_add_for_write_span<bool>(".sharp_edge",
-                                                                        ATTR_DOMAIN_EDGE);
+  bke::MutableAttributeAccessor attributes = result->attributes_for_write();
+  bke::SpanAttributeWriter<bool> sharp_edges = attributes.lookup_or_add_for_write_span<bool>(
+      ".sharp_edge", ATTR_DOMAIN_EDGE);
 
   WeightedNormalData wn_data{};
   wn_data.verts_num = verts_num;
@@ -645,7 +644,6 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *
   wn_data.mvert = mvert;
   wn_data.vert_normals = BKE_mesh_vertex_normals_ensure(result);
   wn_data.medge = medge;
-
   wn_data.sharp_edges = sharp_edges.span.data();
 
   wn_data.mloop = mloop;



More information about the Bf-blender-cvs mailing list