[Bf-blender-cvs] [f713f39] temp_display_optimization: Merge branch 'master' into temp_display_optimization
Antony Riakiotakis
noreply at git.blender.org
Sun Dec 6 23:54:47 CET 2015
Commit: f713f39182afac8617711a21e97d33d24a87733c
Author: Antony Riakiotakis
Date: Sun Dec 6 23:53:58 2015 +0100
Branches: temp_display_optimization
https://developer.blender.org/rBf713f39182afac8617711a21e97d33d24a87733c
Merge branch 'master' into temp_display_optimization
Conflicts:
source/blender/blenkernel/intern/editderivedmesh.c
source/blender/gpu/intern/gpu_buffers.c
===================================================================
===================================================================
diff --cc source/blender/blenkernel/intern/editderivedmesh.c
index c855c37,b6d009d..2886191
--- a/source/blender/blenkernel/intern/editderivedmesh.c
+++ b/source/blender/blenkernel/intern/editderivedmesh.c
@@@ -1002,61 -754,10 +1002,62 @@@ static void emDM_drawMappedFaces
}
if (has_vcol_preview || has_fcol_preview) {
flag |= DM_DRAW_ALWAYS_SMOOTH;
- glDisable(GL_LIGHTING); /* grr */
+ /* weak, this logic should really be moved higher up */
+ setMaterial = NULL;
}
+ GPU_vertex_setup(dm);
+
+ /* if we do selection, fill the selection buffer color */
+ if (G.f & G_BACKBUFSEL) {
+ if (!(flag & DM_DRAW_SKIP_SELECT)) {
+ unsigned int *fi_map;
+ unsigned int start_element = 0;
+
- findex_buffer = GPU_buffer_alloc(dm->drawObject->tot_loop_verts * sizeof(int), false);
++ findex_buffer = GPU_buffer_alloc(dm->drawObject->tot_loop_verts * sizeof(int));
+ fi_map = GPU_buffer_lock(findex_buffer, GPU_BINDING_ARRAY);
+
+ if (fi_map) {
+ BMIter iter;
+ int j;
+
+ BM_ITER_MESH_INDEX(efa, &iter, bm, BM_FACES_OF_MESH, i) {
+ int selcol = 0xFFFFFFFF;
+
+ if (!skip_hidden || !BM_elem_flag_test(efa, BM_ELEM_HIDDEN)) {
+ WM_framebuffer_index_get(i + 1, &selcol);
+ }
+
+ for (j = 0; j < efa->len; j++)
+ fi_map[start_element++] = selcol;
+ }
+
+ GPU_buffer_unlock(findex_buffer, GPU_BINDING_ARRAY);
+ GPU_buffer_bind_as_color(findex_buffer);
+ }
+ }
+ }
- else {
++ else if (!skip_normals){
+ /* no need to setup normals when selecting */
+ GPU_normal_setup(dm);
+ }
+ GPU_triangle_setup(dm);
+ glShadeModel(GL_SMOOTH);
+ for (i = 0; i < dm->drawObject->totmaterial; i++) {
+ if (!setMaterial || setMaterial(dm->drawObject->materials[i].mat_nr + 1, NULL)) {
+ unsigned int totalelem = (skip_hidden) ? dm->drawObject->materials[i].totvisibleelems :
+ dm->drawObject->materials[i].totelements;
+ GPU_buffer_draw_elements(dm->drawObject->triangles, GL_TRIANGLES,
+ dm->drawObject->materials[i].start, totalelem);
+ }
+ }
+ glShadeModel(GL_FLAT);
+ GPU_buffers_unbind();
+
+ if (findex_buffer)
+ GPU_buffer_free(findex_buffer);
+ return;
+
if (bmdm->vertexCos) {
short prev_mat_nr = -1;
diff --cc source/blender/gpu/intern/gpu_buffers.c
index d19b28e,3c44811..96ea244
--- a/source/blender/gpu/intern/gpu_buffers.c
+++ b/source/blender/gpu/intern/gpu_buffers.c
@@@ -80,23 -80,21 +80,23 @@@ static size_t gpu_buffer_size_from_type
const GPUBufferTypeSettings gpu_buffer_type_settings[] = {
/* vertex */
- {GL_ARRAY_BUFFER_ARB, 3},
+ {GL_ARRAY_BUFFER, 3},
/* normal */
- {GL_ARRAY_BUFFER_ARB, 4}, /* we copy 3 shorts per normal but we add a fourth for alignment */
+ {GL_ARRAY_BUFFER, 4}, /* we copy 3 shorts per normal but we add a fourth for alignment */
/* mcol */
- {GL_ARRAY_BUFFER_ARB, 3},
+ {GL_ARRAY_BUFFER, 3},
/* uv */
- {GL_ARRAY_BUFFER_ARB, 2},
+ {GL_ARRAY_BUFFER, 2},
/* uv for texpaint */
- {GL_ARRAY_BUFFER_ARB, 4},
+ {GL_ARRAY_BUFFER, 4},
/* edge */
- {GL_ELEMENT_ARRAY_BUFFER_ARB, 2},
+ {GL_ELEMENT_ARRAY_BUFFER, 2},
/* uv edge */
- {GL_ELEMENT_ARRAY_BUFFER_ARB, 4},
+ {GL_ELEMENT_ARRAY_BUFFER, 4},
/* triangles, 1 point since we are allocating from tottriangle points, which account for all points */
- {GL_ELEMENT_ARRAY_BUFFER_ARB, 1},
+ {GL_ELEMENT_ARRAY_BUFFER, 1},
+ /* editface colors */
- {GL_ARRAY_BUFFER_ARB, 4},
++ {GL_ARRAY_BUFFER, 4},
};
#define MAX_GPU_ATTRIB_DATA 32
More information about the Bf-blender-cvs
mailing list