[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27704] branches/bge_eigen2/source/ gameengine: Some work on the rasterizer.

Mitchell Stokes mogurijin at gmail.com
Wed Mar 24 04:23:03 CET 2010


Revision: 27704
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27704
Author:   moguri
Date:     2010-03-24 04:23:00 +0100 (Wed, 24 Mar 2010)

Log Message:
-----------
Some work on the rasterizer. It's still not compiling, but it's using BGE_* functions now.

Also, I've disabled vectorization for Eigen2 at the moment. First we get things ported and working again, then worry about getting the vectorization working.

Modified Paths:
--------------
    branches/bge_eigen2/source/gameengine/Expressions/KX_EigenMatrixAddons.h
    branches/bge_eigen2/source/gameengine/Expressions/KX_EigenTransformAddons.h
    branches/bge_eigen2/source/gameengine/Expressions/KX_EigenTypes.h
    branches/bge_eigen2/source/gameengine/Rasterizer/CMakeLists.txt
    branches/bge_eigen2/source/gameengine/Rasterizer/RAS_BucketManager.cpp
    branches/bge_eigen2/source/gameengine/Rasterizer/RAS_BucketManager.h
    branches/bge_eigen2/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp
    branches/bge_eigen2/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h
    branches/bge_eigen2/source/gameengine/Rasterizer/RAS_IRasterizer.h
    branches/bge_eigen2/source/gameengine/Rasterizer/RAS_IRenderTools.h
    branches/bge_eigen2/source/gameengine/Rasterizer/RAS_LightObject.h
    branches/bge_eigen2/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
    branches/bge_eigen2/source/gameengine/Rasterizer/RAS_MaterialBucket.h
    branches/bge_eigen2/source/gameengine/Rasterizer/RAS_MeshObject.cpp
    branches/bge_eigen2/source/gameengine/Rasterizer/RAS_MeshObject.h
    branches/bge_eigen2/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/CMakeLists.txt
    branches/bge_eigen2/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
    branches/bge_eigen2/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
    branches/bge_eigen2/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp
    branches/bge_eigen2/source/gameengine/Rasterizer/RAS_TexMatrix.h
    branches/bge_eigen2/source/gameengine/Rasterizer/RAS_TexVert.cpp
    branches/bge_eigen2/source/gameengine/Rasterizer/RAS_TexVert.h
    branches/bge_eigen2/source/gameengine/Rasterizer/RAS_texmatrix.cpp

Modified: branches/bge_eigen2/source/gameengine/Expressions/KX_EigenMatrixAddons.h
===================================================================
--- branches/bge_eigen2/source/gameengine/Expressions/KX_EigenMatrixAddons.h	2010-03-23 23:36:24 UTC (rev 27703)
+++ branches/bge_eigen2/source/gameengine/Expressions/KX_EigenMatrixAddons.h	2010-03-24 03:23:00 UTC (rev 27704)
@@ -3,7 +3,7 @@
 	// XXX - stub
 }
 
-inline void getValue(Scalar *m) const
+inline void getValue(_Scalar *m) const
 {
 	// XXX -stub
 }

Modified: branches/bge_eigen2/source/gameengine/Expressions/KX_EigenTransformAddons.h
===================================================================
--- branches/bge_eigen2/source/gameengine/Expressions/KX_EigenTransformAddons.h	2010-03-23 23:36:24 UTC (rev 27703)
+++ branches/bge_eigen2/source/gameengine/Expressions/KX_EigenTransformAddons.h	2010-03-24 03:23:00 UTC (rev 27704)
@@ -1,5 +1,17 @@
-inline Eigen::Matrix<float, 3, 1> operator()(const Eigen::Matrix<float, 3, 1>) const
+inline Eigen::Matrix<_Scalar, 3, 1> operator()(const Eigen::Matrix<_Scalar, 3, 1>) const
 {
 	// XXX - stub
-	return Eigen::Matrix<float, 3, 1>(0, 0, 0);
+	return Eigen::Matrix<_Scalar, 3, 1>(0, 0, 0);
+}
+
+inline Eigen::Matrix<_Scalar, 3, 3>& getBasis()
+{
+	// XXX - stub
+	return Eigen::Matrix<_Scalar, 3, 3>::Identity();
+}
+
+inline const Eigen::Matrix<_Scalar, 3, 3>& getBasis() const
+{
+	// XXX - stub
+	return Eigen::Matrix<_Scalar, 3, 3>::Identity();
 }
