diff options
Diffstat (limited to 'source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_pos_nor.cc')
-rw-r--r-- | source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_pos_nor.cc | 51 |
1 files changed, 27 insertions, 24 deletions
diff --git a/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_pos_nor.cc b/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_pos_nor.cc index 9788beabeb5..30b4f808487 100644 --- a/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_pos_nor.cc +++ b/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_pos_nor.cc @@ -28,7 +28,7 @@ struct MeshExtract_PosNor_Data { }; static void extract_pos_nor_init(const MeshRenderData *mr, - MeshBatchCache *UNUSED(cache), + MeshBatchCache * /*cache*/, void *buf, void *tls_data) { @@ -66,7 +66,7 @@ static void extract_pos_nor_init(const MeshRenderData *mr, static void extract_pos_nor_iter_poly_bm(const MeshRenderData *mr, const BMFace *f, - const int UNUSED(f_index), + const int /*f_index*/, void *_data) { MeshExtract_PosNor_Data *data = static_cast<MeshExtract_PosNor_Data *>(_data); @@ -83,10 +83,11 @@ static void extract_pos_nor_iter_poly_bm(const MeshRenderData *mr, static void extract_pos_nor_iter_poly_mesh(const MeshRenderData *mr, const MPoly *mp, - const int UNUSED(mp_index), + const int mp_index, void *_data) { MeshExtract_PosNor_Data *data = static_cast<MeshExtract_PosNor_Data *>(_data); + const bool poly_hidden = mr->hide_poly && mr->hide_poly[mp_index]; const MLoop *mloop = mr->mloop; const int ml_index_end = mp->loopstart + mp->totloop; @@ -95,15 +96,15 @@ static void extract_pos_nor_iter_poly_mesh(const MeshRenderData *mr, PosNorLoop *vert = &data->vbo_data[ml_index]; const MVert *mv = &mr->mvert[ml->v]; + const bool vert_hidden = mr->hide_vert && mr->hide_vert[ml->v]; copy_v3_v3(vert->pos, mv->co); vert->nor = data->normals[ml->v].low; /* Flag for paint mode overlay. */ - if (mp->flag & ME_HIDE || mv->flag & ME_HIDE || - ((mr->extract_type == MR_EXTRACT_MAPPED) && (mr->v_origindex) && - (mr->v_origindex[ml->v] == ORIGINDEX_NONE))) { + if (poly_hidden || vert_hidden || + ((mr->v_origindex) && (mr->v_origindex[ml->v] == ORIGINDEX_NONE))) { vert->nor.w = -1; } - else if (mv->flag & SELECT) { + else if (mr->select_vert && mr->select_vert[ml->v]) { vert->nor.w = 1; } else { @@ -170,9 +171,9 @@ static void extract_pos_nor_iter_lvert_mesh(const MeshRenderData *mr, vert->nor = data->normals[v_index].low; } -static void extract_pos_nor_finish(const MeshRenderData *UNUSED(mr), - MeshBatchCache *UNUSED(cache), - void *UNUSED(buf), +static void extract_pos_nor_finish(const MeshRenderData * /*mr*/, + MeshBatchCache * /*cache*/, + void * /*buf*/, void *_data) { MeshExtract_PosNor_Data *data = static_cast<MeshExtract_PosNor_Data *>(_data); @@ -200,10 +201,10 @@ static GPUVertFormat *get_custom_normals_format() } static void extract_pos_nor_init_subdiv(const DRWSubdivCache *subdiv_cache, - const MeshRenderData *UNUSED(mr), + const MeshRenderData * /*mr*/, MeshBatchCache *cache, void *buffer, - void *UNUSED(data)) + void * /*data*/) { GPUVertBuf *vbo = static_cast<GPUVertBuf *>(buffer); const DRWSubdivLooseGeom &loose_geom = subdiv_cache->loose_geom; @@ -281,9 +282,9 @@ static void extract_pos_nor_init_subdiv(const DRWSubdivCache *subdiv_cache, } static void extract_pos_nor_loose_geom_subdiv(const DRWSubdivCache *subdiv_cache, - const MeshRenderData *UNUSED(mr), + const MeshRenderData * /*mr*/, void *buffer, - void *UNUSED(data)) + void * /*data*/) { const DRWSubdivLooseGeom &loose_geom = subdiv_cache->loose_geom; if (loose_geom.loop_len == 0) { @@ -372,7 +373,7 @@ struct MeshExtract_PosNorHQ_Data { }; static void extract_pos_nor_hq_init(const MeshRenderData *mr, - MeshBatchCache *UNUSED(cache), + MeshBatchCache * /*cache*/, void *buf, void *tls_data) { @@ -410,7 +411,7 @@ static void extract_pos_nor_hq_init(const MeshRenderData *mr, static void extract_pos_nor_hq_iter_poly_bm(const MeshRenderData *mr, const BMFace *f, - const int UNUSED(f_index), + const int /*f_index*/, void *_data) { MeshExtract_PosNorHQ_Data *data = static_cast<MeshExtract_PosNorHQ_Data *>(_data); @@ -428,27 +429,29 @@ static void extract_pos_nor_hq_iter_poly_bm(const MeshRenderData *mr, static void extract_pos_nor_hq_iter_poly_mesh(const MeshRenderData *mr, const MPoly *mp, - const int UNUSED(mp_index), + const int /*mp_index*/, void *_data) { MeshExtract_PosNorHQ_Data *data = static_cast<MeshExtract_PosNorHQ_Data *>(_data); + const bool poly_hidden = mr->hide_poly && mr->hide_poly[mp - mr->mpoly]; + const MLoop *mloop = mr->mloop; const int ml_index_end = mp->loopstart + mp->totloop; for (int ml_index = mp->loopstart; ml_index < ml_index_end; ml_index += 1) { const MLoop *ml = &mloop[ml_index]; + const bool vert_hidden = mr->hide_vert && mr->hide_vert[ml->v]; PosNorHQLoop *vert = &data->vbo_data[ml_index]; const MVert *mv = &mr->mvert[ml->v]; copy_v3_v3(vert->pos, mv->co); copy_v3_v3_short(vert->nor, data->normals[ml->v].high); /* Flag for paint mode overlay. */ - if (mp->flag & ME_HIDE || mv->flag & ME_HIDE || - ((mr->extract_type == MR_EXTRACT_MAPPED) && (mr->v_origindex) && - (mr->v_origindex[ml->v] == ORIGINDEX_NONE))) { + if (poly_hidden || vert_hidden || + ((mr->v_origindex) && (mr->v_origindex[ml->v] == ORIGINDEX_NONE))) { vert->nor[3] = -1; } - else if (mv->flag & SELECT) { + else if (mr->select_vert && mr->select_vert[ml->v]) { vert->nor[3] = 1; } else { @@ -520,9 +523,9 @@ static void extract_pos_nor_hq_iter_lvert_mesh(const MeshRenderData *mr, vert->nor[3] = 0; } -static void extract_pos_nor_hq_finish(const MeshRenderData *UNUSED(mr), - MeshBatchCache *UNUSED(cache), - void *UNUSED(buf), +static void extract_pos_nor_hq_finish(const MeshRenderData * /*mr*/, + MeshBatchCache * /*cache*/, + void * /*buf*/, void *_data) { MeshExtract_PosNorHQ_Data *data = static_cast<MeshExtract_PosNorHQ_Data *>(_data); |