[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49546] branches/soc-2012-swiss_cheese/ source/gameengine/Rasterizer: Patch from Daniel Stokes to fix bugs when using VBOs and a mesh gets split across different material buckets .

Mitchell Stokes mogurijin at gmail.com
Sat Aug 4 01:45:47 CEST 2012


Revision: 49546
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49546
Author:   moguri
Date:     2012-08-03 23:45:47 +0000 (Fri, 03 Aug 2012)
Log Message:
-----------
Patch from Daniel Stokes to fix bugs when using VBOs and a mesh gets split across different material buckets.

Modified Paths:
--------------
    branches/soc-2012-swiss_cheese/source/gameengine/Rasterizer/RAS_BucketManager.cpp
    branches/soc-2012-swiss_cheese/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp

Modified: branches/soc-2012-swiss_cheese/source/gameengine/Rasterizer/RAS_BucketManager.cpp
===================================================================
--- branches/soc-2012-swiss_cheese/source/gameengine/Rasterizer/RAS_BucketManager.cpp	2012-08-03 23:44:50 UTC (rev 49545)
+++ branches/soc-2012-swiss_cheese/source/gameengine/Rasterizer/RAS_BucketManager.cpp	2012-08-03 23:45:47 UTC (rev 49546)
@@ -233,8 +233,26 @@
 	rasty->ClearCachingInfo();
 
 	RenderSolidBuckets(cameratrans, rasty, rendertools);	
-	RenderAlphaBuckets(cameratrans, rasty, rendertools);	
+	RenderAlphaBuckets(cameratrans, rasty, rendertools);
 
+	/* All meshes should be up to date now */
+	/* Don't do this while processing buckets because some meshes are split between buckets */
+	BucketList::iterator bit;
+	list<RAS_MeshSlot>::iterator mit;
+	for (bit = m_SolidBuckets.begin(); bit != m_SolidBuckets.end(); ++bit) {
+		RAS_MaterialBucket* bucket = *bit;
+		for (mit = (*bit)->msBegin(); mit != (*bit)->msEnd(); ++mit) {
+			mit->m_mesh->SetMeshModified(false);
+		}
+	}
+	for (bit = m_AlphaBuckets.begin(); bit != m_AlphaBuckets.end(); ++bit) {
+		RAS_MaterialBucket* bucket = *bit;
+		for (mit = (*bit)->msBegin(); mit != (*bit)->msEnd(); ++mit) {
+			mit->m_mesh->SetMeshModified(false);
+		}
+	}
+	
+
 	rendertools->SetClientObject(rasty, NULL);
 }
 

Modified: branches/soc-2012-swiss_cheese/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
===================================================================
--- branches/soc-2012-swiss_cheese/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp	2012-08-03 23:44:50 UTC (rev 49545)
+++ branches/soc-2012-swiss_cheese/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp	2012-08-03 23:45:47 UTC (rev 49546)
@@ -651,9 +651,6 @@
 	else
 		rasty->IndexPrimitives(ms);
 
-
-	ms.m_mesh->SetMeshModified(false);
-
 	rendertools->PopMatrix();
 }
 




More information about the Bf-blender-cvs mailing list