mirror of
https://github.com/JoeyDeVries/LearnOpenGL.git
synced 2026-01-08 01:33:22 +08:00
Updated GLM version w/ now standard radians as angles.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// OpenGL Mathematics Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net)
|
||||
// OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net)
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Created : 2009-05-07
|
||||
// Updated : 2009-05-07
|
||||
@@ -11,7 +11,7 @@ namespace glm{
|
||||
namespace detail{
|
||||
|
||||
template <int Value>
|
||||
struct mask
|
||||
struct shuffle_mask
|
||||
{
|
||||
enum{value = Value};
|
||||
};
|
||||
@@ -19,21 +19,25 @@ struct mask
|
||||
//////////////////////////////////////
|
||||
// Implicit basic constructors
|
||||
|
||||
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD()
|
||||
#ifdef GLM_SIMD_ENABLE_DEFAULT_INIT
|
||||
: Data(_mm_set_ps(0.0f, 0.0f, 0.0f, 0.0f))
|
||||
#endif
|
||||
{}
|
||||
#if !GLM_HAS_DEFAULTED_FUNCTIONS || !defined(GLM_FORCE_NO_CTOR_INIT)
|
||||
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD()
|
||||
# ifdef GLM_FORCE_NO_CTOR_INIT
|
||||
: Data(_mm_set_ps(0.0f, 0.0f, 0.0f, 0.0f))
|
||||
# endif
|
||||
{}
|
||||
#endif//!GLM_HAS_DEFAULTED_FUNCTIONS
|
||||
|
||||
#if !GLM_HAS_DEFAULTED_FUNCTIONS
|
||||
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(fvec4SIMD const & v) :
|
||||
Data(v.Data)
|
||||
{}
|
||||
#endif//!GLM_HAS_DEFAULTED_FUNCTIONS
|
||||
|
||||
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(__m128 const & Data) :
|
||||
Data(Data)
|
||||
{}
|
||||
|
||||
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(fvec4SIMD const & v) :
|
||||
Data(v.Data)
|
||||
{}
|
||||
|
||||
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(tvec4<float> const & v) :
|
||||
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(vec4 const & v) :
|
||||
Data(_mm_set_ps(v.w, v.z, v.y, v.x))
|
||||
{}
|
||||
|
||||
@@ -59,7 +63,7 @@ GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(float const v[4]) :
|
||||
//fvec4SIMD(ref4<float> const & r);
|
||||
|
||||
//////////////////////////////////////
|
||||
// Convertion vector constructors
|
||||
// Conversion vector constructors
|
||||
|
||||
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(vec2 const & v, float const & s1, float const & s2) :
|
||||
Data(_mm_set_ps(s2, s1, v.y, v.x))
|
||||
@@ -92,11 +96,13 @@ GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(vec2 const & v1, vec2 const & v2) :
|
||||
//////////////////////////////////////
|
||||
// Unary arithmetic operators
|
||||
|
||||
GLM_FUNC_QUALIFIER fvec4SIMD& fvec4SIMD::operator=(fvec4SIMD const & v)
|
||||
{
|
||||
this->Data = v.Data;
|
||||
return *this;
|
||||
}
|
||||
#if !GLM_HAS_DEFAULTED_FUNCTIONS
|
||||
GLM_FUNC_QUALIFIER fvec4SIMD& fvec4SIMD::operator=(fvec4SIMD const & v)
|
||||
{
|
||||
this->Data = v.Data;
|
||||
return *this;
|
||||
}
|
||||
#endif//!GLM_HAS_DEFAULTED_FUNCTIONS
|
||||
|
||||
GLM_FUNC_QUALIFIER fvec4SIMD& fvec4SIMD::operator+=(float const & s)
|
||||
{
|
||||
@@ -166,7 +172,7 @@ GLM_FUNC_QUALIFIER fvec4SIMD fvec4SIMD::swizzle() const
|
||||
{
|
||||
__m128 Data = _mm_shuffle_ps(
|
||||
this->Data, this->Data,
|
||||
mask<(W << 6) | (Z << 4) | (Y << 2) | (X << 0)>::value);
|
||||
shuffle_mask<(W << 6) | (Z << 4) | (Y << 2) | (X << 0)>::value);
|
||||
return fvec4SIMD(Data);
|
||||
}
|
||||
|
||||
@@ -175,7 +181,7 @@ GLM_FUNC_QUALIFIER fvec4SIMD& fvec4SIMD::swizzle()
|
||||
{
|
||||
this->Data = _mm_shuffle_ps(
|
||||
this->Data, this->Data,
|
||||
mask<(W << 6) | (Z << 4) | (Y << 2) | (X << 0)>::value);
|
||||
shuffle_mask<(W << 6) | (Z << 4) | (Y << 2) | (X << 0)>::value);
|
||||
return *this;
|
||||
}
|
||||
|
||||
@@ -269,12 +275,12 @@ GLM_FUNC_QUALIFIER fvec4SIMD operator-- (fvec4SIMD const & v, int)
|
||||
|
||||
}//namespace detail
|
||||
|
||||
GLM_FUNC_QUALIFIER detail::tvec4<float> vec4_cast
|
||||
GLM_FUNC_QUALIFIER vec4 vec4_cast
|
||||
(
|
||||
detail::fvec4SIMD const & x
|
||||
)
|
||||
{
|
||||
GLM_ALIGN(16) detail::tvec4<float> Result;
|
||||
GLM_ALIGN(16) vec4 Result;
|
||||
_mm_store_ps(&Result[0], x.Data);
|
||||
return Result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user