more CUDA work

This commit is contained in:
rponom
2008-10-28 23:25:59 +00:00
parent f5e16847df
commit 309a12836d
12 changed files with 1325 additions and 357 deletions

View File

@@ -37,7 +37,13 @@ class btCudaBroadphase : public btSimpleBroadphase
unsigned int* m_hParticleHash;
unsigned int* m_hCellStart;
unsigned int* m_hPairBuffStartCurr;
float* m_hAABB;
unsigned int* m_hPairBuff;
unsigned int* m_hPairScan;
unsigned int* m_hPairOut;
// GPU data
float* m_dPos[2];
@@ -59,6 +65,14 @@ class btCudaBroadphase : public btSimpleBroadphase
unsigned int m_currentPosRead, m_currentVelRead;
unsigned int m_currentPosWrite, m_currentVelWrite;
// buffers on GPU
unsigned int* m_dPairBuff;
unsigned int* m_dPairBuffStartCurr;
float* m_dAABB;
unsigned int* m_dPairScan;
unsigned int* m_dPairOut;
// params
struct SimParams& m_simParams;
@@ -66,6 +80,11 @@ class btCudaBroadphase : public btSimpleBroadphase
unsigned int m_maxParticlesPerCell;
// debug
unsigned int m_numPairsAdded;
unsigned int m_maxPairsPerParticle;
unsigned int m_numOverflows;
protected:
unsigned int createVBO(unsigned int size);
@@ -120,5 +139,48 @@ public:
void quickHack2();
void integrate();
void findOverlappingPairs(btDispatcher* dispatcher);
int3 calcGridPosCPU(float4 p);
uint calcGridHashCPU(int3 gridPos);
void computePairCacheChangesCPU(uint* pPairBuff, uint* pPairBuffStartCurr, uint* pPairScan, uint numParticles);
void computePairCacheChangesCPU_D(uint index, uint* pPairBuff, uint2* pPairBuffStartCurr, uint* pPairScan);
void findOverlappingPairsCPU( float* pAABB,
uint* pParticleHash,
uint* pCellStart,
uint* pPairBuff,
uint* pPairBuffStartCurr,
uint numParticles);
void findOverlappingPairsCPU_D( uint index,
float4* pAABB,
uint2* pParticleHash,
uint* pCellStart,
uint* pPairBuff,
uint2* pPairBuffStartCurr,
uint numParticles);
void findPairsInCellCPU(int3 gridPos,
uint index,
uint2* pParticleHash,
uint* pCellStart,
float4* pAABB,
uint* pPairBuff,
uint2* pPairBuffStartCurr,
uint numParticles);
uint cudaTestAABBOverlapCPU(float4 min0, float4 max0, float4 min1, float4 max1);
void scanOverlappingPairBuffCPU();
void squeezeOverlappingPairBuffCPU(uint* pPairBuff, uint* pPairBuffStartCurr, uint* pPairScan, uint* pPairOut, uint numParticles);
void squeezeOverlappingPairBuffCPU_D(uint index, uint* pPairBuff, uint2* pPairBuffStartCurr, uint* pPairScan, uint* pPairOut);
void addPairsToCacheCPU(btDispatcher* dispatcher);
void resetOverlappingPairBuffCPU();
};
#endif //CUDA_BROADPHASE_H