Optimization work on SpuRaycastTask:

For ray vs. optimized bvh mesh traverse tree once for entire packet of rays
Avoid DMAing ray output data until we have a hit
This commit is contained in:
johnmccutchan
2008-02-14 22:11:56 +00:00
parent fe426229a7
commit 594963b25d
3 changed files with 338 additions and 92 deletions

View File

@@ -16,6 +16,7 @@ ATTRIBUTE_ALIGNED16(struct) RaycastGatheredObjectData
btTransform m_worldTransform;
};
ATTRIBUTE_ALIGNED16(struct) SpuRaycastTaskWorkUnitOut
{
btVector3 hitNormal; /* out */
@@ -31,17 +32,18 @@ ATTRIBUTE_ALIGNED16(struct) SpuRaycastTaskWorkUnit
SpuRaycastTaskWorkUnitOut* output; /* out */
};
#define SPU_RAYCAST_WORK_UNITS_PER_TASK 4
#define SPU_RAYCAST_WORK_UNITS_PER_TASK 16
ATTRIBUTE_ALIGNED128(struct) SpuRaycastTaskDesc
{
SpuRaycastTaskWorkUnit workUnits[SPU_RAYCAST_WORK_UNITS_PER_TASK];
int numWorkUnits;
unsigned int numWorkUnits;
void* spuCollisionObjectsWrappers;
int numSpuCollisionObjectWrappers;
unsigned int numSpuCollisionObjectWrappers;
int taskId;
};
void processRaycastTask (void* userPtr, void* lsMemory);
void* createRaycastLocalStoreMemory ();