Updated ozz-animation to version 0.14.1 @35b2efd4
This commit is contained in:
@@ -152,7 +152,8 @@ typedef const SimdInt4& _SimdInt4;
|
||||
} // namespace ozz
|
||||
#endif // OZZ_SIMD_x
|
||||
|
||||
// Native SIMD operator already exist on some compilers, so they have to be disable from ozz implementation
|
||||
// Native SIMD operator already exist on some compilers, so they have to be
|
||||
// disable from ozz implementation
|
||||
#if !defined(OZZ_SIMD_REF) && (defined(__GNUC__) || defined(__llvm__))
|
||||
#define OZZ_DISABLE_SSE_NATIVE_OPERATORS
|
||||
#endif
|
||||
|
||||
+4
-16
@@ -31,6 +31,7 @@
|
||||
// SIMD refence implementation, based on scalar floats.
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <cassert>
|
||||
#include <cmath>
|
||||
#include <cstddef>
|
||||
@@ -1820,22 +1821,9 @@ OZZ_INLINE bool ToAffine(const Float4x4& _m, SimdFloat4* _translation,
|
||||
}
|
||||
|
||||
OZZ_INLINE Float4x4 Float4x4::FromEuler(_SimdFloat4 _v) {
|
||||
const float ch = std::cos(_v.x);
|
||||
const float sh = std::sin(_v.x);
|
||||
const float ca = std::cos(_v.y);
|
||||
const float sa = std::sin(_v.y);
|
||||
const float cb = std::cos(_v.z);
|
||||
const float sb = std::sin(_v.z);
|
||||
|
||||
const float sa_cb = sa * cb;
|
||||
const float sa_sb = sa * sb;
|
||||
|
||||
const Float4x4 ret = {
|
||||
{{ch * ca, sh * sb - ch * sa_cb, ch * sa_sb + sh * cb, 0.f},
|
||||
{sa, ca * cb, -ca * sb, 0.f},
|
||||
{-sh * ca, sh * sa_cb + ch * sb, -sh * sa_sb + ch * cb, 0.f},
|
||||
{0.f, 0.f, 0.f, 1.f}}};
|
||||
return ret;
|
||||
return Float4x4::FromAxisAngle(simd_float4::y_axis(), SplatX(_v)) *
|
||||
Float4x4::FromAxisAngle(simd_float4::x_axis(), SplatY(_v)) *
|
||||
Float4x4::FromAxisAngle(simd_float4::z_axis(), SplatZ(_v));
|
||||
}
|
||||
|
||||
OZZ_INLINE Float4x4 Float4x4::FromAxisAngle(_SimdFloat4 _axis,
|
||||
|
||||
+6
-22
@@ -31,6 +31,7 @@
|
||||
// SIMD SSE2+ implementation, based on scalar floats.
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <cassert>
|
||||
|
||||
// Temporarly needed while trigonometric functions aren't implemented.
|
||||
@@ -1294,7 +1295,7 @@ OZZ_INLINE SimdInt4 Sign(_SimdInt4 _v) {
|
||||
OZZ_INLINE SimdInt4 Min(_SimdInt4 _a, _SimdInt4 _b) {
|
||||
#ifdef OZZ_SIMD_SSE4_1
|
||||
return _mm_min_epi32(_a, _b);
|
||||
#else // OZZ_SIMD_SSE4_1
|
||||
#else // OZZ_SIMD_SSE4_1
|
||||
return OZZ_SSE_SELECT_I(_mm_cmplt_epi32(_a, _b), _a, _b);
|
||||
#endif // OZZ_SIMD_SSE4_1
|
||||
}
|
||||
@@ -1302,7 +1303,7 @@ OZZ_INLINE SimdInt4 Min(_SimdInt4 _a, _SimdInt4 _b) {
|
||||
OZZ_INLINE SimdInt4 Max(_SimdInt4 _a, _SimdInt4 _b) {
|
||||
#ifdef OZZ_SIMD_SSE4_1
|
||||
return _mm_max_epi32(_a, _b);
|
||||
#else // OZZ_SIMD_SSE4_1
|
||||
#else // OZZ_SIMD_SSE4_1
|
||||
return OZZ_SSE_SELECT_I(_mm_cmpgt_epi32(_a, _b), _a, _b);
|
||||
#endif // OZZ_SIMD_SSE4_1
|
||||
}
|
||||
@@ -1775,26 +1776,9 @@ inline bool ToAffine(const Float4x4& _m, SimdFloat4* _translation,
|
||||
}
|
||||
|
||||
inline Float4x4 Float4x4::FromEuler(_SimdFloat4 _v) {
|
||||
const __m128 cos = Cos(_v);
|
||||
const __m128 sin = Sin(_v);
|
||||
|
||||
const float cx = GetX(cos);
|
||||
const float sx = GetX(sin);
|
||||
const float cy = GetY(cos);
|
||||
const float sy = GetY(sin);
|
||||
const float cz = GetZ(cos);
|
||||
const float sz = GetZ(sin);
|
||||
|
||||
const float sycz = sy * cz;
|
||||
const float sysz = sy * sz;
|
||||
|
||||
const Float4x4 ret = {{simd_float4::Load(cx * cy, sx * sz - cx * sycz,
|
||||
cx * sysz + sx * cz, 0.f),
|
||||
simd_float4::Load(sy, cy * cz, -cy * sz, 0.f),
|
||||
simd_float4::Load(-sx * cy, sx * sycz + cx * sz,
|
||||
-sx * sysz + cx * cz, 0.f),
|
||||
simd_float4::w_axis()}};
|
||||
return ret;
|
||||
return Float4x4::FromAxisAngle(simd_float4::y_axis(), SplatX(_v)) *
|
||||
Float4x4::FromAxisAngle(simd_float4::x_axis(), SplatY(_v)) *
|
||||
Float4x4::FromAxisAngle(simd_float4::z_axis(), SplatZ(_v));
|
||||
}
|
||||
|
||||
inline Float4x4 Float4x4::FromAxisAngle(_SimdFloat4 _axis, _SimdFloat4 _angle) {
|
||||
|
||||
Reference in New Issue
Block a user