Commit: 5c1f4beb639ba4ab6ab62a34b83d035d10d12afa
Author: Porteries Tristan
Date:   Sat Oct 31 12:34:40 2015 +0100
Branches: temp_bge_moto
https://developer.blender.org/rB5c1f4beb639ba4ab6ab62a34b83d035d10d12afa

BGE: Moto: Use float for MT_Scalar.

Test:
  4104 rotating spheres.
  Without moto modifications:
    Logic : 5.15 : 5%
    SceneGraph : 8.50 : 8%
    Rasterizer : 20.90 : 21%
  With:
    Logic : 5.00 : 4%
    SceneGraph : 8.00 : 8%
    Rasterizer : 20.25 : 20%

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

M       intern/moto/include/MT_Scalar.h
M       source/gameengine/Ketsji/KX_FontObject.cpp
M       source/gameengine/Ketsji/KX_GameObject.cpp
M       source/gameengine/Ketsji/KX_GameObject.h
M       source/gameengine/Ketsji/KX_Scene.cpp
M       source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
M       source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
M       source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h
M       source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
M       source/gameengine/Rasterizer/RAS_IRasterizer.h
M       source/gameengine/Rasterizer/RAS_MaterialBucket.h
M       source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLLight.cpp
M       
source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
M       source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h

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

diff --git a/intern/moto/include/MT_Scalar.h b/intern/moto/include/MT_Scalar.h
index 5c4a5c2..fe613d9 100644
--- a/intern/moto/include/MT_Scalar.h
+++ b/intern/moto/include/MT_Scalar.h
@@ -53,7 +53,7 @@
 #include "MT_random.h"
 #include "NM_Scalar.h"
 
-typedef double MT_Scalar; //this should be float !
+typedef float MT_Scalar;
 
 
 const MT_Scalar  MT_DEGS_PER_RAD(57.29577951308232286465);
diff --git a/source/gameengine/Ketsji/KX_FontObject.cpp 
b/source/gameengine/Ketsji/KX_FontObject.cpp
index 420f1f7..366da3f 100644
--- a/source/gameengine/Ketsji/KX_FontObject.cpp
+++ b/source/gameengine/Ketsji/KX_FontObject.cpp
@@ -194,7 +194,9 @@ void KX_FontObject::DrawFontText()
 
        /* Get a working copy of the OpenGLMatrix to use */
        double mat[16];
-       memcpy(mat, this->GetOpenGLMatrix(), sizeof(double)*16);
+       for (unsigned short i = 0; i < 16; ++i) {
+               mat[i] = m_OpenGL_4x4Matrix.getPointer()[i];
+       }
 
        /* Account for offset */
        MT_Vector3 offset = this->NodeGetWorldOrientation() * m_offset * 
this->NodeGetWorldScaling();
diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp 
b/source/gameengine/Ketsji/KX_GameObject.cpp
index 014d00a..cbd4e3d 100644
--- a/source/gameengine/Ketsji/KX_GameObject.cpp
+++ b/source/gameengine/Ketsji/KX_GameObject.cpp
@@ -700,10 +700,10 @@ void KX_GameObject::ApplyRotation(const MT_Vector3& 
drot,bool local)
 /**
  * GetOpenGL Matrix, returns an OpenGL 'compatible' matrix
  */
