Cleanup: Use function to mark mesh normals dirty
This commit is contained in:
@@ -2064,7 +2064,7 @@ static Mesh *dynamicPaint_Modifier_apply(DynamicPaintModifierData *pmd, Object *
|
||||
}
|
||||
|
||||
if (update_normals) {
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
}
|
||||
}
|
||||
/* make a copy of mesh to use as brush data */
|
||||
|
||||
@@ -3573,7 +3573,7 @@ static Mesh *create_smoke_geometry(FluidDomainSettings *fds, Mesh *orgmesh, Obje
|
||||
}
|
||||
|
||||
BKE_mesh_calc_edges(result, false, false);
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -926,7 +926,7 @@ static void tag_normals_dirty_when_writing_position(GeometryComponent &component
|
||||
{
|
||||
Mesh *mesh = get_mesh_from_component_for_write(component);
|
||||
if (mesh != nullptr) {
|
||||
mesh->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(mesh);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1859,7 +1859,7 @@ void BKE_mesh_vert_coords_apply(Mesh *mesh, const float (*vert_coords)[3])
|
||||
for (int i = 0; i < mesh->totvert; i++, mv++) {
|
||||
copy_v3_v3(mv->co, vert_coords[i]);
|
||||
}
|
||||
mesh->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(mesh);
|
||||
}
|
||||
|
||||
void BKE_mesh_vert_coords_apply_with_mat4(Mesh *mesh,
|
||||
@@ -1872,7 +1872,7 @@ void BKE_mesh_vert_coords_apply_with_mat4(Mesh *mesh,
|
||||
for (int i = 0; i < mesh->totvert; i++, mv++) {
|
||||
mul_v3_m4v3(mv->co, mat, vert_coords[i]);
|
||||
}
|
||||
mesh->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(mesh);
|
||||
}
|
||||
|
||||
void BKE_mesh_vert_normals_apply(Mesh *mesh, const short (*vert_normals)[3])
|
||||
|
||||
@@ -525,7 +525,7 @@ Mesh *BKE_mesh_new_nomain_from_curve_displist(const Object *ob, const ListBase *
|
||||
}
|
||||
|
||||
mesh = BKE_mesh_new_nomain(totvert, totedge, 0, totloop, totpoly);
|
||||
mesh->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(mesh);
|
||||
|
||||
if (totvert != 0) {
|
||||
memcpy(mesh->mvert, allvert, totvert * sizeof(MVert));
|
||||
|
||||
@@ -1232,7 +1232,7 @@ Mesh *BKE_subdiv_to_mesh(Subdiv *subdiv,
|
||||
// BKE_mesh_validate(result, true, true);
|
||||
BKE_subdiv_stats_end(&subdiv->stats, SUBDIV_STATS_SUBDIV_TO_MESH);
|
||||
if (!subdiv_context.can_evaluate_normals) {
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
}
|
||||
/* Free used memory. */
|
||||
subdiv_mesh_context_free(&subdiv_context);
|
||||
|
||||
@@ -1300,7 +1300,7 @@ static void sculpt_gesture_apply_trim(SculptGestureContext *sgcontext)
|
||||
}),
|
||||
sculpt_mesh);
|
||||
BM_mesh_free(bm);
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
BKE_mesh_nomain_to_mesh(
|
||||
result, sgcontext->vc.obact->data, sgcontext->vc.obact, &CD_MASK_MESH, true);
|
||||
}
|
||||
|
||||
@@ -786,7 +786,7 @@ static Mesh *arrayModifier_doArray(ArrayModifierData *amd,
|
||||
* TODO: we may need to set other dirty flags as well?
|
||||
*/
|
||||
if (use_recalc_normals) {
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
}
|
||||
|
||||
if (vgroup_start_cap_remap) {
|
||||
|
||||
@@ -243,7 +243,7 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *
|
||||
|
||||
BM_mesh_free(bm);
|
||||
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ static Mesh *get_quick_mesh(
|
||||
mul_m4_v3(omat, mv->co);
|
||||
}
|
||||
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -506,7 +506,7 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *
|
||||
result = BKE_mesh_from_bmesh_for_eval_nomain(bm, nullptr, mesh);
|
||||
|
||||
BM_mesh_free(bm);
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
}
|
||||
|
||||
if (result == nullptr) {
|
||||
@@ -541,7 +541,7 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *
|
||||
|
||||
result = BKE_mesh_from_bmesh_for_eval_nomain(bm, nullptr, mesh);
|
||||
BM_mesh_free(bm);
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -281,7 +281,7 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, struct
|
||||
MEM_freeN(faceMap);
|
||||
|
||||
if (mesh->runtime.cd_dirty_vert & CD_MASK_NORMAL) {
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
}
|
||||
|
||||
/* TODO(sybren): also copy flags & tags? */
|
||||
|
||||
@@ -222,7 +222,7 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *
|
||||
TIMEIT_END(decim);
|
||||
#endif
|
||||
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ Mesh *doEdgeSplit(const Mesh *mesh, EdgeSplitModifierData *emd)
|
||||
result = BKE_mesh_from_bmesh_for_eval_nomain(bm, NULL, mesh);
|
||||
BM_mesh_free(bm);
|
||||
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -814,8 +814,7 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *UNUSED(ctx)
|
||||
}
|
||||
|
||||
BKE_mesh_calc_edges_loose(result);
|
||||
/* Tag to recalculate normals later. */
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *
|
||||
result = mirrorModifier__doMirror(mmd, ctx->object, mesh);
|
||||
|
||||
if (result != mesh) {
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -450,7 +450,7 @@ static void normalEditModifier_do_directional(NormalEditModifierData *enmd,
|
||||
|
||||
if (do_polynors_fix &&
|
||||
polygons_check_flip(mloop, nos, &mesh->ldata, mpoly, polynors, num_polys)) {
|
||||
mesh->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(mesh);
|
||||
}
|
||||
|
||||
BKE_mesh_normals_loop_custom_set(mvert,
|
||||
|
||||
@@ -317,7 +317,7 @@ static Mesh *generate_ocean_geometry(OceanModifierData *omd, Mesh *mesh_orig, co
|
||||
}
|
||||
}
|
||||
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -510,7 +510,7 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *
|
||||
result = doOcean(md, ctx, mesh);
|
||||
|
||||
if (result != mesh) {
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
@@ -545,7 +545,7 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *
|
||||
MEM_SAFE_FREE(vert_part_index);
|
||||
MEM_SAFE_FREE(vert_part_value);
|
||||
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -220,7 +220,7 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *UNUSED(ctx)
|
||||
|
||||
BKE_mesh_copy_parameters_for_eval(result, mesh);
|
||||
BKE_mesh_calc_edges(result, true, false);
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -1135,12 +1135,12 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *
|
||||
ob_axis != NULL ? mtx_tx[3] : NULL,
|
||||
ltmd->merge_dist);
|
||||
if (result != result_prev) {
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
}
|
||||
}
|
||||
|
||||
if ((ltmd->flag & MOD_SCREW_NORMAL_CALC) == 0) {
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
@@ -1960,7 +1960,7 @@ static Mesh *base_skin(Mesh *origmesh, SkinModifierData *smd, eSkinErrorFlag *r_
|
||||
result = BKE_mesh_from_bmesh_for_eval_nomain(bm, NULL, origmesh);
|
||||
BM_mesh_free(bm);
|
||||
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
|
||||
skin_set_orig_indices(result);
|
||||
|
||||
|
||||
@@ -988,7 +988,7 @@ Mesh *MOD_solidify_extrude_modifyMesh(ModifierData *md, const ModifierEvalContex
|
||||
|
||||
/* must recalculate normals with vgroups since they can displace unevenly T26888. */
|
||||
if ((mesh->runtime.cd_dirty_vert & CD_MASK_NORMAL) || do_rim || dvert) {
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
}
|
||||
else if (do_shell) {
|
||||
uint i;
|
||||
|
||||
@@ -1955,7 +1955,7 @@ Mesh *MOD_solidify_nonmanifold_modifyMesh(ModifierData *md,
|
||||
}
|
||||
}
|
||||
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
|
||||
/* Make edges. */
|
||||
{
|
||||
|
||||
@@ -107,7 +107,7 @@ Mesh *triangulate_mesh(Mesh *mesh,
|
||||
me->flag |= ME_EDGEDRAW | ME_EDGERENDER;
|
||||
}
|
||||
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -216,7 +216,6 @@ Mesh *MOD_deform_mesh_eval_get(Object *ob,
|
||||
* we really need vertexCos here. */
|
||||
else if (vertexCos) {
|
||||
BKE_mesh_vert_coords_apply(mesh, vertexCos);
|
||||
mesh->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
}
|
||||
|
||||
if (use_orco) {
|
||||
|
||||
@@ -1979,8 +1979,7 @@ static Mesh *weldModifier_doWeld(WeldModifierData *wmd,
|
||||
BLI_assert(loop_cur == result_nloops);
|
||||
|
||||
/* is this needed? */
|
||||
/* recalculate normals */
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
|
||||
weld_mesh_context_free(&weld_mesh);
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ static Mesh *WireframeModifier_do(WireframeModifierData *wmd, Object *ob, Mesh *
|
||||
result = BKE_mesh_from_bmesh_for_eval_nomain(bm, NULL, mesh);
|
||||
BM_mesh_free(bm);
|
||||
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -294,8 +294,7 @@ static Mesh *curve_to_mesh_calculate(const CurveEval &curve, const CurveEval &pr
|
||||
BKE_id_material_eval_ensure_default_slot(&mesh->id);
|
||||
mesh->flag |= ME_AUTOSMOOTH;
|
||||
mesh->smoothresh = DEG2RADF(180.0f);
|
||||
mesh->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
mesh->runtime.cd_dirty_poly |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(mesh);
|
||||
|
||||
threading::parallel_for(curves.index_range(), 128, [&](IndexRange curves_range) {
|
||||
for (const int i_spline : curves_range) {
|
||||
|
||||
@@ -559,7 +559,7 @@ static Mesh *delete_mesh_selection(const Mesh &mesh_in,
|
||||
mesh_in, *result, vertex_map, edge_map, selected_poly_indices, new_loop_starts);
|
||||
BKE_mesh_calc_edges_loose(result);
|
||||
/* Tag to recalculate normals later. */
|
||||
result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -69,8 +69,7 @@ void transform_mesh(Mesh *mesh,
|
||||
else {
|
||||
const float4x4 matrix = float4x4::from_loc_eul_scale(translation, rotation, scale);
|
||||
BKE_mesh_transform(mesh, matrix.values, false);
|
||||
mesh->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
|
||||
mesh->runtime.cd_dirty_poly |= CD_MASK_NORMAL;
|
||||
BKE_mesh_normals_tag_dirty(mesh);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user