diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2020-07-15 15:18:30 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2020-07-15 15:23:35 +0300 |
commit | e8f8c13d4b76ba587ef7cf33370b286d4fbd36bc (patch) | |
tree | 371472ae220ad8740b310aaa8f4c5746448302c5 /source/blender/bmesh/intern/bmesh_core.c | |
parent | 0c062a9e082130212447c2b67e8e16b8a2e622d1 (diff) | |
parent | 44bb73e765a6f79bc14a46449368f83e572d8bad (diff) |
PointCloud: Initial rendering support for Workbenchtmp-pointcloud-render
Also includes outline overlays. Removes the temp overlay drawing
We make the geometry follow camera like billboards this uses less
geometry. Currently we use half octahedron for now. Goal would be
to use icospheres.
This patch also optimize the case when pointcloud has uniform radius.
However we should premultiply the radius prop by the default radius
beforehand to avoid a multiplication on CPU.
Differential Revision: https://developer.blender.org/D8301
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_core.c')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_core.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/bmesh/intern/bmesh_core.c b/source/blender/bmesh/intern/bmesh_core.c index 35fb698eac1..4e9775bcfa7 100644 --- a/source/blender/bmesh/intern/bmesh_core.c +++ b/source/blender/bmesh/intern/bmesh_core.c @@ -101,6 +101,7 @@ BMVert *BM_vert_create(BMesh *bm, /* may add to middle of the pool */ bm->elem_index_dirty |= BM_VERT; bm->elem_table_dirty |= BM_VERT; + bm->spacearr_dirty |= BM_SPACEARR_DIRTY_ALL; bm->totvert++; @@ -190,6 +191,7 @@ BMEdge *BM_edge_create( /* may add to middle of the pool */ bm->elem_index_dirty |= BM_EDGE; bm->elem_table_dirty |= BM_EDGE; + bm->spacearr_dirty |= BM_SPACEARR_DIRTY_ALL; bm->totedge++; @@ -259,6 +261,7 @@ static BMLoop *bm_loop_create(BMesh *bm, /* may add to middle of the pool */ bm->elem_index_dirty |= BM_LOOP; + bm->spacearr_dirty |= BM_SPACEARR_DIRTY_ALL; bm->totloop++; @@ -402,6 +405,7 @@ BLI_INLINE BMFace *bm_face_create__internal(BMesh *bm) /* may add to middle of the pool */ bm->elem_index_dirty |= BM_FACE; bm->elem_table_dirty |= BM_FACE; + bm->spacearr_dirty |= BM_SPACEARR_DIRTY_ALL; bm->totface++; @@ -748,6 +752,7 @@ static void bm_kill_only_vert(BMesh *bm, BMVert *v) bm->totvert--; bm->elem_index_dirty |= BM_VERT; bm->elem_table_dirty |= BM_VERT; + bm->spacearr_dirty |= BM_SPACEARR_DIRTY_ALL; BM_select_history_remove(bm, v); @@ -770,6 +775,7 @@ static void bm_kill_only_edge(BMesh *bm, BMEdge *e) bm->totedge--; bm->elem_index_dirty |= BM_EDGE; bm->elem_table_dirty |= BM_EDGE; + bm->spacearr_dirty |= BM_SPACEARR_DIRTY_ALL; BM_select_history_remove(bm, (BMElem *)e); @@ -796,6 +802,7 @@ static void bm_kill_only_face(BMesh *bm, BMFace *f) bm->totface--; bm->elem_index_dirty |= BM_FACE; bm->elem_table_dirty |= BM_FACE; + bm->spacearr_dirty |= BM_SPACEARR_DIRTY_ALL; BM_select_history_remove(bm, (BMElem *)f); @@ -817,6 +824,8 @@ static void bm_kill_only_loop(BMesh *bm, BMLoop *l) { bm->totloop--; bm->elem_index_dirty |= BM_LOOP; + bm->spacearr_dirty |= BM_SPACEARR_DIRTY_ALL; + if (l->head.data) { CustomData_bmesh_free_block(&bm->ldata, &l->head.data); } |