diff options
author | Antony Riakiotakis <kalast@gmail.com> | 2015-07-16 17:22:28 +0300 |
---|---|---|
committer | Antony Riakiotakis <kalast@gmail.com> | 2015-07-16 18:12:03 +0300 |
commit | 3e3e7ee41c9c04ef1630eef46c71434d152c55dc (patch) | |
tree | 65ee42534511a7c0b29be372d5072529b8960396 /source/blender/blenkernel/intern | |
parent | 6568b6d1cdcaf32487bbcd48b4d20da32954c6f5 (diff) |
Sculpt draw code:
Remove legacy code completely, now dyntopo, multires et al even work on
GL 1.1 for really hardcore users :p
Real purpose here though is to be able to have fast multires drawing
even with VBO off, since it requires using indices for vertex buffers.
Also made own code elf puke an eaten normal update function which
made multires not update normals in solid mode...sorry.
Diffstat (limited to 'source/blender/blenkernel/intern')
-rw-r--r-- | source/blender/blenkernel/intern/cdderivedmesh.c | 8 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/pbvh.c | 3 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/subsurf_ccg.c | 2 |
3 files changed, 8 insertions, 5 deletions
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 5b25a32124d..c16af7c2412 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -666,7 +666,7 @@ static void cdDM_drawMappedFaces( unsigned int *fi_map; findex_buffer = GPU_buffer_alloc(dm->drawObject->tot_loop_verts * sizeof(int), false); - fi_map = GPU_buffer_lock(findex_buffer); + fi_map = GPU_buffer_lock(findex_buffer, GPU_BINDING_ARRAY); if (fi_map) { for (i = 0; i < dm->numTessFaceData; i++, mf++) { @@ -689,7 +689,7 @@ static void cdDM_drawMappedFaces( start_element = 0; mf = cddm->mface; - GPU_buffer_unlock(findex_buffer); + GPU_buffer_unlock(findex_buffer, GPU_BINDING_ARRAY); GPU_buffer_bind_as_color(findex_buffer); } } @@ -1034,7 +1034,7 @@ static void cdDM_drawMappedFacesGLSL( if (buffer == NULL) { buffer = GPU_buffer_alloc(max_element_size * dm->drawObject->tot_loop_verts, true); } - varray = GPU_buffer_lock_stream(buffer); + varray = GPU_buffer_lock_stream(buffer, GPU_BINDING_ARRAY); if (varray == NULL) { GPU_buffer_unbind(); GPU_buffer_free(buffer); @@ -1114,7 +1114,7 @@ static void cdDM_drawMappedFacesGLSL( tot_loops += 3; } } - GPU_buffer_unlock(buffer); + GPU_buffer_unlock(buffer, GPU_BINDING_ARRAY); } for (a = 0; a < tot_active_mat; a++) { diff --git a/source/blender/blenkernel/intern/pbvh.c b/source/blender/blenkernel/intern/pbvh.c index e5e36b24a46..edeba9fd7e6 100644 --- a/source/blender/blenkernel/intern/pbvh.c +++ b/source/blender/blenkernel/intern/pbvh.c @@ -1087,7 +1087,8 @@ static void pbvh_update_draw_buffers(PBVH *bvh, PBVHNode **nodes, int totnode) GPU_build_grid_pbvh_buffers(node->prim_indices, node->totprim, bvh->grid_hidden, - bvh->gridkey.grid_size); + bvh->gridkey.grid_size, + &bvh->gridkey); break; case PBVH_FACES: node->draw_buffers = diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index 0b0c011bf5a..aaf631abbf0 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -2246,6 +2246,8 @@ static void ccgDM_drawFacesSolid(DerivedMesh *dm, float (*partial_redraw_planes) int a; CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; + ccgdm_pbvh_update(ccgdm); + if (ccgdm->pbvh && ccgdm->multires.mmd) { if (BKE_pbvh_has_faces(ccgdm->pbvh)) { BKE_pbvh_draw(ccgdm->pbvh, partial_redraw_planes, NULL, |