\ No newline at end of file

Modified: branches/bge_eigen2/source/gameengine/Expressions/KX_EigenTypes.h
===================================================================
--- branches/bge_eigen2/source/gameengine/Expressions/KX_EigenTypes.h	2010-03-23 23:36:24 UTC (rev 27703)
+++ branches/bge_eigen2/source/gameengine/Expressions/KX_EigenTypes.h	2010-03-24 03:23:00 UTC (rev 27704)
@@ -16,6 +16,9 @@
 // Add some functions to Eigen::Matrix
 #define EIGEN_MATRIX_PLUGIN "KX_EigenMatrixAddons.h"
 
+// Disable vectorization/alignment for now and deal with alignment issues later
+#define EIGEN_DONT_ALIGN
+
 #include <Eigen/Core>
 #include <Eigen/Geometry>
 #include "KX_AlignedObjectArray.h"
@@ -30,7 +33,10 @@
 typedef Eigen::Matrix<BGE_Scalar, 4, 1> BGE_Vector4;
 
 typedef Eigen::Matrix<BGE_Scalar, 3, 3> BGE_Matrix3;
-typedef Eigen::Matrix<BGE_Scalar, 4, 4> BGE_Matrix4;
+//typedef Eigen::Matrix<BGE_Scalar, 4, 4> BGE_Matrix4;
+#define BGE_Matrix4 Eigen::Matrix<BGE_Scalar, 4, 4>
+#define BGE_CmMatrix4 BGE_Matrix4
+//typedef Eigen::Matrix<BGE_Scalar, 4, 4, Eigen::ColMajor> BGE_CmMatrix4;
 
 typedef Eigen::Transform<BGE_Scalar, 3> BGE_Transform;
 
@@ -50,9 +56,12 @@
  
 inline BGE_Scalar BGE_abs(BGE_Scalar x) { return fabs(x); }
 
-inline bool      BGE_fuzzyZero(BGE_Scalar x) { return BGE_abs(x) < BGE_EPSILON; }
-inline bool      BGE_fuzzyZero2(BGE_Scalar x) { return BGE_abs(x) < BGE_EPSILON2; }
+inline bool BGE_fuzzyZero(BGE_Scalar x) { return BGE_abs(x) < BGE_EPSILON; }
+inline bool BGE_fuzzyZero2(BGE_Scalar x) { return BGE_abs(x) < BGE_EPSILON2; }
 
+inline bool BGE_fuzzyEqual(BGE_Vector3, BGE_Vector3) { return false; } // XXX -stub
+inline bool BGE_fuzzyEqual(BGE_Vector2, BGE_Vector2) { return false; }	// XXX -stub
+
 inline BGE_Scalar BGE_radians(BGE_Scalar x) { 
     return x * BGE_RADS_PER_DEG;
 }

Modified: branches/bge_eigen2/source/gameengine/Rasterizer/CMakeLists.txt
===================================================================
--- branches/bge_eigen2/source/gameengine/Rasterizer/CMakeLists.txt	2010-03-23 23:36:24 UTC (rev 27703)
+++ branches/bge_eigen2/source/gameengine/Rasterizer/CMakeLists.txt	2010-03-24 03:23:00 UTC (rev 27704)
@@ -30,6 +30,7 @@
 	.
 	../../../source/kernel/gen_system
 	../../../source/blender/makesdna
+	../../../source/gameengine/Expressions
 	../../../source/gameengine/SceneGraph
 	../../../source/gameengine/Ketsji
 	../../../intern/string
@@ -37,7 +38,6 @@
 	../../../extern/glew/include
 	../../../extern/Eigen2
 	../../../intern/guardedalloc
-	../Expressions
 	${PYTHON_INC}
 )
 

Modified: branches/bge_eigen2/source/gameengine/Rasterizer/RAS_BucketManager.cpp
===================================================================
--- branches/bge_eigen2/source/gameengine/Rasterizer/RAS_BucketManager.cpp	2010-03-23 23:36:24 UTC (rev 27703)
+++ branches/bge_eigen2/source/gameengine/Rasterizer/RAS_BucketManager.cpp	2010-03-24 03:23:00 UTC (rev 27704)
@@ -32,6 +32,7 @@
 #endif
 
 #include "GEN_Map.h"
