29#ifndef GU_BV4_BOX_OVERLAP_INTERNAL_H
30#define GU_BV4_BOX_OVERLAP_INTERNAL_H
32#include "GuBV4_Common.h"
34 template<
class ParamsT>
38 dst->mPreca0_PaddedAligned.x = boxToModelR->column0.x;
39 dst->mPreca0_PaddedAligned.y = boxToModelR->column1.y;
40 dst->mPreca0_PaddedAligned.z = boxToModelR->column2.z;
42 dst->mPreca1_PaddedAligned.x = boxToModelR->column0.y;
43 dst->mPreca1_PaddedAligned.y = boxToModelR->column1.z;
44 dst->mPreca1_PaddedAligned.z = boxToModelR->column2.x;
46 dst->mPreca2_PaddedAligned.x = boxToModelR->column0.z;
47 dst->mPreca2_PaddedAligned.y = boxToModelR->column1.x;
48 dst->mPreca2_PaddedAligned.z = boxToModelR->column2.y;
52 absRot->column0.x = dst->mPreca0b_PaddedAligned.x =
epsilon + fabsf(boxToModelR->column0.x);
53 absRot->column0.y = dst->mPreca1b_PaddedAligned.x =
epsilon + fabsf(boxToModelR->column0.y);
54 absRot->column0.z = dst->mPreca2b_PaddedAligned.x =
epsilon + fabsf(boxToModelR->column0.z);
56 absRot->column1.x = dst->mPreca2b_PaddedAligned.y =
epsilon + fabsf(boxToModelR->column1.x);
57 absRot->column1.y = dst->mPreca0b_PaddedAligned.y =
epsilon + fabsf(boxToModelR->column1.y);
58 absRot->column1.z = dst->mPreca1b_PaddedAligned.y =
epsilon + fabsf(boxToModelR->column1.z);
60 absRot->column2.x = dst->mPreca1b_PaddedAligned.z =
epsilon + fabsf(boxToModelR->column2.x);
61 absRot->column2.y = dst->mPreca2b_PaddedAligned.z =
epsilon + fabsf(boxToModelR->column2.y);
62 absRot->column2.z = dst->mPreca0b_PaddedAligned.z =
epsilon + fabsf(boxToModelR->column2.z);
65 template<
class ParamsT>
68 dst->mBoxExtents_PaddedAligned = extents;
70 const float Ex = extents.x;
71 const float Ey = extents.y;
72 const float Ez = extents.z;
73 dst->mBB_PaddedAligned.x = Ex*mAR->column0.x + Ey*mAR->column1.x + Ez*mAR->column2.x;
74 dst->mBB_PaddedAligned.y = Ex*mAR->column0.y + Ey*mAR->column1.y + Ez*mAR->column2.y;
75 dst->mBB_PaddedAligned.z = Ex*mAR->column0.z + Ey*mAR->column1.z + Ez*mAR->column2.z;
80 BV4_ALIGN16(PxVec3p mCenterOrMinCoeff_PaddedAligned);
81 BV4_ALIGN16(PxVec3p mExtentsOrMaxCoeff_PaddedAligned);
83 BV4_ALIGN16(PxVec3p mBB_PaddedAligned);
84 BV4_ALIGN16(PxVec3p mBoxExtents_PaddedAligned);
86 BV4_ALIGN16(PxVec3p mPreca0_PaddedAligned);
87 BV4_ALIGN16(PxVec3p mPreca1_PaddedAligned);
88 BV4_ALIGN16(PxVec3p mPreca2_PaddedAligned);
89 BV4_ALIGN16(PxVec3p mPreca0b_PaddedAligned);
90 BV4_ALIGN16(PxVec3p mPreca1b_PaddedAligned);
91 BV4_ALIGN16(PxVec3p mPreca2b_PaddedAligned);
96 precomputeData(
this, &absRot, box_to_model);
98 setupBoxData(
this, extents, &absRot);
GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon()
Return the epsilon constant for floating point types.
Definition scalar_constants.inl:6
#define PX_RESTRICT
Definition PxPreprocessor.h:355
#define PX_FORCE_INLINE
Definition PxPreprocessor.h:335
Definition GuBV4_BoxOverlap_Internal.h:79
BV4_ALIGN16(PxVec3p mTBoxToModel_PaddedAligned)
Translation from obb space to model space.
PX_FORCE_INLINE void precomputeBoxData(const PxVec3 &extents, const PxMat33 *PX_RESTRICT box_to_model)
Definition GuBV4_BoxOverlap_Internal.h:93