[Bf-blender-cvs] [955d64c] gooseberry: Merge branch 'master' into gooseberry

Antony Riakiotakis noreply at git.blender.org
Wed Jun 17 13:59:19 CEST 2015


Commit: 955d64cd2bf6f85b3f54295a1b0611d0f9ab7af6
Author: Antony Riakiotakis
Date:   Wed Jun 17 13:59:04 2015 +0200
Branches: gooseberry
https://developer.blender.org/rB955d64cd2bf6f85b3f54295a1b0611d0f9ab7af6

Merge branch 'master' into gooseberry

Conflicts:
	source/blender/blenkernel/intern/cdderivedmesh.c
	source/blender/gpu/GPU_buffers.h
	source/blender/physics/intern/BPH_mass_spring.cpp

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



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

diff --cc source/blender/blenkernel/intern/cdderivedmesh.c
index 8660f12,c0489a9..55f9240
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@@ -392,12 -392,7 +392,7 @@@ static void cdDM_drawUVEdges(DerivedMes
  static void cdDM_drawEdges(DerivedMesh *dm, bool drawLooseEdges, bool drawAllEdges)
  {
  	CDDerivedMesh *cddm = (CDDerivedMesh *) dm;
- 	MEdge *medge = cddm->medge;
- 	int i;
- 	int prevstart = 0;
- 	bool prevdraw = true;
- 	bool draw = true;
--	
++
  	if (cddm->pbvh && cddm->pbvh_draw &&
  	    BKE_pbvh_type(cddm->pbvh) == PBVH_BMESH)
  	{
diff --cc source/blender/gpu/GPU_buffers.h
index cda7bff,a8630d0..4c9b8c0
--- a/source/blender/gpu/GPU_buffers.h
+++ b/source/blender/gpu/GPU_buffers.h
@@@ -118,9 -114,9 +118,13 @@@ typedef struct GPUDrawObject 
  	int totvert;
  	int totedge;
  
 +	int totfacemaps;    /* total facemaps */
 +	int *facemap_start; /* beginning of facemap */
 +	int *facemap_count; /* elements per facemap */
++
+ 	int loose_edge_offset;
+ 	int tot_loose_edge_drawn;
+ 	int tot_edge_drawn;
  } GPUDrawObject;
  
  /* used for GLSL materials */
diff --cc source/blender/gpu/intern/gpu_buffers.c
index 8554f2c,62843f0..8b4e16c
--- a/source/blender/gpu/intern/gpu_buffers.c
+++ b/source/blender/gpu/intern/gpu_buffers.c
@@@ -984,19 -940,62 +984,64 @@@ static void GPU_buffer_copy_mcol(Derive
  
  static void GPU_buffer_copy_edge(DerivedMesh *dm, float *varray_, int *UNUSED(index), int *UNUSED(mat_orig_to_new), void *UNUSED(user))
  {
- 	MEdge *medge;
+ 	MEdge *medge, *medge_base;
  	unsigned int *varray = (unsigned int *)varray_;
- 	int i, totedge;
+ 	int i, totedge, iloose, inorm, iloosehidden, inormhidden;
+ 	int tot_loose_hidden = 0, tot_loose = 0;
+ 	int tot_hidden = 0, tot = 0;
  
- 	medge = dm->getEdgeArray(dm);
+ 	medge_base = medge = dm->getEdgeArray(dm);
  	totedge = dm->getNumEdges(dm);
 +	
 +	/* two passes, one to count number of faces per facemap, one to actually copy the data */
  
  	for (i = 0; i < totedge; i++, medge++) {
- 		varray[i * 2] = dm->drawObject->vert_points[medge->v1].point_index;
- 		varray[i * 2 + 1] = dm->drawObject->vert_points[medge->v2].point_index;
+ 		if (medge->flag & ME_EDGEDRAW) {
+ 			if (medge->flag & ME_LOOSEEDGE) tot_loose++;
+ 			else tot++;
+ 		}
+ 		else {
+ 			if (medge->flag & ME_LOOSEEDGE) tot_loose_hidden++;
+ 			else tot_hidden++;
+ 		}
  	}
+ 
+ 	inorm = 0;
+ 	inormhidden = tot;
+ 	iloose = tot + tot_hidden;
+ 	iloosehidden = iloose + tot_loose;
+ 
+ 	medge = medge_base;
+ 	for (i = 0; i < totedge; i++, medge++) {
+ 		if (medge->flag & ME_EDGEDRAW) {
+ 			if (medge->flag & ME_LOOSEEDGE) {
+ 				varray[iloose * 2] = dm->drawObject->vert_points[medge->v1].point_index;
+ 				varray[iloose * 2 + 1] = dm->drawObject->vert_points[medge->v2].point_index;
+ 				iloose++;
+ 			}
+ 			else {
+ 				varray[inorm * 2] = dm->drawObject->vert_points[medge->v1].point_index;
+ 				varray[inorm * 2 + 1] = dm->drawObject->vert_points[medge->v2].point_index;
+ 				inorm++;
+ 			}
+ 		}
+ 		else {
+ 			if (medge->flag & ME_LOOSEEDGE) {
+ 				varray[iloosehidden * 2] = dm->drawObject->vert_points[medge->v1].point_index;
+ 				varray[iloosehidden * 2 + 1] = dm->drawObject->vert_points[medge->v2].point_index;
+ 				iloosehidden++;
+ 			}
+ 			else {
+ 				varray[inormhidden * 2] = dm->drawObject->vert_points[medge->v1].point_index;
+ 				varray[inormhidden * 2 + 1] = dm->drawObject->vert_points[medge->v2].point_index;
+ 				inormhidden++;
+ 			}
+ 		}
+ 	}
+ 
+ 	dm->drawObject->tot_loose_edge_drawn = tot_loose;
+ 	dm->drawObject->loose_edge_offset = tot + tot_hidden;
+ 	dm->drawObject->tot_edge_drawn = tot;
  }
  
  static void GPU_buffer_copy_uvedge(DerivedMesh *dm, float *varray, int *UNUSED(index), int *UNUSED(mat_orig_to_new), void *UNUSED(user))




More information about the Bf-blender-cvs mailing list