+#include "KX_EigenTypes.h"
 #include "RAS_MaterialBucket.h"
 #include "STR_HashedString.h"
 #include "RAS_MeshObject.h"
@@ -48,18 +49,18 @@
 struct RAS_BucketManager::sortedmeshslot
 {
 public:
-	MT_Scalar m_z;					/* depth */
+	BGE_Scalar m_z;					/* depth */
 	RAS_MeshSlot *m_ms;				/* mesh slot */
 	RAS_MaterialBucket *m_bucket;	/* buck mesh slot came from */
 
 	sortedmeshslot() {}
 
-	void set(RAS_MeshSlot *ms, RAS_MaterialBucket *bucket, const MT_Vector3& pnorm)
+	void set(RAS_MeshSlot *ms, RAS_MaterialBucket *bucket, const BGE_Vector3& pnorm)
 	{
 		// would be good to use the actual bounding box center instead
-		MT_Point3 pos(ms->m_OpenGLMatrix[12], ms->m_OpenGLMatrix[13], ms->m_OpenGLMatrix[14]);
+		BGE_Vector3 pos(ms->m_OpenGLMatrix[12], ms->m_OpenGLMatrix[13], ms->m_OpenGLMatrix[14]);
 
-		m_z = MT_dot(pnorm, pos);
+		m_z = pnorm.dot(pos);//BGE_dot(pnorm, pos);
 		m_ms = ms;
 		m_bucket = bucket;
 	}
@@ -102,7 +103,7 @@
 	m_AlphaBuckets.clear();
 }
 
-void RAS_BucketManager::OrderBuckets(const MT_Transform& cameratrans, BucketList& buckets, vector<sortedmeshslot>& slots, bool alpha)
+void RAS_BucketManager::OrderBuckets(const BGE_Transform& cameratrans, BucketList& buckets, vector<sortedmeshslot>& slots, bool alpha)
 {
 	BucketList::iterator bit;
 	list<RAS_MeshSlot>::iterator mit;
@@ -110,7 +111,7 @@
 
 	/* Camera's near plane equation: pnorm.dot(point) + pval,
 	 * but we leave out pval since it's constant anyway */
-	const MT_Vector3 pnorm(cameratrans.getBasis()[2]);
+	const BGE_Vector3 pnorm(cameratrans.getBasis()[2]);
 
 	for (bit = buckets.begin(); bit != buckets.end(); ++bit)
 	{
@@ -138,7 +139,7 @@
 }
 
 void RAS_BucketManager::RenderAlphaBuckets(
-	const MT_Transform& cameratrans, RAS_IRasterizer* rasty, RAS_IRenderTools* rendertools)
+	const BGE_Transform& cameratrans, RAS_IRasterizer* rasty, RAS_IRenderTools* rendertools)
 {
 	vector<sortedmeshslot> slots;
 	vector<sortedmeshslot>::iterator sit;
@@ -165,7 +166,7 @@
 }
 
 void RAS_BucketManager::RenderSolidBuckets(
-	const MT_Transform& cameratrans, RAS_IRasterizer* rasty, RAS_IRenderTools* rendertools)
+	const BGE_Transform& cameratrans, RAS_IRasterizer* rasty, RAS_IRenderTools* rendertools)
 {
 	BucketList::iterator bit;
 
@@ -223,7 +224,7 @@
 }
 
 void RAS_BucketManager::Renderbuckets(
-	const MT_Transform& cameratrans, RAS_IRasterizer* rasty, RAS_IRenderTools* rendertools)
+	const BGE_Transform& cameratrans, RAS_IRasterizer* rasty, RAS_IRenderTools* rendertools)
 {
 	/* beginning each frame, clear (texture/material) caching information */
 	rasty->ClearCachingInfo();
@@ -259,7 +260,7 @@
 	return bucket;
 }
 
