[Bf-blender-cvs] [a5e3c4f] temp-derivedmesh-looptri: Port UV display to new design. As plus, we can remove the extra buffer completely

Antony Riakiotakis noreply at git.blender.org
Wed Jul 15 20:18:37 CEST 2015


Commit: a5e3c4f04ce0b36ed78c88a221ccca5a3d2bcd50
Author: Antony Riakiotakis
Date:   Wed Jul 15 20:17:55 2015 +0200
Branches: temp-derivedmesh-looptri
https://developer.blender.org/rBa5e3c4f04ce0b36ed78c88a221ccca5a3d2bcd50

Port UV display to new design. As plus, we can remove the extra buffer completely

===================================================================

M	source/blender/blenkernel/intern/cdderivedmesh.c
M	source/blender/gpu/GPU_buffers.h
M	source/blender/gpu/intern/gpu_buffers.c

===================================================================

diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index bf1a9cf..e5bdb2b 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -371,14 +371,14 @@ static void cdDM_drawUVEdges(DerivedMesh *dm)
 
 	if (lt) {
 		const MPoly *mpoly = cddm->mpoly;
+		const int totpoly = dm->getNumPolys(dm);
 		int prevstart = 0;
 		bool prevdraw = true;
 		int curpos = 0;
 		
 		GPU_uvedge_setup(dm);
-		for (i = 0; i < dm->looptris.num; i++, lt++) {
-			const MPoly *mp = &mpoly[lt->poly];
-			const bool draw = (mp->flag & ME_HIDE) == 0;
+		for (i = 0; i < totpoly; i++, mpoly++) {
+			const bool draw = (mpoly->flag & ME_HIDE) == 0;
 
 			if (prevdraw != draw) {
 				if (prevdraw && (curpos != prevstart)) {
@@ -387,7 +387,7 @@ static void cdDM_drawUVEdges(DerivedMesh *dm)
 				prevstart = curpos;
 			}
 
-			curpos += 6;
+			curpos += mpoly->totloop;
 			prevdraw = draw;
 		}
 		if (prevdraw && (curpos != prevstart)) {
@@ -1505,37 +1505,6 @@ static void cdDM_buffer_copy_edge(
 	dm->drawObject->tot_edge_drawn = tot;
 }
 
-static void cdDM_buffer_copy_uvedge(
-        DerivedMesh *dm, float *varray)
-{
-	int i, tottri;
-	int start;
-	const MLoopTri *lt;
-	const MLoopUV *mloopuv;
-
-	if ((mloopuv = DM_get_loop_data_layer(dm, CD_MLOOPUV)) == NULL) {
-		return;
-	}
-
-	lt = dm->looptris.array;
-	tottri = dm->looptris.num;
-	start = 0;
-
-	for (i = 0; i < tottri; i++, lt++) {
-		const unsigned int *ltri = lt->tri;
-
-		copy_v2_v2(&varray[start + 0], mloopuv[ltri[0]].uv);
-		copy_v2_v2(&varray[start + 2], mloopuv[ltri[1]].uv);
-
-		copy_v2_v2(&varray[start + 4], mloopuv[ltri[1]].uv);
-		copy_v2_v2(&varray[start + 6], mloopuv[ltri[2]].uv);
-
-		copy_v2_v2(&varray[start + 8], mloopuv[ltri[2]].uv);
-		copy_v2_v2(&varray[start + 10], mloopuv[ltri[0]].uv);
-		start += 12;
-	}
-}
-
 static void cdDM_copy_gpu_data(
         DerivedMesh *dm, int type, void *varray_p,
         const int *mat_orig_to_new, const void *user_data)
@@ -1560,9 +1529,6 @@ static void cdDM_copy_gpu_data(
 		case GPU_BUFFER_EDGE:
 			cdDM_buffer_copy_edge(dm, (unsigned int *)varray_p);
 			break;
-		case GPU_BUFFER_UVEDGE:
-			cdDM_buffer_copy_uvedge(dm, (float *)varray_p);
-			break;
 		case GPU_BUFFER_TRIANGLES:
 			cdDM_buffer_copy_triangles(dm, (unsigned int *)varray_p, mat_orig_to_new);
 			break;
diff --git a/source/blender/gpu/GPU_buffers.h b/source/blender/gpu/GPU_buffers.h
index 3a8b71c..0c76b1f 100644
--- a/source/blender/gpu/GPU_buffers.h
+++ b/source/blender/gpu/GPU_buffers.h
@@ -160,7 +160,6 @@ typedef enum {
 	GPU_BUFFER_UV,
 	GPU_BUFFER_UV_TEXPAINT,
 	GPU_BUFFER_EDGE,
-	GPU_BUFFER_UVEDGE,
 	GPU_BUFFER_TRIANGLES
 } GPUBufferType;
 
diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c
index 370a11f..ac304be 100644
--- a/source/blender/gpu/intern/gpu_buffers.c
+++ b/source/blender/gpu/intern/gpu_buffers.c
@@ -575,8 +575,6 @@ static GPUBuffer **gpu_drawobject_buffer_from_type(GPUDrawObject *gdo, GPUBuffer
 			return &gdo->uv_tex;
 		case GPU_BUFFER_EDGE:
 			return &gdo->edges;
-		case GPU_BUFFER_UVEDGE:
-			return &gdo->uvedges;
 		case GPU_BUFFER_TRIANGLES:
 			return &gdo->triangles;
 		default:
@@ -600,13 +598,6 @@ static int gpu_buffer_size_from_type(DerivedMesh *dm, GPUBufferType type)
 			return sizeof(float) * gpu_buffer_type_settings[type].num_components * dm->drawObject->tot_triangle_point;
 		case GPU_BUFFER_EDGE:
 			return sizeof(int) * gpu_buffer_type_settings[type].num_components * dm->drawObject->totedge;
-		case GPU_BUFFER_UVEDGE:
-			/* each face gets 3 points, 3 edges per triangle, and
-			 * each edge has its own, non-shared coords, so each
-			 * tri corner needs minimum of 4 floats, quads used
-			 * less so here we can over allocate and assume all
-			 * tris. */
-			return sizeof(int) * gpu_buffer_type_settings[type].num_components * dm->drawObject->tot_triangle_point;
 		case GPU_BUFFER_TRIANGLES:
 			return sizeof(int) * gpu_buffer_type_settings[type].num_components * dm->drawObject->tot_triangle_point;
 		default:
@@ -807,7 +798,7 @@ void GPU_edge_setup(DerivedMesh *dm)
 
 void GPU_uvedge_setup(DerivedMesh *dm)
 {
-	if (!gpu_buffer_setup_common(dm, GPU_BUFFER_UVEDGE))
+	if (!gpu_buffer_setup_common(dm, GPU_BUFFER_UV))
 		return;
 
 	glEnableClientState(GL_VERTEX_ARRAY);




More information about the Bf-blender-cvs mailing list