sculpt-dev: remove optimization flags

This commit is contained in:
Joseph Eagar 2023-02-02 12:14:55 -08:00
parent a391a01509
commit 9fc73526a0
16 changed files with 180 additions and 173 deletions

View File

@ -4265,7 +4265,7 @@ void CustomData_bmesh_free_block_data_exclude_by_type(CustomData *data,
}
#ifndef USE_BMESH_PAGE_CUSTOMDATA
ATTR_NO_OPT static void CustomData_bmesh_set_default_n(CustomData *data, void **block, const int n)
static void CustomData_bmesh_set_default_n(CustomData *data, void **block, const int n)
{
if (ELEM(data->layers[n].type, CD_TOOLFLAGS, CD_MESH_ID)) {
/* do not do toolflags or mesh ids */
@ -4414,11 +4414,11 @@ void CustomData_bmesh_swap_data(CustomData *source,
}
}
ATTR_NO_OPT void CustomData_bmesh_copy_data_exclude_by_type(const CustomData *source,
CustomData *dest,
void *src_block,
void **dest_block,
const eCustomDataMask mask_exclude)
void CustomData_bmesh_copy_data_exclude_by_type(const CustomData *source,
CustomData *dest,
void *src_block,
void **dest_block,
const eCustomDataMask mask_exclude)
{
/* Note that having a version of this function without a 'mask_exclude'
* would cause too much duplicate code, so add a check instead. */
@ -4819,11 +4819,11 @@ void CustomData_bmesh_interp(CustomData *data,
}
}
ATTR_NO_OPT void CustomData_to_bmesh_block(const CustomData *source,
CustomData *dest,
int src_index,
void **dest_block,
bool use_default_init)
void CustomData_to_bmesh_block(const CustomData *source,
CustomData *dest,
int src_index,
void **dest_block,
bool use_default_init)
{
if (*dest_block == nullptr) {
CustomData_bmesh_alloc_block(dest, dest_block);

View File

@ -1393,7 +1393,7 @@ bool check_face_is_tri(PBVH *pbvh, BMFace *f)
return false;
}
ATTR_NO_OPT bool destroy_nonmanifold_fins(PBVH *pbvh, BMEdge *e_root)
bool destroy_nonmanifold_fins(PBVH *pbvh, BMEdge *e_root)
{
#if !(DYNTOPO_DISABLE_FLAG & DYNTOPO_DISABLE_FIN_REMOVAL)
bm_logstack_push();
@ -3163,12 +3163,12 @@ static const int splitmap[43][16] = {
{6, -1, 3, -1, 5, -1, 1}, // 42 0 1 0 1 0 1
};
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();
bm_log_message(" == split edges == ");

View File

@ -138,7 +138,7 @@ inline bool bm_edge_collapse_is_degenerate_topology(BMEdge *e_first)
/* Faces *outside* the ring region are tagged with facetag, used to detect
* border edges.
*/
ATTR_NO_OPT static void vert_ring_do_tag(BMVert *v, int tag, int facetag, int depth)
static void vert_ring_do_tag(BMVert *v, int tag, int facetag, int depth)
{
BMEdge *e = v->e;
@ -178,7 +178,7 @@ ATTR_NO_OPT static void vert_ring_do_tag(BMVert *v, int tag, int facetag, int de
} while ((e = BM_DISK_EDGE_NEXT(e, v)) != v->e);
}
ATTR_NO_OPT static void vert_ring_untag_inner_faces(BMVert *v, int tag, int facetag, int depth)
static void vert_ring_untag_inner_faces(BMVert *v, int tag, int facetag, int depth)
{
if (!v->e) {
return;
@ -205,12 +205,12 @@ ATTR_NO_OPT static void vert_ring_untag_inner_faces(BMVert *v, int tag, int face
} while ((e = BM_DISK_EDGE_NEXT(e, v)) != v->e);
}
ATTR_NO_OPT void vert_ring_do_apply(BMVert *v,
std::function<void(BMElem *elem, void *userdata)> callback,
void *userdata,
int tag,
int facetag,
int depth)
void vert_ring_do_apply(BMVert *v,
std::function<void(BMElem *elem, void *userdata)> callback,
void *userdata,
int tag,
int facetag,
int depth)
{
BMEdge *e = v->e;
@ -265,7 +265,7 @@ ATTR_NO_OPT 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 collapse_ring_callback_pre(BMElem *elem, void *userdata)
static void collapse_ring_callback_pre(BMElem *elem, void *userdata)
{
TraceData *data = static_cast<TraceData *>(userdata);
@ -296,7 +296,7 @@ ATTR_NO_OPT static void collapse_ring_callback_pre(BMElem *elem, void *userdata)
}
}
ATTR_NO_OPT static void check_new_elem_id(BMElem *elem, TraceData *data)
static void check_new_elem_id(BMElem *elem, TraceData *data)
{
int id = BM_ELEM_CD_GET_INT(elem, data->pbvh->bm_idmap->cd_id_off[elem->head.htype]);
if (id >= 0) {
@ -319,7 +319,7 @@ ATTR_NO_OPT static void check_new_elem_id(BMElem *elem, TraceData *data)
}
}
ATTR_NO_OPT static void collapse_ring_callback_post(BMElem *elem, void *userdata)
static void collapse_ring_callback_post(BMElem *elem, void *userdata)
{
TraceData *data = static_cast<TraceData *>(userdata);
@ -370,13 +370,13 @@ static void edge_ring_do_old(BMEdge *e,
vert_ring_do_apply(e->v2, callback, userdata, tag, facetag, depth);
}
ATTR_NO_OPT static void vert_ring_do(BMVert *v,
BMVert *v_extra,
void (*callback)(BMElem *elem, void *userdata),
void *userdata,
int tag,
int facetag,
int depth)
static void vert_ring_do(BMVert *v,
BMVert *v_extra,
void (*callback)(BMElem *elem, void *userdata),
void *userdata,
int tag,
int facetag,
int depth)
{
blender::Set<BMFace *, 128> faces;
@ -466,7 +466,7 @@ ATTR_NO_OPT static void vert_ring_do(BMVert *v,
}
}
ATTR_NO_OPT bool pbvh_bmesh_collapse_edge_uvs(
bool pbvh_bmesh_collapse_edge_uvs(
PBVH *pbvh, BMEdge *e, BMVert *v_conn, BMVert *v_del, EdgeQueueContext *eq_ctx)
{
bm_logstack_push();
@ -626,13 +626,13 @@ ATTR_NO_OPT bool pbvh_bmesh_collapse_edge_uvs(
* This function is rather complicated. It has to
* snap UVs, log geometry and free ids.
*/
ATTR_NO_OPT BMVert *pbvh_bmesh_collapse_edge(PBVH *pbvh,
BMEdge *e,
BMVert *v1,
BMVert *v2,
GHash *deleted_verts,
BLI_Buffer *deleted_faces,
EdgeQueueContext *eq_ctx)
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();

View File

@ -237,13 +237,13 @@ bool destroy_nonmanifold_fins(PBVH *pbvh, BMEdge *e_root);
bool check_face_is_tri(PBVH *pbvh, BMFace *f);
bool check_vert_fan_are_tris(PBVH *pbvh, BMVert *v);
ATTR_NO_OPT BMVert *pbvh_bmesh_collapse_edge(PBVH *pbvh,
BMEdge *e,
BMVert *v1,
BMVert *v2,
struct GHash *deleted_verts,
struct BLI_Buffer *deleted_faces,
struct EdgeQueueContext *eq_ctx);
BMVert *pbvh_bmesh_collapse_edge(PBVH *pbvh,
BMEdge *e,
BMVert *v1,
BMVert *v2,
struct GHash *deleted_verts,
struct BLI_Buffer *deleted_faces,
struct EdgeQueueContext *eq_ctx);
extern "C" void bm_log_message(const char *fmt, ...);
void pbvh_bmesh_vert_remove(PBVH *pbvh, BMVert *v);

View File

@ -1400,7 +1400,7 @@ bool paint_calculate_rake_rotation(UnifiedPaintSettings *ups,
return ok;
}
ATTR_NO_OPT static bool sculpt_boundary_flags_ensure(Object *ob, PBVH *pbvh, int totvert)
static bool sculpt_boundary_flags_ensure(Object *ob, PBVH *pbvh, int totvert)
{
SculptSession *ss = ob->sculpt;
bool ret = false;
@ -1472,7 +1472,7 @@ void BKE_sculptsession_free_vwpaint_data(SculptSession *ss)
/**
* Write out the sculpt dynamic-topology #BMesh to the #Mesh.
*/
ATTR_NO_OPT static void sculptsession_bm_to_me_update_data_only(Object *ob, bool reorder)
static void sculptsession_bm_to_me_update_data_only(Object *ob, bool reorder)
{
SculptSession *ss = ob->sculpt;
@ -3288,14 +3288,14 @@ static int sculpt_attr_elem_count_get(Object *ob, eAttrDomain domain)
}
}
ATTR_NO_OPT static bool sculpt_attribute_create(SculptSession *ss,
Object *ob,
eAttrDomain domain,
eCustomDataType proptype,
const char *name,
SculptAttribute *out,
const SculptAttributeParams *params,
PBVHType pbvhtype)
static bool sculpt_attribute_create(SculptSession *ss,
Object *ob,
eAttrDomain domain,
eCustomDataType proptype,
const char *name,
SculptAttribute *out,
const SculptAttributeParams *params,
PBVHType pbvhtype)
{
Mesh *me = BKE_object_get_original_mesh(ob);
@ -3426,7 +3426,7 @@ ATTR_NO_OPT static bool sculpt_attribute_create(SculptSession *ss,
return true;
}
ATTR_NO_OPT static bool sculpt_attr_update(Object *ob, SculptAttribute *attr)
static bool sculpt_attr_update(Object *ob, SculptAttribute *attr)
{
SculptSession *ss = ob->sculpt;
int elem_num = sculpt_attr_elem_count_get(ob, attr->domain);
@ -3581,12 +3581,12 @@ SculptAttribute *BKE_sculpt_attribute_get(struct Object *ob,
return nullptr;
}
ATTR_NO_OPT static SculptAttribute *sculpt_attribute_ensure_ex(Object *ob,
eAttrDomain domain,
eCustomDataType proptype,
const char *name,
const SculptAttributeParams *params,
PBVHType pbvhtype)
static SculptAttribute *sculpt_attribute_ensure_ex(Object *ob,
eAttrDomain domain,
eCustomDataType proptype,
const char *name,
const SculptAttributeParams *params,
PBVHType pbvhtype)
{
SculptSession *ss = ob->sculpt;
SculptAttribute *attr = BKE_sculpt_attribute_get(ob, domain, proptype, name);

View File

@ -1851,7 +1851,7 @@ void BKE_pbvh_set_flat_vcol_shading(PBVH *pbvh, bool value)
pbvh->flat_vcol_shading = value;
}
ATTR_NO_OPT void pbvh_free_draw_buffers(PBVH *UNUSED(pbvh), PBVHNode *node)
void pbvh_free_draw_buffers(PBVH *UNUSED(pbvh), PBVHNode *node)
{
if (node->draw_batches) {
DRW_pbvh_node_free(node->draw_batches);
@ -4374,7 +4374,7 @@ void BKE_pbvh_update_all_tri_areas(PBVH *pbvh)
}
}
ATTR_NO_OPT void BKE_pbvh_check_tri_areas(PBVH *pbvh, PBVHNode *node)
void BKE_pbvh_check_tri_areas(PBVH *pbvh, PBVHNode *node)
{
if (!(node->flag & PBVH_UpdateTriAreas)) {
return;
@ -4568,10 +4568,7 @@ void BKE_pbvh_set_vemap(PBVH *pbvh, MeshElemMap *vemap)
pbvh->vemap = vemap;
}
ATTR_NO_OPT void BKE_pbvh_get_vert_face_areas(PBVH *pbvh,
PBVHVertRef vertex,
float *r_areas,
int valence)
void BKE_pbvh_get_vert_face_areas(PBVH *pbvh, PBVHVertRef vertex, float *r_areas, int valence)
{
const int cur_i = pbvh->face_area_i;

View File

@ -3629,7 +3629,7 @@ static void pbvh_bmesh_balance_tree(PBVH *pbvh)
MEM_SAFE_FREE(depthmap);
}
ATTR_NO_OPT static void pbvh_bmesh_join_nodes(PBVH *bvh)
static void pbvh_bmesh_join_nodes(PBVH *bvh)
{
if (bvh->totnode < 2) {
return;

View File

@ -188,7 +188,7 @@ BLI_INLINE SmallHashEntry *smallhash_lookup(SmallHash *sh, const uintptr_t key)
return NULL;
}
ATTR_NO_OPT BLI_INLINE SmallHashEntry *smallhash_lookup_first_free(SmallHash *sh, const uintptr_t key)
BLI_INLINE SmallHashEntry *smallhash_lookup_first_free(SmallHash *sh, const uintptr_t key)
{
check_stack_move(sh);

View File

@ -30,8 +30,8 @@
#include "BKE_mesh.h"
#include "bmesh.h"
#include "intern/bmesh_private.h"
#include "bmesh_log_intern.h"
#include "intern/bmesh_private.h"
#include "range_tree.h"
#include <stdarg.h>
@ -2094,7 +2094,7 @@ static char *obj_append_line(const char *line, char *str, char *fixed, int *size
return str;
}
ATTR_NO_OPT static char *bm_save_local_obj_text(
static char *bm_save_local_obj_text(
BMesh *bm, int depth, char buf[LOCAL_OBJ_SIZE], const char *fmt, ...)
{
va_list vl;
@ -2442,7 +2442,7 @@ char *_last_local_obj = NULL;
# define JVKE_CHECK_ELEMENT(elem)
#endif
ATTR_NO_OPT static bool cleanup_vert(BMesh *bm, BMVert *v, const BMTracer *tracer)
static bool cleanup_vert(BMesh *bm, BMVert *v, const BMTracer *tracer)
{
BMEdge *e = v->e;
@ -2506,7 +2506,7 @@ ATTR_NO_OPT static bool cleanup_vert(BMesh *bm, BMVert *v, const BMTracer *trace
return true;
}
ATTR_NO_OPT static void bmesh_kernel_check_val3_vert(BMesh *bm, BMEdge *e, const BMTracer *tracer)
static void bmesh_kernel_check_val3_vert(BMesh *bm, BMEdge *e, const BMTracer *tracer)
{
if (!e->l) {
return;
@ -2544,12 +2544,12 @@ ATTR_NO_OPT static void bmesh_kernel_check_val3_vert(BMesh *bm, BMEdge *e, const
bm_logstack_pop();
}
ATTR_NO_OPT BMVert *bmesh_kernel_join_vert_kill_edge(BMesh *bm,
BMEdge *e,
BMVert *v_kill,
const bool do_del,
const bool combine_flags,
const BMTracer *tracer)
BMVert *bmesh_kernel_join_vert_kill_edge(BMesh *bm,
BMEdge *e,
BMVert *v_kill,
const bool do_del,
const bool combine_flags,
const BMTracer *tracer)
{
BMVert *v_conn = BM_edge_other_vert(e, v_kill);
@ -2586,7 +2586,7 @@ ATTR_NO_OPT BMVert *bmesh_kernel_join_vert_kill_edge(BMesh *bm,
JVKE_CHECK_ELEMENT(v_conn);
JVKE_CHECK_ELEMENT(v_del);
#define _OTHER_TRACES // paranoia (and likely duplicate) calls to tracer callbacks
#define _OTHER_TRACES // paranoia (and likely duplicate) calls to tracer callbacks
/* first clear tags */
for (int i = 0; i < 2; i++) {
@ -2823,7 +2823,7 @@ ATTR_NO_OPT BMVert *bmesh_kernel_join_vert_kill_edge(BMesh *bm,
} while (lnext && (l = lnext) != f->l_first);
if (f->len <= 2) {
#if 0 //def _OTHER_TRACES
#if 0 // def _OTHER_TRACES
if (tracer) {
tracer->on_face_kill(bm, f, tracer->userdata);
}
@ -3330,7 +3330,7 @@ bool BM_vert_splice_check_double(BMVert *v_a, BMVert *v_b)
return is_double;
}
ATTR_NO_OPT bool BM_vert_splice(BMesh *bm, BMVert *v_dst, BMVert *v_src)
bool BM_vert_splice(BMesh *bm, BMVert *v_dst, BMVert *v_src)
{
BMEdge *e;

View File

@ -21,7 +21,7 @@ using namespace blender;
#define FREELIST_HASHMAP_THRESHOLD_HIGH 1024
#define FREELIST_HASHMAP_THRESHOLD_LOW 700
ATTR_NO_OPT BMIdMap *BM_idmap_new(BMesh *bm, int elem_mask)
BMIdMap *BM_idmap_new(BMesh *bm, int elem_mask)
{
BMIdMap *idmap = MEM_new<BMIdMap>("BMIdMap");
@ -37,7 +37,7 @@ ATTR_NO_OPT BMIdMap *BM_idmap_new(BMesh *bm, int elem_mask)
return idmap;
}
ATTR_NO_OPT static void idmap_grow_map(BMIdMap *idmap, int newid)
static void idmap_grow_map(BMIdMap *idmap, int newid)
{
if (idmap->map_size > newid) {
return;
@ -56,7 +56,7 @@ ATTR_NO_OPT static void idmap_grow_map(BMIdMap *idmap, int newid)
idmap->map_size = newsize;
}
ATTR_NO_OPT void BM_idmap_check_ids(BMIdMap *idmap)
void BM_idmap_check_ids(BMIdMap *idmap)
{
BMIter iter;
BMVert *v;
@ -158,7 +158,7 @@ ATTR_NO_OPT void BM_idmap_check_ids(BMIdMap *idmap)
idmap->maxid = max_id;
}
ATTR_NO_OPT void BM_idmap_check_attributes(BMIdMap *idmap)
void BM_idmap_check_attributes(BMIdMap *idmap)
{
auto check_attr = [&](int type) {
if (!(idmap->flag & type)) {
@ -215,22 +215,22 @@ ATTR_NO_OPT void BM_idmap_check_attributes(BMIdMap *idmap)
check_attr(BM_FACE);
}
ATTR_NO_OPT void BM_idmap_destroy(BMIdMap *idmap)
void BM_idmap_destroy(BMIdMap *idmap)
{
MEM_SAFE_FREE(idmap->map);
MEM_delete<BMIdMap>(idmap);
}
ATTR_NO_OPT static void check_idx_map(BMIdMap *idmap)
static void check_idx_map(BMIdMap *idmap)
{
if (idmap->free_idx_map && idmap->freelist.size() < FREELIST_HASHMAP_THRESHOLD_LOW) {
//printf("%s: Deleting free_idx_map\n", __func__);
// printf("%s: Deleting free_idx_map\n", __func__);
MEM_delete<BMIdMap::FreeIdxMap>(idmap->free_idx_map);
idmap->free_idx_map = nullptr;
}
else if (!idmap->free_idx_map && idmap->freelist.size() < FREELIST_HASHMAP_THRESHOLD_HIGH) {
//printf("%s: Adding free_idx_map\n", __func__);
// printf("%s: Adding free_idx_map\n", __func__);
idmap->free_idx_map = MEM_new<BMIdMap::FreeIdxMap>("BMIdMap::FreeIdxMap");
@ -240,13 +240,14 @@ ATTR_NO_OPT static void check_idx_map(BMIdMap *idmap)
}
}
ATTR_NO_OPT int BM_idmap_alloc(BMIdMap *idmap, BMElem *elem)
int BM_idmap_alloc(BMIdMap *idmap, BMElem *elem)
{
int id = -1;
#ifdef USE_NEW_IDMAP
while (idmap->freelist.size()) {
id = idmap->freelist.pop_last();
if (id == -1) {
continue;
}
@ -266,12 +267,13 @@ ATTR_NO_OPT int BM_idmap_alloc(BMIdMap *idmap, BMElem *elem)
idmap->map[id] = elem;
BM_ELEM_CD_SET_INT(elem, idmap->cd_id_off[elem->head.htype], id);
#endif
return id;
}
ATTR_NO_OPT void BM_idmap_assign(BMIdMap *idmap, BMElem *elem, int id)
void BM_idmap_assign(BMIdMap *idmap, BMElem *elem, int id)
{
#ifdef USE_NEW_IDMAP
/* Remove id from freelist. */
if (idmap->free_idx_map) {
const int *val;
@ -295,10 +297,12 @@ ATTR_NO_OPT void BM_idmap_assign(BMIdMap *idmap, BMElem *elem, int id)
idmap->map[id] = elem;
check_idx_map(idmap);
#endif
}
ATTR_NO_OPT void BM_idmap_release(BMIdMap *idmap, BMElem *elem, bool clear_id)
void BM_idmap_release(BMIdMap *idmap, BMElem *elem, bool clear_id)
{
#ifdef USE_NEW_IDMAP
int id = BM_ELEM_CD_GET_INT(elem, idmap->cd_id_off[(int)elem->head.htype]);
if (id == -1) {
@ -323,6 +327,7 @@ ATTR_NO_OPT void BM_idmap_release(BMIdMap *idmap, BMElem *elem, bool clear_id)
if (clear_id) {
BM_ELEM_CD_SET_INT(elem, idmap->cd_id_off[elem->head.htype], -1);
}
#endif
}
int BM_idmap_check_assign(BMIdMap *idmap, BMElem *elem)

View File

@ -644,19 +644,19 @@ static bool log_ghash_ensure_p(BMLog *log, GHash *gh, void *key, void ***val)
}
#ifdef USE_NEW_IDMAP
ATTR_NO_OPT static void bm_log_set_id_raw(BMLog *log, BMElem *elem, int id)
static void bm_log_set_id_raw(BMLog *log, BMElem *elem, int id)
{
BM_ELEM_CD_SET_INT(elem, log->idmap->cd_id_off[elem->head.htype], id);
}
/* Get the vertex's unique ID from the log */
ATTR_NO_OPT static uint bm_log_vert_id_get(BMLog *log, BMVert *v)
static uint bm_log_vert_id_get(BMLog *log, BMVert *v)
{
return BM_idmap_get_id(log->idmap, (BMElem *)v);
}
/*Get a vertex from its unique ID */
ATTR_NO_OPT static BMElem *bm_log_elem_from_id(BMLog *log, uint id)
static BMElem *bm_log_elem_from_id(BMLog *log, uint id)
{
if (log->idmap->map && id >= ((unsigned int)log->idmap->map_size)) {
@ -667,7 +667,7 @@ ATTR_NO_OPT static BMElem *bm_log_elem_from_id(BMLog *log, uint id)
}
/* Get a vertex from its unique ID */
ATTR_NO_OPT static BMVert *bm_log_vert_from_id(BMLog *log, uint id)
static BMVert *bm_log_vert_from_id(BMLog *log, uint id)
{
return (BMVert *)bm_log_elem_from_id(log, id);
}
@ -678,7 +678,7 @@ BMVert *BM_log_id_vert_get(BMLog *log, uint id)
}
/* Get the edges's unique ID from the log */
ATTR_NO_OPT static uint bm_log_edge_id_get(BMLog *log, BMEdge *e)
static uint bm_log_edge_id_get(BMLog *log, BMEdge *e)
{
return BM_idmap_get_id(log->idmap, (BMElem *)e);
}
@ -695,24 +695,24 @@ static BMEdge *bm_log_edge_from_id(BMLog *log, uint id)
}
/* Get the face's unique ID from the log */
ATTR_NO_OPT static uint bm_log_face_id_get(BMLog *log, BMFace *f)
static uint bm_log_face_id_get(BMLog *log, BMFace *f)
{
return BM_idmap_get_id(log->idmap, (BMElem *)f);
}
ATTR_NO_OPT static uint bm_log_elem_id_get(BMLog *log, BMElem *elem)
static uint bm_log_elem_id_get(BMLog *log, BMElem *elem)
{
return BM_idmap_get_id(log->idmap, elem);
}
/* Get a face from its unique ID */
ATTR_NO_OPT static BMFace *bm_log_face_from_id(BMLog *log, uint id)
static BMFace *bm_log_face_from_id(BMLog *log, uint id)
{
return (BMFace *)bm_log_elem_from_id(log, id);
}
#else
ATTR_NO_OPT static void bm_log_set_id_raw(BMLog *log, BMElem *elem, int id)
static void bm_log_set_id_raw(BMLog *log, BMElem *elem, int id)
{
BM_ELEM_CD_SET_INT(elem, log->bm->idmap.cd_id_off[elem->head.htype], id);
}
@ -1456,7 +1456,7 @@ static void bm_log_edges_restore(
}
}
ATTR_NO_OPT static void bm_log_faces_restore(
static void bm_log_faces_restore(
BMesh *bm, BMLog *log, GHash *faces, BMLogEntry *entry, BMLogCallbacks *callbacks)
{
GHashIterator gh_iter;
@ -4022,7 +4022,7 @@ static bool check_log_elem(BMesh *bm, BMLog *newlog, int id, int type, bool expe
return true;
}
ATTR_NO_OPT static bool bm_check_ghash_set(
static bool bm_check_ghash_set(
GHash *ghashes[4], BMesh *bm, BMLog *newlog, BMLogEntry *entry, bool shouldExist)
{
bool ok = true;
@ -4062,7 +4062,7 @@ ATTR_NO_OPT static bool bm_check_ghash_set(
return ok;
}
ATTR_NO_OPT static bool bm_log_validate_intern(
static bool bm_log_validate_intern(
BMesh *bm, BMLog *newlog, BMLogEntry *srcEntry, bool is_applied, bool do_apply)
{
bool precopy = do_apply;

View File

@ -442,7 +442,7 @@ BMEdge *BM_vert_collapse_edge(BMesh *bm,
/**
* Collapse and edge into a single vertex.
*/
ATTR_NO_OPT BMVert *BM_edge_collapse(BMesh *bm,
BMVert *BM_edge_collapse(BMesh *bm,
BMEdge *e_kill,
BMVert *v_kill,
const bool do_del,

View File

@ -1441,10 +1441,10 @@ void DRW_shgroup_call_sculpt(DRWShadingGroup *shgroup,
drw_sculpt_generate_calls(&scd);
}
ATTR_NO_OPT void DRW_shgroup_call_sculpt_with_materials(DRWShadingGroup **shgroups,
GPUMaterial **gpumats,
int num_shgroups,
Object *ob)
void DRW_shgroup_call_sculpt_with_materials(DRWShadingGroup **shgroups,
GPUMaterial **gpumats,
int num_shgroups,
Object *ob)
{
DRW_Attributes draw_attrs;
DRW_MeshCDMask cd_needed;

View File

@ -230,7 +230,7 @@ struct PBVHBatches {
}
}
ATTR_NO_OPT ~PBVHBatches()
~PBVHBatches()
{
for (PBVHBatch &batch : batches.values()) {
GPU_BATCH_DISCARD_SAFE(batch.tris);
@ -760,7 +760,7 @@ struct PBVHBatches {
}
}
ATTR_NO_OPT void fill_vbo_bmesh(PBVHVbo &vbo, PBVH_GPU_Args *args)
void fill_vbo_bmesh(PBVHVbo &vbo, PBVH_GPU_Args *args)
{
auto foreach_bmesh_normal = [&](std::function<void(BMLoop * l)> callback) {
for (int i : IndexRange(args->tribuf->tottri)) {
@ -1099,10 +1099,7 @@ struct PBVHBatches {
}
}
ATTR_NO_OPT void create_vbo(eAttrDomain domain,
const uint32_t type,
string name,
PBVH_GPU_Args *args)
void create_vbo(eAttrDomain domain, const uint32_t type, string name, PBVH_GPU_Args *args)
{
PBVHVbo vbo(domain, type, name);
GPUVertFormat format;

View File

@ -284,9 +284,9 @@ static int new_fset_apply_curve(SculptSession *ss,
return new_fset;
}
ATTR_NO_OPT void do_draw_face_sets_brush_task_cb_ex(void *__restrict userdata,
const int n,
const TaskParallelTLS *__restrict tls)
void do_draw_face_sets_brush_task_cb_ex(void *__restrict userdata,
const int n,
const TaskParallelTLS *__restrict tls)
{
SculptFaceSetDrawData *data = (SculptFaceSetDrawData *)userdata;
SculptSession *ss = data->ob->sculpt;
@ -307,7 +307,7 @@ ATTR_NO_OPT void do_draw_face_sets_brush_task_cb_ex(void *__restrict userdata,
const int thread_id = BLI_task_parallel_thread_id(tls);
float (*vert_positions)[3] = SCULPT_mesh_deformed_positions_get(ss);
float(*vert_positions)[3] = SCULPT_mesh_deformed_positions_get(ss);
const float test_limit = 0.05f;
int cd_mask = -1;
@ -315,8 +315,6 @@ ATTR_NO_OPT void do_draw_face_sets_brush_task_cb_ex(void *__restrict userdata,
cd_mask = CustomData_get_offset(&ss->bm->vdata, CD_PAINT_MASK);
}
SCULPT_undo_push_node(data->ob, data->nodes[n], SCULPT_UNDO_FACE_SETS);
/*check if we need to sample the current face set*/
bool set_active_faceset = ss->cache->automasking &&
@ -646,10 +644,7 @@ static void do_relax_face_sets_brush_task_cb_ex(void *__restrict userdata,
BKE_pbvh_vertex_iter_end;
}
ATTR_NO_OPT void SCULPT_do_draw_face_sets_brush(Sculpt *sd,
Object *ob,
PBVHNode **nodes,
int totnode)
void SCULPT_do_draw_face_sets_brush(Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
{
SculptSession *ss = ob->sculpt;
Brush *brush = ss->cache->brush ? ss->cache->brush : BKE_paint_brush(&sd->paint);
@ -698,7 +693,7 @@ ATTR_NO_OPT void SCULPT_do_draw_face_sets_brush(Sculpt *sd,
// ctrl-click is single threaded since the tasks will set the initial face set
TaskParallelSettings settings;
BKE_pbvh_parallel_range_settings(&settings, threaded, totnode);
BKE_pbvh_parallel_range_settings(&settings, threaded && false /* XXX */, totnode);
if (ss->cache->alt_smooth) {
SCULPT_boundary_info_ensure(ob);
for (int i = 0; i < 4; i++) {
@ -968,52 +963,64 @@ typedef bool (*face_sets_flood_fill_test)(
BMesh *bm, BMFace *from_f, BMEdge *from_e, BMFace *to_f, const float threshold);
static bool sculpt_face_sets_init_loose_parts_test(BMesh * /*bm*/,
BMFace */*from_f*/,
BMEdge */*from_e*/,
BMFace */*UNUSED(to_f)*/,
BMFace * /*from_f*/,
BMEdge * /*from_e*/,
BMFace * /*UNUSED(to_f)*/,
const float /*UNUSED(threshold)*/)
{
return true;
}
static bool sculpt_face_sets_init_normals_test(
BMesh */*bm*/, BMFace *from_f, BMEdge */*UNUSED(from_e)*/, BMFace *to_f, const float threshold)
static bool sculpt_face_sets_init_normals_test(BMesh * /*bm*/,
BMFace *from_f,
BMEdge * /*UNUSED(from_e)*/,
BMFace *to_f,
const float threshold)
{
return fabsf(dot_v3v3(from_f->no, to_f->no)) > threshold;
}
static bool sculpt_face_sets_init_uv_seams_test(BMesh */*UNUSED(bm)*/,
BMFace */*UNUSED(from_f)*/,
static bool sculpt_face_sets_init_uv_seams_test(BMesh * /*UNUSED(bm)*/,
BMFace * /*UNUSED(from_f)*/,
BMEdge *from_e,
BMFace */*UNUSED(to_f)*/,
BMFace * /*UNUSED(to_f)*/,
const float /*UNUSED(threshold)*/)
{
return !BM_elem_flag_test(from_e, BM_ELEM_SEAM);
}
static bool sculpt_face_sets_init_crease_test(
BMesh *bm, BMFace */*UNUSED(from_f)*/, BMEdge *from_e, BMFace */*UNUSED(to_f)*/, const float threshold)
static bool sculpt_face_sets_init_crease_test(BMesh *bm,
BMFace * /*UNUSED(from_f)*/,
BMEdge *from_e,
BMFace * /*UNUSED(to_f)*/,
const float threshold)
{
return BM_elem_float_data_get(&bm->edata, from_e, CD_CREASE) < threshold;
}
static bool sculpt_face_sets_init_bevel_weight_test(
BMesh *bm, BMFace */*UNUSED(from_f)*/, BMEdge *from_e, BMFace */*UNUSED(to_f)*/, const float threshold)
static bool sculpt_face_sets_init_bevel_weight_test(BMesh *bm,
BMFace * /*UNUSED(from_f)*/,
BMEdge *from_e,
BMFace * /*UNUSED(to_f)*/,
const float threshold)
{
return BM_elem_float_data_get(&bm->edata, from_e, CD_BWEIGHT) < threshold;
}
static bool sculpt_face_sets_init_sharp_edges_test(BMesh */*UNUSED(bm)*/,
BMFace */*UNUSED(from_f)*/,
static bool sculpt_face_sets_init_sharp_edges_test(BMesh * /*UNUSED(bm)*/,
BMFace * /*UNUSED(from_f)*/,
BMEdge *from_e,
BMFace */*UNUSED(to_f)*/,
BMFace * /*UNUSED(to_f)*/,
const float /*UNUSED(threshold)*/)
{
return BM_elem_flag_test(from_e, BM_ELEM_SMOOTH);
}
static bool sculpt_face_sets_init_face_set_boundary_test(
BMesh *bm, BMFace *from_f, BMEdge */*UNUSED(from_e)*/, BMFace *to_f, const float /*UNUSED(threshold)*/)
static bool sculpt_face_sets_init_face_set_boundary_test(BMesh *bm,
BMFace *from_f,
BMEdge * /*UNUSED(from_e)*/,
BMFace *to_f,
const float /*UNUSED(threshold)*/)
{
const int cd_face_sets_offset = CustomData_get_offset_named(
&bm->pdata, CD_PROP_INT32, ".sculpt_face_sets");
@ -1303,7 +1310,7 @@ static EnumPropertyItem prop_sculpt_face_sets_change_visibility_types[] = {
{0, nullptr, 0, nullptr, nullptr},
};
ATTR_NO_OPT void SCULPT_face_sets_visibility_all_set(SculptSession *ss, bool state)
void SCULPT_face_sets_visibility_all_set(SculptSession *ss, bool state)
{
for (int i = 0; i < ss->totfaces; i++) {
PBVHFaceRef face = BKE_pbvh_index_to_face(ss->pbvh, i);
@ -1965,8 +1972,9 @@ static void sculpt_face_set_edit_fair_face_set(Object *ob,
BKE_bmesh_prefair_and_fair_verts(ss->bm, fair_vertices, (eMeshFairingDepth)fair_order);
}
else {
float (*vert_positions)[3] = SCULPT_mesh_deformed_positions_get(ss);
BKE_mesh_prefair_and_fair_verts(mesh, vert_positions, fair_vertices, (eMeshFairingDepth)fair_order);
float(*vert_positions)[3] = SCULPT_mesh_deformed_positions_get(ss);
BKE_mesh_prefair_and_fair_verts(
mesh, vert_positions, fair_vertices, (eMeshFairingDepth)fair_order);
MEM_freeN(fair_vertices);
}
@ -2852,7 +2860,7 @@ static int sculpt_face_set_edit_modal(bContext *C, wmOperator *op, const wmEvent
}
if (!ss->bm) {
float (*vert_positions)[3] = SCULPT_mesh_deformed_positions_get(ss);
float(*vert_positions)[3] = SCULPT_mesh_deformed_positions_get(ss);
for (int i = 0; i < fsecd->totvert; i++) {
int idx = fsecd->verts[i];

View File

@ -364,10 +364,10 @@ MINLINE float safe_shell_angle_to_dist(const float angle)
return (UNLIKELY(angle < 1.e-8f)) ? 1.0f : fabsf(1.0f / th);
}
ATTR_NO_OPT static void SCULPT_neighbor_coords_average_interior_boundary(SculptSession *ss,
float result[3],
PBVHVertRef vertex,
SculptSmoothArgs *args)
static void SCULPT_neighbor_coords_average_interior_boundary(SculptSession *ss,
float result[3],
PBVHVertRef vertex,
SculptSmoothArgs *args)
{
float avg[3] = {0.0f, 0.0f, 0.0f};
@ -709,10 +709,10 @@ ATTR_NO_OPT static void SCULPT_neighbor_coords_average_interior_boundary(SculptS
PBVH_CHECK_NAN(co);
}
ATTR_NO_OPT void SCULPT_neighbor_coords_average_interior(SculptSession *ss,
float result[3],
PBVHVertRef vertex,
SculptSmoothArgs *args)
void SCULPT_neighbor_coords_average_interior(SculptSession *ss,
float result[3],
PBVHVertRef vertex,
SculptSmoothArgs *args)
{
if (args->bound_smooth > 0.0f && args->bound_scl) {
SCULPT_neighbor_coords_average_interior_boundary(ss, result, vertex, args);
@ -1991,14 +1991,14 @@ void SCULPT_bound_smooth_ensure(SculptSession *ss, Object *ob)
}
}
ATTR_NO_OPT void SCULPT_smooth(Sculpt *sd,
Object *ob,
PBVHNode **nodes,
const int totnode,
float bstrength,
const bool smooth_mask,
float projection,
bool do_origco)
void SCULPT_smooth(Sculpt *sd,
Object *ob,
PBVHNode **nodes,
const int totnode,
float bstrength,
const bool smooth_mask,
float projection,
bool do_origco)
{
SculptSession *ss = ob->sculpt;
Brush *brush = ss->cache && ss->cache->brush ? ss->cache->brush : BKE_paint_brush(&sd->paint);