diff --git a/source/blender/blenkernel/BKE_curves.h b/source/blender/blenkernel/BKE_curves.h index 83a0ba201f8..1cd74cffe0b 100644 --- a/source/blender/blenkernel/BKE_curves.h +++ b/source/blender/blenkernel/BKE_curves.h @@ -28,7 +28,7 @@ bool BKE_curves_attribute_required(const struct Curves *curves, const char *name /* Depsgraph */ -struct Curves *BKE_curves_copy_for_eval(struct Curves *curves_src, bool reference); +struct Curves *BKE_curves_copy_for_eval(struct Curves *curves_src); void BKE_curves_data_update(struct Depsgraph *depsgraph, struct Scene *scene, diff --git a/source/blender/blenkernel/BKE_lib_id.h b/source/blender/blenkernel/BKE_lib_id.h index cb8b6e665af..889988cc7d9 100644 --- a/source/blender/blenkernel/BKE_lib_id.h +++ b/source/blender/blenkernel/BKE_lib_id.h @@ -152,8 +152,6 @@ enum { LIB_ID_COPY_CACHES = 1 << 18, /** Don't copy `id->adt`, used by ID data-block localization routines. */ LIB_ID_COPY_NO_ANIMDATA = 1 << 19, - /** Mesh: Reference CD data layers instead of doing real copy - USE WITH CAUTION! */ - LIB_ID_COPY_CD_REFERENCE = 1 << 20, /** Do not copy id->override_library, used by ID data-block override routines. */ LIB_ID_COPY_NO_LIB_OVERRIDE = 1 << 21, /** When copying local sub-data (like constraints or modifiers), do not set their "library diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h index 6e909a63b5b..578904dbcc2 100644 --- a/source/blender/blenkernel/BKE_mesh.h +++ b/source/blender/blenkernel/BKE_mesh.h @@ -158,15 +158,15 @@ void BKE_mesh_ensure_skin_customdata(struct Mesh *me); /** Add poly offsets to describe faces to a new mesh. */ void BKE_mesh_poly_offsets_ensure_alloc(struct Mesh *mesh); -struct Mesh *BKE_mesh_new_nomain(int verts_len, int edges_len, int loops_len, int polys_len); +struct Mesh *BKE_mesh_new_nomain(int verts_num, int edges_num, int polys_num, int loops_num); struct Mesh *BKE_mesh_new_nomain_from_template( - const struct Mesh *me_src, int verts_len, int edges_len, int loops_len, int polys_len); + const struct Mesh *me_src, int verts_num, int edges_num, int polys_num, int loops_num); struct Mesh *BKE_mesh_new_nomain_from_template_ex(const struct Mesh *me_src, - int verts_len, - int edges_len, - int tessface_len, - int loops_len, - int polys_len, + int verts_num, + int edges_num, + int tessface_num, + int polys_num, + int loops_num, struct CustomData_MeshMasks mask); void BKE_mesh_eval_delete(struct Mesh *mesh_eval); @@ -175,7 +175,7 @@ void BKE_mesh_eval_delete(struct Mesh *mesh_eval); * Performs copy for use during evaluation, * optional referencing original arrays to reduce memory. */ -struct Mesh *BKE_mesh_copy_for_eval(const struct Mesh *source, bool reference); +struct Mesh *BKE_mesh_copy_for_eval(const struct Mesh *source); /** * These functions construct a new Mesh, diff --git a/source/blender/blenkernel/BKE_pointcloud.h b/source/blender/blenkernel/BKE_pointcloud.h index 6eadac4cced..51ab0ab397e 100644 --- a/source/blender/blenkernel/BKE_pointcloud.h +++ b/source/blender/blenkernel/BKE_pointcloud.h @@ -70,8 +70,7 @@ void *BKE_pointcloud_add(struct Main *bmain, const char *name); void *BKE_pointcloud_add_default(struct Main *bmain, const char *name); struct PointCloud *BKE_pointcloud_new_nomain(int totpoint); void BKE_pointcloud_nomain_to_pointcloud(struct PointCloud *pointcloud_src, - struct PointCloud *pointcloud_dst, - bool take_ownership); + struct PointCloud *pointcloud_dst); struct BoundBox *BKE_pointcloud_boundbox_get(struct Object *ob); @@ -79,7 +78,7 @@ bool BKE_pointcloud_attribute_required(const struct PointCloud *pointcloud, cons /* Dependency Graph */ -struct PointCloud *BKE_pointcloud_copy_for_eval(struct PointCloud *pointcloud_src, bool reference); +struct PointCloud *BKE_pointcloud_copy_for_eval(struct PointCloud *pointcloud_src); void BKE_pointcloud_data_update(struct Depsgraph *depsgraph, struct Scene *scene, diff --git a/source/blender/blenkernel/BKE_volume.h b/source/blender/blenkernel/BKE_volume.h index 42af44a299e..7c4e6a69d43 100644 --- a/source/blender/blenkernel/BKE_volume.h +++ b/source/blender/blenkernel/BKE_volume.h @@ -130,7 +130,7 @@ void BKE_volume_grid_transform_matrix_set(const struct Volume *volume, * file path. Grids are shared with the source data-block, not copied. */ struct Volume *BKE_volume_new_for_eval(const struct Volume *volume_src); -struct Volume *BKE_volume_copy_for_eval(struct Volume *volume_src, bool reference); +struct Volume *BKE_volume_copy_for_eval(struct Volume *volume_src); struct VolumeGrid *BKE_volume_grid_add(struct Volume *volume, const char *name, diff --git a/source/blender/blenkernel/intern/DerivedMesh.cc b/source/blender/blenkernel/intern/DerivedMesh.cc index 89802d9cb71..023d062b9dd 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.cc +++ b/source/blender/blenkernel/intern/DerivedMesh.cc @@ -380,7 +380,7 @@ static Mesh *create_orco_mesh(Object *ob, Mesh *me, BMEditMesh *em, int layer) BKE_mesh_ensure_default_orig_index_customdata(mesh); } else { - mesh = BKE_mesh_copy_for_eval(me, true); + mesh = BKE_mesh_copy_for_eval(me); } orco = get_orco_coords(ob, em, layer, &free); @@ -654,7 +654,7 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph, if (ob->modifier_flag & OB_MODIFIER_FLAG_ADD_REST_POSITION) { if (mesh_final == nullptr) { - mesh_final = BKE_mesh_copy_for_eval(mesh_input, true); + mesh_final = BKE_mesh_copy_for_eval(mesh_input); ASSERT_IS_VALID_MESH(mesh_final); } MutableAttributeAccessor attributes = mesh_final->attributes_for_write(); @@ -685,7 +685,7 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph, if (mti->type == eModifierTypeType_OnlyDeform && !sculpt_dyntopo) { blender::bke::ScopedModifierTimer modifier_timer{*md}; if (!mesh_final) { - mesh_final = BKE_mesh_copy_for_eval(mesh_input, true); + mesh_final = BKE_mesh_copy_for_eval(mesh_input); ASSERT_IS_VALID_MESH(mesh_final); } BKE_modifier_deform_verts(md, @@ -703,12 +703,7 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph, * places that wish to use the original mesh but with deformed * coordinates (like vertex paint). */ if (r_deform) { - if (mesh_final) { - mesh_deform = BKE_mesh_copy_for_eval(mesh_final, false); - } - else { - mesh_deform = BKE_mesh_copy_for_eval(mesh_input, false); - } + mesh_deform = BKE_mesh_copy_for_eval(mesh_final ? mesh_final : mesh_input); } } @@ -779,7 +774,7 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph, if (mti->type == eModifierTypeType_OnlyDeform) { if (!mesh_final) { - mesh_final = BKE_mesh_copy_for_eval(mesh_input, true); + mesh_final = BKE_mesh_copy_for_eval(mesh_input); ASSERT_IS_VALID_MESH(mesh_final); } BKE_modifier_deform_verts(md, @@ -798,7 +793,7 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph, } } else { - mesh_final = BKE_mesh_copy_for_eval(mesh_input, true); + mesh_final = BKE_mesh_copy_for_eval(mesh_input); ASSERT_IS_VALID_MESH(mesh_final); check_for_needs_mapping = true; } @@ -966,7 +961,7 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph, mesh_final = mesh_input; } else { - mesh_final = BKE_mesh_copy_for_eval(mesh_input, true); + mesh_final = BKE_mesh_copy_for_eval(mesh_input); } } @@ -1011,7 +1006,7 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph, /* Not yet finalized by any instance, do it now * Isolate since computing normals is multithreaded and we are holding a lock. */ blender::threading::isolate_task([&] { - mesh_final = BKE_mesh_copy_for_eval(mesh_input, true); + mesh_final = BKE_mesh_copy_for_eval(mesh_input); mesh_calc_modifier_final_normals( mesh_input, &final_datamask, sculpt_dyntopo, mesh_final); mesh_calc_finalize(mesh_input, mesh_final); @@ -1026,7 +1021,7 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph, else if (!mesh_has_modifier_final_normals(mesh_input, &final_datamask, runtime->mesh_eval)) { /* Modifier stack was (re-)evaluated with a request for additional normals * different than the instanced mesh, can't instance anymore now. */ - mesh_final = BKE_mesh_copy_for_eval(mesh_input, true); + mesh_final = BKE_mesh_copy_for_eval(mesh_input); mesh_calc_modifier_final_normals(mesh_input, &final_datamask, sculpt_dyntopo, mesh_final); mesh_calc_finalize(mesh_input, mesh_final); } @@ -1255,7 +1250,7 @@ static void editbmesh_calc_modifiers(struct Depsgraph *depsgraph, /* apply vertex coordinates or build a DerivedMesh as necessary */ if (mesh_final) { if (deformed_verts) { - Mesh *mesh_tmp = BKE_mesh_copy_for_eval(mesh_final, false); + Mesh *mesh_tmp = BKE_mesh_copy_for_eval(mesh_final); if (mesh_final != mesh_cage) { BKE_id_free(nullptr, mesh_final); } @@ -1264,7 +1259,7 @@ static void editbmesh_calc_modifiers(struct Depsgraph *depsgraph, } else if (mesh_final == mesh_cage) { /* 'me' may be changed by this modifier, so we need to copy it. */ - mesh_final = BKE_mesh_copy_for_eval(mesh_final, false); + mesh_final = BKE_mesh_copy_for_eval(mesh_final); } } else { @@ -1337,7 +1332,7 @@ static void editbmesh_calc_modifiers(struct Depsgraph *depsgraph, if (r_cage && i == cageIndex) { if (mesh_final && deformed_verts) { - mesh_cage = BKE_mesh_copy_for_eval(mesh_final, false); + mesh_cage = BKE_mesh_copy_for_eval(mesh_final); BKE_mesh_vert_coords_apply(mesh_cage, deformed_verts); } else if (mesh_final) { @@ -1373,7 +1368,7 @@ static void editbmesh_calc_modifiers(struct Depsgraph *depsgraph, if (mesh_final) { if (deformed_verts) { if (mesh_final == mesh_cage) { - mesh_final = BKE_mesh_copy_for_eval(mesh_final, false); + mesh_final = BKE_mesh_copy_for_eval(mesh_final); } BKE_mesh_vert_coords_apply(mesh_final, deformed_verts); } diff --git a/source/blender/blenkernel/intern/cloth.cc b/source/blender/blenkernel/intern/cloth.cc index 1c27b8b2989..7e9aea008c4 100644 --- a/source/blender/blenkernel/intern/cloth.cc +++ b/source/blender/blenkernel/intern/cloth.cc @@ -1176,7 +1176,7 @@ static void cloth_update_verts(Object *ob, ClothModifierData *clmd, Mesh *mesh) static Mesh *cloth_make_rest_mesh(ClothModifierData *clmd, Mesh *mesh) { using namespace blender; - Mesh *new_mesh = BKE_mesh_copy_for_eval(mesh, false); + Mesh *new_mesh = BKE_mesh_copy_for_eval(mesh); ClothVertex *verts = clmd->clothObject->verts; MutableSpan positions = mesh->vert_positions_for_write(); diff --git a/source/blender/blenkernel/intern/crazyspace.cc b/source/blender/blenkernel/intern/crazyspace.cc index 0dc5004cf2a..7202066b563 100644 --- a/source/blender/blenkernel/intern/crazyspace.cc +++ b/source/blender/blenkernel/intern/crazyspace.cc @@ -389,7 +389,7 @@ int BKE_sculpt_get_first_deform_matrices(struct Depsgraph *depsgraph, if (defmats == nullptr) { /* NOTE: Evaluated object is re-set to its original un-deformed state. */ Mesh *me = static_cast(object_eval.data); - me_eval = BKE_mesh_copy_for_eval(me, true); + me_eval = BKE_mesh_copy_for_eval(me); crazyspace_init_verts_and_matrices(me_eval, &defmats, &deformedVerts); } @@ -470,7 +470,7 @@ void BKE_crazyspace_build_sculpt(struct Depsgraph *depsgraph, } if (mesh_eval == nullptr) { - mesh_eval = BKE_mesh_copy_for_eval(mesh, true); + mesh_eval = BKE_mesh_copy_for_eval(mesh); } mti->deformVerts(md, &mectx, mesh_eval, deformedVerts, mesh_eval->totvert); diff --git a/source/blender/blenkernel/intern/curve_to_mesh_convert.cc b/source/blender/blenkernel/intern/curve_to_mesh_convert.cc index 45bbca42871..484ed7e71a0 100644 --- a/source/blender/blenkernel/intern/curve_to_mesh_convert.cc +++ b/source/blender/blenkernel/intern/curve_to_mesh_convert.cc @@ -691,7 +691,7 @@ Mesh *curve_to_mesh_sweep(const CurvesGeometry &main, } Mesh *mesh = BKE_mesh_new_nomain( - offsets.vert.last(), offsets.edge.last(), offsets.loop.last(), offsets.poly.last()); + offsets.vert.last(), offsets.edge.last(), offsets.poly.last(), offsets.loop.last()); mesh->flag |= ME_AUTOSMOOTH; mesh->smoothresh = DEG2RADF(180.0f); MutableSpan positions = mesh->vert_positions_for_write(); diff --git a/source/blender/blenkernel/intern/curves.cc b/source/blender/blenkernel/intern/curves.cc index 59866c40e05..b8af50dc1f5 100644 --- a/source/blender/blenkernel/intern/curves.cc +++ b/source/blender/blenkernel/intern/curves.cc @@ -220,16 +220,10 @@ bool BKE_curves_attribute_required(const Curves * /*curves*/, const char *name) return STREQ(name, ATTR_POSITION); } -Curves *BKE_curves_copy_for_eval(Curves *curves_src, bool reference) +Curves *BKE_curves_copy_for_eval(Curves *curves_src) { - int flags = LIB_ID_COPY_LOCALIZE; - - if (reference) { - flags |= LIB_ID_COPY_CD_REFERENCE; - } - - Curves *result = (Curves *)BKE_id_copy_ex(nullptr, &curves_src->id, nullptr, flags); - return result; + return reinterpret_cast( + BKE_id_copy_ex(nullptr, &curves_src->id, nullptr, LIB_ID_COPY_LOCALIZE)); } static void curves_evaluate_modifiers(struct Depsgraph *depsgraph, diff --git a/source/blender/blenkernel/intern/dynamicpaint.cc b/source/blender/blenkernel/intern/dynamicpaint.cc index 41c2645da5b..3b107c04118 100644 --- a/source/blender/blenkernel/intern/dynamicpaint.cc +++ b/source/blender/blenkernel/intern/dynamicpaint.cc @@ -1904,7 +1904,7 @@ static void dynamic_paint_apply_surface_wave_cb(void *__restrict userdata, */ static Mesh *dynamicPaint_Modifier_apply(DynamicPaintModifierData *pmd, Object *ob, Mesh *mesh) { - Mesh *result = BKE_mesh_copy_for_eval(mesh, false); + Mesh *result = BKE_mesh_copy_for_eval(mesh); if (pmd->canvas && !(pmd->canvas->flags & MOD_DPAINT_BAKING) && pmd->type == MOD_DYNAMICPAINT_TYPE_CANVAS) { @@ -2049,7 +2049,7 @@ static Mesh *dynamicPaint_Modifier_apply(DynamicPaintModifierData *pmd, Object * if (runtime_data->brush_mesh != nullptr) { BKE_id_free(nullptr, runtime_data->brush_mesh); } - runtime_data->brush_mesh = BKE_mesh_copy_for_eval(result, false); + runtime_data->brush_mesh = BKE_mesh_copy_for_eval(result); } return result; @@ -2070,7 +2070,7 @@ static void canvas_copyMesh(DynamicPaintCanvasSettings *canvas, Mesh *mesh) BKE_id_free(nullptr, runtime->canvas_mesh); } - runtime->canvas_mesh = BKE_mesh_copy_for_eval(mesh, false); + runtime->canvas_mesh = BKE_mesh_copy_for_eval(mesh); } /* @@ -3796,7 +3796,7 @@ static void dynamicPaint_brushMeshCalculateVelocity(Depsgraph *depsgraph, SUBFRAME_RECURSION, BKE_scene_ctime_get(scene), eModifierType_DynamicPaint); - mesh_p = BKE_mesh_copy_for_eval(dynamicPaint_brush_mesh_get(brush), false); + mesh_p = BKE_mesh_copy_for_eval(dynamicPaint_brush_mesh_get(brush)); numOfVerts_p = mesh_p->totvert; float(*positions_p)[3] = BKE_mesh_vert_positions_for_write(mesh_p); @@ -4282,7 +4282,7 @@ static bool dynamicPaint_paintMesh(Depsgraph *depsgraph, Bounds3D mesh_bb = {{0}}; VolumeGrid *grid = bData->grid; - mesh = BKE_mesh_copy_for_eval(brush_mesh, false); + mesh = BKE_mesh_copy_for_eval(brush_mesh); float(*positions)[3] = BKE_mesh_vert_positions_for_write(mesh); const blender::Span vert_normals = mesh->vert_normals(); const blender::Span corner_verts = mesh->corner_verts(); diff --git a/source/blender/blenkernel/intern/fluid.cc b/source/blender/blenkernel/intern/fluid.cc index 88105132d83..a45bf709b31 100644 --- a/source/blender/blenkernel/intern/fluid.cc +++ b/source/blender/blenkernel/intern/fluid.cc @@ -1003,7 +1003,7 @@ static void obstacles_from_mesh(Object *coll_ob, float *vert_vel = nullptr; bool has_velocity = false; - Mesh *me = BKE_mesh_copy_for_eval(fes->mesh, false); + Mesh *me = BKE_mesh_copy_for_eval(fes->mesh); float(*positions)[3] = BKE_mesh_vert_positions_for_write(me); int min[3], max[3], res[3]; @@ -2062,7 +2062,7 @@ static void emit_from_mesh( /* Copy mesh for thread safety as we modify it. * Main issue is its VertArray being modified, then replaced and freed. */ - Mesh *me = BKE_mesh_copy_for_eval(ffs->mesh, false); + Mesh *me = BKE_mesh_copy_for_eval(ffs->mesh); float(*positions)[3] = BKE_mesh_vert_positions_for_write(me); const blender::Span corner_verts = me->corner_verts(); @@ -3229,7 +3229,7 @@ static Mesh *create_liquid_geometry(FluidDomainSettings *fds, return nullptr; } - me = BKE_mesh_new_nomain(num_verts, 0, num_faces * 3, num_faces); + me = BKE_mesh_new_nomain(num_verts, 0, num_faces, num_faces * 3); if (!me) { return nullptr; } @@ -3364,10 +3364,10 @@ static Mesh *create_smoke_geometry(FluidDomainSettings *fds, Mesh *orgmesh, Obje /* Just copy existing mesh if there is no content or if the adaptive domain is not being used. */ if (fds->total_cells <= 1 || (fds->flags & FLUID_DOMAIN_USE_ADAPTIVE_DOMAIN) == 0) { - return BKE_mesh_copy_for_eval(orgmesh, false); + return BKE_mesh_copy_for_eval(orgmesh); } - result = BKE_mesh_new_nomain(num_verts, 0, num_faces * 4, num_faces); + result = BKE_mesh_new_nomain(num_verts, 0, num_faces, num_faces * 4); float(*positions)[3] = BKE_mesh_vert_positions_for_write(result); blender::MutableSpan poly_offsets = result->poly_offsets_for_write(); blender::MutableSpan corner_verts = result->corner_verts_for_write(); @@ -3590,7 +3590,7 @@ static void fluid_modifier_processFlow(FluidModifierData *fmd, if (fmd->flow->mesh) { BKE_id_free(nullptr, fmd->flow->mesh); } - fmd->flow->mesh = BKE_mesh_copy_for_eval(me, false); + fmd->flow->mesh = BKE_mesh_copy_for_eval(me); } if (scene_framenr > fmd->time) { @@ -3617,7 +3617,7 @@ static void fluid_modifier_processEffector(FluidModifierData *fmd, if (fmd->effector->mesh) { BKE_id_free(nullptr, fmd->effector->mesh); } - fmd->effector->mesh = BKE_mesh_copy_for_eval(me, false); + fmd->effector->mesh = BKE_mesh_copy_for_eval(me); } if (scene_framenr > fmd->time) { @@ -4125,7 +4125,7 @@ Mesh *BKE_fluid_modifier_do( } if (!result) { - result = BKE_mesh_copy_for_eval(me, false); + result = BKE_mesh_copy_for_eval(me); } else { BKE_mesh_copy_parameters_for_eval(result, me); diff --git a/source/blender/blenkernel/intern/geometry_component_curves.cc b/source/blender/blenkernel/intern/geometry_component_curves.cc index eb185d979a8..62f8e50a3b7 100644 --- a/source/blender/blenkernel/intern/geometry_component_curves.cc +++ b/source/blender/blenkernel/intern/geometry_component_curves.cc @@ -33,7 +33,7 @@ GeometryComponent *CurveComponent::copy() const { CurveComponent *new_component = new CurveComponent(); if (curves_ != nullptr) { - new_component->curves_ = BKE_curves_copy_for_eval(curves_, false); + new_component->curves_ = BKE_curves_copy_for_eval(curves_); new_component->ownership_ = GeometryOwnershipType::Owned; } return new_component; @@ -87,7 +87,7 @@ Curves *CurveComponent::get_for_write() { BLI_assert(this->is_mutable()); if (ownership_ == GeometryOwnershipType::ReadOnly) { - curves_ = BKE_curves_copy_for_eval(curves_, false); + curves_ = BKE_curves_copy_for_eval(curves_); ownership_ = GeometryOwnershipType::Owned; } return curves_; @@ -107,7 +107,7 @@ void CurveComponent::ensure_owns_direct_data() { BLI_assert(this->is_mutable()); if (ownership_ != GeometryOwnershipType::Owned) { - curves_ = BKE_curves_copy_for_eval(curves_, false); + curves_ = BKE_curves_copy_for_eval(curves_); ownership_ = GeometryOwnershipType::Owned; } } diff --git a/source/blender/blenkernel/intern/geometry_component_mesh.cc b/source/blender/blenkernel/intern/geometry_component_mesh.cc index 0f70d9ac48a..62bc979eb6e 100644 --- a/source/blender/blenkernel/intern/geometry_component_mesh.cc +++ b/source/blender/blenkernel/intern/geometry_component_mesh.cc @@ -36,7 +36,7 @@ GeometryComponent *MeshComponent::copy() const { MeshComponent *new_component = new MeshComponent(); if (mesh_ != nullptr) { - new_component->mesh_ = BKE_mesh_copy_for_eval(mesh_, false); + new_component->mesh_ = BKE_mesh_copy_for_eval(mesh_); new_component->ownership_ = GeometryOwnershipType::Owned; } return new_component; @@ -83,7 +83,7 @@ Mesh *MeshComponent::get_for_write() { BLI_assert(this->is_mutable()); if (ownership_ == GeometryOwnershipType::ReadOnly) { - mesh_ = BKE_mesh_copy_for_eval(mesh_, false); + mesh_ = BKE_mesh_copy_for_eval(mesh_); ownership_ = GeometryOwnershipType::Owned; } return mesh_; @@ -103,7 +103,7 @@ void MeshComponent::ensure_owns_direct_data() { BLI_assert(this->is_mutable()); if (ownership_ != GeometryOwnershipType::Owned) { - mesh_ = BKE_mesh_copy_for_eval(mesh_, false); + mesh_ = BKE_mesh_copy_for_eval(mesh_); ownership_ = GeometryOwnershipType::Owned; } } diff --git a/source/blender/blenkernel/intern/geometry_component_pointcloud.cc b/source/blender/blenkernel/intern/geometry_component_pointcloud.cc index 267daad48d7..0e43a83ed31 100644 --- a/source/blender/blenkernel/intern/geometry_component_pointcloud.cc +++ b/source/blender/blenkernel/intern/geometry_component_pointcloud.cc @@ -23,7 +23,7 @@ GeometryComponent *PointCloudComponent::copy() const { PointCloudComponent *new_component = new PointCloudComponent(); if (pointcloud_ != nullptr) { - new_component->pointcloud_ = BKE_pointcloud_copy_for_eval(pointcloud_, false); + new_component->pointcloud_ = BKE_pointcloud_copy_for_eval(pointcloud_); new_component->ownership_ = GeometryOwnershipType::Owned; } return new_component; @@ -70,7 +70,7 @@ PointCloud *PointCloudComponent::get_for_write() { BLI_assert(this->is_mutable()); if (ownership_ == GeometryOwnershipType::ReadOnly) { - pointcloud_ = BKE_pointcloud_copy_for_eval(pointcloud_, false); + pointcloud_ = BKE_pointcloud_copy_for_eval(pointcloud_); ownership_ = GeometryOwnershipType::Owned; } return pointcloud_; @@ -90,7 +90,7 @@ void PointCloudComponent::ensure_owns_direct_data() { BLI_assert(this->is_mutable()); if (ownership_ != GeometryOwnershipType::Owned) { - pointcloud_ = BKE_pointcloud_copy_for_eval(pointcloud_, false); + pointcloud_ = BKE_pointcloud_copy_for_eval(pointcloud_); ownership_ = GeometryOwnershipType::Owned; } } diff --git a/source/blender/blenkernel/intern/geometry_component_volume.cc b/source/blender/blenkernel/intern/geometry_component_volume.cc index 405521675cc..9fdffdeb473 100644 --- a/source/blender/blenkernel/intern/geometry_component_volume.cc +++ b/source/blender/blenkernel/intern/geometry_component_volume.cc @@ -21,7 +21,7 @@ GeometryComponent *VolumeComponent::copy() const { VolumeComponent *new_component = new VolumeComponent(); if (volume_ != nullptr) { - new_component->volume_ = BKE_volume_copy_for_eval(volume_, false); + new_component->volume_ = BKE_volume_copy_for_eval(volume_); new_component->ownership_ = GeometryOwnershipType::Owned; } return new_component; @@ -68,7 +68,7 @@ Volume *VolumeComponent::get_for_write() { BLI_assert(this->is_mutable()); if (ownership_ == GeometryOwnershipType::ReadOnly) { - volume_ = BKE_volume_copy_for_eval(volume_, false); + volume_ = BKE_volume_copy_for_eval(volume_); ownership_ = GeometryOwnershipType::Owned; } return volume_; @@ -83,7 +83,7 @@ void VolumeComponent::ensure_owns_direct_data() { BLI_assert(this->is_mutable()); if (ownership_ != GeometryOwnershipType::Owned) { - volume_ = BKE_volume_copy_for_eval(volume_, false); + volume_ = BKE_volume_copy_for_eval(volume_); ownership_ = GeometryOwnershipType::Owned; } } diff --git a/source/blender/blenkernel/intern/mesh.cc b/source/blender/blenkernel/intern/mesh.cc index 538a4806bed..e14fa192c8a 100644 --- a/source/blender/blenkernel/intern/mesh.cc +++ b/source/blender/blenkernel/intern/mesh.cc @@ -1032,7 +1032,10 @@ static void mesh_ensure_cdlayers_primary(Mesh &mesh) } } -Mesh *BKE_mesh_new_nomain(int verts_len, int edges_len, int loops_len, int polys_len) +Mesh *BKE_mesh_new_nomain(const int verts_num, + const int edges_num, + const int polys_num, + const int loops_num) { Mesh *mesh = (Mesh *)BKE_libblock_alloc( nullptr, ID_ME, BKE_idtype_idcode_to_name(ID_ME), LIB_ID_CREATE_LOCALIZE); @@ -1042,13 +1045,13 @@ Mesh *BKE_mesh_new_nomain(int verts_len, int edges_len, int loops_len, int polys copy_vn_i(mesh->vdata.typemap, CD_NUMTYPES, -1); copy_vn_i(mesh->edata.typemap, CD_NUMTYPES, -1); copy_vn_i(mesh->fdata.typemap, CD_NUMTYPES, -1); - copy_vn_i(mesh->ldata.typemap, CD_NUMTYPES, -1); copy_vn_i(mesh->pdata.typemap, CD_NUMTYPES, -1); + copy_vn_i(mesh->ldata.typemap, CD_NUMTYPES, -1); - mesh->totvert = verts_len; - mesh->totedge = edges_len; - mesh->totloop = loops_len; - mesh->totpoly = polys_len; + mesh->totvert = verts_num; + mesh->totedge = edges_num; + mesh->totpoly = polys_num; + mesh->totloop = loops_num; mesh_ensure_cdlayers_primary(*mesh); BKE_mesh_poly_offsets_ensure_alloc(mesh); @@ -1112,35 +1115,35 @@ void BKE_mesh_copy_parameters_for_eval(Mesh *me_dst, const Mesh *me_src) } Mesh *BKE_mesh_new_nomain_from_template_ex(const Mesh *me_src, - int verts_len, - int edges_len, - int tessface_len, - int loops_len, - int polys_len, - CustomData_MeshMasks mask) + const int verts_num, + const int edges_num, + const int tessface_num, + const int polys_num, + const int loops_num, + const CustomData_MeshMasks mask) { /* Only do tessface if we are creating tessfaces or copying from mesh with only tessfaces. */ - const bool do_tessface = (tessface_len || ((me_src->totface != 0) && (me_src->totpoly == 0))); + const bool do_tessface = (tessface_num || ((me_src->totface != 0) && (me_src->totpoly == 0))); Mesh *me_dst = (Mesh *)BKE_id_new_nomain(ID_ME, nullptr); me_dst->mselect = (MSelect *)MEM_dupallocN(me_src->mselect); - me_dst->totvert = verts_len; - me_dst->totedge = edges_len; - me_dst->totface = tessface_len; - me_dst->totloop = loops_len; - me_dst->totpoly = polys_len; + me_dst->totvert = verts_num; + me_dst->totedge = edges_num; + me_dst->totpoly = polys_num; + me_dst->totloop = loops_num; + me_dst->totface = tessface_num; BKE_mesh_copy_parameters_for_eval(me_dst, me_src); - CustomData_copy_layout(&me_src->vdata, &me_dst->vdata, mask.vmask, CD_SET_DEFAULT, verts_len); - CustomData_copy_layout(&me_src->edata, &me_dst->edata, mask.emask, CD_SET_DEFAULT, edges_len); - CustomData_copy_layout(&me_src->ldata, &me_dst->ldata, mask.lmask, CD_SET_DEFAULT, loops_len); - CustomData_copy_layout(&me_src->pdata, &me_dst->pdata, mask.pmask, CD_SET_DEFAULT, polys_len); + CustomData_copy_layout(&me_src->vdata, &me_dst->vdata, mask.vmask, CD_SET_DEFAULT, verts_num); + CustomData_copy_layout(&me_src->edata, &me_dst->edata, mask.emask, CD_SET_DEFAULT, edges_num); + CustomData_copy_layout(&me_src->pdata, &me_dst->pdata, mask.pmask, CD_SET_DEFAULT, polys_num); + CustomData_copy_layout(&me_src->ldata, &me_dst->ldata, mask.lmask, CD_SET_DEFAULT, loops_num); if (do_tessface) { CustomData_copy_layout( - &me_src->fdata, &me_dst->fdata, mask.fmask, CD_SET_DEFAULT, tessface_len); + &me_src->fdata, &me_dst->fdata, mask.fmask, CD_SET_DEFAULT, tessface_num); } else { mesh_tessface_clear_intern(me_dst, false); @@ -1160,11 +1163,14 @@ Mesh *BKE_mesh_new_nomain_from_template_ex(const Mesh *me_src, return me_dst; } -Mesh *BKE_mesh_new_nomain_from_template( - const Mesh *me_src, int verts_len, int edges_len, int loops_len, int polys_len) +Mesh *BKE_mesh_new_nomain_from_template(const Mesh *me_src, + const int verts_num, + const int edges_num, + const int polys_num, + const int loops_num) { return BKE_mesh_new_nomain_from_template_ex( - me_src, verts_len, edges_len, 0, loops_len, polys_len, CD_MASK_EVERYTHING); + me_src, verts_num, edges_num, 0, polys_num, loops_num, CD_MASK_EVERYTHING); } void BKE_mesh_eval_delete(struct Mesh *mesh_eval) @@ -1176,16 +1182,10 @@ void BKE_mesh_eval_delete(struct Mesh *mesh_eval) MEM_freeN(mesh_eval); } -Mesh *BKE_mesh_copy_for_eval(const Mesh *source, bool reference) +Mesh *BKE_mesh_copy_for_eval(const Mesh *source) { - int flags = LIB_ID_COPY_LOCALIZE; - - if (reference) { - flags |= LIB_ID_COPY_CD_REFERENCE; - } - - Mesh *result = (Mesh *)BKE_id_copy_ex(nullptr, &source->id, nullptr, flags); - return result; + return reinterpret_cast( + BKE_id_copy_ex(nullptr, &source->id, nullptr, LIB_ID_COPY_LOCALIZE)); } BMesh *BKE_mesh_to_bmesh_ex(const Mesh *me, diff --git a/source/blender/blenkernel/intern/mesh_boolean_convert.cc b/source/blender/blenkernel/intern/mesh_boolean_convert.cc index cd7d7d88982..c00ba6d5008 100644 --- a/source/blender/blenkernel/intern/mesh_boolean_convert.cc +++ b/source/blender/blenkernel/intern/mesh_boolean_convert.cc @@ -700,7 +700,7 @@ static Mesh *imesh_to_mesh(IMesh *im, MeshesToIMeshInfo &mim) } /* Will calculate edges later. */ Mesh *result = BKE_mesh_new_nomain_from_template( - mim.meshes[0], out_totvert, 0, out_totloop, out_totpoly); + mim.meshes[0], out_totvert, 0, out_totpoly, out_totloop); merge_vertex_loop_poly_customdata_layers(result, mim); /* Set the vertex coordinate values and other data. */ diff --git a/source/blender/blenkernel/intern/mesh_convert.cc b/source/blender/blenkernel/intern/mesh_convert.cc index 2daf9fb6443..40dbc03586f 100644 --- a/source/blender/blenkernel/intern/mesh_convert.cc +++ b/source/blender/blenkernel/intern/mesh_convert.cc @@ -113,7 +113,7 @@ static Mesh *mesh_nurbs_displist_to_mesh(const Curve *cu, const ListBase *dispba return BKE_mesh_new_nomain(0, 0, 0, 0); } - Mesh *mesh = BKE_mesh_new_nomain(totvert, totedge, totloop, totpoly); + Mesh *mesh = BKE_mesh_new_nomain(totvert, totedge, totpoly, totloop); MutableSpan positions = mesh->vert_positions_for_write(); MutableSpan edges = mesh->edges_for_write(); MutableSpan poly_offsets = mesh->poly_offsets_for_write(); @@ -693,7 +693,7 @@ static const Curves *get_evaluated_curves_from_object(const Object *object) static Mesh *mesh_new_from_evaluated_curve_type_object(const Object *evaluated_object) { if (const Mesh *mesh = BKE_object_get_evaluated_mesh(evaluated_object)) { - return BKE_mesh_copy_for_eval(mesh, false); + return BKE_mesh_copy_for_eval(mesh); } if (const Curves *curves = get_evaluated_curves_from_object(evaluated_object)) { const blender::bke::AnonymousAttributePropagationInfo propagation_info; @@ -752,7 +752,7 @@ static Mesh *mesh_new_from_mball_object(Object *object) return (Mesh *)BKE_id_new_nomain(ID_ME, ((ID *)object->data)->name + 2); } - return BKE_mesh_copy_for_eval(mesh_eval, false); + return BKE_mesh_copy_for_eval(mesh_eval); } static Mesh *mesh_new_from_mesh(Object *object, Mesh *mesh) diff --git a/source/blender/blenkernel/intern/mesh_legacy_convert.cc b/source/blender/blenkernel/intern/mesh_legacy_convert.cc index 151bcf67b79..116e3db14bf 100644 --- a/source/blender/blenkernel/intern/mesh_legacy_convert.cc +++ b/source/blender/blenkernel/intern/mesh_legacy_convert.cc @@ -2197,7 +2197,10 @@ void BKE_mesh_legacy_attribute_strings_to_flags(Mesh *mesh) CustomData_clear_layer_flag( vdata, CD_PROP_BYTE_COLOR, CD_FLAG_COLOR_ACTIVE | CD_FLAG_COLOR_RENDER); + CustomData_clear_layer_flag( + ldata, CD_PROP_BYTE_COLOR, CD_FLAG_COLOR_ACTIVE | CD_FLAG_COLOR_RENDER); CustomData_clear_layer_flag(ldata, CD_PROP_COLOR, CD_FLAG_COLOR_ACTIVE | CD_FLAG_COLOR_RENDER); + CustomData_clear_layer_flag(vdata, CD_PROP_COLOR, CD_FLAG_COLOR_ACTIVE | CD_FLAG_COLOR_RENDER); if (const char *name = mesh->active_color_attribute) { int i; diff --git a/source/blender/blenkernel/intern/mesh_mirror.cc b/source/blender/blenkernel/intern/mesh_mirror.cc index d2169960c97..7ad5b5d2907 100644 --- a/source/blender/blenkernel/intern/mesh_mirror.cc +++ b/source/blender/blenkernel/intern/mesh_mirror.cc @@ -191,7 +191,7 @@ Mesh *BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(MirrorModifierData *mmd, const int src_loops_num = mesh->totloop; Mesh *result = BKE_mesh_new_nomain_from_template( - mesh, src_verts_num * 2, src_edges_num * 2, src_loops_num * 2, src_polys.size() * 2); + mesh, src_verts_num * 2, src_edges_num * 2, src_polys.size() * 2, src_loops_num * 2); /* Copy custom-data to original geometry. */ CustomData_copy_data(&mesh->vdata, &result->vdata, 0, 0, src_verts_num); diff --git a/source/blender/blenkernel/intern/mesh_remesh_voxel.cc b/source/blender/blenkernel/intern/mesh_remesh_voxel.cc index aa0aecb676f..be66df2e7e0 100644 --- a/source/blender/blenkernel/intern/mesh_remesh_voxel.cc +++ b/source/blender/blenkernel/intern/mesh_remesh_voxel.cc @@ -117,7 +117,7 @@ static Mesh *remesh_quadriflow(const Mesh *input_mesh, } /* Construct the new output mesh */ - Mesh *mesh = BKE_mesh_new_nomain(qrd.out_totverts, 0, qrd.out_totfaces * 4, qrd.out_totfaces); + Mesh *mesh = BKE_mesh_new_nomain(qrd.out_totverts, 0, qrd.out_totfaces, qrd.out_totfaces * 4); BKE_mesh_copy_parameters(mesh, input_mesh); MutableSpan poly_offsets = mesh->poly_offsets_for_write(); MutableSpan corner_verts = mesh->corner_verts_for_write(); @@ -222,7 +222,7 @@ static Mesh *remesh_voxel_volume_to_mesh(const openvdb::FloatGrid::Ptr level_set *level_set_grid, vertices, tris, quads, isovalue, adaptivity, relax_disoriented_triangles); Mesh *mesh = BKE_mesh_new_nomain( - vertices.size(), 0, quads.size() * 4 + tris.size() * 3, quads.size() + tris.size()); + vertices.size(), 0, quads.size() + tris.size(), quads.size() * 4 + tris.size() * 3); MutableSpan vert_positions = mesh->vert_positions_for_write(); MutableSpan poly_offsets = mesh->poly_offsets_for_write(); MutableSpan mesh_corner_verts = mesh->corner_verts_for_write(); @@ -317,8 +317,7 @@ void BKE_remesh_reproject_sculpt_face_sets(Mesh *target, const Mesh *source) const OffsetIndices target_polys = target->polys(); const Span target_corner_verts = target->corner_verts(); - const VArray src_face_sets = - * src_attributes.lookup(".sculpt_face_set", ATTR_DOMAIN_FACE); + const VArray src_face_sets = *src_attributes.lookup(".sculpt_face_set", ATTR_DOMAIN_FACE); if (!src_face_sets) { return; } diff --git a/source/blender/blenkernel/intern/multires.cc b/source/blender/blenkernel/intern/multires.cc index fde8f8b842f..0cd8cf5079c 100644 --- a/source/blender/blenkernel/intern/multires.cc +++ b/source/blender/blenkernel/intern/multires.cc @@ -241,7 +241,7 @@ Mesh *BKE_multires_create_mesh(struct Depsgraph *depsgraph, Mesh *result = mti->modifyMesh(&mmd->modifier, &modifier_ctx, deformed_mesh); if (result == deformed_mesh) { - result = BKE_mesh_copy_for_eval(deformed_mesh, true); + result = BKE_mesh_copy_for_eval(deformed_mesh); } return result; } diff --git a/source/blender/blenkernel/intern/pointcloud.cc b/source/blender/blenkernel/intern/pointcloud.cc index c342c82176a..f06d560955c 100644 --- a/source/blender/blenkernel/intern/pointcloud.cc +++ b/source/blender/blenkernel/intern/pointcloud.cc @@ -249,9 +249,7 @@ PointCloud *BKE_pointcloud_new_nomain(const int totpoint) return pointcloud; } -void BKE_pointcloud_nomain_to_pointcloud(PointCloud *pointcloud_src, - PointCloud *pointcloud_dst, - bool take_ownership) +void BKE_pointcloud_nomain_to_pointcloud(PointCloud *pointcloud_src, PointCloud *pointcloud_dst) { BLI_assert(pointcloud_src->id.tag & LIB_TAG_NO_MAIN); @@ -260,9 +258,7 @@ void BKE_pointcloud_nomain_to_pointcloud(PointCloud *pointcloud_src, const int totpoint = pointcloud_dst->totpoint = pointcloud_src->totpoint; CustomData_copy(&pointcloud_src->pdata, &pointcloud_dst->pdata, CD_MASK_ALL, totpoint); - if (take_ownership) { - BKE_id_free(nullptr, pointcloud_src); - } + BKE_id_free(nullptr, pointcloud_src); } bool PointCloud::bounds_min_max(blender::float3 &min, blender::float3 &max) const @@ -322,16 +318,10 @@ bool BKE_pointcloud_attribute_required(const PointCloud * /*pointcloud*/, const /* Dependency Graph */ -PointCloud *BKE_pointcloud_copy_for_eval(struct PointCloud *pointcloud_src, bool reference) +PointCloud *BKE_pointcloud_copy_for_eval(struct PointCloud *pointcloud_src) { - int flags = LIB_ID_COPY_LOCALIZE; - - if (reference) { - flags |= LIB_ID_COPY_CD_REFERENCE; - } - - PointCloud *result = (PointCloud *)BKE_id_copy_ex(nullptr, &pointcloud_src->id, nullptr, flags); - return result; + return reinterpret_cast( + BKE_id_copy_ex(nullptr, &pointcloud_src->id, nullptr, LIB_ID_COPY_LOCALIZE)); } static void pointcloud_evaluate_modifiers(struct Depsgraph *depsgraph, diff --git a/source/blender/blenkernel/intern/subdiv_mesh.cc b/source/blender/blenkernel/intern/subdiv_mesh.cc index 9c7893d6de9..fa4a08a178d 100644 --- a/source/blender/blenkernel/intern/subdiv_mesh.cc +++ b/source/blender/blenkernel/intern/subdiv_mesh.cc @@ -532,7 +532,7 @@ static bool subdiv_mesh_topology_info(const SubdivForeachContext *foreach_contex SubdivMeshContext *subdiv_context = static_cast(foreach_context->user_data); subdiv_context->subdiv_mesh = BKE_mesh_new_nomain_from_template_ex( - subdiv_context->coarse_mesh, num_vertices, num_edges, 0, num_loops, num_polygons, mask); + subdiv_context->coarse_mesh, num_vertices, num_edges, 0, num_polygons, num_loops, mask); subdiv_mesh_ctx_cache_custom_data_layers(subdiv_context); subdiv_mesh_prepare_accumulator(subdiv_context, num_vertices); subdiv_context->subdiv_mesh->runtime->subsurf_face_dot_tags.clear(); diff --git a/source/blender/blenkernel/intern/volume.cc b/source/blender/blenkernel/intern/volume.cc index 9eb26eb4c59..39e94c4d888 100644 --- a/source/blender/blenkernel/intern/volume.cc +++ b/source/blender/blenkernel/intern/volume.cc @@ -1523,17 +1523,10 @@ Volume *BKE_volume_new_for_eval(const Volume *volume_src) return volume_dst; } -Volume *BKE_volume_copy_for_eval(Volume *volume_src, bool reference) +Volume *BKE_volume_copy_for_eval(Volume *volume_src) { - int flags = LIB_ID_COPY_LOCALIZE; - - if (reference) { - flags |= LIB_ID_COPY_CD_REFERENCE; - } - - Volume *result = (Volume *)BKE_id_copy_ex(nullptr, &volume_src->id, nullptr, flags); - - return result; + return reinterpret_cast( + BKE_id_copy_ex(nullptr, &volume_src->id, nullptr, LIB_ID_COPY_LOCALIZE)); } #ifdef WITH_OPENVDB diff --git a/source/blender/blenkernel/intern/volume_to_mesh.cc b/source/blender/blenkernel/intern/volume_to_mesh.cc index f2a7d9472a9..1836ad843b8 100644 --- a/source/blender/blenkernel/intern/volume_to_mesh.cc +++ b/source/blender/blenkernel/intern/volume_to_mesh.cc @@ -165,7 +165,7 @@ Mesh *volume_to_mesh(const openvdb::GridBase &grid, const int tot_loops = 3 * mesh_data.tris.size() + 4 * mesh_data.quads.size(); const int tot_polys = mesh_data.tris.size() + mesh_data.quads.size(); - Mesh *mesh = BKE_mesh_new_nomain(mesh_data.verts.size(), 0, tot_loops, tot_polys); + Mesh *mesh = BKE_mesh_new_nomain(mesh_data.verts.size(), 0, tot_polys, tot_loops); fill_mesh_from_openvdb_data(mesh_data.verts, mesh_data.tris, diff --git a/source/blender/editors/object/object_add.cc b/source/blender/editors/object/object_add.cc index 34d83e9118d..aee9a1a5fa0 100644 --- a/source/blender/editors/object/object_add.cc +++ b/source/blender/editors/object/object_add.cc @@ -3156,7 +3156,7 @@ static int object_convert_exec(bContext *C, wmOperator *op) Scene *scene_eval = (Scene *)DEG_get_evaluated_id(depsgraph, &scene->id); Object *ob_eval = DEG_get_evaluated_object(depsgraph, ob); Mesh *me_eval = mesh_get_eval_final(depsgraph, scene_eval, ob_eval, &CD_MASK_MESH); - me_eval = BKE_mesh_copy_for_eval(me_eval, false); + me_eval = BKE_mesh_copy_for_eval(me_eval); BKE_object_material_from_eval_data(bmain, newob, &me_eval->id); Mesh *new_mesh = (Mesh *)newob->data; BKE_mesh_nomain_to_mesh(me_eval, new_mesh, newob); @@ -3388,7 +3388,7 @@ static int object_convert_exec(bContext *C, wmOperator *op) newob->type = OB_MESH; if (const Mesh *mesh_eval = geometry.get_mesh_for_read()) { - BKE_mesh_nomain_to_mesh(BKE_mesh_copy_for_eval(mesh_eval, false), new_mesh, newob); + BKE_mesh_nomain_to_mesh(BKE_mesh_copy_for_eval(mesh_eval), new_mesh, newob); BKE_object_material_from_eval_data(bmain, newob, &mesh_eval->id); new_mesh->attributes_for_write().remove_anonymous(); } diff --git a/source/blender/editors/object/object_modifier.cc b/source/blender/editors/object/object_modifier.cc index e7458f168bc..faea7712c26 100644 --- a/source/blender/editors/object/object_modifier.cc +++ b/source/blender/editors/object/object_modifier.cc @@ -1107,7 +1107,7 @@ static bool modifier_apply_obdata( /* Copy the relevant information to the original. */ Main *bmain = DEG_get_bmain(depsgraph); BKE_object_material_from_eval_data(bmain, ob, &pointcloud_eval->id); - BKE_pointcloud_nomain_to_pointcloud(pointcloud_eval, &points, true); + BKE_pointcloud_nomain_to_pointcloud(pointcloud_eval, &points); } else { /* TODO: implement for volumes. */ diff --git a/source/blender/editors/object/object_remesh.cc b/source/blender/editors/object/object_remesh.cc index f9bad0c6e06..a9ee1d32803 100644 --- a/source/blender/editors/object/object_remesh.cc +++ b/source/blender/editors/object/object_remesh.cc @@ -778,7 +778,7 @@ static Mesh *remesh_symmetry_bisect(Mesh *mesh, eSymmetryAxes symmetry_axes) mmd.tolerance = QUADRIFLOW_MIRROR_BISECT_TOLERANCE; Mesh *mesh_bisect, *mesh_bisect_temp; - mesh_bisect = BKE_mesh_copy_for_eval(mesh, false); + mesh_bisect = BKE_mesh_copy_for_eval(mesh); int axis; float plane_co[3], plane_no[3]; @@ -860,7 +860,7 @@ static void quadriflow_start_job(void *customdata, bool *stop, bool *do_update, /* Run Quadriflow bisect operations on a copy of the mesh to keep the code readable without * freeing the original ID */ - bisect_mesh = BKE_mesh_copy_for_eval(mesh, false); + bisect_mesh = BKE_mesh_copy_for_eval(mesh); /* Bisect the input mesh using the paint symmetry settings */ bisect_mesh = remesh_symmetry_bisect(bisect_mesh, qj->symmetry_axes); diff --git a/source/blender/editors/sculpt_paint/paint_mask.cc b/source/blender/editors/sculpt_paint/paint_mask.cc index 2ccfa93c5b5..6a6bc0759ad 100644 --- a/source/blender/editors/sculpt_paint/paint_mask.cc +++ b/source/blender/editors/sculpt_paint/paint_mask.cc @@ -1135,7 +1135,7 @@ static void sculpt_gesture_trim_geometry_generate(SculptGestureContext *sgcontex const int trim_totverts = tot_screen_points * 2; const int trim_totpolys = (2 * (tot_screen_points - 2)) + (2 * tot_screen_points); - trim_operation->mesh = BKE_mesh_new_nomain(trim_totverts, 0, trim_totpolys * 3, trim_totpolys); + trim_operation->mesh = BKE_mesh_new_nomain(trim_totverts, 0, trim_totpolys, trim_totpolys * 3); trim_operation->true_mesh_co = static_cast( MEM_malloc_arrayN(trim_totverts, sizeof(float[3]), "mesh orco")); diff --git a/source/blender/editors/sculpt_paint/sculpt_expand.cc b/source/blender/editors/sculpt_paint/sculpt_expand.cc index 2aeff54e39f..523fcbae2c5 100644 --- a/source/blender/editors/sculpt_paint/sculpt_expand.cc +++ b/source/blender/editors/sculpt_paint/sculpt_expand.cc @@ -148,8 +148,24 @@ static bool sculpt_expand_is_face_in_active_component(SculptSession *ss, ExpandCache *expand_cache, const int f) { - const int vert = ss->corner_verts[ss->polys[f].start()]; - return sculpt_expand_is_vert_in_active_component(ss, expand_cache, BKE_pbvh_make_vref(vert)); + PBVHVertRef vertex; + + switch (BKE_pbvh_type(ss->pbvh)) { + case PBVH_FACES: + vertex.i = ss->corner_verts[ss->polys[f].start()]; + break; + case PBVH_GRIDS: { + const CCGKey *key = BKE_pbvh_get_grid_key(ss->pbvh); + vertex.i = ss->polys[f].start() * key->grid_area; + + break; + } + case PBVH_BMESH: { + vertex.i = reinterpret_cast(ss->bm->ftable[f]->l_first->v); + break; + } + } + return sculpt_expand_is_vert_in_active_component(ss, expand_cache, vertex); } /** diff --git a/source/blender/geometry/intern/mesh_merge_by_distance.cc b/source/blender/geometry/intern/mesh_merge_by_distance.cc index 53b57289f0d..ba869b10e9b 100644 --- a/source/blender/geometry/intern/mesh_merge_by_distance.cc +++ b/source/blender/geometry/intern/mesh_merge_by_distance.cc @@ -1544,7 +1544,7 @@ static Mesh *create_merged_mesh(const Mesh &mesh, const int result_npolys = src_polys.size() - weld_mesh.poly_kill_len + weld_mesh.wpoly_new_len; Mesh *result = BKE_mesh_new_nomain_from_template( - &mesh, result_nverts, result_nedges, result_nloops, result_npolys); + &mesh, result_nverts, result_nedges, result_npolys, result_nloops); MutableSpan dst_edges = result->edges_for_write(); MutableSpan dst_poly_offsets = result->poly_offsets_for_write(); MutableSpan dst_corner_verts = result->corner_verts_for_write(); diff --git a/source/blender/geometry/intern/mesh_primitive_cuboid.cc b/source/blender/geometry/intern/mesh_primitive_cuboid.cc index fe1d466dcc3..a07c8a7268f 100644 --- a/source/blender/geometry/intern/mesh_primitive_cuboid.cc +++ b/source/blender/geometry/intern/mesh_primitive_cuboid.cc @@ -400,7 +400,7 @@ Mesh *create_cuboid_mesh(const float3 &size, { const CuboidConfig config(size, verts_x, verts_y, verts_z); - Mesh *mesh = BKE_mesh_new_nomain(config.vertex_count, 0, config.loop_count, config.poly_count); + Mesh *mesh = BKE_mesh_new_nomain(config.vertex_count, 0, config.poly_count, config.loop_count); MutableSpan positions = mesh->vert_positions_for_write(); MutableSpan poly_offsets = mesh->poly_offsets_for_write(); MutableSpan corner_verts = mesh->corner_verts_for_write(); diff --git a/source/blender/geometry/intern/realize_instances.cc b/source/blender/geometry/intern/realize_instances.cc index 30324dbdab1..ecf7951e149 100644 --- a/source/blender/geometry/intern/realize_instances.cc +++ b/source/blender/geometry/intern/realize_instances.cc @@ -1081,7 +1081,7 @@ static void execute_realize_mesh_tasks(const RealizeInstancesOptions &options, const int tot_loops = last_task.start_indices.loop + last_mesh.totloop; const int tot_poly = last_task.start_indices.poly + last_mesh.totpoly; - Mesh *dst_mesh = BKE_mesh_new_nomain(tot_vertices, tot_edges, tot_loops, tot_poly); + Mesh *dst_mesh = BKE_mesh_new_nomain(tot_vertices, tot_edges, tot_poly, tot_loops); MeshComponent &dst_component = r_realized_geometry.get_component_for_write(); dst_component.replace(dst_mesh); bke::MutableAttributeAccessor dst_attributes = dst_mesh->attributes_for_write(); diff --git a/source/blender/io/alembic/intern/abc_reader_mesh.cc b/source/blender/io/alembic/intern/abc_reader_mesh.cc index fa8b8ea1c96..4c673260802 100644 --- a/source/blender/io/alembic/intern/abc_reader_mesh.cc +++ b/source/blender/io/alembic/intern/abc_reader_mesh.cc @@ -723,7 +723,7 @@ Mesh *AbcMeshReader::read_mesh(Mesh *existing_mesh, if (topology_changed(existing_mesh, sample_sel)) { new_mesh = BKE_mesh_new_nomain_from_template( - existing_mesh, positions->size(), 0, face_indices->size(), face_counts->size()); + existing_mesh, positions->size(), 0, face_counts->size(), face_indices->size()); settings.read_flag |= MOD_MESHSEQ_READ_ALL; } diff --git a/source/blender/io/ply/importer/ply_import.cc b/source/blender/io/ply/importer/ply_import.cc index a17aa51bf23..cee1ad6d469 100644 --- a/source/blender/io/ply/importer/ply_import.cc +++ b/source/blender/io/ply/importer/ply_import.cc @@ -203,21 +203,19 @@ void importer_main(Main *bmain, } /* Create mesh and do all prep work. */ - Mesh *mesh = BKE_mesh_add(bmain, ob_name); + Mesh *mesh_in_main = BKE_mesh_add(bmain, ob_name); BKE_view_layer_base_deselect_all(scene, view_layer); LayerCollection *lc = BKE_layer_collection_get_active(view_layer); Object *obj = BKE_object_add_only_object(bmain, OB_MESH, ob_name); - BKE_mesh_assign_object(bmain, obj, mesh); + BKE_mesh_assign_object(bmain, obj, mesh_in_main); BKE_collection_object_add(bmain, lc->collection, obj); BKE_view_layer_synced_ensure(scene, view_layer); Base *base = BKE_view_layer_base_find(view_layer, obj); BKE_view_layer_base_select_and_set_active(view_layer, base); /* Stuff ply data into the mesh. */ - Mesh *temp_val = convert_ply_to_mesh(*data, mesh, import_params); - if (import_params.merge_verts && temp_val != mesh) { - BKE_mesh_nomain_to_mesh(temp_val, mesh, obj); - } + Mesh *mesh = convert_ply_to_mesh(*data, import_params); + BKE_mesh_nomain_to_mesh(mesh, mesh_in_main, obj); /* Object matrix and finishing up. */ float global_scale = import_params.global_scale; diff --git a/source/blender/io/ply/importer/ply_import_mesh.cc b/source/blender/io/ply/importer/ply_import_mesh.cc index bc2b67dbf21..2a3d8df326f 100644 --- a/source/blender/io/ply/importer/ply_import_mesh.cc +++ b/source/blender/io/ply/importer/ply_import_mesh.cc @@ -7,6 +7,7 @@ #include "BKE_attribute.h" #include "BKE_attribute.hh" #include "BKE_customdata.h" +#include "BKE_lib_id.h" #include "BKE_mesh.hh" #include "BKE_mesh_runtime.h" @@ -17,23 +18,18 @@ #include "ply_import_mesh.hh" namespace blender::io::ply { -Mesh *convert_ply_to_mesh(PlyData &data, Mesh *mesh, const PLYImportParams ¶ms) +Mesh *convert_ply_to_mesh(PlyData &data, const PLYImportParams ¶ms) { + Mesh *mesh = BKE_mesh_new_nomain( + data.vertices.size(), data.edges.size(), data.face_sizes.size(), data.face_vertices.size()); - /* Add vertices to the mesh. */ - mesh->totvert = int(data.vertices.size()); - CustomData_add_layer_named( - &mesh->vdata, CD_PROP_FLOAT3, CD_CONSTRUCT, mesh->totvert, "position"); mesh->vert_positions_for_write().copy_from(data.vertices); bke::MutableAttributeAccessor attributes = mesh->attributes_for_write(); if (!data.edges.is_empty()) { - mesh->totedge = int(data.edges.size()); - CustomData_add_layer_named( - &mesh->edata, CD_PROP_INT32_2D, CD_CONSTRUCT, mesh->totedge, ".edge_verts"); MutableSpan edges = mesh->edges_for_write(); - for (int i = 0; i < mesh->totedge; i++) { + for (const int i : data.edges.index_range()) { int32_t v1 = data.edges[i].first; int32_t v2 = data.edges[i].second; if (v1 >= mesh->totvert) { @@ -50,18 +46,12 @@ Mesh *convert_ply_to_mesh(PlyData &data, Mesh *mesh, const PLYImportParams ¶ /* Add faces to the mesh. */ if (!data.face_sizes.is_empty()) { - /* Create poly and loop layers. */ - mesh->totpoly = int(data.face_sizes.size()); - mesh->totloop = int(data.face_vertices.size()); - BKE_mesh_poly_offsets_ensure_alloc(mesh); - CustomData_add_layer_named( - &mesh->ldata, CD_PROP_INT32, CD_CONSTRUCT, mesh->totloop, ".corner_vert"); MutableSpan poly_offsets = mesh->poly_offsets_for_write(); MutableSpan corner_verts = mesh->corner_verts_for_write(); /* Fill in face data. */ uint32_t offset = 0; - for (int i = 0; i < mesh->totpoly; i++) { + for (const int i : data.face_sizes.index_range()) { uint32_t size = data.face_sizes[i]; poly_offsets[i] = offset; for (int j = 0; j < size; j++) { @@ -83,12 +73,12 @@ Mesh *convert_ply_to_mesh(PlyData &data, Mesh *mesh, const PLYImportParams ¶ attributes.lookup_or_add_for_write_span("Col", ATTR_DOMAIN_POINT); if (params.vertex_colors == PLY_VERTEX_COLOR_SRGB) { - for (int i = 0; i < data.vertex_colors.size(); i++) { + for (const int i : data.vertex_colors.index_range()) { srgb_to_linearrgb_v4(colors.span[i], data.vertex_colors[i]); } } else { - for (int i = 0; i < data.vertex_colors.size(); i++) { + for (const int i : data.vertex_colors.index_range()) { copy_v4_v4(colors.span[i], data.vertex_colors[i]); } } @@ -101,7 +91,7 @@ Mesh *convert_ply_to_mesh(PlyData &data, Mesh *mesh, const PLYImportParams ¶ if (!data.uv_coordinates.is_empty()) { bke::SpanAttributeWriter uv_map = attributes.lookup_or_add_for_write_only_span( "UVMap", ATTR_DOMAIN_CORNER); - for (size_t i = 0; i < data.face_vertices.size(); i++) { + for (const int i : data.face_vertices.index_range()) { uv_map.span[i] = data.uv_coordinates[data.face_vertices[i]]; } uv_map.finish(); @@ -116,17 +106,18 @@ Mesh *convert_ply_to_mesh(PlyData &data, Mesh *mesh, const PLYImportParams ¶ mesh, reinterpret_cast(data.vertex_normals.data())); } + BKE_mesh_smooth_flag_set(mesh, false); + /* Merge all vertices on the same location. */ if (params.merge_verts) { - std::optional return_value = blender::geometry::mesh_merge_by_distance_all( + std::optional merged_mesh = blender::geometry::mesh_merge_by_distance_all( *mesh, IndexMask(mesh->totvert), 0.0001f); - if (return_value.has_value()) { - mesh = return_value.value(); + if (merged_mesh) { + BKE_id_free(nullptr, &mesh->id); + mesh = *merged_mesh; } } - BKE_mesh_smooth_flag_set(mesh, false); - return mesh; } } // namespace blender::io::ply diff --git a/source/blender/io/ply/importer/ply_import_mesh.hh b/source/blender/io/ply/importer/ply_import_mesh.hh index 7dddff4f41a..e1d057f4358 100644 --- a/source/blender/io/ply/importer/ply_import_mesh.hh +++ b/source/blender/io/ply/importer/ply_import_mesh.hh @@ -13,9 +13,8 @@ namespace blender::io::ply { /** * Converts the #PlyData data-structure to a mesh. - * \param data: The PLY data. - * \return The mesh that can be used inside blender. + * \return A new mesh that can be used inside blender. */ -Mesh *convert_ply_to_mesh(PlyData &data, Mesh *mesh, const PLYImportParams ¶ms); +Mesh *convert_ply_to_mesh(PlyData &data, const PLYImportParams ¶ms); } // namespace blender::io::ply diff --git a/source/blender/io/stl/importer/stl_import.cc b/source/blender/io/stl/importer/stl_import.cc index 9ca002b71e8..628b3603a1f 100644 --- a/source/blender/io/stl/importer/stl_import.cc +++ b/source/blender/io/stl/importer/stl_import.cc @@ -78,13 +78,9 @@ void importer_main(Main *bmain, BLI_strncpy(ob_name, BLI_path_basename(import_params.filepath), FILE_MAX); BLI_path_extension_strip(ob_name); - Mesh *mesh = nullptr; - if (is_ascii_stl) { - mesh = read_stl_ascii(import_params.filepath, bmain, ob_name, import_params.use_facet_normal); - } - else { - mesh = read_stl_binary(file, bmain, ob_name, import_params.use_facet_normal); - } + Mesh *mesh = is_ascii_stl ? + read_stl_ascii(import_params.filepath, import_params.use_facet_normal) : + read_stl_binary(file, import_params.use_facet_normal); if (mesh == nullptr) { fprintf(stderr, "STL Importer: Failed to import mesh '%s'\n", import_params.filepath); @@ -99,10 +95,12 @@ void importer_main(Main *bmain, BKE_mesh_validate(mesh, verbose_validate, false); } + Mesh *mesh_in_main = BKE_mesh_add(bmain, ob_name); + BKE_mesh_nomain_to_mesh(mesh, mesh_in_main, nullptr); BKE_view_layer_base_deselect_all(scene, view_layer); LayerCollection *lc = BKE_layer_collection_get_active(view_layer); Object *obj = BKE_object_add_only_object(bmain, OB_MESH, ob_name); - BKE_mesh_assign_object(bmain, obj, mesh); + BKE_mesh_assign_object(bmain, obj, mesh_in_main); BKE_collection_object_add(bmain, lc->collection, obj); BKE_view_layer_synced_ensure(scene, view_layer); Base *base = BKE_view_layer_base_find(view_layer, obj); diff --git a/source/blender/io/stl/importer/stl_import_ascii_reader.cc b/source/blender/io/stl/importer/stl_import_ascii_reader.cc index 8bfe4924cc5..e213fa94bf0 100644 --- a/source/blender/io/stl/importer/stl_import_ascii_reader.cc +++ b/source/blender/io/stl/importer/stl_import_ascii_reader.cc @@ -111,13 +111,13 @@ static inline void parse_float3(StringBuffer &buf, float out[3]) } } -Mesh *read_stl_ascii(const char *filepath, Main *bmain, char *mesh_name, bool use_custom_normals) +Mesh *read_stl_ascii(const char *filepath, const bool use_custom_normals) { size_t buffer_len; void *buffer = BLI_file_read_text_as_mem(filepath, 0, &buffer_len); if (buffer == nullptr) { fprintf(stderr, "STL Importer: cannot read from ASCII STL file: '%s'\n", filepath); - return BKE_mesh_add(bmain, mesh_name); + return nullptr; } BLI_SCOPED_DEFER([&]() { MEM_freeN(buffer); }); @@ -154,7 +154,7 @@ Mesh *read_stl_ascii(const char *filepath, Main *bmain, char *mesh_name, bool us } } - return stl_mesh.to_mesh(bmain, mesh_name); + return stl_mesh.to_mesh(); } } // namespace blender::io::stl diff --git a/source/blender/io/stl/importer/stl_import_ascii_reader.hh b/source/blender/io/stl/importer/stl_import_ascii_reader.hh index e8aed911bf1..9998f111eda 100644 --- a/source/blender/io/stl/importer/stl_import_ascii_reader.hh +++ b/source/blender/io/stl/importer/stl_import_ascii_reader.hh @@ -30,6 +30,6 @@ namespace blender::io::stl { -Mesh *read_stl_ascii(const char *filepath, Main *bmain, char *mesh_name, bool use_custom_normals); +Mesh *read_stl_ascii(const char *filepath, bool use_custom_normals); } // namespace blender::io::stl diff --git a/source/blender/io/stl/importer/stl_import_binary_reader.cc b/source/blender/io/stl/importer/stl_import_binary_reader.cc index 26d9e3406e7..d6b6aa1b33f 100644 --- a/source/blender/io/stl/importer/stl_import_binary_reader.cc +++ b/source/blender/io/stl/importer/stl_import_binary_reader.cc @@ -29,7 +29,7 @@ struct STLBinaryTriangle { }; #pragma pack(pop) -Mesh *read_stl_binary(FILE *file, Main *bmain, char *mesh_name, bool use_custom_normals) +Mesh *read_stl_binary(FILE *file, const bool use_custom_normals) { const int chunk_size = 1024; uint32_t num_tris = 0; @@ -40,7 +40,7 @@ Mesh *read_stl_binary(FILE *file, Main *bmain, char *mesh_name, bool use_custom_ } if (num_tris == 0) { - return BKE_mesh_add(bmain, mesh_name); + return BKE_mesh_new_nomain(0, 0, 0, 0); } Array tris_buf(chunk_size); @@ -57,7 +57,7 @@ Mesh *read_stl_binary(FILE *file, Main *bmain, char *mesh_name, bool use_custom_ } } - return stl_mesh.to_mesh(bmain, mesh_name); + return stl_mesh.to_mesh(); } } // namespace blender::io::stl diff --git a/source/blender/io/stl/importer/stl_import_binary_reader.hh b/source/blender/io/stl/importer/stl_import_binary_reader.hh index 71d5dbbbe58..729da94f6bc 100644 --- a/source/blender/io/stl/importer/stl_import_binary_reader.hh +++ b/source/blender/io/stl/importer/stl_import_binary_reader.hh @@ -26,6 +26,6 @@ namespace blender::io::stl { const size_t BINARY_HEADER_SIZE = 80; const size_t BINARY_STRIDE = 12 * 4 + 2; -Mesh *read_stl_binary(FILE *file, Main *bmain, char *mesh_name, bool use_custom_normals); +Mesh *read_stl_binary(FILE *file, bool use_custom_normals); } // namespace blender::io::stl diff --git a/source/blender/io/stl/importer/stl_import_mesh.cc b/source/blender/io/stl/importer/stl_import_mesh.cc index 1c19a96cc0d..799fd3bdf6a 100644 --- a/source/blender/io/stl/importer/stl_import_mesh.cc +++ b/source/blender/io/stl/importer/stl_import_mesh.cc @@ -60,7 +60,7 @@ void STLMeshHelper::add_triangle(const float3 &a, } } -Mesh *STLMeshHelper::to_mesh(Main *bmain, char *mesh_name) +Mesh *STLMeshHelper::to_mesh() { if (degenerate_tris_num_ > 0) { std::cout << "STL Importer: " << degenerate_tris_num_ << " degenerate triangles were removed" @@ -71,21 +71,10 @@ Mesh *STLMeshHelper::to_mesh(Main *bmain, char *mesh_name) << std::endl; } - Mesh *mesh = BKE_mesh_add(bmain, mesh_name); - /* User count is already 1 here, but will be set later in #BKE_mesh_assign_object. */ - id_us_min(&mesh->id); + Mesh *mesh = BKE_mesh_new_nomain(verts_.size(), 0, tris_.size(), tris_.size() * 3); - mesh->totvert = verts_.size(); - CustomData_add_layer_named( - &mesh->vdata, CD_PROP_FLOAT3, CD_CONSTRUCT, mesh->totvert, "position"); mesh->vert_positions_for_write().copy_from(verts_); - mesh->totpoly = tris_.size(); - mesh->totloop = tris_.size() * 3; - BKE_mesh_poly_offsets_ensure_alloc(mesh); - CustomData_add_layer_named( - &mesh->ldata, CD_PROP_INT32, CD_SET_DEFAULT, mesh->totloop, ".corner_vert"); - MutableSpan poly_offsets = mesh->poly_offsets_for_write(); threading::parallel_for(poly_offsets.index_range(), 4096, [&](const IndexRange range) { for (const int i : range) { diff --git a/source/blender/io/stl/importer/stl_import_mesh.hh b/source/blender/io/stl/importer/stl_import_mesh.hh index 658d42ca7a7..7d6ae101b09 100644 --- a/source/blender/io/stl/importer/stl_import_mesh.hh +++ b/source/blender/io/stl/importer/stl_import_mesh.hh @@ -65,7 +65,7 @@ class STLMeshHelper { const float3 &b, const float3 &c, const float3 &custom_normal); - Mesh *to_mesh(Main *bmain, char *mesh_name); + Mesh *to_mesh(); }; } // namespace blender::io::stl diff --git a/source/blender/io/usd/intern/usd_reader_mesh.cc b/source/blender/io/usd/intern/usd_reader_mesh.cc index 762686331f8..79c382581e1 100644 --- a/source/blender/io/usd/intern/usd_reader_mesh.cc +++ b/source/blender/io/usd/intern/usd_reader_mesh.cc @@ -942,7 +942,7 @@ Mesh *USDMeshReader::read_mesh(Mesh *existing_mesh, if (topology_changed(existing_mesh, params.motion_sample_time)) { new_mesh = true; active_mesh = BKE_mesh_new_nomain_from_template( - existing_mesh, positions_.size(), 0, face_indices_.size(), face_counts_.size()); + existing_mesh, positions_.size(), 0, face_counts_.size(), face_indices_.size()); for (pxr::TfToken token : uv_tokens) { add_customdata_cb(active_mesh, token.GetText(), CD_PROP_FLOAT2); diff --git a/source/blender/io/usd/intern/usd_reader_shape.cc b/source/blender/io/usd/intern/usd_reader_shape.cc index d1352c3006a..32bedc3114f 100644 --- a/source/blender/io/usd/intern/usd_reader_shape.cc +++ b/source/blender/io/usd/intern/usd_reader_shape.cc @@ -179,7 +179,7 @@ Mesh *USDShapeReader::mesh_from_prim(Mesh *existing_mesh, Mesh *active_mesh = nullptr; if (!position_counts_match || !poly_counts_match) { active_mesh = BKE_mesh_new_nomain_from_template( - existing_mesh, positions.size(), 0, face_indices.size(), face_counts.size()); + existing_mesh, positions.size(), 0, face_counts.size(), face_indices.size()); } else { active_mesh = existing_mesh; diff --git a/source/blender/io/wavefront_obj/importer/obj_import_mesh.cc b/source/blender/io/wavefront_obj/importer/obj_import_mesh.cc index d4869cec929..358f1e8fc24 100644 --- a/source/blender/io/wavefront_obj/importer/obj_import_mesh.cc +++ b/source/blender/io/wavefront_obj/importer/obj_import_mesh.cc @@ -48,7 +48,7 @@ Object *MeshFromGeometry::create_mesh(Main *bmain, const int64_t tot_face_elems{mesh_geometry_.face_elements_.size()}; const int64_t tot_loops{mesh_geometry_.total_loops_}; - Mesh *mesh = BKE_mesh_new_nomain(tot_verts_object, tot_edges, tot_loops, tot_face_elems); + Mesh *mesh = BKE_mesh_new_nomain(tot_verts_object, tot_edges, tot_face_elems, tot_loops); Object *obj = BKE_object_add_only_object(bmain, OB_MESH, ob_name.c_str()); obj->data = BKE_object_obdata_add_from_type(bmain, OB_MESH, ob_name.c_str()); diff --git a/source/blender/modifiers/intern/MOD_array.cc b/source/blender/modifiers/intern/MOD_array.cc index 80ea448ed51..3174c0eafc4 100644 --- a/source/blender/modifiers/intern/MOD_array.cc +++ b/source/blender/modifiers/intern/MOD_array.cc @@ -551,7 +551,7 @@ static Mesh *arrayModifier_doArray(ArrayModifierData *amd, /* Initialize a result dm */ result = BKE_mesh_new_nomain_from_template( - mesh, result_nverts, result_nedges, result_nloops, result_npolys); + mesh, result_nverts, result_nedges, result_npolys, result_nloops); float(*result_positions)[3] = BKE_mesh_vert_positions_for_write(result); blender::MutableSpan result_edges = result->edges_for_write(); blender::MutableSpan result_poly_offsets = result->poly_offsets_for_write(); diff --git a/source/blender/modifiers/intern/MOD_build.cc b/source/blender/modifiers/intern/MOD_build.cc index f9533cf6b2c..63cb59f09c0 100644 --- a/source/blender/modifiers/intern/MOD_build.cc +++ b/source/blender/modifiers/intern/MOD_build.cc @@ -189,7 +189,7 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh * /* now we know the number of verts, edges and faces, we can create the mesh. */ result = BKE_mesh_new_nomain_from_template( - mesh, BLI_ghash_len(vertHash), BLI_ghash_len(edgeHash), loops_dst_num, faces_dst_num); + mesh, BLI_ghash_len(vertHash), BLI_ghash_len(edgeHash), faces_dst_num, loops_dst_num); blender::MutableSpan result_edges = result->edges_for_write(); blender::MutableSpan result_poly_offsets = result->poly_offsets_for_write(); blender::MutableSpan result_corner_verts = result->corner_verts_for_write(); diff --git a/source/blender/modifiers/intern/MOD_mask.cc b/source/blender/modifiers/intern/MOD_mask.cc index 53da9d7b856..25bccff6670 100644 --- a/source/blender/modifiers/intern/MOD_mask.cc +++ b/source/blender/modifiers/intern/MOD_mask.cc @@ -702,8 +702,8 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext * /*ctx*/, M Mesh *result = BKE_mesh_new_nomain_from_template(mesh, verts_masked_num + verts_add_num, edges_masked_num + edges_add_num, - loops_masked_num + loops_add_num, - polys_masked_num + polys_add_num); + polys_masked_num + polys_add_num, + loops_masked_num + loops_add_num); copy_masked_verts_to_new_mesh(*mesh, *result, vertex_map); if (use_interpolation) { diff --git a/source/blender/modifiers/intern/MOD_ocean.cc b/source/blender/modifiers/intern/MOD_ocean.cc index a7453756f56..06a78e81dfc 100644 --- a/source/blender/modifiers/intern/MOD_ocean.cc +++ b/source/blender/modifiers/intern/MOD_ocean.cc @@ -255,7 +255,7 @@ static Mesh *generate_ocean_geometry(OceanModifierData *omd, Mesh *mesh_orig, co gogd.sx /= gogd.rx; gogd.sy /= gogd.ry; - result = BKE_mesh_new_nomain(verts_num, 0, polys_num * 4, polys_num); + result = BKE_mesh_new_nomain(verts_num, 0, polys_num, polys_num * 4); BKE_mesh_copy_parameters_for_eval(result, mesh_orig); gogd.vert_positions = BKE_mesh_vert_positions_for_write(result); diff --git a/source/blender/modifiers/intern/MOD_particleinstance.cc b/source/blender/modifiers/intern/MOD_particleinstance.cc index 49e8bf751ae..9948f300730 100644 --- a/source/blender/modifiers/intern/MOD_particleinstance.cc +++ b/source/blender/modifiers/intern/MOD_particleinstance.cc @@ -312,7 +312,7 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh * max_co = max[track]; } - result = BKE_mesh_new_nomain_from_template(mesh, maxvert, maxedge, maxloop, maxpoly); + result = BKE_mesh_new_nomain_from_template(mesh, maxvert, maxedge, maxpoly, maxloop); const blender::OffsetIndices orig_polys = mesh->polys(); const blender::Span orig_corner_verts = mesh->corner_verts(); diff --git a/source/blender/modifiers/intern/MOD_particlesystem.cc b/source/blender/modifiers/intern/MOD_particlesystem.cc index 13220306d65..433e398a9f2 100644 --- a/source/blender/modifiers/intern/MOD_particlesystem.cc +++ b/source/blender/modifiers/intern/MOD_particlesystem.cc @@ -154,7 +154,7 @@ static void deformVerts(ModifierData *md, } /* make new mesh */ - psmd->mesh_final = BKE_mesh_copy_for_eval(mesh_src, false); + psmd->mesh_final = BKE_mesh_copy_for_eval(mesh_src); BKE_mesh_vert_coords_apply(psmd->mesh_final, vertexCos); BKE_mesh_tessface_ensure(psmd->mesh_final); @@ -185,7 +185,7 @@ static void deformVerts(ModifierData *md, /* Make a persistent copy of the mesh. We don't actually need * all this data, just some topology for remapping. Could be * optimized once. */ - psmd->mesh_original = BKE_mesh_copy_for_eval(mesh_original, false); + psmd->mesh_original = BKE_mesh_copy_for_eval(mesh_original); } BKE_mesh_tessface_ensure(psmd->mesh_original); diff --git a/source/blender/modifiers/intern/MOD_remesh.cc b/source/blender/modifiers/intern/MOD_remesh.cc index a867db11127..32589bae6e7 100644 --- a/source/blender/modifiers/intern/MOD_remesh.cc +++ b/source/blender/modifiers/intern/MOD_remesh.cc @@ -93,7 +93,7 @@ static void *dualcon_alloc_output(int totvert, int totquad) return nullptr; } - output->mesh = BKE_mesh_new_nomain(totvert, 0, 4 * totquad, totquad); + output->mesh = BKE_mesh_new_nomain(totvert, 0, totquad, 4 * totquad); output->vert_positions = BKE_mesh_vert_positions_for_write(output->mesh); output->poly_offsets = output->mesh->poly_offsets_for_write().data(); output->corner_verts = output->mesh->corner_verts_for_write().data(); diff --git a/source/blender/modifiers/intern/MOD_screw.cc b/source/blender/modifiers/intern/MOD_screw.cc index 00c850af1c2..17f21b6674e 100644 --- a/source/blender/modifiers/intern/MOD_screw.cc +++ b/source/blender/modifiers/intern/MOD_screw.cc @@ -390,7 +390,7 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh * const bool do_remove_doubles = (ltmd->flag & MOD_SCREW_MERGE) && (screw_ofs == 0.0f); result = BKE_mesh_new_nomain_from_template( - mesh, int(maxVerts), int(maxEdges), int(maxPolys) * 4, int(maxPolys)); + mesh, int(maxVerts), int(maxEdges), int(maxPolys), int(maxPolys) * 4); /* The modifier doesn't support original index mapping on the edge or face domains. Remove * original index layers, since otherwise edges aren't displayed at all in wireframe view. */ CustomData_free_layers(&result->edata, CD_ORIGINDEX, result->totedge); diff --git a/source/blender/modifiers/intern/MOD_solidify_extrude.cc b/source/blender/modifiers/intern/MOD_solidify_extrude.cc index 6314ec510ca..394fb1ffead 100644 --- a/source/blender/modifiers/intern/MOD_solidify_extrude.cc +++ b/source/blender/modifiers/intern/MOD_solidify_extrude.cc @@ -321,8 +321,8 @@ Mesh *MOD_solidify_extrude_modifyMesh(ModifierData *md, const ModifierEvalContex result = BKE_mesh_new_nomain_from_template(mesh, int((verts_num * stride) + newVerts), int((edges_num * stride) + newEdges + rimVerts), - int((loops_num * stride) + newLoops), - int((polys_num * stride) + newPolys)); + int((polys_num * stride) + newPolys), + int((loops_num * stride) + newLoops)); float(*vert_positions)[3] = BKE_mesh_vert_positions_for_write(result); blender::MutableSpan edges = result->edges_for_write(); diff --git a/source/blender/modifiers/intern/MOD_solidify_nonmanifold.cc b/source/blender/modifiers/intern/MOD_solidify_nonmanifold.cc index 95f72f160d9..415334056e1 100644 --- a/source/blender/modifiers/intern/MOD_solidify_nonmanifold.cc +++ b/source/blender/modifiers/intern/MOD_solidify_nonmanifold.cc @@ -1982,7 +1982,7 @@ Mesh *MOD_solidify_nonmanifold_modifyMesh(ModifierData *md, /* Create Mesh *result with proper capacity. */ result = BKE_mesh_new_nomain_from_template( - mesh, int(new_verts_num), int(new_edges_num), int(new_loops_num), int(new_polys_num)); + mesh, int(new_verts_num), int(new_edges_num), int(new_polys_num), int(new_loops_num)); float(*vert_positions)[3] = BKE_mesh_vert_positions_for_write(result); blender::MutableSpan edges = result->edges_for_write(); diff --git a/source/blender/modifiers/intern/MOD_util.cc b/source/blender/modifiers/intern/MOD_util.cc index f1080f76d47..1e544875a7d 100644 --- a/source/blender/modifiers/intern/MOD_util.cc +++ b/source/blender/modifiers/intern/MOD_util.cc @@ -182,10 +182,8 @@ Mesh *MOD_deform_mesh_eval_get(Object *ob, /* TODO(sybren): after modifier conversion of DM to Mesh is done, check whether * we really need a copy here. Maybe the CoW ob->data can be directly used. */ Mesh *mesh_prior_modifiers = BKE_object_get_pre_modified_mesh(ob); - mesh = (Mesh *)BKE_id_copy_ex(nullptr, - &mesh_prior_modifiers->id, - nullptr, - (LIB_ID_COPY_LOCALIZE | LIB_ID_COPY_CD_REFERENCE)); + mesh = (Mesh *)BKE_id_copy_ex( + nullptr, &mesh_prior_modifiers->id, nullptr, LIB_ID_COPY_LOCALIZE); mesh->runtime->deformed_only = true; } diff --git a/source/blender/nodes/NOD_static_types.h b/source/blender/nodes/NOD_static_types.h index c4f7541e4bb..a43f767bda2 100644 --- a/source/blender/nodes/NOD_static_types.h +++ b/source/blender/nodes/NOD_static_types.h @@ -41,7 +41,7 @@ DefNode(ShaderNode, SH_NODE_CLAMP, def_clamp, "CLAMP" DefNode(ShaderNode, SH_NODE_MATH, def_math, "MATH", Math, "Math", "Perform math operations") DefNode(ShaderNode, SH_NODE_VECTOR_MATH, def_vector_math, "VECT_MATH", VectorMath, "Vector Math", "Perform vector math operation") DefNode(ShaderNode, SH_NODE_SQUEEZE, 0, "SQUEEZE", Squeeze, "Squeeze Value", "") -DefNode(ShaderNode, SH_NODE_INVERT, 0, "INVERT", Invert, "Invert", "Invert a color, producing a negative") +DefNode(ShaderNode, SH_NODE_INVERT, 0, "INVERT", Invert, "Invert Color", "Invert a color, producing a negative") DefNode(ShaderNode, SH_NODE_SEPRGB_LEGACY, 0, "SEPRGB", SeparateRGB, "Separate RGB", "Split a color into its red, green, and blue channels (Deprecated)") DefNode(ShaderNode, SH_NODE_COMBRGB_LEGACY, 0, "COMBRGB", CombineRGB, "Combine RGB", "Generate a color from its red, green, and blue channels (Deprecated)") DefNode(ShaderNode, SH_NODE_HUE_SAT, 0, "HUE_SAT", HueSaturation, "Hue/Saturation/Value","Apply a color transformation in the HSV color model") @@ -178,7 +178,7 @@ DefNode(CompositorNode, CMP_NODE_MATH, def_math, "MATH", DefNode(CompositorNode, CMP_NODE_LUMA_MATTE, def_cmp_luma_matte, "LUMA_MATTE", LumaMatte, "Luminance Key", "" ) DefNode(CompositorNode, CMP_NODE_BRIGHTCONTRAST, def_cmp_brightcontrast, "BRIGHTCONTRAST", BrightContrast, "Brightness/Contrast","" ) DefNode(CompositorNode, CMP_NODE_GAMMA, 0, "GAMMA", Gamma, "Gamma", "" ) -DefNode(CompositorNode, CMP_NODE_INVERT, def_cmp_invert, "INVERT", Invert, "Invert", "" ) +DefNode(CompositorNode, CMP_NODE_INVERT, def_cmp_invert, "INVERT", Invert, "Invert Color", "" ) DefNode(CompositorNode, CMP_NODE_NORMALIZE, 0, "NORMALIZE", Normalize, "Normalize", "" ) DefNode(CompositorNode, CMP_NODE_CROP, def_cmp_crop, "CROP", Crop, "Crop", "" ) DefNode(CompositorNode, CMP_NODE_DBLUR, def_cmp_dblur, "DBLUR", DBlur, "Directional Blur", "" ) @@ -234,7 +234,7 @@ DefNode(TextureNode, TEX_NODE_RGBTOBW, 0, "RGBTOB DefNode(TextureNode, TEX_NODE_VALTORGB, def_colorramp, "VALTORGB", ValToRGB, "Color Ramp", "" ) DefNode(TextureNode, TEX_NODE_IMAGE, def_tex_image, "IMAGE", Image, "Image", "" ) DefNode(TextureNode, TEX_NODE_CURVE_RGB, def_rgb_curve, "CURVE_RGB", CurveRGB, "RGB Curves", "" ) -DefNode(TextureNode, TEX_NODE_INVERT, 0, "INVERT", Invert, "Invert", "" ) +DefNode(TextureNode, TEX_NODE_INVERT, 0, "INVERT", Invert, "Invert Color", "" ) DefNode(TextureNode, TEX_NODE_HUE_SAT, 0, "HUE_SAT", HueSaturation, "Hue/Saturation/Value", "" ) DefNode(TextureNode, TEX_NODE_CURVE_TIME, def_time, "CURVE_TIME", CurveTime, "Curve Time", "" ) DefNode(TextureNode, TEX_NODE_ROTATE, 0, "ROTATE", Rotate, "Rotate", "" ) diff --git a/source/blender/nodes/composite/nodes/node_composite_invert.cc b/source/blender/nodes/composite/nodes/node_composite_invert.cc index 58732cb80f5..76cfbbc9ecd 100644 --- a/source/blender/nodes/composite/nodes/node_composite_invert.cc +++ b/source/blender/nodes/composite/nodes/node_composite_invert.cc @@ -93,7 +93,7 @@ void register_node_type_cmp_invert() static bNodeType ntype; - cmp_node_type_base(&ntype, CMP_NODE_INVERT, "Invert", NODE_CLASS_OP_COLOR); + cmp_node_type_base(&ntype, CMP_NODE_INVERT, "Invert Color", NODE_CLASS_OP_COLOR); ntype.declare = file_ns::cmp_node_invert_declare; ntype.draw_buttons = file_ns::node_composit_buts_invert; ntype.initfunc = file_ns::node_composit_init_invert; diff --git a/source/blender/nodes/geometry/nodes/node_geo_convex_hull.cc b/source/blender/nodes/geometry/nodes/node_geo_convex_hull.cc index 9073614b262..5636a17b82d 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_convex_hull.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_convex_hull.cc @@ -37,10 +37,10 @@ static Mesh *hull_from_bullet(const Mesh *mesh, Span coords) /* Create Mesh *result with proper capacity. */ Mesh *result; if (mesh) { - result = BKE_mesh_new_nomain_from_template(mesh, verts_num, edges_num, loops_num, faces_num); + result = BKE_mesh_new_nomain_from_template(mesh, verts_num, edges_num, faces_num, loops_num); } else { - result = BKE_mesh_new_nomain(verts_num, edges_num, loops_num, faces_num); + result = BKE_mesh_new_nomain(verts_num, edges_num, faces_num, loops_num); BKE_id_material_eval_ensure_default_slot(&result->id); } BKE_mesh_smooth_flag_set(result, false); diff --git a/source/blender/nodes/geometry/nodes/node_geo_curve_fill.cc b/source/blender/nodes/geometry/nodes/node_geo_curve_fill.cc index 16a56539ef9..8f563fa52ad 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_curve_fill.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_curve_fill.cc @@ -79,7 +79,7 @@ static Mesh *cdt_to_mesh(const meshintersect::CDT_result &result) loop_len += face.size(); } - Mesh *mesh = BKE_mesh_new_nomain(vert_len, edge_len, loop_len, poly_len); + Mesh *mesh = BKE_mesh_new_nomain(vert_len, edge_len, poly_len, loop_len); MutableSpan positions = mesh->vert_positions_for_write(); mesh->edges_for_write().copy_from(result.edge.as_span().cast()); MutableSpan poly_offsets = mesh->poly_offsets_for_write(); diff --git a/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc b/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc index 2fdb9ff8d9b..222e8ac0d75 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc @@ -913,8 +913,8 @@ static void do_mesh_separation(GeometrySet &geometry_set, mesh_out = BKE_mesh_new_nomain_from_template(&mesh_in, selected_verts_num, selected_edges_num, - selected_loops_num, - selected_polys_num); + selected_polys_num, + selected_loops_num); /* Copy the selected parts of the mesh over to the new mesh. */ copy_masked_edges_to_new_mesh(mesh_in, *mesh_out, vertex_map, edge_map); @@ -986,7 +986,7 @@ static void do_mesh_separation(GeometrySet &geometry_set, break; } mesh_out = BKE_mesh_new_nomain_from_template( - &mesh_in, mesh_in.totvert, selected_edges_num, selected_loops_num, selected_polys_num); + &mesh_in, mesh_in.totvert, selected_edges_num, selected_polys_num, selected_loops_num); /* Copy the selected parts of the mesh over to the new mesh. */ copy_masked_edges_to_new_mesh(mesh_in, *mesh_out, edge_map); @@ -1049,7 +1049,7 @@ static void do_mesh_separation(GeometrySet &geometry_set, break; } mesh_out = BKE_mesh_new_nomain_from_template( - &mesh_in, mesh_in.totvert, mesh_in.totedge, selected_loops_num, selected_polys_num); + &mesh_in, mesh_in.totvert, mesh_in.totedge, selected_polys_num, selected_loops_num); /* Copy the selected parts of the mesh over to the new mesh. */ mesh_out->edges_for_write().copy_from(mesh_in.edges()); diff --git a/source/blender/nodes/geometry/nodes/node_geo_dual_mesh.cc b/source/blender/nodes/geometry/nodes/node_geo_dual_mesh.cc index 868ffaa5521..9eb00fd9d46 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_dual_mesh.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_dual_mesh.cc @@ -869,7 +869,7 @@ static Mesh *calc_dual_mesh(const Mesh &src_mesh, } } Mesh *mesh_out = BKE_mesh_new_nomain( - vert_positions.size(), new_edges.size(), loops.size(), loop_lengths.size()); + vert_positions.size(), new_edges.size(), loop_lengths.size(), loops.size()); BKE_mesh_smooth_flag_set(mesh_out, false); transfer_attributes(vertex_types, diff --git a/source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc b/source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc index 4f7d7d49fb3..23f55a6dd25 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc @@ -512,7 +512,7 @@ static void duplicate_faces(GeometrySet &geometry_set, const OffsetIndices duplicates(offset_data); - Mesh *new_mesh = BKE_mesh_new_nomain(total_loops, total_loops, total_loops, total_polys); + Mesh *new_mesh = BKE_mesh_new_nomain(total_loops, total_loops, total_polys, total_loops); MutableSpan new_edges = new_mesh->edges_for_write(); MutableSpan new_poly_offsets = new_mesh->poly_offsets_for_write(); MutableSpan new_corner_verts = new_mesh->corner_verts_for_write(); diff --git a/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_circle.cc b/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_circle.cc index f846bc924e5..239077e0f44 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_circle.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_circle.cc @@ -110,8 +110,8 @@ static Mesh *create_circle_mesh(const float radius, { Mesh *mesh = BKE_mesh_new_nomain(circle_vert_total(fill_type, verts_num), circle_edge_total(fill_type, verts_num), - circle_corner_total(fill_type, verts_num), - circle_face_total(fill_type, verts_num)); + circle_face_total(fill_type, verts_num), + circle_corner_total(fill_type, verts_num)); BKE_id_material_eval_ensure_default_slot(&mesh->id); MutableSpan positions = mesh->vert_positions_for_write(); MutableSpan edges = mesh->edges_for_write(); diff --git a/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cone.cc b/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cone.cc index 7ea33b376ce..6ba771768f5 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cone.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cone.cc @@ -704,7 +704,7 @@ Mesh *create_cylinder_or_cone_mesh(const float radius_top, } Mesh *mesh = BKE_mesh_new_nomain( - config.tot_verts, config.tot_edges, config.tot_corners, config.tot_faces); + config.tot_verts, config.tot_edges, config.tot_faces, config.tot_corners); BKE_id_material_eval_ensure_default_slot(&mesh->id); MutableSpan positions = mesh->vert_positions_for_write(); diff --git a/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_grid.cc b/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_grid.cc index 0e7d78a25fd..5703eea738c 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_grid.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_grid.cc @@ -51,8 +51,8 @@ Mesh *create_grid_mesh(const int verts_x, const int edges_y = verts_y - 1; Mesh *mesh = BKE_mesh_new_nomain(verts_x * verts_y, edges_x * verts_y + edges_y * verts_x, - edges_x * edges_y * 4, - edges_x * edges_y); + edges_x * edges_y, + edges_x * edges_y * 4); MutableSpan positions = mesh->vert_positions_for_write(); MutableSpan edges = mesh->edges_for_write(); MutableSpan poly_offsets = mesh->poly_offsets_for_write(); diff --git a/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_uv_sphere.cc b/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_uv_sphere.cc index 5d5f25a944f..d49ddb439ba 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_uv_sphere.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_uv_sphere.cc @@ -306,8 +306,8 @@ static Mesh *create_uv_sphere_mesh(const float radius, { Mesh *mesh = BKE_mesh_new_nomain(sphere_vert_total(segments, rings), sphere_edge_total(segments, rings), - sphere_corner_total(segments, rings), - sphere_face_total(segments, rings)); + sphere_face_total(segments, rings), + sphere_corner_total(segments, rings)); BKE_id_material_eval_ensure_default_slot(&mesh->id); MutableSpan positions = mesh->vert_positions_for_write(); MutableSpan edges = mesh->edges_for_write(); diff --git a/source/blender/nodes/geometry/nodes/node_geo_volume_to_mesh.cc b/source/blender/nodes/geometry/nodes/node_geo_volume_to_mesh.cc index 8686832e38b..5ba2ebcc9d1 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_volume_to_mesh.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_volume_to_mesh.cc @@ -123,7 +123,7 @@ static Mesh *create_mesh_from_volume_grids(Span gri loop_offset += (3 * data.tris.size() + 4 * data.quads.size()); } - Mesh *mesh = BKE_mesh_new_nomain(vert_offset, 0, loop_offset, poly_offset); + Mesh *mesh = BKE_mesh_new_nomain(vert_offset, 0, poly_offset, loop_offset); BKE_id_material_eval_ensure_default_slot(&mesh->id); MutableSpan positions = mesh->vert_positions_for_write(); MutableSpan dst_poly_offsets = mesh->poly_offsets_for_write(); diff --git a/source/blender/nodes/shader/nodes/node_shader_invert.cc b/source/blender/nodes/shader/nodes/node_shader_invert.cc index 3a3cebde7e0..32161030bad 100644 --- a/source/blender/nodes/shader/nodes/node_shader_invert.cc +++ b/source/blender/nodes/shader/nodes/node_shader_invert.cc @@ -33,7 +33,7 @@ void register_node_type_sh_invert() static bNodeType ntype; - sh_node_type_base(&ntype, SH_NODE_INVERT, "Invert", NODE_CLASS_OP_COLOR); + sh_node_type_base(&ntype, SH_NODE_INVERT, "Invert Color", NODE_CLASS_OP_COLOR); ntype.declare = file_ns::node_declare; ntype.gpu_fn = file_ns::gpu_shader_invert; diff --git a/source/blender/nodes/texture/nodes/node_texture_invert.cc b/source/blender/nodes/texture/nodes/node_texture_invert.cc index 9253a2701d3..46e29a63b3a 100644 --- a/source/blender/nodes/texture/nodes/node_texture_invert.cc +++ b/source/blender/nodes/texture/nodes/node_texture_invert.cc @@ -47,7 +47,7 @@ void register_node_type_tex_invert() { static bNodeType ntype; - tex_node_type_base(&ntype, TEX_NODE_INVERT, "Invert", NODE_CLASS_OP_COLOR); + tex_node_type_base(&ntype, TEX_NODE_INVERT, "Invert Color", NODE_CLASS_OP_COLOR); node_type_socket_templates(&ntype, inputs, outputs); ntype.exec_fn = exec; diff --git a/source/blender/render/intern/bake.cc b/source/blender/render/intern/bake.cc index b6600a43d9e..3cffb99078b 100644 --- a/source/blender/render/intern/bake.cc +++ b/source/blender/render/intern/bake.cc @@ -579,7 +579,7 @@ bool RE_bake_pixels_populate_from_objects(Mesh *me_low, treeData = MEM_cnew_array(tot_highpoly, "Highpoly BVH Trees"); if (!is_cage) { - me_eval_low = BKE_mesh_copy_for_eval(me_low, false); + me_eval_low = BKE_mesh_copy_for_eval(me_low); tris_low = mesh_calc_tri_tessface(me_low, true, me_eval_low); } else if (is_custom_cage) { @@ -854,7 +854,7 @@ void RE_bake_normal_world_to_tangent(const BakePixel pixel_array[], TriTessFace *triangles; - Mesh *me_eval = BKE_mesh_copy_for_eval(me, false); + Mesh *me_eval = BKE_mesh_copy_for_eval(me); triangles = mesh_calc_tri_tessface(me, true, me_eval); diff --git a/source/blender/render/intern/multires_bake.cc b/source/blender/render/intern/multires_bake.cc index fedddec9025..097fad22b45 100644 --- a/source/blender/render/intern/multires_bake.cc +++ b/source/blender/render/intern/multires_bake.cc @@ -492,7 +492,7 @@ static void do_multires_bake(MultiresBakeRender *bkr, void *bake_data = nullptr; Mesh *temp_mesh = BKE_mesh_new_nomain( - dm->getNumVerts(dm), dm->getNumEdges(dm), dm->getNumLoops(dm), dm->getNumPolys(dm)); + dm->getNumVerts(dm), dm->getNumEdges(dm), dm->getNumPolys(dm), dm->getNumLoops(dm)); temp_mesh->vert_positions_for_write().copy_from( {reinterpret_cast(dm->getVertArray(dm)), temp_mesh->totvert}); temp_mesh->edges_for_write().copy_from(