summaryrefslogtreecommitdiffstats
path: root/external/include/glm/gtx/simd_quat.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'external/include/glm/gtx/simd_quat.hpp')
-rw-r--r--external/include/glm/gtx/simd_quat.hpp307
1 files changed, 0 insertions, 307 deletions
diff --git a/external/include/glm/gtx/simd_quat.hpp b/external/include/glm/gtx/simd_quat.hpp
deleted file mode 100644
index b134019..0000000
--- a/external/include/glm/gtx/simd_quat.hpp
+++ /dev/null
@@ -1,307 +0,0 @@
-/// @ref gtx_simd_quat
-/// @file glm/gtx/simd_quat.hpp
-///
-/// @see core (dependence)
-///
-/// @defgroup gtx_simd_quat GLM_GTX_simd_quat
-/// @ingroup gtx
-///
-/// @brief SIMD implementation of quat type.
-///
-/// <glm/gtx/simd_quat.hpp> need to be included to use these functionalities.
-
-#pragma once
-
-// Dependency:
-#include "../glm.hpp"
-#include "../gtc/quaternion.hpp"
-#include "../gtx/fast_trigonometry.hpp"
-
-#if GLM_ARCH != GLM_ARCH_PURE
-
-#if GLM_ARCH & GLM_ARCH_SSE2_BIT
-# include "../gtx/simd_mat4.hpp"
-#else
-# error "GLM: GLM_GTX_simd_quat requires compiler support of SSE2 through intrinsics"
-#endif
-
-#if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)
-# pragma message("GLM: GLM_GTX_simd_quat extension included")
-# pragma message("GLM: GLM_GTX_simd_quat extension is deprecated and will be removed in GLM 0.9.9. Use GLM_GTC_quaternion instead and use compiler SIMD arguments.")
-#endif
-
-// Warning silencer for nameless struct/union.
-#if (GLM_COMPILER & GLM_COMPILER_VC)
-# pragma warning(push)
-# pragma warning(disable:4201) // warning C4201: nonstandard extension used : nameless struct/union
-#endif
-
-namespace glm{
-namespace detail
-{
- GLM_ALIGNED_STRUCT(16) fquatSIMD
- {
- typedef float value_type;
- typedef std::size_t size_type;
-
- typedef fquatSIMD type;
- typedef tquat<bool, defaultp> bool_type;
- typedef tquat<float, defaultp> pure_type;
-
-#ifdef GLM_SIMD_ENABLE_XYZW_UNION
- union
- {
- __m128 Data;
- struct {float x, y, z, w;};
- };
-#else
- __m128 Data;
-#endif
-
- //////////////////////////////////////
- // Implicit basic constructors
-
- fquatSIMD() GLM_DEFAULT_CTOR;
- fquatSIMD(fquatSIMD const & q) GLM_DEFAULT;
- fquatSIMD(__m128 const & Data);
-
- //////////////////////////////////////
- // Explicit basic constructors
-
- explicit fquatSIMD(
- ctor);
- explicit fquatSIMD(
- float const & w,
- float const & x,
- float const & y,
- float const & z);
- explicit fquatSIMD(
- quat const & v);
- explicit fquatSIMD(
- vec3 const & eulerAngles);
-
-
- //////////////////////////////////////
- // Unary arithmetic operators
-
- fquatSIMD& operator= (fquatSIMD const & q) GLM_DEFAULT;
- fquatSIMD& operator*=(float const & s);
- fquatSIMD& operator/=(float const & s);
- };
-
-
- //////////////////////////////////////
- // Arithmetic operators
-
- detail::fquatSIMD operator- (
- detail::fquatSIMD const & q);
-
- detail::fquatSIMD operator+ (
- detail::fquatSIMD const & q,
- detail::fquatSIMD const & p);
-
- detail::fquatSIMD operator* (
- detail::fquatSIMD const & q,
- detail::fquatSIMD const & p);
-
- detail::fvec4SIMD operator* (
- detail::fquatSIMD const & q,
- detail::fvec4SIMD const & v);
-
- detail::fvec4SIMD operator* (
- detail::fvec4SIMD const & v,
- detail::fquatSIMD const & q);
-
- detail::fquatSIMD operator* (
- detail::fquatSIMD const & q,
- float s);
-
- detail::fquatSIMD operator* (
- float s,
- detail::fquatSIMD const & q);
-
- detail::fquatSIMD operator/ (
- detail::fquatSIMD const & q,
- float s);
-
-}//namespace detail
-
- /// @addtogroup gtx_simd_quat
- /// @{
-
- typedef glm::detail::fquatSIMD simdQuat;
-
- //! Convert a simdQuat to a quat.
- /// @see gtx_simd_quat
- quat quat_cast(
- detail::fquatSIMD const & x);
-
- //! Convert a simdMat4 to a simdQuat.
- /// @see gtx_simd_quat
- detail::fquatSIMD quatSIMD_cast(
- detail::fmat4x4SIMD const & m);
-
- //! Converts a mat4 to a simdQuat.
- /// @see gtx_simd_quat
- template <typename T, precision P>
- detail::fquatSIMD quatSIMD_cast(
- tmat4x4<T, P> const & m);
-
- //! Converts a mat3 to a simdQuat.
- /// @see gtx_simd_quat
- template <typename T, precision P>
- detail::fquatSIMD quatSIMD_cast(
- tmat3x3<T, P> const & m);
-
- //! Convert a simdQuat to a simdMat4
- /// @see gtx_simd_quat
- detail::fmat4x4SIMD mat4SIMD_cast(
- detail::fquatSIMD const & q);
-
- //! Converts a simdQuat to a standard mat4.
- /// @see gtx_simd_quat
- mat4 mat4_cast(
- detail::fquatSIMD const & q);
-
-
- /// Returns the length of the quaternion.
- ///
- /// @see gtx_simd_quat
- float length(
- detail::fquatSIMD const & x);
-
- /// Returns the normalized quaternion.
- ///
- /// @see gtx_simd_quat
- detail::fquatSIMD normalize(
- detail::fquatSIMD const & x);
-
- /// Returns dot product of q1 and q2, i.e., q1[0] * q2[0] + q1[1] * q2[1] + ...
- ///
- /// @see gtx_simd_quat
- float dot(
- detail::fquatSIMD const & q1,
- detail::fquatSIMD const & q2);
-
- /// Spherical linear interpolation of two quaternions.
- /// The interpolation is oriented and the rotation is performed at constant speed.
- /// For short path spherical linear interpolation, use the slerp function.
- ///
- /// @param x A quaternion
- /// @param y A quaternion
- /// @param a Interpolation factor. The interpolation is defined beyond the range [0, 1].
- /// @tparam T Value type used to build the quaternion. Supported: half, float or double.
- /// @see gtx_simd_quat
- /// @see - slerp(detail::fquatSIMD const & x, detail::fquatSIMD const & y, T const & a)
- detail::fquatSIMD mix(
- detail::fquatSIMD const & x,
- detail::fquatSIMD const & y,
- float const & a);
-
- /// Linear interpolation of two quaternions.
- /// The interpolation is oriented.
- ///
- /// @param x A quaternion
- /// @param y A quaternion
- /// @param a Interpolation factor. The interpolation is defined in the range [0, 1].
- /// @tparam T Value type used to build the quaternion. Supported: half, float or double.
- /// @see gtx_simd_quat
- detail::fquatSIMD lerp(
- detail::fquatSIMD const & x,
- detail::fquatSIMD const & y,
- float const & a);
-
- /// Spherical linear interpolation of two quaternions.
- /// The interpolation always take the short path and the rotation is performed at constant speed.
- ///
- /// @param x A quaternion
- /// @param y A quaternion
- /// @param a Interpolation factor. The interpolation is defined beyond the range [0, 1].
- /// @tparam T Value type used to build the quaternion. Supported: half, float or double.
- /// @see gtx_simd_quat
- detail::fquatSIMD slerp(
- detail::fquatSIMD const & x,
- detail::fquatSIMD const & y,
- float const & a);
-
-
- /// Faster spherical linear interpolation of two unit length quaternions.
- ///
- /// This is the same as mix(), except for two rules:
- /// 1) The two quaternions must be unit length.
- /// 2) The interpolation factor (a) must be in the range [0, 1].
- ///
- /// This will use the equivalent to fastAcos() and fastSin().
- ///
- /// @see gtx_simd_quat
- /// @see - mix(detail::fquatSIMD const & x, detail::fquatSIMD const & y, T const & a)
- detail::fquatSIMD fastMix(
- detail::fquatSIMD const & x,
- detail::fquatSIMD const & y,
- float const & a);
-
- /// Identical to fastMix() except takes the shortest path.
- ///
- /// The same rules apply here as those in fastMix(). Both quaternions must be unit length and 'a' must be
- /// in the range [0, 1].
- ///
- /// @see - fastMix(detail::fquatSIMD const & x, detail::fquatSIMD const & y, T const & a)
- /// @see - slerp(detail::fquatSIMD const & x, detail::fquatSIMD const & y, T const & a)
- detail::fquatSIMD fastSlerp(
- detail::fquatSIMD const & x,
- detail::fquatSIMD const & y,
- float const & a);
-
-
- /// Returns the q conjugate.
- ///
- /// @see gtx_simd_quat
- detail::fquatSIMD conjugate(
- detail::fquatSIMD const & q);
-
- /// Returns the q inverse.
- ///
- /// @see gtx_simd_quat
- detail::fquatSIMD inverse(
- detail::fquatSIMD const & q);
-
- /// Build a quaternion from an angle and a normalized axis.
- ///
- /// @param angle Angle expressed in radians.
- /// @param axis Axis of the quaternion, must be normalized.
- ///
- /// @see gtx_simd_quat
- detail::fquatSIMD angleAxisSIMD(
- float const & angle,
- vec3 const & axis);
-
- /// Build a quaternion from an angle and a normalized axis.
- ///
- /// @param angle Angle expressed in radians.
- /// @param x x component of the x-axis, x, y, z must be a normalized axis
- /// @param y y component of the y-axis, x, y, z must be a normalized axis
- /// @param z z component of the z-axis, x, y, z must be a normalized axis
- ///
- /// @see gtx_simd_quat
- detail::fquatSIMD angleAxisSIMD(
- float const & angle,
- float const & x,
- float const & y,
- float const & z);
-
- // TODO: Move this to somewhere more appropriate. Used with fastMix() and fastSlerp().
- /// Performs the equivalent of glm::fastSin() on each component of the given __m128.
- __m128 fastSin(__m128 x);
-
- /// @}
-}//namespace glm
-
-#include "simd_quat.inl"
-
-
-#if (GLM_COMPILER & GLM_COMPILER_VC)
-# pragma warning(pop)
-#endif
-
-
-#endif//(GLM_ARCH != GLM_ARCH_PURE)