-double*        KX_GameObject::GetOpenGLMatrix()
+float* KX_GameObject::GetOpenGLMatrix()
 {
        // todo: optimize and only update if necessary
-       double* fl = m_OpenGL_4x4Matrix.getPointer();
+       float* fl = m_OpenGL_4x4Matrix.getPointer();
        if (GetSGNode()) {
                MT_Transform trans;
        
@@ -742,7 +742,7 @@ void KX_GameObject::AddMeshUser()
                m_meshes[i]->AddMeshUser(this, &m_meshSlots, GetDeformer());
        }
        // set the part of the mesh slot that never change
-       double* fl = GetOpenGLMatrixPtr()->getPointer();
+       float* fl = GetOpenGLMatrixPtr()->getPointer();
 
        SG_QList::iterator<RAS_MeshSlot> mit(m_meshSlots);
 //     RAS_MeshSlot* ms;
@@ -2768,7 +2768,7 @@ PyObject *KX_GameObject::pyattr_get_localTransform(void 
*self_v, const KX_PYATTR
 {
        KX_GameObject* self = static_cast<KX_GameObject*>(self_v);
 
-       double mat[16];
+       float mat[16];
 
        MT_Transform trans;
        
diff --git a/source/gameengine/Ketsji/KX_GameObject.h 
b/source/gameengine/Ketsji/KX_GameObject.h
index b5190a5..a2f127d 100644
--- a/source/gameengine/Ketsji/KX_GameObject.h
+++ b/source/gameengine/Ketsji/KX_GameObject.h
@@ -175,7 +175,7 @@ public:
         * side effect of storing the result internally. The
         * memory for the matrix remains the property of this class.
         */ 
-               double *
+               float *
        GetOpenGLMatrix(
        );
 
diff --git a/source/gameengine/Ketsji/KX_Scene.cpp 
b/source/gameengine/Ketsji/KX_Scene.cpp
index abf6b63..f616b28 100644
--- a/source/gameengine/Ketsji/KX_Scene.cpp
+++ b/source/gameengine/Ketsji/KX_Scene.cpp
@@ -1557,9 +1557,9 @@ void KX_Scene::CalculateVisibleMeshes(RAS_IRasterizer* 
rasty,KX_Camera* cam, int
                planes[5].setValue(cplanes[3].getValue());      // bottom
                CullingInfo info(layer);
 
-               double mvmat[16] = {0};
+               float mvmat[16] = {0};
                cam->GetModelviewMatrix().getValue(mvmat);
-               double pmat[16] = {0};
+               float pmat[16] = {0};
                cam->GetProjectionMatrix().getValue(pmat);
 
                dbvt_culling = 
m_physicsEnvironment->CullingTest(PhysicsCullingCallback,&info,planes,5,m_dbvt_occlusion_res,
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp 
b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
index bf81a18..83e5fa7 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
@@ -1455,7 +1455,7 @@ struct OcclusionBuffer
                m[14] = btScalar(m1[ 2]*m2[12]+m1[ 
6]*m2[13]+m1[10]*m2[14]+m1[14]*m2[15]);
                m[15] = btScalar(m1[ 3]*m2[12]+m1[ 
7]*m2[13]+m1[11]*m2[14]+m1[15]*m2[15]);
        }
-       void            setup(int size, const int *view, double modelview[16], 
double projection[16])
+       void            setup(int size, const int *view, float modelview[16], 
float projection[16])
        {
                m_initialized=false;
                m_occlusion=false;
@@ -1505,7 +1505,7 @@ struct OcclusionBuffer
                m_initialized = true;
                m_occlusion = false;
        }
-       void            SetModelMatrix(double *fl)
+       void            SetModelMatrix(float *fl)
        {
                CMmat4mul(m_mtc,m_wtc,fl);
                if (!m_initialized)
@@ -1896,7 +1896,7 @@ struct    DbvtCullingCallback : btDbvt::ICollide
                        KX_GameObject* gameobj = 
KX_GameObject::GetClientObject(info);
                        if (gameobj && gameobj->GetOccluder())
                        {
-                               double* fl = 
gameobj->GetOpenGLMatrixPtr()->getPointer();
+                               float* fl = 
gameobj->GetOpenGLMatrixPtr()->getPointer();
                                // this will create the occlusion buffer if not 
already done
                                // and compute the transformation from model 
local space to clip space
                                m_ocb->SetModelMatrix(fl);
@@ -1937,7 +1937,7 @@ struct    DbvtCullingCallback : btDbvt::ICollide
 };
 
 static OcclusionBuffer gOcb;
-bool CcdPhysicsEnvironment::CullingTest(PHY_CullingCallback callback, void* 
userData, MT_Vector4 *planes, int nplanes, int occlusionRes, const int 
*viewport, double modelview[16], double projection[16])
+bool CcdPhysicsEnvironment::CullingTest(PHY_CullingCallback callback, void* 
userData, MT_Vector4 *planes, int nplanes, int occlusionRes, const int 
*viewport, float modelview[16], float projection[16])
 {
        if (!m_cullingTree)
                return false;
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h 
b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
index 86f6639..a64d2c8 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
@@ -211,7 +211,7 @@ protected:
                btTypedConstraint*      GetConstraintById(int constraintId);
 
                virtual PHY_IPhysicsController* 
RayTest(PHY_IRayCastFilterCallback &filterCallback, float fromX,float 
fromY,float fromZ, float toX,float toY,float toZ);
-               virtual bool CullingTest(PHY_CullingCallback callback, void* 
userData, MT_Vector4* planes, int nplanes, int occlusionRes, const int 
*viewport, double modelview[16], double projection[16]);
+               virtual bool CullingTest(PHY_CullingCallback callback, void* 
userData, MT_Vector4* planes, int nplanes, int occlusionRes, const int 
*viewport, float modelview[16], float projection[16]);
 
 
                //Methods for gamelogic collision/physics callbacks
diff --git a/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h 
b/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h
index 929345d..3e9379d 100644
--- a/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h
+++ b/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h
@@ -83,7 +83,7 @@ public:
        }
 
        virtual PHY_IPhysicsController* RayTest(PHY_IRayCastFilterCallback 
&filterCallback, float fromX,float fromY,float fromZ, float toX,float toY,float 
toZ);
-       virtual bool CullingTest(PHY_CullingCallback callback, void* userData, 
class MT_Vector4* planes, int nplanes, int occlusionRes, const int *viewport, 
double modelview[16], double projection[16]) { return false; }
+       virtual bool CullingTest(PHY_CullingCallback callback, void* userData, 
class MT_Vector4* planes, int nplanes, int occlusionRes, const int *viewport, 
float modelview[16], float projection[16]) { return false; }
 
 
        //gamelogic callbacks
diff --git a/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h 
b/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
index 4b8d362..2997048 100644
--- a/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
+++ b/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
@@ -183,7 +183,7 @@ class PHY_IPhysicsEnvironment
                //culling based on physical broad phase
                // the plane number must be set as follow: near, far, left, 
right, top, botton
                // the near plane must be the first one and must always be 
present, it is used to get the direction of the view
-               virtual bool CullingTest(PHY_CullingCallback callback, void 
*userData, MT_Vector4* planeNormals, int planeNumber, int occlusionRes, const 
int *viewport, double modelview[16], double projection[16]) = 0;
+               virtual bool CullingTest(PHY_CullingCallback callback, void 
*userData, MT_Vector4* planeNormals, int planeNumber, int occlusionRes, const 
int *viewport, float modelview[16], float projection[16]) = 0;
 
                //Methods for gamelogic collision/physics callbacks
                //todo:
diff --git a/source/gameengine/Rasterizer/RAS_IRasterizer.h 
b/source/gameengine/Rasterizer/RAS_IRasterizer.h
index b95a20f..8d90ddd 100644
--- a/source/gameengine/Rasterizer/RAS_IRasterizer.h
+++ b/source/gameengine/Rasterizer/RAS_IRasterizer.h
@@ -423,7 +423,7 @@ public:
        /**
         * Render Tools
         */
-       virtual void applyTransform(double *oglmatrix, int drawingmode) = 0;
+       virtual void applyTransform(float *oglmatrix, int drawingmode) = 0;
 
        /**
         * Renders 2D boxes.
diff --git a/source/gameengine/Rasterizer/RAS_MaterialBucket.h 
b/source/gameengine/Rasterizer/RAS_MaterialBucket.h
index 1eee99f..75cc382 100644
--- a/source/gameengine/Rasterizer/RAS_MaterialBucket.h
+++ b/source/gameengine/Rasterizer/RAS_MaterialBucket.h
@@ -128,7 +128,7 @@ public:
        void*                                   m_clientObj;
        RAS_Deformer*                   m_pDeformer;
        DerivedMesh*                    m_pDerivedMesh;
-       double*                                 m_OpenGLMatrix;
+       float*                                  m_OpenGLMatrix;
        // visibility
        bool                                    m_bVisible;
        bool                                    m_bCulled;
diff --git 
a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLLight.cpp 
b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLLight.cpp
index 4ac1c9c..c6d9981 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLLight.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLLight.cpp
@@ -262,7 +262,7 @@ void RAS_OpenGLLight::Update()
                // lights don't get their openGL matrix updated, do it now
                if (kxlight->GetSGNode()->IsDirty())
                        kxlight->GetOpenGLMatrix();
-               double *dobmat = kxlight->GetOpenGLMatrixPtr()->getPointer();
+               float *dobmat = kxlight->GetOpenGLMatrixPtr()->getPointer();
 
                for (int i=0; i<4; i++)
                        for (int j=0; j<4; j++, dobmat++)
diff --git 
a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp 
b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
index ff4a51b..820bcf2 100644
-

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to