diff --git a/include/bx/inline/math.inl b/include/bx/inline/math.inl index 94d9973..e275f8b 100644 --- a/include/bx/inline/math.inl +++ b/include/bx/inline/math.inl @@ -366,7 +366,7 @@ namespace bx ptr[2] = _a.z; } - inline BX_CONSTEXPR_FUNC Vec3 abs(const Vec3 _a) + inline BX_CONSTEXPR_FUNC Vec3 abs(const Vec3 _a) { return { @@ -376,7 +376,7 @@ namespace bx }; } - inline BX_CONSTEXPR_FUNC Vec3 neg(const Vec3 _a) + inline BX_CONSTEXPR_FUNC Vec3 neg(const Vec3 _a) { return { @@ -386,7 +386,7 @@ namespace bx }; } - inline BX_CONSTEXPR_FUNC Vec3 add(const Vec3 _a, const Vec3 _b) + inline BX_CONSTEXPR_FUNC Vec3 add(const Vec3 _a, const Vec3 _b) { return { @@ -396,7 +396,7 @@ namespace bx }; } - inline BX_CONSTEXPR_FUNC Vec3 add(const Vec3 _a, float _b) + inline BX_CONSTEXPR_FUNC Vec3 add(const Vec3 _a, float _b) { return { @@ -406,7 +406,7 @@ namespace bx }; } - inline BX_CONSTEXPR_FUNC Vec3 sub(const Vec3 _a, const Vec3 _b) + inline BX_CONSTEXPR_FUNC Vec3 sub(const Vec3 _a, const Vec3 _b) { return { @@ -416,7 +416,7 @@ namespace bx }; } - inline BX_CONSTEXPR_FUNC Vec3 sub(const Vec3 _a, float _b) + inline BX_CONSTEXPR_FUNC Vec3 sub(const Vec3 _a, float _b) { return { @@ -426,7 +426,7 @@ namespace bx }; } - inline BX_CONSTEXPR_FUNC Vec3 mul(const Vec3 _a, const Vec3 _b) + inline BX_CONSTEXPR_FUNC Vec3 mul(const Vec3 _a, const Vec3 _b) { return { @@ -436,7 +436,7 @@ namespace bx }; } - inline BX_CONSTEXPR_FUNC Vec3 mul(const Vec3 _a, float _b) + inline BX_CONSTEXPR_FUNC Vec3 mul(const Vec3 _a, float _b) { return { @@ -456,12 +456,12 @@ namespace bx return add(mul(_a, _b), _c); } - inline BX_CONSTEXPR_FUNC float dot(const Vec3 _a, const Vec3 _b) + inline BX_CONSTEXPR_FUNC float dot(const Vec3 _a, const Vec3 _b) { return _a.x*_b.x + _a.y*_b.y + _a.z*_b.z; } - inline BX_CONSTEXPR_FUNC Vec3 cross(const Vec3 _a, const Vec3 _b) + inline BX_CONSTEXPR_FUNC Vec3 cross(const Vec3 _a, const Vec3 _b) { return { @@ -471,12 +471,12 @@ namespace bx }; } - inline BX_CONST_FUNC float length(const Vec3 _a) + inline BX_CONST_FUNC float length(const Vec3 _a) { return sqrt(dot(_a, _a) ); } - inline BX_CONSTEXPR_FUNC Vec3 lerp(const Vec3 _a, const Vec3 _b, float _t) + inline BX_CONSTEXPR_FUNC Vec3 lerp(const Vec3 _a, const Vec3 _b, float _t) { return { @@ -486,7 +486,7 @@ namespace bx }; } - inline BX_CONSTEXPR_FUNC Vec3 lerp(const Vec3 _a, const Vec3 _b, const Vec3 _t) + inline BX_CONSTEXPR_FUNC Vec3 lerp(const Vec3 _a, const Vec3 _b, const Vec3 _t) { return { @@ -496,14 +496,14 @@ namespace bx }; } - inline BX_CONST_FUNC Vec3 normalize(const Vec3 _a) + inline BX_CONST_FUNC Vec3 normalize(const Vec3 _a) { const float invLen = 1.0f/length(_a); - const Vec3 result = mul(_a, invLen); + const Vec3 result = mul(_a, invLen); return result; } - inline BX_CONSTEXPR_FUNC Vec3 min(const Vec3 _a, const Vec3 _b) + inline BX_CONSTEXPR_FUNC Vec3 min(const Vec3 _a, const Vec3 _b) { return { @@ -513,7 +513,7 @@ namespace bx }; } - inline BX_CONSTEXPR_FUNC Vec3 max(const Vec3 _a, const Vec3 _b) + inline BX_CONSTEXPR_FUNC Vec3 max(const Vec3 _a, const Vec3 _b) { return { @@ -523,7 +523,7 @@ namespace bx }; } - inline BX_CONSTEXPR_FUNC Vec3 rcp(const Vec3 _a) + inline BX_CONSTEXPR_FUNC Vec3 rcp(const Vec3 _a) { return { @@ -588,7 +588,7 @@ namespace bx return result; } - inline void toLatLong(float* _outU, float* _outV, const Vec3 _dir) + inline void toLatLong(float* _outU, float* _outV, const Vec3 _dir) { const float phi = atan2(_dir.x, _dir.z); const float theta = acos(_dir.y); @@ -787,42 +787,11 @@ namespace bx _result[2] = _a[2] - _b[2]; } - inline void vec3Mul(float* _result, const float* _a, const float* _b) - { - _result[0] = _a[0] * _b[0]; - _result[1] = _a[1] * _b[1]; - _result[2] = _a[2] * _b[2]; - } - - inline void vec3Mul(float* _result, const float* _a, float _b) - { - _result[0] = _a[0] * _b; - _result[1] = _a[1] * _b; - _result[2] = _a[2] * _b; - } - inline float vec3Dot(const float* _a, const float* _b) { return _a[0]*_b[0] + _a[1]*_b[1] + _a[2]*_b[2]; } - inline void vec3Cross(float* _result, const float* _a, const float* _b) - { - _result[0] = _a[1]*_b[2] - _a[2]*_b[1]; - _result[1] = _a[2]*_b[0] - _a[0]*_b[2]; - _result[2] = _a[0]*_b[1] - _a[1]*_b[0]; - } - - inline float vec3Norm(float* _result, const float* _a) - { - const float len = sqrt(vec3Dot(_a, _a) ); - const float invLen = 1.0f/len; - _result[0] = _a[0] * invLen; - _result[1] = _a[1] * invLen; - _result[2] = _a[2] * invLen; - return len; - } - inline void mtxIdentity(float* _result) { memSet(_result, 0, sizeof(float)*16); @@ -1108,16 +1077,14 @@ namespace bx inline void calcNormal(float _result[3], const float _va[3], const float _vb[3], const float _vc[3]) { - float ba[3]; - vec3Sub(ba, _vb, _va); + const bx::Vec3 va = bx::load(_va); + const bx::Vec3 vb = bx::load(_vb); + const bx::Vec3 vc = bx::load(_vc); + const bx::Vec3 ba = bx::sub(vb, va); + const bx::Vec3 ca = bx::sub(vc, va); + const bx::Vec3 baxca = bx::cross(ba, ca); - float ca[3]; - vec3Sub(ca, _vc, _va); - - float baxca[3]; - vec3Cross(baxca, ba, ca); - - vec3Norm(_result, baxca); + bx::store(_result, bx::normalize(baxca) ); } inline void calcPlane(float _result[4], const float _va[3], const float _vb[3], const float _vc[3]) @@ -1132,7 +1099,7 @@ namespace bx _result[0] = _normal[0]; _result[1] = _normal[1]; _result[2] = _normal[2]; - _result[3] = -vec3Dot(_normal, _pos); + _result[3] = -dot(bx::load(_normal), bx::load(_pos) ); } inline BX_CONST_FUNC float toLinear(float _a) diff --git a/include/bx/math.h b/include/bx/math.h index 4b67b07..eefeb08 100644 --- a/include/bx/math.h +++ b/include/bx/math.h @@ -381,21 +381,9 @@ namespace bx /// void vec3Sub(float* _result, const float* _a, const float* _b); - /// - void vec3Mul(float* _result, const float* _a, const float* _b); - - /// - void vec3Mul(float* _result, const float* _a, float _b); - /// float vec3Dot(const float* _a, const float* _b); - /// - void vec3Cross(float* _result, const float* _a, const float* _b); - - /// - float vec3Norm(float* _result, const float* _a); - /// void mtxIdentity(float* _result);