Merge branch 'master' into blender2.8
This commit is contained in:
commit
90ebf4832f
|
@ -70,6 +70,10 @@ public:
|
|||
delete split_kernel;
|
||||
}
|
||||
|
||||
virtual bool show_samples() const {
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual bool load_kernels(const DeviceRequestedFeatures& requested_features,
|
||||
vector<OpenCLDeviceBase::OpenCLProgram*> &programs)
|
||||
{
|
||||
|
|
|
@ -479,6 +479,10 @@ ccl_device void subsurface_scatter_step(KernelGlobals *kg, ShaderData *sd, ccl_g
|
|||
if(ss_isect.num_hits > 0) {
|
||||
float3 origP = sd->P;
|
||||
|
||||
/* Workaround for AMD GPU OpenCL compiler. Most probably cache bypass issue. */
|
||||
#if defined(__SPLIT_KERNEL__) && defined(__KERNEL_OPENCL_AMD__) && defined(__KERNEL_GPU__)
|
||||
kernel_split_params.dummy_sd_flag = sd->flag;
|
||||
#endif
|
||||
/* setup new shading point */
|
||||
shader_setup_from_subsurface(kg, sd, &ss_isect.hits[0], &ray);
|
||||
|
||||
|
|
|
@ -118,15 +118,14 @@ ccl_device void kernel_do_volume(KernelGlobals *kg)
|
|||
PathRadiance *L = &kernel_split_state.path_radiance[ray_index];
|
||||
ccl_global PathState *state = &kernel_split_state.path_state[ray_index];
|
||||
|
||||
ccl_global float3 *throughput = &kernel_split_state.throughput[ray_index];
|
||||
ccl_global Ray *ray = &kernel_split_state.ray[ray_index];
|
||||
RNG rng = kernel_split_state.rng[ray_index];
|
||||
ccl_global Intersection *isect = &kernel_split_state.isect[ray_index];
|
||||
ShaderData *sd = &kernel_split_state.sd[ray_index];
|
||||
ShaderData *emission_sd = &kernel_split_state.sd_DL_shadow[ray_index];
|
||||
|
||||
if(IS_STATE(ray_state, ray_index, RAY_ACTIVE) ||
|
||||
IS_STATE(ray_state, ray_index, RAY_HIT_BACKGROUND)) {
|
||||
ccl_global float3 *throughput = &kernel_split_state.throughput[ray_index];
|
||||
ccl_global Ray *ray = &kernel_split_state.ray[ray_index];
|
||||
RNG rng = kernel_split_state.rng[ray_index];
|
||||
ccl_global Intersection *isect = &kernel_split_state.isect[ray_index];
|
||||
ShaderData *sd = &kernel_split_state.sd[ray_index];
|
||||
ShaderData *emission_sd = &kernel_split_state.sd_DL_shadow[ray_index];
|
||||
|
||||
bool hit = ! IS_STATE(ray_state, ray_index, RAY_HIT_BACKGROUND);
|
||||
|
||||
|
|
|
@ -31,14 +31,6 @@ ccl_device_inline uint64_t split_data_buffer_size(KernelGlobals *kg, size_t num_
|
|||
size = size SPLIT_DATA_ENTRIES;
|
||||
#undef SPLIT_DATA_ENTRY
|
||||
|
||||
#ifdef __SUBSURFACE__
|
||||
size += align_up(num_elements * sizeof(SubsurfaceIndirectRays), 16); /* ss_rays */
|
||||
#endif
|
||||
|
||||
#ifdef __VOLUME__
|
||||
size += align_up(2 * num_elements * sizeof(PathState), 16); /* state_shadow */
|
||||
#endif
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
|
@ -57,16 +49,6 @@ ccl_device_inline void split_data_init(KernelGlobals *kg,
|
|||
SPLIT_DATA_ENTRIES;
|
||||
#undef SPLIT_DATA_ENTRY
|
||||
|
||||
#ifdef __SUBSURFACE__
|
||||
split_data->ss_rays = (ccl_global SubsurfaceIndirectRays*)p;
|
||||
p += align_up(num_elements * sizeof(SubsurfaceIndirectRays), 16);
|
||||
#endif
|
||||
|
||||
#ifdef __VOLUME__
|
||||
split_data->state_shadow = (ccl_global PathState*)p;
|
||||
p += align_up(2 * num_elements * sizeof(PathState), 16);
|
||||
#endif
|
||||
|
||||
split_data->ray_state = ray_state;
|
||||
}
|
||||
|
||||
|
|
|
@ -103,6 +103,20 @@ typedef ccl_global struct SplitBranchedState {
|
|||
#define SPLIT_DATA_BRANCHED_ENTRIES
|
||||
#endif /* __BRANCHED_PATH__ */
|
||||
|
||||
#ifdef __SUBSURFACE__
|
||||
# define SPLIT_DATA_SUBSURFACE_ENTRIES \
|
||||
SPLIT_DATA_ENTRY(ccl_global SubsurfaceIndirectRays, ss_rays, 1)
|
||||
#else
|
||||
# define SPLIT_DATA_SUBSURFACE_ENTRIES
|
||||
#endif /* __SUBSURFACE__ */
|
||||
|
||||
#ifdef __VOLUME__
|
||||
# define SPLIT_DATA_VOLUME_ENTRIES \
|
||||
SPLIT_DATA_ENTRY(ccl_global PathState, state_shadow, 1)
|
||||
#else
|
||||
# define SPLIT_DATA_VOLUME_ENTRIES
|
||||
#endif /* __VOLUME__ */
|
||||
|
||||
#define SPLIT_DATA_ENTRIES \
|
||||
SPLIT_DATA_ENTRY(ccl_global RNG, rng, 1) \
|
||||
SPLIT_DATA_ENTRY(ccl_global float3, throughput, 1) \
|
||||
|
@ -118,6 +132,8 @@ typedef ccl_global struct SplitBranchedState {
|
|||
SPLIT_DATA_ENTRY(ccl_global uint, work_array, 1) \
|
||||
SPLIT_DATA_ENTRY(ShaderData, sd, 1) \
|
||||
SPLIT_DATA_ENTRY(ShaderData, sd_DL_shadow, 1) \
|
||||
SPLIT_DATA_SUBSURFACE_ENTRIES \
|
||||
SPLIT_DATA_VOLUME_ENTRIES \
|
||||
SPLIT_DATA_BRANCHED_ENTRIES \
|
||||
SPLIT_DATA_DEBUG_ENTRIES \
|
||||
|
||||
|
@ -127,14 +143,6 @@ typedef struct SplitData {
|
|||
SPLIT_DATA_ENTRIES
|
||||
#undef SPLIT_DATA_ENTRY
|
||||
|
||||
#ifdef __SUBSURFACE__
|
||||
ccl_global SubsurfaceIndirectRays *ss_rays;
|
||||
#endif
|
||||
|
||||
#ifdef __VOLUME__
|
||||
ccl_global PathState *state_shadow;
|
||||
#endif
|
||||
|
||||
/* this is actually in a separate buffer from the rest of the split state data (so it can be read back from
|
||||
* the host easily) but is still used the same as the other data so we have it here in this struct as well
|
||||
*/
|
||||
|
|
|
@ -217,30 +217,32 @@ ccl_device void kernel_subsurface_scatter(KernelGlobals *kg)
|
|||
|
||||
#ifdef __SUBSURFACE__
|
||||
ccl_global char *ray_state = kernel_split_state.ray_state;
|
||||
ccl_global PathState *state = &kernel_split_state.path_state[ray_index];
|
||||
PathRadiance *L = &kernel_split_state.path_radiance[ray_index];
|
||||
RNG rng = kernel_split_state.rng[ray_index];
|
||||
ccl_global Ray *ray = &kernel_split_state.ray[ray_index];
|
||||
ccl_global float3 *throughput = &kernel_split_state.throughput[ray_index];
|
||||
ccl_global SubsurfaceIndirectRays *ss_indirect = &kernel_split_state.ss_rays[ray_index];
|
||||
ShaderData *sd = &kernel_split_state.sd[ray_index];
|
||||
ShaderData *emission_sd = &kernel_split_state.sd_DL_shadow[ray_index];
|
||||
|
||||
if(IS_STATE(ray_state, ray_index, RAY_ACTIVE)) {
|
||||
ccl_global PathState *state = &kernel_split_state.path_state[ray_index];
|
||||
PathRadiance *L = &kernel_split_state.path_radiance[ray_index];
|
||||
RNG rng = kernel_split_state.rng[ray_index];
|
||||
ccl_global Ray *ray = &kernel_split_state.ray[ray_index];
|
||||
ccl_global float3 *throughput = &kernel_split_state.throughput[ray_index];
|
||||
ccl_global SubsurfaceIndirectRays *ss_indirect = &kernel_split_state.ss_rays[ray_index];
|
||||
ShaderData *sd = &kernel_split_state.sd[ray_index];
|
||||
ShaderData *emission_sd = &kernel_split_state.sd_DL_shadow[ray_index];
|
||||
|
||||
if(sd->flag & SD_BSSRDF) {
|
||||
|
||||
#ifdef __BRANCHED_PATH__
|
||||
if(!kernel_data.integrator.branched) {
|
||||
#endif
|
||||
if(kernel_path_subsurface_scatter(kg,
|
||||
sd,
|
||||
emission_sd,
|
||||
L,
|
||||
state,
|
||||
&rng,
|
||||
ray,
|
||||
throughput,
|
||||
ss_indirect)) {
|
||||
sd,
|
||||
emission_sd,
|
||||
L,
|
||||
state,
|
||||
&rng,
|
||||
ray,
|
||||
throughput,
|
||||
ss_indirect))
|
||||
{
|
||||
kernel_split_path_end(kg, ray_index);
|
||||
}
|
||||
#ifdef __BRANCHED_PATH__
|
||||
|
|
|
@ -51,6 +51,11 @@ enum {
|
|||
* This means callback shall not *do* anything, only use this as informative data if it needs it. */
|
||||
IDWALK_CB_PRIVATE = (1 << 3),
|
||||
|
||||
/** That ID is not really used by its owner, it's just an internal hint/helper.
|
||||
* This addresses Their Highest Ugliness the 'from' pointers: Object->from_proxy and Key->from.
|
||||
* How to handle that kind of cases totally depends on what caller code is doing... */
|
||||
IDWALK_CB_LOOPBACK = (1 << 4),
|
||||
|
||||
/**
|
||||
* Adjusts #ID.us reference-count.
|
||||
* \note keep in sync with 'newlibadr_us' use in readfile.c
|
||||
|
|
|
@ -1721,10 +1721,19 @@ static void library_make_local_copying_check(ID *id, GSet *loop_tags, MainIDRela
|
|||
for (; entry != NULL; entry = entry->next) {
|
||||
ID *par_id = (ID *)entry->id_pointer; /* used_to_user stores ID pointer, not pointer to ID pointer... */
|
||||
|
||||
/* Shapekeys are considered 'private' to their owner ID here, and never tagged (since they cannot be linked),
|
||||
* so we have to switch effective parent to their owner. */
|
||||
if (GS(par_id->name) == ID_KE) {
|
||||
par_id = ((Key *)par_id)->from;
|
||||
/* Our oh-so-beloved 'from' pointers... */
|
||||
if (entry->usage_flag & IDWALK_CB_LOOPBACK) {
|
||||
/* We totally disregard Object->proxy_from 'usage' here, this one would only generate fake positives. */
|
||||
if (GS(par_id->name) == ID_OB) {
|
||||
BLI_assert(((Object *)par_id)->proxy_from == (Object *)id);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Shapekeys are considered 'private' to their owner ID here, and never tagged (since they cannot be linked),
|
||||
* so we have to switch effective parent to their owner. */
|
||||
if (GS(par_id->name) == ID_KE) {
|
||||
par_id = ((Key *)par_id)->from;
|
||||
}
|
||||
}
|
||||
|
||||
if (par_id->lib == NULL) {
|
||||
|
@ -1947,7 +1956,7 @@ void BKE_library_make_local(
|
|||
|
||||
/* Note: Keeping both version of the code (old one being safer, since it still has checks against unused IDs)
|
||||
* for now, we can remove old one once it has been tested for some time in master... */
|
||||
#if 0
|
||||
#if 1
|
||||
/* Step 5: proxy 'remapping' hack. */
|
||||
for (LinkNode *it = copied_ids; it; it = it->next) {
|
||||
/* Attempt to re-link copied proxy objects. This allows appending of an entire scene
|
||||
|
|
|
@ -560,7 +560,7 @@ void BKE_library_foreach_ID_link(Main *bmain, ID *id, LibraryIDLinkCallback call
|
|||
if (object->proxy_from) {
|
||||
data.cb_flag = ID_IS_LINKED_DATABLOCK(object->proxy_from) ? IDWALK_CB_INDIRECT_USAGE : 0;
|
||||
}
|
||||
CALLBACK_INVOKE(object->proxy_from, IDWALK_CB_NOP);
|
||||
CALLBACK_INVOKE(object->proxy_from, IDWALK_CB_LOOPBACK);
|
||||
data.cb_flag = data_cb_flag;
|
||||
|
||||
CALLBACK_INVOKE(object->poselib, IDWALK_CB_USER);
|
||||
|
@ -765,12 +765,8 @@ void BKE_library_foreach_ID_link(Main *bmain, ID *id, LibraryIDLinkCallback call
|
|||
|
||||
case ID_KE:
|
||||
{
|
||||
/* XXX Only ID pointer from shapekeys is the 'from' one, which is not actually ID usage.
|
||||
* Maybe we should even nuke it from here, not 100% sure yet...
|
||||
* (see also foreach_libblock_id_users_callback).
|
||||
*/
|
||||
Key *key = (Key *) id;
|
||||
CALLBACK_INVOKE_ID(key->from, IDWALK_CB_NOP);
|
||||
CALLBACK_INVOKE_ID(key->from, IDWALK_CB_LOOPBACK);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1166,20 +1162,15 @@ typedef struct IDUsersIter {
|
|||
int count_direct, count_indirect; /* Set by callback. */
|
||||
} IDUsersIter;
|
||||
|
||||
static int foreach_libblock_id_users_callback(void *user_data, ID *self_id, ID **id_p, int cb_flag)
|
||||
static int foreach_libblock_id_users_callback(void *user_data, ID *UNUSED(self_id), ID **id_p, int cb_flag)
|
||||
{
|
||||
IDUsersIter *iter = user_data;
|
||||
|
||||
if (*id_p) {
|
||||
/* XXX This is actually some kind of hack...
|
||||
* Issue is, shapekeys' 'from' ID pointer is not actually ID usage.
|
||||
* Maybe we should even nuke it from BKE_library_foreach_ID_link, not 100% sure yet...
|
||||
/* 'Loopback' ID pointers (the ugly 'from' ones, Object->proxy_from and Key->from).
|
||||
* Those are not actually ID usage, we can ignore them here.
|
||||
*/
|
||||
if ((GS(self_id->name) == ID_KE) && (((Key *)self_id)->from == *id_p)) {
|
||||
return IDWALK_RET_NOP;
|
||||
}
|
||||
/* XXX another hack, for similar reasons as above one. */
|
||||
if ((GS(self_id->name) == ID_OB) && (((Object *)self_id)->proxy_from == (Object *)*id_p)) {
|
||||
if (cb_flag & IDWALK_CB_LOOPBACK) {
|
||||
return IDWALK_RET_NOP;
|
||||
}
|
||||
|
||||
|
|
|
@ -129,7 +129,7 @@ typedef struct BVHOverlapData_Thread {
|
|||
} BVHOverlapData_Thread;
|
||||
|
||||
typedef struct BVHNearestData {
|
||||
BVHTree *tree;
|
||||
const BVHTree *tree;
|
||||
const float *co;
|
||||
BVHTree_NearestPointCallback callback;
|
||||
void *userdata;
|
||||
|
@ -139,7 +139,7 @@ typedef struct BVHNearestData {
|
|||
} BVHNearestData;
|
||||
|
||||
typedef struct BVHRayCastData {
|
||||
BVHTree *tree;
|
||||
const BVHTree *tree;
|
||||
|
||||
BVHTree_RayCastCallback callback;
|
||||
void *userdata;
|
||||
|
@ -171,9 +171,9 @@ typedef struct BVHRayCastData {
|
|||
*/
|
||||
|
||||
const float bvhtree_kdop_axes[13][3] = {
|
||||
{1.0, 0, 0}, {0, 1.0, 0}, {0, 0, 1.0}, {1.0, 1.0, 1.0}, {1.0, -1.0, 1.0}, {1.0, 1.0, -1.0},
|
||||
{1.0, -1.0, -1.0}, {1.0, 1.0, 0}, {1.0, 0, 1.0}, {0, 1.0, 1.0}, {1.0, -1.0, 0}, {1.0, 0, -1.0},
|
||||
{0, 1.0, -1.0}
|
||||
{1.0, 0, 0}, {0, 1.0, 0}, {0, 0, 1.0},
|
||||
{1.0, 1.0, 1.0}, {1.0, -1.0, 1.0}, {1.0, 1.0, -1.0}, {1.0, -1.0, -1.0},
|
||||
{1.0, 1.0, 0}, {1.0, 0, 1.0}, {0, 1.0, 1.0}, {1.0, -1.0, 0}, {1.0, 0, -1.0}, {0, 1.0, -1.0}
|
||||
};
|
||||
|
||||
|
||||
|
@ -321,11 +321,16 @@ static int bvh_partition(BVHNode **a, int lo, int hi, BVHNode *x, int axis)
|
|||
{
|
||||
int i = lo, j = hi;
|
||||
while (1) {
|
||||
while ((a[i])->bv[axis] < x->bv[axis]) i++;
|
||||
while (a[i]->bv[axis] < x->bv[axis]) {
|
||||
i++;
|
||||
}
|
||||
j--;
|
||||
while (x->bv[axis] < (a[j])->bv[axis]) j--;
|
||||
if (!(i < j))
|
||||
while (x->bv[axis] < a[j]->bv[axis]) {
|
||||
j--;
|
||||
}
|
||||
if (!(i < j)) {
|
||||
return i;
|
||||
}
|
||||
SWAP(BVHNode *, a[i], a[j]);
|
||||
i++;
|
||||
}
|
||||
|
@ -427,19 +432,18 @@ static void sort_along_axis(BVHTree *tree, int start, int end, int axis)
|
|||
* \note after a call to this function you can expect one of:
|
||||
* - every node to left of a[n] are smaller or equal to it
|
||||
* - every node to the right of a[n] are greater or equal to it */
|
||||
static int partition_nth_element(BVHNode **a, int _begin, int _end, int n, int axis)
|
||||
static void partition_nth_element(BVHNode **a, int begin, int end, const int n, const int axis)
|
||||
{
|
||||
int begin = _begin, end = _end, cut;
|
||||
while (end - begin > 3) {
|
||||
cut = bvh_partition(a, begin, end, bvh_medianof3(a, begin, (begin + end) / 2, end - 1, axis), axis);
|
||||
if (cut <= n)
|
||||
const int cut = bvh_partition(a, begin, end, bvh_medianof3(a, begin, (begin + end) / 2, end - 1, axis), axis);
|
||||
if (cut <= n) {
|
||||
begin = cut;
|
||||
else
|
||||
}
|
||||
else {
|
||||
end = cut;
|
||||
}
|
||||
}
|
||||
bvh_insertionsort(a, begin, end, axis);
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
#ifdef USE_SKIP_LINKS
|
||||
|
@ -593,10 +597,14 @@ static void bvhtree_print_tree(BVHTree *tree, BVHNode *node, int depth)
|
|||
static void bvhtree_info(BVHTree *tree)
|
||||
{
|
||||
printf("BVHTree info\n");
|
||||
printf("tree_type = %d, axis = %d, epsilon = %f\n", tree->tree_type, tree->axis, tree->epsilon);
|
||||
printf("nodes = %d, branches = %d, leafs = %d\n", tree->totbranch + tree->totleaf, tree->totbranch, tree->totleaf);
|
||||
printf("Memory per node = %ldbytes\n", sizeof(BVHNode) + sizeof(BVHNode *) * tree->tree_type + sizeof(float) * tree->axis);
|
||||
printf("BV memory = %dbytes\n", (int)MEM_allocN_len(tree->nodebv));
|
||||
printf("tree_type = %d, axis = %d, epsilon = %f\n",
|
||||
tree->tree_type, tree->axis, tree->epsilon);
|
||||
printf("nodes = %d, branches = %d, leafs = %d\n",
|
||||
tree->totbranch + tree->totleaf, tree->totbranch, tree->totleaf);
|
||||
printf("Memory per node = %ldbytes\n",
|
||||
sizeof(BVHNode) + sizeof(BVHNode *) * tree->tree_type + sizeof(float) * tree->axis);
|
||||
printf("BV memory = %dbytes\n",
|
||||
(int)MEM_allocN_len(tree->nodebv));
|
||||
|
||||
printf("Total memory = %ldbytes\n", sizeof(BVHTree) +
|
||||
MEM_allocN_len(tree->nodes) +
|
||||
|
@ -649,12 +657,14 @@ static void verify_tree(BVHTree *tree)
|
|||
}
|
||||
}
|
||||
|
||||
printf("branches: %d, leafs: %d, total: %d\n", tree->totbranch, tree->totleaf, tree->totbranch + tree->totleaf);
|
||||
printf("branches: %d, leafs: %d, total: %d\n",
|
||||
tree->totbranch, tree->totleaf, tree->totbranch + tree->totleaf);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Helper data and structures to build a min-leaf generalized implicit tree
|
||||
* This code can be easily reduced (basicly this is only method to calculate pow(k, n) in O(1).. and stuff like that) */
|
||||
* This code can be easily reduced
|
||||
* (basicly this is only method to calculate pow(k, n) in O(1).. and stuff like that) */
|
||||
typedef struct BVHBuildHelper {
|
||||
int tree_type; /* */
|
||||
int totleafs; /* */
|
||||
|
@ -711,8 +721,8 @@ static int implicit_leafs_index(BVHBuildHelper *data, int depth, int child_index
|
|||
* Generalized implicit tree build
|
||||
*
|
||||
* An implicit tree is a tree where its structure is implied, thus there is no need to store child pointers or indexs.
|
||||
* Its possible to find the position of the child or the parent with simple maths (multiplication and adittion). This type
|
||||
* of tree is for example used on heaps.. where node N has its childs at indexs N*2 and N*2+1.
|
||||
* Its possible to find the position of the child or the parent with simple maths (multiplication and adittion).
|
||||
* This type of tree is for example used on heaps.. where node N has its childs at indexs N*2 and N*2+1.
|
||||
*
|
||||
* Although in this case the tree type is general.. and not know until runtime.
|
||||
* tree_type stands for the maximum number of childs that a tree node can have.
|
||||
|
@ -753,7 +763,7 @@ static int implicit_needed_branches(int tree_type, int leafs)
|
|||
*
|
||||
* TODO: This can be optimized a bit by doing a specialized nth_element instead of K nth_elements
|
||||
*/
|
||||
static void split_leafs(BVHNode **leafs_array, int *nth, int partitions, int split_axis)
|
||||
static void split_leafs(BVHNode **leafs_array, const int nth[], const int partitions, const int split_axis)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < partitions - 1; i++) {
|
||||
|
@ -1021,7 +1031,8 @@ void BLI_bvhtree_balance(BVHTree *tree)
|
|||
BVHNode *branches_array = tree->nodearray + tree->totleaf;
|
||||
BVHNode **leafs_array = tree->nodes;
|
||||
|
||||
/* This function should only be called once (some big bug goes here if its being called more than once per tree) */
|
||||
/* This function should only be called once
|
||||
* (some big bug goes here if its being called more than once per tree) */
|
||||
BLI_assert(tree->totbranch == 0);
|
||||
|
||||
/* Build the implicit tree */
|
||||
|
@ -1470,7 +1481,8 @@ static void bfs_find_nearest(BVHNearestData *data, BVHNode *node)
|
|||
else {
|
||||
/* adjust heap size */
|
||||
if ((heap_size >= max_heap_size) &&
|
||||
ADJUST_MEMORY(default_heap, (void **)&heap, heap_size + 1, &max_heap_size, sizeof(heap[0])) == false)
|
||||
ADJUST_MEMORY(default_heap, (void **)&heap,
|
||||
heap_size + 1, &max_heap_size, sizeof(heap[0])) == false)
|
||||
{
|
||||
printf("WARNING: bvh_find_nearest got out of memory\n");
|
||||
|
||||
|
|
|
@ -225,7 +225,7 @@ typedef struct BMesh {
|
|||
/* operator api stuff (must be all NULL or all alloc'd) */
|
||||
struct BLI_mempool *vtoolflagpool, *etoolflagpool, *ftoolflagpool;
|
||||
|
||||
unsigned int use_toolflags : 1;
|
||||
uint use_toolflags : 1;
|
||||
|
||||
int toolflag_index;
|
||||
struct BMOperator *currentop;
|
||||
|
@ -382,7 +382,7 @@ typedef bool (*BMLoopFilterFunc)(const BMLoop *, void *user_data);
|
|||
(assert(offset != -1), *((float *)((char *)(ele)->head.data + (offset))))
|
||||
|
||||
#define BM_ELEM_CD_GET_FLOAT_AS_UCHAR(ele, offset) \
|
||||
(assert(offset != -1), (unsigned char)(BM_ELEM_CD_GET_FLOAT(ele, offset) * 255.0f))
|
||||
(assert(offset != -1), (uchar)(BM_ELEM_CD_GET_FLOAT(ele, offset) * 255.0f))
|
||||
|
||||
/*forward declarations*/
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
bool BM_elem_cb_check_hflag_ex(BMElem *ele, void *user_data)
|
||||
{
|
||||
const unsigned int hflag_pair = GET_INT_FROM_POINTER(user_data);
|
||||
const uint hflag_pair = GET_INT_FROM_POINTER(user_data);
|
||||
const char hflag_p = (hflag_pair & 0xff);
|
||||
const char hflag_n = (hflag_pair >> 8);
|
||||
|
||||
|
|
|
@ -154,7 +154,7 @@ void BM_face_copy_shared(
|
|||
if (l_other && l_other != l_iter) {
|
||||
BMLoop *l_src[2];
|
||||
BMLoop *l_dst[2] = {l_iter, l_iter->next};
|
||||
unsigned int j;
|
||||
uint j;
|
||||
|
||||
if (l_other->v == l_iter->v) {
|
||||
l_src[0] = l_other;
|
||||
|
@ -311,7 +311,7 @@ BMFace *BM_face_create_ngon_verts(
|
|||
const bool calc_winding, const bool create_edges)
|
||||
{
|
||||
BMEdge **edge_arr = BLI_array_alloca(edge_arr, len);
|
||||
unsigned int winding[2] = {0, 0};
|
||||
uint winding[2] = {0, 0};
|
||||
int i, i_prev = len - 1;
|
||||
BMVert *v_winding[2] = {vert_arr[i_prev], vert_arr[0]};
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ static int bm_vert_other_tag(
|
|||
{
|
||||
BMIter iter;
|
||||
BMEdge *e, *e_next = NULL;
|
||||
unsigned int count = 0;
|
||||
uint count = 0;
|
||||
|
||||
BM_ITER_ELEM (e, &iter, v, BM_EDGES_OF_VERT) {
|
||||
if (BM_elem_flag_test(e, BM_ELEM_INTERNAL_TAG)) {
|
||||
|
|
|
@ -211,12 +211,12 @@ void *BMO_iter_as_arrayN(
|
|||
|
||||
int BM_iter_mesh_bitmap_from_filter(
|
||||
const char itype, BMesh *bm,
|
||||
unsigned int *bitmap,
|
||||
uint *bitmap,
|
||||
bool (*test_fn)(BMElem *, void *user_data),
|
||||
void *user_data);
|
||||
int BM_iter_mesh_bitmap_from_filter_tessface(
|
||||
BMesh *bm,
|
||||
unsigned int *bitmap,
|
||||
uint *bitmap,
|
||||
bool (*test_fn)(BMFace *, void *user_data),
|
||||
void *user_data);
|
||||
|
||||
|
|
|
@ -88,7 +88,7 @@ struct BMLog {
|
|||
|
||||
/* Mapping from unique IDs to vertices and faces
|
||||
*
|
||||
* Each vertex and face in the log gets a unique unsigned integer
|
||||
* Each vertex and face in the log gets a unique uinteger
|
||||
* assigned. That ID is taken from the set managed by the
|
||||
* unused_ids range tree.
|
||||
*
|
||||
|
@ -120,7 +120,7 @@ typedef struct {
|
|||
} BMLogVert;
|
||||
|
||||
typedef struct {
|
||||
unsigned int v_ids[3];
|
||||
uint v_ids[3];
|
||||
char hflag;
|
||||
} BMLogFace;
|
||||
|
||||
|
@ -131,14 +131,14 @@ typedef struct {
|
|||
#define logkey_cmp BLI_ghashutil_intcmp
|
||||
|
||||
/* Get the vertex's unique ID from the log */
|
||||
static unsigned int bm_log_vert_id_get(BMLog *log, BMVert *v)
|
||||
static uint bm_log_vert_id_get(BMLog *log, BMVert *v)
|
||||
{
|
||||
BLI_assert(BLI_ghash_haskey(log->elem_to_id, v));
|
||||
return GET_UINT_FROM_POINTER(BLI_ghash_lookup(log->elem_to_id, v));
|
||||
}
|
||||
|
||||
/* Set the vertex's unique ID in the log */
|
||||
static void bm_log_vert_id_set(BMLog *log, BMVert *v, unsigned int id)
|
||||
static void bm_log_vert_id_set(BMLog *log, BMVert *v, uint id)
|
||||
{
|
||||
void *vid = SET_UINT_IN_POINTER(id);
|
||||
|
||||
|
@ -147,7 +147,7 @@ static void bm_log_vert_id_set(BMLog *log, BMVert *v, unsigned int id)
|
|||
}
|
||||
|
||||
/* Get a vertex from its unique ID */
|
||||
static BMVert *bm_log_vert_from_id(BMLog *log, unsigned int id)
|
||||
static BMVert *bm_log_vert_from_id(BMLog *log, uint id)
|
||||
{
|
||||
void *key = SET_UINT_IN_POINTER(id);
|
||||
BLI_assert(BLI_ghash_haskey(log->id_to_elem, key));
|
||||
|
@ -155,14 +155,14 @@ static BMVert *bm_log_vert_from_id(BMLog *log, unsigned int id)
|
|||
}
|
||||
|
||||
/* Get the face's unique ID from the log */
|
||||
static unsigned int bm_log_face_id_get(BMLog *log, BMFace *f)
|
||||
static uint bm_log_face_id_get(BMLog *log, BMFace *f)
|
||||
{
|
||||
BLI_assert(BLI_ghash_haskey(log->elem_to_id, f));
|
||||
return GET_UINT_FROM_POINTER(BLI_ghash_lookup(log->elem_to_id, f));
|
||||
}
|
||||
|
||||
/* Set the face's unique ID in the log */
|
||||
static void bm_log_face_id_set(BMLog *log, BMFace *f, unsigned int id)
|
||||
static void bm_log_face_id_set(BMLog *log, BMFace *f, uint id)
|
||||
{
|
||||
void *fid = SET_UINT_IN_POINTER(id);
|
||||
|
||||
|
@ -171,7 +171,7 @@ static void bm_log_face_id_set(BMLog *log, BMFace *f, unsigned int id)
|
|||
}
|
||||
|
||||
/* Get a face from its unique ID */
|
||||
static BMFace *bm_log_face_from_id(BMLog *log, unsigned int id)
|
||||
static BMFace *bm_log_face_from_id(BMLog *log, uint id)
|
||||
{
|
||||
void *key = SET_UINT_IN_POINTER(id);
|
||||
BLI_assert(BLI_ghash_haskey(log->id_to_elem, key));
|
||||
|
@ -255,7 +255,7 @@ static void bm_log_verts_unmake(BMesh *bm, BMLog *log, GHash *verts)
|
|||
GHASH_ITER (gh_iter, verts) {
|
||||
void *key = BLI_ghashIterator_getKey(&gh_iter);
|
||||
BMLogVert *lv = BLI_ghashIterator_getValue(&gh_iter);
|
||||
unsigned int id = GET_UINT_FROM_POINTER(key);
|
||||
uint id = GET_UINT_FROM_POINTER(key);
|
||||
BMVert *v = bm_log_vert_from_id(log, id);
|
||||
|
||||
/* Ensure the log has the final values of the vertex before
|
||||
|
@ -271,7 +271,7 @@ static void bm_log_faces_unmake(BMesh *bm, BMLog *log, GHash *faces)
|
|||
GHashIterator gh_iter;
|
||||
GHASH_ITER (gh_iter, faces) {
|
||||
void *key = BLI_ghashIterator_getKey(&gh_iter);
|
||||
unsigned int id = GET_UINT_FROM_POINTER(key);
|
||||
uint id = GET_UINT_FROM_POINTER(key);
|
||||
BMFace *f = bm_log_face_from_id(log, id);
|
||||
BMEdge *e_tri[3];
|
||||
BMLoop *l_iter;
|
||||
|
@ -333,7 +333,7 @@ static void bm_log_vert_values_swap(BMesh *bm, BMLog *log, GHash *verts)
|
|||
GHASH_ITER (gh_iter, verts) {
|
||||
void *key = BLI_ghashIterator_getKey(&gh_iter);
|
||||
BMLogVert *lv = BLI_ghashIterator_getValue(&gh_iter);
|
||||
unsigned int id = GET_UINT_FROM_POINTER(key);
|
||||
uint id = GET_UINT_FROM_POINTER(key);
|
||||
BMVert *v = bm_log_vert_from_id(log, id);
|
||||
float mask;
|
||||
short normal[3];
|
||||
|
@ -355,7 +355,7 @@ static void bm_log_face_values_swap(BMLog *log, GHash *faces)
|
|||
GHASH_ITER (gh_iter, faces) {
|
||||
void *key = BLI_ghashIterator_getKey(&gh_iter);
|
||||
BMLogFace *lf = BLI_ghashIterator_getValue(&gh_iter);
|
||||
unsigned int id = GET_UINT_FROM_POINTER(key);
|
||||
uint id = GET_UINT_FROM_POINTER(key);
|
||||
BMFace *f = bm_log_face_from_id(log, id);
|
||||
|
||||
SWAP(char, f->head.hflag, lf->hflag);
|
||||
|
@ -374,13 +374,13 @@ static void bm_log_assign_ids(BMesh *bm, BMLog *log)
|
|||
|
||||
/* Generate vertex IDs */
|
||||
BM_ITER_MESH (v, &iter, bm, BM_VERTS_OF_MESH) {
|
||||
unsigned int id = range_tree_uint_take_any(log->unused_ids);
|
||||
uint id = range_tree_uint_take_any(log->unused_ids);
|
||||
bm_log_vert_id_set(log, v, id);
|
||||
}
|
||||
|
||||
/* Generate face IDs */
|
||||
BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) {
|
||||
unsigned int id = range_tree_uint_take_any(log->unused_ids);
|
||||
uint id = range_tree_uint_take_any(log->unused_ids);
|
||||
bm_log_face_id_set(log, f, id);
|
||||
}
|
||||
}
|
||||
|
@ -425,7 +425,7 @@ static void bm_log_id_ghash_retake(RangeTreeUInt *unused_ids, GHash *id_ghash)
|
|||
|
||||
GHASH_ITER (gh_iter, id_ghash) {
|
||||
void *key = BLI_ghashIterator_getKey(&gh_iter);
|
||||
unsigned int id = GET_UINT_FROM_POINTER(key);
|
||||
uint id = GET_UINT_FROM_POINTER(key);
|
||||
|
||||
range_tree_uint_retake(unused_ids, id);
|
||||
}
|
||||
|
@ -433,8 +433,8 @@ static void bm_log_id_ghash_retake(RangeTreeUInt *unused_ids, GHash *id_ghash)
|
|||
|
||||
static int uint_compare(const void *a_v, const void *b_v)
|
||||
{
|
||||
const unsigned int *a = a_v;
|
||||
const unsigned int *b = b_v;
|
||||
const uint *a = a_v;
|
||||
const uint *b = b_v;
|
||||
return (*a) < (*b);
|
||||
}
|
||||
|
||||
|
@ -446,10 +446,10 @@ static int uint_compare(const void *a_v, const void *b_v)
|
|||
* 10 -> 3
|
||||
* 3 -> 1
|
||||
*/
|
||||
static GHash *bm_log_compress_ids_to_indices(unsigned int *ids, unsigned int totid)
|
||||
static GHash *bm_log_compress_ids_to_indices(uint *ids, uint totid)
|
||||
{
|
||||
GHash *map = BLI_ghash_int_new_ex(__func__, totid);
|
||||
unsigned int i;
|
||||
uint i;
|
||||
|
||||
qsort(ids, totid, sizeof(*ids), uint_compare);
|
||||
|
||||
|
@ -469,7 +469,7 @@ static void bm_log_id_ghash_release(BMLog *log, GHash *id_ghash)
|
|||
|
||||
GHASH_ITER (gh_iter, id_ghash) {
|
||||
void *key = BLI_ghashIterator_getKey(&gh_iter);
|
||||
unsigned int id = GET_UINT_FROM_POINTER(key);
|
||||
uint id = GET_UINT_FROM_POINTER(key);
|
||||
range_tree_uint_release(log->unused_ids, id);
|
||||
}
|
||||
}
|
||||
|
@ -480,7 +480,7 @@ static void bm_log_id_ghash_release(BMLog *log, GHash *id_ghash)
|
|||
BMLog *BM_log_create(BMesh *bm)
|
||||
{
|
||||
BMLog *log = MEM_callocN(sizeof(*log), __func__);
|
||||
const unsigned int reserve_num = (unsigned int)(bm->totvert + bm->totface);
|
||||
const uint reserve_num = (uint)(bm->totvert + bm->totface);
|
||||
|
||||
log->unused_ids = range_tree_uint_alloc(0, (unsigned)-1);
|
||||
log->id_to_elem = BLI_ghash_new_ex(logkey_hash, logkey_cmp, __func__, reserve_num);
|
||||
|
@ -593,8 +593,8 @@ int BM_log_length(const BMLog *log)
|
|||
/* Apply a consistent ordering to BMesh vertices */
|
||||
void BM_log_mesh_elems_reorder(BMesh *bm, BMLog *log)
|
||||
{
|
||||
unsigned int *varr;
|
||||
unsigned int *farr;
|
||||
uint *varr;
|
||||
uint *farr;
|
||||
|
||||
GHash *id_to_idx;
|
||||
|
||||
|
@ -602,7 +602,7 @@ void BM_log_mesh_elems_reorder(BMesh *bm, BMLog *log)
|
|||
BMVert *v;
|
||||
BMFace *f;
|
||||
|
||||
unsigned int i;
|
||||
uint i;
|
||||
|
||||
/* Put all vertex IDs into an array */
|
||||
varr = MEM_mallocN(sizeof(int) * (size_t)bm->totvert, __func__);
|
||||
|
@ -617,7 +617,7 @@ void BM_log_mesh_elems_reorder(BMesh *bm, BMLog *log)
|
|||
}
|
||||
|
||||
/* Create BMVert index remap array */
|
||||
id_to_idx = bm_log_compress_ids_to_indices(varr, (unsigned int)bm->totvert);
|
||||
id_to_idx = bm_log_compress_ids_to_indices(varr, (uint)bm->totvert);
|
||||
BM_ITER_MESH_INDEX (v, &bm_iter, bm, BM_VERTS_OF_MESH, i) {
|
||||
const unsigned id = bm_log_vert_id_get(log, v);
|
||||
const void *key = SET_UINT_IN_POINTER(id);
|
||||
|
@ -627,7 +627,7 @@ void BM_log_mesh_elems_reorder(BMesh *bm, BMLog *log)
|
|||
BLI_ghash_free(id_to_idx, NULL, NULL);
|
||||
|
||||
/* Create BMFace index remap array */
|
||||
id_to_idx = bm_log_compress_ids_to_indices(farr, (unsigned int)bm->totface);
|
||||
id_to_idx = bm_log_compress_ids_to_indices(farr, (uint)bm->totface);
|
||||
BM_ITER_MESH_INDEX (f, &bm_iter, bm, BM_FACES_OF_MESH, i) {
|
||||
const unsigned id = bm_log_face_id_get(log, f);
|
||||
const void *key = SET_UINT_IN_POINTER(id);
|
||||
|
@ -835,7 +835,7 @@ void BM_log_vert_before_modified(BMLog *log, BMVert *v, const int cd_vert_mask_o
|
|||
{
|
||||
BMLogEntry *entry = log->current_entry;
|
||||
BMLogVert *lv;
|
||||
unsigned int v_id = bm_log_vert_id_get(log, v);
|
||||
uint v_id = bm_log_vert_id_get(log, v);
|
||||
void *key = SET_UINT_IN_POINTER(v_id);
|
||||
void **val_p;
|
||||
|
||||
|
@ -859,7 +859,7 @@ void BM_log_vert_before_modified(BMLog *log, BMVert *v, const int cd_vert_mask_o
|
|||
void BM_log_vert_added(BMLog *log, BMVert *v, const int cd_vert_mask_offset)
|
||||
{
|
||||
BMLogVert *lv;
|
||||
unsigned int v_id = range_tree_uint_take_any(log->unused_ids);
|
||||
uint v_id = range_tree_uint_take_any(log->unused_ids);
|
||||
void *key = SET_UINT_IN_POINTER(v_id);
|
||||
|
||||
bm_log_vert_id_set(log, v, v_id);
|
||||
|
@ -876,7 +876,7 @@ void BM_log_vert_added(BMLog *log, BMVert *v, const int cd_vert_mask_offset)
|
|||
void BM_log_face_modified(BMLog *log, BMFace *f)
|
||||
{
|
||||
BMLogFace *lf;
|
||||
unsigned int f_id = bm_log_face_id_get(log, f);
|
||||
uint f_id = bm_log_face_id_get(log, f);
|
||||
void *key = SET_UINT_IN_POINTER(f_id);
|
||||
|
||||
lf = bm_log_face_alloc(log, f);
|
||||
|
@ -892,7 +892,7 @@ void BM_log_face_modified(BMLog *log, BMFace *f)
|
|||
void BM_log_face_added(BMLog *log, BMFace *f)
|
||||
{
|
||||
BMLogFace *lf;
|
||||
unsigned int f_id = range_tree_uint_take_any(log->unused_ids);
|
||||
uint f_id = range_tree_uint_take_any(log->unused_ids);
|
||||
void *key = SET_UINT_IN_POINTER(f_id);
|
||||
|
||||
/* Only triangles are supported for now */
|
||||
|
@ -922,7 +922,7 @@ void BM_log_face_added(BMLog *log, BMFace *f)
|
|||
void BM_log_vert_removed(BMLog *log, BMVert *v, const int cd_vert_mask_offset)
|
||||
{
|
||||
BMLogEntry *entry = log->current_entry;
|
||||
unsigned int v_id = bm_log_vert_id_get(log, v);
|
||||
uint v_id = bm_log_vert_id_get(log, v);
|
||||
void *key = SET_UINT_IN_POINTER(v_id);
|
||||
|
||||
/* if it has a key, it shouldn't be NULL */
|
||||
|
@ -963,7 +963,7 @@ void BM_log_vert_removed(BMLog *log, BMVert *v, const int cd_vert_mask_offset)
|
|||
void BM_log_face_removed(BMLog *log, BMFace *f)
|
||||
{
|
||||
BMLogEntry *entry = log->current_entry;
|
||||
unsigned int f_id = bm_log_face_id_get(log, f);
|
||||
uint f_id = bm_log_face_id_get(log, f);
|
||||
void *key = SET_UINT_IN_POINTER(f_id);
|
||||
|
||||
/* if it has a key, it shouldn't be NULL */
|
||||
|
@ -991,11 +991,11 @@ void BM_log_all_added(BMesh *bm, BMLog *log)
|
|||
|
||||
/* avoid unnecessary resizing on initialization */
|
||||
if (BLI_ghash_size(log->current_entry->added_verts) == 0) {
|
||||
BLI_ghash_reserve(log->current_entry->added_verts, (unsigned int)bm->totvert);
|
||||
BLI_ghash_reserve(log->current_entry->added_verts, (uint)bm->totvert);
|
||||
}
|
||||
|
||||
if (BLI_ghash_size(log->current_entry->added_faces) == 0) {
|
||||
BLI_ghash_reserve(log->current_entry->added_faces, (unsigned int)bm->totface);
|
||||
BLI_ghash_reserve(log->current_entry->added_faces, (uint)bm->totface);
|
||||
}
|
||||
|
||||
/* Log all vertices as newly created */
|
||||
|
|
|
@ -1527,9 +1527,9 @@ int BM_mesh_elem_count(BMesh *bm, const char htype)
|
|||
*/
|
||||
void BM_mesh_remap(
|
||||
BMesh *bm,
|
||||
const unsigned int *vert_idx,
|
||||
const unsigned int *edge_idx,
|
||||
const unsigned int *face_idx)
|
||||
const uint *vert_idx,
|
||||
const uint *edge_idx,
|
||||
const uint *face_idx)
|
||||
{
|
||||
/* Mapping old to new pointers. */
|
||||
GHash *vptr_map = NULL, *eptr_map = NULL, *fptr_map = NULL;
|
||||
|
@ -1552,7 +1552,7 @@ void BM_mesh_remap(
|
|||
if (vert_idx) {
|
||||
BMVert **verts_pool, *verts_copy, **vep;
|
||||
int i, totvert = bm->totvert;
|
||||
const unsigned int *new_idx;
|
||||
const uint *new_idx;
|
||||
/* Special case: Python uses custom - data layers to hold PyObject references.
|
||||
* These have to be kept in - place, else the PyObject's we point to, wont point back to us. */
|
||||
const int cd_vert_pyptr = CustomData_get_offset(&bm->vdata, CD_BM_ELEM_PYPTR);
|
||||
|
@ -1600,7 +1600,7 @@ void BM_mesh_remap(
|
|||
if (edge_idx) {
|
||||
BMEdge **edges_pool, *edges_copy, **edp;
|
||||
int i, totedge = bm->totedge;
|
||||
const unsigned int *new_idx;
|
||||
const uint *new_idx;
|
||||
/* Special case: Python uses custom - data layers to hold PyObject references.
|
||||
* These have to be kept in - place, else the PyObject's we point to, wont point back to us. */
|
||||
const int cd_edge_pyptr = CustomData_get_offset(&bm->edata, CD_BM_ELEM_PYPTR);
|
||||
|
@ -1647,7 +1647,7 @@ void BM_mesh_remap(
|
|||
if (face_idx) {
|
||||
BMFace **faces_pool, *faces_copy, **fap;
|
||||
int i, totface = bm->totface;
|
||||
const unsigned int *new_idx;
|
||||
const uint *new_idx;
|
||||
/* Special case: Python uses custom - data layers to hold PyObject references.
|
||||
* These have to be kept in - place, else the PyObject's we point to, wont point back to us. */
|
||||
const int cd_poly_pyptr = CustomData_get_offset(&bm->pdata, CD_BM_ELEM_PYPTR);
|
||||
|
|
|
@ -34,7 +34,7 @@ void BM_mesh_elem_toolflags_ensure(BMesh *bm);
|
|||
void BM_mesh_elem_toolflags_clear(BMesh *bm);
|
||||
|
||||
struct BMeshCreateParams {
|
||||
unsigned int use_toolflags : 1;
|
||||
uint use_toolflags : 1;
|
||||
};
|
||||
|
||||
BMesh *BM_mesh_create(
|
||||
|
@ -88,9 +88,9 @@ int BM_mesh_elem_count(BMesh *bm, const char htype);
|
|||
|
||||
void BM_mesh_remap(
|
||||
BMesh *bm,
|
||||
const unsigned int *vert_idx,
|
||||
const unsigned int *edge_idx,
|
||||
const unsigned int *face_idx);
|
||||
const uint *vert_idx,
|
||||
const uint *edge_idx,
|
||||
const uint *face_idx);
|
||||
|
||||
void BM_mesh_rebuild(
|
||||
BMesh *bm, const struct BMeshCreateParams *params,
|
||||
|
|
|
@ -41,11 +41,11 @@ char BM_mesh_cd_flag_from_bmesh(BMesh *bm);
|
|||
|
||||
|
||||
struct BMeshFromMeshParams {
|
||||
unsigned int calc_face_normal : 1;
|
||||
uint calc_face_normal : 1;
|
||||
/* add a vertex CD_SHAPE_KEYINDEX layer */
|
||||
unsigned int add_key_index : 1;
|
||||
uint add_key_index : 1;
|
||||
/* set vertex coordinates from the shapekey */
|
||||
unsigned int use_shapekey : 1;
|
||||
uint use_shapekey : 1;
|
||||
/* define the active shape key (index + 1) */
|
||||
int active_shapekey;
|
||||
};
|
||||
|
@ -55,7 +55,7 @@ void BM_mesh_bm_from_me(
|
|||
ATTR_NONNULL(1, 3);
|
||||
|
||||
struct BMeshToMeshParams {
|
||||
unsigned int calc_tessface : 1;
|
||||
uint calc_tessface : 1;
|
||||
int64_t cd_mask_extra;
|
||||
};
|
||||
void BM_mesh_bm_to_me(
|
||||
|
|
|
@ -128,7 +128,7 @@ void BMO_pop(BMesh *bm)
|
|||
static void bmo_op_slots_init(const BMOSlotType *slot_types, BMOpSlot *slot_args)
|
||||
{
|
||||
BMOpSlot *slot;
|
||||
unsigned int i;
|
||||
uint i;
|
||||
for (i = 0; slot_types[i].type; i++) {
|
||||
slot = &slot_args[i];
|
||||
slot->slot_name = slot_types[i].name;
|
||||
|
@ -149,7 +149,7 @@ static void bmo_op_slots_init(const BMOSlotType *slot_types, BMOpSlot *slot_args
|
|||
static void bmo_op_slots_free(const BMOSlotType *slot_types, BMOpSlot *slot_args)
|
||||
{
|
||||
BMOpSlot *slot;
|
||||
unsigned int i;
|
||||
uint i;
|
||||
for (i = 0; slot_types[i].type; i++) {
|
||||
slot = &slot_args[i];
|
||||
switch (slot->slot_type) {
|
||||
|
@ -311,9 +311,9 @@ void _bmo_slot_copy(
|
|||
}
|
||||
else {
|
||||
/* check types */
|
||||
const unsigned int tot = slot_src->len;
|
||||
unsigned int i;
|
||||
unsigned int out = 0;
|
||||
const uint tot = slot_src->len;
|
||||
uint i;
|
||||
uint out = 0;
|
||||
BMElem **ele_src = (BMElem **)slot_src->data.buf;
|
||||
for (i = 0; i < tot; i++, ele_src++) {
|
||||
if ((*ele_src)->head.htype & dst_elem_flag) {
|
||||
|
@ -333,8 +333,8 @@ void _bmo_slot_copy(
|
|||
}
|
||||
else {
|
||||
/* only copy compatible elements */
|
||||
const unsigned int tot = slot_src->len;
|
||||
unsigned int i;
|
||||
const uint tot = slot_src->len;
|
||||
uint i;
|
||||
BMElem **ele_src = (BMElem **)slot_src->data.buf;
|
||||
BMElem **ele_dst = (BMElem **)slot_dst->data.buf;
|
||||
for (i = 0; i < tot; i++, ele_src++) {
|
||||
|
@ -1639,8 +1639,8 @@ static int bmo_name_to_slotcode_check(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], cons
|
|||
int BMO_opcode_from_opname(const char *opname)
|
||||
{
|
||||
|
||||
const unsigned int tot = bmo_opdefines_total;
|
||||
unsigned int i;
|
||||
const uint tot = bmo_opdefines_total;
|
||||
uint i;
|
||||
for (i = 0; i < tot; i++) {
|
||||
if (STREQ(bmo_opdefines[i]->opname, opname)) {
|
||||
return i;
|
||||
|
|
|
@ -141,7 +141,7 @@ void BM_mesh_esubdivide(
|
|||
const short use_only_quads,
|
||||
const int seed);
|
||||
|
||||
void BM_mesh_calc_uvs_grid(BMesh *bm, const unsigned int x_segments, const unsigned int y_segments, const short oflag);
|
||||
void BM_mesh_calc_uvs_grid(BMesh *bm, const uint x_segments, const uint y_segments, const short oflag);
|
||||
void BM_mesh_calc_uvs_sphere(BMesh *bm, const short oflag);
|
||||
void BM_mesh_calc_uvs_circle(BMesh *bm, float mat[4][4], const float radius, const short oflag);
|
||||
void BM_mesh_calc_uvs_cone(
|
||||
|
|
|
@ -132,7 +132,7 @@ static void bm_face_calc_poly_center_mean_vertex_cos(
|
|||
*/
|
||||
void BM_face_calc_tessellation(
|
||||
const BMFace *f, const bool use_fixed_quad,
|
||||
BMLoop **r_loops, unsigned int (*r_index)[3])
|
||||
BMLoop **r_loops, uint (*r_index)[3])
|
||||
{
|
||||
BMLoop *l_first = BM_FACE_FIRST_LOOP(f);
|
||||
BMLoop *l_iter;
|
||||
|
@ -196,7 +196,7 @@ void BM_face_calc_point_in_face(const BMFace *f, float r_co[3])
|
|||
* but without this we can't be sure the point is inside a concave face. */
|
||||
const int tottri = f->len - 2;
|
||||
BMLoop **loops = BLI_array_alloca(loops, f->len);
|
||||
unsigned int (*index)[3] = BLI_array_alloca(index, tottri);
|
||||
uint (*index)[3] = BLI_array_alloca(index, tottri);
|
||||
int j;
|
||||
int j_best = 0; /* use as fallback when unset */
|
||||
float area_best = -1.0f;
|
||||
|
@ -575,11 +575,11 @@ void BM_face_calc_center_mean_weighted(const BMFace *f, float r_cent[3])
|
|||
* Rotates a polygon so that it's
|
||||
* normal is pointing towards the mesh Z axis
|
||||
*/
|
||||
void poly_rotate_plane(const float normal[3], float (*verts)[3], const unsigned int nverts)
|
||||
void poly_rotate_plane(const float normal[3], float (*verts)[3], const uint nverts)
|
||||
{
|
||||
float mat[3][3];
|
||||
float co[3];
|
||||
unsigned int i;
|
||||
uint i;
|
||||
|
||||
co[2] = 0.0f;
|
||||
|
||||
|
@ -941,7 +941,7 @@ void BM_face_triangulate(
|
|||
|
||||
{
|
||||
BMLoop **loops = BLI_array_alloca(loops, f->len);
|
||||
unsigned int (*tris)[3] = BLI_array_alloca(tris, f->len);
|
||||
uint (*tris)[3] = BLI_array_alloca(tris, f->len);
|
||||
const int totfilltri = f->len - 2;
|
||||
const int last_tri = f->len - 3;
|
||||
int i;
|
||||
|
@ -1425,7 +1425,7 @@ void BM_mesh_calc_tessellation(BMesh *bm, BMLoop *(*looptris)[3], int *r_looptri
|
|||
|
||||
float axis_mat[3][3];
|
||||
float (*projverts)[2];
|
||||
unsigned int (*tris)[3];
|
||||
uint (*tris)[3];
|
||||
|
||||
const int totfilltri = efa->len - 2;
|
||||
|
||||
|
@ -1451,7 +1451,7 @@ void BM_mesh_calc_tessellation(BMesh *bm, BMLoop *(*looptris)[3], int *r_looptri
|
|||
|
||||
for (j = 0; j < totfilltri; j++) {
|
||||
BMLoop **l_ptr = looptris[i++];
|
||||
unsigned int *tri = tris[j];
|
||||
uint *tri = tris[j];
|
||||
|
||||
l_ptr[0] = l_arr[tri[0]];
|
||||
l_ptr[1] = l_arr[tri[1]];
|
||||
|
|
|
@ -36,7 +36,7 @@ void BM_mesh_calc_tessellation(BMesh *bm, BMLoop *(*looptris)[3], int *r_looptr
|
|||
|
||||
void BM_face_calc_tessellation(
|
||||
const BMFace *f, const bool use_fixed_quad,
|
||||
BMLoop **r_loops, unsigned int (*r_index)[3]);
|
||||
BMLoop **r_loops, uint (*r_index)[3]);
|
||||
void BM_face_calc_point_in_face(const BMFace *f, float r_co[3]);
|
||||
float BM_face_calc_normal(const BMFace *f, float r_no[3]) ATTR_NONNULL();
|
||||
float BM_face_calc_normal_vcos(
|
||||
|
|
|
@ -68,9 +68,9 @@ struct VertOrder {
|
|||
BMVert *v;
|
||||
};
|
||||
|
||||
static unsigned int bm_edge_flagged_radial_count(BMEdge *e)
|
||||
static uint bm_edge_flagged_radial_count(BMEdge *e)
|
||||
{
|
||||
unsigned int count = 0;
|
||||
uint count = 0;
|
||||
BMLoop *l;
|
||||
|
||||
if ((l = e->l)) {
|
||||
|
@ -133,7 +133,7 @@ static bool bm_face_split_edgenet_find_loop_pair(
|
|||
e = e_first = v_init->e;
|
||||
do {
|
||||
if (BM_ELEM_API_FLAG_TEST(e, EDGE_NET)) {
|
||||
const unsigned int count = bm_edge_flagged_radial_count(e);
|
||||
const uint count = bm_edge_flagged_radial_count(e);
|
||||
if (count == 1) {
|
||||
BLI_SMALLSTACK_PUSH(edges_boundary, e);
|
||||
edges_boundary_len++;
|
||||
|
@ -238,7 +238,7 @@ static bool bm_face_split_edgenet_find_loop_pair_exists(
|
|||
e = e_first = v_init->e;
|
||||
do {
|
||||
if (BM_ELEM_API_FLAG_TEST(e, EDGE_NET)) {
|
||||
const unsigned int count = bm_edge_flagged_radial_count(e);
|
||||
const uint count = bm_edge_flagged_radial_count(e);
|
||||
if (count == 1) {
|
||||
edges_boundary_len++;
|
||||
}
|
||||
|
@ -274,7 +274,7 @@ static bool bm_face_split_edgenet_find_loop_pair_exists(
|
|||
static bool bm_face_split_edgenet_find_loop_walk(
|
||||
BMVert *v_init, const float face_normal[3],
|
||||
/* cache to avoid realloc every time */
|
||||
struct VertOrder *edge_order, const unsigned int edge_order_len,
|
||||
struct VertOrder *edge_order, const uint edge_order_len,
|
||||
BMEdge *e_pair[2])
|
||||
{
|
||||
/* fast-path for the common case (avoid push-pop).
|
||||
|
@ -381,7 +381,7 @@ walk_nofork:
|
|||
|
||||
/* sort by angle if needed */
|
||||
if (STACK_SIZE(edge_order) > 1) {
|
||||
unsigned int j;
|
||||
uint j;
|
||||
BMVert *v_prev = BM_edge_other_vert(v->e, v);
|
||||
|
||||
for (j = 0; j < STACK_SIZE(edge_order); j++) {
|
||||
|
@ -420,7 +420,7 @@ finally:
|
|||
static bool bm_face_split_edgenet_find_loop(
|
||||
BMVert *v_init, const float face_normal[3], float face_normal_matrix[3][3],
|
||||
/* cache to avoid realloc every time */
|
||||
struct VertOrder *edge_order, const unsigned int edge_order_len,
|
||||
struct VertOrder *edge_order, const uint edge_order_len,
|
||||
BMVert **r_face_verts, int *r_face_verts_len)
|
||||
{
|
||||
BMEdge *e_pair[2];
|
||||
|
@ -434,7 +434,7 @@ static bool bm_face_split_edgenet_find_loop(
|
|||
(bm_edge_flagged_radial_count(e_pair[1]) == 1));
|
||||
|
||||
if (bm_face_split_edgenet_find_loop_walk(v_init, face_normal, edge_order, edge_order_len, e_pair)) {
|
||||
unsigned int i = 0;
|
||||
uint i = 0;
|
||||
|
||||
r_face_verts[i++] = v_init;
|
||||
v = BM_edge_other_vert(e_pair[1], v_init);
|
||||
|
@ -474,7 +474,7 @@ bool BM_face_split_edgenet(
|
|||
int i;
|
||||
|
||||
struct VertOrder *edge_order;
|
||||
const unsigned int edge_order_len = edge_net_len + 2;
|
||||
const uint edge_order_len = edge_net_len + 2;
|
||||
|
||||
BMVert *v;
|
||||
|
||||
|
@ -721,13 +721,13 @@ BLI_INLINE bool edge_isect_verts_point_2d(
|
|||
*/
|
||||
struct EdgeGroupIsland {
|
||||
LinkNode edge_links; /* keep first */
|
||||
unsigned int vert_len, edge_len;
|
||||
uint vert_len, edge_len;
|
||||
|
||||
/* Set the following vars once we have >1 groups */
|
||||
|
||||
/* when when an edge in a previous group connects to this one,
|
||||
* so theres no need to create one pointing back. */
|
||||
unsigned int has_prev_edge : 1;
|
||||
uint has_prev_edge : 1;
|
||||
|
||||
/* verts in the group which has the lowest & highest values,
|
||||
* the lower vertex is connected to the first edge */
|
||||
|
@ -758,7 +758,7 @@ struct Edges_VertVert_BVHTreeTest {
|
|||
BMVert *v_origin;
|
||||
BMVert *v_other;
|
||||
|
||||
const unsigned int *vert_range;
|
||||
const uint *vert_range;
|
||||
};
|
||||
|
||||
struct Edges_VertRay_BVHTreeTest {
|
||||
|
@ -766,7 +766,7 @@ struct Edges_VertRay_BVHTreeTest {
|
|||
|
||||
BMVert *v_origin;
|
||||
|
||||
const unsigned int *vert_range;
|
||||
const uint *vert_range;
|
||||
};
|
||||
|
||||
static void bvhtree_test_edges_isect_2d_vert_cb(
|
||||
|
@ -831,12 +831,12 @@ static void bvhtree_test_edges_isect_2d_ray_cb(
|
|||
struct EdgeGroup_FindConnection_Args {
|
||||
BVHTree *bvhtree;
|
||||
BMEdge **edge_arr;
|
||||
unsigned int edge_arr_len;
|
||||
uint edge_arr_len;
|
||||
|
||||
BMEdge **edge_arr_new;
|
||||
unsigned int edge_arr_new_len;
|
||||
uint edge_arr_new_len;
|
||||
|
||||
const unsigned int *vert_range;
|
||||
const uint *vert_range;
|
||||
};
|
||||
|
||||
static BMEdge *test_edges_isect_2d_vert(
|
||||
|
@ -869,7 +869,7 @@ static BMEdge *test_edges_isect_2d_vert(
|
|||
/* check existing connections (no spatial optimization here since we're continually adding). */
|
||||
if (LIKELY(index == -1)) {
|
||||
float t_best = 1.0f;
|
||||
for (unsigned int i = 0; i < args->edge_arr_new_len; i++) {
|
||||
for (uint i = 0; i < args->edge_arr_new_len; i++) {
|
||||
float co_isect[2];
|
||||
if (UNLIKELY(edge_isect_verts_point_2d(args->edge_arr_new[i], v_origin, v_other, co_isect))) {
|
||||
const float t_test = line_point_factor_v2(co_isect, v_origin->co, v_other->co);
|
||||
|
@ -914,7 +914,7 @@ static BMEdge *test_edges_isect_2d_ray(
|
|||
|
||||
/* check existing connections (no spatial optimization here since we're continually adding). */
|
||||
if (LIKELY(index != -1)) {
|
||||
for (unsigned int i = 0; i < args->edge_arr_new_len; i++) {
|
||||
for (uint i = 0; i < args->edge_arr_new_len; i++) {
|
||||
BMEdge *e = args->edge_arr_new[i];
|
||||
float dist_new;
|
||||
if (isect_ray_seg_v2(v_origin->co, dir, e->v1->co, e->v2->co, &dist_new, NULL)) {
|
||||
|
@ -1031,7 +1031,7 @@ static BMVert *bm_face_split_edgenet_partial_connect(BMesh *bm, BMVert *v_delimi
|
|||
/* initial check - see if we have 3+ flagged edges attached to 'v_delimit'
|
||||
* if not, we can early exit */
|
||||
LinkNode *e_delimit_list = NULL;
|
||||
unsigned int e_delimit_list_len = 0;
|
||||
uint e_delimit_list_len = 0;
|
||||
|
||||
#define EDGE_NOT_IN_STACK BM_ELEM_INTERNAL_TAG
|
||||
#define VERT_NOT_IN_STACK BM_ELEM_INTERNAL_TAG
|
||||
|
@ -1169,10 +1169,10 @@ static bool bm_vert_partial_connect_check_overlap(
|
|||
*/
|
||||
bool BM_face_split_edgenet_connect_islands(
|
||||
BMesh *bm,
|
||||
BMFace *f, BMEdge **edge_net_init, const unsigned int edge_net_init_len,
|
||||
BMFace *f, BMEdge **edge_net_init, const uint edge_net_init_len,
|
||||
bool use_partial_connect,
|
||||
MemArena *mem_arena,
|
||||
BMEdge ***r_edge_net_new, unsigned int *r_edge_net_new_len)
|
||||
BMEdge ***r_edge_net_new, uint *r_edge_net_new_len)
|
||||
{
|
||||
/* -------------------------------------------------------------------- */
|
||||
/* This function has 2 main parts.
|
||||
|
@ -1186,7 +1186,7 @@ bool BM_face_split_edgenet_connect_islands(
|
|||
* (avoid thrashing the area when the initial check isn't so intensive on the stack).
|
||||
*/
|
||||
|
||||
const unsigned int edge_arr_len = (unsigned int)edge_net_init_len + (unsigned int)f->len;
|
||||
const uint edge_arr_len = (uint)edge_net_init_len + (uint)f->len;
|
||||
BMEdge **edge_arr = BLI_array_alloca(edge_arr, edge_arr_len);
|
||||
bool ok = false;
|
||||
|
||||
|
@ -1197,7 +1197,7 @@ bool BM_face_split_edgenet_connect_islands(
|
|||
#define VERT_NOT_IN_STACK BM_ELEM_INTERNAL_TAG
|
||||
|
||||
{
|
||||
unsigned int i = edge_net_init_len;
|
||||
uint i = edge_net_init_len;
|
||||
BMLoop *l_iter, *l_first;
|
||||
l_iter = l_first = BM_FACE_FIRST_LOOP(f);
|
||||
do {
|
||||
|
@ -1206,7 +1206,7 @@ bool BM_face_split_edgenet_connect_islands(
|
|||
BLI_assert(i == edge_arr_len);
|
||||
}
|
||||
|
||||
for (unsigned int i = 0; i < edge_arr_len; i++) {
|
||||
for (uint i = 0; i < edge_arr_len; i++) {
|
||||
BM_elem_flag_enable(edge_arr[i], EDGE_NOT_IN_STACK);
|
||||
BM_elem_flag_enable(edge_arr[i]->v1, VERT_NOT_IN_STACK);
|
||||
BM_elem_flag_enable(edge_arr[i]->v2, VERT_NOT_IN_STACK);
|
||||
|
@ -1224,12 +1224,12 @@ bool BM_face_split_edgenet_connect_islands(
|
|||
|
||||
struct {
|
||||
struct TempVertPair *list;
|
||||
unsigned int len;
|
||||
uint len;
|
||||
int *remap; /* temp -> orig mapping */
|
||||
} temp_vert_pairs = {NULL};
|
||||
|
||||
if (use_partial_connect) {
|
||||
for (unsigned int i = 0; i < edge_net_init_len; i++) {
|
||||
for (uint i = 0; i < edge_net_init_len; i++) {
|
||||
for (unsigned j = 0; j < 2; j++) {
|
||||
BMVert *v_delimit = (&edge_arr[i]->v1)[j];
|
||||
BMVert *v_other;
|
||||
|
@ -1254,19 +1254,19 @@ bool BM_face_split_edgenet_connect_islands(
|
|||
|
||||
|
||||
|
||||
unsigned int group_arr_len = 0;
|
||||
uint group_arr_len = 0;
|
||||
LinkNode *group_head = NULL;
|
||||
{
|
||||
/* scan 'edge_arr' backwards so the outer face boundary is handled first
|
||||
* (since its likely to be the largest) */
|
||||
unsigned int edge_index = (edge_arr_len - 1);
|
||||
unsigned int edge_in_group_tot = 0;
|
||||
uint edge_index = (edge_arr_len - 1);
|
||||
uint edge_in_group_tot = 0;
|
||||
|
||||
BLI_SMALLSTACK_DECLARE(vstack, BMVert *);
|
||||
|
||||
while (true) {
|
||||
LinkNode *edge_links = NULL;
|
||||
unsigned int unique_verts_in_group = 0, unique_edges_in_group = 0;
|
||||
uint unique_verts_in_group = 0, unique_edges_in_group = 0;
|
||||
|
||||
/* list of groups */
|
||||
BLI_assert(BM_elem_flag_test(edge_arr[edge_index]->v1, VERT_NOT_IN_STACK));
|
||||
|
@ -1333,7 +1333,7 @@ bool BM_face_split_edgenet_connect_islands(
|
|||
#define VERT_IN_ARRAY BM_ELEM_INTERNAL_TAG
|
||||
|
||||
struct EdgeGroupIsland **group_arr = BLI_memarena_alloc(mem_arena, sizeof(*group_arr) * group_arr_len);
|
||||
unsigned int vert_arr_len = 0;
|
||||
uint vert_arr_len = 0;
|
||||
/* sort groups by lowest value vertex */
|
||||
{
|
||||
/* fill 'groups_arr' in reverse order so the boundary face is first */
|
||||
|
@ -1389,7 +1389,7 @@ bool BM_face_split_edgenet_connect_islands(
|
|||
/* we don't know how many unique verts there are connecting the edges, so over-alloc */
|
||||
BMVert **vert_arr = BLI_memarena_alloc(mem_arena, sizeof(*vert_arr) * vert_arr_len);
|
||||
/* map vertex -> group index */
|
||||
unsigned int *verts_group_table = BLI_memarena_alloc(mem_arena, sizeof(*verts_group_table) * vert_arr_len);
|
||||
uint *verts_group_table = BLI_memarena_alloc(mem_arena, sizeof(*verts_group_table) * vert_arr_len);
|
||||
|
||||
float (*vert_coords_backup)[3] = BLI_memarena_alloc(mem_arena, sizeof(*vert_coords_backup) * vert_arr_len);
|
||||
|
||||
|
@ -1398,7 +1398,7 @@ bool BM_face_split_edgenet_connect_islands(
|
|||
const float f_co_ref[3] = {UNPACK3(BM_FACE_FIRST_LOOP(f)->v->co)};
|
||||
|
||||
int v_index = 0; /* global vert index */
|
||||
for (unsigned int g_index = 0; g_index < group_arr_len; g_index++) {
|
||||
for (uint g_index = 0; g_index < group_arr_len; g_index++) {
|
||||
LinkNode *edge_links = group_arr[g_index]->edge_links.link;
|
||||
do {
|
||||
BMEdge *e = edge_links->link;
|
||||
|
@ -1436,7 +1436,7 @@ bool BM_face_split_edgenet_connect_islands(
|
|||
|
||||
/* Now create bvh tree*/
|
||||
BVHTree *bvhtree = BLI_bvhtree_new(edge_arr_len, 0.0f, 8, 8);
|
||||
for (unsigned int i = 0; i < edge_arr_len; i++) {
|
||||
for (uint i = 0; i < edge_arr_len; i++) {
|
||||
const float e_cos[2][3] = {
|
||||
{UNPACK2(edge_arr[i]->v1->co), 0.0f},
|
||||
{UNPACK2(edge_arr[i]->v2->co), 0.0f},
|
||||
|
@ -1465,15 +1465,15 @@ bool BM_face_split_edgenet_connect_islands(
|
|||
/* Create connections between groups */
|
||||
|
||||
/* may be an over-alloc, but not by much */
|
||||
unsigned int edge_net_new_len = (unsigned int)edge_net_init_len + ((group_arr_len - 1) * 2);
|
||||
uint edge_net_new_len = (uint)edge_net_init_len + ((group_arr_len - 1) * 2);
|
||||
BMEdge **edge_net_new = BLI_memarena_alloc(mem_arena, sizeof(*edge_net_new) * edge_net_new_len);
|
||||
memcpy(edge_net_new, edge_net_init, sizeof(*edge_net_new) * (size_t)edge_net_init_len);
|
||||
|
||||
{
|
||||
unsigned int edge_net_new_index = edge_net_init_len;
|
||||
uint edge_net_new_index = edge_net_init_len;
|
||||
/* start-end of the verts in the current group */
|
||||
|
||||
unsigned int vert_range[2];
|
||||
uint vert_range[2];
|
||||
|
||||
vert_range[0] = 0;
|
||||
vert_range[1] = group_arr[0]->vert_len;
|
||||
|
@ -1492,7 +1492,7 @@ bool BM_face_split_edgenet_connect_islands(
|
|||
.vert_range = vert_range,
|
||||
};
|
||||
|
||||
for (unsigned int g_index = 1; g_index < group_arr_len; g_index++) {
|
||||
for (uint g_index = 1; g_index < group_arr_len; g_index++) {
|
||||
struct EdgeGroupIsland *g = group_arr[g_index];
|
||||
|
||||
/* the range of verts this group uses in 'verts_arr' (not uncluding the last index) */
|
||||
|
@ -1551,7 +1551,7 @@ bool BM_face_split_edgenet_connect_islands(
|
|||
}
|
||||
|
||||
/* tell the 'next' group it doesn't need to create its own back-link */
|
||||
unsigned int g_index_other = verts_group_table[index_other];
|
||||
uint g_index_other = verts_group_table[index_other];
|
||||
group_arr[g_index_other]->has_prev_edge = true;
|
||||
}
|
||||
}
|
||||
|
@ -1567,7 +1567,7 @@ bool BM_face_split_edgenet_connect_islands(
|
|||
*r_edge_net_new_len = edge_net_new_len;
|
||||
ok = true;
|
||||
|
||||
for (unsigned int i = 0; i < vert_arr_len; i++) {
|
||||
for (uint i = 0; i < vert_arr_len; i++) {
|
||||
copy_v3_v3(vert_arr[i]->co, vert_coords_backup[i]);
|
||||
}
|
||||
|
||||
|
@ -1600,7 +1600,7 @@ finally:
|
|||
|
||||
/* Remove edges which have become doubles since splicing vertices together,
|
||||
* its less trouble then detecting future-doubles on edge-creation. */
|
||||
for (unsigned int i = edge_net_init_len; i < edge_net_new_len; i++) {
|
||||
for (uint i = edge_net_init_len; i < edge_net_new_len; i++) {
|
||||
while (BM_edge_find_double(edge_net_new[i])) {
|
||||
BM_edge_kill(bm, edge_net_new[i]);
|
||||
edge_net_new_len--;
|
||||
|
@ -1616,7 +1616,7 @@ finally:
|
|||
#endif
|
||||
|
||||
|
||||
for (unsigned int i = 0; i < edge_arr_len; i++) {
|
||||
for (uint i = 0; i < edge_arr_len; i++) {
|
||||
BM_elem_flag_disable(edge_arr[i], EDGE_NOT_IN_STACK);
|
||||
BM_elem_flag_disable(edge_arr[i]->v1, VERT_NOT_IN_STACK);
|
||||
BM_elem_flag_disable(edge_arr[i]->v2, VERT_NOT_IN_STACK);
|
||||
|
|
|
@ -32,10 +32,10 @@ bool BM_face_split_edgenet(
|
|||
|
||||
bool BM_face_split_edgenet_connect_islands(
|
||||
BMesh *bm,
|
||||
BMFace *f, BMEdge **edge_net_init, const unsigned int edge_net_init_len,
|
||||
BMFace *f, BMEdge **edge_net_init, const uint edge_net_init_len,
|
||||
bool use_partial_connect,
|
||||
struct MemArena *arena,
|
||||
BMEdge ***r_edge_net_new, unsigned int *r_edge_net_new_len)
|
||||
BMEdge ***r_edge_net_new, uint *r_edge_net_new_len)
|
||||
ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1, 2, 3, 6, 7, 8);
|
||||
|
||||
#endif /* __BMESH_POLYGON_EDGENET_H__ */
|
||||
|
|
|
@ -73,7 +73,7 @@ enum {
|
|||
};
|
||||
|
||||
#define BM_ELEM_API_FLAG_ENABLE(element, f) { ((element)->head.api_flag |= (f)); } (void)0
|
||||
#define BM_ELEM_API_FLAG_DISABLE(element, f) { ((element)->head.api_flag &= (unsigned char)~(f)); } (void)0
|
||||
#define BM_ELEM_API_FLAG_DISABLE(element, f) { ((element)->head.api_flag &= (uchar)~(f)); } (void)0
|
||||
#define BM_ELEM_API_FLAG_TEST(element, f) ((element)->head.api_flag & (f))
|
||||
#define BM_ELEM_API_FLAG_CLEAR(element) { ((element)->head.api_flag = 0); } (void)0
|
||||
|
||||
|
|
|
@ -2326,7 +2326,7 @@ static void bm_mesh_calc_volume_face(const BMFace *f, float *r_vol)
|
|||
{
|
||||
const int tottri = f->len - 2;
|
||||
BMLoop **loops = BLI_array_alloca(loops, f->len);
|
||||
unsigned int (*index)[3] = BLI_array_alloca(index, tottri);
|
||||
uint (*index)[3] = BLI_array_alloca(index, tottri);
|
||||
int j;
|
||||
|
||||
BM_face_calc_tessellation(f, false, loops, index);
|
||||
|
@ -2395,8 +2395,8 @@ int BM_mesh_calc_face_groups(
|
|||
|
||||
int group_curr = 0;
|
||||
|
||||
unsigned int tot_faces = 0;
|
||||
unsigned int tot_touch = 0;
|
||||
uint tot_faces = 0;
|
||||
uint tot_touch = 0;
|
||||
|
||||
BMFace **stack;
|
||||
STACK_DECLARE(stack);
|
||||
|
@ -2553,8 +2553,8 @@ int BM_mesh_calc_edge_groups(
|
|||
|
||||
int group_curr = 0;
|
||||
|
||||
unsigned int tot_edges = 0;
|
||||
unsigned int tot_touch = 0;
|
||||
uint tot_edges = 0;
|
||||
uint tot_touch = 0;
|
||||
|
||||
BMEdge **stack;
|
||||
STACK_DECLARE(stack);
|
||||
|
|
|
@ -55,7 +55,7 @@ static int bm_face_connect_verts(BMesh *bm, BMFace *f, const bool check_degenera
|
|||
|
||||
BMLoop *l_tag_prev = NULL, *l_tag_first = NULL;
|
||||
BMLoop *l_iter, *l_first;
|
||||
unsigned int i;
|
||||
uint i;
|
||||
|
||||
STACK_INIT(loops_split, pair_split_max);
|
||||
STACK_INIT(verts_pair, pair_split_max);
|
||||
|
|
|
@ -67,8 +67,8 @@ static bool bm_face_split_find(BMesh *bm, BMFace *f, BMLoop *l_pair[2], float *r
|
|||
{
|
||||
BMLoop *l_iter, *l_first;
|
||||
BMLoop **l_arr = BLI_array_alloca(l_arr, f->len);
|
||||
const unsigned int f_len = f->len;
|
||||
unsigned int i_a, i_b;
|
||||
const uint f_len = f->len;
|
||||
uint i_a, i_b;
|
||||
bool found = false;
|
||||
|
||||
/* angle finding */
|
||||
|
|
|
@ -309,7 +309,7 @@ void bmo_dissolve_edges_exec(BMesh *bm, BMOperator *op)
|
|||
BMO_ITER (e, &eiter, op->slots_in, "edges", BM_EDGE) {
|
||||
BMFace *f_pair[2];
|
||||
if (BM_edge_face_pair(e, &f_pair[0], &f_pair[1])) {
|
||||
unsigned int j;
|
||||
uint j;
|
||||
for (j = 0; j < 2; j++) {
|
||||
BMLoop *l_first, *l_iter;
|
||||
l_iter = l_first = BM_FACE_FIRST_LOOP(f_pair[j]);
|
||||
|
|
|
@ -83,7 +83,7 @@ static BMEdge *bmo_edge_copy(
|
|||
{
|
||||
BMEdge *e_dst;
|
||||
BMVert *e_dst_v1, *e_dst_v2;
|
||||
unsigned int rlen;
|
||||
uint rlen;
|
||||
|
||||
/* see if any of the neighboring faces are
|
||||
* not being duplicated. in that case,
|
||||
|
|
|
@ -91,7 +91,7 @@ static void bm_face_copy_shared_all(
|
|||
/**
|
||||
* Flood fill attributes.
|
||||
*/
|
||||
static unsigned int bmesh_face_attribute_fill(
|
||||
static uint bmesh_face_attribute_fill(
|
||||
BMesh *bm,
|
||||
const bool use_normals, const bool use_data)
|
||||
{
|
||||
|
@ -102,7 +102,7 @@ static unsigned int bmesh_face_attribute_fill(
|
|||
BMIter iter;
|
||||
BMLoop *l;
|
||||
|
||||
unsigned int face_tot = 0;
|
||||
uint face_tot = 0;
|
||||
|
||||
|
||||
BLI_LINKSTACK_INIT(loop_queue_prev);
|
||||
|
|
|
@ -187,15 +187,15 @@ static void bm_loop_interp_from_grid_boundary_2(BMesh *bm, BMLoop *l, BMLoop *l_
|
|||
* Avoids calling #barycentric_weights_v2_quad often by caching weights into an array.
|
||||
*/
|
||||
static void barycentric_weights_v2_grid_cache(
|
||||
const unsigned int xtot, const unsigned int ytot,
|
||||
const uint xtot, const uint ytot,
|
||||
float (*weight_table)[4])
|
||||
{
|
||||
float x_step = 1.0f / (float)(xtot - 1);
|
||||
float y_step = 1.0f / (float)(ytot - 1);
|
||||
unsigned int i = 0;
|
||||
uint i = 0;
|
||||
float xy_fl[2];
|
||||
|
||||
unsigned int x, y;
|
||||
uint x, y;
|
||||
for (y = 0; y < ytot; y++) {
|
||||
xy_fl[1] = y_step * (float)y;
|
||||
for (x = 0; x < xtot; x++) {
|
||||
|
@ -219,13 +219,13 @@ static void barycentric_weights_v2_grid_cache(
|
|||
* \param v_grid 2d array of verts, all boundary verts must be set, we fill in the middle.
|
||||
*/
|
||||
static void bm_grid_fill_array(
|
||||
BMesh *bm, BMVert **v_grid, const unsigned int xtot, unsigned const int ytot,
|
||||
BMesh *bm, BMVert **v_grid, const uint xtot, unsigned const int ytot,
|
||||
const short mat_nr, const bool use_smooth,
|
||||
const bool use_flip, const bool use_interp_simple)
|
||||
{
|
||||
const bool use_vert_interp = CustomData_has_interp(&bm->vdata);
|
||||
const bool use_loop_interp = CustomData_has_interp(&bm->ldata);
|
||||
unsigned int x, y;
|
||||
uint x, y;
|
||||
|
||||
/* for use_loop_interp */
|
||||
BMLoop *((*larr_x_a)[2]), *((*larr_x_b)[2]), *((*larr_y_a)[2]), *((*larr_y_b)[2]);
|
||||
|
@ -393,7 +393,7 @@ static void bm_grid_fill_array(
|
|||
BMLoop *l_quad[4];
|
||||
BMLoop *l_bound[4];
|
||||
BMLoop *l_tmp;
|
||||
unsigned int x_side, y_side, i;
|
||||
uint x_side, y_side, i;
|
||||
char interp_from;
|
||||
|
||||
|
||||
|
@ -496,12 +496,12 @@ static void bm_grid_fill(
|
|||
{
|
||||
#define USE_FLIP_DETECT
|
||||
|
||||
const unsigned int xtot = (unsigned int)BM_edgeloop_length_get(estore_a);
|
||||
const unsigned int ytot = (unsigned int)BM_edgeloop_length_get(estore_rail_a);
|
||||
const uint xtot = (uint)BM_edgeloop_length_get(estore_a);
|
||||
const uint ytot = (uint)BM_edgeloop_length_get(estore_rail_a);
|
||||
//BMVert *v;
|
||||
unsigned int i;
|
||||
uint i;
|
||||
#ifdef DEBUG
|
||||
unsigned int x, y;
|
||||
uint x, y;
|
||||
#endif
|
||||
LinkData *el;
|
||||
bool use_flip = false;
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
void bmo_holes_fill_exec(BMesh *bm, BMOperator *op)
|
||||
{
|
||||
BMOperator op_attr;
|
||||
const unsigned int sides = BMO_slot_int_get(op->slots_in, "sides");
|
||||
const uint sides = BMO_slot_int_get(op->slots_in, "sides");
|
||||
|
||||
|
||||
BM_mesh_elem_hflag_disable_all(bm, BM_EDGE | BM_FACE, BM_ELEM_TAG, false);
|
||||
|
|
|
@ -275,7 +275,7 @@ static void bmo_face_inset_individual(
|
|||
|
||||
BMLoop *l_iter, *l_first;
|
||||
BMLoop *l_other;
|
||||
unsigned int i;
|
||||
uint i;
|
||||
float e_length_prev;
|
||||
|
||||
l_first = BM_FACE_FIRST_LOOP(f);
|
||||
|
|
|
@ -132,11 +132,11 @@ struct DelimitData_CD {
|
|||
};
|
||||
|
||||
struct DelimitData {
|
||||
unsigned int do_seam : 1;
|
||||
unsigned int do_sharp : 1;
|
||||
unsigned int do_mat : 1;
|
||||
unsigned int do_angle_face : 1;
|
||||
unsigned int do_angle_shape : 1;
|
||||
uint do_seam : 1;
|
||||
uint do_sharp : 1;
|
||||
uint do_mat : 1;
|
||||
uint do_angle_face : 1;
|
||||
uint do_angle_shape : 1;
|
||||
|
||||
float angle_face;
|
||||
float angle_face__cos;
|
||||
|
@ -272,7 +272,7 @@ void bmo_join_triangles_exec(BMesh *bm, BMOperator *op)
|
|||
/* data: edge-to-join, sort_value: error weight */
|
||||
struct SortPointerByFloat *jedges;
|
||||
unsigned i, totedge;
|
||||
unsigned int totedge_tag = 0;
|
||||
uint totedge_tag = 0;
|
||||
|
||||
struct DelimitData delimit_data = {0};
|
||||
|
||||
|
|
|
@ -760,8 +760,8 @@ void bmo_create_grid_exec(BMesh *bm, BMOperator *op)
|
|||
BMOpSlot *slot_verts_out = BMO_slot_get(op->slots_out, "verts.out");
|
||||
|
||||
const float dia = BMO_slot_float_get(op->slots_in, "size");
|
||||
const unsigned int xtot = max_ii(2, BMO_slot_int_get(op->slots_in, "x_segments"));
|
||||
const unsigned int ytot = max_ii(2, BMO_slot_int_get(op->slots_in, "y_segments"));
|
||||
const uint xtot = max_ii(2, BMO_slot_int_get(op->slots_in, "x_segments"));
|
||||
const uint ytot = max_ii(2, BMO_slot_int_get(op->slots_in, "y_segments"));
|
||||
const float xtot_inv2 = 2.0f / (xtot - 1);
|
||||
const float ytot_inv2 = 2.0f / (ytot - 1);
|
||||
const bool calc_uvs = BMO_slot_bool_get(op->slots_in, "calc_uvs");
|
||||
|
@ -772,7 +772,7 @@ void bmo_create_grid_exec(BMesh *bm, BMOperator *op)
|
|||
float mat[4][4];
|
||||
float vec[3], tvec[3];
|
||||
|
||||
unsigned int x, y, i;
|
||||
uint x, y, i;
|
||||
|
||||
|
||||
BMO_slot_mat4_get(op->slots_in, "matrix", mat);
|
||||
|
@ -826,7 +826,7 @@ void bmo_create_grid_exec(BMesh *bm, BMOperator *op)
|
|||
* \param y_segments The y-resolution of the grid
|
||||
* \param oflag The flag to check faces with.
|
||||
*/
|
||||
void BM_mesh_calc_uvs_grid(BMesh *bm, const unsigned int x_segments, const unsigned int y_segments, const short oflag)
|
||||
void BM_mesh_calc_uvs_grid(BMesh *bm, const uint x_segments, const uint y_segments, const short oflag)
|
||||
{
|
||||
BMFace *f;
|
||||
BMLoop *l;
|
||||
|
|
|
@ -153,7 +153,7 @@ static BMFace *remdoubles_createface(BMesh *bm, BMFace *f, BMOpSlot *slot_target
|
|||
|
||||
finally:
|
||||
{
|
||||
unsigned int i;
|
||||
uint i;
|
||||
for (i = 0; i < STACK_SIZE(verts); i++) {
|
||||
BMO_vert_flag_disable(bm, verts[i], VERT_IN_FACE);
|
||||
}
|
||||
|
@ -165,7 +165,7 @@ finally:
|
|||
BLI_assert(f_new != f);
|
||||
|
||||
if (f_new) {
|
||||
unsigned int i = 0;
|
||||
uint i = 0;
|
||||
BMLoop *l_iter, *l_first;
|
||||
l_iter = l_first = BM_FACE_FIRST_LOOP(f_new);
|
||||
do {
|
||||
|
@ -469,7 +469,7 @@ void bmo_collapse_exec(BMesh *bm, BMOperator *op)
|
|||
v_tar = e->v1;
|
||||
|
||||
while (!BLI_stack_is_empty(edge_stack)) {
|
||||
unsigned int j;
|
||||
uint j;
|
||||
BLI_stack_pop(edge_stack, &e);
|
||||
|
||||
for (j = 0; j < 2; j++) {
|
||||
|
|
|
@ -172,7 +172,7 @@ static void init_laplacian_matrix(LaplacianSystem *sys)
|
|||
float w1, w2, w3, w4;
|
||||
int i, j;
|
||||
bool has_4_vert;
|
||||
unsigned int idv1, idv2, idv3, idv4, idv[4];
|
||||
uint idv1, idv2, idv3, idv4, idv[4];
|
||||
BMEdge *e;
|
||||
BMFace *f;
|
||||
BMIter eiter;
|
||||
|
@ -289,7 +289,7 @@ static void fill_laplacian_matrix(LaplacianSystem *sys)
|
|||
float w2, w3, w4;
|
||||
int i, j;
|
||||
bool has_4_vert;
|
||||
unsigned int idv1, idv2, idv3, idv4, idv[4];
|
||||
uint idv1, idv2, idv3, idv4, idv[4];
|
||||
|
||||
BMEdge *e;
|
||||
BMFace *f;
|
||||
|
@ -420,7 +420,7 @@ static void validate_solution(LaplacianSystem *sys, int usex, int usey, int usez
|
|||
float leni, lene;
|
||||
float vini, vend;
|
||||
float *vi1, *vi2, ve1[3], ve2[3];
|
||||
unsigned int idv1, idv2;
|
||||
uint idv1, idv2;
|
||||
BMOIter siter;
|
||||
BMVert *v;
|
||||
BMEdge *e;
|
||||
|
|
|
@ -66,7 +66,7 @@
|
|||
/* Specialized Utility Funcs */
|
||||
|
||||
#ifndef NDEBUG
|
||||
static unsigned int bm_verts_tag_count(BMesh *bm)
|
||||
static uint bm_verts_tag_count(BMesh *bm)
|
||||
{
|
||||
int count = 0;
|
||||
BMIter iter;
|
||||
|
@ -390,9 +390,9 @@ static void bm_vert_calc_surface_tangent(BMesh *bm, BMVert *v, float r_no[3])
|
|||
* Tag faces connected to an edge loop as FACE_SHARED
|
||||
* if all vertices are VERT_SHARED.
|
||||
*/
|
||||
static void bm_faces_share_tag_flush(BMesh *bm, BMEdge **e_arr, const unsigned int e_arr_len)
|
||||
static void bm_faces_share_tag_flush(BMesh *bm, BMEdge **e_arr, const uint e_arr_len)
|
||||
{
|
||||
unsigned int i;
|
||||
uint i;
|
||||
|
||||
for (i = 0; i < e_arr_len; i++) {
|
||||
BMEdge *e = e_arr[i];
|
||||
|
@ -412,9 +412,9 @@ static void bm_faces_share_tag_flush(BMesh *bm, BMEdge **e_arr, const unsigned i
|
|||
/**
|
||||
* Un-Tag faces connected to an edge loop, clearing FACE_SHARED
|
||||
*/
|
||||
static void bm_faces_share_tag_clear(BMesh *bm, BMEdge **e_arr_iter, const unsigned int e_arr_len_iter)
|
||||
static void bm_faces_share_tag_clear(BMesh *bm, BMEdge **e_arr_iter, const uint e_arr_len_iter)
|
||||
{
|
||||
unsigned int i;
|
||||
uint i;
|
||||
|
||||
for (i = 0; i < e_arr_len_iter; i++) {
|
||||
BMEdge *e = e_arr_iter[i];
|
||||
|
@ -454,16 +454,16 @@ static LoopPairStore *bm_edgering_pair_store_create(
|
|||
LoopPairStore *lpair = MEM_mallocN(sizeof(*lpair), __func__);
|
||||
|
||||
if (interp_mode == SUBD_RING_INTERP_SURF) {
|
||||
const unsigned int len_a = BM_edgeloop_length_get(el_store_a);
|
||||
const unsigned int len_b = BM_edgeloop_length_get(el_store_b);
|
||||
const unsigned int e_arr_a_len = len_a - (BM_edgeloop_is_closed(el_store_a) ? 0 : 1);
|
||||
const unsigned int e_arr_b_len = len_b - (BM_edgeloop_is_closed(el_store_b) ? 0 : 1);
|
||||
const uint len_a = BM_edgeloop_length_get(el_store_a);
|
||||
const uint len_b = BM_edgeloop_length_get(el_store_b);
|
||||
const uint e_arr_a_len = len_a - (BM_edgeloop_is_closed(el_store_a) ? 0 : 1);
|
||||
const uint e_arr_b_len = len_b - (BM_edgeloop_is_closed(el_store_b) ? 0 : 1);
|
||||
BMEdge **e_arr_a = BLI_array_alloca(e_arr_a, e_arr_a_len);
|
||||
BMEdge **e_arr_b = BLI_array_alloca(e_arr_b, e_arr_b_len);
|
||||
unsigned int i;
|
||||
uint i;
|
||||
|
||||
struct BMEdgeLoopStore *el_store_pair[2] = {el_store_a, el_store_b};
|
||||
unsigned int side_index;
|
||||
uint side_index;
|
||||
float (*nors_pair[2])[3];
|
||||
GHash *nors_gh_pair[2];
|
||||
|
||||
|
@ -768,8 +768,8 @@ static void bm_edgering_pair_interpolate(
|
|||
bm_vert_calc_surface_tangent(bm, v_b, no_b);
|
||||
#else
|
||||
{
|
||||
const unsigned int index_a = GET_UINT_FROM_POINTER(BLI_ghash_lookup(lpair->nors_gh_a, v_a));
|
||||
const unsigned int index_b = GET_UINT_FROM_POINTER(BLI_ghash_lookup(lpair->nors_gh_b, v_b));
|
||||
const uint index_a = GET_UINT_FROM_POINTER(BLI_ghash_lookup(lpair->nors_gh_a, v_a));
|
||||
const uint index_b = GET_UINT_FROM_POINTER(BLI_ghash_lookup(lpair->nors_gh_b, v_b));
|
||||
|
||||
BLI_assert(BLI_ghash_haskey(lpair->nors_gh_a, v_a));
|
||||
BLI_assert(BLI_ghash_haskey(lpair->nors_gh_b, v_b));
|
||||
|
|
|
@ -77,7 +77,7 @@ void bmo_triangle_fill_exec(BMesh *bm, BMOperator *op)
|
|||
GHash *sf_vert_map;
|
||||
float normal[3];
|
||||
const int scanfill_flag = BLI_SCANFILL_CALC_HOLES | BLI_SCANFILL_CALC_POLYS | BLI_SCANFILL_CALC_LOOSE;
|
||||
unsigned int nors_tot;
|
||||
uint nors_tot;
|
||||
bool calc_winding = false;
|
||||
|
||||
sf_vert_map = BLI_ghash_ptr_new_ex(__func__, BMO_slot_buffer_count(op->slots_in, "edges"));
|
||||
|
@ -89,7 +89,7 @@ void bmo_triangle_fill_exec(BMesh *bm, BMOperator *op)
|
|||
BMO_ITER (e, &siter, op->slots_in, "edges", BM_EDGE) {
|
||||
ScanFillVert *sf_verts[2];
|
||||
BMVert **e_verts = &e->v1;
|
||||
unsigned int i;
|
||||
uint i;
|
||||
|
||||
BMO_edge_flag_enable(bm, e, EDGE_MARK);
|
||||
|
||||
|
@ -115,7 +115,7 @@ void bmo_triangle_fill_exec(BMesh *bm, BMOperator *op)
|
|||
* Since we don't know winding, just accumulate */
|
||||
ScanFillVert *sf_vert;
|
||||
struct SortNormal *nors;
|
||||
unsigned int i;
|
||||
uint i;
|
||||
bool is_degenerate = true;
|
||||
|
||||
nors = MEM_mallocN(sizeof(*nors) * nors_tot, __func__);
|
||||
|
@ -124,7 +124,7 @@ void bmo_triangle_fill_exec(BMesh *bm, BMOperator *op)
|
|||
BMVert *v = sf_vert->tmp.p;
|
||||
BMIter eiter;
|
||||
BMEdge *e_pair[2];
|
||||
unsigned int e_index = 0;
|
||||
uint e_index = 0;
|
||||
|
||||
nors[i].value = -1.0f;
|
||||
|
||||
|
@ -199,7 +199,7 @@ void bmo_triangle_fill_exec(BMesh *bm, BMOperator *op)
|
|||
int winding_votes = 0;
|
||||
for (sf_tri = sf_ctx.fillfacebase.first; sf_tri; sf_tri = sf_tri->next) {
|
||||
BMVert *v_tri[3] = {sf_tri->v1->tmp.p, sf_tri->v2->tmp.p, sf_tri->v3->tmp.p};
|
||||
unsigned int i, i_prev;
|
||||
uint i, i_prev;
|
||||
|
||||
for (i = 0, i_prev = 2; i < 3; i_prev = i++) {
|
||||
e = BM_edge_exists(v_tri[i], v_tri[i_prev]);
|
||||
|
|
|
@ -62,7 +62,7 @@ typedef struct EdRotState {
|
|||
|
||||
#if 0
|
||||
/* use BLI_ghashutil_inthash_v4 direct */
|
||||
static unsigned int erot_gsetutil_hash(const void *ptr)
|
||||
static uint erot_gsetutil_hash(const void *ptr)
|
||||
{
|
||||
const EdRotState *e_state = (const EdRotState *)ptr;
|
||||
return BLI_ghashutil_inthash_v4(&e_state->v1);
|
||||
|
@ -368,7 +368,7 @@ void BM_mesh_beautify_fill(
|
|||
TIMEIT_START(beautify_fill);
|
||||
#endif
|
||||
|
||||
eheap = BLI_heap_new_ex((unsigned int)edge_array_len);
|
||||
eheap = BLI_heap_new_ex((uint)edge_array_len);
|
||||
eheap_table = MEM_mallocN(sizeof(HeapNode *) * (size_t)edge_array_len, __func__);
|
||||
|
||||
/* build heap */
|
||||
|
|
|
@ -74,7 +74,7 @@ static short plane_point_test_v3(const float plane[4], const float co[3], const
|
|||
#define BM_VERT_DIST(v) ((v)->no[0]) /* Distance from the plane. */
|
||||
#define BM_VERT_SORTVAL(v) ((v)->no[1]) /* Temp value for sorting. */
|
||||
#define BM_VERT_LOOPINDEX(v) /* The verts index within a face (temp var) */ \
|
||||
(*((unsigned int *)(&(v)->no[2])))
|
||||
(*((uint *)(&(v)->no[2])))
|
||||
|
||||
/**
|
||||
* Hide flag access
|
||||
|
@ -113,7 +113,7 @@ static int bm_vert_sortval_cb(const void *v_a_v, const void *v_b_v)
|
|||
static void bm_face_bisect_verts(BMesh *bm, BMFace *f, const float plane[4], const short oflag_center, const short oflag_new)
|
||||
{
|
||||
/* unlikely more than 2 verts are needed */
|
||||
const unsigned int f_len_orig = (unsigned int)f->len;
|
||||
const uint f_len_orig = (uint)f->len;
|
||||
BMVert **vert_split_arr = BLI_array_alloca(vert_split_arr, f_len_orig);
|
||||
STACK_DECLARE(vert_split_arr);
|
||||
BMLoop *l_iter, *l_first;
|
||||
|
@ -171,7 +171,7 @@ static void bm_face_bisect_verts(BMesh *bm, BMFace *f, const float plane[4], con
|
|||
STACK_DECLARE(face_split_arr);
|
||||
|
||||
float sort_dir[3];
|
||||
unsigned int i;
|
||||
uint i;
|
||||
|
||||
|
||||
/* ---- */
|
||||
|
@ -246,7 +246,7 @@ static void bm_face_bisect_verts(BMesh *bm, BMFace *f, const float plane[4], con
|
|||
if (is_inside) {
|
||||
BMLoop *l_a, *l_b;
|
||||
bool found = false;
|
||||
unsigned int j;
|
||||
uint j;
|
||||
|
||||
for (j = 0; j < STACK_SIZE(face_split_arr); j++) {
|
||||
/* would be nice to avoid loop lookup here,
|
||||
|
@ -311,8 +311,8 @@ void BM_mesh_bisect_plane(
|
|||
const bool use_snap_center, const bool use_tag,
|
||||
const short oflag_center, const short oflag_new, const float eps)
|
||||
{
|
||||
unsigned int einput_len;
|
||||
unsigned int i;
|
||||
uint einput_len;
|
||||
uint i;
|
||||
BMEdge **edges_arr = MEM_mallocN(sizeof(*edges_arr) * (size_t)bm->totedge, __func__);
|
||||
|
||||
BLI_LINKSTACK_DECLARE(face_stack, BMFace *);
|
||||
|
@ -345,7 +345,7 @@ void BM_mesh_bisect_plane(
|
|||
}
|
||||
else {
|
||||
BMEdge *e;
|
||||
einput_len = (unsigned int)bm->totedge;
|
||||
einput_len = (uint)bm->totedge;
|
||||
BM_ITER_MESH_INDEX (e, &iter, bm, BM_EDGES_OF_MESH, i) {
|
||||
edge_is_cut_enable(e);
|
||||
edges_arr[i] = e;
|
||||
|
@ -425,7 +425,7 @@ void BM_mesh_bisect_plane(
|
|||
else if (side[0] == 0 || side[1] == 0) {
|
||||
/* check if either edge verts are aligned,
|
||||
* if so - tag and push all faces that use it into the stack */
|
||||
unsigned int j;
|
||||
uint j;
|
||||
BM_ITER_ELEM_INDEX (v, &iter, e, BM_VERTS_OF_EDGE, j) {
|
||||
if (side[j] == 0) {
|
||||
if (vert_is_center_test(v) == 0) {
|
||||
|
|
|
@ -180,7 +180,7 @@ static bool bm_edge_collapse_is_degenerate_flip(BMEdge *e, const float optimize_
|
|||
{
|
||||
BMIter liter;
|
||||
BMLoop *l;
|
||||
unsigned int i;
|
||||
uint i;
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
/* loop over both verts */
|
||||
|
@ -367,7 +367,7 @@ static void bm_decim_build_edge_cost(
|
|||
{
|
||||
BMIter iter;
|
||||
BMEdge *e;
|
||||
unsigned int i;
|
||||
uint i;
|
||||
|
||||
BM_ITER_MESH_INDEX (e, &iter, bm, BM_EDGES_OF_MESH, i) {
|
||||
eheap_table[i] = NULL; /* keep sanity check happy */
|
||||
|
@ -418,12 +418,12 @@ static bool bm_edge_symmetry_check_cb(void *user_data, int index, const float UN
|
|||
return false;
|
||||
}
|
||||
|
||||
static int *bm_edge_symmetry_map(BMesh *bm, unsigned int symmetry_axis, float limit)
|
||||
static int *bm_edge_symmetry_map(BMesh *bm, uint symmetry_axis, float limit)
|
||||
{
|
||||
struct KD_Symmetry_Data sym_data;
|
||||
BMIter iter;
|
||||
BMEdge *e, **etable;
|
||||
unsigned int i;
|
||||
uint i;
|
||||
int *edge_symmetry_map;
|
||||
const float limit_sq = SQUARE(limit);
|
||||
KDTree *tree;
|
||||
|
|
|
@ -43,10 +43,10 @@ static bool bm_vert_dissolve_fan_test(BMVert *v)
|
|||
|
||||
BMVert *varr[4];
|
||||
|
||||
unsigned int tot_edge = 0;
|
||||
unsigned int tot_edge_boundary = 0;
|
||||
unsigned int tot_edge_manifold = 0;
|
||||
unsigned int tot_edge_wire = 0;
|
||||
uint tot_edge = 0;
|
||||
uint tot_edge_boundary = 0;
|
||||
uint tot_edge_manifold = 0;
|
||||
uint tot_edge_wire = 0;
|
||||
|
||||
BM_ITER_ELEM (e, &iter, v, BM_EDGES_OF_VERT) {
|
||||
if (BM_edge_is_boundary(e)) {
|
||||
|
@ -97,11 +97,11 @@ static bool bm_vert_dissolve_fan(BMesh *bm, BMVert *v)
|
|||
BMIter iter;
|
||||
BMEdge *e;
|
||||
|
||||
unsigned int tot_loop = 0;
|
||||
unsigned int tot_edge = 0;
|
||||
unsigned int tot_edge_boundary = 0;
|
||||
unsigned int tot_edge_manifold = 0;
|
||||
unsigned int tot_edge_wire = 0;
|
||||
uint tot_loop = 0;
|
||||
uint tot_edge = 0;
|
||||
uint tot_edge_boundary = 0;
|
||||
uint tot_edge_manifold = 0;
|
||||
uint tot_edge_wire = 0;
|
||||
|
||||
BM_ITER_ELEM (e, &iter, v, BM_EDGES_OF_VERT) {
|
||||
if (BM_edge_is_boundary(e)) {
|
||||
|
@ -143,7 +143,7 @@ static bool bm_vert_dissolve_fan(BMesh *bm, BMVert *v)
|
|||
|
||||
if (tot_loop) {
|
||||
BMLoop *f_loop[4];
|
||||
unsigned int i;
|
||||
uint i;
|
||||
|
||||
/* ensure there are exactly tot_loop loops */
|
||||
BLI_assert(BM_iter_at_index(bm, BM_LOOPS_OF_VERT, v, tot_loop) == NULL);
|
||||
|
@ -192,8 +192,8 @@ void BM_mesh_decimate_unsubdivide_ex(BMesh *bm, const int iterations, const bool
|
|||
|
||||
BMIter iter;
|
||||
|
||||
const unsigned int offset = 0;
|
||||
const unsigned int nth = 2;
|
||||
const uint offset = 0;
|
||||
const uint nth = 2;
|
||||
|
||||
int iter_step;
|
||||
|
||||
|
@ -229,8 +229,8 @@ void BM_mesh_decimate_unsubdivide_ex(BMesh *bm, const int iterations, const bool
|
|||
#ifdef USE_WALKER
|
||||
BMWalker walker;
|
||||
#else
|
||||
unsigned int depth = 1;
|
||||
unsigned int i;
|
||||
uint depth = 1;
|
||||
uint i;
|
||||
#endif
|
||||
BMVert *v_first = NULL;
|
||||
|
||||
|
|
|
@ -100,13 +100,13 @@ static BMEdge *bm_edgenet_edge_get_next(
|
|||
*
|
||||
* This function returns half a loop, the caller needs to run twice to get both sides.
|
||||
*/
|
||||
static unsigned int bm_edgenet_path_from_pass(
|
||||
static uint bm_edgenet_path_from_pass(
|
||||
BMVert *v, LinkNode **v_ls,
|
||||
VertNetInfo *vnet_info, BLI_mempool *path_pool)
|
||||
{
|
||||
VertNetInfo *vn = &vnet_info[BM_elem_index_get(v)];
|
||||
const int pass = vn->pass;
|
||||
unsigned int v_ls_tot = 0;
|
||||
uint v_ls_tot = 0;
|
||||
|
||||
do {
|
||||
BLI_linklist_prepend_pool(v_ls, v, path_pool);
|
||||
|
@ -127,10 +127,10 @@ static bool bm_edgenet_path_check_overlap(
|
|||
VertNetInfo *vnet_info)
|
||||
{
|
||||
/* vert order doesn't matter */
|
||||
unsigned int v_ls_tot = 0;
|
||||
uint v_ls_tot = 0;
|
||||
LinkNode *v_ls = NULL;
|
||||
BMVert *v_pair[2] = {v1, v2};
|
||||
unsigned int i;
|
||||
uint i;
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
BMVert *v = v_pair[i];
|
||||
|
@ -162,7 +162,7 @@ static bool bm_edgenet_path_check_overlap(
|
|||
* Create a face from the path.
|
||||
*/
|
||||
static BMFace *bm_edgenet_face_from_path(
|
||||
BMesh *bm, LinkNode *path, const unsigned int path_len)
|
||||
BMesh *bm, LinkNode *path, const uint path_len)
|
||||
{
|
||||
BMFace *f;
|
||||
LinkNode *v_lnk;
|
||||
|
@ -205,8 +205,8 @@ static BMEdge *bm_edgenet_path_step(
|
|||
|
||||
BMEdge *e;
|
||||
BMIter iter;
|
||||
unsigned int tot;
|
||||
unsigned int v_ls_tot;
|
||||
uint tot;
|
||||
uint v_ls_tot;
|
||||
|
||||
|
||||
begin:
|
||||
|
@ -277,8 +277,8 @@ begin:
|
|||
* \return A linked list of verts.
|
||||
*/
|
||||
static LinkNode *bm_edgenet_path_calc(
|
||||
BMEdge *e, const int pass_nr, const unsigned int path_cost_max,
|
||||
unsigned int *r_path_len, unsigned int *r_path_cost,
|
||||
BMEdge *e, const int pass_nr, const uint path_cost_max,
|
||||
uint *r_path_len, uint *r_path_cost,
|
||||
VertNetInfo *vnet_info, BLI_mempool *path_pool)
|
||||
{
|
||||
VertNetInfo *vn_1, *vn_2;
|
||||
|
@ -288,7 +288,7 @@ static LinkNode *bm_edgenet_path_calc(
|
|||
LinkNode *v_ls_prev = NULL;
|
||||
LinkNode *v_ls_next = NULL;
|
||||
|
||||
unsigned int path_cost_accum = 0;
|
||||
uint path_cost_accum = 0;
|
||||
|
||||
BLI_assert(bm_edge_step_ok(e));
|
||||
|
||||
|
@ -331,7 +331,7 @@ static LinkNode *bm_edgenet_path_calc(
|
|||
|
||||
if (e_found) {
|
||||
LinkNode *path = NULL;
|
||||
unsigned int path_len;
|
||||
uint path_len;
|
||||
BLI_linklist_free_pool(v_ls_next, NULL, path_pool);
|
||||
BLI_linklist_free_pool(v_ls_prev, NULL, path_pool);
|
||||
|
||||
|
@ -376,12 +376,12 @@ static LinkNode *bm_edgenet_path_calc(
|
|||
* _don't_ have a better option.
|
||||
*/
|
||||
static LinkNode *bm_edgenet_path_calc_best(
|
||||
BMEdge *e, int *pass_nr, unsigned int path_cost_max,
|
||||
unsigned int *r_path_len, unsigned int *r_path_cost,
|
||||
BMEdge *e, int *pass_nr, uint path_cost_max,
|
||||
uint *r_path_len, uint *r_path_cost,
|
||||
VertNetInfo *vnet_info, BLI_mempool *path_pool)
|
||||
{
|
||||
LinkNode *path;
|
||||
unsigned int path_cost;
|
||||
uint path_cost;
|
||||
|
||||
path = bm_edgenet_path_calc(e, *pass_nr, path_cost_max,
|
||||
r_path_len, &path_cost,
|
||||
|
@ -399,8 +399,8 @@ static LinkNode *bm_edgenet_path_calc_best(
|
|||
/* Check every edge to see if any can give a better path.
|
||||
* This avoids very strange/long paths from being created. */
|
||||
|
||||
const unsigned int path_len = *r_path_len;
|
||||
unsigned int i, i_prev;
|
||||
const uint path_len = *r_path_len;
|
||||
uint i, i_prev;
|
||||
BMVert **vert_arr = BLI_array_alloca(vert_arr, path_len);
|
||||
LinkNode *v_lnk;
|
||||
|
||||
|
@ -413,8 +413,8 @@ static LinkNode *bm_edgenet_path_calc_best(
|
|||
BMEdge *e_other = BM_edge_exists(vert_arr[i], vert_arr[i_prev]);
|
||||
if (e_other != e) {
|
||||
LinkNode *path_test;
|
||||
unsigned int path_len_test;
|
||||
unsigned int path_cost_test;
|
||||
uint path_len_test;
|
||||
uint path_cost_test;
|
||||
|
||||
path_test = bm_edgenet_path_calc(e_other, *pass_nr, path_cost,
|
||||
&path_len_test, &path_cost_test,
|
||||
|
@ -471,8 +471,8 @@ void BM_mesh_edgenet(
|
|||
|
||||
while (true) {
|
||||
LinkNode *path = NULL;
|
||||
unsigned int path_len;
|
||||
unsigned int path_cost;
|
||||
uint path_len;
|
||||
uint path_cost;
|
||||
|
||||
e = bm_edgenet_edge_get_next(bm, &edge_queue, edge_queue_pool);
|
||||
if (e == NULL) {
|
||||
|
|
|
@ -96,7 +96,7 @@ void BM_mesh_edgesplit(
|
|||
|
||||
BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
|
||||
if (BM_elem_flag_test(e, BM_ELEM_TAG)) {
|
||||
unsigned int i;
|
||||
uint i;
|
||||
for (i = 0; i < 2; i++) {
|
||||
BMVert *v = ((&e->v1)[i]);
|
||||
if (BM_elem_flag_test(v, BM_ELEM_TAG)) {
|
||||
|
|
|
@ -146,7 +146,7 @@ struct ISectState {
|
|||
*/
|
||||
struct LinkBase {
|
||||
LinkNode *list;
|
||||
unsigned int list_len;
|
||||
uint list_len;
|
||||
};
|
||||
|
||||
static bool ghash_insert_link(
|
||||
|
@ -187,7 +187,7 @@ struct vert_sort_t {
|
|||
static void edge_verts_sort(const float co[3], struct LinkBase *v_ls_base)
|
||||
{
|
||||
/* not optimal but list will be typically < 5 */
|
||||
unsigned int i;
|
||||
uint i;
|
||||
struct vert_sort_t *vert_sort = BLI_array_alloca(vert_sort, v_ls_base->list_len);
|
||||
LinkNode *node;
|
||||
|
||||
|
@ -240,8 +240,8 @@ static void face_edges_split(
|
|||
bool use_island_connect,
|
||||
MemArena *mem_arena_edgenet)
|
||||
{
|
||||
unsigned int i;
|
||||
unsigned int edge_arr_len = e_ls_base->list_len;
|
||||
uint i;
|
||||
uint edge_arr_len = e_ls_base->list_len;
|
||||
BMEdge **edge_arr = BLI_array_alloca(edge_arr, edge_arr_len);
|
||||
LinkNode *node;
|
||||
BLI_assert(f->head.htype == BM_FACE);
|
||||
|
@ -257,7 +257,7 @@ static void face_edges_split(
|
|||
|
||||
#ifdef USE_NET_ISLAND_CONNECT
|
||||
if (use_island_connect) {
|
||||
unsigned int edge_arr_holes_len;
|
||||
uint edge_arr_holes_len;
|
||||
BMEdge **edge_arr_holes;
|
||||
if (BM_face_split_edgenet_connect_islands(
|
||||
bm, f,
|
||||
|
@ -299,14 +299,14 @@ static enum ISectType intersect_line_tri(
|
|||
const struct ISectEpsilon *e)
|
||||
{
|
||||
float p_dir[3];
|
||||
unsigned int i_t0;
|
||||
uint i_t0;
|
||||
float fac;
|
||||
|
||||
sub_v3_v3v3(p_dir, p0, p1);
|
||||
normalize_v3(p_dir);
|
||||
|
||||
for (i_t0 = 0; i_t0 < 3; i_t0++) {
|
||||
const unsigned int i_t1 = (i_t0 + 1) % 3;
|
||||
const uint i_t1 = (i_t0 + 1) % 3;
|
||||
float te_dir[3];
|
||||
|
||||
sub_v3_v3v3(te_dir, t_cos[i_t0], t_cos[i_t1]);
|
||||
|
@ -369,7 +369,7 @@ static BMVert *bm_isect_edge_tri(
|
|||
{
|
||||
BMesh *bm = s->bm;
|
||||
int k_arr[IX_TOT][4];
|
||||
unsigned int i;
|
||||
uint i;
|
||||
const int ti[3] = {UNPACK3_EX(BM_elem_index_get, t, )};
|
||||
float ix[3];
|
||||
|
||||
|
@ -464,7 +464,7 @@ static BMVert *bm_isect_edge_tri(
|
|||
}
|
||||
|
||||
if ((*r_side >= IX_EDGE_TRI_EDGE0) && (*r_side <= IX_EDGE_TRI_EDGE2)) {
|
||||
i = (unsigned int)(*r_side - IX_EDGE_TRI_EDGE0);
|
||||
i = (uint)(*r_side - IX_EDGE_TRI_EDGE0);
|
||||
e = BM_edge_exists(t[i], t[(i + 1) % 3]);
|
||||
if (e) {
|
||||
edge_verts_add(s, e, iv, false);
|
||||
|
@ -531,7 +531,7 @@ static void bm_isect_tri_tri(
|
|||
const float *f_b_cos[3] = {UNPACK3_EX(, fv_b, ->co)};
|
||||
float f_a_nor[3];
|
||||
float f_b_nor[3];
|
||||
unsigned int i;
|
||||
uint i;
|
||||
|
||||
|
||||
/* should be enough but may need to bump */
|
||||
|
@ -572,9 +572,9 @@ static void bm_isect_tri_tri(
|
|||
/* first check in any verts are touching
|
||||
* (any case where we wont create new verts)
|
||||
*/
|
||||
unsigned int i_a;
|
||||
uint i_a;
|
||||
for (i_a = 0; i_a < 3; i_a++) {
|
||||
unsigned int i_b;
|
||||
uint i_b;
|
||||
for (i_b = 0; i_b < 3; i_b++) {
|
||||
if (len_squared_v3v3(fv_a[i_a]->co, fv_b[i_b]->co) <= s->epsilon.eps2x_sq) {
|
||||
#ifdef USE_DUMP
|
||||
|
@ -597,12 +597,12 @@ static void bm_isect_tri_tri(
|
|||
/* vert-edge
|
||||
* --------- */
|
||||
{
|
||||
unsigned int i_a;
|
||||
uint i_a;
|
||||
for (i_a = 0; i_a < 3; i_a++) {
|
||||
if (BM_ELEM_API_FLAG_TEST(fv_a[i_a], VERT_VISIT_A) == 0) {
|
||||
unsigned int i_b_e0;
|
||||
uint i_b_e0;
|
||||
for (i_b_e0 = 0; i_b_e0 < 3; i_b_e0++) {
|
||||
unsigned int i_b_e1 = (i_b_e0 + 1) % 3;
|
||||
uint i_b_e1 = (i_b_e0 + 1) % 3;
|
||||
|
||||
if (BM_ELEM_API_FLAG_TEST(fv_b[i_b_e0], VERT_VISIT_B) ||
|
||||
BM_ELEM_API_FLAG_TEST(fv_b[i_b_e1], VERT_VISIT_B))
|
||||
|
@ -638,12 +638,12 @@ static void bm_isect_tri_tri(
|
|||
}
|
||||
|
||||
{
|
||||
unsigned int i_b;
|
||||
uint i_b;
|
||||
for (i_b = 0; i_b < 3; i_b++) {
|
||||
if (BM_ELEM_API_FLAG_TEST(fv_b[i_b], VERT_VISIT_B) == 0) {
|
||||
unsigned int i_a_e0;
|
||||
uint i_a_e0;
|
||||
for (i_a_e0 = 0; i_a_e0 < 3; i_a_e0++) {
|
||||
unsigned int i_a_e1 = (i_a_e0 + 1) % 3;
|
||||
uint i_a_e1 = (i_a_e0 + 1) % 3;
|
||||
|
||||
if (BM_ELEM_API_FLAG_TEST(fv_a[i_a_e0], VERT_VISIT_A) ||
|
||||
BM_ELEM_API_FLAG_TEST(fv_a[i_a_e1], VERT_VISIT_A))
|
||||
|
@ -683,7 +683,7 @@ static void bm_isect_tri_tri(
|
|||
{
|
||||
|
||||
float t_scale[3][3];
|
||||
unsigned int i_a;
|
||||
uint i_a;
|
||||
|
||||
copy_v3_v3(t_scale[0], fv_b[0]->co);
|
||||
copy_v3_v3(t_scale[1], fv_b[1]->co);
|
||||
|
@ -711,7 +711,7 @@ static void bm_isect_tri_tri(
|
|||
|
||||
{
|
||||
float t_scale[3][3];
|
||||
unsigned int i_b;
|
||||
uint i_b;
|
||||
|
||||
copy_v3_v3(t_scale[0], fv_a[0]->co);
|
||||
copy_v3_v3(t_scale[1], fv_a[1]->co);
|
||||
|
@ -751,8 +751,8 @@ static void bm_isect_tri_tri(
|
|||
/* edge-tri & edge-edge
|
||||
* -------------------- */
|
||||
{
|
||||
for (unsigned int i_a_e0 = 0; i_a_e0 < 3; i_a_e0++) {
|
||||
unsigned int i_a_e1 = (i_a_e0 + 1) % 3;
|
||||
for (uint i_a_e0 = 0; i_a_e0 < 3; i_a_e0++) {
|
||||
uint i_a_e1 = (i_a_e0 + 1) % 3;
|
||||
enum ISectType side;
|
||||
BMVert *iv;
|
||||
|
||||
|
@ -772,8 +772,8 @@ static void bm_isect_tri_tri(
|
|||
}
|
||||
}
|
||||
|
||||
for (unsigned int i_b_e0 = 0; i_b_e0 < 3; i_b_e0++) {
|
||||
unsigned int i_b_e1 = (i_b_e0 + 1) % 3;
|
||||
for (uint i_b_e0 = 0; i_b_e0 < 3; i_b_e0++) {
|
||||
uint i_b_e1 = (i_b_e0 + 1) % 3;
|
||||
enum ISectType side;
|
||||
BMVert *iv;
|
||||
|
||||
|
@ -950,7 +950,7 @@ static int isect_bvhtree_point_v3(
|
|||
const float *depth_arr = z_buffer.data;
|
||||
float depth_last = depth_arr[0];
|
||||
|
||||
for (unsigned int i = 1; i < z_buffer.count; i++) {
|
||||
for (uint i = 1; i < z_buffer.count; i++) {
|
||||
if (depth_arr[i] - depth_last > eps) {
|
||||
depth_last = depth_arr[i];
|
||||
num_isect++;
|
||||
|
@ -994,7 +994,7 @@ bool BM_mesh_intersect(
|
|||
|
||||
#ifdef USE_BVH
|
||||
BVHTree *tree_a, *tree_b;
|
||||
unsigned int tree_overlap_tot;
|
||||
uint tree_overlap_tot;
|
||||
BVHTreeOverlap *overlap;
|
||||
#else
|
||||
int i_a, i_b;
|
||||
|
@ -1107,7 +1107,7 @@ bool BM_mesh_intersect(
|
|||
overlap = BLI_bvhtree_overlap(tree_b, tree_a, &tree_overlap_tot, NULL, NULL);
|
||||
|
||||
if (overlap) {
|
||||
unsigned int i;
|
||||
uint i;
|
||||
|
||||
for (i = 0; i < tree_overlap_tot; i++) {
|
||||
#ifdef USE_DUMP
|
||||
|
@ -1380,7 +1380,7 @@ bool BM_mesh_intersect(
|
|||
GHASH_ITER (gh_iter, s.face_edges) {
|
||||
struct LinkBase *e_ls_base = BLI_ghashIterator_getValue(&gh_iter);
|
||||
LinkNode **node_prev_p;
|
||||
unsigned int i;
|
||||
uint i;
|
||||
|
||||
node_prev_p = &e_ls_base->list;
|
||||
for (i = 0, node = e_ls_base->list; node; i++, node = node->next) {
|
||||
|
@ -1445,7 +1445,7 @@ bool BM_mesh_intersect(
|
|||
}
|
||||
|
||||
{
|
||||
unsigned int i;
|
||||
uint i;
|
||||
for (i = 0; i < STACK_SIZE(splice_ls); i++) {
|
||||
if (!BLI_gset_haskey(verts_invalid, splice_ls[i][0]) &&
|
||||
!BLI_gset_haskey(verts_invalid, splice_ls[i][1]))
|
||||
|
|
|
@ -28,8 +28,8 @@
|
|||
*/
|
||||
|
||||
struct BMCalcPathParams {
|
||||
unsigned int use_topology_distance : 1;
|
||||
unsigned int use_step_face : 1;
|
||||
uint use_topology_distance : 1;
|
||||
uint use_step_face : 1;
|
||||
};
|
||||
|
||||
struct LinkNode *BM_mesh_calc_path_vert(
|
||||
|
|
|
@ -114,7 +114,7 @@ typedef struct UUIDWalk {
|
|||
GHash *faces_from_uuid; /* UUID -> UUIDFaceStepItem */
|
||||
|
||||
UUID_Int *rehash_store;
|
||||
unsigned int rehash_store_len;
|
||||
uint rehash_store_len;
|
||||
} cache;
|
||||
|
||||
} UUIDWalk;
|
||||
|
@ -136,7 +136,7 @@ typedef struct UUIDFaceStepItem {
|
|||
uintptr_t uuid;
|
||||
|
||||
LinkNode *list;
|
||||
unsigned int list_len;
|
||||
uint list_len;
|
||||
} UUIDFaceStepItem;
|
||||
|
||||
BLI_INLINE bool bm_uuidwalk_face_test(
|
||||
|
@ -178,10 +178,10 @@ BLI_INLINE bool bm_uuidwalk_face_lookup(
|
|||
}
|
||||
}
|
||||
|
||||
static unsigned int ghashutil_bmelem_indexhash(const void *key)
|
||||
static uint ghashutil_bmelem_indexhash(const void *key)
|
||||
{
|
||||
const BMElem *ele = key;
|
||||
return (unsigned int)BM_elem_index_get(ele);
|
||||
return (uint)BM_elem_index_get(ele);
|
||||
}
|
||||
|
||||
static bool ghashutil_bmelem_indexcmp(const void *a, const void *b)
|
||||
|
@ -192,14 +192,14 @@ static bool ghashutil_bmelem_indexcmp(const void *a, const void *b)
|
|||
|
||||
static GHash *ghash_bmelem_new_ex(
|
||||
const char *info,
|
||||
const unsigned int nentries_reserve)
|
||||
const uint nentries_reserve)
|
||||
{
|
||||
return BLI_ghash_new_ex(ghashutil_bmelem_indexhash, ghashutil_bmelem_indexcmp, info, nentries_reserve);
|
||||
}
|
||||
|
||||
static GSet *gset_bmelem_new_ex(
|
||||
const char *info,
|
||||
const unsigned int nentries_reserve)
|
||||
const uint nentries_reserve)
|
||||
{
|
||||
return BLI_gset_new_ex(ghashutil_bmelem_indexhash, ghashutil_bmelem_indexcmp, info, nentries_reserve);
|
||||
}
|
||||
|
@ -218,8 +218,8 @@ static GSet *gset_bmelem_new(const char *info)
|
|||
|
||||
static void bm_uuidwalk_init(
|
||||
UUIDWalk *uuidwalk,
|
||||
const unsigned int faces_src_region_len,
|
||||
const unsigned int verts_src_region_len)
|
||||
const uint faces_src_region_len,
|
||||
const uint verts_src_region_len)
|
||||
{
|
||||
BLI_listbase_clear(&uuidwalk->faces_step);
|
||||
|
||||
|
@ -307,7 +307,7 @@ static UUID_Int bm_uuidwalk_calc_vert_uuid(
|
|||
|
||||
/* vert -> other */
|
||||
{
|
||||
unsigned int tot = 0;
|
||||
uint tot = 0;
|
||||
BMIter eiter;
|
||||
BMEdge *e;
|
||||
BM_ITER_ELEM (e, &eiter, v, BM_EDGES_OF_VERT) {
|
||||
|
@ -323,7 +323,7 @@ static UUID_Int bm_uuidwalk_calc_vert_uuid(
|
|||
|
||||
/* faces */
|
||||
{
|
||||
unsigned int tot = 0;
|
||||
uint tot = 0;
|
||||
BMIter iter;
|
||||
BMFace *f;
|
||||
|
||||
|
@ -357,7 +357,7 @@ static UUID_Int bm_uuidwalk_calc_face_uuid(
|
|||
|
||||
UUID_Int uuid;
|
||||
|
||||
uuid = uuidwalk->pass * (unsigned int)f->len * PRIME_FACE_LARGE;
|
||||
uuid = uuidwalk->pass * (uint)f->len * PRIME_FACE_LARGE;
|
||||
|
||||
/* face-verts */
|
||||
{
|
||||
|
@ -399,7 +399,7 @@ static UUID_Int bm_uuidwalk_calc_face_uuid(
|
|||
}
|
||||
|
||||
static void bm_uuidwalk_rehash_reserve(
|
||||
UUIDWalk *uuidwalk, unsigned int rehash_store_len_new)
|
||||
UUIDWalk *uuidwalk, uint rehash_store_len_new)
|
||||
{
|
||||
if (UNLIKELY(rehash_store_len_new > uuidwalk->cache.rehash_store_len)) {
|
||||
/* avoid re-allocs */
|
||||
|
@ -419,9 +419,9 @@ static void bm_uuidwalk_rehash(
|
|||
{
|
||||
GHashIterator gh_iter;
|
||||
UUID_Int *uuid_store;
|
||||
unsigned int i;
|
||||
uint i;
|
||||
|
||||
unsigned int rehash_store_len_new = MAX2(BLI_ghash_size(uuidwalk->verts_uuid),
|
||||
uint rehash_store_len_new = MAX2(BLI_ghash_size(uuidwalk->verts_uuid),
|
||||
BLI_ghash_size(uuidwalk->faces_uuid));
|
||||
|
||||
bm_uuidwalk_rehash_reserve(uuidwalk, rehash_store_len_new);
|
||||
|
@ -454,12 +454,12 @@ static void bm_uuidwalk_rehash(
|
|||
|
||||
static void bm_uuidwalk_rehash_facelinks(
|
||||
UUIDWalk *uuidwalk,
|
||||
LinkNode *faces, const unsigned int faces_len,
|
||||
LinkNode *faces, const uint faces_len,
|
||||
const bool is_init)
|
||||
{
|
||||
UUID_Int *uuid_store;
|
||||
LinkNode *f_link;
|
||||
unsigned int i;
|
||||
uint i;
|
||||
|
||||
bm_uuidwalk_rehash_reserve(uuidwalk, faces_len);
|
||||
uuid_store = uuidwalk->cache.rehash_store;
|
||||
|
@ -502,7 +502,7 @@ static bool bm_vert_is_uuid_connect(
|
|||
}
|
||||
|
||||
static void bm_uuidwalk_pass_add(
|
||||
UUIDWalk *uuidwalk, LinkNode *faces_pass, const unsigned int faces_pass_len)
|
||||
UUIDWalk *uuidwalk, LinkNode *faces_pass, const uint faces_pass_len)
|
||||
{
|
||||
GHashIterator gh_iter;
|
||||
GHash *verts_uuid_pass;
|
||||
|
@ -511,7 +511,7 @@ static void bm_uuidwalk_pass_add(
|
|||
|
||||
UUIDFaceStep *fstep;
|
||||
|
||||
BLI_assert(faces_pass_len == (unsigned int)BLI_linklist_count(faces_pass));
|
||||
BLI_assert(faces_pass_len == (uint)BLI_linklist_count(faces_pass));
|
||||
|
||||
/* rehash faces now all their verts have been added */
|
||||
bm_uuidwalk_rehash_facelinks(uuidwalk, faces_pass, faces_pass_len, true);
|
||||
|
@ -588,13 +588,13 @@ static int bm_face_len_cmp(const void *v1, const void *v2)
|
|||
else return 0;
|
||||
}
|
||||
|
||||
static unsigned int bm_uuidwalk_init_from_edge(
|
||||
static uint bm_uuidwalk_init_from_edge(
|
||||
UUIDWalk *uuidwalk, BMEdge *e)
|
||||
{
|
||||
BMLoop *l_iter = e->l;
|
||||
unsigned int f_arr_len = (unsigned int)BM_edge_face_count(e);
|
||||
uint f_arr_len = (uint)BM_edge_face_count(e);
|
||||
BMFace **f_arr = BLI_array_alloca(f_arr, f_arr_len);
|
||||
unsigned int fstep_num = 0, i = 0;
|
||||
uint fstep_num = 0, i = 0;
|
||||
|
||||
do {
|
||||
BMFace *f = l_iter->f;
|
||||
|
@ -619,7 +619,7 @@ static unsigned int bm_uuidwalk_init_from_edge(
|
|||
* elsewhere using LinkNode's makes more sense */
|
||||
for (i = 0; i < f_arr_len; ) {
|
||||
LinkNode *faces_pass = NULL;
|
||||
const unsigned int i_init = i;
|
||||
const uint i_init = i;
|
||||
const int f_len = f_arr[i]->len;
|
||||
|
||||
do {
|
||||
|
@ -750,9 +750,9 @@ static BMFace **bm_mesh_region_match_pair(
|
|||
UUIDWalk *w_src, UUIDWalk *w_dst,
|
||||
#endif
|
||||
BMEdge *e_src, BMEdge *e_dst,
|
||||
const unsigned int faces_src_region_len,
|
||||
const unsigned int verts_src_region_len,
|
||||
unsigned int *r_faces_result_len)
|
||||
const uint faces_src_region_len,
|
||||
const uint verts_src_region_len,
|
||||
uint *r_faces_result_len)
|
||||
{
|
||||
#ifndef USE_WALKER_REUSE
|
||||
UUIDWalk w_src_, w_dst_;
|
||||
|
@ -877,8 +877,8 @@ static BMFace **bm_mesh_region_match_pair(
|
|||
|
||||
if (found) {
|
||||
GHashIterator gh_iter;
|
||||
const unsigned int faces_result_len = BLI_ghash_size(w_dst->faces_uuid);
|
||||
unsigned int i;
|
||||
const uint faces_result_len = BLI_ghash_size(w_dst->faces_uuid);
|
||||
uint i;
|
||||
|
||||
faces_result = MEM_mallocN(sizeof(*faces_result) * (faces_result_len + 1), __func__);
|
||||
GHASH_ITER_INDEX (gh_iter, w_dst->faces_uuid, i) {
|
||||
|
@ -909,12 +909,12 @@ finally:
|
|||
* Tag as visited, avoid re-use.
|
||||
*/
|
||||
static void bm_face_array_visit(
|
||||
BMFace **faces, const unsigned int faces_len,
|
||||
unsigned int *r_verts_len,
|
||||
BMFace **faces, const uint faces_len,
|
||||
uint *r_verts_len,
|
||||
bool visit_faces)
|
||||
{
|
||||
unsigned int verts_len = 0;
|
||||
unsigned int i;
|
||||
uint verts_len = 0;
|
||||
uint i;
|
||||
for (i = 0; i < faces_len; i++) {
|
||||
BMFace *f = faces[i];
|
||||
BMLoop *l_iter, *l_first;
|
||||
|
@ -1081,9 +1081,9 @@ static SUID_Int bm_face_region_vert_pass_id(GHash *gh, BMVert *v)
|
|||
* This is only called once on the source region (no need to be highly optimized).
|
||||
*/
|
||||
static BMEdge *bm_face_region_pivot_edge_find(
|
||||
BMFace **faces_region, unsigned int faces_region_len,
|
||||
unsigned int verts_region_len,
|
||||
unsigned int *r_depth)
|
||||
BMFace **faces_region, uint faces_region_len,
|
||||
uint verts_region_len,
|
||||
uint *r_depth)
|
||||
{
|
||||
/* note, keep deterministic where possible (geometry order independent)
|
||||
* this function assumed all visit faces & edges are tagged */
|
||||
|
@ -1092,7 +1092,7 @@ static BMEdge *bm_face_region_pivot_edge_find(
|
|||
BLI_LINKSTACK_DECLARE(vert_queue_next, BMVert *);
|
||||
|
||||
GHash *gh = BLI_ghash_ptr_new(__func__);
|
||||
unsigned int i;
|
||||
uint i;
|
||||
|
||||
BMEdge *e_pivot = NULL;
|
||||
/* pick any non-boundary edge (not ideal) */
|
||||
|
@ -1101,7 +1101,7 @@ static BMEdge *bm_face_region_pivot_edge_find(
|
|||
SUID_Int pass = 0;
|
||||
|
||||
/* total verts in 'gs' we have visited - aka - not v_init_none */
|
||||
unsigned int vert_queue_used = 0;
|
||||
uint vert_queue_used = 0;
|
||||
|
||||
BLI_LINKSTACK_INIT(vert_queue_prev);
|
||||
BLI_LINKSTACK_INIT(vert_queue_next);
|
||||
|
@ -1115,7 +1115,7 @@ static BMEdge *bm_face_region_pivot_edge_find(
|
|||
do {
|
||||
BMEdge *e = l_iter->e;
|
||||
if (bm_edge_is_region_boundary(e)) {
|
||||
unsigned int j;
|
||||
uint j;
|
||||
for (j = 0; j < 2; j++) {
|
||||
void **val_p;
|
||||
if (!BLI_ghash_ensure_p(gh, (&e->v1)[j], &val_p)) {
|
||||
|
@ -1251,7 +1251,7 @@ static BMEdge *bm_face_region_pivot_edge_find(
|
|||
pass = 0;
|
||||
}
|
||||
|
||||
*r_depth = (unsigned int)pass;
|
||||
*r_depth = (uint)pass;
|
||||
|
||||
return e_pivot;
|
||||
}
|
||||
|
@ -1286,7 +1286,7 @@ static UUIDFashMatch bm_vert_fasthash_single(BMVert *v)
|
|||
e_num += 1;
|
||||
do {
|
||||
f_num += 1;
|
||||
l_num += (unsigned int)l_iter->f->len;
|
||||
l_num += (uint)l_iter->f->len;
|
||||
} while ((l_iter = l_iter->radial_next) != e->l);
|
||||
}
|
||||
}
|
||||
|
@ -1301,16 +1301,16 @@ static UUIDFashMatch bm_vert_fasthash_single(BMVert *v)
|
|||
}
|
||||
|
||||
static UUIDFashMatch *bm_vert_fasthash_create(
|
||||
BMesh *bm, const unsigned int depth)
|
||||
BMesh *bm, const uint depth)
|
||||
{
|
||||
UUIDFashMatch *id_prev;
|
||||
UUIDFashMatch *id_curr;
|
||||
unsigned int pass, i;
|
||||
uint pass, i;
|
||||
BMVert *v;
|
||||
BMIter iter;
|
||||
|
||||
id_prev = MEM_mallocN(sizeof(*id_prev) * (unsigned int)bm->totvert, __func__);
|
||||
id_curr = MEM_mallocN(sizeof(*id_curr) * (unsigned int)bm->totvert, __func__);
|
||||
id_prev = MEM_mallocN(sizeof(*id_prev) * (uint)bm->totvert, __func__);
|
||||
id_curr = MEM_mallocN(sizeof(*id_curr) * (uint)bm->totvert, __func__);
|
||||
|
||||
BM_ITER_MESH_INDEX (v, &iter, bm, BM_VERTS_OF_MESH, i) {
|
||||
id_prev[i] = bm_vert_fasthash_single(v);
|
||||
|
@ -1319,7 +1319,7 @@ static UUIDFashMatch *bm_vert_fasthash_create(
|
|||
for (pass = 0; pass < depth; pass++) {
|
||||
BMEdge *e;
|
||||
|
||||
memcpy(id_curr, id_prev, sizeof(*id_prev) * (unsigned int)bm->totvert);
|
||||
memcpy(id_curr, id_prev, sizeof(*id_prev) * (uint)bm->totvert);
|
||||
|
||||
BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
|
||||
if (BM_edge_is_wire(e) == false) {
|
||||
|
@ -1379,16 +1379,16 @@ static void bm_vert_fasthash_destroy(
|
|||
*/
|
||||
int BM_mesh_region_match(
|
||||
BMesh *bm,
|
||||
BMFace **faces_region, unsigned int faces_region_len,
|
||||
BMFace **faces_region, uint faces_region_len,
|
||||
ListBase *r_face_regions)
|
||||
{
|
||||
BMEdge *e_src;
|
||||
BMEdge *e_dst;
|
||||
BMIter iter;
|
||||
unsigned int verts_region_len = 0;
|
||||
unsigned int faces_result_len = 0;
|
||||
uint verts_region_len = 0;
|
||||
uint faces_result_len = 0;
|
||||
/* number of steps from e_src to a boundary vert */
|
||||
unsigned int depth;
|
||||
uint depth;
|
||||
|
||||
|
||||
#ifdef USE_WALKER_REUSE
|
||||
|
@ -1457,7 +1457,7 @@ int BM_mesh_region_match(
|
|||
|
||||
BM_ITER_MESH (e_dst, &iter, bm, BM_EDGES_OF_MESH) {
|
||||
BMFace **faces_result;
|
||||
unsigned int faces_result_len_out;
|
||||
uint faces_result_len_out;
|
||||
|
||||
if (BM_elem_flag_test(e_dst, BM_ELEM_TAG) || BM_edge_is_wire(e_dst)) {
|
||||
continue;
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
int BM_mesh_region_match(
|
||||
BMesh *bm,
|
||||
BMFace **faces_region, unsigned int faces_region_len,
|
||||
BMFace **faces_region, uint faces_region_len,
|
||||
ListBase *r_face_regions);
|
||||
|
||||
#endif /* __BMESH_REGION_MATCH_H__ */
|
||||
|
|
|
@ -58,8 +58,8 @@ void BM_mesh_separate_faces(
|
|||
BMFace *f;
|
||||
BMIter iter;
|
||||
|
||||
unsigned int faces_a_len = 0;
|
||||
unsigned int faces_b_len = 0;
|
||||
uint faces_a_len = 0;
|
||||
uint faces_b_len = 0;
|
||||
{
|
||||
int i_a = 0;
|
||||
int i_b = bm->totface;
|
||||
|
@ -77,7 +77,7 @@ void BM_mesh_separate_faces(
|
|||
BM_mesh_elem_hflag_enable_all(bm, BM_VERT, BM_ELEM_TAG, false);
|
||||
|
||||
/* Disable vert tag on faces_b */
|
||||
for (unsigned int i = 0; i < faces_b_len; i++) {
|
||||
for (uint i = 0; i < faces_b_len; i++) {
|
||||
BMLoop *l_iter, *l_first;
|
||||
l_iter = l_first = BM_FACE_FIRST_LOOP(faces_b[i]);
|
||||
do {
|
||||
|
@ -89,7 +89,7 @@ void BM_mesh_separate_faces(
|
|||
BLI_buffer_declare_static(BMLoop **, loop_split, 0, 128);
|
||||
|
||||
/* Check shared verts ('faces_a' tag and disable) */
|
||||
for (unsigned int i = 0; i < faces_a_len; i++) {
|
||||
for (uint i = 0; i < faces_a_len; i++) {
|
||||
BMLoop *l_iter, *l_first;
|
||||
l_iter = l_first = BM_FACE_FIRST_LOOP(faces_a[i]);
|
||||
do {
|
||||
|
|
|
@ -770,14 +770,17 @@ static int create_primitive_from_points(bContext *C, wmOperator *op, const float
|
|||
|
||||
new_spline = BKE_mask_spline_add(mask_layer);
|
||||
new_spline->flag = MASK_SPLINE_CYCLIC | SELECT;
|
||||
new_spline->tot_point = num_points;
|
||||
new_spline->points = MEM_recallocN(new_spline->points,
|
||||
sizeof(MaskSplinePoint) * new_spline->tot_point);
|
||||
sizeof(MaskSplinePoint) * num_points);
|
||||
|
||||
mask_layer->act_spline = new_spline;
|
||||
mask_layer->act_point = NULL;
|
||||
|
||||
const int spline_index = BKE_mask_layer_shape_spline_to_index(mask_layer, new_spline);
|
||||
|
||||
for (i = 0; i < num_points; i++) {
|
||||
new_spline->tot_point = i + 1;
|
||||
|
||||
MaskSplinePoint *new_point = &new_spline->points[i];
|
||||
BKE_mask_parent_init(&new_point->parent);
|
||||
|
||||
|
@ -788,6 +791,12 @@ static int create_primitive_from_points(bContext *C, wmOperator *op, const float
|
|||
new_point->bezt.h1 = handle_type;
|
||||
new_point->bezt.h2 = handle_type;
|
||||
BKE_mask_point_select_set(new_point, true);
|
||||
|
||||
if (mask_layer->splines_shapes.first) {
|
||||
BKE_mask_layer_shape_changed_add(mask_layer,
|
||||
spline_index + i,
|
||||
true, true);
|
||||
}
|
||||
}
|
||||
|
||||
WM_event_add_notifier(C, NC_MASK | NA_EDITED, mask);
|
||||
|
|
Loading…
Reference in New Issue