fix SIMD/16-byte alignment issue causing issue in one of the old benchmarks
This commit is contained in:
@@ -187,7 +187,7 @@ static ExampleEntry gDefaultExamples[]=
|
|||||||
#endif //INCLUDE_CLOTH_DEMOS
|
#endif //INCLUDE_CLOTH_DEMOS
|
||||||
|
|
||||||
///we disable the benchmarks in debug mode, they are way too slow and benchmarking in debug mode is not recommended
|
///we disable the benchmarks in debug mode, they are way too slow and benchmarking in debug mode is not recommended
|
||||||
#ifndef _DEBUG
|
//#ifndef _DEBUG
|
||||||
ExampleEntry(0,"Benchmarks"),
|
ExampleEntry(0,"Benchmarks"),
|
||||||
ExampleEntry(1,"3000 boxes", "Benchmark a stack of 3000 boxes. It will stress the collision detection, a specialized box-box implementation based on the separating axis test, and the constraint solver. ", BenchmarkCreateFunc, 1),
|
ExampleEntry(1,"3000 boxes", "Benchmark a stack of 3000 boxes. It will stress the collision detection, a specialized box-box implementation based on the separating axis test, and the constraint solver. ", BenchmarkCreateFunc, 1),
|
||||||
ExampleEntry(1,"1000 stack", "Benchmark a stack of 3000 boxes. It will stress the collision detection, a specialized box-box implementation based on the separating axis test, and the constraint solver. ",
|
ExampleEntry(1,"1000 stack", "Benchmark a stack of 3000 boxes. It will stress the collision detection, a specialized box-box implementation based on the separating axis test, and the constraint solver. ",
|
||||||
@@ -197,7 +197,7 @@ static ExampleEntry gDefaultExamples[]=
|
|||||||
ExampleEntry(1,"Prim vs Mesh", "Benchmark the performance and stability of rigid bodies using primitive collision shapes (btSphereShape, btBoxShape), resting on a triangle mesh, btBvhTriangleMeshShape.", BenchmarkCreateFunc, 5),
|
ExampleEntry(1,"Prim vs Mesh", "Benchmark the performance and stability of rigid bodies using primitive collision shapes (btSphereShape, btBoxShape), resting on a triangle mesh, btBvhTriangleMeshShape.", BenchmarkCreateFunc, 5),
|
||||||
ExampleEntry(1,"Convex vs Mesh", "Benchmark the performance and stability of rigid bodies using convex hull collision shapes (btConvexHullShape), resting on a triangle mesh, btBvhTriangleMeshShape.", BenchmarkCreateFunc, 6),
|
ExampleEntry(1,"Convex vs Mesh", "Benchmark the performance and stability of rigid bodies using convex hull collision shapes (btConvexHullShape), resting on a triangle mesh, btBvhTriangleMeshShape.", BenchmarkCreateFunc, 6),
|
||||||
ExampleEntry(1,"Raycast", "Benchmark the performance of the btCollisionWorld::rayTest. Note that currently the rays are not rendered.", BenchmarkCreateFunc, 7),
|
ExampleEntry(1,"Raycast", "Benchmark the performance of the btCollisionWorld::rayTest. Note that currently the rays are not rendered.", BenchmarkCreateFunc, 7),
|
||||||
#endif
|
//#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -26,14 +26,16 @@ class btDispatcher;
|
|||||||
#include "btCollisionCreateFunc.h"
|
#include "btCollisionCreateFunc.h"
|
||||||
|
|
||||||
///For each triangle in the concave mesh that overlaps with the AABB of a convex (m_convexProxy), processTriangle is called.
|
///For each triangle in the concave mesh that overlaps with the AABB of a convex (m_convexProxy), processTriangle is called.
|
||||||
class btConvexTriangleCallback : public btTriangleCallback
|
ATTRIBUTE_ALIGNED16(class) btConvexTriangleCallback : public btTriangleCallback
|
||||||
{
|
{
|
||||||
const btCollisionObjectWrapper* m_convexBodyWrap;
|
|
||||||
const btCollisionObjectWrapper* m_triBodyWrap;
|
|
||||||
|
|
||||||
btVector3 m_aabbMin;
|
btVector3 m_aabbMin;
|
||||||
btVector3 m_aabbMax ;
|
btVector3 m_aabbMax ;
|
||||||
|
|
||||||
|
const btCollisionObjectWrapper* m_convexBodyWrap;
|
||||||
|
const btCollisionObjectWrapper* m_triBodyWrap;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
btManifoldResult* m_resultOut;
|
btManifoldResult* m_resultOut;
|
||||||
btDispatcher* m_dispatcher;
|
btDispatcher* m_dispatcher;
|
||||||
@@ -41,6 +43,8 @@ class btConvexTriangleCallback : public btTriangleCallback
|
|||||||
btScalar m_collisionMarginTriangle;
|
btScalar m_collisionMarginTriangle;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
BT_DECLARE_ALIGNED_ALLOCATOR();
|
||||||
|
|
||||||
int m_triangleCount;
|
int m_triangleCount;
|
||||||
|
|
||||||
btPersistentManifold* m_manifoldPtr;
|
btPersistentManifold* m_manifoldPtr;
|
||||||
@@ -75,17 +79,19 @@ int m_triangleCount;
|
|||||||
|
|
||||||
|
|
||||||
/// btConvexConcaveCollisionAlgorithm supports collision between convex shapes and (concave) trianges meshes.
|
/// btConvexConcaveCollisionAlgorithm supports collision between convex shapes and (concave) trianges meshes.
|
||||||
class btConvexConcaveCollisionAlgorithm : public btActivatingCollisionAlgorithm
|
ATTRIBUTE_ALIGNED16(class) btConvexConcaveCollisionAlgorithm : public btActivatingCollisionAlgorithm
|
||||||
{
|
{
|
||||||
|
|
||||||
bool m_isSwapped;
|
|
||||||
|
|
||||||
btConvexTriangleCallback m_btConvexTriangleCallback;
|
btConvexTriangleCallback m_btConvexTriangleCallback;
|
||||||
|
|
||||||
|
bool m_isSwapped;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
BT_DECLARE_ALIGNED_ALLOCATOR();
|
||||||
|
|
||||||
btConvexConcaveCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci,const btCollisionObjectWrapper* body0Wrap,const btCollisionObjectWrapper* body1Wrap,bool isSwapped);
|
btConvexConcaveCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci,const btCollisionObjectWrapper* body0Wrap,const btCollisionObjectWrapper* body1Wrap,bool isSwapped);
|
||||||
|
|
||||||
virtual ~btConvexConcaveCollisionAlgorithm();
|
virtual ~btConvexConcaveCollisionAlgorithm();
|
||||||
|
|||||||
@@ -123,6 +123,7 @@ btDefaultCollisionConfiguration::btDefaultCollisionConfiguration(const btDefault
|
|||||||
m_persistentManifoldPool = new (mem) btPoolAllocator(sizeof(btPersistentManifold),constructionInfo.m_defaultMaxPersistentManifoldPoolSize);
|
m_persistentManifoldPool = new (mem) btPoolAllocator(sizeof(btPersistentManifold),constructionInfo.m_defaultMaxPersistentManifoldPoolSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
collisionAlgorithmMaxElementSize = (collisionAlgorithmMaxElementSize+16)&0xffffffffffff0;
|
||||||
if (constructionInfo.m_collisionAlgorithmPool)
|
if (constructionInfo.m_collisionAlgorithmPool)
|
||||||
{
|
{
|
||||||
m_ownsCollisionAlgorithmPool = false;
|
m_ownsCollisionAlgorithmPool = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user