sculpt-dev: commit prior to merge

Removed a bunch of debug stuff.
This commit is contained in:
Joseph Eagar 2022-04-08 13:21:55 -07:00
parent 8a58f1f3bb
commit 5761ccbf22
10 changed files with 167 additions and 148 deletions

View File

@ -1136,7 +1136,7 @@ void BKE_pbvh_set_vemap(PBVH *pbvh, struct MeshElemMap *vemap);
void BKE_pbvh_ignore_uvs_set(PBVH *pbvh, bool value);
bool BKE_pbvh_cache_is_valid(const struct Object *ob,
const struct Mesh *me,
const PBVH *old,
const PBVH *pbvh,
int pbvh_type);
bool BKE_pbvh_cache(const struct Mesh *me, PBVH *pbvh);
PBVH *BKE_pbvh_get_or_free_cached(struct Object *ob, struct Mesh *me, PBVHType pbvh_type);
@ -1148,9 +1148,10 @@ SculptPMap *BKE_pbvh_get_pmap(PBVH *pbvh);
void BKE_pbvh_cache_remove(PBVH *pbvh);
void BKE_pbvh_set_bmesh(PBVH *pbvh, struct BMesh *bm);
void BKE_pbvh_free_bmesh(PBVH *pbvh, struct BMesh *bm);
void BKE_pbvh_system_init();
void BKE_pbvh_system_exit();
void BKE_pbvh_system_init(void);
void BKE_pbvh_system_exit(void);
SculptPMap *BKE_pbvh_make_pmap(const struct Mesh *me);
void BKE_pbvh_pmap_aquire(SculptPMap *pmap);
bool BKE_pbvh_pmap_release(SculptPMap *pmap);
void BKE_pbvh_clear_cache(PBVH *preserve);

View File

