[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60340] branches/soc-2013-viewport_fx/ source/blender: adding hooks for select mode ( incomplete so I can change locations)
Jason Wilkins
Jason.A.Wilkins at gmail.com
Mon Sep 23 19:35:04 CEST 2013
Revision: 60340
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60340
Author: jwilkins
Date: 2013-09-23 17:35:04 +0000 (Mon, 23 Sep 2013)
Log Message:
-----------
adding hooks for select mode (incomplete so I can change locations)
Modified Paths:
--------------
branches/soc-2013-viewport_fx/source/blender/blenkernel/intern/cdderivedmesh.c
branches/soc-2013-viewport_fx/source/blender/editors/space_view3d/view3d_view.c
branches/soc-2013-viewport_fx/source/blender/editors/uvedit/uvedit_smart_stitch.c
branches/soc-2013-viewport_fx/source/blender/gpu/CMakeLists.txt
branches/soc-2013-viewport_fx/source/blender/gpu/GPU_aspect.h
branches/soc-2013-viewport_fx/source/blender/gpu/GPU_deprecated.h
branches/soc-2013-viewport_fx/source/blender/gpu/GPU_select.h
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_aspect.c
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_blender_aspect.c
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_buffers.c
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_immediate_gl.c
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_init_exit.c
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_select.c
Added Paths:
-----------
branches/soc-2013-viewport_fx/source/blender/gpu/intern/gpu_select_intern.h
Modified: branches/soc-2013-viewport_fx/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- branches/soc-2013-viewport_fx/source/blender/blenkernel/intern/cdderivedmesh.c 2013-09-23 16:33:39 UTC (rev 60339)
+++ branches/soc-2013-viewport_fx/source/blender/blenkernel/intern/cdderivedmesh.c 2013-09-23 17:35:04 UTC (rev 60340)
@@ -352,14 +352,15 @@
else { /* use OpenGL VBOs or Vertex Arrays instead for better, faster rendering */
GPU_vertex_setup(dm);
- GPU_commit_aspect();
-
- if (!GPU_buffer_legacy(dm)) {
- if (dm->drawObject->tot_triangle_point)
- glDrawArrays(GL_POINTS, 0, dm->drawObject->tot_triangle_point);
- else
- glDrawArrays(GL_POINTS, 0, dm->drawObject->tot_loose_point);
+ if (GPU_commit_aspect()) {
+ if (!GPU_buffer_legacy(dm)) {
+ if (dm->drawObject->tot_triangle_point)
+ glDrawArrays(GL_POINTS, 0, dm->drawObject->tot_triangle_point);
+ else
+ glDrawArrays(GL_POINTS, 0, dm->drawObject->tot_loose_point);
+ }
}
+
GPU_buffer_unbind();
}
}
@@ -405,35 +406,35 @@
GPU_uvedge_setup(dm);
- GPU_commit_aspect();
-
- if (!GPU_buffer_legacy(dm)) {
- for (i = 0; i < dm->numTessFaceData; i++, mf++) {
- if (!(mf->flag & ME_HIDE)) {
- draw = 1;
- }
- else {
- draw = 0;
- }
- if (prevdraw != draw) {
- if (prevdraw > 0 && (curpos - prevstart) > 0) {
- glDrawArrays(GL_LINES, prevstart, curpos - prevstart);
+ if (GPU_commit_aspect()) {
+ if (!GPU_buffer_legacy(dm)) {
+ for (i = 0; i < dm->numTessFaceData; i++, mf++) {
+ if (!(mf->flag & ME_HIDE)) {
+ draw = 1;
}
- prevstart = curpos;
+ else {
+ draw = 0;
+ }
+ if (prevdraw != draw) {
+ if (prevdraw > 0 && (curpos - prevstart) > 0) {
+ glDrawArrays(GL_LINES, prevstart, curpos - prevstart);
+ }
+ prevstart = curpos;
+ }
+ if (mf->v4) {
+ curpos += 8;
+ }
+ else {
+ curpos += 6;
+ }
+ prevdraw = draw;
}
- if (mf->v4) {
- curpos += 8;
+ if (prevdraw > 0 && (curpos - prevstart) > 0) {
+ glDrawArrays(GL_LINES, prevstart, curpos - prevstart);
}
- else {
- curpos += 6;
- }
- prevdraw = draw;
}
- if (prevdraw > 0 && (curpos - prevstart) > 0) {
- glDrawArrays(GL_LINES, prevstart, curpos - prevstart);
- }
+ GPU_buffer_unbind();
}
- GPU_buffer_unbind();
}
}
}
@@ -894,9 +895,8 @@
else
GPU_color_switch(0);
- GPU_commit_aspect();
-
- glDrawArrays(GL_TRIANGLES, first, count);
+ if (GPU_commit_aspect())
+ glDrawArrays(GL_TRIANGLES, first, count);
}
startFace = i + 1;
@@ -1109,9 +1109,8 @@
if (setDrawOptions == NULL) {
/* just draw the entire face array */
- GPU_commit_aspect();
-
- glDrawArrays(GL_TRIANGLES, 0, (tottri) * 3);
+ if (GPU_commit_aspect())
+ glDrawArrays(GL_TRIANGLES, 0, (tottri) * 3);
}
else {
/* we need to check if the next material changes */
@@ -1164,8 +1163,8 @@
if (count)
{
- GPU_commit_aspect();
- glDrawArrays(GL_TRIANGLES, first, count);
+ if (GPU_commit_aspect())
+ glDrawArrays(GL_TRIANGLES, first, count);
}
prevstart = i + 1;
@@ -1450,178 +1449,178 @@
GPU_normal_setup(dm);
if (!GPU_buffer_legacy(dm)) {
- GPU_commit_aspect();
+ if (GPU_commit_aspect()) {
+ for (i = 0; i < dm->drawObject->tot_triangle_point / 3; i++) {
- for (i = 0; i < dm->drawObject->tot_triangle_point / 3; i++) {
+ a = dm->drawObject->triangle_to_mface[i];
- a = dm->drawObject->triangle_to_mface[i];
+ mface = mf + a;
+ new_matnr = mface->mat_nr + 1;
- mface = mf + a;
- new_matnr = mface->mat_nr + 1;
+ if (new_matnr != matnr) {
+ numfaces = curface - start;
+ if (numfaces > 0) {
- if (new_matnr != matnr) {
- numfaces = curface - start;
- if (numfaces > 0) {
+ if (do_draw) {
- if (do_draw) {
+ if (numdata != 0) {
- if (numdata != 0) {
+ GPU_buffer_unlock(buffer);
- GPU_buffer_unlock(buffer);
+ GPU_interleaved_attrib_setup(buffer, datatypes, numdata);
+ }
- GPU_interleaved_attrib_setup(buffer, datatypes, numdata);
- }
+ glDrawArrays(GL_TRIANGLES, start * 3, numfaces * 3);
- glDrawArrays(GL_TRIANGLES, start * 3, numfaces * 3);
+ if (numdata != 0) {
- if (numdata != 0) {
+ GPU_buffer_free(buffer);
- GPU_buffer_free(buffer);
+ buffer = NULL;
+ }
- buffer = NULL;
}
-
}
- }
- numdata = 0;
- start = curface;
- /* prevdraw = do_draw; */ /* UNUSED */
- do_draw = setMaterial(matnr = new_matnr, &gattribs);
- if (do_draw) {
- DM_vertex_attributes_from_gpu(dm, &gattribs, &attribs);
+ numdata = 0;
+ start = curface;
+ /* prevdraw = do_draw; */ /* UNUSED */
+ do_draw = setMaterial(matnr = new_matnr, &gattribs);
+ if (do_draw) {
+ DM_vertex_attributes_from_gpu(dm, &gattribs, &attribs);
- if (attribs.totorco) {
- datatypes[numdata].index = attribs.orco.gl_index;
- datatypes[numdata].size = 3;
- datatypes[numdata].type = GL_FLOAT;
- numdata++;
- }
- for (b = 0; b < attribs.tottface; b++) {
- datatypes[numdata].index = attribs.tface[b].gl_index;
- datatypes[numdata].size = 2;
- datatypes[numdata].type = GL_FLOAT;
- numdata++;
- }
- for (b = 0; b < attribs.totmcol; b++) {
- datatypes[numdata].index = attribs.mcol[b].gl_index;
- datatypes[numdata].size = 4;
- datatypes[numdata].type = GL_UNSIGNED_BYTE;
- numdata++;
- }
- if (attribs.tottang) {
- datatypes[numdata].index = attribs.tang.gl_index;
- datatypes[numdata].size = 4;
- datatypes[numdata].type = GL_FLOAT;
- numdata++;
- }
- if (numdata != 0) {
- elementsize = GPU_attrib_element_size(datatypes, numdata);
- buffer = GPU_buffer_alloc(elementsize * dm->drawObject->tot_triangle_point);
- if (buffer == NULL) {
- GPU_buffer_unbind();
- dm->drawObject->legacy = 1;
- return;
+ if (attribs.totorco) {
+ datatypes[numdata].index = attribs.orco.gl_index;
+ datatypes[numdata].size = 3;
+ datatypes[numdata].type = GL_FLOAT;
+ numdata++;
}
- varray = GPU_buffer_lock_stream(buffer);
- if (varray == NULL) {
- GPU_buffer_unbind();
- GPU_buffer_free(buffer);
- dm->drawObject->legacy = 1;
- return;
+ for (b = 0; b < attribs.tottface; b++) {
+ datatypes[numdata].index = attribs.tface[b].gl_index;
+ datatypes[numdata].size = 2;
+ datatypes[numdata].type = GL_FLOAT;
+ numdata++;
}
+ for (b = 0; b < attribs.totmcol; b++) {
+ datatypes[numdata].index = attribs.mcol[b].gl_index;
+ datatypes[numdata].size = 4;
+ datatypes[numdata].type = GL_UNSIGNED_BYTE;
+ numdata++;
+ }
+ if (attribs.tottang) {
+ datatypes[numdata].index = attribs.tang.gl_index;
+ datatypes[numdata].size = 4;
+ datatypes[numdata].type = GL_FLOAT;
+ numdata++;
+ }
+ if (numdata != 0) {
+ elementsize = GPU_attrib_element_size(datatypes, numdata);
+ buffer = GPU_buffer_alloc(elementsize * dm->drawObject->tot_triangle_point);
+ if (buffer == NULL) {
+ GPU_buffer_unbind();
+ dm->drawObject->legacy = 1;
+ return;
+ }
+ varray = GPU_buffer_lock_stream(buffer);
+ if (varray == NULL) {
+ GPU_buffer_unbind();
+ GPU_buffer_free(buffer);
+ dm->drawObject->legacy = 1;
+ return;
+ }
+ }
+ else {
+ /* if the buffer was set, don't use it again.
+ * prevdraw was assumed true but didnt run so set to false - [#21036] */
+ /* prevdraw = 0; */ /* UNUSED */
+ buffer = NULL;
+ }
}
- else {
- /* if the buffer was set, don't use it again.
- * prevdraw was assumed true but didnt run so set to false - [#21036] */
- /* prevdraw = 0; */ /* UNUSED */
- buffer = NULL;
- }
}
- }
- if (do_draw && numdata != 0) {
- offset = 0;
- if (attribs.totorco) {
- copy_v3_v3((float *)&varray[elementsize * curface * 3], (float *)attribs.orco.array[mface->v1]);
- copy_v3_v3((float *)&varray[elementsize * curface * 3 + elementsize], (float *)attribs.orco.array[mface->v2]);
- copy_v3_v3((float *)&varray[elementsize * curface * 3 + elementsize * 2], (float *)attribs.orco.array[mface->v3]);
- offset += sizeof(float) * 3;
- }
- for (b = 0; b < attribs.tottface; b++) {
- MTFace *tf = &attribs.tface[b].array[a];
- copy_v2_v2((float *)&varray[elementsize * curface * 3 + offset], tf->uv[0]);
- copy_v2_v2((float *)&varray[elementsize * curface * 3 + offset + elementsize], tf->uv[1]);
-
- copy_v2_v2((float *)&varray[elementsize * curface * 3 + offset + elementsize * 2], tf->uv[2]);
- offset += sizeof(float) * 2;
- }
- for (b = 0; b < attribs.totmcol; b++) {
- MCol *cp = &attribs.mcol[b].array[a * 4 + 0];
- GLubyte col[4];
- col[0] = cp->b; col[1] = cp->g; col[2] = cp->r; col[3] = cp->a;
- copy_v4_v4_char((char *)&varray[elementsize * curface * 3 + offset], (char *)col);
- cp = &attribs.mcol[b].array[a * 4 + 1];
- col[0] = cp->b; col[1] = cp->g; col[2] = cp->r; col[3] = cp->a;
- copy_v4_v4_char((char *)&varray[elementsize * curface * 3 + offset + elementsize], (char *)col);
- cp = &attribs.mcol[b].array[a * 4 + 2];
- col[0] = cp->b; col[1] = cp->g; col[2] = cp->r; col[3] = cp->a;
- copy_v4_v4_char((char *)&varray[elementsize * curface * 3 + offset + elementsize * 2], (char *)col);
- offset += sizeof(unsigned char) * 4;
- }
- if (attribs.tottang) {
- float *tang = attribs.tang.array[a * 4 + 0];
- copy_v4_v4((float *)&varray[elementsize * curface * 3 + offset], tang);
- tang = attribs.tang.array[a * 4 + 1];
- copy_v4_v4((float *)&varray[elementsize * curface * 3 + offset + elementsize], tang);
- tang = attribs.tang.array[a * 4 + 2];
- copy_v4_v4((float *)&varray[elementsize * curface * 3 + offset + elementsize * 2], tang);
- offset += sizeof(float) * 4;
- }
- (void)offset;
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list