diff --git a/Extras/CDTestFramework/BulletSAPCompleteBoxPruningTest.cpp b/Extras/CDTestFramework/BulletSAPCompleteBoxPruningTest.cpp index a18485e01..fd1512caf 100644 --- a/Extras/CDTestFramework/BulletSAPCompleteBoxPruningTest.cpp +++ b/Extras/CDTestFramework/BulletSAPCompleteBoxPruningTest.cpp @@ -24,6 +24,8 @@ subject to the following restrictions: #include "btBulletCollisionCommon.h" #include "BulletCollision/BroadphaseCollision/btDbvtBroadphase.h" #include "Camera.h" +#include "../CUDA/btCudaBroadphase.h" +#include "LinearMath/btQuickprof.h" int numParts =2; @@ -34,6 +36,8 @@ bool enableOcclusion = false; bool showOcclusion = true; int visiblecount = 0; +static bool sBulletProfilerToggle = false; + struct OcclusionBuffer { struct WriteOCL @@ -418,7 +422,17 @@ BulletSAPCompleteBoxPruningTest::BulletSAPCompleteBoxPruningTest(int numBoxes,in m_isdbvt = true; methodname = "dynamic AABB tree, btDbvtBroadphase"; } - break; + break; + case 8: +// m_broadphase = new btAxisSweep3(aabbMin,aabbMax,maxNumBoxes); +// m_broadphase = new btSimpleBroadphase(maxNumBoxes,new btSortedOverlappingPairCache()); +// m_broadphase = new btCudaBroadphase(aabbMin, aabbMax, 8, 8, 8, 8192, 8192, 64, 16); +// m_broadphase = new btCudaBroadphase(aabbMin, aabbMax, 12, 12, 12, 8192, 8192, 64, 16); +// m_broadphase = new btCudaBroadphase(aabbMin, aabbMax, 16, 16, 16, 8192, 8192, 64, 16); + m_broadphase = new btCudaBroadphase(aabbMin, aabbMax, 24, 24, 24, 8192, 8192, 64, 16); +// m_broadphase = new btCudaBroadphase(aabbMin, aabbMax, 32, 32, 32, 8192, 8192, 64, 16); + methodname = "btCudaBroadphase"; + break; default: { m_broadphase = new btAxisSweep3(aabbMin,aabbMax,numBoxes,new btNullPairCache()); @@ -586,8 +600,22 @@ void BulletSAPCompleteBoxPruningTest::PerformTest() m_broadphase->setAabb(m_proxies[i],aabbMin,aabbMax,0);//m_dispatcher); } +#ifndef BT_NO_PROFILE + if(sBulletProfilerToggle) + { + CProfileManager::Reset(); + } +#endif //BT_NO_PROFILE + m_broadphase->calculateOverlappingPairs(0); +#ifndef BT_NO_PROFILE + if(sBulletProfilerToggle) + { + CProfileManager::Increment_Frame_Counter(); + CProfileManager::dumpAll(); + } +#endif //BT_NO_PROFILE mProfiler.End(); @@ -706,7 +734,7 @@ void BulletSAPCompleteBoxPruningTest::PerformTest() } char Buffer[4096]; - sprintf(Buffer, "Bullet %s: %5.1f us (%d cycles) : %d pairs\n", methodname, mProfiler.mMsTime, mProfiler.mCycles, + sprintf_s(Buffer, sizeof(Buffer), "Bullet %s: %5.1f us (%d cycles) : %d pairs\n", methodname, mProfiler.mMsTime, mProfiler.mCycles, m_broadphase->getOverlappingPairCache()->getNumOverlappingPairs()); // m_broadphase)->printStats(); @@ -1004,6 +1032,14 @@ if((!m_isdbvt)||(!enableCulling)) void BulletSAPCompleteBoxPruningTest::KeyboardCallback(unsigned char key, int x, int y) { + switch (key) + { + case 'p': + case 'P': + sBulletProfilerToggle = !sBulletProfilerToggle; + break; + default : break; + } } void BulletSAPCompleteBoxPruningTest::MouseCallback(int button, int state, int x, int y) diff --git a/Extras/CDTestFramework/CDTestFramework.cpp b/Extras/CDTestFramework/CDTestFramework.cpp index 94850a048..d15111861 100644 --- a/Extras/CDTestFramework/CDTestFramework.cpp +++ b/Extras/CDTestFramework/CDTestFramework.cpp @@ -29,6 +29,7 @@ subject to the following restrictions: #include "Camera.h" #include "GLFontRenderer.h" #include "BulletCollision/BroadphaseCollision/btDbvtBroadphase.h" +#include "LinearMath/btQuickprof.h" #define NUM_SAP_BOXES 8192 //#define NUM_SAP_BOXES 1024 @@ -73,12 +74,15 @@ enum TestIndex TEST_BULLET_MULTISAP_8192, // TEST_BIPARTITE_BOX_PRUNING, TEST_DBVT_8192, + TEST_BULLET_CUDA_8192, TEST_OPCODE_ARRAY_SAP, MAX_NB_TESTS }; -static int gTest = TEST_DBVT_8192;//TEST_BULLET_MULTISAP_8192; -static int gSelectedTest = TEST_DBVT_8192;//TEST_BULLET_MULTISAP_8192; +//static int gTest = TEST_DBVT_8192;//TEST_BULLET_MULTISAP_8192; +//static int gSelectedTest = TEST_DBVT_8192;//TEST_BULLET_MULTISAP_8192; +static int gTest = TEST_BULLET_CUDA_8192; +static int gSelectedTest = TEST_BULLET_CUDA_8192; static CollisionTest* gCollisionTests[MAX_NB_TESTS]; static GLFontRenderer gFnt; @@ -306,6 +310,7 @@ int main(int argc, char** argv) {TEST_BULLET_MULTISAP_8192, "Bullet MultiSAP 8192"}, // {TEST_BIPARTITE_BOX_PRUNING, "Bipartite box pruning"}, {TEST_DBVT_8192, "Bullet DBVT 8192"}, + {TEST_BULLET_CUDA_8192, "Bullet CUDA 8192"}, {TEST_OPCODE_ARRAY_SAP, "OPCODE ARRAY SAP"}, }; TwType testType = TwDefineEnum("CollisionTest", testEV, MAX_NB_TESTS); @@ -328,6 +333,7 @@ int main(int argc, char** argv) gCollisionTests[TEST_BULLET_MULTISAP_8192] = new BulletSAPCompleteBoxPruningTest(NUM_SAP_BOXES,6); // gCollisionTests[TEST_BIPARTITE_BOX_PRUNING] = new BipartiteBoxPruningTest; gCollisionTests[TEST_DBVT_8192] = new BulletSAPCompleteBoxPruningTest(NUM_SAP_BOXES,7); + gCollisionTests[TEST_BULLET_CUDA_8192] = new BulletSAPCompleteBoxPruningTest(NUM_SAP_BOXES,8); gCollisionTests[TEST_OPCODE_ARRAY_SAP] = new OpcodeArraySAPTest(NUM_SAP_BOXES); for(int i=0;i