Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2014-04-08 08:45:48 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-04-08 08:45:48 +0400
commitebaf3781fa4165808cd9ddb2ed0944788a31af7c (patch)
tree81ac09309f74f8d2e3e51d7fc97da41042b5ef0e /source/blender/gpu
parent593b698b44c631c5228760a7938e9c51b3b115ce (diff)
Dyntopo: replace GHash with GSet, saves some memory
Diffstat (limited to 'source/blender/gpu')
-rw-r--r--source/blender/gpu/GPU_buffers.h4
-rw-r--r--source/blender/gpu/intern/gpu_buffers.c36
2 files changed, 20 insertions, 20 deletions
diff --git a/source/blender/gpu/GPU_buffers.h b/source/blender/gpu/GPU_buffers.h
index f880bfbda6f..1d27824483f 100644
--- a/source/blender/gpu/GPU_buffers.h
+++ b/source/blender/gpu/GPU_buffers.h
@@ -177,7 +177,7 @@ GPU_PBVH_Buffers *GPU_build_bmesh_pbvh_buffers(int smooth_shading);
void GPU_update_bmesh_pbvh_buffers(GPU_PBVH_Buffers *buffers,
struct BMesh *bm,
- struct GHash *bm_faces,
+ struct GSet *bm_faces,
struct GSet *bm_unique_verts,
struct GSet *bm_other_verts,
bool show_diffuse_color);
@@ -190,7 +190,7 @@ void GPU_update_grid_pbvh_buffers(GPU_PBVH_Buffers *buffers, struct CCGElem **gr
void GPU_draw_pbvh_buffers(GPU_PBVH_Buffers *buffers, DMSetMaterial setMaterial,
bool wireframe);
-bool GPU_pbvh_buffers_diffuse_changed(GPU_PBVH_Buffers *buffers, struct GHash *bm_faces, bool show_diffuse_color);
+bool GPU_pbvh_buffers_diffuse_changed(GPU_PBVH_Buffers *buffers, struct GSet *bm_faces, bool show_diffuse_color);
void GPU_free_pbvh_buffers(GPU_PBVH_Buffers *buffers);
diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c
index e01fa510dfb..f1b9e3ff00e 100644
--- a/source/blender/gpu/intern/gpu_buffers.c
+++ b/source/blender/gpu/intern/gpu_buffers.c
@@ -2010,13 +2010,13 @@ static int gpu_bmesh_vert_visible_count(GSet *bm_unique_verts,
}
/* Return the total number of visible faces */
-static int gpu_bmesh_face_visible_count(GHash *bm_faces)
+static int gpu_bmesh_face_visible_count(GSet *bm_faces)
{
- GHashIterator gh_iter;
+ GSetIterator gh_iter;
int totface = 0;
- GHASH_ITER (gh_iter, bm_faces) {
- BMFace *f = BLI_ghashIterator_getKey(&gh_iter);
+ GSET_ITER (gh_iter, bm_faces) {
+ BMFace *f = BLI_gsetIterator_getKey(&gh_iter);
if (!paint_is_bmesh_face_hidden(f))
totface++;
@@ -2029,7 +2029,7 @@ static int gpu_bmesh_face_visible_count(GHash *bm_faces)
* shading, an element index buffer. */
void GPU_update_bmesh_pbvh_buffers(GPU_PBVH_Buffers *buffers,
BMesh *bm,
- GHash *bm_faces,
+ GSet *bm_faces,
GSet *bm_unique_verts,
GSet *bm_other_verts,
bool show_diffuse_color)
@@ -2075,10 +2075,10 @@ void GPU_update_bmesh_pbvh_buffers(GPU_PBVH_Buffers *buffers,
diffuse_color[0] = diffuse_color[1] = diffuse_color[2] = 1.0;
else if (show_diffuse_color) {
/* due to dynamic nature of dyntopo, only get first material */
- GHashIterator gh_iter;
+ GSetIterator gs_iter;
BMFace *f;
- BLI_ghashIterator_init(&gh_iter, bm_faces);
- f = BLI_ghashIterator_getKey(&gh_iter);
+ BLI_gsetIterator_init(&gs_iter, bm_faces);
+ f = BLI_gsetIterator_getKey(&gs_iter);
GPU_material_diffuse_get(f->mat_nr + 1, diffuse_color);
}
@@ -2117,10 +2117,10 @@ void GPU_update_bmesh_pbvh_buffers(GPU_PBVH_Buffers *buffers,
maxvert = v_index;
}
else {
- GHashIterator gh_iter;
+ GSetIterator gs_iter;
- GHASH_ITER (gh_iter, bm_faces) {
- BMFace *f = BLI_ghashIterator_getKey(&gh_iter);
+ GSET_ITER (gs_iter, bm_faces) {
+ BMFace *f = BLI_gsetIterator_getKey(&gs_iter);
BLI_assert(f->len == 3);
@@ -2175,10 +2175,10 @@ void GPU_update_bmesh_pbvh_buffers(GPU_PBVH_Buffers *buffers,
/* Fill triangle index buffer */
tri_data = glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
if (tri_data) {
- GHashIterator gh_iter;
+ GSetIterator gs_iter;
- GHASH_ITER (gh_iter, bm_faces) {
- BMFace *f = BLI_ghashIterator_getKey(&gh_iter);
+ GSET_ITER (gs_iter, bm_faces) {
+ BMFace *f = BLI_gsetIterator_getKey(&gs_iter);
if (!paint_is_bmesh_face_hidden(f)) {
BMLoop *l_iter;
@@ -2529,7 +2529,7 @@ void GPU_draw_pbvh_buffers(GPU_PBVH_Buffers *buffers, DMSetMaterial setMaterial,
}
}
-bool GPU_pbvh_buffers_diffuse_changed(GPU_PBVH_Buffers *buffers, GHash *bm_faces, bool show_diffuse_color)
+bool GPU_pbvh_buffers_diffuse_changed(GPU_PBVH_Buffers *buffers, GSet *bm_faces, bool show_diffuse_color)
{
float diffuse_color[4];
@@ -2549,10 +2549,10 @@ bool GPU_pbvh_buffers_diffuse_changed(GPU_PBVH_Buffers *buffers, GHash *bm_faces
}
else if (buffers->use_bmesh) {
/* due to dynamc nature of dyntopo, only get first material */
- GHashIterator gh_iter;
+ GSetIterator gs_iter;
BMFace *f;
- BLI_ghashIterator_init(&gh_iter, bm_faces);
- f = BLI_ghashIterator_getKey(&gh_iter);
+ BLI_gsetIterator_init(&gs_iter, bm_faces);
+ f = BLI_gsetIterator_getKey(&gs_iter);
GPU_material_diffuse_get(f->mat_nr + 1, diffuse_color);
}
else {