15 #ifndef __SPU_COLLISION_SHAPES_H
16 #define __SPU_COLLISION_SHAPES_H
18 #include "../SpuDoubleBuffer.h"
36 #define MAX_NUM_SPU_CONVEX_POINTS 128 //@fallback to PPU if a btConvexHullShape has more than MAX_NUM_SPU_CONVEX_POINTS points
37 #define MAX_SPU_COMPOUND_SUBSHAPES 16 //@fallback on PPU if compound has more than MAX_SPU_COMPOUND_SUBSHAPES child shapes
38 #define MAX_SHAPE_SIZE 256 //@todo: assert on this
77 #define MAX_SPU_SUBTREE_HEADERS 32
97 #define USE_BRANCHFREE_TEST 1
98 #ifdef USE_BRANCHFREE_TEST
101 #if defined(__CELLOS_LV2__) && defined (__SPU__)
102 vec_ushort8 vecMin = {aabbMin1[0],aabbMin2[0],aabbMin1[2],aabbMin2[2],aabbMin1[1],aabbMin2[1],0,0};
103 vec_ushort8 vecMax = {aabbMax2[0],aabbMax1[0],aabbMax2[2],aabbMax1[2],aabbMax2[1],aabbMax1[1],0,0};
105 return spu_extract(spu_gather(isGt),0)==0;
108 return btSelect((
unsigned)((aabbMin1[0] <= aabbMax2[0]) & (aabbMax1[0] >= aabbMin2[0])
109 & (aabbMin1[2] <= aabbMax2[2]) & (aabbMax1[2] >= aabbMin2[2])
110 & (aabbMin1[1] <= aabbMax2[1]) & (aabbMax1[1] >= aabbMin2[1])),
118 unsigned int overlap = 1;
119 overlap = (aabbMin1[0] > aabbMax2[0] || aabbMax1[0] < aabbMin2[0]) ? 0 : overlap;
120 overlap = (aabbMin1[2] > aabbMax2[2] || aabbMax1[2] < aabbMin2[2]) ? 0 : overlap;
121 overlap = (aabbMin1[1] > aabbMax2[1] || aabbMax1[1] < aabbMin2[1]) ? 0 : overlap;