[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