@ -3132,7 +3132,7 @@ typedef struct TraceData {
BMEdge *e;
} TraceData;
ATTR_NO_OPT void col_on_vert_kill(BMesh *bm, BMVert *v, void *userdata)
void col_on_vert_kill(BMesh *bm, BMVert *v, void *userdata)
{
TraceData *data = (TraceData *)userdata;
PBVH *pbvh = data->pbvh;
@ -3149,7 +3149,7 @@ ATTR_NO_OPT void col_on_vert_kill(BMesh *bm, BMVert *v, void *userdata)
}
}
ATTR_NO_OPT void col_on_edge_kill(BMesh *bm, BMEdge *e, void *userdata)
void col_on_edge_kill(BMesh *bm, BMEdge *e, void *userdata)
{
TraceData *data = (TraceData *)userdata;
PBVH *pbvh = data->pbvh;
@ -3161,7 +3161,7 @@ ATTR_NO_OPT void col_on_edge_kill(BMesh *bm, BMEdge *e, void *userdata)
}
}
ATTR_NO_OPT void col_on_face_kill(BMesh *bm, BMFace *f, void *userdata)
void col_on_face_kill(BMesh *bm, BMFace *f, void *userdata)
{
TraceData *data = (TraceData *)userdata;
PBVH *pbvh = data->pbvh;
@ -3176,7 +3176,7 @@ ATTR_NO_OPT void col_on_face_kill(BMesh *bm, BMFace *f, void *userdata)
}
}
ATTR_NO_OPT void col_on_vert_add(BMesh *bm, BMVert *v, void *userdata)
void col_on_vert_add(BMesh *bm, BMVert *v, void *userdata)
{
TraceData *data = (TraceData *)userdata;
PBVH *pbvh = data->pbvh;
@ -3187,7 +3187,7 @@ ATTR_NO_OPT void col_on_vert_add(BMesh *bm, BMVert *v, void *userdata)
BM_log_vert_topo_post(pbvh->bm_log, v);
}
ATTR_NO_OPT void col_on_edge_add(BMesh *bm, BMEdge *e, void *userdata)
void col_on_edge_add(BMesh *bm, BMEdge *e, void *userdata)
{
TraceData *data = (TraceData *)userdata;
PBVH *pbvh = data->pbvh;
@ -3195,7 +3195,7 @@ ATTR_NO_OPT void col_on_edge_add(BMesh *bm, BMEdge *e, void *userdata)
BM_log_edge_topo_post(pbvh->bm_log, e);
}
ATTR_NO_OPT void col_on_face_add(BMesh *bm, BMFace *f, void *userdata)
void col_on_face_add(BMesh *bm, BMFace *f, void *userdata)
{
TraceData *data = (TraceData *)userdata;
PBVH *pbvh = data->pbvh;
@ -3343,12 +3343,12 @@ void vert_ring_do_apply(BMVert *v,
const int COLLAPSE_TAG = BM_ELEM_INTERNAL_TAG;
const int COLLAPSE_FACE_TAG = BM_ELEM_TAG_ALT;
ATTR_NO_OPT static void vert_ring_do(BMVert *v,
void (*callback)(BMElem *elem, void *userdata),
void *userdata,
int tag,
int facetag,
int depth)
static void vert_ring_do(BMVert *v,
void (*callback)(BMElem *elem, void *userdata),
void *userdata,
int tag,
int facetag,
int depth)
{
if (!v->e) {
v->head.hflag &= ~tag;
@ -3361,12 +3361,12 @@ ATTR_NO_OPT static void vert_ring_do(BMVert *v,
vert_ring_do_apply(v, callback, userdata, tag, facetag, depth);
}
ATTR_NO_OPT static void edge_ring_do(BMEdge *e,
void (*callback)(BMElem *elem, void *userdata),
void *userdata,
int tag,
int facetag,
int depth)
static void edge_ring_do(BMEdge *e,
void (*callback)(BMElem *elem, void *userdata),
void *userdata,
int tag,
int facetag,
int depth)
{
vert_ring_do_tag(e->v1, tag, facetag, depth);
@ -3449,7 +3449,7 @@ ATTR_NO_OPT static void edge_ring_do(BMEdge *e,
}
}
ATTR_NO_OPT static void collapse_ring_callback_pre2(BMElem *elem, void *userdata)
static void collapse_ring_callback_pre2(BMElem *elem, void *userdata)
{
TraceData *data = (TraceData *)userdata;
PBVH *pbvh = data->pbvh;
@ -3470,7 +3470,7 @@ ATTR_NO_OPT static void collapse_ring_callback_pre2(BMElem *elem, void *userdata
}
}
ATTR_NO_OPT static void collapse_ring_callback_pre(BMElem *elem, void *userdata)
static void collapse_ring_callback_pre(BMElem *elem, void *userdata)
{
bm_logstack_push();
@ -3537,7 +3537,7 @@ ATTR_NO_OPT static void collapse_ring_callback_pre(BMElem *elem, void *userdata)
bm_logstack_pop();
}
ATTR_NO_OPT static void collapse_ring_callback_post(BMElem *elem, void *userdata)
static void collapse_ring_callback_post(BMElem *elem, void *userdata)
{
bm_logstack_push();
@ -3581,13 +3581,13 @@ ATTR_NO_OPT static void collapse_ring_callback_post(BMElem *elem, void *userdata
bm_logstack_pop();
}
ATTR_NO_OPT static BMVert *pbvh_bmesh_collapse_edge(PBVH *pbvh,
BMEdge *e,
BMVert *v1,
BMVert *v2,
GHash *deleted_verts,
BLI_Buffer *deleted_faces,
EdgeQueueContext *eq_ctx)
static BMVert *pbvh_bmesh_collapse_edge(PBVH *pbvh,
BMEdge *e,
BMVert *v1,
BMVert *v2,
GHash *deleted_verts,
BLI_Buffer *deleted_faces,
EdgeQueueContext *eq_ctx)
{
bm_logstack_push();
@ -3983,7 +3983,7 @@ cleanup_valence_3_4(EdgeQueueContext *ectx,
const bool use_frontface,
const bool use_projected)
{
return false; //XXX not working with local collapse/subdivide mode
return false; // XXX not working with local collapse/subdivide mode
bool modified = false;
bm_logstack_push();
@ -4473,20 +4473,20 @@ float mask_cb_nop(SculptVertRef vertex, void *userdata)
}
/* Collapse short edges, subdivide long edges */
ATTR_NO_OPT bool BKE_pbvh_bmesh_update_topology(PBVH *pbvh,
PBVHTopologyUpdateMode mode,
const float center[3],
const float view_normal[3],
float radius,
const bool use_frontface,
const bool use_projected,
int sym_axis,
bool updatePBVH,
DyntopoMaskCB mask_cb,
void *mask_cb_data,
int custom_max_steps,
bool disable_surface_relax,
bool is_snake_hook)
bool BKE_pbvh_bmesh_update_topology(PBVH *pbvh,
PBVHTopologyUpdateMode mode,
const float center[3],
const float view_normal[3],
float radius,
const bool use_frontface,
const bool use_projected,
int sym_axis,
bool updatePBVH,
DyntopoMaskCB mask_cb,
void *mask_cb_data,
int custom_max_steps,
bool disable_surface_relax,
bool is_snake_hook)
{
/* Disable surface smooth if uv layers are present, to avoid expensive reprojection operation. */
if (!is_snake_hook && CustomData_has_layer(&pbvh->bm->ldata, CD_MLOOPUV)) {
@ -4953,12 +4953,12 @@ static const int splitmap[43][16] = {
{6, -1, 3, -1, 5, -1, 1, -1}, // 42
};
ATTR_NO_OPT static void pbvh_split_edges(EdgeQueueContext *eq_ctx,
PBVH *pbvh,
BMesh *bm,
BMEdge **edges1,
int totedge,
bool ignore_isolated_edges)
static void pbvh_split_edges(EdgeQueueContext *eq_ctx,
PBVH *pbvh,
BMesh *bm,
BMEdge **edges1,
int totedge,
bool ignore_isolated_edges)
{
bm_logstack_push();

View File

@ -1859,6 +1859,18 @@ static void sculpt_update_object(Depsgraph *depsgraph,
for (a = 0; a < me->totvert; a++) {
invert_m3(ss->deform_imats[a]);
float *co = ss->deform_cos[a];
float ff = dot_v3v3(co, co);
if (isnan(ff) || !isfinite(ff)) {
printf("%s: nan1! %.4f %.4f %.4f\n", __func__, co[0], co[1], co[2]);
}
ff = determinant_m3_array(ss->deform_imats[a]);
if (isnan(ff) || !isfinite(ff)) {
printf("%s: nan2!\n", __func__);
}
}
}
}
@ -2403,7 +2415,7 @@ void BKE_sculpt_ensure_orig_mesh_data(Scene *scene, Object *object)
DEG_id_tag_update(&object->id, ID_RECALC_GEOMETRY);
}
ATTR_NO_OPT static PBVH *build_pbvh_for_dynamic_topology(Object *ob, bool update_sculptverts)
static PBVH *build_pbvh_for_dynamic_topology(Object *ob, bool update_sculptverts)
{
Mesh *me = BKE_object_get_original_mesh(ob);
@ -2454,9 +2466,7 @@ ATTR_NO_OPT static PBVH *build_pbvh_for_dynamic_topology(Object *ob, bool update
return pbvh;
}
ATTR_NO_OPT static PBVH *build_pbvh_from_regular_mesh(Object *ob,
Mesh *me_eval_deform,
bool respect_hide)
static PBVH *build_pbvh_from_regular_mesh(Object *ob, Mesh *me_eval_deform, bool respect_hide)
{
SculptSession *ss = ob->sculpt;
Mesh *me = BKE_object_get_original_mesh(ob);

View File

@ -160,8 +160,8 @@ static void update_node_vb(PBVH *pbvh, PBVHNode *node, int updateflag)
BB_reset(&vb);
BB_reset(&orig_vb);
bool do_orig = updateflag | PBVH_UpdateOriginalBB;
bool do_normal = updateflag | PBVH_UpdateBB;
bool do_orig = updateflag & PBVH_UpdateOriginalBB;
bool do_normal = updateflag & PBVH_UpdateBB;
if (node->flag & PBVH_Leaf) {
PBVHVertexIter vd;
@ -792,7 +792,7 @@ PBVH *BKE_pbvh_new(void)
return pbvh;
}
ATTR_NO_OPT void BKE_pbvh_free(PBVH *pbvh)
void BKE_pbvh_free(PBVH *pbvh)
{
BKE_pbvh_cache_remove(pbvh);
@ -958,6 +958,11 @@ static PBVHNode *pbvh_iter_next_occluded(PBVHIter *iter)
return NULL;
}
float ff = dot_v3v3(node->vb.bmin, node->vb.bmax);
if (isnan(ff) || !isfinite(ff)) {
printf("%s: nan!\n", __func__);
}
if (iter->scb && !iter->scb(node, iter->search_data)) {
continue; /* don't traverse, outside of search zone */
}
@ -1173,8 +1178,9 @@ static void pbvh_update_normals_clear_task_cb(void *__restrict userdata,
}
}
ATTR_NO_OPT static void pbvh_update_normals_accum_task_cb(
void *__restrict userdata, const int n, const TaskParallelTLS *__restrict UNUSED(tls))
static void pbvh_update_normals_accum_task_cb(void *__restrict userdata,
const int n,
const TaskParallelTLS *__restrict UNUSED(tls))
{
PBVHUpdateData *data = userdata;
@ -3737,7 +3743,7 @@ const float (*BKE_pbvh_get_vert_normals(const PBVH *pbvh))[3]
void BKE_pbvh_subdiv_ccg_set(PBVH *pbvh, SubdivCCG *subdiv_ccg)
{
pbvh->subdiv_ccg = subdiv_ccg;
pbvh->gridfaces = (void**) subdiv_ccg->grid_faces;
pbvh->gridfaces = (void **)subdiv_ccg->grid_faces;
pbvh->grid_hidden = subdiv_ccg->grid_hidden;
pbvh->grid_flag_mats = subdiv_ccg->grid_flag_mats;
pbvh->grids = subdiv_ccg->grids;
@ -4860,10 +4866,10 @@ static bool customdata_is_same(const CustomData *a, const CustomData *b)
return memcmp(a, b, sizeof(CustomData)) == 0;
}
ATTR_NO_OPT bool BKE_pbvh_cache_is_valid(const Object *ob,
const Mesh *me,
const PBVH *pbvh,
PBVHType pbvh_type)
bool BKE_pbvh_cache_is_valid(const struct Object *ob,
const struct Mesh *me,
const PBVH *pbvh,
int pbvh_type)
{
if (pbvh->invalid) {
printf("pbvh invalid!\n");
@ -4980,7 +4986,7 @@ void BKE_pbvh_clear_cache(PBVH *preserve)
pbvh_clear_cached_pbvhs(NULL);
}
ATTR_NO_OPT PBVH *BKE_pbvh_get_or_free_cached(Object *ob, Mesh *me, PBVHType pbvh_type)
PBVH *BKE_pbvh_get_or_free_cached(Object *ob, Mesh *me, PBVHType pbvh_type)
{
Object *ob_orig = DEG_get_original_object(ob);
@ -5019,7 +5025,7 @@ ATTR_NO_OPT PBVH *BKE_pbvh_get_or_free_cached(Object *ob, Mesh *me, PBVHType pbv
return NULL;
}
ATTR_NO_OPT void BKE_pbvh_set_cached(Object *ob, PBVH *pbvh)
void BKE_pbvh_set_cached(Object *ob, PBVH *pbvh)
{
if (!pbvh) {
return;
@ -5087,7 +5093,7 @@ void BKE_pbvh_set_bmesh(PBVH *pbvh, BMesh *bm)
pbvh->bm = bm;
}
ATTR_NO_OPT void BKE_pbvh_free_bmesh(PBVH *pbvh, BMesh *bm)
void BKE_pbvh_free_bmesh(PBVH *pbvh, BMesh *bm)
{
if (pbvh) {
pbvh->bm = NULL;
@ -5159,15 +5165,15 @@ SculptPMap *BKE_pbvh_make_pmap(const struct Mesh *me)
SculptPMap *pmap = MEM_callocN(sizeof(*pmap), "SculptPMap");
BKE_mesh_vert_poly_map_create(&pmap->pmap,
&pmap->pmap_mem,
me->mvert,
me->medge,
me->mpoly,
me->mloop,
me->totvert,
me->totpoly,
me->totloop,
false);
&pmap->pmap_mem,
me->mvert,
me->medge,
me->mpoly,
me->mloop,
me->totvert,
me->totpoly,
me->totloop,
false);
pmap->refcount = 1;
@ -5197,4 +5203,3 @@ bool BKE_pbvh_pmap_release(SculptPMap *pmap)
return false;
}

View File

@ -2559,22 +2559,22 @@ void BKE_pbvh_set_bm_log(PBVH *pbvh, struct BMLog *log)
pbvh->bm_log = log;
}
ATTR_NO_OPT bool BKE_pbvh_bmesh_update_topology_nodes(PBVH *pbvh,
bool (*searchcb)(PBVHNode *node, void *data),
void (*undopush)(PBVHNode *node, void *data),
void *searchdata,
PBVHTopologyUpdateMode mode,
const float center[3],
const float view_normal[3],
float radius,
const bool use_frontface,
const bool use_projected,
int sym_axis,
bool updatePBVH,
DyntopoMaskCB mask_cb,
void *mask_cb_data,
bool disable_surface_relax,
bool is_snake_hook)
bool BKE_pbvh_bmesh_update_topology_nodes(PBVH *pbvh,
bool (*searchcb)(PBVHNode *node, void *data),
void (*undopush)(PBVHNode *node, void *data),
void *searchdata,
PBVHTopologyUpdateMode mode,
const float center[3],
const float view_normal[3],
float radius,
const bool use_frontface,
const bool use_projected,
int sym_axis,
bool updatePBVH,
DyntopoMaskCB mask_cb,
void *mask_cb_data,
bool disable_surface_relax,
bool is_snake_hook)
{
bool modified = false;
PBVHNode **nodes = NULL;

View File

@ -18,7 +18,7 @@ typedef struct MinMaxHeap {
int totnode, reserved;
} MinMaxHeap;
ATTR_NO_OPT static void heap_reserve(MinMaxHeap *heap, unsigned int n)
static void heap_reserve(MinMaxHeap *heap, unsigned int n)
{
if (heap->reserved >= n) {
return;
@ -42,7 +42,7 @@ ATTR_NO_OPT static void heap_reserve(MinMaxHeap *heap, unsigned int n)
*
* \note Use when the size of the heap is known in advance.
*/
ATTR_NO_OPT MinMaxHeap *BLI_mm_heap_new_ex(unsigned int tot_reserve)
MinMaxHeap *BLI_mm_heap_new_ex(unsigned int tot_reserve)
{
MinMaxHeap *heap = MEM_callocN(sizeof(*heap), __func__);
if (tot_reserve) {
@ -52,7 +52,7 @@ ATTR_NO_OPT MinMaxHeap *BLI_mm_heap_new_ex(unsigned int tot_reserve)
return heap;
}
ATTR_NO_OPT MinMaxHeap *BLI_mm_heap_new()
MinMaxHeap *BLI_mm_heap_new()
{
return BLI_mm_heap_new_ex(256);
}
@ -69,13 +69,13 @@ void BLI_mm_heap_clear(MinMaxHeap *heap, MinMaxHeapFreeFP ptrfreefp)
heap->totnode = 0;
}
ATTR_NO_OPT void BLI_mm_heap_free(MinMaxHeap *heap, MinMaxHeapFreeFP ptrfreefp)
void BLI_mm_heap_free(MinMaxHeap *heap, MinMaxHeapFreeFP ptrfreefp)
{
BLI_mm_heap_clear(heap, ptrfreefp);
MEM_freeN(heap);
}
ATTR_NO_OPT static MinMaxHeapNode *heap_make_node(MinMaxHeap *heap)
static MinMaxHeapNode *heap_make_node(MinMaxHeap *heap)
{
heap_reserve(heap, heap->totnode + 1);
@ -87,8 +87,7 @@ ATTR_NO_OPT static MinMaxHeapNode *heap_make_node(MinMaxHeap *heap)
return node;
}
ATTR_NO_OPT static MinMaxHeapNode *heap_descent_min2(MinMaxHeap *heap,
MinMaxHeapNode *n)
static MinMaxHeapNode *heap_descent_min2(MinMaxHeap *heap, MinMaxHeapNode *n)
{
if (n->child1 != -1 && n->child2 != -1) {
MinMaxHeapNode *n1 = heap->nodes + n->child1;
@ -107,7 +106,7 @@ ATTR_NO_OPT static MinMaxHeapNode *heap_descent_min2(MinMaxHeap *heap,
}
/* find node grandchild */
ATTR_NO_OPT static MinMaxHeapNode *heap_descent_min(MinMaxHeap *heap, MinMaxHeapNode *node)
static MinMaxHeapNode *heap_descent_min(MinMaxHeap *heap, MinMaxHeapNode *node)
{
if (node->child1 != -1 && node->child2 != -1) {
MinMaxHeapNode *n1 = heap->nodes + node->child1;
@ -128,8 +127,7 @@ ATTR_NO_OPT static MinMaxHeapNode *heap_descent_min(MinMaxHeap *heap, MinMaxHeap
return NULL;
}
ATTR_NO_OPT static MinMaxHeapNode *heap_descent_max2(MinMaxHeap *heap, MinMaxHeapNode *n)
static MinMaxHeapNode *heap_descent_max2(MinMaxHeap *heap, MinMaxHeapNode *n)
{
if (n->child1 != -1 && n->child2 != -1) {
MinMaxHeapNode *n1 = heap->nodes + n->child1;
@ -148,7 +146,7 @@ ATTR_NO_OPT static MinMaxHeapNode *heap_descent_max2(MinMaxHeap *heap, MinMaxHea
}
/* find node grandchild */
ATTR_NO_OPT static MinMaxHeapNode *heap_descent_max(MinMaxHeap *heap, MinMaxHeapNode *node)
static MinMaxHeapNode *heap_descent_max(MinMaxHeap *heap, MinMaxHeapNode *node)
{
if (node->child1 != -1 && node->child2 != -1) {
MinMaxHeapNode *n1 = heap->nodes + node->child1;
@ -169,7 +167,7 @@ ATTR_NO_OPT static MinMaxHeapNode *heap_descent_max(MinMaxHeap *heap, MinMaxHeap
return NULL;
}
ATTR_NO_OPT static MinMaxHeapNode *heap_push_down_min(MinMaxHeap *heap, MinMaxHeapNode *node)
static MinMaxHeapNode *heap_push_down_min(MinMaxHeap *heap, MinMaxHeapNode *node)
{
MinMaxHeapNode *ret = NULL;
@ -209,7 +207,7 @@ ATTR_NO_OPT static MinMaxHeapNode *heap_push_down_min(MinMaxHeap *heap, MinMaxHe
return ret ? ret : node;
}
ATTR_NO_OPT static MinMaxHeapNode *heap_push_down_max(MinMaxHeap *heap, MinMaxHeapNode *node)
static MinMaxHeapNode *heap_push_down_max(MinMaxHeap *heap, MinMaxHeapNode *node)
{
MinMaxHeapNode *ret = NULL;
@ -245,7 +243,7 @@ ATTR_NO_OPT static MinMaxHeapNode *heap_push_down_max(MinMaxHeap *heap, MinMaxHe
return ret ? ret : node;
}
ATTR_NO_OPT static int heap_get_level(const MinMaxHeap *heap, const MinMaxHeapNode *node)
static int heap_get_level(const MinMaxHeap *heap, const MinMaxHeapNode *node)
{
int i = 0;
@ -257,7 +255,7 @@ ATTR_NO_OPT static int heap_get_level(const MinMaxHeap *heap, const MinMaxHeapNo
return i;
}
ATTR_NO_OPT static MinMaxHeapNode *heap_push_down(MinMaxHeap *heap, MinMaxHeapNode *node)
static MinMaxHeapNode *heap_push_down(MinMaxHeap *heap, MinMaxHeapNode *node)
{
int i = heap_get_level(heap, node);
@ -269,7 +267,7 @@ ATTR_NO_OPT static MinMaxHeapNode *heap_push_down(MinMaxHeap *heap, MinMaxHeapNo
}
}
ATTR_NO_OPT static MinMaxHeapNode *heap_push_up_min(MinMaxHeap *heap, MinMaxHeapNode *node)
static MinMaxHeapNode *heap_push_up_min(MinMaxHeap *heap, MinMaxHeapNode *node)
{
while (node->parent != -1) {
MinMaxHeapNode *parent = heap->nodes + node->parent;
@ -290,7 +288,7 @@ ATTR_NO_OPT static MinMaxHeapNode *heap_push_up_min(MinMaxHeap *heap, MinMaxHeap
return node;
}
ATTR_NO_OPT static MinMaxHeapNode *heap_push_up_max(MinMaxHeap *heap, MinMaxHeapNode *node)
static MinMaxHeapNode *heap_push_up_max(MinMaxHeap *heap, MinMaxHeapNode *node)
{
while (node->parent != -1) {
MinMaxHeapNode *parent = heap->nodes + node->parent;
@ -311,7 +309,7 @@ ATTR_NO_OPT static MinMaxHeapNode *heap_push_up_max(MinMaxHeap *heap, MinMaxHeap
return node;
}
ATTR_NO_OPT static MinMaxHeapNode *heap_push_up(MinMaxHeap *heap, MinMaxHeapNode *node)
static MinMaxHeapNode *heap_push_up(MinMaxHeap *heap, MinMaxHeapNode *node)
{
int i = heap_get_level(heap, node);
@ -349,7 +347,7 @@ ATTR_NO_OPT static MinMaxHeapNode *heap_push_up(MinMaxHeap *heap, MinMaxHeapNode
* Insert heap node with a value (often a 'cost') and pointer into the heap,
* duplicate values are allowed.
*/
ATTR_NO_OPT MinMaxHeapNode *BLI_mm_heap_insert(MinMaxHeap *heap, float value, void *ptr)
MinMaxHeapNode *BLI_mm_heap_insert(MinMaxHeap *heap, float value, void *ptr)
{
MinMaxHeapNode *node = heap_make_node(heap);
@ -378,10 +376,10 @@ ATTR_NO_OPT MinMaxHeapNode *BLI_mm_heap_insert(MinMaxHeap *heap, float value, vo
/**
* Convenience function since this is a common pattern.
*/
ATTR_NO_OPT void BLI_mm_heap_insert_or_update(MinMaxHeap *heap,
MinMaxHeapNode **node_p,
float value,
void *ptr)
void BLI_mm_heap_insert_or_update(MinMaxHeap *heap,
MinMaxHeapNode **node_p,
float value,
void *ptr)
{
MinMaxHeapNode *node = *node_p;
@ -396,27 +394,27 @@ ATTR_NO_OPT void BLI_mm_heap_insert_or_update(MinMaxHeap *heap,
*node_p = node;
}
ATTR_NO_OPT bool BLI_mm_heap_is_empty(const MinMaxHeap *heap)
bool BLI_mm_heap_is_empty(const MinMaxHeap *heap)
{
return heap->totnode == 0;
}
ATTR_NO_OPT unsigned int BLI_mm_heap_len(const MinMaxHeap *heap)
unsigned int BLI_mm_heap_len(const MinMaxHeap *heap)
{
return heap->totnode;
}
ATTR_NO_OPT MinMaxHeapNode *BLI_mm_heap_min(const MinMaxHeap *heap)
MinMaxHeapNode *BLI_mm_heap_min(const MinMaxHeap *heap)
{
return heap->nodes;
}
ATTR_NO_OPT float BLI_mm_heap_min_value(const MinMaxHeap *heap)
float BLI_mm_heap_min_value(const MinMaxHeap *heap)
{
return heap->nodes[0].value;
}
ATTR_NO_OPT MinMaxHeapNode *BLI_mm_heap_max(const MinMaxHeap *heap)
MinMaxHeapNode *BLI_mm_heap_max(const MinMaxHeap *heap)
{
if (heap->totnode == 1) {
return heap->nodes;
@ -430,12 +428,12 @@ ATTR_NO_OPT MinMaxHeapNode *BLI_mm_heap_max(const MinMaxHeap *heap)
}
}
ATTR_NO_OPT float BLI_mm_heap_max_value(const MinMaxHeap *heap)
float BLI_mm_heap_max_value(const MinMaxHeap *heap)
{
return BLI_mm_heap_max(heap)->value;
}
ATTR_NO_OPT static MinMaxHeapNode *heap_pop_last(MinMaxHeap *heap)
static MinMaxHeapNode *heap_pop_last(MinMaxHeap *heap)
{
MinMaxHeapNode *last = heap->nodes + heap->totnode - 1;
@ -454,7 +452,7 @@ ATTR_NO_OPT static MinMaxHeapNode *heap_pop_last(MinMaxHeap *heap)
return last;
}
ATTR_NO_OPT void *BLI_mm_heap_pop_min(MinMaxHeap *heap)
void *BLI_mm_heap_pop_min(MinMaxHeap *heap)
{
void *ret = heap->nodes[0].ptr;
@ -485,7 +483,7 @@ ATTR_NO_OPT void *BLI_mm_heap_pop_min(MinMaxHeap *heap)
return ret;
}
ATTR_NO_OPT void *BLI_mm_heap_pop_max(MinMaxHeap *heap)
void *BLI_mm_heap_pop_max(MinMaxHeap *heap)
{
MinMaxHeapNode *node = BLI_mm_heap_max(heap);
@ -535,9 +533,7 @@ ATTR_NO_OPT void *BLI_mm_heap_pop_max(MinMaxHeap *heap)
return ret;
}
ATTR_NO_OPT MinMaxHeapNode *BLI_mm_heap_node_value_update(MinMaxHeap *heap,
MinMaxHeapNode *node,
float value)
MinMaxHeapNode *BLI_mm_heap_node_value_update(MinMaxHeap *heap, MinMaxHeapNode *node, float value)
{
node->value = value;
@ -547,10 +543,10 @@ ATTR_NO_OPT MinMaxHeapNode *BLI_mm_heap_node_value_update(MinMaxHeap *heap,
return node;
}
ATTR_NO_OPT MinMaxHeapNode *BLI_mm_heap_node_value_update_ptr(MinMaxHeap *heap,
MinMaxHeapNode *node,
float value,
void *ptr)
MinMaxHeapNode *BLI_mm_heap_node_value_update_ptr(MinMaxHeap *heap,
MinMaxHeapNode *node,
float value,
void *ptr)
{
node->value = value;
node->ptr = ptr;
@ -564,26 +560,26 @@ ATTR_NO_OPT MinMaxHeapNode *BLI_mm_heap_node_value_update_ptr(MinMaxHeap *heap,
/**
* Return the value or pointer of a heap node.
*/
ATTR_NO_OPT float BLI_mm_heap_node_value(const MinMaxHeapNode *node)
float BLI_mm_heap_node_value(const MinMaxHeapNode *node)
{
return node->value;
}
ATTR_NO_OPT void *BLI_mm_heap_node_ptr(const MinMaxHeapNode *node)
void *BLI_mm_heap_node_ptr(const MinMaxHeapNode *node)
{
return node->ptr;
}
/**
* Only for checking internal errors (gtest).
*/
ATTR_NO_OPT bool BLI_mm_heap_is_valid(const MinMaxHeap *heap)
bool BLI_mm_heap_is_valid(const MinMaxHeap *heap)
{
for (int i = 0; i < heap->totnode; i++) {
MinMaxHeapNode *node = heap->nodes + i;
int level = heap_get_level(heap, node);
if (i > 0 && node->parent < 0 || node->parent >= heap->totnode) {
if (i > 0 && (node->parent < 0 || node->parent >= heap->totnode)) {
return false;
}
@ -616,7 +612,7 @@ ATTR_NO_OPT bool BLI_mm_heap_is_valid(const MinMaxHeap *heap)
#include "BLI_rand.h"
ATTR_NO_OPT void test_mm_heap()
void test_mm_heap()
{
MinMaxHeap *heap = BLI_mm_heap_new();
RNG *rng = BLI_rng_new(0);

View File

@ -2529,7 +2529,7 @@ void OVERLAY_armature_cache_finish(OVERLAY_Data *vedata)
}
}
ATTR_NO_OPT void OVERLAY_armature_draw(OVERLAY_Data *vedata)
void OVERLAY_armature_draw(OVERLAY_Data *vedata)
{
OVERLAY_PassList *psl = vedata->psl;
@ -2537,7 +2537,7 @@ ATTR_NO_OPT void OVERLAY_armature_draw(OVERLAY_Data *vedata)
DRW_draw_pass(psl->armature_ps[0]);
}
ATTR_NO_OPT void OVERLAY_armature_in_front_draw(OVERLAY_Data *vedata)
void OVERLAY_armature_in_front_draw(OVERLAY_Data *vedata)
{
OVERLAY_PassList *psl = vedata->psl;

View File

@ -513,7 +513,7 @@ static void OVERLAY_cache_finish(void *vedata)
OVERLAY_image_cache_finish(vedata);
}
ATTR_NO_OPT static void OVERLAY_draw_scene(void *vedata)
static void OVERLAY_draw_scene(void *vedata)
{
OVERLAY_Data *data = vedata;
OVERLAY_PrivateData *pd = data->stl->pd;

View File

@ -42,6 +42,10 @@ static bool mesh_extract_uv_format_init(GPUVertFormat *format,
char attr_name[32], attr_safe_name[GPU_MAX_SAFE_ATTR_NAME];
const char *layer_name = CustomData_get_layer_name(cd_ldata, CD_MLOOPUV, i);
if (!layer_name) {
continue;
}
GPU_vertformat_safe_attr_name(layer_name, attr_safe_name, GPU_MAX_SAFE_ATTR_NAME);
/* UV layer name. */
BLI_snprintf(attr_name, sizeof(attr_name), "u%s", attr_safe_name);

View File

@ -2896,7 +2896,7 @@ static bool sculpt_tool_needs_original(const char sculpt_tool)
bool sculpt_tool_is_proxy_used(const char sculpt_tool)
{
return ELEM(sculpt_tool,
return (ELEM(sculpt_tool,
SCULPT_TOOL_SMOOTH,
SCULPT_TOOL_LAYER,
SCULPT_TOOL_FAIRING,
@ -2910,7 +2910,7 @@ bool sculpt_tool_is_proxy_used(const char sculpt_tool)
SCULPT_TOOL_PAINT,
SCULPT_TOOL_SMEAR,
SCULPT_TOOL_SYMMETRIZE,
SCULPT_TOOL_DRAW_FACE_SETS);
SCULPT_TOOL_DRAW_FACE_SETS));
}
static bool sculpt_brush_use_topology_rake(const SculptSession *ss, const Brush *brush)
@ -3550,7 +3550,7 @@ typedef struct AreaNormalCenterTLSData {
int count_co[2];
} AreaNormalCenterTLSData;
ATTR_NO_OPT static void calc_area_normal_and_center_task_cb(void *__restrict userdata,
static void calc_area_normal_and_center_task_cb(void *__restrict userdata,
const int n,
const TaskParallelTLS *__restrict tls)
{
@ -3816,7 +3816,7 @@ void SCULPT_calc_area_normal(
SCULPT_pbvh_calc_area_normal(brush, ob, nodes, totnode, true, r_area_no);
}
ATTR_NO_OPT bool SCULPT_pbvh_calc_area_normal(const Brush *brush,
bool SCULPT_pbvh_calc_area_normal(const Brush *brush,
Object *ob,
PBVHNode **nodes,
int totnode,
@ -7474,7 +7474,7 @@ float SCULPT_raycast_init(ViewContext *vc,
* also updates the active vertex and cursor related data of the SculptSession using the mouse
* position
*/
ATTR_NO_OPT bool SCULPT_cursor_geometry_info_update(bContext *C,
bool SCULPT_cursor_geometry_info_update(bContext *C,
SculptCursorGeometryInfo *out,
const float mouse[2],
bool use_sampled_normal,
@ -8577,7 +8577,10 @@ void ED_object_sculptmode_enter_ex(Main *bmain,
reports, RPT_WARNING, "Object has non-uniform scale, sculpting may be unpredictable");
}
else if (is_negative_m4(ob->obmat)) {
BKE_report(reports, RPT_ERROR, "Object has negative scale. \nSculpting may be unpredictable.\nApply scale in object mode with Ctrl A->Scale.");
BKE_report(reports,
RPT_ERROR,
"Object has negative scale. \nSculpting may be unpredictable.\nApply scale in "
"object mode with Ctrl A->Scale.");
}
Paint *paint = BKE_paint_get_active_from_paintmode(scene, PAINT_MODE_SCULPT);