58 const Mesh *me_settings);
61 const Mesh *me_settings);
118 const Mesh *me_src,
int verts_num,
int edges_num,
int faces_num,
int corners_num);
167 char **r_texspace_flag,
168 float **r_texspace_location,
169 float **r_texspace_size);
183 bool preserve_all_data_layers,
184 bool preserve_origindex);
194 bool preserve_all_data_layers);
311 const float vec_ref[3],
312 const float vec_other[3],
329 const short clnor_data[2],
330 float r_custom_lnor[3]);
332 const float custom_lnor[3],
333 short r_clnor_data[2]);
342 const int *corner_verts,
344 const float (*clnors)[3],
345 float (*r_vert_clnors)[3]);
370 float (*r_custom_vert_normals)[3]);
399 const int *corner_verts,
433 const int *corner_verts,
436 const float (*vert_cos_src)[3],
437 const float (*vert_cos_dst)[3],
439 const float (*vert_cos_org)[3],
440 float (*vert_cos_new)[3]);
467 float (*vert_positions)[3],
468 unsigned int verts_num,
470 unsigned int edges_num,
472 unsigned int legacy_faces_num,
473 const int *corner_verts,
475 unsigned int corners_num,
476 const int *face_offsets,
477 unsigned int faces_num,
void BKE_mesh_batch_cache_dirty_tag(Mesh *mesh, eMeshBatchDirtyMode mode)
void BKE_lnor_space_custom_data_to_normal(const MLoopNorSpace *lnor_space, const short clnor_data[2], float r_custom_lnor[3])
MLoopNorSpace * BKE_lnor_space_create(MLoopNorSpaceArray *lnors_spacearr)
Mesh * BKE_mesh_new_nomain_from_curve(const Object *ob)
bool BKE_mesh_attribute_required(const char *name)
void BKE_mesh_mselect_clear(Mesh *mesh)
bool BKE_mesh_center_of_surface(const Mesh *mesh, float r_cent[3])
void BKE_mesh_to_curve_nurblist(const Mesh *mesh, ListBase *nurblist, int edge_users_test)
void BKE_mesh_strip_loose_faces(Mesh *mesh)
void(* BKE_mesh_batch_cache_free_cb)(void *batch_cache)
@ MLNOR_SPACEARR_LOOP_INDEX
@ MLNOR_SPACEARR_BMLOOP_PTR
void BKE_mesh_copy_parameters_for_eval(Mesh *me_dst, const Mesh *me_src)
void BKE_mesh_set_custom_normals(Mesh *mesh, float(*r_custom_loop_normals)[3])
void BKE_mesh_tessface_clear(Mesh *mesh)
void BKE_mesh_to_curve(Main *bmain, Depsgraph *depsgraph, Scene *scene, Object *ob)
Mesh * BKE_mesh_new_nomain_from_template(const Mesh *me_src, int verts_num, int edges_num, int faces_num, int corners_num)
void BKE_mesh_ensure_skin_customdata(Mesh *mesh)
void BKE_mesh_calc_volume(const float(*vert_positions)[3], int mverts_num, const blender::int3 *corner_tris, int corner_tris_num, const int *corner_verts, float *r_volume, float r_center[3])
blender::Array< blender::float3 > BKE_mesh_orco_verts_get(const Object *ob)
bool BKE_mesh_validate_material_indices(Mesh *mesh)
Mesh * BKE_mesh_from_bmesh_nomain(BMesh *bm, const BMeshToMeshParams *params, const Mesh *me_settings)
void BKE_mesh_clear_geometry_and_metadata(Mesh *mesh)
bool BKE_mesh_validate(Mesh *mesh, bool do_verbose, bool cddata_check_mask)
void BKE_mesh_to_pointcloud(Main *bmain, Depsgraph *depsgraph, Scene *scene, Object *ob)
void BKE_mesh_orco_verts_transform(Mesh *mesh, blender::MutableSpan< blender::float3 > orco, bool invert)
void BKE_lnor_space_custom_normal_to_data(const MLoopNorSpace *lnor_space, const float custom_lnor[3], short r_clnor_data[2])
bool BKE_mesh_vert_normals_are_dirty(const Mesh *mesh)
int BKE_mesh_mselect_active_get(const Mesh *mesh, int type)
void BKE_mesh_nomain_to_meshkey(Mesh *mesh_src, Mesh *mesh_dst, KeyBlock *kb)
bool BKE_mesh_validate_all_customdata(CustomData *vert_data, uint verts_num, CustomData *edge_data, uint edges_num, CustomData *corner_data, uint corners_num, CustomData *face_data, uint faces_num, bool check_meshmask, bool do_verbose, bool do_fixes, bool *r_change)
void BKE_mesh_orco_ensure(Object *ob, Mesh *mesh)
void BKE_pointcloud_to_mesh(Main *bmain, Depsgraph *depsgraph, Scene *scene, Object *ob)
void BKE_mesh_count_selected_items(const Mesh *mesh, int r_count[3])
Mesh * BKE_mesh_new_nomain(int verts_num, int edges_num, int faces_num, int corners_num)
bool BKE_mesh_has_custom_loop_normals(Mesh *mesh)
void BKE_mesh_material_remap(Mesh *mesh, const unsigned int *remap, unsigned int remap_len)
void BKE_mesh_texspace_ensure(Mesh *mesh)
void BKE_lnor_space_add_loop(MLoopNorSpaceArray *lnors_spacearr, MLoopNorSpace *lnor_space, int corner, void *bm_loop, bool is_single)
void BKE_mesh_nomain_to_mesh(Mesh *mesh_src, Mesh *mesh_dst, Object *ob)
void BKE_mesh_mselect_active_set(Mesh *mesh, int index, int type)
void BKE_mesh_debug_print(const Mesh *mesh) ATTR_NONNULL(1)
Mesh * BKE_mesh_add(Main *bmain, const char *name)
void BKE_mesh_assign_object(Main *bmain, Object *ob, Mesh *mesh)
bool BKE_mesh_material_index_used(Mesh *mesh, short index)
void BKE_lnor_spacearr_clear(MLoopNorSpaceArray *lnors_spacearr)
Mesh * BKE_mesh_new_nomain_from_curve_displist(const Object *ob, const ListBase *dispbase)
void BKE_lnor_spacearr_init(MLoopNorSpaceArray *lnors_spacearr, int numLoops, char data_type)
void BKE_mesh_merge_customdata_for_apply_modifier(Mesh *mesh)
void BKE_mesh_calc_relative_deform(const int *face_offsets, int faces_num, const int *corner_verts, int totvert, const float(*vert_cos_src)[3], const float(*vert_cos_dst)[3], const float(*vert_cos_org)[3], float(*vert_cos_new)[3])
void BKE_mesh_copy_parameters(Mesh *me_dst, const Mesh *me_src)
Mesh * BKE_mesh_copy_for_eval(const Mesh &source)
void BKE_mesh_translate(Mesh *mesh, const float offset[3], bool do_keys)
void BKE_mesh_mselect_validate(Mesh *mesh)
void(* BKE_mesh_batch_cache_dirty_tag_cb)(Mesh *mesh, eMeshBatchDirtyMode mode)
void BKE_mesh_batch_cache_free(void *batch_cache)
Mesh * BKE_mesh_new_from_object(Depsgraph *depsgraph, Object *object, bool preserve_all_data_layers, bool preserve_origindex)
bool BKE_mesh_face_normals_are_dirty(const Mesh *mesh)
void BKE_mesh_free_editmesh(Mesh *mesh)
Mesh * BKE_mesh_from_bmesh_for_eval_nomain(BMesh *bm, const CustomData_MeshMasks *cd_mask_extra, const Mesh *me_settings)
float BKE_mesh_calc_area(const Mesh *mesh)
Mesh * BKE_mesh_from_object(Object *ob)
int BKE_mesh_mselect_find(const Mesh *mesh, int index, int type)
BMesh * BKE_mesh_to_bmesh(Mesh *mesh, Object *ob, bool add_key_index, const BMeshCreateParams *params)
bool BKE_mesh_is_valid(Mesh *mesh)
void BKE_mesh_texspace_get(Mesh *mesh, float r_texspace_location[3], float r_texspace_size[3])
@ BKE_MESH_BATCH_DIRTY_UVEDIT_ALL
@ BKE_MESH_BATCH_DIRTY_SELECT_PAINT
@ BKE_MESH_BATCH_DIRTY_SHADING
@ BKE_MESH_BATCH_DIRTY_UVEDIT_SELECT
@ BKE_MESH_BATCH_DIRTY_ALL
@ BKE_MESH_BATCH_DIRTY_SELECT
void BKE_mesh_normals_loop_to_vertex(int numVerts, const int *corner_verts, int numLoops, const float(*clnors)[3], float(*r_vert_clnors)[3])
void BKE_mesh_set_custom_normals_from_verts_normalized(Mesh *mesh, float(*r_custom_vert_normals)[3])
void BKE_mesh_set_custom_normals_normalized(Mesh *mesh, float(*r_custom_loop_normals)[3])
bool BKE_mesh_center_median(const Mesh *mesh, float r_cent[3])
void BKE_mesh_set_custom_normals_from_verts(Mesh *mesh, float(*r_custom_vert_normals)[3])
void BKE_mesh_material_index_clear(Mesh *mesh)
void BKE_mesh_free_data_for_undo(Mesh *mesh)
void BKE_mesh_mdisp_flip(MDisps *md, bool use_loop_mdisp_flip)
void BKE_lnor_space_define(MLoopNorSpace *lnor_space, const float lnor[3], const float vec_ref[3], const float vec_other[3], blender::Span< blender::float3 > edge_vectors)
void BKE_lnor_spacearr_free(MLoopNorSpaceArray *lnors_spacearr)
char * BKE_mesh_debug_info(const Mesh *mesh) ATTR_NONNULL(1) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
bool BKE_mesh_validate_arrays(Mesh *mesh, float(*vert_positions)[3], unsigned int verts_num, blender::int2 *edges, unsigned int edges_num, MFace *legacy_faces, unsigned int legacy_faces_num, const int *corner_verts, int *corner_edges, unsigned int corners_num, const int *face_offsets, unsigned int faces_num, MDeformVert *dverts, bool do_verbose, bool do_fixes, bool *r_change)
void BKE_mesh_material_index_remove(Mesh *mesh, short index)
void BKE_mesh_texspace_get_reference(Mesh *mesh, char **r_texspace_flag, float **r_texspace_location, float **r_texspace_size)
void BKE_mesh_eval_geometry(Depsgraph *depsgraph, Mesh *mesh)
void BKE_mesh_clear_geometry(Mesh *mesh)
Mesh * BKE_mesh_new_nomain_from_template_ex(const Mesh *me_src, int verts_num, int edges_num, int tessface_num, int faces_num, int corners_num, CustomData_MeshMasks mask)
void BKE_mesh_face_offsets_ensure_alloc(Mesh *mesh)
void BKE_lnor_spacearr_tls_join(MLoopNorSpaceArray *lnors_spacearr, MLoopNorSpaceArray *lnors_spacearr_tls)
BMesh * BKE_mesh_to_bmesh_ex(const Mesh *mesh, const BMeshCreateParams *create_params, const BMeshFromMeshParams *convert_params)
Mesh * BKE_mesh_new_from_object_to_bmain(Main *bmain, Depsgraph *depsgraph, Object *object, bool preserve_all_data_layers)
void BKE_mesh_ensure_default_orig_index_customdata(Mesh *mesh)
bool BKE_mesh_center_median_from_faces(const Mesh *mesh, float r_cent[3])
void BKE_mesh_ensure_default_orig_index_customdata_no_check(Mesh *mesh)
void BKE_lnor_spacearr_tls_init(MLoopNorSpaceArray *lnors_spacearr, MLoopNorSpaceArray *lnors_spacearr_tls)
bool BKE_mesh_center_of_volume(const Mesh *mesh, float r_cent[3])
void BKE_mesh_texspace_calc(Mesh *mesh)
void BKE_mesh_transform(Mesh *mesh, const float mat[4][4], bool do_keys)
#define ATTR_WARN_UNUSED_RESULT
#define ATTR_NONNULL(...)
ATTR_WARN_UNUSED_RESULT BMesh * bm
const Depsgraph * depsgraph
CCL_NAMESPACE_BEGIN ccl_device float invert(float color, float factor)
struct LinkNode * loops_pool
MLoopNorSpace ** lspacearr