Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenoit Bolsee <benoit.bolsee@online.be>2009-05-12 23:48:18 +0400
committerBenoit Bolsee <benoit.bolsee@online.be>2009-05-12 23:48:18 +0400
commit5a0de728b0a6a4b916f88554322cc56884f17ad8 (patch)
tree1ddaa69c4035f060a71cd0487fd121763bf2a75d /source/gameengine/Rasterizer
parent705764fe050fd15703fe2ab410516ff3ccc3f421 (diff)
BGE performance: allow to create display list on meshes with modifiers but without armature and shape keys. These modified meshes are static and can be put safely in a display list. As the rendering of modifiers is done in direct openGL call, it results is a bit performance boost.
Diffstat (limited to 'source/gameengine/Rasterizer')
-rw-r--r--source/gameengine/Rasterizer/RAS_Deformer.h8
-rw-r--r--source/gameengine/Rasterizer/RAS_MaterialBucket.cpp2
2 files changed, 8 insertions, 2 deletions
diff --git a/source/gameengine/Rasterizer/RAS_Deformer.h b/source/gameengine/Rasterizer/RAS_Deformer.h
index fe081dd4aa5..bb8e3750485 100644
--- a/source/gameengine/Rasterizer/RAS_Deformer.h
+++ b/source/gameengine/Rasterizer/RAS_Deformer.h
@@ -39,7 +39,7 @@
class RAS_Deformer
{
public:
- RAS_Deformer(){};
+ RAS_Deformer() : m_pMesh(0), m_bDynamic(false) {};
virtual ~RAS_Deformer(){};
virtual void Relink(GEN_Map<class GEN_HashedPtr, void*>*map)=0;
virtual bool Apply(class RAS_IPolyMaterial *polymat)=0;
@@ -55,8 +55,14 @@ public:
{
return true;
}
+ // true when deformer produces varying vertex (shape or armature)
+ bool IsDynamic()
+ {
+ return m_bDynamic;
+ }
protected:
class RAS_MeshObject *m_pMesh;
+ bool m_bDynamic;
};
#endif
diff --git a/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp b/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
index db6394c1ec0..841264465cf 100644
--- a/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
+++ b/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
@@ -597,7 +597,7 @@ void RAS_MaterialBucket::RenderMeshSlot(const MT_Transform& cameratrans, RAS_IRa
// then it won't have texture coordinates for actual drawing. also
// for zsort we can't make a display list, since the polygon order
// changes all the time.
- if(ms.m_pDeformer)
+ if(ms.m_pDeformer && ms.m_pDeformer->IsDynamic())
ms.m_bDisplayList = false;
else if(!ms.m_DisplayList && rasty->GetDrawingMode() == RAS_IRasterizer::KX_SHADOW)
ms.m_bDisplayList = false;