84 for (
int med_index = 0; med_index < mr->
edge_len; med_index++, med++) {
120 if (eve->
e ==
nullptr) {
138 if (ede->
l ==
nullptr) {
150 const eMRIterType iter_type,
153 if ((iter_type & (MR_ITER_LEDGE | MR_ITER_LVERT)) || (data_flag &
MR_DATA_LOOSE_GEOM)) {
199 int *tri_first_index =
static_cast<int *
>(
204 int visible_tri_len = 0;
207 for (
int i = 0; i < mr->
mat_len; i++) {
208 mat_tri_offs[i] = visible_tri_len;
209 visible_tri_len += mat_tri_len[i];
214 int mat_last = mr->
mat_len - 1;
222 tri_first_index[i] = mat_tri_offs[mat];
223 mat_tri_offs[mat] += f->
len - 2;
226 tri_first_index[i] = -1;
232 for (
int i = 0; i < mr->
poly_len; i++, mp++) {
235 tri_first_index[i] = mat_tri_offs[mat];
236 mat_tri_offs[mat] += mp->
totloop - 2;
239 tri_first_index[i] = -1;
254 int *mat_tri_len =
static_cast<int *
>(tls->userdata_chunk);
260 mat_tri_len[mat] += efa->
len - 2;
269 int *mat_tri_len =
static_cast<int *
>(tls->userdata_chunk);
274 mat_tri_len[mat] += mp->
totloop - 2;
279 void *__restrict chunk_join,
280 void *__restrict chunk)
283 int *dst_mat_len =
static_cast<int *
>(chunk_join);
284 int *src_mat_len =
static_cast<int *
>(chunk);
285 for (
int i = 0; i < mr->
mat_len; i++) {
286 dst_mat_len[i] += src_mat_len[i];
295 size_t mat_tri_len_size =
sizeof(int) * mr->
mat_len;
296 int *mat_tri_len =
static_cast<int *
>(
MEM_callocN(mat_tri_len_size, __func__));
328 const eMRIterType iter_type,
379 short(*clnors)[2] =
static_cast<short(*)[2]
>(
406 const float(*vert_coords)[3] =
nullptr;
407 const float(*vert_normals)[3] =
nullptr;
408 const float(*poly_normals)[3] =
nullptr;
443 Mesh me_query = blender::dna::shallow_zero_initialize();
445 ID_ME, cd_vdata,
nullptr, cd_ldata,
nullptr,
nullptr, &me_query.
id);
460 const bool is_editmode,
461 const bool is_paint_mode,
462 const bool is_mode_active,
463 const float obmat[4][4],
465 const bool do_uvedit,
478 BLI_assert(editmesh_eval_cage && editmesh_eval_final);
481 mr->
me = (do_final) ? editmesh_eval_final : editmesh_eval_cage;
505 bool use_mapped = is_mode_active &&
521 #ifdef WITH_FREESTYLE
541 if (has_mdata && do_final && editmesh_eval_final != editmesh_eval_cage) {
typedef float(TangentPoint)[2]
struct CustomDataLayer * BKE_id_attributes_active_color_get(const struct ID *id)
struct CustomDataLayer * BKE_id_attributes_render_color_get(const struct ID *id)
void BKE_id_attribute_copy_domains_temp(short id_type, const struct CustomData *vdata, const struct CustomData *edata, const struct CustomData *ldata, const struct CustomData *pdata, const struct CustomData *cdata, struct ID *r_id)
void * CustomData_get_layer(const struct CustomData *data, int type)
int CustomData_get_offset(const struct CustomData *data, int type)
void BKE_editmesh_cache_ensure_vert_normals(struct BMEditMesh *em, struct EditMeshData *emd)
void BKE_editmesh_cache_ensure_poly_normals(struct BMEditMesh *em, struct EditMeshData *emd)
const float(* BKE_mesh_poly_normals_ensure(const struct Mesh *mesh))[3]
const float(* BKE_mesh_vertex_normals_ensure(const struct Mesh *mesh))[3]
void BKE_mesh_recalc_looptri_with_normals(const struct MLoop *mloop, const struct MPoly *mpoly, const struct MVert *mvert, int totloop, int totpoly, struct MLoopTri *mlooptri, const float(*poly_normals)[3])
void BKE_mesh_recalc_looptri(const struct MLoop *mloop, const struct MPoly *mpoly, const struct MVert *mvert, int totloop, int totpoly, struct MLoopTri *mlooptri)
void BKE_mesh_normals_loop_split(const struct MVert *mverts, const float(*vert_normals)[3], int numVerts, struct MEdge *medges, int numEdges, struct MLoop *mloops, float(*r_loopnors)[3], int numLoops, struct MPoly *mpolys, const float(*polynors)[3], int numPolys, bool use_split_normals, float split_angle, MLoopNorSpaceArray *r_lnors_spacearr, short(*clnors_data)[2], int *r_loop_to_poly)
struct Mesh * BKE_object_get_editmesh_eval_final(const struct Object *object)
struct Mesh * BKE_object_get_editmesh_eval_cage(const struct Object *object)
#define BLI_BITMAP_NEW(_num, _alloc_string)
#define BLI_BITMAP_TEST(_bitmap, _index)
#define BLI_BITMAP_ENABLE(_bitmap, _index)
MINLINE int min_ii(int a, int b)
MINLINE int poly_to_tri_count(int poly_count, int corner_count)
void copy_m4_m4(float m1[4][4], const float m2[4][4])
void BLI_task_parallel_range(int start, int stop, void *userdata, TaskParallelRangeFunc func, const TaskParallelSettings *settings)
void(* TaskParallelRangeFunc)(void *__restrict userdata, int iter, const TaskParallelTLS *__restrict tls)
BLI_INLINE void BLI_parallel_range_settings_defaults(TaskParallelSettings *settings)
struct BMFace * EDBM_uv_active_face_get(struct BMEditMesh *em, bool sloppy, bool selected)
Read Guarded memory(de)allocation.
#define MEM_reallocN(vmemh, len)
#define BM_elem_flag_test(ele, hflag)
#define BM_ITER_MESH_INDEX(ele, iter, bm, itype, indexvar)
ATTR_WARN_UNUSED_RESULT BMesh * bm
BMEdge * BM_mesh_active_edge_get(BMesh *bm)
BMVert * BM_mesh_active_vert_get(BMesh *bm)
BMFace * BM_mesh_active_face_get(BMesh *bm, const bool is_sloppy, const bool is_selected)
void BM_mesh_elem_table_ensure(BMesh *bm, const char htype)
void BM_mesh_elem_index_ensure(BMesh *bm, const char htype)
BLI_INLINE BMFace * BM_face_at_index(BMesh *bm, const int index)
void BM_loops_calc_normal_vcos(BMesh *bm, const float(*vcos)[3], const float(*vnos)[3], const float(*fnos)[3], const bool use_split_normals, const float split_angle, float(*r_lnos)[3], MLoopNorSpaceArray *r_lnors_spacearr, short(*clnors_data)[2], const int cd_loop_clnors_offset, const bool do_rebuild)
BMesh Compute Loop Normals from/to external data.
ATTR_WARN_UNUSED_RESULT const BMVert * v
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
bool active
all scheduled work for the GPU.
struct BMLoop *(* looptris)[3]
float const (* polyNos)[3]
const float(* polyCos)[3]
float const (* vertexNos)[3]
const float(* vertexCos)[3]
MeshExtractLooseGeom loose_geom
struct MeshBufferCache::@274 poly_sorted
eMRExtractType extract_type
const float(* bm_vert_normals)[3]
const float(* poly_normals)[3]
const float(* bm_poly_centers)[3]
const float(* vert_normals)[3]
const float(* bm_poly_normals)[3]
const char * default_color_name
const float(* bm_vert_coords)[3]
const ToolSettings * toolsettings
const char * active_color_name
struct MeshRenderData::@319 poly_sorted
struct EditMeshData * edit_data
struct BMEditMesh * edit_mesh
TaskParallelReduceFunc func_reduce
size_t userdata_chunk_size