-void RAS_BucketManager::OptimizeBuckets(MT_Scalar distance)
+void RAS_BucketManager::OptimizeBuckets(BGE_Scalar distance)
 {
 	BucketList::iterator bit;
 	

Modified: branches/bge_eigen2/source/gameengine/Rasterizer/RAS_BucketManager.h
===================================================================
--- branches/bge_eigen2/source/gameengine/Rasterizer/RAS_BucketManager.h	2010-03-23 23:36:24 UTC (rev 27703)
+++ branches/bge_eigen2/source/gameengine/Rasterizer/RAS_BucketManager.h	2010-03-24 03:23:00 UTC (rev 27704)
@@ -31,7 +31,7 @@
 #ifndef __RAS_BUCKETMANAGER
 #define __RAS_BUCKETMANAGER
 
-#include "MT_Transform.h"
+#include "KX_EigenTypes.h"
 #include "RAS_MaterialBucket.h"
 #include "GEN_Map.h"
 
@@ -51,11 +51,11 @@
 	RAS_BucketManager();
 	virtual ~RAS_BucketManager();
 
-	void Renderbuckets(const MT_Transform & cameratrans,
+	void Renderbuckets(const BGE_Transform & cameratrans,
 		RAS_IRasterizer* rasty, RAS_IRenderTools* rendertools);
 
 	RAS_MaterialBucket* FindBucket(RAS_IPolyMaterial * material, bool &bucketCreated);
-	void OptimizeBuckets(MT_Scalar distance);
+	void OptimizeBuckets(BGE_Scalar distance);
 	
 	void ReleaseDisplayLists(RAS_IPolyMaterial * material = NULL);
 	void ReleaseMaterials(RAS_IPolyMaterial * material = NULL);
@@ -76,11 +76,11 @@
 
 
 private:
-	void OrderBuckets(const MT_Transform& cameratrans, BucketList& buckets, vector<sortedmeshslot>& slots, bool alpha);
+	void OrderBuckets(const BGE_Transform& cameratrans, BucketList& buckets, vector<sortedmeshslot>& slots, bool alpha);
 
-	void RenderSolidBuckets(const MT_Transform& cameratrans, 
+	void RenderSolidBuckets(const BGE_Transform& cameratrans, 
 		RAS_IRasterizer* rasty, RAS_IRenderTools* rendertools);
-	void RenderAlphaBuckets(const MT_Transform& cameratrans, 
+	void RenderAlphaBuckets(const BGE_Transform& cameratrans, 
 		RAS_IRasterizer* rasty, RAS_IRenderTools* rendertools);
 
 #ifdef WITH_CXX_GUARDEDALLOC

Modified: branches/bge_eigen2/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp
===================================================================
--- branches/bge_eigen2/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp	2010-03-23 23:36:24 UTC (rev 27703)
+++ branches/bge_eigen2/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp	2010-03-24 03:23:00 UTC (rev 27704)
@@ -62,9 +62,9 @@
 	m_flag = 0;
 	m_multimode = 0;
 	m_shininess = 35.0;
-	m_specular.setValue(0.5,0.5,0.5);
+	m_specular = BGE_Vector3(0.5,0.5,0.5);
 	m_specularity = 1.0;
-	m_diffuse.setValue(0.5,0.5,0.5);
+	m_diffuse = BGE_Vector3(0.5,0.5,0.5);
 }
 
 RAS_IPolyMaterial::RAS_IPolyMaterial() 
@@ -83,9 +83,9 @@
 		m_multimode(0)
 {
 	m_shininess = 35.0;
-	m_specular = MT_Vector3(0.5,0.5,0.5);
+	m_specular = BGE_Vector3(0.5,0.5,0.5);
 	m_specularity = 1.0;
-	m_diffuse = MT_Vector3(0.5,0.5,0.5);
+	m_diffuse = BGE_Vector3(0.5,0.5,0.5);
 }
 
 RAS_IPolyMaterial::RAS_IPolyMaterial(const STR_String& texname,
@@ -113,9 +113,9 @@
 		m_multimode(0)
 {
 	m_shininess = 35.0;
-	m_specular = MT_Vector3(0.5,0.5,0.5);
+	m_specular = BGE_Vector3(0.5,0.5,0.5);
 	m_specularity = 1.0;
-	m_diffuse = MT_Vector3(0.5,0.5,0.5);
+	m_diffuse = BGE_Vector3(0.5,0.5,0.5);
 }
 
 

Modified: branches/bge_eigen2/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h
===================================================================
--- branches/bge_eigen2/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h	2010-03-23 23:36:24 UTC (rev 27703)

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list