33 if (uv_a[0] == uv_b[0] && uv_a[1] == uv_b[1]) {
50 const float diff_abs = 1e-12f;
51 const int diff_ulp = 12;
62 if (loops_for_vert.
size() <= 1) {
68 for (
MLoopUV *mloopuv : mloopuv_layers) {
71 while (loops_merge.
size() > 1) {
73 const float *uv_src = mloopuv[loops_merge[0]].uv;
74 for (
uint i = 1; i <= i_last;) {
75 float *uv_dst = mloopuv[loops_merge[i]].uv;
78 uv_dst[0] = uv_src[0];
79 uv_dst[1] = uv_src[1];
83 loops_merge[i] = loops_merge[i_last--];
97 loops_merge[0] = loops_merge[i_last];
98 loops_merge.
resize(i_last);
110 if (mloopuv_layers_num == 0) {
120 mloopuv_layers.
reserve(mloopuv_layers_num);
121 for (
int a = 0;
a < mloopuv_layers_num;
a++) {
128 for (const int64_t v_index : range) {
129 MeshElemMap &loops_for_vert = vert_to_loop[v_index];
130 Span<int> loops_for_vert_span(loops_for_vert.indices, loops_for_vert.count);
131 merge_uvs_for_vertex(loops_for_vert_span, mloopuv_layers_as_span);
CustomData interface, see also DNA_customdata_types.h.
int CustomData_number_of_layers(const struct CustomData *data, int type)
void * CustomData_get_layer_n(const struct CustomData *data, int type, int n)
void BKE_mesh_vert_loop_map_create(MeshElemMap **r_map, int **r_mem, const struct MPoly *mpoly, const struct MLoop *mloop, int totvert, int totpoly, int totloop)
#define BLI_assert_unreachable()
MINLINE int compare_ff_relative(float a, float b, float max_diff, int max_ulps)
Strict compiler flags for areas of code we want to ensure don't do conversions without us knowing abo...
Read Guarded memory(de)allocation.
constexpr int64_t size() const
Span< T > as_span() const
void resize(const int64_t new_size)
void extend_unchecked(Span< T > array)
void append_unchecked(const T &value)
void reserve(const int64_t min_capacity)
void(* MEM_freeN)(void *vmemh)
static void merge_uvs_for_vertex(const Span< int > loops_for_vert, Span< MLoopUV * > mloopuv_layers)
static int compare_v2_classify(const float uv_a[2], const float uv_b[2])
void BKE_mesh_merge_customdata_for_apply_modifier(Mesh *me)
void parallel_for(IndexRange range, int64_t grain_size, const Function &function)