(GLM) Cut down on GLM_FUNC_QUALIFIER

This commit is contained in:
twinaphex 2016-11-03 13:20:25 +01:00
parent 0f369ff3a9
commit 99f8f49e8a
100 changed files with 2010 additions and 2297 deletions

View File

@ -33,96 +33,75 @@ namespace glm{
namespace detail
{
template <typename T>
GLM_FUNC_QUALIFIER T mod289(T const & x)
inline T mod289(T const & x)
{
return x - floor(x * static_cast<T>(1.0) / static_cast<T>(289.0)) * static_cast<T>(289.0);
}
template <typename T>
GLM_FUNC_QUALIFIER T permute(T const & x)
inline T permute(T const & x)
{
return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> permute(tvec2<T, P> const & x)
inline tvec2<T, P> permute(tvec2<T, P> const & x)
{
return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> permute(tvec3<T, P> const & x)
inline tvec3<T, P> permute(tvec3<T, P> const & x)
{
return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> permute(tvec4<T, P> const & x)
inline tvec4<T, P> permute(tvec4<T, P> const & x)
{
return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
}
/*
template <typename T, precision P, template<typename> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> permute(vecType<T, P> const & x)
{
return mod289(((x * T(34)) + T(1)) * x);
}
*/
template <typename T>
GLM_FUNC_QUALIFIER T taylorInvSqrt(T const & r)
inline T taylorInvSqrt(T const & r)
{
return T(1.79284291400159) - T(0.85373472095314) * r;
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> taylorInvSqrt(detail::tvec2<T, P> const & r)
inline detail::tvec2<T, P> taylorInvSqrt(detail::tvec2<T, P> const & r)
{
return T(1.79284291400159) - T(0.85373472095314) * r;
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> taylorInvSqrt(detail::tvec3<T, P> const & r)
inline detail::tvec3<T, P> taylorInvSqrt(detail::tvec3<T, P> const & r)
{
return T(1.79284291400159) - T(0.85373472095314) * r;
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> taylorInvSqrt(detail::tvec4<T, P> const & r)
inline detail::tvec4<T, P> taylorInvSqrt(detail::tvec4<T, P> const & r)
{
return T(1.79284291400159) - T(0.85373472095314) * r;
}
/*
template <typename T, precision P, template<typename> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> taylorInvSqrt(vecType<T, P> const & r)
{
return T(1.79284291400159) - T(0.85373472095314) * r;
}
*/
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> fade(detail::tvec2<T, P> const & t)
inline detail::tvec2<T, P> fade(detail::tvec2<T, P> const & t)
{
return (t * t * t) * (t * (t * T(6) - T(15)) + T(10));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> fade(detail::tvec3<T, P> const & t)
inline detail::tvec3<T, P> fade(detail::tvec3<T, P> const & t)
{
return (t * t * t) * (t * (t * T(6) - T(15)) + T(10));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> fade(detail::tvec4<T, P> const & t)
inline detail::tvec4<T, P> fade(detail::tvec4<T, P> const & t)
{
return (t * t * t) * (t * (t * T(6) - T(15)) + T(10));
}
/*
template <typename T, precision P, template <typename> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> fade(vecType<T, P> const & t)
{
return (t * t * t) * (t * (t * T(6) - T(15)) + T(10));
}
*/
}//namespace detail
}//namespace glm

View File

@ -39,8 +39,8 @@ namespace detail
typedef T value_type;
protected:
GLM_FUNC_QUALIFIER value_type& elem (size_t i) { return (reinterpret_cast<value_type*>(_buffer))[i]; }
GLM_FUNC_QUALIFIER const value_type& elem (size_t i) const { return (reinterpret_cast<const value_type*>(_buffer))[i]; }
inline value_type& elem (size_t i) { return (reinterpret_cast<value_type*>(_buffer))[i]; }
inline const value_type& elem (size_t i) const { return (reinterpret_cast<const value_type*>(_buffer))[i]; }
// Use an opaque buffer to *ensure* the compiler doesn't call a constructor.
// The size 1 buffer is assumed to aligned to the actual members so that the
@ -56,19 +56,19 @@ namespace detail
template <typename T, precision P, typename V, int E0, int E1>
struct _swizzle_base1<T, P, V,E0,E1,-1,-2,2> : public _swizzle_base0<T, 2>
{
GLM_FUNC_QUALIFIER V operator ()() const { return V(this->elem(E0), this->elem(E1)); }
inline V operator ()() const { return V(this->elem(E0), this->elem(E1)); }
};
template <typename T, precision P, typename V, int E0, int E1, int E2>
struct _swizzle_base1<T, P, V,E0,E1,E2,-1,3> : public _swizzle_base0<T, 3>
{
GLM_FUNC_QUALIFIER V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2)); }
inline V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2)); }
};
template <typename T, precision P, typename V, int E0, int E1, int E2, int E3>
struct _swizzle_base1<T, P, V,E0,E1,E2,E3,4> : public _swizzle_base0<T, 4>
{
GLM_FUNC_QUALIFIER V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2), this->elem(E3)); }
inline V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2), this->elem(E3)); }
};
// Internal class for implementing swizzle operators
@ -89,67 +89,67 @@ namespace detail
typedef VecType vec_type;
typedef ValueType value_type;
GLM_FUNC_QUALIFIER _swizzle_base2& operator= (const ValueType& t)
inline _swizzle_base2& operator= (const ValueType& t)
{
for (int i = 0; i < N; ++i)
(*this)[i] = t;
return *this;
}
GLM_FUNC_QUALIFIER _swizzle_base2& operator= (const VecType& that)
inline _swizzle_base2& operator= (const VecType& that)
{
struct op {
GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e = t; }
inline void operator() (value_type& e, value_type& t) { e = t; }
};
_apply_op(that, op());
return *this;
}
GLM_FUNC_QUALIFIER void operator -= (const VecType& that)
inline void operator -= (const VecType& that)
{
struct op {
GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e -= t; }
inline void operator() (value_type& e, value_type& t) { e -= t; }
};
_apply_op(that, op());
}
GLM_FUNC_QUALIFIER void operator += (const VecType& that)
inline void operator += (const VecType& that)
{
struct op {
GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e += t; }
inline void operator() (value_type& e, value_type& t) { e += t; }
};
_apply_op(that, op());
}
GLM_FUNC_QUALIFIER void operator *= (const VecType& that)
inline void operator *= (const VecType& that)
{
struct op {
GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e *= t; }
inline void operator() (value_type& e, value_type& t) { e *= t; }
};
_apply_op(that, op());
}
GLM_FUNC_QUALIFIER void operator /= (const VecType& that)
inline void operator /= (const VecType& that)
{
struct op {
GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e /= t; }
inline void operator() (value_type& e, value_type& t) { e /= t; }
};
_apply_op(that, op());
}
GLM_FUNC_QUALIFIER value_type& operator[] (size_t i)
inline value_type& operator[] (size_t i)
{
static const int offset_dst[4] = { E0, E1, E2, E3 };
return this->elem(offset_dst[i]);
}
GLM_FUNC_QUALIFIER value_type operator[] (size_t i) const
inline value_type operator[] (size_t i) const
{
static const int offset_dst[4] = { E0, E1, E2, E3 };
return this->elem(offset_dst[i]);
}
protected:
template <typename T>
GLM_FUNC_QUALIFIER void _apply_op(const VecType& that, T op)
inline void _apply_op(const VecType& that, T op)
{
// Make a copy of the data in this == &that.
// The copier should optimize out the copy in cases where the function is
@ -170,9 +170,9 @@ namespace detail
typedef ValueType value_type;
struct Stub {};
GLM_FUNC_QUALIFIER _swizzle_base2& operator= (Stub const &) { return *this; }
inline _swizzle_base2& operator= (Stub const &) { return *this; }
GLM_FUNC_QUALIFIER value_type operator[] (size_t i) const
inline value_type operator[] (size_t i) const
{
static const int offset_dst[4] = { E0, E1, E2, E3 };
return this->elem(offset_dst[i]);
@ -186,7 +186,7 @@ namespace detail
using base_type::operator=;
GLM_FUNC_QUALIFIER operator VecType () const { return (*this)(); }
inline operator VecType () const { return (*this)(); }
};
//
@ -202,17 +202,17 @@ namespace detail
//
#define _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \
_GLM_SWIZZLE_TEMPLATE2 \
GLM_FUNC_QUALIFIER V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \
inline V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \
{ \
return a() OPERAND b(); \
} \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const V& b) \
inline V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const V& b) \
{ \
return a() OPERAND b; \
} \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER V operator OPERAND ( const V& a, const _GLM_SWIZZLE_TYPE1& b) \
inline V operator OPERAND ( const V& a, const _GLM_SWIZZLE_TYPE1& b) \
{ \
return a OPERAND b(); \
}
@ -222,12 +222,12 @@ namespace detail
//
#define _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const T& b) \
inline V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const T& b) \
{ \
return a() OPERAND b; \
} \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER V operator OPERAND ( const T& a, const _GLM_SWIZZLE_TYPE1& b) \
inline V operator OPERAND ( const T& a, const _GLM_SWIZZLE_TYPE1& b) \
{ \
return a OPERAND b(); \
}
@ -237,7 +237,7 @@ namespace detail
//
#define _GLM_SWIZZLE_FUNCTION_1_ARGS(RETURN_TYPE,FUNCTION) \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a) \
inline typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a) \
{ \
return FUNCTION(a()); \
}
@ -247,22 +247,22 @@ namespace detail
//
#define _GLM_SWIZZLE_FUNCTION_2_ARGS(RETURN_TYPE,FUNCTION) \
_GLM_SWIZZLE_TEMPLATE2 \
GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \
inline typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \
{ \
return FUNCTION(a(), b()); \
} \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b) \
inline typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b) \
{ \
return FUNCTION(a(), b()); \
} \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename V& b) \
inline typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename V& b) \
{ \
return FUNCTION(a(), b); \
} \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const V& a, const _GLM_SWIZZLE_TYPE1& b) \
inline typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const V& a, const _GLM_SWIZZLE_TYPE1& b) \
{ \
return FUNCTION(a, b()); \
}
@ -272,22 +272,22 @@ namespace detail
//
#define _GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(RETURN_TYPE,FUNCTION) \
_GLM_SWIZZLE_TEMPLATE2 \
GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b, const T& c) \
inline typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b, const T& c) \
{ \
return FUNCTION(a(), b(), c); \
} \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \
inline typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \
{ \
return FUNCTION(a(), b(), c); \
} \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename S0::vec_type& b, const T& c)\
inline typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename S0::vec_type& b, const T& c)\
{ \
return FUNCTION(a(), b, c); \
} \
_GLM_SWIZZLE_TEMPLATE1 \
GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const typename V& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \
inline typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const typename V& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \
{ \
return FUNCTION(a, b(), c); \
}

View File

@ -36,7 +36,7 @@
#define VECTORIZE1_VEC(func) \
template <typename T, precision P> \
GLM_FUNC_QUALIFIER detail::tvec1<T, P> func( \
inline detail::tvec1<T, P> func( \
detail::tvec1<T, P> const & v) \
{ \
return detail::tvec1<T, P>( \
@ -45,7 +45,7 @@
#define VECTORIZE2_VEC(func) \
template <typename T, precision P> \
GLM_FUNC_QUALIFIER detail::tvec2<T, P> func( \
inline detail::tvec2<T, P> func( \
detail::tvec2<T, P> const & v) \
{ \
return detail::tvec2<T, P>( \
@ -55,7 +55,7 @@
#define VECTORIZE3_VEC(func) \
template <typename T, precision P> \
GLM_FUNC_QUALIFIER detail::tvec3<T, P> func( \
inline detail::tvec3<T, P> func( \
detail::tvec3<T, P> const & v) \
{ \
return detail::tvec3<T, P>( \
@ -66,7 +66,7 @@
#define VECTORIZE4_VEC(func) \
template <typename T, precision P> \
GLM_FUNC_QUALIFIER detail::tvec4<T, P> func( \
inline detail::tvec4<T, P> func( \
detail::tvec4<T, P> const & v) \
{ \
return detail::tvec4<T, P>( \
@ -84,7 +84,7 @@
#define VECTORIZE1_VEC_SCA(func) \
template <typename T, precision P> \
GLM_FUNC_QUALIFIER detail::tvec1<T, P> func \
inline detail::tvec1<T, P> func \
( \
detail::tvec1<T, P> const & x, \
T const & y \
@ -96,7 +96,7 @@
#define VECTORIZE2_VEC_SCA(func) \
template <typename T, precision P> \
GLM_FUNC_QUALIFIER detail::tvec2<T, P> func \
inline detail::tvec2<T, P> func \
( \
detail::tvec2<T, P> const & x, \
T const & y \
@ -109,7 +109,7 @@
#define VECTORIZE3_VEC_SCA(func) \
template <typename T, precision P> \
GLM_FUNC_QUALIFIER detail::tvec3<T, P> func \
inline detail::tvec3<T, P> func \
( \
detail::tvec3<T, P> const & x, \
T const & y \
@ -123,7 +123,7 @@
#define VECTORIZE4_VEC_SCA(func) \
template <typename T, precision P> \
GLM_FUNC_QUALIFIER detail::tvec4<T, P> func \
inline detail::tvec4<T, P> func \
( \
detail::tvec4<T, P> const & x, \
T const & y \
@ -144,7 +144,7 @@
#define VECTORIZE2_VEC_VEC(func) \
template <typename T, precision P> \
GLM_FUNC_QUALIFIER detail::tvec2<T, P> func \
inline detail::tvec2<T, P> func \
( \
detail::tvec2<T, P> const & x, \
detail::tvec2<T, P> const & y \
@ -157,7 +157,7 @@
#define VECTORIZE3_VEC_VEC(func) \
template <typename T, precision P> \
GLM_FUNC_QUALIFIER detail::tvec3<T, P> func \
inline detail::tvec3<T, P> func \
( \
detail::tvec3<T, P> const & x, \
detail::tvec3<T, P> const & y \
@ -171,7 +171,7 @@
#define VECTORIZE4_VEC_VEC(func) \
template <typename T, precision P> \
GLM_FUNC_QUALIFIER detail::tvec4<T, P> func \
inline detail::tvec4<T, P> func \
( \
detail::tvec4<T, P> const & x, \
detail::tvec4<T, P> const & y \
@ -196,7 +196,7 @@ namespace detail
struct If
{
template<typename F, typename T>
static GLM_FUNC_QUALIFIER T apply(F functor, const T& val)
static inline T apply(F functor, const T& val)
{
return functor(val);
}
@ -206,7 +206,7 @@ namespace detail
struct If<false>
{
template<typename F, typename T>
static GLM_FUNC_QUALIFIER T apply(F, const T& val)
static inline T apply(F, const T& val)
{
return val;
}

View File

@ -43,7 +43,7 @@ namespace detail
template <typename genFIType>
struct compute_abs<genFIType, true>
{
GLM_FUNC_QUALIFIER static genFIType call(genFIType const & x)
inline static genFIType call(genFIType const & x)
{
return x >= genFIType(0) ? x : -x;
}
@ -52,7 +52,7 @@ namespace detail
template <typename genFIType>
struct compute_abs<genFIType, false>
{
GLM_FUNC_QUALIFIER static genFIType call(genFIType const & x)
inline static genFIType call(genFIType const & x)
{
return x;
}
@ -61,7 +61,7 @@ namespace detail
template <typename T, typename U, precision P, template <class, precision> class vecType>
struct compute_mix_vector
{
GLM_FUNC_QUALIFIER static vecType<T, P> call(vecType<T, P> const & x, vecType<T, P> const & y, vecType<U, P> const & a)
inline static vecType<T, P> call(vecType<T, P> const & x, vecType<T, P> const & y, vecType<U, P> const & a)
{
return vecType<T, P>(vecType<U, P>(x) + a * vecType<U, P>(y - x));
}
@ -70,7 +70,7 @@ namespace detail
template <typename T, precision P, template <class, precision> class vecType>
struct compute_mix_vector<T, bool, P, vecType>
{
GLM_FUNC_QUALIFIER static vecType<T, P> call(vecType<T, P> const & x, vecType<T, P> const & y, vecType<bool, P> const & a)
inline static vecType<T, P> call(vecType<T, P> const & x, vecType<T, P> const & y, vecType<bool, P> const & a)
{
vecType<T, P> Result;
for(length_t i = 0; i < x.length(); ++i)
@ -82,7 +82,7 @@ namespace detail
template <typename T, typename U, precision P, template <class, precision> class vecType>
struct compute_mix_scalar
{
GLM_FUNC_QUALIFIER static vecType<T, P> call(vecType<T, P> const & x, vecType<T, P> const & y, U const & a)
inline static vecType<T, P> call(vecType<T, P> const & x, vecType<T, P> const & y, U const & a)
{
return vecType<T, P>(vecType<U, P>(x) + a * vecType<U, P>(y - x));
}
@ -91,7 +91,7 @@ namespace detail
template <typename T, precision P, template <class, precision> class vecType>
struct compute_mix_scalar<T, bool, P, vecType>
{
GLM_FUNC_QUALIFIER static vecType<T, P> call(vecType<T, P> const & x, vecType<T, P> const & y, bool const & a)
inline static vecType<T, P> call(vecType<T, P> const & x, vecType<T, P> const & y, bool const & a)
{
return a ? y : x;
}
@ -100,7 +100,7 @@ namespace detail
template <typename T, typename U>
struct compute_mix
{
GLM_FUNC_QUALIFIER static T call(T const & x, T const & y, U const & a)
inline static T call(T const & x, T const & y, U const & a)
{
return static_cast<T>(static_cast<U>(x) + a * static_cast<U>(y - x));
}
@ -109,7 +109,7 @@ namespace detail
template <typename T>
struct compute_mix<T, bool>
{
GLM_FUNC_QUALIFIER static T call(T const & x, T const & y, bool const & a)
inline static T call(T const & x, T const & y, bool const & a)
{
return a ? y : x;
}
@ -118,7 +118,7 @@ namespace detail
// abs
template <typename genFIType>
GLM_FUNC_QUALIFIER genFIType abs
inline genFIType abs
(
genFIType const & x
)
@ -131,7 +131,7 @@ namespace detail
// sign
//Try something like based on x >> 31 to get the sign bit
template <typename genFIType>
GLM_FUNC_QUALIFIER genFIType sign
inline genFIType sign
(
genFIType const & x
)
@ -147,7 +147,7 @@ namespace detail
// floor
template <typename genType>
GLM_FUNC_QUALIFIER genType floor(genType const & x)
inline genType floor(genType const & x)
{
return ::std::floor(x);
}
@ -156,7 +156,7 @@ namespace detail
// trunc
template <typename genType>
GLM_FUNC_QUALIFIER genType trunc(genType const & x)
inline genType trunc(genType const & x)
{
// TODO, add C++11 std::trunk
return x < 0 ? -floor(-x) : floor(x);
@ -166,7 +166,7 @@ namespace detail
// round
template <typename genType>
GLM_FUNC_QUALIFIER genType round(genType const& x)
inline genType round(genType const& x)
{
// TODO, add C++11 std::round
return x < 0 ? genType(int(x - genType(0.5))) : genType(int(x + genType(0.5)));
@ -176,7 +176,7 @@ namespace detail
// roundEven
template <typename genType>
GLM_FUNC_QUALIFIER genType roundEven(genType const & x)
inline genType roundEven(genType const & x)
{
int Integer = static_cast<int>(x);
genType IntegerPart = static_cast<genType>(Integer);
@ -195,7 +195,7 @@ namespace detail
// ceil
template <typename genType>
GLM_FUNC_QUALIFIER genType ceil(genType const & x)
inline genType ceil(genType const & x)
{
return ::std::ceil(x);
}
@ -204,7 +204,7 @@ namespace detail
// fract
template <typename genType>
GLM_FUNC_QUALIFIER genType fract
inline genType fract
(
genType const & x
)
@ -216,7 +216,7 @@ namespace detail
// mod
template <typename genType>
GLM_FUNC_QUALIFIER genType mod
inline genType mod
(
genType const & x,
genType const & y
@ -230,7 +230,7 @@ namespace detail
// modf
template <typename genType>
GLM_FUNC_QUALIFIER genType modf
inline genType modf
(
genType const & x,
genType & i
@ -240,7 +240,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> modf
inline detail::tvec2<T, P> modf
(
detail::tvec2<T, P> const & x,
detail::tvec2<T, P> & i
@ -252,7 +252,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> modf
inline detail::tvec3<T, P> modf
(
detail::tvec3<T, P> const & x,
detail::tvec3<T, P> & i
@ -265,7 +265,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> modf
inline detail::tvec4<T, P> modf
(
detail::tvec4<T, P> const & x,
detail::tvec4<T, P> & i
@ -280,7 +280,7 @@ namespace detail
// min
template <typename genType>
GLM_FUNC_QUALIFIER genType min
inline genType min
(
genType const & x,
genType const & y
@ -294,7 +294,7 @@ namespace detail
// max
template <typename genType>
GLM_FUNC_QUALIFIER genType max
inline genType max
(
genType const & x,
genType const & y
@ -308,7 +308,7 @@ namespace detail
// clamp
template <typename genType>
GLM_FUNC_QUALIFIER genType clamp
inline genType clamp
(
genType const & x,
genType const & minVal,
@ -319,7 +319,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> clamp
inline detail::tvec2<T, P> clamp
(
detail::tvec2<T, P> const & x,
T const & minVal,
@ -332,7 +332,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> clamp
inline detail::tvec3<T, P> clamp
(
detail::tvec3<T, P> const & x,
T const & minVal,
@ -346,7 +346,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> clamp
inline detail::tvec4<T, P> clamp
(
detail::tvec4<T, P> const & x,
T const & minVal,
@ -361,7 +361,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> clamp
inline detail::tvec2<T, P> clamp
(
detail::tvec2<T, P> const & x,
detail::tvec2<T, P> const & minVal,
@ -374,7 +374,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> clamp
inline detail::tvec3<T, P> clamp
(
detail::tvec3<T, P> const & x,
detail::tvec3<T, P> const & minVal,
@ -388,7 +388,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> clamp
inline detail::tvec4<T, P> clamp
(
detail::tvec4<T, P> const & x,
detail::tvec4<T, P> const & minVal,
@ -403,7 +403,7 @@ namespace detail
}
template <typename T, typename U, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> mix
inline vecType<T, P> mix
(
vecType<T, P> const & x,
vecType<T, P> const & y,
@ -414,7 +414,7 @@ namespace detail
}
template <typename T, typename U, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> mix
inline vecType<T, P> mix
(
vecType<T, P> const & x,
vecType<T, P> const & y,
@ -425,7 +425,7 @@ namespace detail
}
template <typename genTypeT, typename genTypeU>
GLM_FUNC_QUALIFIER genTypeT mix
inline genTypeT mix
(
genTypeT const & x,
genTypeT const & y,
@ -437,7 +437,7 @@ namespace detail
// step
template <typename genType>
GLM_FUNC_QUALIFIER genType step
inline genType step
(
genType const & edge,
genType const & x
@ -447,7 +447,7 @@ namespace detail
}
template <template <typename, precision> class vecType, typename T, precision P>
GLM_FUNC_QUALIFIER vecType<T, P> step
inline vecType<T, P> step
(
T const & edge,
vecType<T, P> const & x
@ -458,7 +458,7 @@ namespace detail
// smoothstep
template <typename genType>
GLM_FUNC_QUALIFIER genType smoothstep
inline genType smoothstep
(
genType const & edge0,
genType const & edge1,
@ -470,7 +470,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> smoothstep
inline detail::tvec2<T, P> smoothstep
(
T const & edge0,
T const & edge1,
@ -483,7 +483,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> smoothstep
inline detail::tvec3<T, P> smoothstep
(
T const & edge0,
T const & edge1,
@ -497,7 +497,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> smoothstep
inline detail::tvec4<T, P> smoothstep
(
T const & edge0,
T const & edge1,
@ -512,7 +512,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> smoothstep
inline detail::tvec2<T, P> smoothstep
(
detail::tvec2<T, P> const & edge0,
detail::tvec2<T, P> const & edge1,
@ -525,7 +525,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> smoothstep
inline detail::tvec3<T, P> smoothstep
(
detail::tvec3<T, P> const & edge0,
detail::tvec3<T, P> const & edge1,
@ -539,7 +539,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> smoothstep
inline detail::tvec4<T, P> smoothstep
(
detail::tvec4<T, P> const & edge0,
detail::tvec4<T, P> const & edge1,
@ -555,7 +555,7 @@ namespace detail
// TODO: Not working on MinGW...
template <typename genType>
GLM_FUNC_QUALIFIER bool isnan(genType const & x)
inline bool isnan(genType const & x)
{
# if(GLM_COMPILER & (GLM_COMPILER_VC | GLM_COMPILER_INTEL))
return _isnan(x) != 0;
@ -573,7 +573,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename detail::tvec2<T, P>::bool_type isnan
inline typename detail::tvec2<T, P>::bool_type isnan
(
detail::tvec2<T, P> const & x
)
@ -584,7 +584,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename detail::tvec3<T, P>::bool_type isnan
inline typename detail::tvec3<T, P>::bool_type isnan
(
detail::tvec3<T, P> const & x
)
@ -596,7 +596,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename detail::tvec4<T, P>::bool_type isnan
inline typename detail::tvec4<T, P>::bool_type isnan
(
detail::tvec4<T, P> const & x
)
@ -609,7 +609,7 @@ namespace detail
}
template <typename genType>
GLM_FUNC_QUALIFIER bool isinf(
inline bool isinf(
genType const & x)
{
# if(GLM_COMPILER & (GLM_COMPILER_INTEL | GLM_COMPILER_VC))
@ -629,7 +629,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename detail::tvec2<T, P>::bool_type isinf
inline typename detail::tvec2<T, P>::bool_type isinf
(
detail::tvec2<T, P> const & x
)
@ -640,7 +640,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename detail::tvec3<T, P>::bool_type isinf
inline typename detail::tvec3<T, P>::bool_type isinf
(
detail::tvec3<T, P> const & x
)
@ -652,7 +652,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename detail::tvec4<T, P>::bool_type isinf
inline typename detail::tvec4<T, P>::bool_type isinf
(
detail::tvec4<T, P> const & x
)
@ -664,7 +664,7 @@ namespace detail
isinf(x.w));
}
GLM_FUNC_QUALIFIER int floatBitsToInt(float const & v)
inline int floatBitsToInt(float const & v)
{
int Bits;
std::memcpy(&Bits, &v, sizeof(Bits));
@ -672,14 +672,14 @@ namespace detail
}
template <template <typename, precision> class vecType, precision P>
GLM_FUNC_QUALIFIER vecType<int, P> floatBitsToInt(vecType<float, P> const & v)
inline vecType<int, P> floatBitsToInt(vecType<float, P> const & v)
{
int Bits;
std::memcpy(&Bits, &v, sizeof(Bits));
return Bits;
}
GLM_FUNC_QUALIFIER uint floatBitsToUint(float const & v)
inline uint floatBitsToUint(float const & v)
{
float Float;
std::memcpy(&Float, &v, sizeof(Float));
@ -687,35 +687,35 @@ namespace detail
}
template <template <typename, precision> class vecType, precision P>
GLM_FUNC_QUALIFIER vecType<uint, P> floatBitsToUint(vecType<float, P> const & v)
inline vecType<uint, P> floatBitsToUint(vecType<float, P> const & v)
{
return reinterpret_cast<vecType<uint, P>&>(const_cast<vecType<float, P>&>(v));
}
GLM_FUNC_QUALIFIER float intBitsToFloat(int const & v)
inline float intBitsToFloat(int const & v)
{
return reinterpret_cast<float&>(const_cast<int&>(v));
}
template <template <typename, precision> class vecType, precision P>
GLM_FUNC_QUALIFIER vecType<float, P> intBitsToFloat(vecType<int, P> const & v)
inline vecType<float, P> intBitsToFloat(vecType<int, P> const & v)
{
return reinterpret_cast<vecType<float, P>&>(const_cast<vecType<int, P>&>(v));
}
GLM_FUNC_QUALIFIER float uintBitsToFloat(uint const & v)
inline float uintBitsToFloat(uint const & v)
{
return reinterpret_cast<float&>(const_cast<uint&>(v));
}
template <template <typename, precision> class vecType, precision P>
GLM_FUNC_QUALIFIER vecType<float, P> uintBitsToFloat(vecType<uint, P> const & v)
inline vecType<float, P> uintBitsToFloat(vecType<uint, P> const & v)
{
return reinterpret_cast<vecType<float, P>&>(const_cast<vecType<uint, P>&>(v));
}
template <typename genType>
GLM_FUNC_QUALIFIER genType fma
inline genType fma
(
genType const & a,
genType const & b,
@ -726,7 +726,7 @@ namespace detail
}
template <typename genType>
GLM_FUNC_QUALIFIER genType frexp
inline genType frexp
(
genType const & x,
int & exp
@ -736,7 +736,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> frexp
inline detail::tvec2<T, P> frexp
(
detail::tvec2<T, P> const & x,
detail::tvec2<int, P> & exp
@ -748,7 +748,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> frexp
inline detail::tvec3<T, P> frexp
(
detail::tvec3<T, P> const & x,
detail::tvec3<int, P> & exp
@ -761,7 +761,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> frexp
inline detail::tvec4<T, P> frexp
(
detail::tvec4<T, P> const & x,
detail::tvec4<int, P> & exp
@ -775,7 +775,7 @@ namespace detail
}
template <typename genType, precision P>
GLM_FUNC_QUALIFIER genType ldexp
inline genType ldexp
(
genType const & x,
int const & exp
@ -785,7 +785,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> ldexp
inline detail::tvec2<T, P> ldexp
(
detail::tvec2<T, P> const & x,
detail::tvec2<int, P> const & exp
@ -797,7 +797,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> ldexp
inline detail::tvec3<T, P> ldexp
(
detail::tvec3<T, P> const & x,
detail::tvec3<int, P> const & exp
@ -810,7 +810,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> ldexp
inline detail::tvec4<T, P> ldexp
(
detail::tvec4<T, P> const & x,
detail::tvec4<int, P> const & exp

View File

@ -45,7 +45,7 @@ namespace detail
struct compute_log2<true>
{
template <typename T>
GLM_FUNC_QUALIFIER T operator() (T const & Value) const
inline T operator() (T const & Value) const
{
return static_cast<T>(::std::log(Value)) * static_cast<T>(1.4426950408889634073599246810019);
}
@ -54,7 +54,7 @@ namespace detail
template <template <class, precision> class vecType, typename T, precision P>
struct compute_inversesqrt
{
GLM_FUNC_QUALIFIER static vecType<T, P> call(vecType<T, P> const & x)
inline static vecType<T, P> call(vecType<T, P> const & x)
{
return static_cast<T>(1) / sqrt(x);
}
@ -63,7 +63,7 @@ namespace detail
template <template <class, precision> class vecType>
struct compute_inversesqrt<vecType, float, lowp>
{
GLM_FUNC_QUALIFIER static vecType<float, lowp> call(vecType<float, lowp> const & x)
inline static vecType<float, lowp> call(vecType<float, lowp> const & x)
{
vecType<float, lowp> tmp(x);
vecType<float, lowp> xhalf(tmp * 0.5f);
@ -79,7 +79,7 @@ namespace detail
// pow
template <typename genType>
GLM_FUNC_QUALIFIER genType pow
inline genType pow
(
genType const & x,
genType const & y
@ -92,7 +92,7 @@ namespace detail
// exp
template <typename genType>
GLM_FUNC_QUALIFIER genType exp
inline genType exp
(
genType const & x
)
@ -104,7 +104,7 @@ namespace detail
// log
template <typename genType>
GLM_FUNC_QUALIFIER genType log
inline genType log
(
genType const & x
)
@ -116,7 +116,7 @@ namespace detail
//exp2, ln2 = 0.69314718055994530941723212145818f
template <typename genType>
GLM_FUNC_QUALIFIER genType exp2(genType const & x)
inline genType exp2(genType const & x)
{
return std::exp(static_cast<genType>(0.69314718055994530941723212145818) * x);
}
@ -125,7 +125,7 @@ namespace detail
// log2, ln2 = 0.69314718055994530941723212145818f
template <typename genType>
GLM_FUNC_QUALIFIER genType log2(genType x)
inline genType log2(genType x)
{
assert(x > genType(0)); // log2 is only defined on the range (0, inf]
return detail::compute_log2<std::numeric_limits<genType>::is_iec559>()(x);
@ -141,7 +141,7 @@ namespace detail
template <typename T, precision P>
struct compute_sqrt<detail::tvec1, T, P>
{
GLM_FUNC_QUALIFIER static detail::tvec1<T, P> call(detail::tvec1<T, P> const & x)
inline static detail::tvec1<T, P> call(detail::tvec1<T, P> const & x)
{
return detail::tvec1<T, P>(std::sqrt(x.x));
}
@ -150,7 +150,7 @@ namespace detail
template <typename T, precision P>
struct compute_sqrt<detail::tvec2, T, P>
{
GLM_FUNC_QUALIFIER static detail::tvec2<T, P> call(detail::tvec2<T, P> const & x)
inline static detail::tvec2<T, P> call(detail::tvec2<T, P> const & x)
{
return detail::tvec2<T, P>(std::sqrt(x.x), std::sqrt(x.y));
}
@ -159,7 +159,7 @@ namespace detail
template <typename T, precision P>
struct compute_sqrt<detail::tvec3, T, P>
{
GLM_FUNC_QUALIFIER static detail::tvec3<T, P> call(detail::tvec3<T, P> const & x)
inline static detail::tvec3<T, P> call(detail::tvec3<T, P> const & x)
{
return detail::tvec3<T, P>(std::sqrt(x.x), std::sqrt(x.y), std::sqrt(x.z));
}
@ -168,7 +168,7 @@ namespace detail
template <typename T, precision P>
struct compute_sqrt<detail::tvec4, T, P>
{
GLM_FUNC_QUALIFIER static detail::tvec4<T, P> call(detail::tvec4<T, P> const & x)
inline static detail::tvec4<T, P> call(detail::tvec4<T, P> const & x)
{
return detail::tvec4<T, P>(std::sqrt(x.x), std::sqrt(x.y), std::sqrt(x.z), std::sqrt(x.w));
}
@ -176,35 +176,35 @@ namespace detail
}//namespace detail
// sqrt
GLM_FUNC_QUALIFIER float sqrt(float x)
inline float sqrt(float x)
{
return detail::compute_sqrt<detail::tvec1, float, highp>::call(x).x;
}
GLM_FUNC_QUALIFIER double sqrt(double x)
inline double sqrt(double x)
{
return detail::compute_sqrt<detail::tvec1, double, highp>::call(x).x;
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> sqrt(vecType<T, P> const & x)
inline vecType<T, P> sqrt(vecType<T, P> const & x)
{
return detail::compute_sqrt<vecType, T, P>::call(x);
}
// inversesqrt
GLM_FUNC_QUALIFIER float inversesqrt(float const & x)
inline float inversesqrt(float const & x)
{
return 1.0f / sqrt(x);
}
GLM_FUNC_QUALIFIER double inversesqrt(double const & x)
inline double inversesqrt(double const & x)
{
return 1.0 / sqrt(x);
}
template <template <class, precision> class vecType, typename T, precision P>
GLM_FUNC_QUALIFIER vecType<T, P> inversesqrt
inline vecType<T, P> inversesqrt
(
vecType<T, P> const & x
)

View File

@ -41,7 +41,7 @@ namespace detail
template <typename T, precision P>
struct compute_dot<detail::tvec1, T, P>
{
GLM_FUNC_QUALIFIER static T call(detail::tvec1<T, P> const & x, detail::tvec1<T, P> const & y)
inline static T call(detail::tvec1<T, P> const & x, detail::tvec1<T, P> const & y)
{
return detail::tvec1<T, P>(x * y).x;
}
@ -50,7 +50,7 @@ namespace detail
template <typename T, precision P>
struct compute_dot<detail::tvec2, T, P>
{
GLM_FUNC_QUALIFIER static T call(detail::tvec2<T, P> const & x, detail::tvec2<T, P> const & y)
inline static T call(detail::tvec2<T, P> const & x, detail::tvec2<T, P> const & y)
{
detail::tvec2<T, P> tmp(x * y);
return tmp.x + tmp.y;
@ -60,7 +60,7 @@ namespace detail
template <typename T, precision P>
struct compute_dot<detail::tvec3, T, P>
{
GLM_FUNC_QUALIFIER static T call(detail::tvec3<T, P> const & x, detail::tvec3<T, P> const & y)
inline static T call(detail::tvec3<T, P> const & x, detail::tvec3<T, P> const & y)
{
detail::tvec3<T, P> tmp(x * y);
return tmp.x + tmp.y + tmp.z;
@ -70,7 +70,7 @@ namespace detail
template <typename T, precision P>
struct compute_dot<detail::tvec4, T, P>
{
GLM_FUNC_QUALIFIER static T call(detail::tvec4<T, P> const & x, detail::tvec4<T, P> const & y)
inline static T call(detail::tvec4<T, P> const & x, detail::tvec4<T, P> const & y)
{
detail::tvec4<T, P> tmp(x * y);
return (tmp.x + tmp.y) + (tmp.z + tmp.w);
@ -80,7 +80,7 @@ namespace detail
// length
template <typename genType>
GLM_FUNC_QUALIFIER genType length
inline genType length
(
genType const & x
)
@ -90,21 +90,21 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T length(detail::tvec2<T, P> const & v)
inline T length(detail::tvec2<T, P> const & v)
{
T sqr = v.x * v.x + v.y * v.y;
return sqrt(sqr);
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T length(detail::tvec3<T, P> const & v)
inline T length(detail::tvec3<T, P> const & v)
{
T sqr = v.x * v.x + v.y * v.y + v.z * v.z;
return sqrt(sqr);
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T length(detail::tvec4<T, P> const & v)
inline T length(detail::tvec4<T, P> const & v)
{
T sqr = v.x * v.x + v.y * v.y + v.z * v.z + v.w * v.w;
return sqrt(sqr);
@ -112,7 +112,7 @@ namespace detail
// distance
template <typename genType>
GLM_FUNC_QUALIFIER genType distance
inline genType distance
(
genType const & p0,
genType const & p1
@ -122,7 +122,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T distance
inline T distance
(
detail::tvec2<T, P> const & p0,
detail::tvec2<T, P> const & p1
@ -132,7 +132,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T distance
inline T distance
(
detail::tvec3<T, P> const & p0,
detail::tvec3<T, P> const & p1
@ -142,7 +142,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T distance
inline T distance
(
detail::tvec4<T, P> const & p0,
detail::tvec4<T, P> const & p1
@ -153,7 +153,7 @@ namespace detail
// dot
template <typename T>
GLM_FUNC_QUALIFIER T dot
inline T dot
(
T const & x,
T const & y
@ -163,7 +163,7 @@ namespace detail
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER T dot
inline T dot
(
vecType<T, P> const & x,
vecType<T, P> const & y
@ -173,7 +173,7 @@ namespace detail
}
/* // SSE3
GLM_FUNC_QUALIFIER float dot(const tvec4<float>& x, const tvec4<float>& y)
inline float dot(const tvec4<float>& x, const tvec4<float>& y)
{
float Result;
__asm
@ -191,7 +191,7 @@ namespace detail
*/
// cross
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> cross
inline detail::tvec3<T, P> cross
(
detail::tvec3<T, P> const & x,
detail::tvec3<T, P> const & y
@ -205,7 +205,7 @@ namespace detail
// normalize
template <typename genType>
GLM_FUNC_QUALIFIER genType normalize
inline genType normalize
(
genType const & x
)
@ -215,7 +215,7 @@ namespace detail
// According to issue 10 GLSL 1.10 specification, if length(x) == 0 then result is undefine and generate an error
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> normalize
inline detail::tvec2<T, P> normalize
(
detail::tvec2<T, P> const & x
)
@ -225,7 +225,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> normalize
inline detail::tvec3<T, P> normalize
(
detail::tvec3<T, P> const & x
)
@ -235,7 +235,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> normalize
inline detail::tvec4<T, P> normalize
(
detail::tvec4<T, P> const & x
)
@ -246,7 +246,7 @@ namespace detail
// faceforward
template <typename genType>
GLM_FUNC_QUALIFIER genType faceforward
inline genType faceforward
(
genType const & N,
genType const & I,
@ -258,7 +258,7 @@ namespace detail
// reflect
template <typename genType>
GLM_FUNC_QUALIFIER genType reflect
inline genType reflect
(
genType const & I,
genType const & N
@ -269,7 +269,7 @@ namespace detail
// refract
template <typename genType>
GLM_FUNC_QUALIFIER genType refract
inline genType refract
(
genType const & I,
genType const & N,
@ -285,7 +285,7 @@ namespace detail
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> refract
inline vecType<T, P> refract
(
vecType<T, P> const & I,
vecType<T, P> const & N,

View File

@ -43,7 +43,7 @@ namespace glm
{
// uaddCarry
template <>
GLM_FUNC_QUALIFIER uint uaddCarry
inline uint uaddCarry
(
uint const & x,
uint const & y,
@ -57,7 +57,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER uvec2 uaddCarry
inline uvec2 uaddCarry
(
uvec2 const & x,
uvec2 const & y,
@ -70,7 +70,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER uvec3 uaddCarry
inline uvec3 uaddCarry
(
uvec3 const & x,
uvec3 const & y,
@ -84,7 +84,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER uvec4 uaddCarry
inline uvec4 uaddCarry
(
uvec4 const & x,
uvec4 const & y,
@ -100,7 +100,7 @@ namespace glm
// usubBorrow
template <>
GLM_FUNC_QUALIFIER uint usubBorrow
inline uint usubBorrow
(
uint const & x,
uint const & y,
@ -114,7 +114,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER uvec2 usubBorrow
inline uvec2 usubBorrow
(
uvec2 const & x,
uvec2 const & y,
@ -127,7 +127,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER uvec3 usubBorrow
inline uvec3 usubBorrow
(
uvec3 const & x,
uvec3 const & y,
@ -141,7 +141,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER uvec4 usubBorrow
inline uvec4 usubBorrow
(
uvec4 const & x,
uvec4 const & y,
@ -157,7 +157,7 @@ namespace glm
// umulExtended
template <>
GLM_FUNC_QUALIFIER void umulExtended
inline void umulExtended
(
uint const & x,
uint const & y,
@ -171,7 +171,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER void umulExtended
inline void umulExtended
(
uvec2 const & x,
uvec2 const & y,
@ -184,7 +184,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER void umulExtended
inline void umulExtended
(
uvec3 const & x,
uvec3 const & y,
@ -198,7 +198,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER void umulExtended
inline void umulExtended
(
uvec4 const & x,
uvec4 const & y,
@ -214,7 +214,7 @@ namespace glm
// imulExtended
template <>
GLM_FUNC_QUALIFIER void imulExtended
inline void imulExtended
(
int const & x,
int const & y,
@ -228,7 +228,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER void imulExtended
inline void imulExtended
(
ivec2 const & x,
ivec2 const & y,
@ -241,7 +241,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER void imulExtended
inline void imulExtended
(
ivec3 const & x,
ivec3 const & y,
@ -255,7 +255,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER void imulExtended
inline void imulExtended
(
ivec4 const & x,
ivec4 const & y,
@ -271,7 +271,7 @@ namespace glm
// bitfieldExtract
template <typename genIUType>
GLM_FUNC_QUALIFIER genIUType bitfieldExtract
inline genIUType bitfieldExtract
(
genIUType const & Value,
int const & Offset,
@ -289,7 +289,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> bitfieldExtract
inline detail::tvec2<T, P> bitfieldExtract
(
detail::tvec2<T, P> const & Value,
int const & Offset,
@ -302,7 +302,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> bitfieldExtract
inline detail::tvec3<T, P> bitfieldExtract
(
detail::tvec3<T, P> const & Value,
int const & Offset,
@ -316,7 +316,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> bitfieldExtract
inline detail::tvec4<T, P> bitfieldExtract
(
detail::tvec4<T, P> const & Value,
int const & Offset,
@ -332,7 +332,7 @@ namespace glm
// bitfieldInsert
template <typename genIUType>
GLM_FUNC_QUALIFIER genIUType bitfieldInsert
inline genIUType bitfieldInsert
(
genIUType const & Base,
genIUType const & Insert,
@ -353,7 +353,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> bitfieldInsert
inline detail::tvec2<T, P> bitfieldInsert
(
detail::tvec2<T, P> const & Base,
detail::tvec2<T, P> const & Insert,
@ -367,7 +367,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> bitfieldInsert
inline detail::tvec3<T, P> bitfieldInsert
(
detail::tvec3<T, P> const & Base,
detail::tvec3<T, P> const & Insert,
@ -382,7 +382,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> bitfieldInsert
inline detail::tvec4<T, P> bitfieldInsert
(
detail::tvec4<T, P> const & Base,
detail::tvec4<T, P> const & Insert,
@ -399,7 +399,7 @@ namespace glm
// bitfieldReverse
template <typename genIUType>
GLM_FUNC_QUALIFIER genIUType bitfieldReverse(genIUType const & Value)
inline genIUType bitfieldReverse(genIUType const & Value)
{
genIUType Out = 0;
std::size_t BitSize = sizeof(genIUType) * 8;
@ -413,7 +413,7 @@ namespace glm
// bitCount
template <typename genIUType>
GLM_FUNC_QUALIFIER int bitCount(genIUType const & Value)
inline int bitCount(genIUType const & Value)
{
int Count = 0;
for(std::size_t i = 0; i < sizeof(genIUType) * std::size_t(8); ++i)
@ -425,7 +425,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<int, P> bitCount
inline detail::tvec2<int, P> bitCount
(
detail::tvec2<T, P> const & value
)
@ -436,7 +436,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<int, P> bitCount
inline detail::tvec3<int, P> bitCount
(
detail::tvec3<T, P> const & value
)
@ -448,7 +448,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<int, P> bitCount
inline detail::tvec4<int, P> bitCount
(
detail::tvec4<T, P> const & value
)
@ -462,7 +462,7 @@ namespace glm
// findLSB
template <typename genIUType>
GLM_FUNC_QUALIFIER int findLSB
inline int findLSB
(
genIUType const & Value
)
@ -476,7 +476,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<int, P> findLSB
inline detail::tvec2<int, P> findLSB
(
detail::tvec2<T, P> const & value
)
@ -487,7 +487,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<int, P> findLSB
inline detail::tvec3<int, P> findLSB
(
detail::tvec3<T, P> const & value
)
@ -499,7 +499,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<int, P> findLSB
inline detail::tvec4<int, P> findLSB
(
detail::tvec4<T, P> const & value
)
@ -515,7 +515,7 @@ namespace glm
#if((GLM_ARCH != GLM_ARCH_PURE) && (GLM_COMPILER & GLM_COMPILER_VC))
template <typename genIUType>
GLM_FUNC_QUALIFIER int findMSB
inline int findMSB
(
genIUType const & Value
)
@ -548,7 +548,7 @@ namespace glm
*/
template <typename genIUType>
GLM_FUNC_QUALIFIER int findMSB
inline int findMSB
(
genIUType const & Value
)
@ -574,7 +574,7 @@ namespace glm
#endif//(GLM_COMPILER)
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<int, P> findMSB
inline detail::tvec2<int, P> findMSB
(
detail::tvec2<T, P> const & value
)
@ -585,7 +585,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<int, P> findMSB
inline detail::tvec3<int, P> findMSB
(
detail::tvec3<T, P> const & value
)
@ -597,7 +597,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<int, P> findMSB
inline detail::tvec4<int, P> findMSB
(
detail::tvec4<T, P> const & value
)

View File

@ -43,7 +43,7 @@ namespace detail
template <typename T, precision P>
struct compute_outerProduct<detail::tvec2, detail::tvec2, T, P>
{
GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, detail::tvec2, detail::tvec2>::type call(detail::tvec2<T, P> const & c, detail::tvec2<T, P> const & r)
inline static typename detail::outerProduct_trait<T, P, detail::tvec2, detail::tvec2>::type call(detail::tvec2<T, P> const & c, detail::tvec2<T, P> const & r)
{
detail::tmat2x2<T, P> m(detail::tmat2x2<T, P>::_null);
m[0][0] = c[0] * r[0];
@ -57,7 +57,7 @@ namespace detail
template <typename T, precision P>
struct compute_outerProduct<detail::tvec3, detail::tvec3, T, P>
{
GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, detail::tvec3, detail::tvec3>::type call(detail::tvec3<T, P> const & c, detail::tvec3<T, P> const & r)
inline static typename detail::outerProduct_trait<T, P, detail::tvec3, detail::tvec3>::type call(detail::tvec3<T, P> const & c, detail::tvec3<T, P> const & r)
{
detail::tmat3x3<T, P> m(detail::tmat3x3<T, P>::_null);
for(length_t i(0); i < m.length(); ++i)
@ -69,7 +69,7 @@ namespace detail
template <typename T, precision P>
struct compute_outerProduct<detail::tvec4, detail::tvec4, T, P>
{
GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, detail::tvec4, detail::tvec4>::type call(detail::tvec4<T, P> const & c, detail::tvec4<T, P> const & r)
inline static typename detail::outerProduct_trait<T, P, detail::tvec4, detail::tvec4>::type call(detail::tvec4<T, P> const & c, detail::tvec4<T, P> const & r)
{
detail::tmat4x4<T, P> m(detail::tmat4x4<T, P>::_null);
for(length_t i(0); i < m.length(); ++i)
@ -81,7 +81,7 @@ namespace detail
template <typename T, precision P>
struct compute_outerProduct<detail::tvec3, detail::tvec2, T, P>
{
GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, detail::tvec3, detail::tvec2>::type call(detail::tvec3<T, P> const & c, detail::tvec2<T, P> const & r)
inline static typename detail::outerProduct_trait<T, P, detail::tvec3, detail::tvec2>::type call(detail::tvec3<T, P> const & c, detail::tvec2<T, P> const & r)
{
detail::tmat2x3<T, P> m(detail::tmat2x3<T, P>::_null);
m[0][0] = c.x * r.x;
@ -97,7 +97,7 @@ namespace detail
template <typename T, precision P>
struct compute_outerProduct<detail::tvec2, detail::tvec3, T, P>
{
GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, detail::tvec2, detail::tvec3>::type call(detail::tvec2<T, P> const & c, detail::tvec3<T, P> const & r)
inline static typename detail::outerProduct_trait<T, P, detail::tvec2, detail::tvec3>::type call(detail::tvec2<T, P> const & c, detail::tvec3<T, P> const & r)
{
detail::tmat3x2<T, P> m(detail::tmat3x2<T, P>::_null);
m[0][0] = c.x * r.x;
@ -113,7 +113,7 @@ namespace detail
template <typename T, precision P>
struct compute_outerProduct<detail::tvec4, detail::tvec2, T, P>
{
GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, detail::tvec4, detail::tvec2>::type call(detail::tvec4<T, P> const & c, detail::tvec2<T, P> const & r)
inline static typename detail::outerProduct_trait<T, P, detail::tvec4, detail::tvec2>::type call(detail::tvec4<T, P> const & c, detail::tvec2<T, P> const & r)
{
detail::tmat2x4<T, P> m(detail::tmat2x4<T, P>::_null);
m[0][0] = c.x * r.x;
@ -131,7 +131,7 @@ namespace detail
template <typename T, precision P>
struct compute_outerProduct<detail::tvec2, detail::tvec4, T, P>
{
GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, detail::tvec2, detail::tvec4>::type call(detail::tvec2<T, P> const & c, detail::tvec4<T, P> const & r)
inline static typename detail::outerProduct_trait<T, P, detail::tvec2, detail::tvec4>::type call(detail::tvec2<T, P> const & c, detail::tvec4<T, P> const & r)
{
detail::tmat4x2<T, P> m(detail::tmat4x2<T, P>::_null);
m[0][0] = c.x * r.x;
@ -149,7 +149,7 @@ namespace detail
template <typename T, precision P>
struct compute_outerProduct<detail::tvec4, detail::tvec3, T, P>
{
GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, detail::tvec4, detail::tvec3>::type call(detail::tvec4<T, P> const & c, detail::tvec3<T, P> const & r)
inline static typename detail::outerProduct_trait<T, P, detail::tvec4, detail::tvec3>::type call(detail::tvec4<T, P> const & c, detail::tvec3<T, P> const & r)
{
detail::tmat3x4<T, P> m(detail::tmat3x4<T, P>::_null);
m[0][0] = c.x * r.x;
@ -171,7 +171,7 @@ namespace detail
template <typename T, precision P>
struct compute_outerProduct<detail::tvec3, detail::tvec4, T, P>
{
GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, detail::tvec3, detail::tvec4>::type call(detail::tvec3<T, P> const & c, detail::tvec4<T, P> const & r)
inline static typename detail::outerProduct_trait<T, P, detail::tvec3, detail::tvec4>::type call(detail::tvec3<T, P> const & c, detail::tvec4<T, P> const & r)
{
detail::tmat4x3<T, P> m(detail::tmat4x3<T, P>::_null);
m[0][0] = c.x * r.x;
@ -196,7 +196,7 @@ namespace detail
template <typename T, precision P>
struct compute_transpose<detail::tmat2x2, T, P>
{
GLM_FUNC_QUALIFIER static detail::tmat2x2<T, P> call(detail::tmat2x2<T, P> const & m)
inline static detail::tmat2x2<T, P> call(detail::tmat2x2<T, P> const & m)
{
detail::tmat2x2<T, P> result(detail::tmat2x2<T, P>::_null);
result[0][0] = m[0][0];
@ -210,7 +210,7 @@ namespace detail
template <typename T, precision P>
struct compute_transpose<detail::tmat2x3, T, P>
{
GLM_FUNC_QUALIFIER static detail::tmat3x2<T, P> call(detail::tmat2x3<T, P> const & m)
inline static detail::tmat3x2<T, P> call(detail::tmat2x3<T, P> const & m)
{
detail::tmat3x2<T, P> result(detail::tmat3x2<T, P>::_null);
result[0][0] = m[0][0];
@ -226,7 +226,7 @@ namespace detail
template <typename T, precision P>
struct compute_transpose<detail::tmat2x4, T, P>
{
GLM_FUNC_QUALIFIER static detail::tmat4x2<T, P> call(detail::tmat2x4<T, P> const & m)
inline static detail::tmat4x2<T, P> call(detail::tmat2x4<T, P> const & m)
{
detail::tmat4x2<T, P> result(detail::tmat4x2<T, P>::_null);
result[0][0] = m[0][0];
@ -244,7 +244,7 @@ namespace detail
template <typename T, precision P>
struct compute_transpose<detail::tmat3x2, T, P>
{
GLM_FUNC_QUALIFIER static detail::tmat2x3<T, P> call(detail::tmat3x2<T, P> const & m)
inline static detail::tmat2x3<T, P> call(detail::tmat3x2<T, P> const & m)
{
detail::tmat2x3<T, P> result(detail::tmat2x3<T, P>::_null);
result[0][0] = m[0][0];
@ -260,7 +260,7 @@ namespace detail
template <typename T, precision P>
struct compute_transpose<detail::tmat3x3, T, P>
{
GLM_FUNC_QUALIFIER static detail::tmat3x3<T, P> call(detail::tmat3x3<T, P> const & m)
inline static detail::tmat3x3<T, P> call(detail::tmat3x3<T, P> const & m)
{
detail::tmat3x3<T, P> result(detail::tmat3x3<T, P>::_null);
result[0][0] = m[0][0];
@ -281,7 +281,7 @@ namespace detail
template <typename T, precision P>
struct compute_transpose<detail::tmat3x4, T, P>
{
GLM_FUNC_QUALIFIER static detail::tmat4x3<T, P> call(detail::tmat3x4<T, P> const & m)
inline static detail::tmat4x3<T, P> call(detail::tmat3x4<T, P> const & m)
{
detail::tmat4x3<T, P> result(detail::tmat4x3<T, P>::_null);
result[0][0] = m[0][0];
@ -303,7 +303,7 @@ namespace detail
template <typename T, precision P>
struct compute_transpose<detail::tmat4x2, T, P>
{
GLM_FUNC_QUALIFIER static detail::tmat2x4<T, P> call(detail::tmat4x2<T, P> const & m)
inline static detail::tmat2x4<T, P> call(detail::tmat4x2<T, P> const & m)
{
detail::tmat2x4<T, P> result(detail::tmat2x4<T, P>::_null);
result[0][0] = m[0][0];
@ -321,7 +321,7 @@ namespace detail
template <typename T, precision P>
struct compute_transpose<detail::tmat4x3, T, P>
{
GLM_FUNC_QUALIFIER static detail::tmat3x4<T, P> call(detail::tmat4x3<T, P> const & m)
inline static detail::tmat3x4<T, P> call(detail::tmat4x3<T, P> const & m)
{
detail::tmat3x4<T, P> result(detail::tmat3x4<T, P>::_null);
result[0][0] = m[0][0];
@ -343,7 +343,7 @@ namespace detail
template <typename T, precision P>
struct compute_transpose<detail::tmat4x4, T, P>
{
GLM_FUNC_QUALIFIER static detail::tmat4x4<T, P> call(detail::tmat4x4<T, P> const & m)
inline static detail::tmat4x4<T, P> call(detail::tmat4x4<T, P> const & m)
{
detail::tmat4x4<T, P> result(detail::tmat4x4<T, P>::_null);
result[0][0] = m[0][0];
@ -375,7 +375,7 @@ namespace detail
template <typename T, precision P>
struct compute_determinant<detail::tmat2x2, T, P>
{
GLM_FUNC_QUALIFIER static T call(detail::tmat2x2<T, P> const & m)
inline static T call(detail::tmat2x2<T, P> const & m)
{
return m[0][0] * m[1][1] - m[1][0] * m[0][1];
}
@ -384,7 +384,7 @@ namespace detail
template <typename T, precision P>
struct compute_determinant<detail::tmat3x3, T, P>
{
GLM_FUNC_QUALIFIER static T call(detail::tmat3x3<T, P> const & m)
inline static T call(detail::tmat3x3<T, P> const & m)
{
return
+ m[0][0] * (m[1][1] * m[2][2] - m[2][1] * m[1][2])
@ -396,7 +396,7 @@ namespace detail
template <typename T, precision P>
struct compute_determinant<detail::tmat4x4, T, P>
{
GLM_FUNC_QUALIFIER static T call(detail::tmat4x4<T, P> const & m)
inline static T call(detail::tmat4x4<T, P> const & m)
{
T SubFactor00 = m[2][2] * m[3][3] - m[3][2] * m[2][3];
T SubFactor01 = m[2][1] * m[3][3] - m[3][1] * m[2][3];
@ -419,7 +419,7 @@ namespace detail
}//namespace detail
template <typename T, precision P, template <typename, precision> class matType>
GLM_FUNC_QUALIFIER matType<T, P> matrixCompMult(matType<T, P> const & x, matType<T, P> const & y)
inline matType<T, P> matrixCompMult(matType<T, P> const & x, matType<T, P> const & y)
{
matType<T, P> result(matType<T, P>::_null);
for(length_t i = 0; i < result.length(); ++i)
@ -428,25 +428,25 @@ namespace detail
}
template<typename T, precision P, template <typename, precision> class vecTypeA, template <typename, precision> class vecTypeB>
GLM_FUNC_QUALIFIER typename detail::outerProduct_trait<T, P, vecTypeA, vecTypeB>::type outerProduct(vecTypeA<T, P> const & c, vecTypeB<T, P> const & r)
inline typename detail::outerProduct_trait<T, P, vecTypeA, vecTypeB>::type outerProduct(vecTypeA<T, P> const & c, vecTypeB<T, P> const & r)
{
return detail::compute_outerProduct<vecTypeA, vecTypeB, T, P>::call(c, r);
}
template <typename T, precision P, template <typename, precision> class matType>
GLM_FUNC_QUALIFIER typename matType<T, P>::transpose_type transpose(matType<T, P> const & m)
inline typename matType<T, P>::transpose_type transpose(matType<T, P> const & m)
{
return detail::compute_transpose<matType, T, P>::call(m);
}
template <typename T, precision P, template <typename, precision> class matType>
GLM_FUNC_QUALIFIER T determinant(matType<T, P> const & m)
inline T determinant(matType<T, P> const & m)
{
return detail::compute_determinant<matType, T, P>::call(m);
}
template <typename T, precision P, template <typename, precision> class matType>
GLM_FUNC_QUALIFIER matType<T, P> inverse(matType<T, P> const & m)
inline matType<T, P> inverse(matType<T, P> const & m)
{
return detail::compute_inverse<matType, T, P>::call(m);
}

View File

@ -33,7 +33,7 @@ namespace glm{
namespace detail
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> grad4(T const & j, detail::tvec4<T, P> const & ip)
inline detail::tvec4<T, P> grad4(T const & j, detail::tvec4<T, P> const & ip)
{
detail::tvec3<T, P> pXYZ = floor(fract(detail::tvec3<T, P>(j) * detail::tvec3<T, P>(ip)) * T(7)) * ip[2] - T(1);
T pW = static_cast<T>(1.5) - dot(abs(pXYZ), detail::tvec3<T, P>(1));
@ -44,13 +44,13 @@ namespace detail
}//namespace detail
template <typename T>
GLM_FUNC_QUALIFIER T noise1(T const & x)
inline T noise1(T const & x)
{
return noise1(detail::tvec2<T, defaultp>(x, T(0)));
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tvec2<T, defaultp> noise2(T const & x)
inline detail::tvec2<T, defaultp> noise2(T const & x)
{
return detail::tvec2<T, defaultp>(
noise1(x + T(0.0)),
@ -58,7 +58,7 @@ namespace detail
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tvec3<T, defaultp> noise3(T const & x)
inline detail::tvec3<T, defaultp> noise3(T const & x)
{
return detail::tvec3<T, defaultp>(
noise1(x - T(1.0)),
@ -67,7 +67,7 @@ namespace detail
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tvec4<T, defaultp> noise4(T const & x)
inline detail::tvec4<T, defaultp> noise4(T const & x)
{
return detail::tvec4<T, defaultp>(
noise1(x - T(1.0)),
@ -77,7 +77,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T noise1(detail::tvec2<T, P> const & v)
inline T noise1(detail::tvec2<T, P> const & v)
{
detail::tvec4<T, P> const C = detail::tvec4<T, P>(
T( 0.211324865405187), // (3.0 - sqrt(3.0)) / 6.0
@ -135,7 +135,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T noise1(detail::tvec3<T, P> const & v)
inline T noise1(detail::tvec3<T, P> const & v)
{
detail::tvec2<T, P> const C(1.0 / 6.0, 1.0 / 3.0);
detail::tvec4<T, P> const D(0.0, 0.5, 1.0, 2.0);
@ -210,7 +210,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T noise1(detail::tvec4<T, P> const & v)
inline T noise1(detail::tvec4<T, P> const & v)
{
detail::tvec4<T, P> const C(
0.138196601125011, // (5 - sqrt(5))/20 G4
@ -300,7 +300,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> noise2(detail::tvec2<T, P> const & x)
inline detail::tvec2<T, P> noise2(detail::tvec2<T, P> const & x)
{
return detail::tvec2<T, P>(
noise1(x + detail::tvec2<T, P>(0.0)),
@ -308,7 +308,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> noise2(detail::tvec3<T, P> const & x)
inline detail::tvec2<T, P> noise2(detail::tvec3<T, P> const & x)
{
return detail::tvec2<T, P>(
noise1(x + detail::tvec3<T, P>(0.0)),
@ -316,7 +316,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> noise2(detail::tvec4<T, P> const & x)
inline detail::tvec2<T, P> noise2(detail::tvec4<T, P> const & x)
{
return detail::tvec2<T, P>(
noise1(x + detail::tvec4<T, P>(0)),
@ -324,7 +324,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> noise3(detail::tvec2<T, P> const & x)
inline detail::tvec3<T, P> noise3(detail::tvec2<T, P> const & x)
{
return detail::tvec3<T, P>(
noise1(x - detail::tvec2<T, P>(1.0)),
@ -333,7 +333,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> noise3(detail::tvec3<T, P> const & x)
inline detail::tvec3<T, P> noise3(detail::tvec3<T, P> const & x)
{
return detail::tvec3<T, P>(
noise1(x - detail::tvec3<T, P>(1.0)),
@ -342,7 +342,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> noise3(detail::tvec4<T, P> const & x)
inline detail::tvec3<T, P> noise3(detail::tvec4<T, P> const & x)
{
return detail::tvec3<T, P>(
noise1(x - detail::tvec4<T, P>(1)),
@ -351,7 +351,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> noise4(detail::tvec2<T, P> const & x)
inline detail::tvec4<T, P> noise4(detail::tvec2<T, P> const & x)
{
return detail::tvec4<T, P>(
noise1(x - detail::tvec2<T, P>(1)),
@ -362,7 +362,7 @@ namespace detail
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> noise4(detail::tvec3<T, P> const & x)
inline detail::tvec4<T, P> noise4(detail::tvec3<T, P> const & x)
{
return detail::tvec4<T, P>(
noise1(x - detail::tvec3<T, P>(1)),
@ -372,7 +372,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> noise4(detail::tvec4<T, P> const & x)
inline detail::tvec4<T, P> noise4(detail::tvec4<T, P> const & x)
{
return detail::tvec4<T, P>(
noise1(x - detail::tvec4<T, P>(1)),

View File

@ -32,7 +32,7 @@
namespace glm
{
GLM_FUNC_QUALIFIER uint packUnorm2x16(vec2 const & v)
inline uint packUnorm2x16(vec2 const & v)
{
u16vec2 Topack(round(clamp(v, 0.0f, 1.0f) * 65535.0f));
uint Packed;
@ -40,7 +40,7 @@ namespace glm
return Packed;
}
GLM_FUNC_QUALIFIER vec2 unpackUnorm2x16(uint const & p)
inline vec2 unpackUnorm2x16(uint const & p)
{
u16vec2 Packed;
std::memcpy(&Packed, &p, sizeof(Packed));
@ -48,7 +48,7 @@ namespace glm
return Unpack * float(1.5259021896696421759365224689097e-5); // 1.0 / 65535.0
}
GLM_FUNC_QUALIFIER uint packSnorm2x16(vec2 const & v)
inline uint packSnorm2x16(vec2 const & v)
{
i16vec2 Topack(round(clamp(v ,-1.0f, 1.0f) * 32767.0f));
uint32 Packed;
@ -56,7 +56,7 @@ namespace glm
return Packed;
}
GLM_FUNC_QUALIFIER vec2 unpackSnorm2x16(uint const & p)
inline vec2 unpackSnorm2x16(uint const & p)
{
i16vec2 Packed;
std::memcpy(&Packed, &p, sizeof(Packed));
@ -66,7 +66,7 @@ namespace glm
-1.0f, 1.0f);
}
GLM_FUNC_QUALIFIER uint packUnorm4x8(vec4 const & v)
inline uint packUnorm4x8(vec4 const & v)
{
u8vec4 Topack(round(clamp(v, 0.0f, 1.0f) * 255.0f));
uint Packed;
@ -74,7 +74,7 @@ namespace glm
return Packed;
}
GLM_FUNC_QUALIFIER vec4 unpackUnorm4x8(uint const & p)
inline vec4 unpackUnorm4x8(uint const & p)
{
u8vec4 Packed;
std::memcpy(&Packed, &p, sizeof(Packed));
@ -82,7 +82,7 @@ namespace glm
return Unpack * float(0.0039215686274509803921568627451); // 1 / 255
}
GLM_FUNC_QUALIFIER uint packSnorm4x8(vec4 const & v)
inline uint packSnorm4x8(vec4 const & v)
{
i8vec4 Topack(round(clamp(v ,-1.0f, 1.0f) * 127.0f));
uint Packed;
@ -90,7 +90,7 @@ namespace glm
return Packed;
}
GLM_FUNC_QUALIFIER glm::vec4 unpackSnorm4x8(uint const & p)
inline glm::vec4 unpackSnorm4x8(uint const & p)
{
i8vec4 Packed;
std::memcpy(&Packed, &p, sizeof(Packed));
@ -100,21 +100,21 @@ namespace glm
-1.0f, 1.0f);
}
GLM_FUNC_QUALIFIER double packDouble2x32(uvec2 const & v)
inline double packDouble2x32(uvec2 const & v)
{
double Packed;
std::memcpy(&Packed, &v, sizeof(Packed));
return Packed;
}
GLM_FUNC_QUALIFIER uvec2 unpackDouble2x32(double const & v)
inline uvec2 unpackDouble2x32(double const & v)
{
uvec2 Unpack;
std::memcpy(&Unpack, &v, sizeof(Unpack));
return Unpack;
}
GLM_FUNC_QUALIFIER uint packHalf2x16(vec2 const & v)
inline uint packHalf2x16(vec2 const & v)
{
i16vec2 Unpack(
detail::toFloat16(v.x),
@ -125,7 +125,7 @@ namespace glm
return Packed;
}
GLM_FUNC_QUALIFIER vec2 unpackHalf2x16(uint const & v)
inline vec2 unpackHalf2x16(uint const & v)
{
i16vec2 Unpack;
std::memcpy(&Unpack, &v, sizeof(Unpack));

View File

@ -34,7 +34,7 @@ namespace glm
{
// radians
template <typename genType>
GLM_FUNC_QUALIFIER genType radians
inline genType radians
(
genType const & degrees
)
@ -46,7 +46,7 @@ namespace glm
// degrees
template <typename genType>
GLM_FUNC_QUALIFIER genType degrees
inline genType degrees
(
genType const & radians
)
@ -58,7 +58,7 @@ namespace glm
// sin
template <typename genType>
GLM_FUNC_QUALIFIER genType sin
inline genType sin
(
genType const & angle
)
@ -70,7 +70,7 @@ namespace glm
// cos
template <typename genType>
GLM_FUNC_QUALIFIER genType cos(genType const & angle)
inline genType cos(genType const & angle)
{
return genType(::std::cos(angle));
}
@ -79,7 +79,7 @@ namespace glm
// tan
template <typename genType>
GLM_FUNC_QUALIFIER genType tan
inline genType tan
(
genType const & angle
)
@ -91,7 +91,7 @@ namespace glm
// asin
template <typename genType>
GLM_FUNC_QUALIFIER genType asin
inline genType asin
(
genType const & x
)
@ -103,7 +103,7 @@ namespace glm
// acos
template <typename genType>
GLM_FUNC_QUALIFIER genType acos
inline genType acos
(
genType const & x
)
@ -115,7 +115,7 @@ namespace glm
// atan
template <typename genType>
GLM_FUNC_QUALIFIER genType atan
inline genType atan
(
genType const & y,
genType const & x
@ -127,7 +127,7 @@ namespace glm
VECTORIZE_VEC_VEC(atan)
template <typename genType>
GLM_FUNC_QUALIFIER genType atan
inline genType atan
(
genType const & x
)
@ -139,7 +139,7 @@ namespace glm
// sinh
template <typename genType>
GLM_FUNC_QUALIFIER genType sinh
inline genType sinh
(
genType const & angle
)
@ -151,7 +151,7 @@ namespace glm
// cosh
template <typename genType>
GLM_FUNC_QUALIFIER genType cosh
inline genType cosh
(
genType const & angle
)
@ -163,7 +163,7 @@ namespace glm
// tanh
template <typename genType>
GLM_FUNC_QUALIFIER genType tanh
inline genType tanh
(
genType const & angle
)
@ -175,7 +175,7 @@ namespace glm
// asinh
template <typename genType>
GLM_FUNC_QUALIFIER genType asinh
inline genType asinh
(
genType const & x
)
@ -187,7 +187,7 @@ namespace glm
// acosh
template <typename genType>
GLM_FUNC_QUALIFIER genType acosh
inline genType acosh
(
genType const & x
)
@ -201,7 +201,7 @@ namespace glm
// atanh
template <typename genType>
GLM_FUNC_QUALIFIER genType atanh
inline genType atanh
(
genType const & x
)

View File

@ -31,7 +31,7 @@
namespace glm
{
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER typename vecType<T, P>::bool_type lessThan
inline typename vecType<T, P>::bool_type lessThan
(
vecType<T, P> const & x,
vecType<T, P> const & y
@ -45,7 +45,7 @@ namespace glm
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER typename vecType<T, P>::bool_type lessThanEqual
inline typename vecType<T, P>::bool_type lessThanEqual
(
vecType<T, P> const & x,
vecType<T, P> const & y
@ -58,7 +58,7 @@ namespace glm
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER typename vecType<T, P>::bool_type greaterThan
inline typename vecType<T, P>::bool_type greaterThan
(
vecType<T, P> const & x,
vecType<T, P> const & y
@ -71,7 +71,7 @@ namespace glm
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER typename vecType<T, P>::bool_type greaterThanEqual
inline typename vecType<T, P>::bool_type greaterThanEqual
(
vecType<T, P> const & x,
vecType<T, P> const & y
@ -84,7 +84,7 @@ namespace glm
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER typename vecType<T, P>::bool_type equal
inline typename vecType<T, P>::bool_type equal
(
vecType<T, P> const & x,
vecType<T, P> const & y
@ -99,7 +99,7 @@ namespace glm
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER typename vecType<T, P>::bool_type notEqual
inline typename vecType<T, P>::bool_type notEqual
(
vecType<T, P> const & x,
vecType<T, P> const & y
@ -114,7 +114,7 @@ namespace glm
}
template <precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER bool any(vecType<bool, P> const & v)
inline bool any(vecType<bool, P> const & v)
{
bool Result = false;
for(int i = 0; i < v.length(); ++i)
@ -123,7 +123,7 @@ namespace glm
}
template <precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER bool all(vecType<bool, P> const & v)
inline bool all(vecType<bool, P> const & v)
{
bool Result = true;
for(int i = 0; i < v.length(); ++i)
@ -132,7 +132,7 @@ namespace glm
}
template <precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<bool, P> not_(vecType<bool, P> const & v)
inline vecType<bool, P> not_(vecType<bool, P> const & v)
{
typename vecType<bool, P>::bool_type Result(vecType<bool, P>::_null);
for(int i = 0; i < v.length(); ++i)

View File

@ -64,10 +64,6 @@ namespace detail
__m128 sse_modf_ps(__m128 x, __m128i & i);
//GLM_FUNC_QUALIFIER __m128 sse_min_ps(__m128 x, __m128 y)
//GLM_FUNC_QUALIFIER __m128 sse_max_ps(__m128 x, __m128 y)
__m128 sse_clp_ps(__m128 v, __m128 minVal, __m128 maxVal);
__m128 sse_mix_ps(__m128 v1, __m128 v2, __m128 a);

View File

@ -151,12 +151,12 @@ namespace detail{
static const __m128 GLM_VAR_USED _ps_log_c0 = _mm_set_ps1(0.693147180559945f);
static const __m128 GLM_VAR_USED _ps_log2_c0 = _mm_set_ps1(1.44269504088896340735992f);
GLM_FUNC_QUALIFIER __m128 sse_abs_ps(__m128 x)
inline __m128 sse_abs_ps(__m128 x)
{
return _mm_and_ps(glm::detail::abs4Mask, x);
}
GLM_FUNC_QUALIFIER __m128 sse_sgn_ps(__m128 x)
inline __m128 sse_sgn_ps(__m128 x)
{
__m128 Neg = _mm_set1_ps(-1.0f);
__m128 Pos = _mm_set1_ps(1.0f);
@ -171,7 +171,7 @@ GLM_FUNC_QUALIFIER __m128 sse_sgn_ps(__m128 x)
}
//floor
GLM_FUNC_QUALIFIER __m128 sse_flr_ps(__m128 x)
inline __m128 sse_flr_ps(__m128 x)
{
__m128 rnd0 = sse_rnd_ps(x);
__m128 cmp0 = _mm_cmplt_ps(x, rnd0);
@ -182,13 +182,13 @@ GLM_FUNC_QUALIFIER __m128 sse_flr_ps(__m128 x)
//trunc
/*
GLM_FUNC_QUALIFIER __m128 _mm_trc_ps(__m128 v)
inline __m128 _mm_trc_ps(__m128 v)
{
return __m128();
}
*/
//round
GLM_FUNC_QUALIFIER __m128 sse_rnd_ps(__m128 x)
inline __m128 sse_rnd_ps(__m128 x)
{
__m128 and0 = _mm_and_ps(glm::detail::_epi32_sign_mask, x);
__m128 or0 = _mm_or_ps(and0, glm::detail::_ps_2pow23);
@ -198,7 +198,7 @@ GLM_FUNC_QUALIFIER __m128 sse_rnd_ps(__m128 x)
}
//roundEven
GLM_FUNC_QUALIFIER __m128 sse_rde_ps(__m128 x)
inline __m128 sse_rde_ps(__m128 x)
{
__m128 and0 = _mm_and_ps(glm::detail::_epi32_sign_mask, x);
__m128 or0 = _mm_or_ps(and0, glm::detail::_ps_2pow23);
@ -207,7 +207,7 @@ GLM_FUNC_QUALIFIER __m128 sse_rde_ps(__m128 x)
return sub0;
}
GLM_FUNC_QUALIFIER __m128 sse_ceil_ps(__m128 x)
inline __m128 sse_ceil_ps(__m128 x)
{
__m128 rnd0 = sse_rnd_ps(x);
__m128 cmp0 = _mm_cmpgt_ps(x, rnd0);
@ -216,14 +216,14 @@ GLM_FUNC_QUALIFIER __m128 sse_ceil_ps(__m128 x)
return add0;
}
GLM_FUNC_QUALIFIER __m128 sse_frc_ps(__m128 x)
inline __m128 sse_frc_ps(__m128 x)
{
__m128 flr0 = sse_flr_ps(x);
__m128 sub0 = _mm_sub_ps(x, flr0);
return sub0;
}
GLM_FUNC_QUALIFIER __m128 sse_mod_ps(__m128 x, __m128 y)
inline __m128 sse_mod_ps(__m128 x, __m128 y)
{
__m128 div0 = _mm_div_ps(x, y);
__m128 flr0 = sse_flr_ps(div0);
@ -234,25 +234,25 @@ GLM_FUNC_QUALIFIER __m128 sse_mod_ps(__m128 x, __m128 y)
/// TODO
/*
GLM_FUNC_QUALIFIER __m128 sse_modf_ps(__m128 x, __m128i & i)
inline __m128 sse_modf_ps(__m128 x, __m128i & i)
{
__m128 empty;
return empty;
}
*/
//GLM_FUNC_QUALIFIER __m128 _mm_min_ps(__m128 x, __m128 y)
//inline __m128 _mm_min_ps(__m128 x, __m128 y)
//GLM_FUNC_QUALIFIER __m128 _mm_max_ps(__m128 x, __m128 y)
//inline __m128 _mm_max_ps(__m128 x, __m128 y)
GLM_FUNC_QUALIFIER __m128 sse_clp_ps(__m128 v, __m128 minVal, __m128 maxVal)
inline __m128 sse_clp_ps(__m128 v, __m128 minVal, __m128 maxVal)
{
__m128 min0 = _mm_min_ps(v, maxVal);
__m128 max0 = _mm_max_ps(min0, minVal);
return max0;
}
GLM_FUNC_QUALIFIER __m128 sse_mix_ps(__m128 v1, __m128 v2, __m128 a)
inline __m128 sse_mix_ps(__m128 v1, __m128 v2, __m128 a)
{
__m128 sub0 = _mm_sub_ps(glm::detail::one, a);
__m128 mul0 = _mm_mul_ps(v1, sub0);
@ -261,7 +261,7 @@ GLM_FUNC_QUALIFIER __m128 sse_mix_ps(__m128 v1, __m128 v2, __m128 a)
return add0;
}
GLM_FUNC_QUALIFIER __m128 sse_stp_ps(__m128 edge, __m128 x)
inline __m128 sse_stp_ps(__m128 edge, __m128 x)
{
__m128 cmp = _mm_cmple_ps(x, edge);
if(_mm_movemask_ps(cmp) == 0)
@ -270,7 +270,7 @@ GLM_FUNC_QUALIFIER __m128 sse_stp_ps(__m128 edge, __m128 x)
return glm::detail::zero;
}
GLM_FUNC_QUALIFIER __m128 sse_ssp_ps(__m128 edge0, __m128 edge1, __m128 x)
inline __m128 sse_ssp_ps(__m128 edge0, __m128 edge1, __m128 x)
{
__m128 sub0 = _mm_sub_ps(x, edge0);
__m128 sub1 = _mm_sub_ps(edge1, edge0);
@ -284,14 +284,14 @@ GLM_FUNC_QUALIFIER __m128 sse_ssp_ps(__m128 edge0, __m128 edge1, __m128 x)
}
/// \todo
//GLM_FUNC_QUALIFIER __m128 sse_nan_ps(__m128 x)
//inline __m128 sse_nan_ps(__m128 x)
//{
// __m128 empty;
// return empty;
//}
/// \todo
//GLM_FUNC_QUALIFIER __m128 sse_inf_ps(__m128 x)
//inline __m128 sse_inf_ps(__m128 x)
//{
// __m128 empty;
// return empty;
@ -299,7 +299,7 @@ GLM_FUNC_QUALIFIER __m128 sse_ssp_ps(__m128 edge0, __m128 edge1, __m128 x)
// SSE scalar reciprocal sqrt using rsqrt op, plus one Newton-Rhaphson iteration
// By Elan Ruskin, http://assemblyrequired.crashworks.org/
GLM_FUNC_QUALIFIER __m128 sse_sqrt_wip_ss(__m128 const & x)
inline __m128 sse_sqrt_wip_ss(__m128 const & x)
{
__m128 recip = _mm_rsqrt_ss(x); // "estimate" opcode
const static __m128 three = {3, 3, 3, 3}; // aligned consts for fast load

View File

@ -39,7 +39,7 @@ namespace glm{
namespace detail
{
/*
GLM_FUNC_QUALIFIER __m128 sse_rsqrt_nr_ss(__m128 const x)
inline __m128 sse_rsqrt_nr_ss(__m128 const x)
{
__m128 recip = _mm_rsqrt_ss( x ); // "estimate" opcode
const static __m128 three = { 3, 3, 3, 3 }; // aligned consts for fast load
@ -49,7 +49,7 @@ GLM_FUNC_QUALIFIER __m128 sse_rsqrt_nr_ss(__m128 const x)
return _mm_mul_ss( halfrecip, threeminus_xrr );
}
GLM_FUNC_QUALIFIER __m128 sse_normalize_fast_ps( float * RESTRICT vOut, float * RESTRICT vIn )
inline __m128 sse_normalize_fast_ps( float * RESTRICT vOut, float * RESTRICT vIn )
{
__m128 x = _mm_load_ss(&vIn[0]);
__m128 y = _mm_load_ss(&vIn[1]);

View File

@ -30,7 +30,7 @@ namespace glm{
namespace detail{
//length
GLM_FUNC_QUALIFIER __m128 sse_len_ps(__m128 x)
inline __m128 sse_len_ps(__m128 x)
{
__m128 dot0 = sse_dot_ps(x, x);
__m128 sqt0 = _mm_sqrt_ps(dot0);
@ -38,7 +38,7 @@ GLM_FUNC_QUALIFIER __m128 sse_len_ps(__m128 x)
}
//distance
GLM_FUNC_QUALIFIER __m128 sse_dst_ps(__m128 p0, __m128 p1)
inline __m128 sse_dst_ps(__m128 p0, __m128 p1)
{
__m128 sub0 = _mm_sub_ps(p0, p1);
__m128 len0 = sse_len_ps(sub0);
@ -46,7 +46,7 @@ GLM_FUNC_QUALIFIER __m128 sse_dst_ps(__m128 p0, __m128 p1)
}
//dot
GLM_FUNC_QUALIFIER __m128 sse_dot_ps(__m128 v1, __m128 v2)
inline __m128 sse_dot_ps(__m128 v1, __m128 v2)
{
# if((GLM_ARCH & GLM_ARCH_AVX) == GLM_ARCH_AVX)
return _mm_dp_ps(v1, v2, 0xff);
@ -61,7 +61,7 @@ GLM_FUNC_QUALIFIER __m128 sse_dot_ps(__m128 v1, __m128 v2)
}
// SSE1
GLM_FUNC_QUALIFIER __m128 sse_dot_ss(__m128 v1, __m128 v2)
inline __m128 sse_dot_ss(__m128 v1, __m128 v2)
{
__m128 mul0 = _mm_mul_ps(v1, v2);
__m128 mov0 = _mm_movehl_ps(mul0, mul0);
@ -72,7 +72,7 @@ GLM_FUNC_QUALIFIER __m128 sse_dot_ss(__m128 v1, __m128 v2)
}
//cross
GLM_FUNC_QUALIFIER __m128 sse_xpd_ps(__m128 v1, __m128 v2)
inline __m128 sse_xpd_ps(__m128 v1, __m128 v2)
{
__m128 swp0 = _mm_shuffle_ps(v1, v1, _MM_SHUFFLE(3, 0, 2, 1));
__m128 swp1 = _mm_shuffle_ps(v1, v1, _MM_SHUFFLE(3, 1, 0, 2));
@ -85,7 +85,7 @@ GLM_FUNC_QUALIFIER __m128 sse_xpd_ps(__m128 v1, __m128 v2)
}
//normalize
GLM_FUNC_QUALIFIER __m128 sse_nrm_ps(__m128 v)
inline __m128 sse_nrm_ps(__m128 v)
{
__m128 dot0 = sse_dot_ps(v, v);
__m128 isr0 = _mm_rsqrt_ps(dot0);
@ -94,7 +94,7 @@ GLM_FUNC_QUALIFIER __m128 sse_nrm_ps(__m128 v)
}
//faceforward
GLM_FUNC_QUALIFIER __m128 sse_ffd_ps(__m128 N, __m128 I, __m128 Nref)
inline __m128 sse_ffd_ps(__m128 N, __m128 I, __m128 Nref)
{
//__m128 dot0 = _mm_dot_ps(v, v);
//__m128 neg0 = _mm_neg_ps(N);
@ -110,7 +110,7 @@ GLM_FUNC_QUALIFIER __m128 sse_ffd_ps(__m128 N, __m128 I, __m128 Nref)
}
//reflect
GLM_FUNC_QUALIFIER __m128 sse_rfe_ps(__m128 I, __m128 N)
inline __m128 sse_rfe_ps(__m128 I, __m128 N)
{
__m128 dot0 = sse_dot_ps(N, I);
__m128 mul0 = _mm_mul_ps(N, dot0);
@ -120,7 +120,7 @@ GLM_FUNC_QUALIFIER __m128 sse_rfe_ps(__m128 I, __m128 N)
}
//refract
GLM_FUNC_QUALIFIER __m128 sse_rfa_ps(__m128 I, __m128 N, __m128 eta)
inline __m128 sse_rfa_ps(__m128 I, __m128 N, __m128 eta)
{
__m128 dot0 = sse_dot_ps(N, I);
__m128 mul0 = _mm_mul_ps(eta, eta);

View File

@ -33,7 +33,7 @@ static const __m128 GLM_VAR_USED _m128_rad_ps = _mm_set_ps1(3.141592653589793238
static const __m128 GLM_VAR_USED _m128_deg_ps = _mm_set_ps1(180.f / 3.141592653589793238462643383279f);
template <typename matType>
GLM_FUNC_QUALIFIER matType sse_comp_mul_ps
inline matType sse_comp_mul_ps
(
__m128 const in1[4],
__m128 const in2[4],
@ -46,7 +46,7 @@ GLM_FUNC_QUALIFIER matType sse_comp_mul_ps
out[3] = _mm_mul_ps(in1[3], in2[3]);
}
GLM_FUNC_QUALIFIER void sse_add_ps(__m128 const in1[4], __m128 const in2[4], __m128 out[4])
inline void sse_add_ps(__m128 const in1[4], __m128 const in2[4], __m128 out[4])
{
{
out[0] = _mm_add_ps(in1[0], in2[0]);
@ -56,7 +56,7 @@ GLM_FUNC_QUALIFIER void sse_add_ps(__m128 const in1[4], __m128 const in2[4], __m
}
}
GLM_FUNC_QUALIFIER void sse_sub_ps(__m128 const in1[4], __m128 const in2[4], __m128 out[4])
inline void sse_sub_ps(__m128 const in1[4], __m128 const in2[4], __m128 out[4])
{
{
out[0] = _mm_sub_ps(in1[0], in2[0]);
@ -66,7 +66,7 @@ GLM_FUNC_QUALIFIER void sse_sub_ps(__m128 const in1[4], __m128 const in2[4], __m
}
}
GLM_FUNC_QUALIFIER __m128 sse_mul_ps(__m128 const m[4], __m128 v)
inline __m128 sse_mul_ps(__m128 const m[4], __m128 v)
{
__m128 v0 = _mm_shuffle_ps(v, v, _MM_SHUFFLE(0, 0, 0, 0));
__m128 v1 = _mm_shuffle_ps(v, v, _MM_SHUFFLE(1, 1, 1, 1));
@ -85,7 +85,7 @@ GLM_FUNC_QUALIFIER __m128 sse_mul_ps(__m128 const m[4], __m128 v)
return a2;
}
GLM_FUNC_QUALIFIER __m128 sse_mul_ps(__m128 v, __m128 const m[4])
inline __m128 sse_mul_ps(__m128 v, __m128 const m[4])
{
__m128 i0 = m[0];
__m128 i1 = m[1];
@ -112,7 +112,7 @@ GLM_FUNC_QUALIFIER __m128 sse_mul_ps(__m128 v, __m128 const m[4])
return f2;
}
GLM_FUNC_QUALIFIER void sse_mul_ps(__m128 const in1[4], __m128 const in2[4], __m128 out[4])
inline void sse_mul_ps(__m128 const in1[4], __m128 const in2[4], __m128 out[4])
{
{
__m128 e0 = _mm_shuffle_ps(in2[0], in2[0], _MM_SHUFFLE(0, 0, 0, 0));
@ -188,7 +188,7 @@ GLM_FUNC_QUALIFIER void sse_mul_ps(__m128 const in1[4], __m128 const in2[4], __m
}
}
GLM_FUNC_QUALIFIER void sse_transpose_ps(__m128 const in[4], __m128 out[4])
inline void sse_transpose_ps(__m128 const in[4], __m128 out[4])
{
__m128 tmp0 = _mm_shuffle_ps(in[0], in[1], 0x44);
__m128 tmp2 = _mm_shuffle_ps(in[0], in[1], 0xEE);
@ -201,7 +201,7 @@ GLM_FUNC_QUALIFIER void sse_transpose_ps(__m128 const in[4], __m128 out[4])
out[3] = _mm_shuffle_ps(tmp2, tmp3, 0xDD);
}
GLM_FUNC_QUALIFIER __m128 sse_slow_det_ps(__m128 const in[4])
inline __m128 sse_slow_det_ps(__m128 const in[4])
{
__m128 Fac0;
{
@ -415,7 +415,7 @@ GLM_FUNC_QUALIFIER __m128 sse_slow_det_ps(__m128 const in[4])
return Det0;
}
GLM_FUNC_QUALIFIER __m128 sse_detd_ps
inline __m128 sse_detd_ps
(
__m128 const m[4]
)
@ -481,7 +481,7 @@ GLM_FUNC_QUALIFIER __m128 sse_detd_ps
return sse_dot_ps(m[0], DetCof);
}
GLM_FUNC_QUALIFIER __m128 sse_det_ps
inline __m128 sse_det_ps
(
__m128 const m[4]
)
@ -547,7 +547,7 @@ GLM_FUNC_QUALIFIER __m128 sse_det_ps
return sse_dot_ps(m[0], DetCof);
}
GLM_FUNC_QUALIFIER void sse_inverse_ps(__m128 const in[4], __m128 out[4])
inline void sse_inverse_ps(__m128 const in[4], __m128 out[4])
{
__m128 Fac0;
{
@ -768,7 +768,7 @@ GLM_FUNC_QUALIFIER void sse_inverse_ps(__m128 const in[4], __m128 out[4])
out[3] = _mm_mul_ps(Inv3, Rcp0);
}
GLM_FUNC_QUALIFIER void sse_inverse_fast_ps(__m128 const in[4], __m128 out[4])
inline void sse_inverse_fast_ps(__m128 const in[4], __m128 out[4])
{
__m128 Fac0;
{
@ -988,7 +988,7 @@ GLM_FUNC_QUALIFIER void sse_inverse_fast_ps(__m128 const in[4], __m128 out[4])
out[3] = _mm_mul_ps(Inv3, Rcp0);
}
/*
GLM_FUNC_QUALIFIER void sse_rotate_ps(__m128 const in[4], float Angle, float const v[3], __m128 out[4])
inline void sse_rotate_ps(__m128 const in[4], float Angle, float const v[3], __m128 out[4])
{
float a = glm::radians(Angle);
float c = cos(a);
@ -1058,7 +1058,7 @@ GLM_FUNC_QUALIFIER void sse_rotate_ps(__m128 const in[4], float Angle, float con
sse_mul_ps(in, Result, out);
}
*/
GLM_FUNC_QUALIFIER void sse_outer_ps(__m128 const & c, __m128 const & r, __m128 out[4])
inline void sse_outer_ps(__m128 const & c, __m128 const & r, __m128 out[4])
{
out[0] = _mm_mul_ps(c, _mm_shuffle_ps(r, r, _MM_SHUFFLE(0, 0, 0, 0)));
out[1] = _mm_mul_ps(c, _mm_shuffle_ps(r, r, _MM_SHUFFLE(1, 1, 1, 1)));

View File

@ -619,22 +619,6 @@
# define GLM_VAR_USED
#endif
#if(defined(GLM_FORCE_INLINE))
# if((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC8))
# define GLM_INLINE __forceinline
# elif((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC34))
# define GLM_INLINE __attribute__((always_inline)) inline
# elif(GLM_COMPILER & GLM_COMPILER_CLANG)
# define GLM_INLINE __attribute__((always_inline))
# else
# define GLM_INLINE inline
# endif//GLM_COMPILER
#else
# define GLM_INLINE inline
#endif//defined(GLM_FORCE_INLINE)
#define GLM_FUNC_QUALIFIER GLM_INLINE
///////////////////////////////////////////////////////////////////////////////////////////////////
// Swizzle operators

View File

@ -33,7 +33,7 @@
namespace glm{
namespace detail
{
GLM_FUNC_QUALIFIER float overflow()
inline float overflow()
{
volatile float f = 1e10;
@ -45,15 +45,15 @@ namespace detail
union uif32
{
GLM_FUNC_QUALIFIER uif32() :
inline uif32() :
i(0)
{}
GLM_FUNC_QUALIFIER uif32(float f) :
inline uif32(float f) :
f(f)
{}
GLM_FUNC_QUALIFIER uif32(uint32 i) :
inline uif32(uint32 i) :
i(i)
{}
@ -61,7 +61,7 @@ namespace detail
uint32 i;
};
GLM_FUNC_QUALIFIER float toFloat32(int16_t value)
inline float toFloat32(int16_t value)
{
int s = (value >> 15) & 0x00000001;
int e = (value >> 10) & 0x0000001f;
@ -135,7 +135,7 @@ namespace detail
return Result.f;
}
GLM_FUNC_QUALIFIER int16_t toFloat16(float const & f)
inline int16_t toFloat16(float const & f)
{
uif32 Entry;
Entry.f = f;

View File

@ -30,7 +30,7 @@ namespace glm{
namespace detail
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER length_t tmat2x2<T, P>::length() const
inline length_t tmat2x2<T, P>::length() const
{
return 2;
}
@ -39,7 +39,7 @@ namespace detail
// Accesses
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat2x2<T, P>::col_type &
inline typename tmat2x2<T, P>::col_type &
tmat2x2<T, P>::operator[]
(
length_t i
@ -50,7 +50,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat2x2<T, P>::col_type const &
inline typename tmat2x2<T, P>::col_type const &
tmat2x2<T, P>::operator[]
(
length_t i
@ -64,14 +64,14 @@ namespace detail
// Constructors
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2()
inline tmat2x2<T, P>::tmat2x2()
{
this->value[0] = col_type(1, 0);
this->value[1] = col_type(0, 1);
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2
inline tmat2x2<T, P>::tmat2x2
(
tmat2x2<T, P> const & m
)
@ -82,7 +82,7 @@ namespace detail
template <typename T, precision P>
template <precision Q>
GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2(
inline tmat2x2<T, P>::tmat2x2(
tmat2x2<T, Q> const & m)
{
this->value[0] = m.value[0];
@ -90,14 +90,14 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2
inline tmat2x2<T, P>::tmat2x2
(
ctor
)
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2
inline tmat2x2<T, P>::tmat2x2
(
T const & s
)
@ -108,7 +108,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2
inline tmat2x2<T, P>::tmat2x2
(
T const & x0, T const & y0,
T const & x1, T const & y1
@ -119,7 +119,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2
inline tmat2x2<T, P>::tmat2x2
(
col_type const & v0,
col_type const & v1
@ -133,7 +133,7 @@ namespace detail
// Conversion constructors
template <typename T, precision P>
template <typename X1, typename Y1, typename X2, typename Y2>
GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2
inline tmat2x2<T, P>::tmat2x2
(
X1 const & x1, Y1 const & y1,
X2 const & x2, Y2 const & y2
@ -145,7 +145,7 @@ namespace detail
template <typename T, precision P>
template <typename V1, typename V2>
GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2
inline tmat2x2<T, P>::tmat2x2
(
tvec2<V1, P> const & v1,
tvec2<V2, P> const & v2
@ -160,7 +160,7 @@ namespace detail
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2
inline tmat2x2<T, P>::tmat2x2
(
tmat2x2<U, Q> const & m
)
@ -170,7 +170,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2
inline tmat2x2<T, P>::tmat2x2
(
tmat3x3<T, P> const & m
)
@ -180,7 +180,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2
inline tmat2x2<T, P>::tmat2x2
(
tmat4x4<T, P> const & m
)
@ -190,7 +190,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2
inline tmat2x2<T, P>::tmat2x2
(
tmat2x3<T, P> const & m
)
@ -200,7 +200,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2
inline tmat2x2<T, P>::tmat2x2
(
tmat3x2<T, P> const & m
)
@ -210,7 +210,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2
inline tmat2x2<T, P>::tmat2x2
(
tmat2x4<T, P> const & m
)
@ -220,7 +220,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2
inline tmat2x2<T, P>::tmat2x2
(
tmat4x2<T, P> const & m
)
@ -230,7 +230,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2
inline tmat2x2<T, P>::tmat2x2
(
tmat3x4<T, P> const & m
)
@ -240,7 +240,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2
inline tmat2x2<T, P>::tmat2x2
(
tmat4x3<T, P> const & m
)
@ -254,7 +254,7 @@ namespace detail
// This function shouldn't required but it seems that VC7.1 have an optimisation bug if this operator wasn't declared
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P>& tmat2x2<T, P>::operator= (tmat2x2<T, P> const & m)
inline tmat2x2<T, P>& tmat2x2<T, P>::operator= (tmat2x2<T, P> const & m)
{
this->value[0] = m[0];
this->value[1] = m[1];
@ -263,7 +263,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x2<T, P>& tmat2x2<T, P>::operator= (tmat2x2<U, P> const & m)
inline tmat2x2<T, P>& tmat2x2<T, P>::operator= (tmat2x2<U, P> const & m)
{
this->value[0] = m[0];
this->value[1] = m[1];
@ -272,7 +272,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x2<T, P>& tmat2x2<T, P>::operator+= (U s)
inline tmat2x2<T, P>& tmat2x2<T, P>::operator+= (U s)
{
this->value[0] += s;
this->value[1] += s;
@ -281,7 +281,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x2<T, P>& tmat2x2<T, P>::operator+= (tmat2x2<U, P> const & m)
inline tmat2x2<T, P>& tmat2x2<T, P>::operator+= (tmat2x2<U, P> const & m)
{
this->value[0] += m[0];
this->value[1] += m[1];
@ -290,7 +290,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x2<T, P>& tmat2x2<T, P>::operator-= (U s)
inline tmat2x2<T, P>& tmat2x2<T, P>::operator-= (U s)
{
this->value[0] -= s;
this->value[1] -= s;
@ -299,7 +299,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x2<T, P>& tmat2x2<T, P>::operator-= (tmat2x2<U, P> const & m)
inline tmat2x2<T, P>& tmat2x2<T, P>::operator-= (tmat2x2<U, P> const & m)
{
this->value[0] -= m[0];
this->value[1] -= m[1];
@ -308,7 +308,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x2<T, P>& tmat2x2<T, P>::operator*= (U s)
inline tmat2x2<T, P>& tmat2x2<T, P>::operator*= (U s)
{
this->value[0] *= s;
this->value[1] *= s;
@ -317,14 +317,14 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x2<T, P>& tmat2x2<T, P>::operator*= (tmat2x2<U, P> const & m)
inline tmat2x2<T, P>& tmat2x2<T, P>::operator*= (tmat2x2<U, P> const & m)
{
return (*this = *this * m);
}
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x2<T, P>& tmat2x2<T, P>::operator/= (U s)
inline tmat2x2<T, P>& tmat2x2<T, P>::operator/= (U s)
{
this->value[0] /= s;
this->value[1] /= s;
@ -333,13 +333,13 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x2<T, P>& tmat2x2<T, P>::operator/= (tmat2x2<U, P> const & m)
inline tmat2x2<T, P>& tmat2x2<T, P>::operator/= (tmat2x2<U, P> const & m)
{
return (*this = *this * detail::compute_inverse<detail::tmat2x2, T, P>::call(m));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P>& tmat2x2<T, P>::operator++()
inline tmat2x2<T, P>& tmat2x2<T, P>::operator++()
{
++this->value[0];
++this->value[1];
@ -347,7 +347,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P>& tmat2x2<T, P>::operator--()
inline tmat2x2<T, P>& tmat2x2<T, P>::operator--()
{
--this->value[0];
--this->value[1];
@ -355,7 +355,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P> tmat2x2<T, P>::operator++(int)
inline tmat2x2<T, P> tmat2x2<T, P>::operator++(int)
{
tmat2x2<T, P> Result(*this);
++*this;
@ -363,7 +363,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P> tmat2x2<T, P>::operator--(int)
inline tmat2x2<T, P> tmat2x2<T, P>::operator--(int)
{
tmat2x2<T, P> Result(*this);
--*this;
@ -373,7 +373,7 @@ namespace detail
template <typename T, precision P>
struct compute_inverse<detail::tmat2x2, T, P>
{
GLM_FUNC_QUALIFIER static detail::tmat2x2<T, P> call(detail::tmat2x2<T, P> const & m)
inline static detail::tmat2x2<T, P> call(detail::tmat2x2<T, P> const & m)
{
T OneOverDeterminant = static_cast<T>(1) / (
+ m[0][0] * m[1][1]
@ -393,7 +393,7 @@ namespace detail
// Binary operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P> operator+
inline tmat2x2<T, P> operator+
(
tmat2x2<T, P> const & m,
T const & s
@ -405,7 +405,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P> operator+
inline tmat2x2<T, P> operator+
(
T const & s,
tmat2x2<T, P> const & m
@ -417,7 +417,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P> operator+
inline tmat2x2<T, P> operator+
(
tmat2x2<T, P> const & m1,
tmat2x2<T, P> const & m2
@ -429,7 +429,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P> operator-
inline tmat2x2<T, P> operator-
(
tmat2x2<T, P> const & m,
T const & s
@ -441,7 +441,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P> operator-
inline tmat2x2<T, P> operator-
(
T const & s,
tmat2x2<T, P> const & m
@ -453,7 +453,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P> operator-
inline tmat2x2<T, P> operator-
(
tmat2x2<T, P> const & m1,
tmat2x2<T, P> const & m2
@ -465,7 +465,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P> operator*
inline tmat2x2<T, P> operator*
(
tmat2x2<T, P> const & m,
T const & s
@ -477,7 +477,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P> operator*
inline tmat2x2<T, P> operator*
(
T const & s,
tmat2x2<T, P> const & m
@ -489,7 +489,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat2x2<T, P>::col_type operator*
inline typename tmat2x2<T, P>::col_type operator*
(
tmat2x2<T, P> const & m,
typename tmat2x2<T, P>::row_type const & v
@ -501,7 +501,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat2x2<T, P>::row_type operator*
inline typename tmat2x2<T, P>::row_type operator*
(
typename tmat2x2<T, P>::col_type const & v,
tmat2x2<T, P> const & m
@ -513,7 +513,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P> operator*
inline tmat2x2<T, P> operator*
(
tmat2x2<T, P> const & m1,
tmat2x2<T, P> const & m2
@ -527,7 +527,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P> operator*
inline tmat3x2<T, P> operator*
(
tmat2x2<T, P> const & m1,
tmat3x2<T, P> const & m2
@ -543,7 +543,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P> operator*
inline tmat4x2<T, P> operator*
(
tmat2x2<T, P> const & m1,
tmat4x2<T, P> const & m2
@ -561,7 +561,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P> operator/
inline tmat2x2<T, P> operator/
(
tmat2x2<T, P> const & m,
T const & s
@ -573,7 +573,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P> operator/
inline tmat2x2<T, P> operator/
(
T const & s,
tmat2x2<T, P> const & m
@ -585,7 +585,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat2x2<T, P>::col_type operator/
inline typename tmat2x2<T, P>::col_type operator/
(
tmat2x2<T, P> const & m,
typename tmat2x2<T, P>::row_type & v
@ -595,7 +595,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat2x2<T, P>::row_type operator/
inline typename tmat2x2<T, P>::row_type operator/
(
typename tmat2x2<T, P>::col_type const & v,
tmat2x2<T, P> const & m
@ -605,7 +605,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P> operator/
inline tmat2x2<T, P> operator/
(
tmat2x2<T, P> const & m1,
tmat2x2<T, P> const & m2
@ -617,7 +617,7 @@ namespace detail
// Unary constant operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P> const operator-
inline tmat2x2<T, P> const operator-
(
tmat2x2<T, P> const & m
)
@ -631,7 +631,7 @@ namespace detail
// Boolean operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator==
inline bool operator==
(
tmat2x2<T, P> const & m1,
tmat2x2<T, P> const & m2
@ -641,7 +641,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator!=
inline bool operator!=
(
tmat2x2<T, P> const & m1,
tmat2x2<T, P> const & m2

View File

@ -30,7 +30,7 @@ namespace glm{
namespace detail
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER length_t tmat2x3<T, P>::length() const
inline length_t tmat2x3<T, P>::length() const
{
return 2;
}
@ -39,7 +39,7 @@ namespace detail
// Accesses
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat2x3<T, P>::col_type &
inline typename tmat2x3<T, P>::col_type &
tmat2x3<T, P>::operator[]
(
length_t i
@ -50,7 +50,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat2x3<T, P>::col_type const &
inline typename tmat2x3<T, P>::col_type const &
tmat2x3<T, P>::operator[]
(
length_t i
@ -64,14 +64,14 @@ namespace detail
// Constructors
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3()
inline tmat2x3<T, P>::tmat2x3()
{
this->value[0] = col_type(T(1), T(0), T(0));
this->value[1] = col_type(T(0), T(1), T(0));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3
inline tmat2x3<T, P>::tmat2x3
(
tmat2x3<T, P> const & m
)
@ -82,7 +82,7 @@ namespace detail
template <typename T, precision P>
template <precision Q>
GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3(
inline tmat2x3<T, P>::tmat2x3(
tmat2x3<T, Q> const & m)
{
this->value[0] = m.value[0];
@ -90,14 +90,14 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3
inline tmat2x3<T, P>::tmat2x3
(
ctor
)
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3
inline tmat2x3<T, P>::tmat2x3
(
T const & s
)
@ -107,7 +107,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3
inline tmat2x3<T, P>::tmat2x3
(
T const & x0, T const & y0, T const & z0,
T const & x1, T const & y1, T const & z1
@ -118,7 +118,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3
inline tmat2x3<T, P>::tmat2x3
(
col_type const & v0,
col_type const & v1
@ -134,7 +134,7 @@ namespace detail
template <
typename X1, typename Y1, typename Z1,
typename X2, typename Y2, typename Z2>
GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3
inline tmat2x3<T, P>::tmat2x3
(
X1 const & x1, Y1 const & y1, Z1 const & z1,
X2 const & x2, Y2 const & y2, Z2 const & z2
@ -146,7 +146,7 @@ namespace detail
template <typename T, precision P>
template <typename V1, typename V2>
GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3
inline tmat2x3<T, P>::tmat2x3
(
tvec3<V1, P> const & v1,
tvec3<V2, P> const & v2
@ -161,7 +161,7 @@ namespace detail
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3
inline tmat2x3<T, P>::tmat2x3
(
tmat2x3<U, Q> const & m
)
@ -171,7 +171,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3
inline tmat2x3<T, P>::tmat2x3
(
tmat2x2<T, P> const & m
)
@ -181,7 +181,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3
inline tmat2x3<T, P>::tmat2x3
(
tmat3x3<T, P> const & m
)
@ -191,7 +191,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3
inline tmat2x3<T, P>::tmat2x3
(
tmat4x4<T, P> const & m
)
@ -201,7 +201,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3
inline tmat2x3<T, P>::tmat2x3
(
tmat2x4<T, P> const & m
)
@ -211,7 +211,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3
inline tmat2x3<T, P>::tmat2x3
(
tmat3x2<T, P> const & m
)
@ -221,7 +221,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3
inline tmat2x3<T, P>::tmat2x3
(
tmat3x4<T, P> const & m
)
@ -231,7 +231,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3
inline tmat2x3<T, P>::tmat2x3
(
tmat4x2<T, P> const & m
)
@ -241,7 +241,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3
inline tmat2x3<T, P>::tmat2x3
(
tmat4x3<T, P> const & m
)
@ -254,7 +254,7 @@ namespace detail
// Unary updatable operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P>& tmat2x3<T, P>::operator= (tmat2x3<T, P> const & m)
inline tmat2x3<T, P>& tmat2x3<T, P>::operator= (tmat2x3<T, P> const & m)
{
this->value[0] = m[0];
this->value[1] = m[1];
@ -263,7 +263,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x3<T, P>& tmat2x3<T, P>::operator= (tmat2x3<U, P> const & m)
inline tmat2x3<T, P>& tmat2x3<T, P>::operator= (tmat2x3<U, P> const & m)
{
this->value[0] = m[0];
this->value[1] = m[1];
@ -272,7 +272,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x3<T, P> & tmat2x3<T, P>::operator+= (U s)
inline tmat2x3<T, P> & tmat2x3<T, P>::operator+= (U s)
{
this->value[0] += s;
this->value[1] += s;
@ -281,7 +281,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x3<T, P>& tmat2x3<T, P>::operator+= (tmat2x3<U, P> const & m)
inline tmat2x3<T, P>& tmat2x3<T, P>::operator+= (tmat2x3<U, P> const & m)
{
this->value[0] += m[0];
this->value[1] += m[1];
@ -290,7 +290,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x3<T, P>& tmat2x3<T, P>::operator-= (U s)
inline tmat2x3<T, P>& tmat2x3<T, P>::operator-= (U s)
{
this->value[0] -= s;
this->value[1] -= s;
@ -299,7 +299,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x3<T, P>& tmat2x3<T, P>::operator-= (tmat2x3<U, P> const & m)
inline tmat2x3<T, P>& tmat2x3<T, P>::operator-= (tmat2x3<U, P> const & m)
{
this->value[0] -= m[0];
this->value[1] -= m[1];
@ -308,7 +308,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x3<T, P>& tmat2x3<T, P>::operator*= (U s)
inline tmat2x3<T, P>& tmat2x3<T, P>::operator*= (U s)
{
this->value[0] *= s;
this->value[1] *= s;
@ -317,7 +317,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x3<T, P> & tmat2x3<T, P>::operator/= (U s)
inline tmat2x3<T, P> & tmat2x3<T, P>::operator/= (U s)
{
this->value[0] /= s;
this->value[1] /= s;
@ -325,7 +325,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P> & tmat2x3<T, P>::operator++()
inline tmat2x3<T, P> & tmat2x3<T, P>::operator++()
{
++this->value[0];
++this->value[1];
@ -333,7 +333,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P> & tmat2x3<T, P>::operator--()
inline tmat2x3<T, P> & tmat2x3<T, P>::operator--()
{
--this->value[0];
--this->value[1];
@ -341,7 +341,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P> tmat2x3<T, P>::operator++(int)
inline tmat2x3<T, P> tmat2x3<T, P>::operator++(int)
{
tmat2x3<T, P> Result(*this);
++*this;
@ -349,7 +349,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P> tmat2x3<T, P>::operator--(int)
inline tmat2x3<T, P> tmat2x3<T, P>::operator--(int)
{
tmat2x3<T, P> Result(*this);
--*this;
@ -360,7 +360,7 @@ namespace detail
// Binary operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P> operator+
inline tmat2x3<T, P> operator+
(
tmat2x3<T, P> const & m,
T const & s
@ -372,7 +372,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P> operator+
inline tmat2x3<T, P> operator+
(
tmat2x3<T, P> const & m1,
tmat2x3<T, P> const & m2
@ -384,7 +384,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P> operator-
inline tmat2x3<T, P> operator-
(
tmat2x3<T, P> const & m,
T const & s
@ -396,7 +396,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P> operator-
inline tmat2x3<T, P> operator-
(
tmat2x3<T, P> const & m1,
tmat2x3<T, P> const & m2
@ -408,7 +408,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P> operator*
inline tmat2x3<T, P> operator*
(
tmat2x3<T, P> const & m,
T const & s
@ -420,7 +420,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P> operator*
inline tmat2x3<T, P> operator*
(
T const & s,
tmat2x3<T, P> const & m
@ -432,7 +432,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat2x3<T, P>::col_type operator*
inline typename tmat2x3<T, P>::col_type operator*
(
tmat2x3<T, P> const & m,
typename tmat2x3<T, P>::row_type const & v)
@ -444,7 +444,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat2x3<T, P>::row_type operator*
inline typename tmat2x3<T, P>::row_type operator*
(
typename tmat2x3<T, P>::col_type const & v,
tmat2x3<T, P> const & m)
@ -455,7 +455,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P> operator*
inline tmat2x3<T, P> operator*
(
tmat2x3<T, P> const & m1,
tmat2x2<T, P> const & m2
@ -471,7 +471,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> operator*
inline tmat3x3<T, P> operator*
(
tmat2x3<T, P> const & m1,
tmat3x2<T, P> const & m2
@ -505,7 +505,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P> operator*
inline tmat4x3<T, P> operator*
(
tmat2x3<T, P> const & m1,
tmat4x2<T, P> const & m2
@ -527,7 +527,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P> operator/
inline tmat2x3<T, P> operator/
(
tmat2x3<T, P> const & m,
T const & s
@ -539,7 +539,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P> operator/
inline tmat2x3<T, P> operator/
(
T const & s,
tmat2x3<T, P> const & m
@ -552,7 +552,7 @@ namespace detail
// Unary constant operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P> const operator-
inline tmat2x3<T, P> const operator-
(
tmat2x3<T, P> const & m
)
@ -566,7 +566,7 @@ namespace detail
// Boolean operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator==
inline bool operator==
(
tmat2x3<T, P> const & m1,
tmat2x3<T, P> const & m2
@ -576,7 +576,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator!=
inline bool operator!=
(
tmat2x3<T, P> const & m1,
tmat2x3<T, P> const & m2

View File

@ -30,7 +30,7 @@ namespace glm{
namespace detail
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER length_t tmat2x4<T, P>::length() const
inline length_t tmat2x4<T, P>::length() const
{
return 2;
}
@ -39,7 +39,7 @@ namespace detail
// Accesses
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat2x4<T, P>::col_type &
inline typename tmat2x4<T, P>::col_type &
tmat2x4<T, P>::operator[]
(
length_t i
@ -50,7 +50,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat2x4<T, P>::col_type const &
inline typename tmat2x4<T, P>::col_type const &
tmat2x4<T, P>::operator[]
(
length_t i
@ -64,7 +64,7 @@ namespace detail
// Constructors
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4()
inline tmat2x4<T, P>::tmat2x4()
{
value_type const Zero(0);
value_type const One(1);
@ -73,7 +73,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4
inline tmat2x4<T, P>::tmat2x4
(
tmat2x4<T, P> const & m
)
@ -84,7 +84,7 @@ namespace detail
template <typename T, precision P>
template <precision Q>
GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4(
inline tmat2x4<T, P>::tmat2x4(
tmat2x4<T, Q> const & m)
{
this->value[0] = m.value[0];
@ -92,14 +92,14 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4
inline tmat2x4<T, P>::tmat2x4
(
ctor
)
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4
inline tmat2x4<T, P>::tmat2x4
(
T const & s
)
@ -110,7 +110,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4
inline tmat2x4<T, P>::tmat2x4
(
T const & x0, T const & y0, T const & z0, T const & w0,
T const & x1, T const & y1, T const & z1, T const & w1
@ -121,7 +121,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4
inline tmat2x4<T, P>::tmat2x4
(
col_type const & v0,
col_type const & v1
@ -137,7 +137,7 @@ namespace detail
template <
typename X1, typename Y1, typename Z1, typename W1,
typename X2, typename Y2, typename Z2, typename W2>
GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4
inline tmat2x4<T, P>::tmat2x4
(
X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1,
X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2
@ -149,7 +149,7 @@ namespace detail
template <typename T, precision P>
template <typename V1, typename V2>
GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4
inline tmat2x4<T, P>::tmat2x4
(
tvec4<V1, P> const & v1,
tvec4<V2, P> const & v2
@ -164,7 +164,7 @@ namespace detail
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4
inline tmat2x4<T, P>::tmat2x4
(
tmat2x4<U, Q> const & m
)
@ -174,7 +174,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4
inline tmat2x4<T, P>::tmat2x4
(
tmat2x2<T, P> const & m
)
@ -184,7 +184,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4
inline tmat2x4<T, P>::tmat2x4
(
tmat3x3<T, P> const & m
)
@ -194,7 +194,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4
inline tmat2x4<T, P>::tmat2x4
(
tmat4x4<T, P> const & m
)
@ -204,7 +204,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4
inline tmat2x4<T, P>::tmat2x4
(
tmat2x3<T, P> const & m
)
@ -214,7 +214,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4
inline tmat2x4<T, P>::tmat2x4
(
tmat3x2<T, P> const & m
)
@ -224,7 +224,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4
inline tmat2x4<T, P>::tmat2x4
(
tmat3x4<T, P> const & m
)
@ -234,7 +234,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4
inline tmat2x4<T, P>::tmat2x4
(
tmat4x2<T, P> const & m
)
@ -244,7 +244,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4
inline tmat2x4<T, P>::tmat2x4
(
tmat4x3<T, P> const & m
)
@ -257,7 +257,7 @@ namespace detail
// Unary updatable operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P>& tmat2x4<T, P>::operator= (tmat2x4<T, P> const & m)
inline tmat2x4<T, P>& tmat2x4<T, P>::operator= (tmat2x4<T, P> const & m)
{
this->value[0] = m[0];
this->value[1] = m[1];
@ -266,7 +266,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x4<T, P>& tmat2x4<T, P>::operator= (tmat2x4<U, P> const & m)
inline tmat2x4<T, P>& tmat2x4<T, P>::operator= (tmat2x4<U, P> const & m)
{
this->value[0] = m[0];
this->value[1] = m[1];
@ -275,7 +275,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x4<T, P>& tmat2x4<T, P>::operator+= (U s)
inline tmat2x4<T, P>& tmat2x4<T, P>::operator+= (U s)
{
this->value[0] += s;
this->value[1] += s;
@ -284,7 +284,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x4<T, P>& tmat2x4<T, P>::operator+= (tmat2x4<U, P> const & m)
inline tmat2x4<T, P>& tmat2x4<T, P>::operator+= (tmat2x4<U, P> const & m)
{
this->value[0] += m[0];
this->value[1] += m[1];
@ -293,7 +293,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x4<T, P>& tmat2x4<T, P>::operator-= (U s)
inline tmat2x4<T, P>& tmat2x4<T, P>::operator-= (U s)
{
this->value[0] -= s;
this->value[1] -= s;
@ -302,7 +302,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x4<T, P>& tmat2x4<T, P>::operator-= (tmat2x4<U, P> const & m)
inline tmat2x4<T, P>& tmat2x4<T, P>::operator-= (tmat2x4<U, P> const & m)
{
this->value[0] -= m[0];
this->value[1] -= m[1];
@ -311,7 +311,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x4<T, P>& tmat2x4<T, P>::operator*= (U s)
inline tmat2x4<T, P>& tmat2x4<T, P>::operator*= (U s)
{
this->value[0] *= s;
this->value[1] *= s;
@ -320,7 +320,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat2x4<T, P> & tmat2x4<T, P>::operator/= (U s)
inline tmat2x4<T, P> & tmat2x4<T, P>::operator/= (U s)
{
this->value[0] /= s;
this->value[1] /= s;
@ -328,7 +328,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P>& tmat2x4<T, P>::operator++()
inline tmat2x4<T, P>& tmat2x4<T, P>::operator++()
{
++this->value[0];
++this->value[1];
@ -336,7 +336,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P>& tmat2x4<T, P>::operator--()
inline tmat2x4<T, P>& tmat2x4<T, P>::operator--()
{
--this->value[0];
--this->value[1];
@ -344,7 +344,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P> tmat2x4<T, P>::operator++(int)
inline tmat2x4<T, P> tmat2x4<T, P>::operator++(int)
{
tmat2x4<T, P> Result(*this);
++*this;
@ -352,7 +352,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P> tmat2x4<T, P>::operator--(int)
inline tmat2x4<T, P> tmat2x4<T, P>::operator--(int)
{
tmat2x4<T, P> Result(*this);
--*this;
@ -363,7 +363,7 @@ namespace detail
// Binary operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P> operator+
inline tmat2x4<T, P> operator+
(
tmat2x4<T, P> const & m,
T const & s
@ -375,7 +375,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P> operator+
inline tmat2x4<T, P> operator+
(
tmat2x4<T, P> const & m1,
tmat2x4<T, P> const & m2
@ -387,7 +387,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P> operator-
inline tmat2x4<T, P> operator-
(
tmat2x4<T, P> const & m,
T const & s
@ -399,7 +399,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P> operator-
inline tmat2x4<T, P> operator-
(
tmat2x4<T, P> const & m1,
tmat2x4<T, P> const & m2
@ -411,7 +411,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P> operator*
inline tmat2x4<T, P> operator*
(
tmat2x4<T, P> const & m,
T const & s
@ -423,7 +423,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P> operator*
inline tmat2x4<T, P> operator*
(
T const & s,
tmat2x4<T, P> const & m
@ -435,7 +435,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat2x4<T, P>::col_type operator*
inline typename tmat2x4<T, P>::col_type operator*
(
tmat2x4<T, P> const & m,
typename tmat2x4<T, P>::row_type const & v
@ -449,7 +449,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat2x4<T, P>::row_type operator*
inline typename tmat2x4<T, P>::row_type operator*
(
typename tmat2x4<T, P>::col_type const & v,
tmat2x4<T, P> const & m
@ -461,7 +461,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> operator*
inline tmat4x4<T, P> operator*
(
tmat2x4<T, P> const & m1,
tmat4x2<T, P> const & m2
@ -506,7 +506,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P> operator*
inline tmat2x4<T, P> operator*
(
tmat2x4<T, P> const & m1,
tmat2x2<T, P> const & m2
@ -524,7 +524,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P> operator*
inline tmat3x4<T, P> operator*
(
tmat2x4<T, P> const & m1,
tmat3x2<T, P> const & m2
@ -546,7 +546,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P> operator/
inline tmat2x4<T, P> operator/
(
tmat2x4<T, P> const & m,
T const & s
@ -558,7 +558,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P> operator/
inline tmat2x4<T, P> operator/
(
T const & s,
tmat2x4<T, P> const & m
@ -571,7 +571,7 @@ namespace detail
// Unary constant operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P> const operator-
inline tmat2x4<T, P> const operator-
(
tmat2x4<T, P> const & m
)
@ -585,7 +585,7 @@ namespace detail
// Boolean operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator==
inline bool operator==
(
tmat2x4<T, P> const & m1,
tmat2x4<T, P> const & m2
@ -595,7 +595,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator!=
inline bool operator!=
(
tmat2x4<T, P> const & m1,
tmat2x4<T, P> const & m2

View File

@ -30,7 +30,7 @@ namespace glm{
namespace detail
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER length_t tmat3x2<T, P>::length() const
inline length_t tmat3x2<T, P>::length() const
{
return 3;
}
@ -39,7 +39,7 @@ namespace detail
// Accesses
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat3x2<T, P>::col_type &
inline typename tmat3x2<T, P>::col_type &
tmat3x2<T, P>::operator[]
(
length_t i
@ -50,7 +50,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat3x2<T, P>::col_type const &
inline typename tmat3x2<T, P>::col_type const &
tmat3x2<T, P>::operator[]
(
length_t i
@ -64,7 +64,7 @@ namespace detail
// Constructors
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2()
inline tmat3x2<T, P>::tmat3x2()
{
this->value[0] = col_type(1, 0);
this->value[1] = col_type(0, 1);
@ -72,7 +72,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2
inline tmat3x2<T, P>::tmat3x2
(
tmat3x2<T, P> const & m
)
@ -84,7 +84,7 @@ namespace detail
template <typename T, precision P>
template <precision Q>
GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2(
inline tmat3x2<T, P>::tmat3x2(
tmat3x2<T, Q> const & m)
{
this->value[0] = m.value[0];
@ -93,14 +93,14 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2
inline tmat3x2<T, P>::tmat3x2
(
ctor
)
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2
inline tmat3x2<T, P>::tmat3x2
(
T const & s
)
@ -111,7 +111,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2
inline tmat3x2<T, P>::tmat3x2
(
T const & x0, T const & y0,
T const & x1, T const & y1,
@ -124,7 +124,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2
inline tmat3x2<T, P>::tmat3x2
(
col_type const & v0,
col_type const & v1,
@ -143,7 +143,7 @@ namespace detail
typename X1, typename Y1,
typename X2, typename Y2,
typename X3, typename Y3>
GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2
inline tmat3x2<T, P>::tmat3x2
(
X1 const & x1, Y1 const & y1,
X2 const & x2, Y2 const & y2,
@ -157,7 +157,7 @@ namespace detail
template <typename T, precision P>
template <typename V1, typename V2, typename V3>
GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2
inline tmat3x2<T, P>::tmat3x2
(
tvec2<V1, P> const & v1,
tvec2<V2, P> const & v2,
@ -174,7 +174,7 @@ namespace detail
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2
inline tmat3x2<T, P>::tmat3x2
(
tmat3x2<U, Q> const & m
)
@ -185,7 +185,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2
inline tmat3x2<T, P>::tmat3x2
(
tmat2x2<T, P> const & m
)
@ -196,7 +196,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2
inline tmat3x2<T, P>::tmat3x2
(
tmat3x3<T, P> const & m
)
@ -207,7 +207,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2
inline tmat3x2<T, P>::tmat3x2
(
tmat4x4<T, P> const & m
)
@ -218,7 +218,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2
inline tmat3x2<T, P>::tmat3x2
(
tmat2x3<T, P> const & m
)
@ -229,7 +229,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2
inline tmat3x2<T, P>::tmat3x2
(
tmat2x4<T, P> const & m
)
@ -240,7 +240,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2
inline tmat3x2<T, P>::tmat3x2
(
tmat3x4<T, P> const & m
)
@ -251,7 +251,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2
inline tmat3x2<T, P>::tmat3x2
(
tmat4x2<T, P> const & m
)
@ -262,7 +262,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2
inline tmat3x2<T, P>::tmat3x2
(
tmat4x3<T, P> const & m
)
@ -276,7 +276,7 @@ namespace detail
// Unary updatable operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P>& tmat3x2<T, P>::operator= (tmat3x2<T, P> const & m)
inline tmat3x2<T, P>& tmat3x2<T, P>::operator= (tmat3x2<T, P> const & m)
{
this->value[0] = m[0];
this->value[1] = m[1];
@ -286,7 +286,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x2<T, P>& tmat3x2<T, P>::operator= (tmat3x2<U, P> const & m)
inline tmat3x2<T, P>& tmat3x2<T, P>::operator= (tmat3x2<U, P> const & m)
{
this->value[0] = m[0];
this->value[1] = m[1];
@ -296,7 +296,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x2<T, P>& tmat3x2<T, P>::operator+= (U s)
inline tmat3x2<T, P>& tmat3x2<T, P>::operator+= (U s)
{
this->value[0] += s;
this->value[1] += s;
@ -306,7 +306,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x2<T, P>& tmat3x2<T, P>::operator+= (tmat3x2<U, P> const & m)
inline tmat3x2<T, P>& tmat3x2<T, P>::operator+= (tmat3x2<U, P> const & m)
{
this->value[0] += m[0];
this->value[1] += m[1];
@ -316,7 +316,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x2<T, P>& tmat3x2<T, P>::operator-= (U s)
inline tmat3x2<T, P>& tmat3x2<T, P>::operator-= (U s)
{
this->value[0] -= s;
this->value[1] -= s;
@ -326,7 +326,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x2<T, P>& tmat3x2<T, P>::operator-= (tmat3x2<U, P> const & m)
inline tmat3x2<T, P>& tmat3x2<T, P>::operator-= (tmat3x2<U, P> const & m)
{
this->value[0] -= m[0];
this->value[1] -= m[1];
@ -336,7 +336,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x2<T, P>& tmat3x2<T, P>::operator*= (U s)
inline tmat3x2<T, P>& tmat3x2<T, P>::operator*= (U s)
{
this->value[0] *= s;
this->value[1] *= s;
@ -346,7 +346,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x2<T, P> & tmat3x2<T, P>::operator/= (U s)
inline tmat3x2<T, P> & tmat3x2<T, P>::operator/= (U s)
{
this->value[0] /= s;
this->value[1] /= s;
@ -355,7 +355,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P>& tmat3x2<T, P>::operator++ ()
inline tmat3x2<T, P>& tmat3x2<T, P>::operator++ ()
{
++this->value[0];
++this->value[1];
@ -364,7 +364,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P>& tmat3x2<T, P>::operator-- ()
inline tmat3x2<T, P>& tmat3x2<T, P>::operator-- ()
{
--this->value[0];
--this->value[1];
@ -373,7 +373,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P> tmat3x2<T, P>::operator++(int)
inline tmat3x2<T, P> tmat3x2<T, P>::operator++(int)
{
tmat3x2<T, P> Result(*this);
++*this;
@ -381,7 +381,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P> tmat3x2<T, P>::operator--(int)
inline tmat3x2<T, P> tmat3x2<T, P>::operator--(int)
{
tmat3x2<T, P> Result(*this);
--*this;
@ -392,7 +392,7 @@ namespace detail
// Binary operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P> operator+
inline tmat3x2<T, P> operator+
(
tmat3x2<T, P> const & m,
T const & s
@ -405,7 +405,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P> operator+
inline tmat3x2<T, P> operator+
(
tmat3x2<T, P> const & m1,
tmat3x2<T, P> const & m2
@ -418,7 +418,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P> operator-
inline tmat3x2<T, P> operator-
(
tmat3x2<T, P> const & m,
T const & s
@ -431,7 +431,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P> operator-
inline tmat3x2<T, P> operator-
(
tmat3x2<T, P> const & m1,
tmat3x2<T, P> const & m2
@ -444,7 +444,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P> operator*
inline tmat3x2<T, P> operator*
(
tmat3x2<T, P> const & m,
T const & s
@ -457,7 +457,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P> operator*
inline tmat3x2<T, P> operator*
(
T const & s,
tmat3x2<T, P> const & m
@ -470,7 +470,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat3x2<T, P>::col_type operator*
inline typename tmat3x2<T, P>::col_type operator*
(
tmat3x2<T, P> const & m,
typename tmat3x2<T, P>::row_type const & v)
@ -481,7 +481,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat3x2<T, P>::row_type operator*
inline typename tmat3x2<T, P>::row_type operator*
(
typename tmat3x2<T, P>::col_type const & v,
tmat3x2<T, P> const & m)
@ -493,7 +493,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P> operator*
inline tmat2x2<T, P> operator*
(
tmat3x2<T, P> const & m1,
tmat2x3<T, P> const & m2
@ -522,7 +522,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P> operator*
inline tmat3x2<T, P> operator*
(
tmat3x2<T, P> const & m1,
tmat3x3<T, P> const & m2
@ -538,7 +538,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P> operator*
inline tmat4x2<T, P> operator*
(
tmat3x2<T, P> const & m1,
tmat4x3<T, P> const & m2
@ -556,7 +556,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P> operator/
inline tmat3x2<T, P> operator/
(
tmat3x2<T, P> const & m,
T const & s
@ -569,7 +569,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P> operator/
inline tmat3x2<T, P> operator/
(
T const & s,
tmat3x2<T, P> const & m
@ -583,7 +583,7 @@ namespace detail
// Unary constant operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P> const operator-
inline tmat3x2<T, P> const operator-
(
tmat3x2<T, P> const & m
)
@ -598,7 +598,7 @@ namespace detail
// Boolean operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator==
inline bool operator==
(
tmat3x2<T, P> const & m1,
tmat3x2<T, P> const & m2
@ -608,7 +608,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator!=
inline bool operator!=
(
tmat3x2<T, P> const & m1,
tmat3x2<T, P> const & m2

View File

@ -30,7 +30,7 @@ namespace glm{
namespace detail
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER length_t tmat3x3<T, P>::length() const
inline length_t tmat3x3<T, P>::length() const
{
return 3;
}
@ -39,7 +39,7 @@ namespace detail
// Accesses
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat3x3<T, P>::col_type &
inline typename tmat3x3<T, P>::col_type &
tmat3x3<T, P>::operator[]
(
length_t i
@ -50,7 +50,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat3x3<T, P>::col_type const &
inline typename tmat3x3<T, P>::col_type const &
tmat3x3<T, P>::operator[]
(
length_t i
@ -64,7 +64,7 @@ namespace detail
// Constructors
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3()
inline tmat3x3<T, P>::tmat3x3()
{
value_type const Zero(0);
value_type const One(1);
@ -74,7 +74,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3
inline tmat3x3<T, P>::tmat3x3
(
tmat3x3<T, P> const & m
)
@ -85,7 +85,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3
inline tmat3x3<T, P>::tmat3x3
(
ctor
)
@ -93,7 +93,7 @@ namespace detail
template <typename T, precision P>
template <precision Q>
GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3(
inline tmat3x3<T, P>::tmat3x3(
tmat3x3<T, Q> const & m)
{
this->value[0] = m.value[0];
@ -102,7 +102,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3
inline tmat3x3<T, P>::tmat3x3
(
T const & s
)
@ -114,7 +114,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3
inline tmat3x3<T, P>::tmat3x3
(
T const & x0, T const & y0, T const & z0,
T const & x1, T const & y1, T const & z1,
@ -127,7 +127,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3
inline tmat3x3<T, P>::tmat3x3
(
col_type const & v0,
col_type const & v1,
@ -146,7 +146,7 @@ namespace detail
typename X1, typename Y1, typename Z1,
typename X2, typename Y2, typename Z2,
typename X3, typename Y3, typename Z3>
GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3
inline tmat3x3<T, P>::tmat3x3
(
X1 const & x1, Y1 const & y1, Z1 const & z1,
X2 const & x2, Y2 const & y2, Z2 const & z2,
@ -160,7 +160,7 @@ namespace detail
template <typename T, precision P>
template <typename V1, typename V2, typename V3>
GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3
inline tmat3x3<T, P>::tmat3x3
(
tvec3<V1, P> const & v1,
tvec3<V2, P> const & v2,
@ -177,7 +177,7 @@ namespace detail
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3
inline tmat3x3<T, P>::tmat3x3
(
tmat3x3<U, Q> const & m
)
@ -188,7 +188,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3
inline tmat3x3<T, P>::tmat3x3
(
tmat2x2<T, P> const & m
)
@ -199,7 +199,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3
inline tmat3x3<T, P>::tmat3x3
(
tmat4x4<T, P> const & m
)
@ -210,7 +210,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3
inline tmat3x3<T, P>::tmat3x3
(
tmat2x3<T, P> const & m
)
@ -221,7 +221,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3
inline tmat3x3<T, P>::tmat3x3
(
tmat3x2<T, P> const & m
)
@ -232,7 +232,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3
inline tmat3x3<T, P>::tmat3x3
(
tmat2x4<T, P> const & m
)
@ -243,7 +243,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3
inline tmat3x3<T, P>::tmat3x3
(
tmat4x2<T, P> const & m
)
@ -254,7 +254,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3
inline tmat3x3<T, P>::tmat3x3
(
tmat3x4<T, P> const & m
)
@ -265,7 +265,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3
inline tmat3x3<T, P>::tmat3x3
(
tmat4x3<T, P> const & m
)
@ -279,7 +279,7 @@ namespace detail
// Operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> & tmat3x3<T, P>::operator= (tmat3x3<T, P> const & m)
inline tmat3x3<T, P> & tmat3x3<T, P>::operator= (tmat3x3<T, P> const & m)
{
this->value[0] = m[0];
this->value[1] = m[1];
@ -289,7 +289,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x3<T, P> & tmat3x3<T, P>::operator= (tmat3x3<U, P> const & m)
inline tmat3x3<T, P> & tmat3x3<T, P>::operator= (tmat3x3<U, P> const & m)
{
this->value[0] = m[0];
this->value[1] = m[1];
@ -299,7 +299,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x3<T, P> & tmat3x3<T, P>::operator+= (U s)
inline tmat3x3<T, P> & tmat3x3<T, P>::operator+= (U s)
{
this->value[0] += s;
this->value[1] += s;
@ -309,7 +309,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x3<T, P> & tmat3x3<T, P>::operator+= (tmat3x3<U, P> const & m)
inline tmat3x3<T, P> & tmat3x3<T, P>::operator+= (tmat3x3<U, P> const & m)
{
this->value[0] += m[0];
this->value[1] += m[1];
@ -319,7 +319,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x3<T, P> & tmat3x3<T, P>::operator-= (U s)
inline tmat3x3<T, P> & tmat3x3<T, P>::operator-= (U s)
{
this->value[0] -= s;
this->value[1] -= s;
@ -329,7 +329,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x3<T, P> & tmat3x3<T, P>::operator-= (tmat3x3<U, P> const & m)
inline tmat3x3<T, P> & tmat3x3<T, P>::operator-= (tmat3x3<U, P> const & m)
{
this->value[0] -= m[0];
this->value[1] -= m[1];
@ -339,7 +339,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x3<T, P> & tmat3x3<T, P>::operator*= (U s)
inline tmat3x3<T, P> & tmat3x3<T, P>::operator*= (U s)
{
this->value[0] *= s;
this->value[1] *= s;
@ -349,14 +349,14 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x3<T, P> & tmat3x3<T, P>::operator*= (tmat3x3<U, P> const & m)
inline tmat3x3<T, P> & tmat3x3<T, P>::operator*= (tmat3x3<U, P> const & m)
{
return (*this = *this * m);
}
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x3<T, P> & tmat3x3<T, P>::operator/= (U s)
inline tmat3x3<T, P> & tmat3x3<T, P>::operator/= (U s)
{
this->value[0] /= s;
this->value[1] /= s;
@ -366,13 +366,13 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x3<T, P> & tmat3x3<T, P>::operator/= (tmat3x3<U, P> const & m)
inline tmat3x3<T, P> & tmat3x3<T, P>::operator/= (tmat3x3<U, P> const & m)
{
return (*this = *this * detail::compute_inverse<detail::tmat3x3, T, P>::call(m));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> & tmat3x3<T, P>::operator++ ()
inline tmat3x3<T, P> & tmat3x3<T, P>::operator++ ()
{
++this->value[0];
++this->value[1];
@ -381,7 +381,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> & tmat3x3<T, P>::operator--()
inline tmat3x3<T, P> & tmat3x3<T, P>::operator--()
{
--this->value[0];
--this->value[1];
@ -390,7 +390,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> tmat3x3<T, P>::operator++(int)
inline tmat3x3<T, P> tmat3x3<T, P>::operator++(int)
{
tmat3x3<T, P> Result(*this);
++*this;
@ -398,7 +398,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> tmat3x3<T, P>::operator--(int)
inline tmat3x3<T, P> tmat3x3<T, P>::operator--(int)
{
tmat3x3<T, P> Result(*this);
--*this;
@ -431,7 +431,7 @@ namespace detail
};
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> compute_inverse_mat3(tmat3x3<T, P> const & m)
inline tmat3x3<T, P> compute_inverse_mat3(tmat3x3<T, P> const & m)
{
T S00 = m[0][0];
T S01 = m[0][1];
@ -480,7 +480,7 @@ namespace detail
// Binary operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> operator+
inline tmat3x3<T, P> operator+
(
tmat3x3<T, P> const & m,
T const & s
@ -493,7 +493,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> operator+
inline tmat3x3<T, P> operator+
(
T const & s,
tmat3x3<T, P> const & m
@ -506,7 +506,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> operator+
inline tmat3x3<T, P> operator+
(
tmat3x3<T, P> const & m1,
tmat3x3<T, P> const & m2
@ -519,7 +519,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> operator-
inline tmat3x3<T, P> operator-
(
tmat3x3<T, P> const & m,
T const & s
@ -532,7 +532,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> operator-
inline tmat3x3<T, P> operator-
(
T const & s,
tmat3x3<T, P> const & m
@ -545,7 +545,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> operator-
inline tmat3x3<T, P> operator-
(
tmat3x3<T, P> const & m1,
tmat3x3<T, P> const & m2
@ -558,7 +558,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> operator*
inline tmat3x3<T, P> operator*
(
tmat3x3<T, P> const & m,
T const & s
@ -571,7 +571,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> operator*
inline tmat3x3<T, P> operator*
(
T const & s,
tmat3x3<T, P> const & m
@ -584,7 +584,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat3x3<T, P>::col_type operator*
inline typename tmat3x3<T, P>::col_type operator*
(
tmat3x3<T, P> const & m,
typename tmat3x3<T, P>::row_type const & v
@ -597,7 +597,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat3x3<T, P>::row_type operator*
inline typename tmat3x3<T, P>::row_type operator*
(
typename tmat3x3<T, P>::col_type const & v,
tmat3x3<T, P> const & m
@ -610,7 +610,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> operator*
inline tmat3x3<T, P> operator*
(
tmat3x3<T, P> const & m1,
tmat3x3<T, P> const & m2
@ -650,7 +650,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P> operator*
inline tmat2x3<T, P> operator*
(
tmat3x3<T, P> const & m1,
tmat2x3<T, P> const & m2
@ -666,7 +666,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P> operator*
inline tmat4x3<T, P> operator*
(
tmat3x3<T, P> const & m1,
tmat4x3<T, P> const & m2
@ -688,7 +688,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> operator/
inline tmat3x3<T, P> operator/
(
tmat3x3<T, P> const & m,
T const & s
@ -701,7 +701,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> operator/
inline tmat3x3<T, P> operator/
(
T const & s,
tmat3x3<T, P> const & m
@ -714,7 +714,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat3x3<T, P>::col_type operator/
inline typename tmat3x3<T, P>::col_type operator/
(
tmat3x3<T, P> const & m,
typename tmat3x3<T, P>::row_type const & v
@ -724,7 +724,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat3x3<T, P>::row_type operator/
inline typename tmat3x3<T, P>::row_type operator/
(
typename tmat3x3<T, P>::col_type const & v,
tmat3x3<T, P> const & m
@ -734,7 +734,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> operator/
inline tmat3x3<T, P> operator/
(
tmat3x3<T, P> const & m1,
tmat3x3<T, P> const & m2
@ -746,7 +746,7 @@ namespace detail
// Unary constant operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> const operator-
inline tmat3x3<T, P> const operator-
(
tmat3x3<T, P> const & m
)
@ -761,7 +761,7 @@ namespace detail
// Boolean operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator==
inline bool operator==
(
tmat3x3<T, P> const & m1,
tmat3x3<T, P> const & m2
@ -771,7 +771,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator!=
inline bool operator!=
(
tmat3x3<T, P> const & m1,
tmat3x3<T, P> const & m2

View File

@ -30,7 +30,7 @@ namespace glm{
namespace detail
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER length_t tmat3x4<T, P>::length() const
inline length_t tmat3x4<T, P>::length() const
{
return 3;
}
@ -39,7 +39,7 @@ namespace detail
// Accesses
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat3x4<T, P>::col_type &
inline typename tmat3x4<T, P>::col_type &
tmat3x4<T, P>::operator[]
(
length_t i
@ -50,7 +50,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat3x4<T, P>::col_type const &
inline typename tmat3x4<T, P>::col_type const &
tmat3x4<T, P>::operator[]
(
length_t i
@ -64,7 +64,7 @@ namespace detail
// Constructors
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4()
inline tmat3x4<T, P>::tmat3x4()
{
this->value[0] = col_type(1, 0, 0, 0);
this->value[1] = col_type(0, 1, 0, 0);
@ -72,7 +72,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4
inline tmat3x4<T, P>::tmat3x4
(
tmat3x4<T, P> const & m
)
@ -84,7 +84,7 @@ namespace detail
template <typename T, precision P>
template <precision Q>
GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4(
inline tmat3x4<T, P>::tmat3x4(
tmat3x4<T, Q> const & m)
{
this->value[0] = m.value[0];
@ -93,14 +93,14 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4
inline tmat3x4<T, P>::tmat3x4
(
ctor
)
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4
inline tmat3x4<T, P>::tmat3x4
(
T const & s
)
@ -112,7 +112,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4
inline tmat3x4<T, P>::tmat3x4
(
T const & x0, T const & y0, T const & z0, T const & w0,
T const & x1, T const & y1, T const & z1, T const & w1,
@ -125,7 +125,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4
inline tmat3x4<T, P>::tmat3x4
(
col_type const & v0,
col_type const & v1,
@ -144,7 +144,7 @@ namespace detail
typename X1, typename Y1, typename Z1, typename W1,
typename X2, typename Y2, typename Z2, typename W2,
typename X3, typename Y3, typename Z3, typename W3>
GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4
inline tmat3x4<T, P>::tmat3x4
(
X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1,
X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2,
@ -158,7 +158,7 @@ namespace detail
template <typename T, precision P>
template <typename V1, typename V2, typename V3>
GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4
inline tmat3x4<T, P>::tmat3x4
(
tvec4<V1, P> const & v1,
tvec4<V2, P> const & v2,
@ -173,7 +173,7 @@ namespace detail
// Conversion
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4
inline tmat3x4<T, P>::tmat3x4
(
tmat3x4<U, Q> const & m
)
@ -184,7 +184,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4
inline tmat3x4<T, P>::tmat3x4
(
tmat2x2<T, P> const & m
)
@ -195,7 +195,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4
inline tmat3x4<T, P>::tmat3x4
(
tmat3x3<T, P> const & m
)
@ -206,7 +206,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4
inline tmat3x4<T, P>::tmat3x4
(
tmat4x4<T, P> const & m
)
@ -217,7 +217,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4
inline tmat3x4<T, P>::tmat3x4
(
tmat2x3<T, P> const & m
)
@ -228,7 +228,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4
inline tmat3x4<T, P>::tmat3x4
(
tmat3x2<T, P> const & m
)
@ -239,7 +239,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4
inline tmat3x4<T, P>::tmat3x4
(
tmat2x4<T, P> const & m
)
@ -250,7 +250,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4
inline tmat3x4<T, P>::tmat3x4
(
tmat4x2<T, P> const & m
)
@ -261,7 +261,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4
inline tmat3x4<T, P>::tmat3x4
(
tmat4x3<T, P> const & m
)
@ -275,7 +275,7 @@ namespace detail
// Unary updatable operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P>& tmat3x4<T, P>::operator= (tmat3x4<T, P> const & m)
inline tmat3x4<T, P>& tmat3x4<T, P>::operator= (tmat3x4<T, P> const & m)
{
this->value[0] = m[0];
this->value[1] = m[1];
@ -285,7 +285,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x4<T, P>& tmat3x4<T, P>::operator= (tmat3x4<U, P> const & m)
inline tmat3x4<T, P>& tmat3x4<T, P>::operator= (tmat3x4<U, P> const & m)
{
this->value[0] = m[0];
this->value[1] = m[1];
@ -295,7 +295,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x4<T, P>& tmat3x4<T, P>::operator+= (U s)
inline tmat3x4<T, P>& tmat3x4<T, P>::operator+= (U s)
{
this->value[0] += s;
this->value[1] += s;
@ -305,7 +305,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x4<T, P>& tmat3x4<T, P>::operator+= (tmat3x4<U, P> const & m)
inline tmat3x4<T, P>& tmat3x4<T, P>::operator+= (tmat3x4<U, P> const & m)
{
this->value[0] += m[0];
this->value[1] += m[1];
@ -315,7 +315,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x4<T, P>& tmat3x4<T, P>::operator-= (U s)
inline tmat3x4<T, P>& tmat3x4<T, P>::operator-= (U s)
{
this->value[0] -= s;
this->value[1] -= s;
@ -325,7 +325,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x4<T, P>& tmat3x4<T, P>::operator-= (tmat3x4<U, P> const & m)
inline tmat3x4<T, P>& tmat3x4<T, P>::operator-= (tmat3x4<U, P> const & m)
{
this->value[0] -= m[0];
this->value[1] -= m[1];
@ -335,7 +335,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x4<T, P>& tmat3x4<T, P>::operator*= (U s)
inline tmat3x4<T, P>& tmat3x4<T, P>::operator*= (U s)
{
this->value[0] *= s;
this->value[1] *= s;
@ -345,7 +345,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat3x4<T, P> & tmat3x4<T, P>::operator/= (U s)
inline tmat3x4<T, P> & tmat3x4<T, P>::operator/= (U s)
{
this->value[0] /= s;
this->value[1] /= s;
@ -354,7 +354,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P>& tmat3x4<T, P>::operator++ ()
inline tmat3x4<T, P>& tmat3x4<T, P>::operator++ ()
{
++this->value[0];
++this->value[1];
@ -363,7 +363,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P>& tmat3x4<T, P>::operator-- ()
inline tmat3x4<T, P>& tmat3x4<T, P>::operator-- ()
{
--this->value[0];
--this->value[1];
@ -372,7 +372,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P> tmat3x4<T, P>::operator++(int)
inline tmat3x4<T, P> tmat3x4<T, P>::operator++(int)
{
tmat3x4<T, P> Result(*this);
++*this;
@ -380,7 +380,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P> tmat3x4<T, P>::operator--(int)
inline tmat3x4<T, P> tmat3x4<T, P>::operator--(int)
{
tmat3x4<T, P> Result(*this);
--*this;
@ -391,7 +391,7 @@ namespace detail
// Binary operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P> operator+
inline tmat3x4<T, P> operator+
(
tmat3x4<T, P> const & m,
T const & s
@ -404,7 +404,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P> operator+
inline tmat3x4<T, P> operator+
(
tmat3x4<T, P> const & m1,
tmat3x4<T, P> const & m2
@ -417,7 +417,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P> operator-
inline tmat3x4<T, P> operator-
(
tmat3x4<T, P> const & m,
T const & s
@ -430,7 +430,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P> operator-
inline tmat3x4<T, P> operator-
(
tmat3x4<T, P> const & m1,
tmat3x4<T, P> const & m2
@ -443,7 +443,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P> operator*
inline tmat3x4<T, P> operator*
(
tmat3x4<T, P> const & m,
T const & s
@ -456,7 +456,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P> operator*
inline tmat3x4<T, P> operator*
(
T const & s,
tmat3x4<T, P> const & m
@ -469,7 +469,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat3x4<T, P>::col_type operator*
inline typename tmat3x4<T, P>::col_type operator*
(
tmat3x4<T, P> const & m,
typename tmat3x4<T, P>::row_type const & v
@ -483,7 +483,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat3x4<T, P>::row_type operator*
inline typename tmat3x4<T, P>::row_type operator*
(
typename tmat3x4<T, P>::col_type const & v,
tmat3x4<T, P> const & m
@ -496,7 +496,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> operator*
inline tmat4x4<T, P> operator*
(
tmat3x4<T, P> const & m1,
tmat4x3<T, P> const & m2
@ -549,7 +549,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P> operator*
inline tmat2x4<T, P> operator*
(
tmat3x4<T, P> const & m1,
tmat2x3<T, P> const & m2
@ -567,7 +567,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P> operator*
inline tmat3x4<T, P> operator*
(
tmat3x4<T, P> const & m1,
tmat3x3<T, P> const & m2
@ -589,7 +589,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P> operator/
inline tmat3x4<T, P> operator/
(
tmat3x4<T, P> const & m,
T const & s
@ -602,7 +602,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P> operator/
inline tmat3x4<T, P> operator/
(
T const & s,
tmat3x4<T, P> const & m
@ -616,7 +616,7 @@ namespace detail
// Unary constant operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P> const operator-
inline tmat3x4<T, P> const operator-
(
tmat3x4<T, P> const & m
)
@ -631,7 +631,7 @@ namespace detail
// Boolean operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator==
inline bool operator==
(
tmat3x4<T, P> const & m1,
tmat3x4<T, P> const & m2
@ -641,7 +641,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator!=
inline bool operator!=
(
tmat3x4<T, P> const & m1,
tmat3x4<T, P> const & m2

View File

@ -30,7 +30,7 @@ namespace glm{
namespace detail
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER length_t tmat4x2<T, P>::length() const
inline length_t tmat4x2<T, P>::length() const
{
return 4;
}
@ -39,7 +39,7 @@ namespace detail
// Accesses
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat4x2<T, P>::col_type &
inline typename tmat4x2<T, P>::col_type &
tmat4x2<T, P>::operator[]
(
length_t i
@ -50,7 +50,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat4x2<T, P>::col_type const &
inline typename tmat4x2<T, P>::col_type const &
tmat4x2<T, P>::operator[]
(
length_t i
@ -64,7 +64,7 @@ namespace detail
// Constructors
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2()
inline tmat4x2<T, P>::tmat4x2()
{
value_type const Zero(0);
value_type const One(1);
@ -75,7 +75,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2(
inline tmat4x2<T, P>::tmat4x2(
tmat4x2<T, P> const & m)
{
this->value[0] = m.value[0];
@ -86,7 +86,7 @@ namespace detail
template <typename T, precision P>
template <precision Q>
GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2(
inline tmat4x2<T, P>::tmat4x2(
tmat4x2<T, Q> const & m)
{
this->value[0] = m.value[0];
@ -96,11 +96,11 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2(ctor)
inline tmat4x2<T, P>::tmat4x2(ctor)
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2
inline tmat4x2<T, P>::tmat4x2
(
T const & s
)
@ -113,7 +113,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2
inline tmat4x2<T, P>::tmat4x2
(
T const & x0, T const & y0,
T const & x1, T const & y1,
@ -128,7 +128,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2
inline tmat4x2<T, P>::tmat4x2
(
col_type const & v0,
col_type const & v1,
@ -151,7 +151,7 @@ namespace detail
typename X2, typename Y2,
typename X3, typename Y3,
typename X4, typename Y4>
GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2
inline tmat4x2<T, P>::tmat4x2
(
X1 const & x1, Y1 const & y1,
X2 const & x2, Y2 const & y2,
@ -167,7 +167,7 @@ namespace detail
template <typename T, precision P>
template <typename V1, typename V2, typename V3, typename V4>
GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2
inline tmat4x2<T, P>::tmat4x2
(
tvec2<V1, P> const & v1,
tvec2<V2, P> const & v2,
@ -185,7 +185,7 @@ namespace detail
// Conversion
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2
inline tmat4x2<T, P>::tmat4x2
(
tmat4x2<U, Q> const & m
)
@ -197,7 +197,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2
inline tmat4x2<T, P>::tmat4x2
(
tmat2x2<T, P> const & m
)
@ -209,7 +209,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2
inline tmat4x2<T, P>::tmat4x2
(
tmat3x3<T, P> const & m
)
@ -221,7 +221,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2
inline tmat4x2<T, P>::tmat4x2
(
tmat4x4<T, P> const & m
)
@ -233,7 +233,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2
inline tmat4x2<T, P>::tmat4x2
(
tmat2x3<T, P> const & m
)
@ -245,7 +245,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2
inline tmat4x2<T, P>::tmat4x2
(
tmat3x2<T, P> const & m
)
@ -257,7 +257,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2
inline tmat4x2<T, P>::tmat4x2
(
tmat2x4<T, P> const & m
)
@ -269,7 +269,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2
inline tmat4x2<T, P>::tmat4x2
(
tmat4x3<T, P> const & m
)
@ -281,7 +281,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2
inline tmat4x2<T, P>::tmat4x2
(
tmat3x4<T, P> const & m
)
@ -296,7 +296,7 @@ namespace detail
// Unary updatable operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P>& tmat4x2<T, P>::operator=
inline tmat4x2<T, P>& tmat4x2<T, P>::operator=
(
tmat4x2<T, P> const & m
)
@ -310,7 +310,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x2<T, P>& tmat4x2<T, P>::operator=
inline tmat4x2<T, P>& tmat4x2<T, P>::operator=
(
tmat4x2<U, P> const & m
)
@ -324,7 +324,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x2<T, P> & tmat4x2<T, P>::operator+= (U s)
inline tmat4x2<T, P> & tmat4x2<T, P>::operator+= (U s)
{
this->value[0] += s;
this->value[1] += s;
@ -335,7 +335,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x2<T, P> & tmat4x2<T, P>::operator+= (tmat4x2<U, P> const & m)
inline tmat4x2<T, P> & tmat4x2<T, P>::operator+= (tmat4x2<U, P> const & m)
{
this->value[0] += m[0];
this->value[1] += m[1];
@ -346,7 +346,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x2<T, P> & tmat4x2<T, P>::operator-= (U s)
inline tmat4x2<T, P> & tmat4x2<T, P>::operator-= (U s)
{
this->value[0] -= s;
this->value[1] -= s;
@ -357,7 +357,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x2<T, P> & tmat4x2<T, P>::operator-= (tmat4x2<U, P> const & m)
inline tmat4x2<T, P> & tmat4x2<T, P>::operator-= (tmat4x2<U, P> const & m)
{
this->value[0] -= m[0];
this->value[1] -= m[1];
@ -368,7 +368,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x2<T, P> & tmat4x2<T, P>::operator*= (U s)
inline tmat4x2<T, P> & tmat4x2<T, P>::operator*= (U s)
{
this->value[0] *= s;
this->value[1] *= s;
@ -379,7 +379,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x2<T, P> & tmat4x2<T, P>::operator/= (U s)
inline tmat4x2<T, P> & tmat4x2<T, P>::operator/= (U s)
{
this->value[0] /= s;
this->value[1] /= s;
@ -389,7 +389,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P> & tmat4x2<T, P>::operator++ ()
inline tmat4x2<T, P> & tmat4x2<T, P>::operator++ ()
{
++this->value[0];
++this->value[1];
@ -399,7 +399,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P> & tmat4x2<T, P>::operator-- ()
inline tmat4x2<T, P> & tmat4x2<T, P>::operator-- ()
{
--this->value[0];
--this->value[1];
@ -409,7 +409,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P> tmat4x2<T, P>::operator++(int)
inline tmat4x2<T, P> tmat4x2<T, P>::operator++(int)
{
tmat4x2<T, P> Result(*this);
++*this;
@ -417,7 +417,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P> tmat4x2<T, P>::operator--(int)
inline tmat4x2<T, P> tmat4x2<T, P>::operator--(int)
{
tmat4x2<T, P> Result(*this);
--*this;
@ -428,7 +428,7 @@ namespace detail
// Binary operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P> operator+
inline tmat4x2<T, P> operator+
(
tmat4x2<T, P> const & m,
T const & s
@ -442,7 +442,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P> operator+
inline tmat4x2<T, P> operator+
(
tmat4x2<T, P> const & m1,
tmat4x2<T, P> const & m2
@ -456,7 +456,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P> operator-
inline tmat4x2<T, P> operator-
(
tmat4x2<T, P> const & m,
T const & s
@ -470,7 +470,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P> operator-
inline tmat4x2<T, P> operator-
(
tmat4x2<T, P> const & m1,
tmat4x2<T, P> const & m2
@ -484,7 +484,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P> operator*
inline tmat4x2<T, P> operator*
(
tmat4x2<T, P> const & m,
T const & s
@ -498,7 +498,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P> operator*
inline tmat4x2<T, P> operator*
(
T const & s,
tmat4x2<T, P> const & m
@ -512,7 +512,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat4x2<T, P>::col_type operator*
inline typename tmat4x2<T, P>::col_type operator*
(
tmat4x2<T, P> const & m,
typename tmat4x2<T, P>::row_type const & v
@ -524,7 +524,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat4x2<T, P>::row_type operator*
inline typename tmat4x2<T, P>::row_type operator*
(
typename tmat4x2<T, P>::col_type const & v,
tmat4x2<T, P> const & m
@ -538,7 +538,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P> operator*
inline tmat2x2<T, P> operator*
(
tmat4x2<T, P> const & m1,
tmat2x4<T, P> const & m2
@ -571,7 +571,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P> operator*
inline tmat3x2<T, P> operator*
(
tmat4x2<T, P> const & m1,
tmat3x4<T, P> const & m2
@ -587,7 +587,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P> operator*
inline tmat4x2<T, P> operator*
(
tmat4x2<T, P> const & m1,
tmat4x4<T, P> const & m2
@ -605,7 +605,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P> operator/
inline tmat4x2<T, P> operator/
(
tmat4x2<T, P> const & m,
T const & s
@ -619,7 +619,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P> operator/
inline tmat4x2<T, P> operator/
(
T const & s,
tmat4x2<T, P> const & m
@ -634,7 +634,7 @@ namespace detail
// Unary constant operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P> const operator-
inline tmat4x2<T, P> const operator-
(
tmat4x2<T, P> const & m
)
@ -650,7 +650,7 @@ namespace detail
// Boolean operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator==
inline bool operator==
(
tmat4x2<T, P> const & m1,
tmat4x2<T, P> const & m2
@ -660,7 +660,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator!=
inline bool operator!=
(
tmat4x2<T, P> const & m1,
tmat4x2<T, P> const & m2

View File

@ -30,7 +30,7 @@ namespace glm{
namespace detail
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER length_t tmat4x3<T, P>::length() const
inline length_t tmat4x3<T, P>::length() const
{
return 4;
}
@ -39,7 +39,7 @@ namespace detail
// Accesses
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat4x3<T, P>::col_type &
inline typename tmat4x3<T, P>::col_type &
tmat4x3<T, P>::operator[]
(
size_type i
@ -50,7 +50,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat4x3<T, P>::col_type const &
inline typename tmat4x3<T, P>::col_type const &
tmat4x3<T, P>::operator[]
(
size_type i
@ -64,7 +64,7 @@ namespace detail
// Constructors
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3()
inline tmat4x3<T, P>::tmat4x3()
{
value_type const Zero(0);
value_type const One(1);
@ -75,7 +75,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3(
inline tmat4x3<T, P>::tmat4x3(
tmat4x3<T, P> const & m)
{
this->value[0] = m.value[0];
@ -86,7 +86,7 @@ namespace detail
template <typename T, precision P>
template <precision Q>
GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3(
inline tmat4x3<T, P>::tmat4x3(
tmat4x3<T, Q> const & m)
{
this->value[0] = m.value[0];
@ -96,11 +96,11 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3(ctor)
inline tmat4x3<T, P>::tmat4x3(ctor)
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3(
inline tmat4x3<T, P>::tmat4x3(
T const & s)
{
value_type const Zero(0);
@ -111,7 +111,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3
inline tmat4x3<T, P>::tmat4x3
(
T const & x0, T const & y0, T const & z0,
T const & x1, T const & y1, T const & z1,
@ -126,7 +126,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3
inline tmat4x3<T, P>::tmat4x3
(
col_type const & v0,
col_type const & v1,
@ -149,7 +149,7 @@ namespace detail
typename X2, typename Y2, typename Z2,
typename X3, typename Y3, typename Z3,
typename X4, typename Y4, typename Z4>
GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3
inline tmat4x3<T, P>::tmat4x3
(
X1 const & x1, Y1 const & y1, Z1 const & z1,
X2 const & x2, Y2 const & y2, Z2 const & z2,
@ -165,7 +165,7 @@ namespace detail
template <typename T, precision P>
template <typename V1, typename V2, typename V3, typename V4>
GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3
inline tmat4x3<T, P>::tmat4x3
(
tvec3<V1, P> const & v1,
tvec3<V2, P> const & v2,
@ -184,7 +184,7 @@ namespace detail
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3
inline tmat4x3<T, P>::tmat4x3
(
tmat4x3<U, Q> const & m
)
@ -196,7 +196,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3
inline tmat4x3<T, P>::tmat4x3
(
tmat2x2<T, P> const & m
)
@ -208,7 +208,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3
inline tmat4x3<T, P>::tmat4x3
(
tmat3x3<T, P> const & m
)
@ -220,7 +220,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3
inline tmat4x3<T, P>::tmat4x3
(
tmat4x4<T, P> const & m
)
@ -232,7 +232,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3
inline tmat4x3<T, P>::tmat4x3
(
tmat2x3<T, P> const & m
)
@ -244,7 +244,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3
inline tmat4x3<T, P>::tmat4x3
(
tmat3x2<T, P> const & m
)
@ -256,7 +256,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3
inline tmat4x3<T, P>::tmat4x3
(
tmat2x4<T, P> const & m
)
@ -268,7 +268,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3
inline tmat4x3<T, P>::tmat4x3
(
tmat4x2<T, P> const & m
)
@ -280,7 +280,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3
inline tmat4x3<T, P>::tmat4x3
(
tmat3x4<T, P> const & m
)
@ -295,7 +295,7 @@ namespace detail
// Unary updatable operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P>& tmat4x3<T, P>::operator=
inline tmat4x3<T, P>& tmat4x3<T, P>::operator=
(
tmat4x3<T, P> const & m
)
@ -309,7 +309,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x3<T, P>& tmat4x3<T, P>::operator=
inline tmat4x3<T, P>& tmat4x3<T, P>::operator=
(
tmat4x3<U, P> const & m
)
@ -323,7 +323,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x3<T, P> & tmat4x3<T, P>::operator+= (U s)
inline tmat4x3<T, P> & tmat4x3<T, P>::operator+= (U s)
{
this->value[0] += s;
this->value[1] += s;
@ -334,7 +334,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x3<T, P> & tmat4x3<T, P>::operator+= (tmat4x3<U, P> const & m)
inline tmat4x3<T, P> & tmat4x3<T, P>::operator+= (tmat4x3<U, P> const & m)
{
this->value[0] += m[0];
this->value[1] += m[1];
@ -345,7 +345,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x3<T, P> & tmat4x3<T, P>::operator-= (U s)
inline tmat4x3<T, P> & tmat4x3<T, P>::operator-= (U s)
{
this->value[0] -= s;
this->value[1] -= s;
@ -356,7 +356,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x3<T, P> & tmat4x3<T, P>::operator-= (tmat4x3<U, P> const & m)
inline tmat4x3<T, P> & tmat4x3<T, P>::operator-= (tmat4x3<U, P> const & m)
{
this->value[0] -= m[0];
this->value[1] -= m[1];
@ -367,7 +367,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x3<T, P> & tmat4x3<T, P>::operator*= (U s)
inline tmat4x3<T, P> & tmat4x3<T, P>::operator*= (U s)
{
this->value[0] *= s;
this->value[1] *= s;
@ -378,7 +378,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x3<T, P> & tmat4x3<T, P>::operator/= (U s)
inline tmat4x3<T, P> & tmat4x3<T, P>::operator/= (U s)
{
this->value[0] /= s;
this->value[1] /= s;
@ -388,7 +388,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P> & tmat4x3<T, P>::operator++ ()
inline tmat4x3<T, P> & tmat4x3<T, P>::operator++ ()
{
++this->value[0];
++this->value[1];
@ -398,7 +398,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P> & tmat4x3<T, P>::operator-- ()
inline tmat4x3<T, P> & tmat4x3<T, P>::operator-- ()
{
--this->value[0];
--this->value[1];
@ -411,7 +411,7 @@ namespace detail
// Binary operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P> operator+ (
inline tmat4x3<T, P> operator+ (
tmat4x3<T, P> const & m,
T const & s)
{
@ -423,7 +423,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P> operator+ (
inline tmat4x3<T, P> operator+ (
tmat4x3<T, P> const & m1,
tmat4x3<T, P> const & m2)
{
@ -435,7 +435,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P> operator- (
inline tmat4x3<T, P> operator- (
tmat4x3<T, P> const & m,
T const & s)
{
@ -447,7 +447,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P> operator- (
inline tmat4x3<T, P> operator- (
tmat4x3<T, P> const & m1,
tmat4x3<T, P> const & m2)
{
@ -459,7 +459,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P> operator* (
inline tmat4x3<T, P> operator* (
tmat4x3<T, P> const & m,
T const & s)
{
@ -471,7 +471,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P> operator* (
inline tmat4x3<T, P> operator* (
T const & s,
tmat4x3<T, P> const & m)
{
@ -483,7 +483,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat4x3<T, P>::col_type operator*
inline typename tmat4x3<T, P>::col_type operator*
(
tmat4x3<T, P> const & m,
typename tmat4x3<T, P>::row_type const & v)
@ -495,7 +495,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat4x3<T, P>::row_type operator*
inline typename tmat4x3<T, P>::row_type operator*
(
typename tmat4x3<T, P>::col_type const & v,
tmat4x3<T, P> const & m)
@ -508,7 +508,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P> operator*
inline tmat2x3<T, P> operator*
(
tmat4x3<T, P> const & m1,
tmat2x4<T, P> const & m2
@ -524,7 +524,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P> operator*
inline tmat3x3<T, P> operator*
(
tmat4x3<T, P> const & m1,
tmat3x4<T, P> const & m2
@ -570,7 +570,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P> operator*
inline tmat4x3<T, P> operator*
(
tmat4x3<T, P> const & m1,
tmat4x4<T, P> const & m2
@ -592,7 +592,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P> operator/
inline tmat4x3<T, P> operator/
(
tmat4x3<T, P> const & m,
T const & s
@ -606,7 +606,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P> operator/
inline tmat4x3<T, P> operator/
(
T const & s,
tmat4x3<T, P> const & m
@ -621,7 +621,7 @@ namespace detail
// Unary constant operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P> const operator-
inline tmat4x3<T, P> const operator-
(
tmat4x3<T, P> const & m
)
@ -634,7 +634,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P> const operator++
inline tmat4x3<T, P> const operator++
(
tmat4x3<T, P> const & m,
int
@ -648,7 +648,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P> const operator--
inline tmat4x3<T, P> const operator--
(
tmat4x3<T, P> const & m,
int
@ -662,7 +662,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P> tmat4x3<T, P>::operator++(int)
inline tmat4x3<T, P> tmat4x3<T, P>::operator++(int)
{
tmat4x3<T, P> Result(*this);
++*this;
@ -670,7 +670,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P> tmat4x3<T, P>::operator--(int)
inline tmat4x3<T, P> tmat4x3<T, P>::operator--(int)
{
tmat4x3<T, P> Result(*this);
--*this;
@ -681,7 +681,7 @@ namespace detail
// Boolean operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator==
inline bool operator==
(
tmat4x3<T, P> const & m1,
tmat4x3<T, P> const & m2
@ -691,7 +691,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator!=
inline bool operator!=
(
tmat4x3<T, P> const & m1,
tmat4x3<T, P> const & m2

View File

@ -30,7 +30,7 @@ namespace glm{
namespace detail
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER length_t tmat4x4<T, P>::length() const
inline length_t tmat4x4<T, P>::length() const
{
return 4;
}
@ -39,7 +39,7 @@ namespace detail
// Accesses
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat4x4<T, P>::col_type &
inline typename tmat4x4<T, P>::col_type &
tmat4x4<T, P>::operator[]
(
length_t i
@ -50,7 +50,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat4x4<T, P>::col_type const &
inline typename tmat4x4<T, P>::col_type const &
tmat4x4<T, P>::operator[]
(
length_t i
@ -64,7 +64,7 @@ namespace detail
// Constructors
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4()
inline tmat4x4<T, P>::tmat4x4()
{
T Zero(0);
T One(1);
@ -75,7 +75,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4
inline tmat4x4<T, P>::tmat4x4
(
tmat4x4<T, P> const & m
)
@ -88,7 +88,7 @@ namespace detail
template <typename T, precision P>
template <precision Q>
GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4
inline tmat4x4<T, P>::tmat4x4
(
tmat4x4<T, Q> const & m
)
@ -100,14 +100,14 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4
inline tmat4x4<T, P>::tmat4x4
(
ctor
)
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4
inline tmat4x4<T, P>::tmat4x4
(
T const & s
)
@ -120,7 +120,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4
inline tmat4x4<T, P>::tmat4x4
(
T const & x0, T const & y0, T const & z0, T const & w0,
T const & x1, T const & y1, T const & z1, T const & w1,
@ -135,7 +135,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4
inline tmat4x4<T, P>::tmat4x4
(
col_type const & v0,
col_type const & v1,
@ -151,7 +151,7 @@ namespace detail
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4
inline tmat4x4<T, P>::tmat4x4
(
tmat4x4<U, Q> const & m
)
@ -170,7 +170,7 @@ namespace detail
typename X2, typename Y2, typename Z2, typename W2,
typename X3, typename Y3, typename Z3, typename W3,
typename X4, typename Y4, typename Z4, typename W4>
GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4
inline tmat4x4<T, P>::tmat4x4
(
X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1,
X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2,
@ -186,7 +186,7 @@ namespace detail
template <typename T, precision P>
template <typename V1, typename V2, typename V3, typename V4>
GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4
inline tmat4x4<T, P>::tmat4x4
(
tvec4<V1, P> const & v1,
tvec4<V2, P> const & v2,
@ -203,7 +203,7 @@ namespace detail
//////////////////////////////////////
// Matrix convertion constructors
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4
inline tmat4x4<T, P>::tmat4x4
(
tmat2x2<T, P> const & m
)
@ -215,7 +215,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4
inline tmat4x4<T, P>::tmat4x4
(
tmat3x3<T, P> const & m
)
@ -227,7 +227,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4
inline tmat4x4<T, P>::tmat4x4
(
tmat2x3<T, P> const & m
)
@ -239,7 +239,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4
inline tmat4x4<T, P>::tmat4x4
(
tmat3x2<T, P> const & m
)
@ -251,7 +251,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4
inline tmat4x4<T, P>::tmat4x4
(
tmat2x4<T, P> const & m
)
@ -263,7 +263,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4
inline tmat4x4<T, P>::tmat4x4
(
tmat4x2<T, P> const & m
)
@ -275,7 +275,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4
inline tmat4x4<T, P>::tmat4x4
(
tmat3x4<T, P> const & m
)
@ -287,7 +287,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4
inline tmat4x4<T, P>::tmat4x4
(
tmat4x3<T, P> const & m
)
@ -302,7 +302,7 @@ namespace detail
// Operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P>& tmat4x4<T, P>::operator=
inline tmat4x4<T, P>& tmat4x4<T, P>::operator=
(
tmat4x4<T, P> const & m
)
@ -318,7 +318,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x4<T, P>& tmat4x4<T, P>::operator=
inline tmat4x4<T, P>& tmat4x4<T, P>::operator=
(
tmat4x4<U, P> const & m
)
@ -334,7 +334,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x4<T, P>& tmat4x4<T, P>::operator+= (U s)
inline tmat4x4<T, P>& tmat4x4<T, P>::operator+= (U s)
{
this->value[0] += s;
this->value[1] += s;
@ -345,7 +345,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x4<T, P>& tmat4x4<T, P>::operator+= (tmat4x4<U, P> const & m)
inline tmat4x4<T, P>& tmat4x4<T, P>::operator+= (tmat4x4<U, P> const & m)
{
this->value[0] += m[0];
this->value[1] += m[1];
@ -356,7 +356,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x4<T, P> & tmat4x4<T, P>::operator-= (U s)
inline tmat4x4<T, P> & tmat4x4<T, P>::operator-= (U s)
{
this->value[0] -= s;
this->value[1] -= s;
@ -367,7 +367,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x4<T, P> & tmat4x4<T, P>::operator-= (tmat4x4<U, P> const & m)
inline tmat4x4<T, P> & tmat4x4<T, P>::operator-= (tmat4x4<U, P> const & m)
{
this->value[0] -= m[0];
this->value[1] -= m[1];
@ -378,7 +378,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x4<T, P> & tmat4x4<T, P>::operator*= (U s)
inline tmat4x4<T, P> & tmat4x4<T, P>::operator*= (U s)
{
this->value[0] *= s;
this->value[1] *= s;
@ -389,14 +389,14 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x4<T, P> & tmat4x4<T, P>::operator*= (tmat4x4<U, P> const & m)
inline tmat4x4<T, P> & tmat4x4<T, P>::operator*= (tmat4x4<U, P> const & m)
{
return (*this = *this * m);
}
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x4<T, P> & tmat4x4<T, P>::operator/= (U s)
inline tmat4x4<T, P> & tmat4x4<T, P>::operator/= (U s)
{
this->value[0] /= s;
this->value[1] /= s;
@ -407,13 +407,13 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tmat4x4<T, P> & tmat4x4<T, P>::operator/= (tmat4x4<U, P> const & m)
inline tmat4x4<T, P> & tmat4x4<T, P>::operator/= (tmat4x4<U, P> const & m)
{
return (*this = *this * detail::compute_inverse<detail::tmat4x4, T, P>::call(m));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> & tmat4x4<T, P>::operator++ ()
inline tmat4x4<T, P> & tmat4x4<T, P>::operator++ ()
{
++this->value[0];
++this->value[1];
@ -423,7 +423,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> & tmat4x4<T, P>::operator-- ()
inline tmat4x4<T, P> & tmat4x4<T, P>::operator-- ()
{
--this->value[0];
--this->value[1];
@ -433,7 +433,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> tmat4x4<T, P>::operator++(int)
inline tmat4x4<T, P> tmat4x4<T, P>::operator++(int)
{
tmat4x4<T, P> Result(*this);
++*this;
@ -441,7 +441,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> tmat4x4<T, P>::operator--(int)
inline tmat4x4<T, P> tmat4x4<T, P>::operator--(int)
{
tmat4x4<T, P> Result(*this);
--*this;
@ -511,7 +511,7 @@ namespace detail
// Binary operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> operator+
inline tmat4x4<T, P> operator+
(
tmat4x4<T, P> const & m,
T const & s
@ -525,7 +525,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> operator+
inline tmat4x4<T, P> operator+
(
T const & s,
tmat4x4<T, P> const & m
@ -539,7 +539,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> operator+
inline tmat4x4<T, P> operator+
(
tmat4x4<T, P> const & m1,
tmat4x4<T, P> const & m2
@ -553,7 +553,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> operator-
inline tmat4x4<T, P> operator-
(
tmat4x4<T, P> const & m,
T const & s
@ -567,7 +567,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> operator-
inline tmat4x4<T, P> operator-
(
T const & s,
tmat4x4<T, P> const & m
@ -581,7 +581,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> operator-
inline tmat4x4<T, P> operator-
(
tmat4x4<T, P> const & m1,
tmat4x4<T, P> const & m2
@ -595,7 +595,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> operator*
inline tmat4x4<T, P> operator*
(
tmat4x4<T, P> const & m,
T const & s
@ -609,7 +609,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> operator*
inline tmat4x4<T, P> operator*
(
T const & s,
tmat4x4<T, P> const & m
@ -623,7 +623,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat4x4<T, P>::col_type operator*
inline typename tmat4x4<T, P>::col_type operator*
(
tmat4x4<T, P> const & m,
typename tmat4x4<T, P>::row_type const & v
@ -671,7 +671,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat4x4<T, P>::row_type operator*
inline typename tmat4x4<T, P>::row_type operator*
(
typename tmat4x4<T, P>::col_type const & v,
tmat4x4<T, P> const & m
@ -685,7 +685,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P> operator*
inline tmat2x4<T, P> operator*
(
tmat4x4<T, P> const & m1,
tmat2x4<T, P> const & m2
@ -703,7 +703,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P> operator*
inline tmat3x4<T, P> operator*
(
tmat4x4<T, P> const & m1,
tmat3x4<T, P> const & m2
@ -725,7 +725,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> operator*
inline tmat4x4<T, P> operator*
(
tmat4x4<T, P> const & m1,
tmat4x4<T, P> const & m2
@ -750,7 +750,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> operator/
inline tmat4x4<T, P> operator/
(
tmat4x4<T, P> const & m,
T const & s
@ -764,7 +764,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> operator/
inline tmat4x4<T, P> operator/
(
T const & s,
tmat4x4<T, P> const & m
@ -778,7 +778,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat4x4<T, P>::col_type operator/
inline typename tmat4x4<T, P>::col_type operator/
(
tmat4x4<T, P> const & m,
typename tmat4x4<T, P>::row_type const & v
@ -788,7 +788,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tmat4x4<T, P>::row_type operator/
inline typename tmat4x4<T, P>::row_type operator/
(
typename tmat4x4<T, P>::col_type const & v,
tmat4x4<T, P> const & m
@ -798,7 +798,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> operator/
inline tmat4x4<T, P> operator/
(
tmat4x4<T, P> const & m1,
tmat4x4<T, P> const & m2
@ -810,7 +810,7 @@ namespace detail
// Unary constant operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> const operator-
inline tmat4x4<T, P> const operator-
(
tmat4x4<T, P> const & m
)
@ -823,7 +823,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> const operator++
inline tmat4x4<T, P> const operator++
(
tmat4x4<T, P> const & m,
int
@ -837,7 +837,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P> const operator--
inline tmat4x4<T, P> const operator--
(
tmat4x4<T, P> const & m,
int
@ -854,7 +854,7 @@ namespace detail
// Boolean operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator==
inline bool operator==
(
tmat4x4<T, P> const & m1,
tmat4x4<T, P> const & m2
@ -864,7 +864,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator!=
inline bool operator!=
(
tmat4x4<T, P> const & m1,
tmat4x4<T, P> const & m2

View File

@ -30,7 +30,7 @@ namespace glm{
namespace detail
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER length_t tvec1<T, P>::length() const
inline length_t tvec1<T, P>::length() const
{
return 1;
}
@ -39,14 +39,14 @@ namespace detail
// Accesses
template <typename T, precision P>
GLM_FUNC_QUALIFIER T & tvec1<T, P>::operator[](length_t i)
inline T & tvec1<T, P>::operator[](length_t i)
{
assert(i >= 0 && i < this->length());
return (&x)[i];
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T const & tvec1<T, P>::operator[](length_t i) const
inline T const & tvec1<T, P>::operator[](length_t i) const
{
assert(i >= 0 && i < this->length());
return (&x)[i];
@ -56,18 +56,18 @@ namespace detail
// Implicit basic constructors
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P>::tvec1() :
inline tvec1<T, P>::tvec1() :
x(static_cast<T>(0))
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P>::tvec1(tvec1<T, P> const & v) :
inline tvec1<T, P>::tvec1(tvec1<T, P> const & v) :
x(v.x)
{}
template <typename T, precision P>
template <precision Q>
GLM_FUNC_QUALIFIER tvec1<T, P>::tvec1(tvec1<T, Q> const & v) :
inline tvec1<T, P>::tvec1(tvec1<T, Q> const & v) :
x(v.x)
{}
@ -75,11 +75,11 @@ namespace detail
// Explicit basic constructors
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P>::tvec1(ctor)
inline tvec1<T, P>::tvec1(ctor)
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P>::tvec1(T const & s) :
inline tvec1<T, P>::tvec1(T const & s) :
x(s)
{}
@ -88,7 +88,7 @@ namespace detail
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tvec1<T, P>::tvec1
inline tvec1<T, P>::tvec1
(
tvec1<U, Q> const & v
) :
@ -97,7 +97,7 @@ namespace detail
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tvec1<T, P>::tvec1
inline tvec1<T, P>::tvec1
(
tvec2<U, Q> const & v
) :
@ -106,7 +106,7 @@ namespace detail
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tvec1<T, P>::tvec1
inline tvec1<T, P>::tvec1
(
tvec3<U, Q> const & v
) :
@ -115,7 +115,7 @@ namespace detail
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tvec1<T, P>::tvec1
inline tvec1<T, P>::tvec1
(
tvec4<U, Q> const & v
) :
@ -126,7 +126,7 @@ namespace detail
// Unary arithmetic operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator=
inline tvec1<T, P> & tvec1<T, P>::operator=
(
tvec1<T, P> const & v
)
@ -137,7 +137,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator=
inline tvec1<T, P> & tvec1<T, P>::operator=
(
tvec1<U, P> const & v
)
@ -148,7 +148,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator+=
inline tvec1<T, P> & tvec1<T, P>::operator+=
(
U const & s
)
@ -159,7 +159,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator+=
inline tvec1<T, P> & tvec1<T, P>::operator+=
(
tvec1<U, P> const & v
)
@ -170,7 +170,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator-=
inline tvec1<T, P> & tvec1<T, P>::operator-=
(
U const & s
)
@ -181,7 +181,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator-=
inline tvec1<T, P> & tvec1<T, P>::operator-=
(
tvec1<U, P> const & v
)
@ -192,7 +192,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator*=
inline tvec1<T, P> & tvec1<T, P>::operator*=
(
U const & s
)
@ -203,7 +203,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator*=
inline tvec1<T, P> & tvec1<T, P>::operator*=
(
tvec1<U, P> const & v
)
@ -214,7 +214,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator/=
inline tvec1<T, P> & tvec1<T, P>::operator/=
(
U const & s
)
@ -225,7 +225,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator/=
inline tvec1<T, P> & tvec1<T, P>::operator/=
(
tvec1<U, P> const & v
)
@ -238,21 +238,21 @@ namespace detail
// Increment and decrement operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator++()
inline tvec1<T, P> & tvec1<T, P>::operator++()
{
++this->x;
return *this;
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator--()
inline tvec1<T, P> & tvec1<T, P>::operator--()
{
--this->x;
return *this;
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> tvec1<T, P>::operator++(int)
inline tvec1<T, P> tvec1<T, P>::operator++(int)
{
tvec1<T, P> Result(*this);
++*this;
@ -260,7 +260,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> tvec1<T, P>::operator--(int)
inline tvec1<T, P> tvec1<T, P>::operator--(int)
{
tvec1<T, P> Result(*this);
--*this;
@ -271,7 +271,7 @@ namespace detail
// Boolean operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator==
inline bool operator==
(
tvec1<T, P> const & v1,
tvec1<T, P> const & v2
@ -281,7 +281,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator!=
inline bool operator!=
(
tvec1<T, P> const & v1,
tvec1<T, P> const & v2
@ -295,7 +295,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator%=
inline tvec1<T, P> & tvec1<T, P>::operator%=
(
U const & s
)
@ -306,7 +306,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator%=
inline tvec1<T, P> & tvec1<T, P>::operator%=
(
tvec1<U, P> const & v
)
@ -317,7 +317,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator&=
inline tvec1<T, P> & tvec1<T, P>::operator&=
(
U const & s
)
@ -328,7 +328,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator&=
inline tvec1<T, P> & tvec1<T, P>::operator&=
(
tvec1<U, P> const & v
)
@ -339,7 +339,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator|=
inline tvec1<T, P> & tvec1<T, P>::operator|=
(
U const & s
)
@ -350,7 +350,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator|=
inline tvec1<T, P> & tvec1<T, P>::operator|=
(
tvec1<U, P> const & v
)
@ -361,7 +361,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator^=
inline tvec1<T, P> & tvec1<T, P>::operator^=
(
U const & s
)
@ -372,7 +372,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator^=
inline tvec1<T, P> & tvec1<T, P>::operator^=
(
tvec1<U, P> const & v
)
@ -383,7 +383,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator<<=
inline tvec1<T, P> & tvec1<T, P>::operator<<=
(
U const & s
)
@ -394,7 +394,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator<<=
inline tvec1<T, P> & tvec1<T, P>::operator<<=
(
tvec1<U, P> const & v
)
@ -405,7 +405,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator>>=
inline tvec1<T, P> & tvec1<T, P>::operator>>=
(
U const & s
)
@ -416,7 +416,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec1<T, P> & tvec1<T, P>::operator>>=
inline tvec1<T, P> & tvec1<T, P>::operator>>=
(
tvec1<U, P> const & v
)
@ -429,7 +429,7 @@ namespace detail
// Binary arithmetic operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator+
inline tvec1<T, P> operator+
(
tvec1<T, P> const & v,
T const & s
@ -440,7 +440,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator+
inline tvec1<T, P> operator+
(
T const & s,
tvec1<T, P> const & v
@ -451,7 +451,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator+
inline tvec1<T, P> operator+
(
tvec1<T, P> const & v1,
tvec1<T, P> const & v2
@ -463,7 +463,7 @@ namespace detail
//operator-
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator-
inline tvec1<T, P> operator-
(
tvec1<T, P> const & v,
T const & s
@ -474,7 +474,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator-
inline tvec1<T, P> operator-
(
T const & s,
tvec1<T, P> const & v
@ -485,7 +485,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator-
inline tvec1<T, P> operator-
(
tvec1<T, P> const & v1,
tvec1<T, P> const & v2
@ -497,7 +497,7 @@ namespace detail
//operator*
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator*
inline tvec1<T, P> operator*
(
tvec1<T, P> const & v,
T const & s
@ -508,7 +508,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator*
inline tvec1<T, P> operator*
(
T const & s,
tvec1<T, P> const & v
@ -519,7 +519,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator*
inline tvec1<T, P> operator*
(
tvec1<T, P> const & v1,
tvec1<T, P> const & v2
@ -531,7 +531,7 @@ namespace detail
//operator/
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator/
inline tvec1<T, P> operator/
(
tvec1<T, P> const & v,
T const & s
@ -542,7 +542,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator/
inline tvec1<T, P> operator/
(
T const & s,
tvec1<T, P> const & v
@ -553,7 +553,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator/
inline tvec1<T, P> operator/
(
tvec1<T, P> const & v1,
tvec1<T, P> const & v2
@ -565,7 +565,7 @@ namespace detail
// Unary constant operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator-
inline tvec1<T, P> operator-
(
tvec1<T, P> const & v
)
@ -575,7 +575,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator++
inline tvec1<T, P> operator++
(
tvec1<T, P> const & v,
int
@ -586,7 +586,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator--
inline tvec1<T, P> operator--
(
tvec1<T, P> const & v,
int
@ -600,7 +600,7 @@ namespace detail
// Binary bit operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator%
inline tvec1<T, P> operator%
(
tvec1<T, P> const & v,
T const & s
@ -611,7 +611,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator%
inline tvec1<T, P> operator%
(
T const & s,
tvec1<T, P> const & v
@ -622,7 +622,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator%
inline tvec1<T, P> operator%
(
tvec1<T, P> const & v1,
tvec1<T, P> const & v2
@ -633,7 +633,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator&
inline tvec1<T, P> operator&
(
tvec1<T, P> const & v,
T const & s
@ -644,7 +644,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator&
inline tvec1<T, P> operator&
(
T const & s,
tvec1<T, P> const & v
@ -655,7 +655,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator&
inline tvec1<T, P> operator&
(
tvec1<T, P> const & v1,
tvec1<T, P> const & v2
@ -666,7 +666,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator|
inline tvec1<T, P> operator|
(
tvec1<T, P> const & v,
T const & s
@ -677,7 +677,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator|
inline tvec1<T, P> operator|
(
T const & s,
tvec1<T, P> const & v
@ -688,7 +688,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator|
inline tvec1<T, P> operator|
(
tvec1<T, P> const & v1,
tvec1<T, P> const & v2
@ -699,7 +699,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator^
inline tvec1<T, P> operator^
(
tvec1<T, P> const & v,
T const & s
@ -710,7 +710,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator^
inline tvec1<T, P> operator^
(
T const & s,
tvec1<T, P> const & v
@ -721,7 +721,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator^
inline tvec1<T, P> operator^
(
tvec1<T, P> const & v1,
tvec1<T, P> const & v2
@ -732,7 +732,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator<<
inline tvec1<T, P> operator<<
(
tvec1<T, P> const & v,
T const & s
@ -743,7 +743,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator<<
inline tvec1<T, P> operator<<
(
T const & s,
tvec1<T, P> const & v
@ -754,7 +754,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator<<
inline tvec1<T, P> operator<<
(
tvec1<T, P> const & v1,
tvec1<T, P> const & v2
@ -765,7 +765,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator>>
inline tvec1<T, P> operator>>
(
tvec1<T, P> const & v,
T const & s
@ -776,7 +776,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator>>
inline tvec1<T, P> operator>>
(
T const & s,
tvec1<T, P> const & v
@ -787,7 +787,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator>>
inline tvec1<T, P> operator>>
(
tvec1<T, P> const & v1,
tvec1<T, P> const & v2
@ -798,7 +798,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P> operator~
inline tvec1<T, P> operator~
(
tvec1<T, P> const & v
)

View File

@ -30,7 +30,7 @@ namespace glm{
namespace detail
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER length_t tvec2<T, P>::length() const
inline length_t tvec2<T, P>::length() const
{
return 2;
}
@ -39,14 +39,14 @@ namespace detail
// Accesses
template <typename T, precision P>
GLM_FUNC_QUALIFIER T & tvec2<T, P>::operator[](length_t i)
inline T & tvec2<T, P>::operator[](length_t i)
{
assert(i >= 0 && i < this->length());
return (&x)[i];
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T const & tvec2<T, P>::operator[](length_t i) const
inline T const & tvec2<T, P>::operator[](length_t i) const
{
assert(i >= 0 && i < this->length());
return (&x)[i];
@ -56,20 +56,20 @@ namespace detail
// Implicit basic constructors
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2() :
inline tvec2<T, P>::tvec2() :
x(0),
y(0)
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2(tvec2<T, P> const & v) :
inline tvec2<T, P>::tvec2(tvec2<T, P> const & v) :
x(v.x),
y(v.y)
{}
template <typename T, precision P>
template <precision Q>
GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2(tvec2<T, Q> const & v) :
inline tvec2<T, P>::tvec2(tvec2<T, Q> const & v) :
x(v.x),
y(v.y)
{}
@ -78,17 +78,17 @@ namespace detail
// Explicit basic constructors
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2(ctor)
inline tvec2<T, P>::tvec2(ctor)
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2(T const & s) :
inline tvec2<T, P>::tvec2(T const & s) :
x(s),
y(s)
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2
inline tvec2<T, P>::tvec2
(
T const & s1,
T const & s2
@ -102,7 +102,7 @@ namespace detail
template <typename T, precision P>
template <typename U, typename V>
GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2
inline tvec2<T, P>::tvec2
(
U const & a,
V const & b
@ -116,7 +116,7 @@ namespace detail
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2
inline tvec2<T, P>::tvec2
(
tvec2<U, Q> const & v
) :
@ -126,7 +126,7 @@ namespace detail
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2
inline tvec2<T, P>::tvec2
(
tvec3<U, Q> const & v
) :
@ -136,7 +136,7 @@ namespace detail
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2
inline tvec2<T, P>::tvec2
(
tvec4<U, Q> const & v
) :
@ -148,7 +148,7 @@ namespace detail
// Unary arithmetic operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator=
inline tvec2<T, P> & tvec2<T, P>::operator=
(
tvec2<T, P> const & v
)
@ -160,7 +160,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator=
inline tvec2<T, P> & tvec2<T, P>::operator=
(
tvec2<U, P> const & v
)
@ -172,7 +172,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator+=
inline tvec2<T, P> & tvec2<T, P>::operator+=
(
U s
)
@ -184,7 +184,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator+=
inline tvec2<T, P> & tvec2<T, P>::operator+=
(
tvec2<U, P> const & v
)
@ -196,7 +196,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator-=
inline tvec2<T, P> & tvec2<T, P>::operator-=
(
U s
)
@ -208,7 +208,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator-=
inline tvec2<T, P> & tvec2<T, P>::operator-=
(
tvec2<U, P> const & v
)
@ -220,7 +220,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator*=
inline tvec2<T, P> & tvec2<T, P>::operator*=
(
U s
)
@ -232,7 +232,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator*=
inline tvec2<T, P> & tvec2<T, P>::operator*=
(
tvec2<U, P> const & v
)
@ -244,7 +244,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator/=
inline tvec2<T, P> & tvec2<T, P>::operator/=
(
U s
)
@ -256,7 +256,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator/=
inline tvec2<T, P> & tvec2<T, P>::operator/=
(
tvec2<U, P> const & v
)
@ -270,7 +270,7 @@ namespace detail
// Increment and decrement operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator++()
inline tvec2<T, P> & tvec2<T, P>::operator++()
{
++this->x;
++this->y;
@ -278,7 +278,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator--()
inline tvec2<T, P> & tvec2<T, P>::operator--()
{
--this->x;
--this->y;
@ -286,7 +286,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> tvec2<T, P>::operator++(int)
inline tvec2<T, P> tvec2<T, P>::operator++(int)
{
tvec2<T, P> Result(*this);
++*this;
@ -294,7 +294,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> tvec2<T, P>::operator--(int)
inline tvec2<T, P> tvec2<T, P>::operator--(int)
{
tvec2<T, P> Result(*this);
--*this;
@ -305,7 +305,7 @@ namespace detail
// Boolean operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator==
inline bool operator==
(
tvec2<T, P> const & v1,
tvec2<T, P> const & v2
@ -315,7 +315,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator!=
inline bool operator!=
(
tvec2<T, P> const & v1,
tvec2<T, P> const & v2
@ -329,7 +329,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator%= (U s)
inline tvec2<T, P> & tvec2<T, P>::operator%= (U s)
{
this->x %= static_cast<T>(s);
this->y %= static_cast<T>(s);
@ -338,7 +338,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator%= (tvec2<U, P> const & v)
inline tvec2<T, P> & tvec2<T, P>::operator%= (tvec2<U, P> const & v)
{
this->x %= static_cast<T>(v.x);
this->y %= static_cast<T>(v.y);
@ -347,7 +347,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator&= (U s)
inline tvec2<T, P> & tvec2<T, P>::operator&= (U s)
{
this->x &= static_cast<T>(s);
this->y &= static_cast<T>(s);
@ -356,7 +356,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator&= (tvec2<U, P> const & v)
inline tvec2<T, P> & tvec2<T, P>::operator&= (tvec2<U, P> const & v)
{
this->x &= static_cast<T>(v.x);
this->y &= static_cast<T>(v.y);
@ -365,7 +365,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator|= (U s)
inline tvec2<T, P> & tvec2<T, P>::operator|= (U s)
{
this->x |= static_cast<T>(s);
this->y |= static_cast<T>(s);
@ -374,7 +374,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator|= (tvec2<U, P> const & v)
inline tvec2<T, P> & tvec2<T, P>::operator|= (tvec2<U, P> const & v)
{
this->x |= static_cast<T>(v.x);
this->y |= static_cast<T>(v.y);
@ -383,7 +383,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator^= (U s)
inline tvec2<T, P> & tvec2<T, P>::operator^= (U s)
{
this->x ^= static_cast<T>(s);
this->y ^= static_cast<T>(s);
@ -392,7 +392,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator^= (tvec2<U, P> const & v)
inline tvec2<T, P> & tvec2<T, P>::operator^= (tvec2<U, P> const & v)
{
this->x ^= static_cast<T>(v.x);
this->y ^= static_cast<T>(v.y);
@ -401,7 +401,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator<<= (U s)
inline tvec2<T, P> & tvec2<T, P>::operator<<= (U s)
{
this->x <<= static_cast<T>(s);
this->y <<= static_cast<T>(s);
@ -410,7 +410,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator<<= (tvec2<U, P> const & v)
inline tvec2<T, P> & tvec2<T, P>::operator<<= (tvec2<U, P> const & v)
{
this->x <<= static_cast<T>(v.x);
this->y <<= static_cast<T>(v.y);
@ -419,7 +419,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator>>= (U s)
inline tvec2<T, P> & tvec2<T, P>::operator>>= (U s)
{
this->x >>= static_cast<T>(s);
this->y >>= static_cast<T>(s);
@ -428,7 +428,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec2<T, P> & tvec2<T, P>::operator>>= (tvec2<U, P> const & v)
inline tvec2<T, P> & tvec2<T, P>::operator>>= (tvec2<U, P> const & v)
{
this->x >>= static_cast<T>(v.x);
this->y >>= static_cast<T>(v.y);
@ -439,7 +439,7 @@ namespace detail
// Binary arithmetic operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator+
inline tvec2<T, P> operator+
(
tvec2<T, P> const & v,
T const & s
@ -451,7 +451,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator+
inline tvec2<T, P> operator+
(
T const & s,
tvec2<T, P> const & v
@ -463,7 +463,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator+
inline tvec2<T, P> operator+
(
tvec2<T, P> const & v1,
tvec2<T, P> const & v2
@ -476,7 +476,7 @@ namespace detail
//operator-
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator-
inline tvec2<T, P> operator-
(
tvec2<T, P> const & v,
T const & s
@ -488,7 +488,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator-
inline tvec2<T, P> operator-
(
T const & s,
tvec2<T, P> const & v
@ -500,7 +500,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator-
inline tvec2<T, P> operator-
(
tvec2<T, P> const & v1,
tvec2<T, P> const & v2
@ -513,7 +513,7 @@ namespace detail
//operator*
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator*
inline tvec2<T, P> operator*
(
tvec2<T, P> const & v,
T const & s
@ -525,7 +525,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator*
inline tvec2<T, P> operator*
(
T const & s,
tvec2<T, P> const & v
@ -537,7 +537,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator*
inline tvec2<T, P> operator*
(
tvec2<T, P> const & v1,
tvec2<T, P> const & v2
@ -550,7 +550,7 @@ namespace detail
//operator/
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator/
inline tvec2<T, P> operator/
(
tvec2<T, P> const & v,
T const & s
@ -562,7 +562,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator/
inline tvec2<T, P> operator/
(
T const & s,
tvec2<T, P> const & v
@ -574,7 +574,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator/
inline tvec2<T, P> operator/
(
tvec2<T, P> const & v1,
tvec2<T, P> const & v2
@ -587,7 +587,7 @@ namespace detail
// Unary constant operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator-
inline tvec2<T, P> operator-
(
tvec2<T, P> const & v
)
@ -601,7 +601,7 @@ namespace detail
// Binary bit operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator%
inline tvec2<T, P> operator%
(
tvec2<T, P> const & v,
T const & s
@ -613,7 +613,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator%
inline tvec2<T, P> operator%
(
T const & s,
tvec2<T, P> const & v
@ -625,7 +625,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator%
inline tvec2<T, P> operator%
(
tvec2<T, P> const & v1,
tvec2<T, P> const & v2
@ -637,7 +637,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator&
inline tvec2<T, P> operator&
(
tvec2<T, P> const & v,
T const & s
@ -649,7 +649,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator&
inline tvec2<T, P> operator&
(
T const & s,
tvec2<T, P> const & v
@ -661,7 +661,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator&
inline tvec2<T, P> operator&
(
tvec2<T, P> const & v1,
tvec2<T, P> const & v2
@ -673,7 +673,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator|
inline tvec2<T, P> operator|
(
tvec2<T, P> const & v,
T const & s
@ -685,7 +685,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator|
inline tvec2<T, P> operator|
(
T const & s,
tvec2<T, P> const & v
@ -697,7 +697,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator|
inline tvec2<T, P> operator|
(
tvec2<T, P> const & v1,
tvec2<T, P> const & v2
@ -709,7 +709,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator^
inline tvec2<T, P> operator^
(
tvec2<T, P> const & v,
T const & s
@ -721,7 +721,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator^
inline tvec2<T, P> operator^
(
T const & s,
tvec2<T, P> const & v
@ -733,7 +733,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator^
inline tvec2<T, P> operator^
(
tvec2<T, P> const & v1,
tvec2<T, P> const & v2
@ -745,7 +745,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator<<
inline tvec2<T, P> operator<<
(
tvec2<T, P> const & v,
T const & s
@ -757,7 +757,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator<<
inline tvec2<T, P> operator<<
(
T const & s,
tvec2<T, P> const & v
@ -769,7 +769,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator<<
inline tvec2<T, P> operator<<
(
tvec2<T, P> const & v1,
tvec2<T, P> const & v2
@ -781,7 +781,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator>>
inline tvec2<T, P> operator>>
(
tvec2<T, P> const & v,
T const & s
@ -793,7 +793,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator>>
inline tvec2<T, P> operator>>
(
T const & s,
tvec2<T, P> const & v
@ -805,7 +805,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator>>
inline tvec2<T, P> operator>>
(
tvec2<T, P> const & v1,
tvec2<T, P> const & v2
@ -817,7 +817,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P> operator~
inline tvec2<T, P> operator~
(
tvec2<T, P> const & v
)

View File

@ -30,7 +30,7 @@ namespace glm{
namespace detail
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER length_t tvec3<T, P>::length() const
inline length_t tvec3<T, P>::length() const
{
return 3;
}
@ -39,14 +39,14 @@ namespace detail
// Accesses
template <typename T, precision P>
GLM_FUNC_QUALIFIER T & tvec3<T, P>::operator[](length_t i)
inline T & tvec3<T, P>::operator[](length_t i)
{
assert(i >= 0 && i < this->length());
return (&x)[i];
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T const & tvec3<T, P>::operator[](length_t i) const
inline T const & tvec3<T, P>::operator[](length_t i) const
{
assert(i >= 0 && i < this->length());
return (&x)[i];
@ -56,14 +56,14 @@ namespace detail
// Implicit basic constructors
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3() :
inline tvec3<T, P>::tvec3() :
x(0),
y(0),
z(0)
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3(tvec3<T, P> const & v) :
inline tvec3<T, P>::tvec3(tvec3<T, P> const & v) :
x(v.x),
y(v.y),
z(v.z)
@ -71,7 +71,7 @@ namespace detail
template <typename T, precision P>
template <precision Q>
GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3(tvec3<T, Q> const & v) :
inline tvec3<T, P>::tvec3(tvec3<T, Q> const & v) :
x(v.x),
y(v.y),
z(v.z)
@ -81,18 +81,18 @@ namespace detail
// Explicit basic constructors
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3(ctor)
inline tvec3<T, P>::tvec3(ctor)
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3(T const & s) :
inline tvec3<T, P>::tvec3(T const & s) :
x(s),
y(s),
z(s)
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3
inline tvec3<T, P>::tvec3
(
T const & s0,
T const & s1,
@ -108,7 +108,7 @@ namespace detail
template <typename T, precision P>
template <typename A, typename B, typename C>
GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3
inline tvec3<T, P>::tvec3
(
A const & x,
B const & y,
@ -124,7 +124,7 @@ namespace detail
template <typename T, precision P>
template <typename A, typename B, precision Q>
GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3
inline tvec3<T, P>::tvec3
(
tvec2<A, Q> const & v,
B const & s
@ -136,7 +136,7 @@ namespace detail
template <typename T, precision P>
template <typename A, typename B, precision Q>
GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3
inline tvec3<T, P>::tvec3
(
A const & s,
tvec2<B, Q> const & v
@ -148,7 +148,7 @@ namespace detail
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3
inline tvec3<T, P>::tvec3
(
tvec3<U, Q> const & v
) :
@ -159,7 +159,7 @@ namespace detail
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3
inline tvec3<T, P>::tvec3
(
tvec4<U, Q> const & v
) :
@ -172,7 +172,7 @@ namespace detail
// Unary arithmetic operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P>& tvec3<T, P>::operator= (tvec3<T, P> const & v)
inline tvec3<T, P>& tvec3<T, P>::operator= (tvec3<T, P> const & v)
{
this->x = v.x;
this->y = v.y;
@ -182,7 +182,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P>& tvec3<T, P>::operator= (tvec3<U, P> const & v)
inline tvec3<T, P>& tvec3<T, P>::operator= (tvec3<U, P> const & v)
{
this->x = static_cast<T>(v.x);
this->y = static_cast<T>(v.y);
@ -192,7 +192,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator+= (U s)
inline tvec3<T, P> & tvec3<T, P>::operator+= (U s)
{
this->x += static_cast<T>(s);
this->y += static_cast<T>(s);
@ -202,7 +202,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator+= (tvec3<U, P> const & v)
inline tvec3<T, P> & tvec3<T, P>::operator+= (tvec3<U, P> const & v)
{
this->x += static_cast<T>(v.x);
this->y += static_cast<T>(v.y);
@ -212,7 +212,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator-= (U s)
inline tvec3<T, P> & tvec3<T, P>::operator-= (U s)
{
this->x -= static_cast<T>(s);
this->y -= static_cast<T>(s);
@ -222,7 +222,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator-= (tvec3<U, P> const & v)
inline tvec3<T, P> & tvec3<T, P>::operator-= (tvec3<U, P> const & v)
{
this->x -= static_cast<T>(v.x);
this->y -= static_cast<T>(v.y);
@ -232,7 +232,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator*= (U s)
inline tvec3<T, P> & tvec3<T, P>::operator*= (U s)
{
this->x *= static_cast<T>(s);
this->y *= static_cast<T>(s);
@ -242,7 +242,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator*= (tvec3<U, P> const & v)
inline tvec3<T, P> & tvec3<T, P>::operator*= (tvec3<U, P> const & v)
{
this->x *= static_cast<T>(v.x);
this->y *= static_cast<T>(v.y);
@ -252,7 +252,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator/= (U s)
inline tvec3<T, P> & tvec3<T, P>::operator/= (U s)
{
this->x /= static_cast<T>(s);
this->y /= static_cast<T>(s);
@ -262,7 +262,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator/= (tvec3<U, P> const & v)
inline tvec3<T, P> & tvec3<T, P>::operator/= (tvec3<U, P> const & v)
{
this->x /= static_cast<T>(v.x);
this->y /= static_cast<T>(v.y);
@ -274,7 +274,7 @@ namespace detail
// Increment and decrement operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator++()
inline tvec3<T, P> & tvec3<T, P>::operator++()
{
++this->x;
++this->y;
@ -283,7 +283,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator--()
inline tvec3<T, P> & tvec3<T, P>::operator--()
{
--this->x;
--this->y;
@ -292,7 +292,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> tvec3<T, P>::operator++(int)
inline tvec3<T, P> tvec3<T, P>::operator++(int)
{
tvec3<T, P> Result(*this);
++*this;
@ -300,7 +300,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> tvec3<T, P>::operator--(int)
inline tvec3<T, P> tvec3<T, P>::operator--(int)
{
tvec3<T, P> Result(*this);
--*this;
@ -311,7 +311,7 @@ namespace detail
// Boolean operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator==
inline bool operator==
(
tvec3<T, P> const & v1,
tvec3<T, P> const & v2
@ -321,7 +321,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator!=
inline bool operator!=
(
tvec3<T, P> const & v1,
tvec3<T, P> const & v2
@ -335,7 +335,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator%= (U s)
inline tvec3<T, P> & tvec3<T, P>::operator%= (U s)
{
this->x %= s;
this->y %= s;
@ -345,7 +345,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator%= (tvec3<U, P> const & v)
inline tvec3<T, P> & tvec3<T, P>::operator%= (tvec3<U, P> const & v)
{
this->x %= v.x;
this->y %= v.y;
@ -355,7 +355,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator&= (U s)
inline tvec3<T, P> & tvec3<T, P>::operator&= (U s)
{
this->x &= s;
this->y &= s;
@ -365,7 +365,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator&= (tvec3<U, P> const & v)
inline tvec3<T, P> & tvec3<T, P>::operator&= (tvec3<U, P> const & v)
{
this->x &= v.x;
this->y &= v.y;
@ -375,7 +375,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator|= (U s)
inline tvec3<T, P> & tvec3<T, P>::operator|= (U s)
{
this->x |= s;
this->y |= s;
@ -385,7 +385,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator|= (tvec3<U, P> const & v)
inline tvec3<T, P> & tvec3<T, P>::operator|= (tvec3<U, P> const & v)
{
this->x |= v.x;
this->y |= v.y;
@ -395,7 +395,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator^= (U s)
inline tvec3<T, P> & tvec3<T, P>::operator^= (U s)
{
this->x ^= s;
this->y ^= s;
@ -405,7 +405,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator^= (tvec3<U, P> const & v)
inline tvec3<T, P> & tvec3<T, P>::operator^= (tvec3<U, P> const & v)
{
this->x ^= v.x;
this->y ^= v.y;
@ -415,7 +415,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator<<= (U s)
inline tvec3<T, P> & tvec3<T, P>::operator<<= (U s)
{
this->x <<= s;
this->y <<= s;
@ -425,7 +425,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator<<= (tvec3<U, P> const & v)
inline tvec3<T, P> & tvec3<T, P>::operator<<= (tvec3<U, P> const & v)
{
this->x <<= static_cast<T>(v.x);
this->y <<= static_cast<T>(v.y);
@ -435,7 +435,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator>>= (U s)
inline tvec3<T, P> & tvec3<T, P>::operator>>= (U s)
{
this->x >>= static_cast<T>(s);
this->y >>= static_cast<T>(s);
@ -445,7 +445,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec3<T, P> & tvec3<T, P>::operator>>= (tvec3<U, P> const & v)
inline tvec3<T, P> & tvec3<T, P>::operator>>= (tvec3<U, P> const & v)
{
this->x >>= static_cast<T>(v.x);
this->y >>= static_cast<T>(v.y);
@ -457,7 +457,7 @@ namespace detail
// Binary arithmetic operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator+
inline tvec3<T, P> operator+
(
tvec3<T, P> const & v,
T const & s
@ -470,7 +470,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator+
inline tvec3<T, P> operator+
(
T const & s,
tvec3<T, P> const & v
@ -483,7 +483,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator+
inline tvec3<T, P> operator+
(
tvec3<T, P> const & v1,
tvec3<T, P> const & v2
@ -497,7 +497,7 @@ namespace detail
//operator-
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator-
inline tvec3<T, P> operator-
(
tvec3<T, P> const & v,
T const & s
@ -510,7 +510,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator-
inline tvec3<T, P> operator-
(
T const & s,
tvec3<T, P> const & v
@ -523,7 +523,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator-
inline tvec3<T, P> operator-
(
tvec3<T, P> const & v1,
tvec3<T, P> const & v2
@ -537,7 +537,7 @@ namespace detail
//operator*
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator*
inline tvec3<T, P> operator*
(
tvec3<T, P> const & v,
T const & s
@ -550,7 +550,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator*
inline tvec3<T, P> operator*
(
T const & s,
tvec3<T, P> const & v
@ -563,7 +563,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator*
inline tvec3<T, P> operator*
(
tvec3<T, P> const & v1,
tvec3<T, P> const & v2
@ -577,7 +577,7 @@ namespace detail
//operator/
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator/
inline tvec3<T, P> operator/
(
tvec3<T, P> const & v,
T const & s
@ -590,7 +590,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator/
inline tvec3<T, P> operator/
(
T const & s,
tvec3<T, P> const & v
@ -603,7 +603,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator/
inline tvec3<T, P> operator/
(
tvec3<T, P> const & v1,
tvec3<T, P> const & v2
@ -617,7 +617,7 @@ namespace detail
// Unary constant operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator-
inline tvec3<T, P> operator-
(
tvec3<T, P> const & v
)
@ -632,7 +632,7 @@ namespace detail
// Binary bit operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator%
inline tvec3<T, P> operator%
(
tvec3<T, P> const & v,
T const & s
@ -645,7 +645,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator%
inline tvec3<T, P> operator%
(
T const & s,
tvec3<T, P> const & v
@ -658,7 +658,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator%
inline tvec3<T, P> operator%
(
tvec3<T, P> const & v1,
tvec3<T, P> const & v2
@ -671,7 +671,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator&
inline tvec3<T, P> operator&
(
tvec3<T, P> const & v,
T const & s
@ -684,7 +684,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator&
inline tvec3<T, P> operator&
(
T const & s,
tvec3<T, P> const & v
@ -697,7 +697,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator&
inline tvec3<T, P> operator&
(
tvec3<T, P> const & v1,
tvec3<T, P> const & v2
@ -710,7 +710,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator|
inline tvec3<T, P> operator|
(
tvec3<T, P> const & v,
T const & s
@ -723,7 +723,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator|
inline tvec3<T, P> operator|
(
T const & s,
tvec3<T, P> const & v
@ -736,7 +736,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator|
inline tvec3<T, P> operator|
(
tvec3<T, P> const & v1,
tvec3<T, P> const & v2
@ -749,7 +749,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator^
inline tvec3<T, P> operator^
(
tvec3<T, P> const & v,
T const & s
@ -762,7 +762,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator^
inline tvec3<T, P> operator^
(
T const & s,
tvec3<T, P> const & v
@ -775,7 +775,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator^
inline tvec3<T, P> operator^
(
tvec3<T, P> const & v1,
tvec3<T, P> const & v2
@ -788,7 +788,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator<<
inline tvec3<T, P> operator<<
(
tvec3<T, P> const & v,
T const & s
@ -801,7 +801,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator<<
inline tvec3<T, P> operator<<
(
T const & s,
tvec3<T, P> const & v
@ -814,7 +814,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator<<
inline tvec3<T, P> operator<<
(
tvec3<T, P> const & v1,
tvec3<T, P> const & v2
@ -827,7 +827,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator>>
inline tvec3<T, P> operator>>
(
tvec3<T, P> const & v,
T const & s
@ -840,7 +840,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator>>
inline tvec3<T, P> operator>>
(
T const & s,
tvec3<T, P> const & v
@ -853,7 +853,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator>>
inline tvec3<T, P> operator>>
(
tvec3<T, P> const & v1,
tvec3<T, P> const & v2
@ -866,7 +866,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P> operator~
inline tvec3<T, P> operator~
(
tvec3<T, P> const & v
)

View File

@ -30,7 +30,7 @@ namespace glm{
namespace detail
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER length_t tvec4<T, P>::length() const
inline length_t tvec4<T, P>::length() const
{
return 4;
}
@ -39,14 +39,14 @@ namespace detail
// Accesses
template <typename T, precision P>
GLM_FUNC_QUALIFIER T & tvec4<T, P>::operator[](length_t i)
inline T & tvec4<T, P>::operator[](length_t i)
{
assert(i >= 0 && i < this->length());
return (&x)[i];
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T const & tvec4<T, P>::operator[](length_t i) const
inline T const & tvec4<T, P>::operator[](length_t i) const
{
assert(i >= 0 && i < this->length());
return (&x)[i];
@ -56,7 +56,7 @@ namespace detail
// Implicit basic constructors
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4() :
inline tvec4<T, P>::tvec4() :
x(0),
y(0),
z(0),
@ -64,7 +64,7 @@ namespace detail
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(tvec4<T, P> const & v) :
inline tvec4<T, P>::tvec4(tvec4<T, P> const & v) :
x(v.x),
y(v.y),
z(v.z),
@ -73,7 +73,7 @@ namespace detail
template <typename T, precision P>
template <precision Q>
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(tvec4<T, Q> const & v) :
inline tvec4<T, P>::tvec4(tvec4<T, Q> const & v) :
x(v.x),
y(v.y),
z(v.z),
@ -84,11 +84,11 @@ namespace detail
// Explicit basic constructors
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(ctor)
inline tvec4<T, P>::tvec4(ctor)
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(T const & s) :
inline tvec4<T, P>::tvec4(T const & s) :
x(s),
y(s),
z(s),
@ -96,7 +96,7 @@ namespace detail
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4
inline tvec4<T, P>::tvec4
(
T const & s1,
T const & s2,
@ -114,7 +114,7 @@ namespace detail
template <typename T, precision P>
template <typename A, typename B, typename C, typename D>
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4
inline tvec4<T, P>::tvec4
(
A const & x,
B const & y,
@ -129,7 +129,7 @@ namespace detail
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4
inline tvec4<T, P>::tvec4
(
tvec4<U, Q> const & v
) :
@ -144,7 +144,7 @@ namespace detail
template <typename T, precision P>
template <typename A, typename B, typename C, precision Q>
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4
inline tvec4<T, P>::tvec4
(
tvec2<A, Q> const & v,
B const & s1,
@ -158,7 +158,7 @@ namespace detail
template <typename T, precision P>
template <typename A, typename B, typename C, precision Q>
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4
inline tvec4<T, P>::tvec4
(
A const & s1,
tvec2<B, Q> const & v,
@ -172,7 +172,7 @@ namespace detail
template <typename T, precision P>
template <typename A, typename B, typename C, precision Q>
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4
inline tvec4<T, P>::tvec4
(
A const & s1,
B const & s2,
@ -186,7 +186,7 @@ namespace detail
template <typename T, precision P>
template <typename A, typename B, precision Q>
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4
inline tvec4<T, P>::tvec4
(
tvec3<A, Q> const & v,
B const & s
@ -199,7 +199,7 @@ namespace detail
template <typename T, precision P>
template <typename A, typename B, precision Q>
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4
inline tvec4<T, P>::tvec4
(
A const & s,
tvec3<B, Q> const & v
@ -212,7 +212,7 @@ namespace detail
template <typename T, precision P>
template <typename A, typename B, precision Q>
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4
inline tvec4<T, P>::tvec4
(
tvec2<A, Q> const & v1,
tvec2<B, Q> const & v2
@ -227,7 +227,7 @@ namespace detail
// Unary arithmetic operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator= (tvec4<T, P> const & v)
inline tvec4<T, P> & tvec4<T, P>::operator= (tvec4<T, P> const & v)
{
this->x = v.x;
this->y = v.y;
@ -238,7 +238,7 @@ namespace detail
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator= (tvec4<U, Q> const & v)
inline tvec4<T, P> & tvec4<T, P>::operator= (tvec4<U, Q> const & v)
{
this->x = static_cast<T>(v.x);
this->y = static_cast<T>(v.y);
@ -249,7 +249,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator+= (U s)
inline tvec4<T, P> & tvec4<T, P>::operator+= (U s)
{
this->x += static_cast<T>(s);
this->y += static_cast<T>(s);
@ -260,7 +260,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator+= (tvec4<U, P> const & v)
inline tvec4<T, P> & tvec4<T, P>::operator+= (tvec4<U, P> const & v)
{
this->x += static_cast<T>(v.x);
this->y += static_cast<T>(v.y);
@ -271,7 +271,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator-= (U s)
inline tvec4<T, P> & tvec4<T, P>::operator-= (U s)
{
this->x -= static_cast<T>(s);
this->y -= static_cast<T>(s);
@ -282,7 +282,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator-= (tvec4<U, P> const & v)
inline tvec4<T, P> & tvec4<T, P>::operator-= (tvec4<U, P> const & v)
{
this->x -= static_cast<T>(v.x);
this->y -= static_cast<T>(v.y);
@ -293,7 +293,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator*= (U s)
inline tvec4<T, P> & tvec4<T, P>::operator*= (U s)
{
this->x *= static_cast<T>(s);
this->y *= static_cast<T>(s);
@ -304,7 +304,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator*= (tvec4<U, P> const & v)
inline tvec4<T, P> & tvec4<T, P>::operator*= (tvec4<U, P> const & v)
{
this->x *= static_cast<T>(v.x);
this->y *= static_cast<T>(v.y);
@ -315,7 +315,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator/= (U s)
inline tvec4<T, P> & tvec4<T, P>::operator/= (U s)
{
this->x /= static_cast<T>(s);
this->y /= static_cast<T>(s);
@ -326,7 +326,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator/= (tvec4<U, P> const & v)
inline tvec4<T, P> & tvec4<T, P>::operator/= (tvec4<U, P> const & v)
{
this->x /= static_cast<T>(v.x);
this->y /= static_cast<T>(v.y);
@ -339,7 +339,7 @@ namespace detail
// Increment and decrement operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator++()
inline tvec4<T, P> & tvec4<T, P>::operator++()
{
++this->x;
++this->y;
@ -349,7 +349,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator--()
inline tvec4<T, P> & tvec4<T, P>::operator--()
{
--this->x;
--this->y;
@ -359,7 +359,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> tvec4<T, P>::operator++(int)
inline tvec4<T, P> tvec4<T, P>::operator++(int)
{
tvec4<T, P> Result(*this);
++*this;
@ -367,7 +367,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> tvec4<T, P>::operator--(int)
inline tvec4<T, P> tvec4<T, P>::operator--(int)
{
tvec4<T, P> Result(*this);
--*this;
@ -379,7 +379,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator%= (U s)
inline tvec4<T, P> & tvec4<T, P>::operator%= (U s)
{
this->x %= static_cast<T>(s);
this->y %= static_cast<T>(s);
@ -390,7 +390,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator%= (tvec4<U, P> const & v)
inline tvec4<T, P> & tvec4<T, P>::operator%= (tvec4<U, P> const & v)
{
this->x %= static_cast<T>(v.x);
this->y %= static_cast<T>(v.y);
@ -401,7 +401,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator&= (U s)
inline tvec4<T, P> & tvec4<T, P>::operator&= (U s)
{
this->x &= static_cast<T>(s);
this->y &= static_cast<T>(s);
@ -412,7 +412,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator&= (tvec4<U, P> const & v)
inline tvec4<T, P> & tvec4<T, P>::operator&= (tvec4<U, P> const & v)
{
this->x &= static_cast<T>(v.x);
this->y &= static_cast<T>(v.y);
@ -423,7 +423,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator|= (U s)
inline tvec4<T, P> & tvec4<T, P>::operator|= (U s)
{
this->x |= static_cast<T>(s);
this->y |= static_cast<T>(s);
@ -434,7 +434,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator|= (tvec4<U, P> const & v)
inline tvec4<T, P> & tvec4<T, P>::operator|= (tvec4<U, P> const & v)
{
this->x |= static_cast<T>(v.x);
this->y |= static_cast<T>(v.y);
@ -445,7 +445,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator^= (U s)
inline tvec4<T, P> & tvec4<T, P>::operator^= (U s)
{
this->x ^= static_cast<T>(s);
this->y ^= static_cast<T>(s);
@ -456,7 +456,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator^= (tvec4<U, P> const & v)
inline tvec4<T, P> & tvec4<T, P>::operator^= (tvec4<U, P> const & v)
{
this->x ^= static_cast<T>(v.x);
this->y ^= static_cast<T>(v.y);
@ -467,7 +467,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator<<= (U s)
inline tvec4<T, P> & tvec4<T, P>::operator<<= (U s)
{
this->x <<= static_cast<T>(s);
this->y <<= static_cast<T>(s);
@ -478,7 +478,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator<<= (tvec4<U, P> const & v)
inline tvec4<T, P> & tvec4<T, P>::operator<<= (tvec4<U, P> const & v)
{
this->x <<= static_cast<T>(v.x);
this->y <<= static_cast<T>(v.y);
@ -489,7 +489,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator>>= (U s)
inline tvec4<T, P> & tvec4<T, P>::operator>>= (U s)
{
this->x >>= static_cast<T>(s);
this->y >>= static_cast<T>(s);
@ -500,7 +500,7 @@ namespace detail
template <typename T, precision P>
template <typename U>
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator>>= (tvec4<U, P> const & v)
inline tvec4<T, P> & tvec4<T, P>::operator>>= (tvec4<U, P> const & v)
{
this->x >>= static_cast<T>(v.x);
this->y >>= static_cast<T>(v.y);
@ -513,7 +513,7 @@ namespace detail
// Binary arithmetic operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator+
inline tvec4<T, P> operator+
(
tvec4<T, P> const & v,
T const & s
@ -527,7 +527,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator+
inline tvec4<T, P> operator+
(
T const & s,
tvec4<T, P> const & v
@ -541,7 +541,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator+
inline tvec4<T, P> operator+
(
tvec4<T, P> const & v1,
tvec4<T, P> const & v2
@ -556,7 +556,7 @@ namespace detail
//operator-
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator-
inline tvec4<T, P> operator-
(
tvec4<T, P> const & v,
T const & s
@ -570,7 +570,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator-
inline tvec4<T, P> operator-
(
T const & s,
tvec4<T, P> const & v
@ -584,7 +584,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator-
inline tvec4<T, P> operator-
(
tvec4<T, P> const & v1,
tvec4<T, P> const & v2
@ -599,7 +599,7 @@ namespace detail
//operator*
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator*
inline tvec4<T, P> operator*
(
tvec4<T, P> const & v,
T const & s
@ -613,7 +613,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator*
inline tvec4<T, P> operator*
(
T const & s,
tvec4<T, P> const & v
@ -627,7 +627,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator*
inline tvec4<T, P> operator*
(
tvec4<T, P> const & v1,
tvec4<T, P> const & v2
@ -642,7 +642,7 @@ namespace detail
//operator/
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator/
inline tvec4<T, P> operator/
(
tvec4<T, P> const & v,
T const & s
@ -656,7 +656,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator/
inline tvec4<T, P> operator/
(
T const & s,
tvec4<T, P> const & v
@ -670,7 +670,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator/
inline tvec4<T, P> operator/
(
tvec4<T, P> const & v1,
tvec4<T, P> const & v2
@ -685,7 +685,7 @@ namespace detail
// Unary constant operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator-
inline tvec4<T, P> operator-
(
tvec4<T, P> const & v
)
@ -701,7 +701,7 @@ namespace detail
// Boolean operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator==
inline bool operator==
(
tvec4<T, P> const & v1,
tvec4<T, P> const & v2
@ -711,7 +711,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator!=
inline bool operator!=
(
tvec4<T, P> const & v1,
tvec4<T, P> const & v2
@ -724,7 +724,7 @@ namespace detail
// Binary bit operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator%
inline tvec4<T, P> operator%
(
tvec4<T, P> const & v,
T const & s
@ -738,7 +738,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator%
inline tvec4<T, P> operator%
(
T const & s,
tvec4<T, P> const & v
@ -752,7 +752,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator%
inline tvec4<T, P> operator%
(
tvec4<T, P> const & v1,
tvec4<T, P> const & v2
@ -766,7 +766,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator&
inline tvec4<T, P> operator&
(
tvec4<T, P> const & v,
T const & s
@ -780,7 +780,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator&
inline tvec4<T, P> operator&
(
T const & s,
tvec4<T, P> const & v
@ -794,7 +794,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator&
inline tvec4<T, P> operator&
(
tvec4<T, P> const & v1,
tvec4<T, P> const & v2
@ -808,7 +808,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator|
inline tvec4<T, P> operator|
(
tvec4<T, P> const & v,
T const & s
@ -822,7 +822,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator|
inline tvec4<T, P> operator|
(
T const & s,
tvec4<T, P> const & v
@ -836,7 +836,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator|
inline tvec4<T, P> operator|
(
tvec4<T, P> const & v1,
tvec4<T, P> const & v2
@ -850,7 +850,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator^
inline tvec4<T, P> operator^
(
tvec4<T, P> const & v,
T const & s
@ -864,7 +864,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator^
inline tvec4<T, P> operator^
(
T const & s,
tvec4<T, P> const & v
@ -878,7 +878,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator^
inline tvec4<T, P> operator^
(
tvec4<T, P> const & v1,
tvec4<T, P> const & v2
@ -892,7 +892,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator<<
inline tvec4<T, P> operator<<
(
tvec4<T, P> const & v,
T const & s
@ -906,7 +906,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator<<
inline tvec4<T, P> operator<<
(
T const & s,
tvec4<T, P> const & v
@ -920,7 +920,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator<<
inline tvec4<T, P> operator<<
(
tvec4<T, P> const & v1,
tvec4<T, P> const & v2
@ -934,7 +934,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator>>
inline tvec4<T, P> operator>>
(
tvec4<T, P> const & v,
T const & s
@ -948,7 +948,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator>>
inline tvec4<T, P> operator>>
(
T const & s,
tvec4<T, P> const & v
@ -962,7 +962,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator>>
inline tvec4<T, P> operator>>
(
tvec4<T, P> const & v1,
tvec4<T, P> const & v2
@ -976,7 +976,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P> operator~
inline tvec4<T, P> operator~
(
tvec4<T, P> const & v
)

1
deps/glm/ext.hpp vendored
View File

@ -94,7 +94,6 @@
#include "./gtx/fast_trigonometry.hpp"
#include "./gtx/gradient_paint.hpp"
#include "./gtx/handed_coordinate_space.hpp"
#include "./gtx/inertia.hpp"
#include "./gtx/int_10_10_10_2.hpp"
#include "./gtx/integer.hpp"
#include "./gtx/intersect.hpp"

View File

@ -31,151 +31,151 @@
namespace glm
{
template <typename genType>
GLM_FUNC_QUALIFIER genType epsilon()
inline genType epsilon()
{
return std::numeric_limits<genType>::epsilon();
}
template <typename genType>
GLM_FUNC_QUALIFIER genType zero()
inline genType zero()
{
return genType(0);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType one()
inline genType one()
{
return genType(1);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType pi()
inline genType pi()
{
return genType(3.14159265358979323846264338327950288);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType root_pi()
inline genType root_pi()
{
return genType(1.772453850905516027);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType half_pi()
inline genType half_pi()
{
return genType(1.57079632679489661923132169163975144);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType quarter_pi()
inline genType quarter_pi()
{
return genType(0.785398163397448309615660845819875721);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType one_over_pi()
inline genType one_over_pi()
{
return genType(0.318309886183790671537767526745028724);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType two_over_pi()
inline genType two_over_pi()
{
return genType(0.636619772367581343075535053490057448);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType two_over_root_pi()
inline genType two_over_root_pi()
{
return genType(1.12837916709551257389615890312154517);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType one_over_root_two()
inline genType one_over_root_two()
{
return genType(0.707106781186547524400844362104849039);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType root_half_pi()
inline genType root_half_pi()
{
return genType(1.253314137315500251);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType root_two_pi()
inline genType root_two_pi()
{
return genType(2.506628274631000502);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType root_ln_four()
inline genType root_ln_four()
{
return genType(1.17741002251547469);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType e()
inline genType e()
{
return genType(2.71828182845904523536);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType euler()
inline genType euler()
{
return genType(0.577215664901532860606);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType root_two()
inline genType root_two()
{
return genType(1.41421356237309504880168872420969808);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType root_three()
inline genType root_three()
{
return genType(1.73205080756887729352744634150587236);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType root_five()
inline genType root_five()
{
return genType(2.23606797749978969640917366873127623);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType ln_two()
inline genType ln_two()
{
return genType(0.693147180559945309417232121458176568);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType ln_ten()
inline genType ln_ten()
{
return genType(2.30258509299404568401799145468436421);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType ln_ln_two()
inline genType ln_ln_two()
{
return genType(-0.3665129205816643);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType third()
inline genType third()
{
return genType(0.3333333333333333333333333333333333333333);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType two_thirds()
inline genType two_thirds()
{
return genType(0.666666666666666666666666666666666666667);
}
template <typename genType>
GLM_FUNC_QUALIFIER genType golden_ratio()
inline genType golden_ratio()
{
return genType(1.61803398874989484820458683436563811);
}

View File

@ -37,7 +37,7 @@
namespace glm
{
template <>
GLM_FUNC_QUALIFIER bool epsilonEqual
inline bool epsilonEqual
(
float const & x,
float const & y,
@ -48,7 +48,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER bool epsilonEqual
inline bool epsilonEqual
(
double const & x,
double const & y,
@ -59,7 +59,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER bool epsilonNotEqual
inline bool epsilonNotEqual
(
float const & x,
float const & y,
@ -70,7 +70,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER bool epsilonNotEqual
inline bool epsilonNotEqual
(
double const & x,
double const & y,
@ -81,7 +81,7 @@ namespace glm
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<bool, P> epsilonEqual
inline vecType<bool, P> epsilonEqual
(
vecType<T, P> const & x,
vecType<T, P> const & y,
@ -92,7 +92,7 @@ namespace glm
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<bool, P> epsilonEqual
inline vecType<bool, P> epsilonEqual
(
vecType<T, P> const & x,
vecType<T, P> const & y,
@ -103,7 +103,7 @@ namespace glm
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<bool, P> epsilonNotEqual
inline vecType<bool, P> epsilonNotEqual
(
vecType<T, P> const & x,
vecType<T, P> const & y,
@ -114,7 +114,7 @@ namespace glm
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<bool, P> epsilonNotEqual
inline vecType<bool, P> epsilonNotEqual
(
vecType<T, P> const & x,
vecType<T, P> const & y,
@ -125,7 +125,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<bool, P> epsilonEqual
inline detail::tvec4<bool, P> epsilonEqual
(
detail::tquat<T, P> const & x,
detail::tquat<T, P> const & y,
@ -137,7 +137,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<bool, P> epsilonNotEqual
inline detail::tvec4<bool, P> epsilonNotEqual
(
detail::tquat<T, P> const & x,
detail::tquat<T, P> const & y,

View File

@ -29,7 +29,7 @@
namespace glm
{
template <typename genType>
GLM_FUNC_QUALIFIER genType row
inline genType row
(
genType const & m,
length_t const & index,
@ -45,7 +45,7 @@ namespace glm
}
template <typename genType>
GLM_FUNC_QUALIFIER typename genType::row_type row
inline typename genType::row_type row
(
genType const & m,
length_t const & index
@ -60,7 +60,7 @@ namespace glm
}
template <typename genType>
GLM_FUNC_QUALIFIER genType column
inline genType column
(
genType const & m,
length_t const & index,
@ -75,7 +75,7 @@ namespace glm
}
template <typename genType>
GLM_FUNC_QUALIFIER typename genType::col_type column
inline typename genType::col_type column
(
genType const & m,
length_t const & index

View File

@ -33,7 +33,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> affineInverse
inline detail::tmat3x3<T, P> affineInverse
(
detail::tmat3x3<T, P> const & m
)
@ -47,7 +47,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> affineInverse
inline detail::tmat4x4<T, P> affineInverse
(
detail::tmat4x4<T, P> const & m
)
@ -61,7 +61,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat2x2<T, P> inverseTranspose
inline detail::tmat2x2<T, P> inverseTranspose
(
detail::tmat2x2<T, P> const & m
)
@ -78,7 +78,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> inverseTranspose
inline detail::tmat3x3<T, P> inverseTranspose
(
detail::tmat3x3<T, P> const & m
)
@ -104,7 +104,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> inverseTranspose
inline detail::tmat4x4<T, P> inverseTranspose
(
detail::tmat4x4<T, P> const & m
)

View File

@ -33,7 +33,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> translate
inline detail::tmat4x4<T, P> translate
(
detail::tmat4x4<T, P> const & m,
detail::tvec3<T, P> const & v
@ -45,7 +45,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> rotate
inline detail::tmat4x4<T, P> rotate
(
detail::tmat4x4<T, P> const & m,
T const & angle,
@ -86,7 +86,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> rotate_slow
inline detail::tmat4x4<T, P> rotate_slow
(
detail::tmat4x4<T, P> const & m,
T const & angle,
@ -125,7 +125,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> scale
inline detail::tmat4x4<T, P> scale
(
detail::tmat4x4<T, P> const & m,
detail::tvec3<T, P> const & v
@ -140,7 +140,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> scale_slow
inline detail::tmat4x4<T, P> scale_slow
(
detail::tmat4x4<T, P> const & m,
detail::tvec3<T, P> const & v
@ -154,7 +154,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, defaultp> ortho
inline detail::tmat4x4<T, defaultp> ortho
(
T const & left,
T const & right,
@ -175,7 +175,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, defaultp> ortho
inline detail::tmat4x4<T, defaultp> ortho
(
T const & left,
T const & right,
@ -193,7 +193,7 @@ namespace glm
}
template <typename valType>
GLM_FUNC_QUALIFIER detail::tmat4x4<valType, defaultp> frustum
inline detail::tmat4x4<valType, defaultp> frustum
(
valType const & left,
valType const & right,
@ -215,7 +215,7 @@ namespace glm
}
template <typename valType>
GLM_FUNC_QUALIFIER detail::tmat4x4<valType, defaultp> perspective
inline detail::tmat4x4<valType, defaultp> perspective
(
valType const & fovy,
valType const & aspect,
@ -245,7 +245,7 @@ namespace glm
}
template <typename valType>
GLM_FUNC_QUALIFIER detail::tmat4x4<valType, defaultp> perspectiveFov
inline detail::tmat4x4<valType, defaultp> perspectiveFov
(
valType const & fov,
valType const & width,
@ -277,7 +277,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, defaultp> infinitePerspective
inline detail::tmat4x4<T, defaultp> infinitePerspective
(
T fovy,
T aspect,
@ -305,7 +305,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, defaultp> tweakedInfinitePerspective
inline detail::tmat4x4<T, defaultp> tweakedInfinitePerspective
(
T fovy,
T aspect,
@ -333,7 +333,7 @@ namespace glm
}
template <typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> project
inline detail::tvec3<T, P> project
(
detail::tvec3<T, P> const & obj,
detail::tmat4x4<T, P> const & model,
@ -354,7 +354,7 @@ namespace glm
}
template <typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> unProject
inline detail::tvec3<T, P> unProject
(
detail::tvec3<T, P> const & win,
detail::tmat4x4<T, P> const & model,
@ -376,7 +376,7 @@ namespace glm
}
template <typename T, precision P, typename U>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> pickMatrix
inline detail::tmat4x4<T, P> pickMatrix
(
detail::tvec2<T, P> const & center,
detail::tvec2<T, P> const & delta,
@ -400,7 +400,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> lookAt
inline detail::tmat4x4<T, P> lookAt
(
detail::tvec3<T, P> const & eye,
detail::tvec3<T, P> const & center,

View File

@ -40,7 +40,7 @@ namespace glm{
namespace gtc
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> grad4(T const & j, detail::tvec4<T, P> const & ip)
inline detail::tvec4<T, P> grad4(T const & j, detail::tvec4<T, P> const & ip)
{
detail::tvec3<T, P> pXYZ = floor(fract(detail::tvec3<T, P>(j) * detail::tvec3<T, P>(ip)) * T(7)) * ip[2] - T(1);
T pW = static_cast<T>(1.5) - dot(abs(pXYZ), detail::tvec3<T, P>(1));
@ -52,7 +52,7 @@ namespace gtc
// Classic Perlin noise
template <typename T, precision P>
GLM_FUNC_QUALIFIER T perlin(detail::tvec2<T, P> const & Position)
inline T perlin(detail::tvec2<T, P> const & Position)
{
detail::tvec4<T, P> Pi = glm::floor(detail::tvec4<T, P>(Position.x, Position.y, Position.x, Position.y)) + detail::tvec4<T, P>(0.0, 0.0, 1.0, 1.0);
detail::tvec4<T, P> Pf = glm::fract(detail::tvec4<T, P>(Position.x, Position.y, Position.x, Position.y)) - detail::tvec4<T, P>(0.0, 0.0, 1.0, 1.0);
@ -93,7 +93,7 @@ namespace gtc
// Classic Perlin noise
template <typename T, precision P>
GLM_FUNC_QUALIFIER T perlin(detail::tvec3<T, P> const & Position)
inline T perlin(detail::tvec3<T, P> const & Position)
{
detail::tvec3<T, P> Pi0 = floor(Position); // Integer part for indexing
detail::tvec3<T, P> Pi1 = Pi0 + T(1); // Integer part + 1
@ -164,7 +164,7 @@ namespace gtc
/*
// Classic Perlin noise
template <typename T, precision P>
GLM_FUNC_QUALIFIER T perlin(detail::tvec3<T, P> const & P)
inline T perlin(detail::tvec3<T, P> const & P)
{
detail::tvec3<T, P> Pi0 = floor(P); // Integer part for indexing
detail::tvec3<T, P> Pi1 = Pi0 + T(1); // Integer part + 1
@ -237,7 +237,7 @@ namespace gtc
*/
// Classic Perlin noise
template <typename T, precision P>
GLM_FUNC_QUALIFIER T perlin(detail::tvec4<T, P> const & Position)
inline T perlin(detail::tvec4<T, P> const & Position)
{
detail::tvec4<T, P> Pi0 = floor(Position); // Integer part for indexing
detail::tvec4<T, P> Pi1 = Pi0 + T(1); // Integer part + 1
@ -373,7 +373,7 @@ namespace gtc
// Classic Perlin noise, periodic variant
template <typename T, precision P>
GLM_FUNC_QUALIFIER T perlin(detail::tvec2<T, P> const & Position, detail::tvec2<T, P> const & rep)
inline T perlin(detail::tvec2<T, P> const & Position, detail::tvec2<T, P> const & rep)
{
detail::tvec4<T, P> Pi = floor(detail::tvec4<T, P>(Position.x, Position.y, Position.x, Position.y)) + detail::tvec4<T, P>(0.0, 0.0, 1.0, 1.0);
detail::tvec4<T, P> Pf = fract(detail::tvec4<T, P>(Position.x, Position.y, Position.x, Position.y)) - detail::tvec4<T, P>(0.0, 0.0, 1.0, 1.0);
@ -415,7 +415,7 @@ namespace gtc
// Classic Perlin noise, periodic variant
template <typename T, precision P>
GLM_FUNC_QUALIFIER T perlin(detail::tvec3<T, P> const & Position, detail::tvec3<T, P> const & rep)
inline T perlin(detail::tvec3<T, P> const & Position, detail::tvec3<T, P> const & rep)
{
detail::tvec3<T, P> Pi0 = mod(floor(Position), rep); // Integer part, modulo period
detail::tvec3<T, P> Pi1 = mod(Pi0 + detail::tvec3<T, P>(T(1)), rep); // Integer part + 1, mod period
@ -486,7 +486,7 @@ namespace gtc
// Classic Perlin noise, periodic version
template <typename T, precision P>
GLM_FUNC_QUALIFIER T perlin(detail::tvec4<T, P> const & Position, detail::tvec4<T, P> const & rep)
inline T perlin(detail::tvec4<T, P> const & Position, detail::tvec4<T, P> const & rep)
{
detail::tvec4<T, P> Pi0 = mod(floor(Position), rep); // Integer part modulo rep
detail::tvec4<T, P> Pi1 = mod(Pi0 + T(1), rep); // Integer part + 1 mod rep
@ -619,7 +619,7 @@ namespace gtc
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T simplex(glm::detail::tvec2<T, P> const & v)
inline T simplex(glm::detail::tvec2<T, P> const & v)
{
detail::tvec4<T, P> const C = detail::tvec4<T, P>(
T( 0.211324865405187), // (3.0 - sqrt(3.0)) / 6.0
@ -676,7 +676,7 @@ namespace gtc
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T simplex(detail::tvec3<T, P> const & v)
inline T simplex(detail::tvec3<T, P> const & v)
{
detail::tvec2<T, P> const C(1.0 / 6.0, 1.0 / 3.0);
detail::tvec4<T, P> const D(0.0, 0.5, 1.0, 2.0);
@ -751,7 +751,7 @@ namespace gtc
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T simplex(detail::tvec4<T, P> const & v)
inline T simplex(detail::tvec4<T, P> const & v)
{
detail::tvec4<T, P> const C(
0.138196601125011, // (5 - sqrt(5))/20 G4

View File

@ -35,7 +35,7 @@
namespace glm{
namespace detail
{
GLM_FUNC_QUALIFIER glm::uint16 float2half(glm::uint32 const & f)
inline glm::uint16 float2half(glm::uint32 const & f)
{
// 10 bits => EE EEEFFFFF
// 11 bits => EEE EEFFFFFF
@ -53,7 +53,7 @@ namespace detail
((f >> 13) & 0x03ff); // Mantissa
}
GLM_FUNC_QUALIFIER glm::uint32 float2packed11(glm::uint32 const & f)
inline glm::uint32 float2packed11(glm::uint32 const & f)
{
// 10 bits => EE EEEFFFFF
// 11 bits => EEE EEFFFFFF
@ -71,7 +71,7 @@ namespace detail
((f >> 17) & 0x003f); // Mantissa
}
GLM_FUNC_QUALIFIER glm::uint32 packed11ToFloat(glm::uint32 const & p)
inline glm::uint32 packed11ToFloat(glm::uint32 const & p)
{
// 10 bits => EE EEEFFFFF
// 11 bits => EEE EEFFFFFF
@ -89,7 +89,7 @@ namespace detail
((p & 0x003f) << 17); // Mantissa
}
GLM_FUNC_QUALIFIER glm::uint32 float2packed10(glm::uint32 const & f)
inline glm::uint32 float2packed10(glm::uint32 const & f)
{
// 10 bits => EE EEEFFFFF
// 11 bits => EEE EEFFFFFF
@ -110,7 +110,7 @@ namespace detail
((f >> 18) & 0x001f); // Mantissa
}
GLM_FUNC_QUALIFIER glm::uint32 packed10ToFloat(glm::uint32 const & p)
inline glm::uint32 packed10ToFloat(glm::uint32 const & p)
{
// 10 bits => EE EEEFFFFF
// 11 bits => EEE EEFFFFFF
@ -131,12 +131,12 @@ namespace detail
((p & 0x001f) << 18); // Mantissa
}
GLM_FUNC_QUALIFIER glm::uint half2float(glm::uint const & h)
inline glm::uint half2float(glm::uint const & h)
{
return ((h & 0x8000) << 16) | ((( h & 0x7c00) + 0x1C000) << 13) | ((h & 0x03FF) << 13);
}
GLM_FUNC_QUALIFIER glm::uint floatTo11bit(float x)
inline glm::uint floatTo11bit(float x)
{
if(x == 0.0f)
return 0;
@ -150,7 +150,7 @@ namespace detail
return float2packed11(Topack);
}
GLM_FUNC_QUALIFIER float packed11bitToFloat(glm::uint x)
inline float packed11bitToFloat(glm::uint x)
{
if(x == 0)
return 0.0f;
@ -165,7 +165,7 @@ namespace detail
return float2packed11(Topack);
}
GLM_FUNC_QUALIFIER glm::uint floatTo10bit(float x)
inline glm::uint floatTo10bit(float x)
{
if(x == 0.0f)
return 0;
@ -179,7 +179,7 @@ namespace detail
return float2packed10(Topack);
}
GLM_FUNC_QUALIFIER float packed10bitToFloat(glm::uint x)
inline float packed10bitToFloat(glm::uint x)
{
if(x == 0)
return 0.0f;
@ -194,7 +194,7 @@ namespace detail
return Unpack;
}
// GLM_FUNC_QUALIFIER glm::uint f11_f11_f10(float x, float y, float z)
// inline glm::uint f11_f11_f10(float x, float y, float z)
// {
// return ((floatTo11bit(x) & ((1 << 11) - 1)) << 0) | ((floatTo11bit(y) & ((1 << 11) - 1)) << 11) | ((floatTo10bit(z) & ((1 << 10) - 1)) << 22);
// }
@ -225,18 +225,18 @@ namespace detail
}//namespace detail
GLM_FUNC_QUALIFIER uint8 packUnorm1x8(float const & v)
inline uint8 packUnorm1x8(float const & v)
{
return static_cast<uint8>(round(clamp(v, 0.0f, 1.0f) * 255.0f));
}
GLM_FUNC_QUALIFIER float unpackUnorm1x8(uint8 const & p)
inline float unpackUnorm1x8(uint8 const & p)
{
float Unpack(static_cast<float>(p));
return Unpack * static_cast<float>(0.0039215686274509803921568627451); // 1 / 255
}
GLM_FUNC_QUALIFIER uint16 packUnorm2x8(vec2 const & v)
inline uint16 packUnorm2x8(vec2 const & v)
{
u8vec2 Topack(round(clamp(v, 0.0f, 1.0f) * 255.0f));
uint16 Packed;
@ -244,14 +244,14 @@ namespace detail
return Packed;
}
GLM_FUNC_QUALIFIER vec2 unpackUnorm2x8(uint16 const & p)
inline vec2 unpackUnorm2x8(uint16 const & p)
{
uint16 Packed;
std::memcpy(&Packed, &Topack, sizeof(Packed));
return Packed;
}
GLM_FUNC_QUALIFIER uint8 packSnorm1x8(float const & v)
inline uint8 packSnorm1x8(float const & v)
{
int8 Topack(static_cast<int8>(round(clamp(v ,-1.0f, 1.0f) * 127.0f)));
uint8 Packed;
@ -259,7 +259,7 @@ namespace detail
return Packed;
}
GLM_FUNC_QUALIFIER float unpackSnorm1x8(uint8 const & p)
inline float unpackSnorm1x8(uint8 const & p)
{
float Unpack(static_cast<float>(*const_cast<uint8*>(&p)));
return clamp(
@ -267,7 +267,7 @@ namespace detail
-1.0f, 1.0f);
}
GLM_FUNC_QUALIFIER uint16 packSnorm2x8(vec2 const & v)
inline uint16 packSnorm2x8(vec2 const & v)
{
i8vec2 Topack(round(clamp(v ,-1.0f, 1.0f) * 127.0f));
uint16 Packed;
@ -275,7 +275,7 @@ namespace detail
return Packed;
}
GLM_FUNC_QUALIFIER vec2 unpackSnorm2x8(uint16 const & p)
inline vec2 unpackSnorm2x8(uint16 const & p)
{
i8vec2 Unpack;
std::memcpy(&Unpack, &p, sizeof(Unpack));
@ -284,18 +284,18 @@ namespace detail
-1.0f, 1.0f);
}
GLM_FUNC_QUALIFIER uint16 packUnorm1x16(float const & s)
inline uint16 packUnorm1x16(float const & s)
{
return static_cast<uint16>(round(clamp(s, 0.0f, 1.0f) * 65535.0f));
}
GLM_FUNC_QUALIFIER float unpackUnorm1x16(uint16 const & p)
inline float unpackUnorm1x16(uint16 const & p)
{
float Unpack = static_cast<float>(*const_cast<uint16*>(&p));
return Unpack * 1.5259021896696421759365224689097e-5f; // 1.0 / 65535.0
}
GLM_FUNC_QUALIFIER uint64 packUnorm4x16(vec4 const & v)
inline uint64 packUnorm4x16(vec4 const & v)
{
u16vec4 Topack(round(clamp(v , 0.0f, 1.0f) * 65535.0f));
uint64 Packed;
@ -303,13 +303,13 @@ namespace detail
return Packed;
}
GLM_FUNC_QUALIFIER vec4 unpackUnorm4x16(uint64 const & p)
inline vec4 unpackUnorm4x16(uint64 const & p)
{
u16vec4* Unpack = reinterpret_cast<u16vec4*>(const_cast<uint64*>(&p));
return vec4(*Unpack) * 1.5259021896696421759365224689097e-5f; // 1.0 / 65535.0
}
GLM_FUNC_QUALIFIER uint16 packSnorm1x16(float const & v)
inline uint16 packSnorm1x16(float const & v)
{
int16 Topack = static_cast<int16>(round(clamp(v ,-1.0f, 1.0f) * 32767.0f));
uint16 Packed;
@ -317,7 +317,7 @@ namespace detail
return Packed;
}
GLM_FUNC_QUALIFIER float unpackSnorm1x16(uint16 const & p)
inline float unpackSnorm1x16(uint16 const & p)
{
float Unpack = static_cast<float>(*const_cast<uint16*>(&p));
return clamp(
@ -325,7 +325,7 @@ namespace detail
-1.0f, 1.0f);
}
GLM_FUNC_QUALIFIER uint64 packSnorm4x16(vec4 const & v)
inline uint64 packSnorm4x16(vec4 const & v)
{
i16vec4 Topack = static_cast<i16vec4>(round(clamp(v ,-1.0f, 1.0f) * 32767.0f));
uint64 Packed;
@ -333,7 +333,7 @@ namespace detail
return Packed;
}
GLM_FUNC_QUALIFIER vec4 unpackSnorm4x16(uint64 const & p)
inline vec4 unpackSnorm4x16(uint64 const & p)
{
i16vec4 Unpack;
std::memcpy(&Unpack, &p, sizeof(Unpack));
@ -342,7 +342,7 @@ namespace detail
-1.0f, 1.0f);
}
GLM_FUNC_QUALIFIER uint16 packHalf1x16(float const & v)
inline uint16 packHalf1x16(float const & v)
{
int16 Topack = detail::toFloat16(v);
uint16 Packed;
@ -350,14 +350,14 @@ namespace detail
return Packed;
}
GLM_FUNC_QUALIFIER float unpackHalf1x16(uint16 const & v)
inline float unpackHalf1x16(uint16 const & v)
{
int16 Unpack;
std::memcpy(&Unpack, &v, sizeof(Unpack));
return detail::toFloat32(Unpack);
}
GLM_FUNC_QUALIFIER uint64 packHalf4x16(glm::vec4 const & v)
inline uint64 packHalf4x16(glm::vec4 const & v)
{
i16vec4 Unpack(
detail::toFloat16(v.x),
@ -370,7 +370,7 @@ namespace detail
return detail::toFloat32(Unpack);
}
GLM_FUNC_QUALIFIER glm::vec4 unpackHalf4x16(uint64 const & v)
inline glm::vec4 unpackHalf4x16(uint64 const & v)
{
i16vec4 Unpack;
std::memcpy(&Unpack, &v, sizeof(Unpack));
@ -382,7 +382,7 @@ namespace detail
detail::toFloat32(Unpack.w));
}
GLM_FUNC_QUALIFIER uint32 packI3x10_1x2(ivec4 const & v)
inline uint32 packI3x10_1x2(ivec4 const & v)
{
detail::i10i10i10i2 Result;
Result.data.x = v.x;
@ -392,7 +392,7 @@ namespace detail
return Result.pack;
}
GLM_FUNC_QUALIFIER ivec4 unpackI3x10_1x2(uint32 const & v)
inline ivec4 unpackI3x10_1x2(uint32 const & v)
{
detail::i10i10i10i2 Unpack;
Unpack.pack = v;
@ -403,7 +403,7 @@ namespace detail
Unpack.data.w);
}
GLM_FUNC_QUALIFIER uint32 packU3x10_1x2(uvec4 const & v)
inline uint32 packU3x10_1x2(uvec4 const & v)
{
detail::u10u10u10u2 Result;
Result.data.x = v.x;
@ -413,7 +413,7 @@ namespace detail
return Result.pack;
}
GLM_FUNC_QUALIFIER uvec4 unpackU3x10_1x2(uint32 const & v)
inline uvec4 unpackU3x10_1x2(uint32 const & v)
{
detail::u10u10u10u2 Unpack;
Unpack.pack = v;
@ -424,7 +424,7 @@ namespace detail
Unpack.data.w);
}
GLM_FUNC_QUALIFIER uint32 packSnorm3x10_1x2(vec4 const & v)
inline uint32 packSnorm3x10_1x2(vec4 const & v)
{
detail::i10i10i10i2 Result;
Result.data.x = int(round(clamp(v.x,-1.0f, 1.0f) * 511.f));
@ -434,7 +434,7 @@ namespace detail
return Result.pack;
}
GLM_FUNC_QUALIFIER vec4 unpackSnorm3x10_1x2(uint32 const & v)
inline vec4 unpackSnorm3x10_1x2(uint32 const & v)
{
detail::i10i10i10i2 Unpack;
Unpack.pack = v;
@ -446,7 +446,7 @@ namespace detail
return Result;
}
GLM_FUNC_QUALIFIER uint32 packUnorm3x10_1x2(vec4 const & v)
inline uint32 packUnorm3x10_1x2(vec4 const & v)
{
detail::i10i10i10i2 Result;
Result.data.x = int(round(clamp(v.x, 0.0f, 1.0f) * 1023.f));
@ -456,7 +456,7 @@ namespace detail
return Result.pack;
}
GLM_FUNC_QUALIFIER vec4 unpackUnorm3x10_1x2(uint32 const & v)
inline vec4 unpackUnorm3x10_1x2(uint32 const & v)
{
detail::i10i10i10i2 Unpack;
Unpack.pack = v;
@ -468,7 +468,7 @@ namespace detail
return Result;
}
GLM_FUNC_QUALIFIER uint32 packF2x11_1x10(vec3 const & v)
inline uint32 packF2x11_1x10(vec3 const & v)
{
return
((detail::floatTo11bit(v.x) & ((1 << 11) - 1)) << 0) |
@ -476,7 +476,7 @@ namespace detail
((detail::floatTo10bit(v.z) & ((1 << 10) - 1)) << 22);
}
GLM_FUNC_QUALIFIER vec3 unpackF2x11_1x10(uint32 const & v)
inline vec3 unpackF2x11_1x10(uint32 const & v)
{
return vec3(
detail::packed11bitToFloat(v >> 0),

View File

@ -35,13 +35,13 @@ namespace glm{
namespace detail
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER length_t tquat<T, P>::length() const
inline length_t tquat<T, P>::length() const
{
return 4;
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tquat<T, P>::tquat() :
inline tquat<T, P>::tquat() :
x(0),
y(0),
z(0),
@ -50,7 +50,7 @@ namespace detail
template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tquat<T, P>::tquat
inline tquat<T, P>::tquat
(
tquat<U, Q> const & q
) :
@ -61,7 +61,7 @@ namespace detail
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tquat<T, P>::tquat
inline tquat<T, P>::tquat
(
T const & s,
tvec3<T, P> const & v
@ -73,7 +73,7 @@ namespace detail
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tquat<T, P>::tquat
inline tquat<T, P>::tquat
(
T const & w,
T const & x,
@ -90,7 +90,7 @@ namespace detail
// tquat conversions
//template <typename valType>
//GLM_FUNC_QUALIFIER tquat<valType>::tquat
//inline tquat<valType>::tquat
//(
// valType const & pitch,
// valType const & yaw,
@ -108,7 +108,7 @@ namespace detail
//}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tquat<T, P>::tquat
inline tquat<T, P>::tquat
(
detail::tvec3<T, P> const & u,
detail::tvec3<T, P> const & v
@ -122,7 +122,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tquat<T, P>::tquat
inline tquat<T, P>::tquat
(
tvec3<T, P> const & eulerAngle
)
@ -137,7 +137,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tquat<T, P>::tquat
inline tquat<T, P>::tquat
(
tmat3x3<T, P> const & m
)
@ -146,7 +146,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tquat<T, P>::tquat
inline tquat<T, P>::tquat
(
tmat4x4<T, P> const & m
)
@ -158,14 +158,14 @@ namespace detail
// tquat<T, P> accesses
template <typename T, precision P>
GLM_FUNC_QUALIFIER T & tquat<T, P>::operator[] (length_t i)
inline T & tquat<T, P>::operator[] (length_t i)
{
assert(i >= 0 && i < this->length());
return (&x)[i];
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T const & tquat<T, P>::operator[] (length_t i) const
inline T const & tquat<T, P>::operator[] (length_t i) const
{
assert(i >= 0 && i < this->length());
return (&x)[i];
@ -173,7 +173,7 @@ namespace detail
}//namespace detail
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> conjugate
inline detail::tquat<T, P> conjugate
(
detail::tquat<T, P> const & q
)
@ -182,7 +182,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> inverse
inline detail::tquat<T, P> inverse
(
detail::tquat<T, P> const & q
)
@ -196,7 +196,7 @@ namespace detail
// tquat<valType> operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tquat<T, P> & tquat<T, P>::operator +=
inline tquat<T, P> & tquat<T, P>::operator +=
(
tquat<T, P> const & q
)
@ -209,7 +209,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tquat<T, P> & tquat<T, P>::operator *=
inline tquat<T, P> & tquat<T, P>::operator *=
(
tquat<T, P> const & q
)
@ -224,7 +224,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tquat<T, P> & tquat<T, P>::operator *=
inline tquat<T, P> & tquat<T, P>::operator *=
(
T const & s
)
@ -237,7 +237,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tquat<T, P> & tquat<T, P>::operator /=
inline tquat<T, P> & tquat<T, P>::operator /=
(
T const & s
)
@ -266,7 +266,7 @@ namespace detail
// tquat<T, P> external operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> operator-
inline detail::tquat<T, P> operator-
(
detail::tquat<T, P> const & q
)
@ -275,7 +275,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> operator+
inline detail::tquat<T, P> operator+
(
detail::tquat<T, P> const & q,
detail::tquat<T, P> const & p
@ -285,7 +285,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> operator*
inline detail::tquat<T, P> operator*
(
detail::tquat<T, P> const & q,
detail::tquat<T, P> const & p
@ -296,7 +296,7 @@ namespace detail
// Transformation
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> operator*
inline detail::tvec3<T, P> operator*
(
detail::tquat<T, P> const & q,
detail::tvec3<T, P> const & v
@ -315,7 +315,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> operator*
inline detail::tvec3<T, P> operator*
(
detail::tvec3<T, P> const & v,
detail::tquat<T, P> const & q
@ -325,7 +325,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> operator*
inline detail::tvec4<T, P> operator*
(
detail::tquat<T, P> const & q,
detail::tvec4<T, P> const & v
@ -335,7 +335,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> operator*
inline detail::tvec4<T, P> operator*
(
detail::tvec4<T, P> const & v,
detail::tquat<T, P> const & q
@ -345,7 +345,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> operator*
inline detail::tquat<T, P> operator*
(
detail::tquat<T, P> const & q,
T const & s
@ -356,7 +356,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> operator*
inline detail::tquat<T, P> operator*
(
T const & s,
detail::tquat<T, P> const & q
@ -366,7 +366,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> operator/
inline detail::tquat<T, P> operator/
(
detail::tquat<T, P> const & q,
T const & s
@ -380,7 +380,7 @@ namespace detail
// Boolean operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator==
inline bool operator==
(
detail::tquat<T, P> const & q1,
detail::tquat<T, P> const & q2
@ -390,7 +390,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator!=
inline bool operator!=
(
detail::tquat<T, P> const & q1,
detail::tquat<T, P> const & q2
@ -403,7 +403,7 @@ namespace detail
////////////////////////////////////////////////////////
template <typename T, precision P>
GLM_FUNC_QUALIFIER T length
inline T length
(
detail::tquat<T, P> const & q
)
@ -412,7 +412,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> normalize
inline detail::tquat<T, P> normalize
(
detail::tquat<T, P> const & q
)
@ -425,7 +425,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> cross
inline detail::tquat<T, P> cross
(
detail::tquat<T, P> const & q1,
detail::tquat<T, P> const & q2
@ -440,7 +440,7 @@ namespace detail
/*
// (x * sin(1 - a) * angle / sin(angle)) + (y * sin(a) * angle / sin(angle))
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> mix
inline detail::tquat<T, P> mix
(
detail::tquat<T, P> const & x,
detail::tquat<T, P> const & y,
@ -482,7 +482,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> mix2
inline detail::tquat<T, P> mix2
(
detail::tquat<T, P> const & x,
detail::tquat<T, P> const & y,
@ -520,7 +520,7 @@ namespace detail
*/
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> mix
inline detail::tquat<T, P> mix
(
detail::tquat<T, P> const & x,
detail::tquat<T, P> const & y,
@ -548,7 +548,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> lerp
inline detail::tquat<T, P> lerp
(
detail::tquat<T, P> const & x,
detail::tquat<T, P> const & y,
@ -563,7 +563,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> slerp
inline detail::tquat<T, P> slerp
(
detail::tquat<T, P> const & x,
detail::tquat<T, P> const & y,
@ -601,7 +601,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> rotate
inline detail::tquat<T, P> rotate
(
detail::tquat<T, P> const & q,
T const & angle,
@ -633,7 +633,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> eulerAngles
inline detail::tvec3<T, P> eulerAngles
(
detail::tquat<T, P> const & x
)
@ -642,7 +642,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T roll
inline T roll
(
detail::tquat<T, P> const & q
)
@ -656,7 +656,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T pitch
inline T pitch
(
detail::tquat<T, P> const & q
)
@ -670,7 +670,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T yaw
inline T yaw
(
detail::tquat<T, P> const & q
)
@ -684,7 +684,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> mat3_cast
inline detail::tmat3x3<T, P> mat3_cast
(
detail::tquat<T, P> const & q
)
@ -715,7 +715,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> mat4_cast
inline detail::tmat4x4<T, P> mat4_cast
(
detail::tquat<T, P> const & q
)
@ -724,7 +724,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> quat_cast
inline detail::tquat<T, P> quat_cast
(
detail::tmat3x3<T, P> const & m
)
@ -791,7 +791,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> quat_cast
inline detail::tquat<T, P> quat_cast
(
detail::tmat4x4<T, P> const & m4
)
@ -800,7 +800,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T angle
inline T angle
(
detail::tquat<T, P> const & x
)
@ -814,7 +814,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> axis
inline detail::tvec3<T, P> axis
(
detail::tquat<T, P> const & x
)
@ -827,7 +827,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> angleAxis
inline detail::tquat<T, P> angleAxis
(
T const & angle,
detail::tvec3<T, P> const & v
@ -851,7 +851,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<bool, P> lessThan
inline detail::tvec4<bool, P> lessThan
(
detail::tquat<T, P> const & x,
detail::tquat<T, P> const & y
@ -864,7 +864,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<bool, P> lessThanEqual
inline detail::tvec4<bool, P> lessThanEqual
(
detail::tquat<T, P> const & x,
detail::tquat<T, P> const & y
@ -877,7 +877,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<bool, P> greaterThan
inline detail::tvec4<bool, P> greaterThan
(
detail::tquat<T, P> const & x,
detail::tquat<T, P> const & y
@ -890,7 +890,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<bool, P> greaterThanEqual
inline detail::tvec4<bool, P> greaterThanEqual
(
detail::tquat<T, P> const & x,
detail::tquat<T, P> const & y
@ -903,7 +903,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<bool, P> equal
inline detail::tvec4<bool, P> equal
(
detail::tquat<T, P> const & x,
detail::tquat<T, P> const & y
@ -916,7 +916,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<bool, P> notEqual
inline detail::tvec4<bool, P> notEqual
(
detail::tquat<T, P> const & x,
detail::tquat<T, P> const & y

View File

@ -38,30 +38,30 @@ namespace detail
struct compute_linearRand
{
template <typename T>
GLM_FUNC_QUALIFIER T operator() (T const & Min, T const & Max) const;
inline T operator() (T const & Min, T const & Max) const;
};
template <>
GLM_FUNC_QUALIFIER float compute_linearRand::operator()<float> (float const & Min, float const & Max) const
inline float compute_linearRand::operator()<float> (float const & Min, float const & Max) const
{
return float(std::rand()) / float(RAND_MAX) * (Max - Min) + Min;
}
template <>
GLM_FUNC_QUALIFIER double compute_linearRand::operator()<double> (double const & Min, double const & Max) const
inline double compute_linearRand::operator()<double> (double const & Min, double const & Max) const
{
return double(std::rand()) / double(RAND_MAX) * (Max - Min) + Min;
}
template <>
GLM_FUNC_QUALIFIER long double compute_linearRand::operator()<long double> (long double const & Min, long double const & Max) const
inline long double compute_linearRand::operator()<long double> (long double const & Min, long double const & Max) const
{
return (long double)(std::rand()) / (long double)(RAND_MAX) * (Max - Min) + Min;
}
}//namespace detail
template <typename genType>
GLM_FUNC_QUALIFIER genType linearRand
inline genType linearRand
(
genType const & Min,
genType const & Max
@ -73,7 +73,7 @@ namespace detail
VECTORIZE_VEC_VEC(linearRand)
template <typename genType>
GLM_FUNC_QUALIFIER genType gaussRand
inline genType gaussRand
(
genType const & Mean,
genType const & Deviation
@ -95,7 +95,7 @@ namespace detail
VECTORIZE_VEC_VEC(gaussRand)
template <typename T>
GLM_FUNC_QUALIFIER detail::tvec2<T, defaultp> diskRand
inline detail::tvec2<T, defaultp> diskRand
(
T const & Radius
)
@ -116,7 +116,7 @@ namespace detail
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tvec3<T, defaultp> ballRand
inline detail::tvec3<T, defaultp> ballRand
(
T const & Radius
)
@ -137,7 +137,7 @@ namespace detail
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tvec2<T, defaultp> circularRand
inline detail::tvec2<T, defaultp> circularRand
(
T const & Radius
)
@ -147,7 +147,7 @@ namespace detail
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tvec3<T, defaultp> sphericalRand
inline detail::tvec3<T, defaultp> sphericalRand
(
T const & Radius
)

View File

@ -33,7 +33,7 @@ namespace glm
{
// sec
template <typename genType>
GLM_FUNC_QUALIFIER genType sec
inline genType sec
(
genType const & angle
)
@ -45,7 +45,7 @@ namespace glm
// csc
template <typename genType>
GLM_FUNC_QUALIFIER genType csc
inline genType csc
(
genType const & angle
)
@ -57,7 +57,7 @@ namespace glm
// cot
template <typename genType>
GLM_FUNC_QUALIFIER genType cot
inline genType cot
(
genType const & angle
)
@ -69,7 +69,7 @@ namespace glm
// asec
template <typename genType>
GLM_FUNC_QUALIFIER genType asec
inline genType asec
(
genType const & x
)
@ -81,7 +81,7 @@ namespace glm
// acsc
template <typename genType>
GLM_FUNC_QUALIFIER genType acsc
inline genType acsc
(
genType const & x
)
@ -93,7 +93,7 @@ namespace glm
// acot
template <typename genType>
GLM_FUNC_QUALIFIER genType acot
inline genType acot
(
genType const & x
)
@ -106,7 +106,7 @@ namespace glm
// sech
template <typename genType>
GLM_FUNC_QUALIFIER genType sech
inline genType sech
(
genType const & angle
)
@ -118,7 +118,7 @@ namespace glm
// csch
template <typename genType>
GLM_FUNC_QUALIFIER genType csch
inline genType csch
(
genType const & angle
)
@ -130,7 +130,7 @@ namespace glm
// coth
template <typename genType>
GLM_FUNC_QUALIFIER genType coth
inline genType coth
(
genType const & angle
)
@ -142,7 +142,7 @@ namespace glm
// asech
template <typename genType>
GLM_FUNC_QUALIFIER genType asech
inline genType asech
(
genType const & x
)
@ -154,7 +154,7 @@ namespace glm
// acsch
template <typename genType>
GLM_FUNC_QUALIFIER genType acsch
inline genType acsch
(
genType const & x
)
@ -166,7 +166,7 @@ namespace glm
// acoth
template <typename genType>
GLM_FUNC_QUALIFIER genType acoth
inline genType acoth
(
genType const & x
)

View File

@ -36,7 +36,7 @@ namespace glm
/// Return the constant address to the data of the vector input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T const * value_ptr
inline T const * value_ptr
(
detail::tvec2<T, P> const & vec
)
@ -47,7 +47,7 @@ namespace glm
//! Return the address to the data of the vector input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T * value_ptr
inline T * value_ptr
(
detail::tvec2<T, P> & vec
)
@ -58,7 +58,7 @@ namespace glm
/// Return the constant address to the data of the vector input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T const * value_ptr
inline T const * value_ptr
(
detail::tvec3<T, P> const & vec
)
@ -69,7 +69,7 @@ namespace glm
//! Return the address to the data of the vector input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T * value_ptr
inline T * value_ptr
(
detail::tvec3<T, P> & vec
)
@ -80,7 +80,7 @@ namespace glm
/// Return the constant address to the data of the vector input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T const * value_ptr
inline T const * value_ptr
(
detail::tvec4<T, P> const & vec
)
@ -91,7 +91,7 @@ namespace glm
//! Return the address to the data of the vector input.
//! From GLM_GTC_type_ptr extension.
template<typename T, precision P>
GLM_FUNC_QUALIFIER T * value_ptr
inline T * value_ptr
(
detail::tvec4<T, P> & vec
)
@ -102,7 +102,7 @@ namespace glm
/// Return the constant address to the data of the matrix input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T const * value_ptr
inline T const * value_ptr
(
detail::tmat2x2<T, P> const & mat
)
@ -113,7 +113,7 @@ namespace glm
//! Return the address to the data of the matrix input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T * value_ptr
inline T * value_ptr
(
detail::tmat2x2<T, P> & mat
)
@ -124,7 +124,7 @@ namespace glm
/// Return the constant address to the data of the matrix input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T const * value_ptr
inline T const * value_ptr
(
detail::tmat3x3<T, P> const & mat
)
@ -135,7 +135,7 @@ namespace glm
//! Return the address to the data of the matrix input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T * value_ptr
inline T * value_ptr
(
detail::tmat3x3<T, P> & mat
)
@ -146,7 +146,7 @@ namespace glm
/// Return the constant address to the data of the matrix input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T const * value_ptr
inline T const * value_ptr
(
detail::tmat4x4<T, P> const & mat
)
@ -157,7 +157,7 @@ namespace glm
//! Return the address to the data of the matrix input.
//! From GLM_GTC_type_ptr extension.
template<typename T, precision P>
GLM_FUNC_QUALIFIER T * value_ptr
inline T * value_ptr
(
detail::tmat4x4<T, P> & mat
)
@ -168,7 +168,7 @@ namespace glm
/// Return the constant address to the data of the matrix input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T const * value_ptr
inline T const * value_ptr
(
detail::tmat2x3<T, P> const & mat
)
@ -179,7 +179,7 @@ namespace glm
//! Return the address to the data of the matrix input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T * value_ptr
inline T * value_ptr
(
detail::tmat2x3<T, P> & mat
)
@ -190,7 +190,7 @@ namespace glm
/// Return the constant address to the data of the matrix input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T const * value_ptr
inline T const * value_ptr
(
detail::tmat3x2<T, P> const & mat
)
@ -201,7 +201,7 @@ namespace glm
//! Return the address to the data of the matrix input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T * value_ptr
inline T * value_ptr
(
detail::tmat3x2<T, P> & mat
)
@ -212,7 +212,7 @@ namespace glm
/// Return the constant address to the data of the matrix input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T const * value_ptr
inline T const * value_ptr
(
detail::tmat2x4<T, P> const & mat
)
@ -223,7 +223,7 @@ namespace glm
//! Return the address to the data of the matrix input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T * value_ptr
inline T * value_ptr
(
detail::tmat2x4<T, P> & mat
)
@ -234,7 +234,7 @@ namespace glm
/// Return the constant address to the data of the matrix input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T const * value_ptr
inline T const * value_ptr
(
detail::tmat4x2<T, P> const & mat
)
@ -245,7 +245,7 @@ namespace glm
//! Return the address to the data of the matrix input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T * value_ptr
inline T * value_ptr
(
detail::tmat4x2<T, P> & mat
)
@ -256,7 +256,7 @@ namespace glm
/// Return the constant address to the data of the matrix input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T const * value_ptr
inline T const * value_ptr
(
detail::tmat3x4<T, P> const & mat
)
@ -267,7 +267,7 @@ namespace glm
//! Return the address to the data of the matrix input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T * value_ptr
inline T * value_ptr
(
detail::tmat3x4<T, P> & mat
)
@ -278,7 +278,7 @@ namespace glm
/// Return the constant address to the data of the matrix input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T const * value_ptr
inline T const * value_ptr
(
detail::tmat4x3<T, P> const & mat
)
@ -289,7 +289,7 @@ namespace glm
/// Return the address to the data of the matrix input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T * value_ptr(detail::tmat4x3<T, P> & mat)
inline T * value_ptr(detail::tmat4x3<T, P> & mat)
{
return &(mat[0].x);
}
@ -297,7 +297,7 @@ namespace glm
/// Return the constant address to the data of the input parameter.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T const * value_ptr
inline T const * value_ptr
(
detail::tquat<T, P> const & q
)
@ -308,7 +308,7 @@ namespace glm
/// Return the address to the data of the quaternion input.
/// @see gtc_type_ptr
template<typename T, precision P>
GLM_FUNC_QUALIFIER T * value_ptr
inline T * value_ptr
(
detail::tquat<T, P> & q
)
@ -319,7 +319,7 @@ namespace glm
/// Build a vector from a pointer.
/// @see gtc_type_ptr
template <typename T>
GLM_FUNC_QUALIFIER detail::tvec2<T, defaultp> make_vec2(T const * const ptr)
inline detail::tvec2<T, defaultp> make_vec2(T const * const ptr)
{
detail::tvec2<T, defaultp> Result;
memcpy(value_ptr(Result), ptr, sizeof(detail::tvec2<T, defaultp>));
@ -329,7 +329,7 @@ namespace glm
/// Build a vector from a pointer.
/// @see gtc_type_ptr
template <typename T>
GLM_FUNC_QUALIFIER detail::tvec3<T, defaultp> make_vec3(T const * const ptr)
inline detail::tvec3<T, defaultp> make_vec3(T const * const ptr)
{
detail::tvec3<T, defaultp> Result;
memcpy(value_ptr(Result), ptr, sizeof(detail::tvec3<T, defaultp>));
@ -339,7 +339,7 @@ namespace glm
/// Build a vector from a pointer.
/// @see gtc_type_ptr
template <typename T>
GLM_FUNC_QUALIFIER detail::tvec4<T, defaultp> make_vec4(T const * const ptr)
inline detail::tvec4<T, defaultp> make_vec4(T const * const ptr)
{
detail::tvec4<T, defaultp> Result;
memcpy(value_ptr(Result), ptr, sizeof(detail::tvec4<T, defaultp>));
@ -349,7 +349,7 @@ namespace glm
/// Build a matrix from a pointer.
/// @see gtc_type_ptr
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat2x2<T, defaultp> make_mat2x2(T const * const ptr)
inline detail::tmat2x2<T, defaultp> make_mat2x2(T const * const ptr)
{
detail::tmat2x2<T, defaultp> Result;
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x2<T, defaultp>));
@ -359,7 +359,7 @@ namespace glm
/// Build a matrix from a pointer.
/// @see gtc_type_ptr
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat2x3<T, defaultp> make_mat2x3(T const * const ptr)
inline detail::tmat2x3<T, defaultp> make_mat2x3(T const * const ptr)
{
detail::tmat2x3<T, defaultp> Result;
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x3<T, defaultp>));
@ -369,7 +369,7 @@ namespace glm
/// Build a matrix from a pointer.
/// @see gtc_type_ptr
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat2x4<T, defaultp> make_mat2x4(T const * const ptr)
inline detail::tmat2x4<T, defaultp> make_mat2x4(T const * const ptr)
{
detail::tmat2x4<T, defaultp> Result;
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x4<T, defaultp>));
@ -379,7 +379,7 @@ namespace glm
/// Build a matrix from a pointer.
/// @see gtc_type_ptr
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat3x2<T, defaultp> make_mat3x2(T const * const ptr)
inline detail::tmat3x2<T, defaultp> make_mat3x2(T const * const ptr)
{
detail::tmat3x2<T, defaultp> Result;
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x2<T, defaultp>));
@ -389,7 +389,7 @@ namespace glm
//! Build a matrix from a pointer.
/// @see gtc_type_ptr
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, defaultp> make_mat3x3(T const * const ptr)
inline detail::tmat3x3<T, defaultp> make_mat3x3(T const * const ptr)
{
detail::tmat3x3<T, defaultp> Result;
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x3<T, defaultp>));
@ -399,7 +399,7 @@ namespace glm
//! Build a matrix from a pointer.
/// @see gtc_type_ptr
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat3x4<T, defaultp> make_mat3x4(T const * const ptr)
inline detail::tmat3x4<T, defaultp> make_mat3x4(T const * const ptr)
{
detail::tmat3x4<T, defaultp> Result;
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x4<T, defaultp>));
@ -409,7 +409,7 @@ namespace glm
//! Build a matrix from a pointer.
/// @see gtc_type_ptr
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x2<T, defaultp> make_mat4x2(T const * const ptr)
inline detail::tmat4x2<T, defaultp> make_mat4x2(T const * const ptr)
{
detail::tmat4x2<T, defaultp> Result;
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x2<T, defaultp>));
@ -419,7 +419,7 @@ namespace glm
//! Build a matrix from a pointer.
/// @see gtc_type_ptr
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x3<T, defaultp> make_mat4x3(T const * const ptr)
inline detail::tmat4x3<T, defaultp> make_mat4x3(T const * const ptr)
{
detail::tmat4x3<T, defaultp> Result;
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x3<T, defaultp>));
@ -429,7 +429,7 @@ namespace glm
//! Build a matrix from a pointer.
/// @see gtc_type_ptr
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, defaultp> make_mat4x4(T const * const ptr)
inline detail::tmat4x4<T, defaultp> make_mat4x4(T const * const ptr)
{
detail::tmat4x4<T, defaultp> Result;
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x4<T, defaultp>));
@ -439,7 +439,7 @@ namespace glm
//! Build a matrix from a pointer.
/// @see gtc_type_ptr
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat2x2<T, defaultp> make_mat2(T const * const ptr)
inline detail::tmat2x2<T, defaultp> make_mat2(T const * const ptr)
{
return make_mat2x2(ptr);
}
@ -447,7 +447,7 @@ namespace glm
//! Build a matrix from a pointer.
/// @see gtc_type_ptr
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, defaultp> make_mat3(T const * const ptr)
inline detail::tmat3x3<T, defaultp> make_mat3(T const * const ptr)
{
return make_mat3x3(ptr);
}
@ -455,7 +455,7 @@ namespace glm
//! Build a matrix from a pointer.
/// @see gtc_type_ptr
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, defaultp> make_mat4(T const * const ptr)
inline detail::tmat4x4<T, defaultp> make_mat4(T const * const ptr)
{
return make_mat4x4(ptr);
}
@ -463,7 +463,7 @@ namespace glm
//! Build a quaternion from a pointer.
/// @see gtc_type_ptr
template <typename T>
GLM_FUNC_QUALIFIER detail::tquat<T, defaultp> make_quat(T const * const ptr)
inline detail::tquat<T, defaultp> make_quat(T const * const ptr)
{
detail::tquat<T, defaultp> Result;
memcpy(value_ptr(Result), ptr, sizeof(detail::tquat<T, defaultp>));

28
deps/glm/gtc/ulp.inl vendored
View File

@ -93,7 +93,7 @@ typedef union
namespace glm{
namespace detail
{
GLM_FUNC_QUALIFIER float nextafterf(float x, float y)
inline float nextafterf(float x, float y)
{
volatile float t;
glm::detail::int32 hx, hy, ix, iy;
@ -138,7 +138,7 @@ namespace detail
return x;
}
GLM_FUNC_QUALIFIER double nextafter(double x, double y)
inline double nextafter(double x, double y)
{
volatile double t;
glm::detail::int32 hx, hy, ix, iy;
@ -197,7 +197,7 @@ namespace detail
namespace glm
{
template <>
GLM_FUNC_QUALIFIER float next_float(float const & x)
inline float next_float(float const & x)
{
# if((GLM_LANG & GLM_LANG_CXX11_FLAG))
return std::nextafter(x, std::numeric_limits<float>::max());
@ -209,7 +209,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER double next_float(double const & x)
inline double next_float(double const & x)
{
# if((GLM_LANG & GLM_LANG_CXX11_FLAG))
return std::nextafter(x, std::numeric_limits<double>::max());
@ -221,7 +221,7 @@ namespace glm
}
template<typename T, precision P, template<typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> next_float(vecType<T, P> const & x)
inline vecType<T, P> next_float(vecType<T, P> const & x)
{
vecType<T, P> Result;
for(length_t i = 0; i < Result.length(); ++i)
@ -229,7 +229,7 @@ namespace glm
return Result;
}
GLM_FUNC_QUALIFIER float prev_float(float const & x)
inline float prev_float(float const & x)
{
# if((GLM_LANG & GLM_LANG_CXX11_FLAG))
return std::nextafter(x, std::numeric_limits<float>::min());
@ -240,7 +240,7 @@ namespace glm
# endif
}
GLM_FUNC_QUALIFIER double prev_float(double const & x)
inline double prev_float(double const & x)
{
# if((GLM_LANG & GLM_LANG_CXX11_FLAG))
return std::nextafter(x, std::numeric_limits<double>::min());
@ -252,7 +252,7 @@ namespace glm
}
template<typename T, precision P, template<typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> prev_float(vecType<T, P> const & x)
inline vecType<T, P> prev_float(vecType<T, P> const & x)
{
vecType<T, P> Result;
for(length_t i = 0; i < Result.length(); ++i)
@ -261,7 +261,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER T next_float(T const & x, uint const & ulps)
inline T next_float(T const & x, uint const & ulps)
{
T temp = x;
for(uint i = 0; i < ulps; ++i)
@ -270,7 +270,7 @@ namespace glm
}
template<typename T, precision P, template<typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> next_float(vecType<T, P> const & x, vecType<uint, P> const & ulps)
inline vecType<T, P> next_float(vecType<T, P> const & x, vecType<uint, P> const & ulps)
{
vecType<T, P> Result;
for(length_t i = 0; i < Result.length(); ++i)
@ -279,7 +279,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER T prev_float(T const & x, uint const & ulps)
inline T prev_float(T const & x, uint const & ulps)
{
T temp = x;
for(uint i = 0; i < ulps; ++i)
@ -288,7 +288,7 @@ namespace glm
}
template<typename T, precision P, template<typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> prev_float(vecType<T, P> const & x, vecType<uint, P> const & ulps)
inline vecType<T, P> prev_float(vecType<T, P> const & x, vecType<uint, P> const & ulps)
{
vecType<T, P> Result;
for(length_t i = 0; i < Result.length(); ++i)
@ -297,7 +297,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER uint float_distance(T const & x, T const & y)
inline uint float_distance(T const & x, T const & y)
{
uint ulp = 0;
@ -328,7 +328,7 @@ namespace glm
}
template<typename T, precision P, template<typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<uint, P> float_distance(vecType<T, P> const & x, vecType<T, P> const & y)
inline vecType<uint, P> float_distance(vecType<T, P> const & x, vecType<T, P> const & y)
{
vecType<uint, P> Result;
for(length_t i = 0; i < Result.length(); ++i)

View File

@ -11,13 +11,13 @@ namespace glm{
// Min comparison between 2 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER U associatedMin(T x, U a, T y, U b)
inline U associatedMin(T x, U a, T y, U b)
{
return x < y ? a : b;
}
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMin
inline detail::tvec2<U, P> associatedMin
(
const detail::tvec2<T, P>& x, const detail::tvec2<U, P>& a,
const detail::tvec2<T, P>& y, const detail::tvec2<U, P>& b
@ -32,7 +32,7 @@ GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMin
}
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMin
inline detail::tvec3<U, P> associatedMin
(
const detail::tvec3<T, P>& x, const detail::tvec3<U, P>& a,
const detail::tvec3<T, P>& y, const detail::tvec3<U, P>& b
@ -45,7 +45,7 @@ GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMin
}
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMin
inline detail::tvec4<U, P> associatedMin
(
const detail::tvec4<T, P>& x, const detail::tvec4<U, P>& a,
const detail::tvec4<T, P>& y, const detail::tvec4<U, P>& b
@ -58,7 +58,7 @@ GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMin
}
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMin
inline detail::tvec2<U, P> associatedMin
(
T x, const detail::tvec2<U, P>& a,
T y, const detail::tvec2<U, P>& b
@ -71,7 +71,7 @@ GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMin
}
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMin
inline detail::tvec3<U, P> associatedMin
(
T x, const detail::tvec3<U, P>& a,
T y, const detail::tvec3<U, P>& b
@ -84,7 +84,7 @@ GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMin
}
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMin
inline detail::tvec4<U, P> associatedMin
(
T x, const detail::tvec4<U, P>& a,
T y, const detail::tvec4<U, P>& b
@ -97,7 +97,7 @@ GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMin
}
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMin
inline detail::tvec2<U, P> associatedMin
(
detail::tvec2<T, P> const & x, U a,
detail::tvec2<T, P> const & y, U b
@ -110,7 +110,7 @@ GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMin
}
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMin
inline detail::tvec3<U, P> associatedMin
(
const detail::tvec3<T, P>& x, U a,
const detail::tvec3<T, P>& y, U b
@ -123,7 +123,7 @@ GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMin
}
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMin
inline detail::tvec4<U, P> associatedMin
(
const detail::tvec4<T, P>& x, U a,
const detail::tvec4<T, P>& y, U b
@ -137,7 +137,7 @@ GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMin
// Min comparison between 3 variables
template<typename T, typename U>
GLM_FUNC_QUALIFIER U associatedMin
inline U associatedMin
(
T x, U a,
T y, U b,
@ -149,7 +149,7 @@ GLM_FUNC_QUALIFIER U associatedMin
}
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMin
inline detail::tvec2<U, P> associatedMin
(
const detail::tvec2<T, P>& x, const detail::tvec2<U, P>& a,
const detail::tvec2<T, P>& y, const detail::tvec2<U, P>& b,
@ -163,7 +163,7 @@ GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMin
}
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMin
inline detail::tvec3<U, P> associatedMin
(
const detail::tvec3<T, P>& x, const detail::tvec3<U, P>& a,
const detail::tvec3<T, P>& y, const detail::tvec3<U, P>& b,
@ -177,7 +177,7 @@ GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMin
}
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMin
inline detail::tvec4<U, P> associatedMin
(
const detail::tvec4<T, P>& x, const detail::tvec4<U, P>& a,
const detail::tvec4<T, P>& y, const detail::tvec4<U, P>& b,
@ -192,7 +192,7 @@ GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMin
// Min comparison between 4 variables
template<typename T, typename U>
GLM_FUNC_QUALIFIER U associatedMin
inline U associatedMin
(
T x, U a,
T y, U b,
@ -210,7 +210,7 @@ GLM_FUNC_QUALIFIER U associatedMin
// Min comparison between 4 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMin
inline detail::tvec2<U, P> associatedMin
(
const detail::tvec2<T, P>& x, const detail::tvec2<U, P>& a,
const detail::tvec2<T, P>& y, const detail::tvec2<U, P>& b,
@ -232,7 +232,7 @@ GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMin
// Min comparison between 4 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMin
inline detail::tvec3<U, P> associatedMin
(
const detail::tvec3<T, P>& x, const detail::tvec3<U, P>& a,
const detail::tvec3<T, P>& y, const detail::tvec3<U, P>& b,
@ -254,7 +254,7 @@ GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMin
// Min comparison between 4 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMin
inline detail::tvec4<U, P> associatedMin
(
const detail::tvec4<T, P>& x, const detail::tvec4<U, P>& a,
const detail::tvec4<T, P>& y, const detail::tvec4<U, P>& b,
@ -276,7 +276,7 @@ GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMin
// Min comparison between 4 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMin
inline detail::tvec2<U, P> associatedMin
(
T x, const detail::tvec2<U, P>& a,
T y, const detail::tvec2<U, P>& b,
@ -299,7 +299,7 @@ GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMin
// Min comparison between 4 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMin
inline detail::tvec3<U, P> associatedMin
(
T x, const detail::tvec3<U, P>& a,
T y, const detail::tvec3<U, P>& b,
@ -322,7 +322,7 @@ GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMin
// Min comparison between 4 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMin
inline detail::tvec4<U, P> associatedMin
(
T x, const detail::tvec4<U, P>& a,
T y, const detail::tvec4<U, P>& b,
@ -345,7 +345,7 @@ GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMin
// Min comparison between 4 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMin
inline detail::tvec2<U, P> associatedMin
(
const detail::tvec2<T, P>& x, U a,
const detail::tvec2<T, P>& y, U b,
@ -367,7 +367,7 @@ GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMin
// Min comparison between 4 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMin
inline detail::tvec3<U, P> associatedMin
(
const detail::tvec3<T, P>& x, U a,
const detail::tvec3<T, P>& y, U b,
@ -389,7 +389,7 @@ GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMin
// Min comparison between 4 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMin
inline detail::tvec4<U, P> associatedMin
(
const detail::tvec4<T, P>& x, U a,
const detail::tvec4<T, P>& y, U b,
@ -411,14 +411,14 @@ GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMin
// Max comparison between 2 variables
template<typename T, typename U>
GLM_FUNC_QUALIFIER U associatedMax(T x, U a, T y, U b)
inline U associatedMax(T x, U a, T y, U b)
{
return x > y ? a : b;
}
// Max comparison between 2 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMax
inline detail::tvec2<U, P> associatedMax
(
const detail::tvec2<T, P>& x, const detail::tvec2<U, P>& a,
const detail::tvec2<T, P>& y, const detail::tvec2<U, P>& b
@ -432,7 +432,7 @@ GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMax
// Max comparison between 2 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMax
inline detail::tvec3<U, P> associatedMax
(
const detail::tvec3<T, P>& x, const detail::tvec3<U, P>& a,
const detail::tvec3<T, P>& y, const detail::tvec3<U, P>& b
@ -446,7 +446,7 @@ GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMax
// Max comparison between 2 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMax
inline detail::tvec4<U, P> associatedMax
(
const detail::tvec4<T, P>& x, const detail::tvec4<U, P>& a,
const detail::tvec4<T, P>& y, const detail::tvec4<U, P>& b
@ -460,7 +460,7 @@ GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMax
// Max comparison between 2 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMax
inline detail::tvec2<U, P> associatedMax
(
T x, const detail::tvec2<U, P>& a,
T y, const detail::tvec2<U, P>& b
@ -474,7 +474,7 @@ GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMax
// Max comparison between 2 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMax
inline detail::tvec3<U, P> associatedMax
(
T x, const detail::tvec3<U, P>& a,
T y, const detail::tvec3<U, P>& b
@ -488,7 +488,7 @@ GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMax
// Max comparison between 2 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMax
inline detail::tvec4<U, P> associatedMax
(
T x, const detail::tvec4<U, P>& a,
T y, const detail::tvec4<U, P>& b
@ -502,7 +502,7 @@ GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMax
// Max comparison between 2 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMax
inline detail::tvec2<U, P> associatedMax
(
const detail::tvec2<T, P>& x, U a,
const detail::tvec2<T, P>& y, U b
@ -516,7 +516,7 @@ GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMax
// Max comparison between 2 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMax
inline detail::tvec3<U, P> associatedMax
(
const detail::tvec3<T, P>& x, U a,
const detail::tvec3<T, P>& y, U b
@ -530,7 +530,7 @@ GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMax
// Max comparison between 2 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMax
inline detail::tvec4<U, P> associatedMax
(
const detail::tvec4<T, P>& x, U a,
const detail::tvec4<T, P>& y, U b
@ -544,7 +544,7 @@ GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMax
// Max comparison between 3 variables
template<typename T, typename U>
GLM_FUNC_QUALIFIER U associatedMax
inline U associatedMax
(
T x, U a,
T y, U b,
@ -557,7 +557,7 @@ GLM_FUNC_QUALIFIER U associatedMax
// Max comparison between 3 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMax
inline detail::tvec2<U, P> associatedMax
(
const detail::tvec2<T, P>& x, const detail::tvec2<U, P>& a,
const detail::tvec2<T, P>& y, const detail::tvec2<U, P>& b,
@ -572,7 +572,7 @@ GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMax
// Max comparison between 3 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMax
inline detail::tvec3<U, P> associatedMax
(
const detail::tvec3<T, P>& x, const detail::tvec3<U, P>& a,
const detail::tvec3<T, P>& y, const detail::tvec3<U, P>& b,
@ -587,7 +587,7 @@ GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMax
// Max comparison between 3 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMax
inline detail::tvec4<U, P> associatedMax
(
const detail::tvec4<T, P>& x, const detail::tvec4<U, P>& a,
const detail::tvec4<T, P>& y, const detail::tvec4<U, P>& b,
@ -602,7 +602,7 @@ GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMax
// Max comparison between 3 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMax
inline detail::tvec2<U, P> associatedMax
(
T x, const detail::tvec2<U, P>& a,
T y, const detail::tvec2<U, P>& b,
@ -617,7 +617,7 @@ GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMax
// Max comparison between 3 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMax
inline detail::tvec3<U, P> associatedMax
(
T x, const detail::tvec3<U, P>& a,
T y, const detail::tvec3<U, P>& b,
@ -632,7 +632,7 @@ GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMax
// Max comparison between 3 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMax
inline detail::tvec4<U, P> associatedMax
(
T x, const detail::tvec4<U, P>& a,
T y, const detail::tvec4<U, P>& b,
@ -647,7 +647,7 @@ GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMax
// Max comparison between 3 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMax
inline detail::tvec2<U, P> associatedMax
(
const detail::tvec2<T, P>& x, U a,
const detail::tvec2<T, P>& y, U b,
@ -662,7 +662,7 @@ GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMax
// Max comparison between 3 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMax
inline detail::tvec3<U, P> associatedMax
(
const detail::tvec3<T, P>& x, U a,
const detail::tvec3<T, P>& y, U b,
@ -677,7 +677,7 @@ GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMax
// Max comparison between 3 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMax
inline detail::tvec4<U, P> associatedMax
(
const detail::tvec4<T, P>& x, U a,
const detail::tvec4<T, P>& y, U b,
@ -692,7 +692,7 @@ GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMax
// Max comparison between 4 variables
template<typename T, typename U>
GLM_FUNC_QUALIFIER U associatedMax
inline U associatedMax
(
T x, U a,
T y, U b,
@ -710,7 +710,7 @@ GLM_FUNC_QUALIFIER U associatedMax
// Max comparison between 4 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMax
inline detail::tvec2<U, P> associatedMax
(
const detail::tvec2<T, P>& x, const detail::tvec2<U, P>& a,
const detail::tvec2<T, P>& y, const detail::tvec2<U, P>& b,
@ -732,7 +732,7 @@ GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMax
// Max comparison between 4 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMax
inline detail::tvec3<U, P> associatedMax
(
const detail::tvec3<T, P>& x, const detail::tvec3<U, P>& a,
const detail::tvec3<T, P>& y, const detail::tvec3<U, P>& b,
@ -754,7 +754,7 @@ GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMax
// Max comparison between 4 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMax
inline detail::tvec4<U, P> associatedMax
(
const detail::tvec4<T, P>& x, const detail::tvec4<U, P>& a,
const detail::tvec4<T, P>& y, const detail::tvec4<U, P>& b,
@ -776,7 +776,7 @@ GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMax
// Max comparison between 4 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMax
inline detail::tvec2<U, P> associatedMax
(
T x, const detail::tvec2<U, P>& a,
T y, const detail::tvec2<U, P>& b,
@ -799,7 +799,7 @@ GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMax
// Max comparison between 4 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMax
inline detail::tvec3<U, P> associatedMax
(
T x, const detail::tvec3<U, P>& a,
T y, const detail::tvec3<U, P>& b,
@ -822,7 +822,7 @@ GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMax
// Max comparison between 4 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMax
inline detail::tvec4<U, P> associatedMax
(
T x, const detail::tvec4<U, P>& a,
T y, const detail::tvec4<U, P>& b,
@ -845,7 +845,7 @@ GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMax
// Max comparison between 4 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMax
inline detail::tvec2<U, P> associatedMax
(
const detail::tvec2<T, P>& x, U a,
const detail::tvec2<T, P>& y, U b,
@ -867,7 +867,7 @@ GLM_FUNC_QUALIFIER detail::tvec2<U, P> associatedMax
// Max comparison between 4 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMax
inline detail::tvec3<U, P> associatedMax
(
const detail::tvec3<T, P>& x, U a,
const detail::tvec3<T, P>& y, U b,
@ -889,7 +889,7 @@ GLM_FUNC_QUALIFIER detail::tvec3<U, P> associatedMax
// Max comparison between 4 variables
template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<U, P> associatedMax
inline detail::tvec4<U, P> associatedMax
(
const detail::tvec4<T, P>& x, U a,
const detail::tvec4<T, P>& y, U b,

94
deps/glm/gtx/bit.inl vendored
View File

@ -13,7 +13,7 @@
namespace glm
{
template <typename genIType>
GLM_FUNC_QUALIFIER genIType mask
inline genIType mask
(
genIType const & count
)
@ -25,7 +25,7 @@ namespace glm
// highestBitValue
template <typename genType>
GLM_FUNC_QUALIFIER genType highestBitValue
inline genType highestBitValue
(
genType const & value
)
@ -41,7 +41,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<int, P> highestBitValue
inline detail::tvec2<int, P> highestBitValue
(
detail::tvec2<T, P> const & value
)
@ -52,7 +52,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<int, P> highestBitValue
inline detail::tvec3<int, P> highestBitValue
(
detail::tvec3<T, P> const & value
)
@ -64,7 +64,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<int, P> highestBitValue
inline detail::tvec4<int, P> highestBitValue
(
detail::tvec4<T, P> const & value
)
@ -78,7 +78,7 @@ namespace glm
// isPowerOfTwo
template <typename genType>
GLM_FUNC_QUALIFIER bool isPowerOfTwo(genType const & Value)
inline bool isPowerOfTwo(genType const & Value)
{
//detail::If<std::numeric_limits<genType>::is_signed>::apply(abs, Value);
//return !(Value & (Value - 1));
@ -91,7 +91,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<bool, P> isPowerOfTwo
inline detail::tvec2<bool, P> isPowerOfTwo
(
detail::tvec2<T, P> const & value
)
@ -102,7 +102,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<bool, P> isPowerOfTwo
inline detail::tvec3<bool, P> isPowerOfTwo
(
detail::tvec3<T, P> const & value
)
@ -114,7 +114,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<bool, P> isPowerOfTwo
inline detail::tvec4<bool, P> isPowerOfTwo
(
detail::tvec4<T, P> const & value
)
@ -128,7 +128,7 @@ namespace glm
// powerOfTwoAbove
template <typename genType>
GLM_FUNC_QUALIFIER genType powerOfTwoAbove(genType const & value)
inline genType powerOfTwoAbove(genType const & value)
{
return isPowerOfTwo(value) ? value : highestBitValue(value) << 1;
}
@ -137,7 +137,7 @@ namespace glm
// powerOfTwoBelow
template <typename genType>
GLM_FUNC_QUALIFIER genType powerOfTwoBelow
inline genType powerOfTwoBelow
(
genType const & value
)
@ -149,7 +149,7 @@ namespace glm
// powerOfTwoNearest
template <typename genType>
GLM_FUNC_QUALIFIER genType powerOfTwoNearest
inline genType powerOfTwoNearest
(
genType const & value
)
@ -165,7 +165,7 @@ namespace glm
VECTORIZE_VEC(powerOfTwoNearest)
template <typename genType>
GLM_FUNC_QUALIFIER genType bitRevert(genType const & In)
inline genType bitRevert(genType const & In)
{
genType Out = 0;
std::size_t BitSize = sizeof(genType) * 8;
@ -178,14 +178,14 @@ namespace glm
VECTORIZE_VEC(bitRevert)
template <typename genType>
GLM_FUNC_QUALIFIER genType bitRotateRight(genType const & In, std::size_t Shift)
inline genType bitRotateRight(genType const & In, std::size_t Shift)
{
std::size_t BitSize = sizeof(genType) * 8;
return (In << Shift) | (In >> (BitSize - Shift));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> bitRotateRight
inline detail::tvec2<T, P> bitRotateRight
(
detail::tvec2<T, P> const & Value,
std::size_t Shift
@ -197,7 +197,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> bitRotateRight
inline detail::tvec3<T, P> bitRotateRight
(
detail::tvec3<T, P> const & Value,
std::size_t Shift
@ -210,7 +210,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> bitRotateRight
inline detail::tvec4<T, P> bitRotateRight
(
detail::tvec4<T, P> const & Value,
std::size_t Shift
@ -224,14 +224,14 @@ namespace glm
}
template <typename genType>
GLM_FUNC_QUALIFIER genType bitRotateLeft(genType const & In, std::size_t Shift)
inline genType bitRotateLeft(genType const & In, std::size_t Shift)
{
std::size_t BitSize = sizeof(genType) * 8;
return (In >> Shift) | (In << (BitSize - Shift));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> bitRotateLeft
inline detail::tvec2<T, P> bitRotateLeft
(
detail::tvec2<T, P> const & Value,
std::size_t Shift
@ -243,7 +243,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> bitRotateLeft
inline detail::tvec3<T, P> bitRotateLeft
(
detail::tvec3<T, P> const & Value,
std::size_t Shift
@ -256,7 +256,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> bitRotateLeft
inline detail::tvec4<T, P> bitRotateLeft
(
detail::tvec4<T, P> const & Value,
std::size_t Shift
@ -270,7 +270,7 @@ namespace glm
}
template <typename genIUType>
GLM_FUNC_QUALIFIER genIUType fillBitfieldWithOne
inline genIUType fillBitfieldWithOne
(
genIUType const & Value,
int const & FromBit,
@ -287,7 +287,7 @@ namespace glm
}
template <typename genIUType>
GLM_FUNC_QUALIFIER genIUType fillBitfieldWithZero
inline genIUType fillBitfieldWithZero
(
genIUType const & Value,
int const & FromBit,
@ -315,7 +315,7 @@ namespace glm
RET bitfieldInterleave(PARAM x, PARAM y, PARAM z, PARAM w);
template <>
GLM_FUNC_QUALIFIER glm::uint16 bitfieldInterleave(glm::uint8 x, glm::uint8 y)
inline glm::uint16 bitfieldInterleave(glm::uint8 x, glm::uint8 y)
{
glm::uint16 REG1(x);
glm::uint16 REG2(y);
@ -333,7 +333,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER glm::uint32 bitfieldInterleave(glm::uint16 x, glm::uint16 y)
inline glm::uint32 bitfieldInterleave(glm::uint16 x, glm::uint16 y)
{
glm::uint32 REG1(x);
glm::uint32 REG2(y);
@ -354,7 +354,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER glm::uint64 bitfieldInterleave(glm::uint32 x, glm::uint32 y)
inline glm::uint64 bitfieldInterleave(glm::uint32 x, glm::uint32 y)
{
glm::uint64 REG1(x);
glm::uint64 REG2(y);
@ -378,7 +378,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER glm::uint32 bitfieldInterleave(glm::uint8 x, glm::uint8 y, glm::uint8 z)
inline glm::uint32 bitfieldInterleave(glm::uint8 x, glm::uint8 y, glm::uint8 z)
{
glm::uint32 REG1(x);
glm::uint32 REG2(y);
@ -404,7 +404,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER glm::uint64 bitfieldInterleave(glm::uint16 x, glm::uint16 y, glm::uint16 z)
inline glm::uint64 bitfieldInterleave(glm::uint16 x, glm::uint16 y, glm::uint16 z)
{
glm::uint64 REG1(x);
glm::uint64 REG2(y);
@ -434,7 +434,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER glm::uint64 bitfieldInterleave(glm::uint32 x, glm::uint32 y, glm::uint32 z)
inline glm::uint64 bitfieldInterleave(glm::uint32 x, glm::uint32 y, glm::uint32 z)
{
glm::uint64 REG1(x);
glm::uint64 REG2(y);
@ -464,7 +464,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER glm::uint32 bitfieldInterleave(glm::uint8 x, glm::uint8 y, glm::uint8 z, glm::uint8 w)
inline glm::uint32 bitfieldInterleave(glm::uint8 x, glm::uint8 y, glm::uint8 z, glm::uint8 w)
{
glm::uint32 REG1(x);
glm::uint32 REG2(y);
@ -490,7 +490,7 @@ namespace glm
}
template <>
GLM_FUNC_QUALIFIER glm::uint64 bitfieldInterleave(glm::uint16 x, glm::uint16 y, glm::uint16 z, glm::uint16 w)
inline glm::uint64 bitfieldInterleave(glm::uint16 x, glm::uint16 y, glm::uint16 z, glm::uint16 w)
{
glm::uint64 REG1(x);
glm::uint64 REG2(y);
@ -521,7 +521,7 @@ namespace glm
}
}//namespace detail
GLM_FUNC_QUALIFIER int16 bitfieldInterleave(int8 x, int8 y)
inline int16 bitfieldInterleave(int8 x, int8 y)
{
union sign8
{
@ -542,12 +542,12 @@ namespace glm
return result.i;
}
GLM_FUNC_QUALIFIER uint16 bitfieldInterleave(uint8 x, uint8 y)
inline uint16 bitfieldInterleave(uint8 x, uint8 y)
{
return detail::bitfieldInterleave<uint8, uint16>(x, y);
}
GLM_FUNC_QUALIFIER int32 bitfieldInterleave(int16 x, int16 y)
inline int32 bitfieldInterleave(int16 x, int16 y)
{
union sign16
{
@ -568,12 +568,12 @@ namespace glm
return result.i;
}
GLM_FUNC_QUALIFIER uint32 bitfieldInterleave(uint16 x, uint16 y)
inline uint32 bitfieldInterleave(uint16 x, uint16 y)
{
return detail::bitfieldInterleave<uint16, uint32>(x, y);
}
GLM_FUNC_QUALIFIER int64 bitfieldInterleave(int32 x, int32 y)
inline int64 bitfieldInterleave(int32 x, int32 y)
{
union sign32
{
@ -594,12 +594,12 @@ namespace glm
return result.i;
}
GLM_FUNC_QUALIFIER uint64 bitfieldInterleave(uint32 x, uint32 y)
inline uint64 bitfieldInterleave(uint32 x, uint32 y)
{
return detail::bitfieldInterleave<uint32, uint64>(x, y);
}
GLM_FUNC_QUALIFIER int32 bitfieldInterleave(int8 x, int8 y, int8 z)
inline int32 bitfieldInterleave(int8 x, int8 y, int8 z)
{
union sign8
{
@ -621,12 +621,12 @@ namespace glm
return result.i;
}
GLM_FUNC_QUALIFIER uint32 bitfieldInterleave(uint8 x, uint8 y, uint8 z)
inline uint32 bitfieldInterleave(uint8 x, uint8 y, uint8 z)
{
return detail::bitfieldInterleave<uint8, uint32>(x, y, z);
}
GLM_FUNC_QUALIFIER int64 bitfieldInterleave(int16 x, int16 y, int16 z)
inline int64 bitfieldInterleave(int16 x, int16 y, int16 z)
{
union sign16
{
@ -648,12 +648,12 @@ namespace glm
return result.i;
}
GLM_FUNC_QUALIFIER uint64 bitfieldInterleave(uint16 x, uint16 y, uint16 z)
inline uint64 bitfieldInterleave(uint16 x, uint16 y, uint16 z)
{
return detail::bitfieldInterleave<uint32, uint64>(x, y, z);
}
GLM_FUNC_QUALIFIER int64 bitfieldInterleave(int32 x, int32 y, int32 z)
inline int64 bitfieldInterleave(int32 x, int32 y, int32 z)
{
union sign16
{
@ -675,12 +675,12 @@ namespace glm
return result.i;
}
GLM_FUNC_QUALIFIER uint64 bitfieldInterleave(uint32 x, uint32 y, uint32 z)
inline uint64 bitfieldInterleave(uint32 x, uint32 y, uint32 z)
{
return detail::bitfieldInterleave<uint32, uint64>(x, y, z);
}
GLM_FUNC_QUALIFIER int32 bitfieldInterleave(int8 x, int8 y, int8 z, int8 w)
inline int32 bitfieldInterleave(int8 x, int8 y, int8 z, int8 w)
{
union sign8
{
@ -703,12 +703,12 @@ namespace glm
return result.i;
}
GLM_FUNC_QUALIFIER uint32 bitfieldInterleave(uint8 x, uint8 y, uint8 z, uint8 w)
inline uint32 bitfieldInterleave(uint8 x, uint8 y, uint8 z, uint8 w)
{
return detail::bitfieldInterleave<uint8, uint32>(x, y, z, w);
}
GLM_FUNC_QUALIFIER int64 bitfieldInterleave(int16 x, int16 y, int16 z, int16 w)
inline int64 bitfieldInterleave(int16 x, int16 y, int16 z, int16 w)
{
union sign16
{
@ -731,7 +731,7 @@ namespace glm
return result.i;
}
GLM_FUNC_QUALIFIER uint64 bitfieldInterleave(uint16 x, uint16 y, uint16 z, uint16 w)
inline uint64 bitfieldInterleave(uint16 x, uint16 y, uint16 z, uint16 w)
{
return detail::bitfieldInterleave<uint16, uint64>(x, y, z, w);
}

View File

@ -13,7 +13,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> closestPointOnLine
inline detail::tvec3<T, P> closestPointOnLine
(
detail::tvec3<T, P> const & point,
detail::tvec3<T, P> const & a,

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> rgbColor(const detail::tvec3<T, P>& hsvColor)
inline detail::tvec3<T, P> rgbColor(const detail::tvec3<T, P>& hsvColor)
{
detail::tvec3<T, P> hsv = hsvColor;
detail::tvec3<T, P> rgbColor;
@ -67,7 +67,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> hsvColor(const detail::tvec3<T, P>& rgbColor)
inline detail::tvec3<T, P> hsvColor(const detail::tvec3<T, P>& rgbColor)
{
detail::tvec3<T, P> hsv = rgbColor;
float Min = min(min(rgbColor.r, rgbColor.g), rgbColor.b);
@ -107,7 +107,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> saturation(const T s)
inline detail::tmat4x4<T, P> saturation(const T s)
{
detail::tvec3<T, P> rgbw = detail::tvec3<T, P>(T(0.2126), T(0.7152), T(0.0722));
@ -129,19 +129,19 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> saturation(const T s, const detail::tvec3<T, P>& color)
inline detail::tvec3<T, P> saturation(const T s, const detail::tvec3<T, P>& color)
{
return detail::tvec3<T, P>(saturation(s) * detail::tvec4<T, P>(color, T(0)));
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> saturation(const T s, const detail::tvec4<T, P>& color)
inline detail::tvec4<T, P> saturation(const T s, const detail::tvec4<T, P>& color)
{
return saturation(s) * color;
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T luminosity(const detail::tvec3<T, P>& color)
inline T luminosity(const detail::tvec3<T, P>& color)
{
const detail::tvec3<T, P> tmp = detail::tvec3<T, P>(0.33, 0.59, 0.11);
return dot(color, tmp);

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> rgb2YCoCg
inline detail::tvec3<T, P> rgb2YCoCg
(
detail::tvec3<T, P> const & rgbColor
)
@ -23,7 +23,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> rgb2YCoCgR
inline detail::tvec3<T, P> rgb2YCoCgR
(
detail::tvec3<T, P> const & rgbColor
)
@ -36,7 +36,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> YCoCg2rgb
inline detail::tvec3<T, P> YCoCg2rgb
(
detail::tvec3<T, P> const & YCoCgColor
)
@ -49,7 +49,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> YCoCgR2rgb
inline detail::tvec3<T, P> YCoCgR2rgb
(
detail::tvec3<T, P> const & YCoCgRColor
)

View File

@ -61,26 +61,26 @@ namespace glm
/// @addtogroup gtx_compatibility
/// @{
template <typename T> GLM_FUNC_QUALIFIER T lerp(T x, T y, T a){return mix(x, y, a);} //!< \brief Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec2<T, P> lerp(const detail::tvec2<T, P>& x, const detail::tvec2<T, P>& y, T a){return mix(x, y, a);} //!< \brief Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
template <typename T> inline T lerp(T x, T y, T a){return mix(x, y, a);} //!< \brief Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
template <typename T, precision P> inline detail::tvec2<T, P> lerp(const detail::tvec2<T, P>& x, const detail::tvec2<T, P>& y, T a){return mix(x, y, a);} //!< \brief Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec3<T, P> lerp(const detail::tvec3<T, P>& x, const detail::tvec3<T, P>& y, T a){return mix(x, y, a);} //!< \brief Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec4<T, P> lerp(const detail::tvec4<T, P>& x, const detail::tvec4<T, P>& y, T a){return mix(x, y, a);} //!< \brief Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec2<T, P> lerp(const detail::tvec2<T, P>& x, const detail::tvec2<T, P>& y, const detail::tvec2<T, P>& a){return mix(x, y, a);} //!< \brief Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec3<T, P> lerp(const detail::tvec3<T, P>& x, const detail::tvec3<T, P>& y, const detail::tvec3<T, P>& a){return mix(x, y, a);} //!< \brief Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec4<T, P> lerp(const detail::tvec4<T, P>& x, const detail::tvec4<T, P>& y, const detail::tvec4<T, P>& a){return mix(x, y, a);} //!< \brief Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
template <typename T, precision P> inline detail::tvec3<T, P> lerp(const detail::tvec3<T, P>& x, const detail::tvec3<T, P>& y, T a){return mix(x, y, a);} //!< \brief Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
template <typename T, precision P> inline detail::tvec4<T, P> lerp(const detail::tvec4<T, P>& x, const detail::tvec4<T, P>& y, T a){return mix(x, y, a);} //!< \brief Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
template <typename T, precision P> inline detail::tvec2<T, P> lerp(const detail::tvec2<T, P>& x, const detail::tvec2<T, P>& y, const detail::tvec2<T, P>& a){return mix(x, y, a);} //!< \brief Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
template <typename T, precision P> inline detail::tvec3<T, P> lerp(const detail::tvec3<T, P>& x, const detail::tvec3<T, P>& y, const detail::tvec3<T, P>& a){return mix(x, y, a);} //!< \brief Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
template <typename T, precision P> inline detail::tvec4<T, P> lerp(const detail::tvec4<T, P>& x, const detail::tvec4<T, P>& y, const detail::tvec4<T, P>& a){return mix(x, y, a);} //!< \brief Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
template <typename T, precision P> GLM_FUNC_QUALIFIER T slerp(detail::tquat<T, P> const & x, detail::tquat<T, P> const & y, T const & a){return mix(x, y, a);} //!< \brief Returns the slurp interpolation between two quaternions.
template <typename T, precision P> inline T slerp(detail::tquat<T, P> const & x, detail::tquat<T, P> const & y, T const & a){return mix(x, y, a);} //!< \brief Returns the slurp interpolation between two quaternions.
template <typename T, precision P> GLM_FUNC_QUALIFIER T saturate(T x){return clamp(x, T(0), T(1));} //!< \brief Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec2<T, P> saturate(const detail::tvec2<T, P>& x){return clamp(x, T(0), T(1));} //!< \brief Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec3<T, P> saturate(const detail::tvec3<T, P>& x){return clamp(x, T(0), T(1));} //!< \brief Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec4<T, P> saturate(const detail::tvec4<T, P>& x){return clamp(x, T(0), T(1));} //!< \brief Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
template <typename T, precision P> inline T saturate(T x){return clamp(x, T(0), T(1));} //!< \brief Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
template <typename T, precision P> inline detail::tvec2<T, P> saturate(const detail::tvec2<T, P>& x){return clamp(x, T(0), T(1));} //!< \brief Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
template <typename T, precision P> inline detail::tvec3<T, P> saturate(const detail::tvec3<T, P>& x){return clamp(x, T(0), T(1));} //!< \brief Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
template <typename T, precision P> inline detail::tvec4<T, P> saturate(const detail::tvec4<T, P>& x){return clamp(x, T(0), T(1));} //!< \brief Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
template <typename T, precision P> GLM_FUNC_QUALIFIER T atan2(T x, T y){return atan(x, y);} //!< \brief Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec2<T, P> atan2(const detail::tvec2<T, P>& x, const detail::tvec2<T, P>& y){return atan(x, y);} //!< \brief Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec3<T, P> atan2(const detail::tvec3<T, P>& x, const detail::tvec3<T, P>& y){return atan(x, y);} //!< \brief Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec4<T, P> atan2(const detail::tvec4<T, P>& x, const detail::tvec4<T, P>& y){return atan(x, y);} //!< \brief Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
template <typename T, precision P> inline T atan2(T x, T y){return atan(x, y);} //!< \brief Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
template <typename T, precision P> inline detail::tvec2<T, P> atan2(const detail::tvec2<T, P>& x, const detail::tvec2<T, P>& y){return atan(x, y);} //!< \brief Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
template <typename T, precision P> inline detail::tvec3<T, P> atan2(const detail::tvec3<T, P>& x, const detail::tvec3<T, P>& y){return atan(x, y);} //!< \brief Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
template <typename T, precision P> inline detail::tvec4<T, P> atan2(const detail::tvec4<T, P>& x, const detail::tvec4<T, P>& y){return atan(x, y);} //!< \brief Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
template <typename genType> bool isfinite(genType const & x); //!< \brief Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)
template <typename T, precision P> detail::tvec2<bool, P> isfinite(const detail::tvec2<T, P>& x); //!< \brief Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)

View File

@ -11,7 +11,7 @@ namespace glm
{
// isfinite
template <typename genType>
GLM_FUNC_QUALIFIER bool isfinite(
inline bool isfinite(
genType const & x)
{
# if(GLM_LANG & GLM_LANG_CXX11_FLAG)
@ -26,7 +26,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<bool, P> isfinite(
inline detail::tvec2<bool, P> isfinite(
detail::tvec2<T, P> const & x)
{
return detail::tvec2<bool, P>(
@ -35,7 +35,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<bool, P> isfinite(
inline detail::tvec3<bool, P> isfinite(
detail::tvec3<T, P> const & x)
{
return detail::tvec3<bool, P>(
@ -45,7 +45,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<bool, P> isfinite(
inline detail::tvec4<bool, P> isfinite(
detail::tvec4<T, P> const & x)
{
return detail::tvec4<bool, P>(

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER T compAdd(vecType<T, P> const & v)
inline T compAdd(vecType<T, P> const & v)
{
T result(0);
for(length_t i = 0; i < v.length(); ++i)
@ -19,7 +19,7 @@ namespace glm
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER T compMul(vecType<T, P> const & v)
inline T compMul(vecType<T, P> const & v)
{
T result(1);
for(length_t i = 0; i < v.length(); ++i)
@ -28,7 +28,7 @@ namespace glm
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER T compMin(vecType<T, P> const & v)
inline T compMin(vecType<T, P> const & v)
{
T result(v[0]);
for(length_t i = 1; i < v.length(); ++i)
@ -37,7 +37,7 @@ namespace glm
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER T compMax(vecType<T, P> const & v)
inline T compMax(vecType<T, P> const & v)
{
T result(v[0]);
for(length_t i = 1; i < v.length(); ++i)

View File

@ -33,19 +33,19 @@ namespace glm{
namespace detail
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER int tdualquat<T, P>::length() const
inline int tdualquat<T, P>::length() const
{
return 8;
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tdualquat<T, P>::tdualquat() :
inline tdualquat<T, P>::tdualquat() :
real(tquat<T, P>()),
dual(tquat<T, P>(T(0), T(0), T(0), T(0)))
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tdualquat<T, P>::tdualquat
inline tdualquat<T, P>::tdualquat
(
tquat<T, P> const & r
) :
@ -54,7 +54,7 @@ namespace detail
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tdualquat<T, P>::tdualquat
inline tdualquat<T, P>::tdualquat
(
tquat<T, P> const & r,
tquat<T, P> const & d
@ -64,7 +64,7 @@ namespace detail
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tdualquat<T, P>::tdualquat
inline tdualquat<T, P>::tdualquat
(
tquat<T, P> const & q,
tvec3<T, P> const& p
@ -80,7 +80,7 @@ namespace detail
//////////////////////////////////////////////////////////////
// tdualquat conversions
template <typename T, precision P>
GLM_FUNC_QUALIFIER tdualquat<T, P>::tdualquat
inline tdualquat<T, P>::tdualquat
(
tmat2x4<T, P> const & m
)
@ -89,7 +89,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tdualquat<T, P>::tdualquat
inline tdualquat<T, P>::tdualquat
(
tmat3x4<T, P> const & m
)
@ -101,14 +101,14 @@ namespace detail
// tdualquat<T, P> accesses
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tdualquat<T, P>::part_type & tdualquat<T, P>::operator [] (int i)
inline typename tdualquat<T, P>::part_type & tdualquat<T, P>::operator [] (int i)
{
assert(i >= 0 && i < this->length());
return (&real)[i];
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER typename tdualquat<T, P>::part_type const & tdualquat<T, P>::operator [] (int i) const
inline typename tdualquat<T, P>::part_type const & tdualquat<T, P>::operator [] (int i) const
{
assert(i >= 0 && i < this->length());
return (&real)[i];
@ -118,7 +118,7 @@ namespace detail
// tdualquat<valType> operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER tdualquat<T, P> & tdualquat<T, P>::operator *=
inline tdualquat<T, P> & tdualquat<T, P>::operator *=
(
T const & s
)
@ -129,7 +129,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tdualquat<T, P> & tdualquat<T, P>::operator /=
inline tdualquat<T, P> & tdualquat<T, P>::operator /=
(
T const & s
)
@ -143,7 +143,7 @@ namespace detail
// tquat<valType> external operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tdualquat<T, P> operator-
inline detail::tdualquat<T, P> operator-
(
detail::tdualquat<T, P> const & q
)
@ -152,7 +152,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tdualquat<T, P> operator+
inline detail::tdualquat<T, P> operator+
(
detail::tdualquat<T, P> const & q,
detail::tdualquat<T, P> const & p
@ -162,7 +162,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tdualquat<T, P> operator*
inline detail::tdualquat<T, P> operator*
(
detail::tdualquat<T, P> const & p,
detail::tdualquat<T, P> const & o
@ -173,7 +173,7 @@ namespace detail
// Transformation
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> operator*
inline detail::tvec3<T, P> operator*
(
detail::tdualquat<T, P> const & q,
detail::tvec3<T, P> const & v
@ -185,7 +185,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> operator*
inline detail::tvec3<T, P> operator*
(
detail::tvec3<T, P> const & v,
detail::tdualquat<T, P> const & q
@ -195,7 +195,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> operator*
inline detail::tvec4<T, P> operator*
(
detail::tdualquat<T, P> const & q,
detail::tvec4<T, P> const & v
@ -205,7 +205,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> operator*
inline detail::tvec4<T, P> operator*
(
detail::tvec4<T, P> const & v,
detail::tdualquat<T, P> const & q
@ -215,7 +215,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tdualquat<T, P> operator*
inline detail::tdualquat<T, P> operator*
(
detail::tdualquat<T, P> const & q,
T const & s
@ -225,7 +225,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tdualquat<T, P> operator*
inline detail::tdualquat<T, P> operator*
(
T const & s,
detail::tdualquat<T, P> const & q
@ -235,7 +235,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tdualquat<T, P> operator/
inline detail::tdualquat<T, P> operator/
(
detail::tdualquat<T, P> const & q,
T const & s
@ -247,7 +247,7 @@ namespace detail
//////////////////////////////////////
// Boolean operators
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator==
inline bool operator==
(
detail::tdualquat<T, P> const & q1,
detail::tdualquat<T, P> const & q2
@ -257,7 +257,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool operator!=
inline bool operator!=
(
detail::tdualquat<T, P> const & q1,
detail::tdualquat<T, P> const & q2
@ -269,7 +269,7 @@ namespace detail
////////////////////////////////////////////////////////
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tdualquat<T, P> normalize
inline detail::tdualquat<T, P> normalize
(
detail::tdualquat<T, P> const & q
)
@ -278,7 +278,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tdualquat<T, P> lerp
inline detail::tdualquat<T, P> lerp
(
detail::tdualquat<T, P> const & x,
detail::tdualquat<T, P> const & y,
@ -295,7 +295,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tdualquat<T, P> inverse
inline detail::tdualquat<T, P> inverse
(
detail::tdualquat<T, P> const & q
)
@ -306,7 +306,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat2x4<T, P> mat2x4_cast
inline detail::tmat2x4<T, P> mat2x4_cast
(
detail::tdualquat<T, P> const & x
)
@ -315,7 +315,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x4<T, P> mat3x4_cast
inline detail::tmat3x4<T, P> mat3x4_cast
(
detail::tdualquat<T, P> const & x
)
@ -354,7 +354,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tdualquat<T, P> dualquat_cast
inline detail::tdualquat<T, P> dualquat_cast
(
detail::tmat2x4<T, P> const & x
)
@ -365,7 +365,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tdualquat<T, P> dualquat_cast
inline detail::tdualquat<T, P> dualquat_cast
(
detail::tmat3x4<T, P> const & x
)

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, defaultp> eulerAngleX
inline detail::tmat4x4<T, defaultp> eulerAngleX
(
T const & angleX
)
@ -26,7 +26,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, defaultp> eulerAngleY
inline detail::tmat4x4<T, defaultp> eulerAngleY
(
T const & angleY
)
@ -42,7 +42,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, defaultp> eulerAngleZ
inline detail::tmat4x4<T, defaultp> eulerAngleZ
(
T const & angleZ
)
@ -58,7 +58,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, defaultp> eulerAngleXY
inline detail::tmat4x4<T, defaultp> eulerAngleXY
(
T const & angleX,
T const & angleY
@ -77,7 +77,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, defaultp> eulerAngleYX
inline detail::tmat4x4<T, defaultp> eulerAngleYX
(
T const & angleY,
T const & angleX
@ -96,7 +96,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, defaultp> eulerAngleXZ
inline detail::tmat4x4<T, defaultp> eulerAngleXZ
(
T const & angleX,
T const & angleZ
@ -106,7 +106,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, defaultp> eulerAngleZX
inline detail::tmat4x4<T, defaultp> eulerAngleZX
(
T const & angleZ,
T const & angleX
@ -116,7 +116,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, defaultp> eulerAngleYZ
inline detail::tmat4x4<T, defaultp> eulerAngleYZ
(
T const & angleY,
T const & angleZ
@ -126,7 +126,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, defaultp> eulerAngleZY
inline detail::tmat4x4<T, defaultp> eulerAngleZY
(
T const & angleZ,
T const & angleY
@ -136,7 +136,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, defaultp> eulerAngleYXZ
inline detail::tmat4x4<T, defaultp> eulerAngleYXZ
(
T const & yaw,
T const & pitch,
@ -171,7 +171,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, defaultp> yawPitchRoll
inline detail::tmat4x4<T, defaultp> yawPitchRoll
(
T const & yaw,
T const & pitch,
@ -206,7 +206,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat2x2<T, defaultp> orientate2
inline detail::tmat2x2<T, defaultp> orientate2
(
T const & angle
)
@ -223,7 +223,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, defaultp> orientate3
inline detail::tmat3x3<T, defaultp> orientate3
(
T const & angle
)
@ -245,7 +245,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> orientate3
inline detail::tmat3x3<T, P> orientate3
(
detail::tvec3<T, P> const & angles
)
@ -254,7 +254,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> orientate4
inline detail::tmat4x4<T, P> orientate4
(
detail::tvec3<T, P> const & angles
)

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename genType>
GLM_FUNC_QUALIFIER genType extend
inline genType extend
(
genType const & Origin,
genType const & Source,
@ -21,7 +21,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> extend
inline detail::tvec2<T, P> extend
(
detail::tvec2<T, P> const & Origin,
detail::tvec2<T, P> const & Source,
@ -32,7 +32,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> extend
inline detail::tvec3<T, P> extend
(
detail::tvec3<T, P> const & Origin,
detail::tvec3<T, P> const & Source,
@ -43,7 +43,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> extend
inline detail::tvec4<T, P> extend
(
detail::tvec4<T, P> const & Origin,
detail::tvec4<T, P> const & Source,

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T>
GLM_FUNC_QUALIFIER T min(
inline T min(
T const & x,
T const & y,
T const & z)
@ -19,7 +19,7 @@ namespace glm
}
template <typename T, template <typename> class C>
GLM_FUNC_QUALIFIER C<T> min
inline C<T> min
(
C<T> const & x,
typename C<T>::T const & y,
@ -30,7 +30,7 @@ namespace glm
}
template <typename T, template <typename> class C>
GLM_FUNC_QUALIFIER C<T> min
inline C<T> min
(
C<T> const & x,
C<T> const & y,
@ -41,7 +41,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER T min
inline T min
(
T const & x,
T const & y,
@ -53,7 +53,7 @@ namespace glm
}
template <typename T, template <typename> class C>
GLM_FUNC_QUALIFIER C<T> min
inline C<T> min
(
C<T> const & x,
typename C<T>::T const & y,
@ -65,7 +65,7 @@ namespace glm
}
template <typename T, template <typename> class C>
GLM_FUNC_QUALIFIER C<T> min
inline C<T> min
(
C<T> const & x,
C<T> const & y,
@ -77,7 +77,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER T max(
inline T max(
T const & x,
T const & y,
T const & z)
@ -86,7 +86,7 @@ namespace glm
}
template <typename T, template <typename> class C>
GLM_FUNC_QUALIFIER C<T> max
inline C<T> max
(
C<T> const & x,
typename C<T>::T const & y,
@ -97,7 +97,7 @@ namespace glm
}
template <typename T, template <typename> class C>
GLM_FUNC_QUALIFIER C<T> max
inline C<T> max
(
C<T> const & x,
C<T> const & y,
@ -108,7 +108,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER T max
inline T max
(
T const & x,
T const & y,
@ -120,7 +120,7 @@ namespace glm
}
template <typename T, template <typename> class C>
GLM_FUNC_QUALIFIER C<T> max
inline C<T> max
(
C<T> const & x,
typename C<T>::T const & y,
@ -132,7 +132,7 @@ namespace glm
}
template <typename T, template <typename> class C>
GLM_FUNC_QUALIFIER C<T> max
inline C<T> max
(
C<T> const & x,
C<T> const & y,

View File

@ -11,7 +11,7 @@ namespace glm
{
// fastPow:
template <typename genType>
GLM_FUNC_QUALIFIER genType fastPow(genType const & x, genType const & y)
inline genType fastPow(genType const & x, genType const & y)
{
return exp(y * log(x));
}
@ -19,7 +19,7 @@ namespace glm
VECTORIZE_VEC_VEC(fastPow)
template <typename T>
GLM_FUNC_QUALIFIER T fastPow(const T x, int y)
inline T fastPow(const T x, int y)
{
T f = static_cast<T>(1);
for(int i = 0; i < y; ++i)
@ -28,7 +28,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> fastPow(
inline detail::tvec2<T, P> fastPow(
const detail::tvec2<T, P>& x,
const detail::tvec2<int, P>& y)
{
@ -38,7 +38,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> fastPow(
inline detail::tvec3<T, P> fastPow(
const detail::tvec3<T, P>& x,
const detail::tvec3<int, P>& y)
{
@ -49,7 +49,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> fastPow(
inline detail::tvec4<T, P> fastPow(
const detail::tvec4<T, P>& x,
const detail::tvec4<int, P>& y)
{
@ -63,7 +63,7 @@ namespace glm
// fastExp
// Note: This function provides accurate results only for value between -1 and 1, else avoid it.
template <typename T>
GLM_FUNC_QUALIFIER T fastExp(const T x)
inline T fastExp(const T x)
{
// This has a better looking and same performance in release mode than the following code. However, in debug mode it's slower.
// return 1.0f + x * (1.0f + x * 0.5f * (1.0f + x * 0.3333333333f * (1.0f + x * 0.25 * (1.0f + x * 0.2f))));
@ -74,7 +74,7 @@ namespace glm
return T(1) + x + (x2 * T(0.5)) + (x3 * T(0.1666666667)) + (x4 * T(0.041666667)) + (x5 * T(0.008333333333));
}
/* // Try to handle all values of float... but often shower than std::exp, glm::floor and the loop kill the performance
GLM_FUNC_QUALIFIER float fastExp(float x)
inline float fastExp(float x)
{
const float e = 2.718281828f;
const float IntegerPart = floor(x);
@ -92,7 +92,7 @@ namespace glm
}
// Increase accuracy on number bigger that 1 and smaller than -1 but it's not enough for high and negative numbers
GLM_FUNC_QUALIFIER float fastExp(float x)
inline float fastExp(float x)
{
// This has a better looking and same performance in release mode than the following code. However, in debug mode it's slower.
// return 1.0f + x * (1.0f + x * 0.5f * (1.0f + x * 0.3333333333f * (1.0f + x * 0.25 * (1.0f + x * 0.2f))));
@ -111,13 +111,13 @@ namespace glm
// fastLog
template <typename genType>
GLM_FUNC_QUALIFIER genType fastLog(genType const & x)
inline genType fastLog(genType const & x)
{
return std::log(x);
}
/* Slower than the VC7.1 function...
GLM_FUNC_QUALIFIER float fastLog(float x)
inline float fastLog(float x)
{
float y1 = (x - 1.0f) / (x + 1.0f);
float y2 = y1 * y1;
@ -129,7 +129,7 @@ namespace glm
//fastExp2, ln2 = 0.69314718055994530941723212145818f
template <typename genType>
GLM_FUNC_QUALIFIER genType fastExp2(genType const & x)
inline genType fastExp2(genType const & x)
{
return fastExp(0.69314718055994530941723212145818f * x);
}
@ -138,7 +138,7 @@ namespace glm
// fastLog2, ln2 = 0.69314718055994530941723212145818f
template <typename genType>
GLM_FUNC_QUALIFIER genType fastLog2(genType const & x)
inline genType fastLog2(genType const & x)
{
return fastLog(x) / 0.69314718055994530941723212145818f;
}

View File

@ -11,7 +11,7 @@ namespace glm
{
// fastSqrt
template <typename genType>
GLM_FUNC_QUALIFIER genType fastSqrt
inline genType fastSqrt
(
genType const & x
)
@ -23,19 +23,19 @@ namespace glm
// fastInversesqrt
template <>
GLM_FUNC_QUALIFIER float fastInverseSqrt<float>(float const & x)
inline float fastInverseSqrt<float>(float const & x)
{
return detail::compute_inversesqrt<detail::tvec1, float, lowp>::call(detail::tvec1<float, lowp>(x)).x;
}
template <>
GLM_FUNC_QUALIFIER double fastInverseSqrt<double>(double const & x)
inline double fastInverseSqrt<double>(double const & x)
{
return detail::compute_inversesqrt<detail::tvec1, double, lowp>::call(detail::tvec1<double, lowp>(x)).x;
}
template <template <class, precision> class vecType, typename T, precision P>
GLM_FUNC_QUALIFIER vecType<T, P> fastInverseSqrt
inline vecType<T, P> fastInverseSqrt
(
vecType<T, P> const & x
)
@ -47,7 +47,7 @@ namespace glm
// fastLength
template <typename genType>
GLM_FUNC_QUALIFIER genType fastLength
inline genType fastLength
(
genType const & x
)
@ -56,7 +56,7 @@ namespace glm
}
template <typename valType, precision P>
GLM_FUNC_QUALIFIER valType fastLength
inline valType fastLength
(
detail::tvec2<valType, P> const & x
)
@ -66,7 +66,7 @@ namespace glm
}
template <typename valType, precision P>
GLM_FUNC_QUALIFIER valType fastLength
inline valType fastLength
(
detail::tvec3<valType, P> const & x
)
@ -76,7 +76,7 @@ namespace glm
}
template <typename valType, precision P>
GLM_FUNC_QUALIFIER valType fastLength
inline valType fastLength
(
detail::tvec4<valType, P> const & x
)
@ -87,7 +87,7 @@ namespace glm
// fastDistance
template <typename genType>
GLM_FUNC_QUALIFIER genType fastDistance
inline genType fastDistance
(
genType const & x,
genType const & y
@ -98,7 +98,7 @@ namespace glm
// fastNormalize
template <typename genType>
GLM_FUNC_QUALIFIER genType fastNormalize
inline genType fastNormalize
(
genType const & x
)
@ -107,7 +107,7 @@ namespace glm
}
template <typename valType, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<valType, P> fastNormalize
inline detail::tvec2<valType, P> fastNormalize
(
detail::tvec2<valType, P> const & x
)
@ -117,7 +117,7 @@ namespace glm
}
template <typename valType, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<valType, P> fastNormalize
inline detail::tvec3<valType, P> fastNormalize
(
detail::tvec3<valType, P> const & x
)
@ -127,7 +127,7 @@ namespace glm
}
template <typename valType, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<valType, P> fastNormalize
inline detail::tvec4<valType, P> fastNormalize
(
detail::tvec4<valType, P> const & x
)

View File

@ -11,7 +11,7 @@ namespace glm
{
// sin
template <typename T>
GLM_FUNC_QUALIFIER T fastSin(T const & x)
inline T fastSin(T const & x)
{
return x - ((x * x * x) / T(6)) + ((x * x * x * x * x) / T(120)) - ((x * x * x * x * x * x * x) / T(5040));
}
@ -20,7 +20,7 @@ namespace glm
// cos
template <typename T>
GLM_FUNC_QUALIFIER T fastCos(T const & x)
inline T fastCos(T const & x)
{
return T(1) - (x * x * T(0.5)) + (x * x * x * x * T(0.041666666666)) - (x * x * x * x * x * x * T(0.00138888888888));
}
@ -29,7 +29,7 @@ namespace glm
// tan
template <typename T>
GLM_FUNC_QUALIFIER T fastTan(T const & x)
inline T fastTan(T const & x)
{
return x + (x * x * x * T(0.3333333333)) + (x * x * x * x * x * T(0.1333333333333)) + (x * x * x * x * x * x * x * T(0.0539682539));
}
@ -38,7 +38,7 @@ namespace glm
// asin
template <typename T>
GLM_FUNC_QUALIFIER T fastAsin(T const & x)
inline T fastAsin(T const & x)
{
return x + (x * x * x * T(0.166666667)) + (x * x * x * x * x * T(0.075)) + (x * x * x * x * x * x * x * T(0.0446428571)) + (x * x * x * x * x * x * x * x * x * T(0.0303819444));// + (x * x * x * x * x * x * x * x * x * x * x * T(0.022372159));
}
@ -47,7 +47,7 @@ namespace glm
// acos
template <typename T>
GLM_FUNC_QUALIFIER T fastAcos(T const & x)
inline T fastAcos(T const & x)
{
return T(1.5707963267948966192313216916398) - fastAsin(x); //(PI / 2)
}
@ -56,7 +56,7 @@ namespace glm
// atan
template <typename T>
GLM_FUNC_QUALIFIER T fastAtan(T const & y, T const & x)
inline T fastAtan(T const & y, T const & x)
{
T sgn = sign(y) * sign(x);
return abs(fastAtan(y / x)) * sgn;
@ -65,7 +65,7 @@ namespace glm
VECTORIZE_VEC_VEC(fastAtan)
template <typename T>
GLM_FUNC_QUALIFIER T fastAtan(T const & x)
inline T fastAtan(T const & x)
{
return x - (x * x * x * T(0.333333333333)) + (x * x * x * x * x * T(0.2)) - (x * x * x * x * x * x * x * T(0.1428571429)) + (x * x * x * x * x * x * x * x * x * T(0.111111111111)) - (x * x * x * x * x * x * x * x * x * x * x * T(0.0909090909));
}

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER T radialGradient
inline T radialGradient
(
detail::tvec2<T, P> const & Center,
T const & Radius,
@ -30,7 +30,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T linearGradient
inline T linearGradient
(
detail::tvec2<T, P> const & Point0,
detail::tvec2<T, P> const & Point1,

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool rightHanded
inline bool rightHanded
(
detail::tvec3<T, P> const & tangent,
detail::tvec3<T, P> const & binormal,
@ -21,7 +21,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER bool leftHanded
inline bool leftHanded
(
detail::tvec3<T, P> const & tangent,
detail::tvec3<T, P> const & binormal,

View File

@ -1,116 +0,0 @@
///////////////////////////////////////////////////////////////////////////////////
/// OpenGL Mathematics (glm.g-truc.net)
///
/// Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net)
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
/// THE SOFTWARE.
///
/// @ref gtx_inertia
/// @file glm/gtx/inertia.hpp
/// @date 2006-04-21 / 2011-06-07
/// @author Christophe Riccio
///
/// @see core (dependence)
/// @see gtx_extented_min_max (dependence)
///
/// @defgroup gtx_inertia GLM_GTX_inertia
/// @ingroup gtx
///
/// @brief Create inertia matrices
///
/// <glm/gtx/inertia.hpp> need to be included to use these functionalities.
///////////////////////////////////////////////////////////////////////////////////
#ifndef GLM_GTX_inertia
#define GLM_GTX_inertia
// Dependency:
#include "../glm.hpp"
#if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
# pragma message("GLM: GLM_GTX_inertia extension included")
#endif
namespace glm
{
/*
/// @addtogroup gtx_inertia
/// @{
//! Build an inertia matrix for a box.
//! From GLM_GTX_inertia extension.
template <typename T, precision P>
detail::tmat3x3<T, P> boxInertia3(
T const & Mass,
detail::tvec3<T, P> const & Scale);
//! Build an inertia matrix for a box.
//! From GLM_GTX_inertia extension.
template <typename T, precision P>
detail::tmat4x4<T, P> boxInertia4(
T const & Mass,
detail::tvec3<T, P> const & Scale);
//! Build an inertia matrix for a disk.
//! From GLM_GTX_inertia extension.
template <typename T, precision P>
detail::tmat3x3<T, P> diskInertia3(
T const & Mass,
T const & Radius);
//! Build an inertia matrix for a disk.
//! From GLM_GTX_inertia extension.
template <typename T, precision P>
detail::tmat4x4<T, P> diskInertia4(
T const & Mass,
T const & Radius);
//! Build an inertia matrix for a ball.
//! From GLM_GTX_inertia extension.
template <typename T, precision P>
detail::tmat3x3<T, P> ballInertia3(
T const & Mass,
T const & Radius);
//! Build an inertia matrix for a ball.
//! From GLM_GTX_inertia extension.
template <typename T, precision P>
detail::tmat4x4<T, P> ballInertia4(
T const & Mass,
T const & Radius);
//! Build an inertia matrix for a sphere.
//! From GLM_GTX_inertia extension.
template <typename T, precision P>
detail::tmat3x3<T, P> sphereInertia3(
T const & Mass,
T const & Radius);
//! Build an inertia matrix for a sphere.
//! From GLM_GTX_inertia extension.
template <typename T, precision P>
detail::tmat4x4<T, P> sphereInertia4(
T const & Mass,
T const & Radius);
*/
/// @}
}// namespace glm
#include "inertia.inl"
#endif//GLM_GTX_inertia

View File

@ -1,116 +0,0 @@
///////////////////////////////////////////////////////////////////////////////////////////////////
// OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net)
///////////////////////////////////////////////////////////////////////////////////////////////////
// Created : 2006-04-21
// Updated : 2006-12-06
// Licence : This source is under MIT License
// File : glm/gtx/inertia.inl
///////////////////////////////////////////////////////////////////////////////////////////////////
namespace glm
{
/*
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> boxInertia3
(
T const & Mass,
detail::tvec3<T, P> const & Scale
)
{
detail::tmat3x3<T, P> Result(T(1));
Result[0][0] = (Scale.y * Scale.y + Scale.z * Scale.z) * Mass / T(12);
Result[1][1] = (Scale.x * Scale.x + Scale.z * Scale.z) * Mass / T(12);
Result[2][2] = (Scale.x * Scale.x + Scale.y * Scale.y) * Mass / T(12);
return Result;
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> boxInertia4
(
T const & Mass,
detail::tvec3<T, P> const & Scale
)
{
detail::tmat4x4<T, P> Result(T(1));
Result[0][0] = (Scale.y * Scale.y + Scale.z * Scale.z) * Mass / T(12);
Result[1][1] = (Scale.x * Scale.x + Scale.z * Scale.z) * Mass / T(12);
Result[2][2] = (Scale.x * Scale.x + Scale.y * Scale.y) * Mass / T(12);
return Result;
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> diskInertia3
(
T const & Mass,
T const & Radius
)
{
T a = Mass * Radius * Radius / T(2);
detail::tmat3x3<T, P> Result(a);
Result[2][2] *= static_cast<T>(2);
return Result;
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> diskInertia4
(
T const & Mass,
T const & Radius
)
{
T a = Mass * Radius * Radius / T(2);
detail::tmat4x4<T, P> Result(a);
Result[2][2] *= static_cast<T>(2);
Result[3][3] = static_cast<T>(1);
return Result;
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> ballInertia3
(
T const & Mass,
T const & Radius
)
{
T a = static_cast<T>(2) * Mass * Radius * Radius / T(5);
return detail::tmat3x3<T, P>(a);
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> ballInertia4
(
T const & Mass,
T const & Radius
)
{
T a = static_cast<T>(2) * Mass * Radius * Radius / T(5);
detail::tmat4x4<T, P> Result(a);
Result[3][3] = static_cast<T>(1);
return Result;
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> sphereInertia3
(
T const & Mass,
T const & Radius
)
{
T a = static_cast<T>(2) * Mass * Radius * Radius / T(3);
return detail::tmat3x3<T, P>(a);
}
template <typename T>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> sphereInertia4
(
T const & Mass,
T const & Radius
)
{
T a = static_cast<T>(2) * Mass * Radius * Radius / T(3);
detail::tmat4x4<T, P> Result(a);
Result[3][3] = static_cast<T>(1);
return Result;
}
*/
}//namespace glm

View File

@ -23,7 +23,7 @@
namespace glm
{
GLM_FUNC_QUALIFIER dword uint10_10_10_2_cast
inline dword uint10_10_10_2_cast
(
glm::vec4 const & v
)

View File

@ -10,7 +10,7 @@
namespace glm
{
// pow
GLM_FUNC_QUALIFIER int pow(int x, int y)
inline int pow(int x, int y)
{
if(y == 0)
return 1;
@ -21,7 +21,7 @@ namespace glm
}
// sqrt: From Christopher J. Musial, An integer square root, Graphics Gems, 1990, page 387
GLM_FUNC_QUALIFIER int sqrt(int x)
inline int sqrt(int x)
{
if(x <= 1) return x;
@ -40,7 +40,7 @@ namespace glm
// Henry Gordon Dietz: http://aggregate.org/MAGIC/
namespace detail
{
GLM_FUNC_QUALIFIER unsigned int ones32(unsigned int x)
inline unsigned int ones32(unsigned int x)
{
/* 32-bit recursive reduction using SWAR...
but first step is mapping 2-bit values
@ -58,7 +58,7 @@ namespace detail
struct compute_log2<false>
{
template <typename T>
GLM_FUNC_QUALIFIER T operator() (T const & Value) const
inline T operator() (T const & Value) const
{
#if(GLM_COMPILER & (GLM_COMPILER_VC | GLM_COMPILER_GCC))
return Value <= static_cast<T>(1) ? T(0) : T(32) - nlz(Value - T(1));
@ -71,7 +71,7 @@ namespace detail
// Henry Gordon Dietz: http://aggregate.org/MAGIC/
/*
GLM_FUNC_QUALIFIER unsigned int floor_log2(unsigned int x)
inline unsigned int floor_log2(unsigned int x)
{
x |= (x >> 1);
x |= (x >> 2);
@ -83,14 +83,14 @@ namespace detail
}
*/
// mod
GLM_FUNC_QUALIFIER int mod(int x, int y)
inline int mod(int x, int y)
{
return x - y * (x / y);
}
// factorial (!12 max, integer only)
template <typename genType>
GLM_FUNC_QUALIFIER genType factorial(genType const & x)
inline genType factorial(genType const & x)
{
genType Temp = x;
genType Result;
@ -100,7 +100,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> factorial(
inline detail::tvec2<T, P> factorial(
detail::tvec2<T, P> const & x)
{
return detail::tvec2<T, P>(
@ -109,7 +109,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> factorial(
inline detail::tvec3<T, P> factorial(
detail::tvec3<T, P> const & x)
{
return detail::tvec3<T, P>(
@ -119,7 +119,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> factorial(
inline detail::tvec4<T, P> factorial(
detail::tvec4<T, P> const & x)
{
return detail::tvec4<T, P>(
@ -129,7 +129,7 @@ namespace detail
factorial(x.w));
}
GLM_FUNC_QUALIFIER uint pow(uint x, uint y)
inline uint pow(uint x, uint y)
{
uint result = x;
for(uint i = 1; i < y; ++i)
@ -137,7 +137,7 @@ namespace detail
return result;
}
GLM_FUNC_QUALIFIER uint sqrt(uint x)
inline uint sqrt(uint x)
{
if(x <= 1) return x;
@ -153,14 +153,14 @@ namespace detail
return CurrentAnswer;
}
GLM_FUNC_QUALIFIER uint mod(uint x, uint y)
inline uint mod(uint x, uint y)
{
return x - y * (x / y);
}
#if(GLM_COMPILER & (GLM_COMPILER_VC | GLM_COMPILER_GCC))
GLM_FUNC_QUALIFIER unsigned int nlz(unsigned int x)
inline unsigned int nlz(unsigned int x)
{
return 31u - findMSB(x);
}
@ -168,7 +168,7 @@ namespace detail
#else
// Hackers Delight: http://www.hackersdelight.org/HDcode/nlz.c.txt
GLM_FUNC_QUALIFIER unsigned int nlz(unsigned int x)
inline unsigned int nlz(unsigned int x)
{
int y, m, n;

View File

@ -14,7 +14,7 @@
namespace glm
{
template <typename genType>
GLM_FUNC_QUALIFIER bool intersectRayPlane
inline bool intersectRayPlane
(
genType const & orig, genType const & dir,
genType const & planeOrig, genType const & planeNormal,
@ -34,7 +34,7 @@ namespace glm
}
template <typename genType>
GLM_FUNC_QUALIFIER bool intersectRayTriangle
inline bool intersectRayTriangle
(
genType const & orig, genType const & dir,
genType const & v0, genType const & v1, genType const & v2,
@ -74,7 +74,7 @@ namespace glm
}
//template <typename genType>
//GLM_FUNC_QUALIFIER bool intersectRayTriangle
//inline bool intersectRayTriangle
//(
// genType const & orig, genType const & dir,
// genType const & vert0, genType const & vert1, genType const & vert2,
@ -111,7 +111,7 @@ namespace glm
//}
template <typename genType>
GLM_FUNC_QUALIFIER bool intersectLineTriangle
inline bool intersectLineTriangle
(
genType const & orig, genType const & dir,
genType const & vert0, genType const & vert1, genType const & vert2,
@ -149,7 +149,7 @@ namespace glm
}
template <typename genType>
GLM_FUNC_QUALIFIER bool intersectRaySphere
inline bool intersectRaySphere
(
genType const & rayStarting, genType const & rayNormalizedDirection,
genType const & sphereCenter, const typename genType::value_type sphereRadiusSquered,
@ -170,7 +170,7 @@ namespace glm
}
template <typename genType>
GLM_FUNC_QUALIFIER bool intersectRaySphere
inline bool intersectRaySphere
(
genType const & rayStarting, genType const & rayNormalizedDirection,
genType const & sphereCenter, const typename genType::value_type sphereRadius,
@ -188,7 +188,7 @@ namespace glm
}
template <typename genType>
GLM_FUNC_QUALIFIER bool intersectLineSphere
inline bool intersectLineSphere
(
genType const & point0, genType const & point1,
genType const & sphereCenter, typename genType::value_type sphereRadius,

50
deps/glm/gtx/io.inl vendored
View File

@ -17,81 +17,81 @@ namespace glm{
namespace io
{
/* explicit */ GLM_FUNC_QUALIFIER
/* explicit */ inline
precision_guard::precision_guard()
: precision_ (precision()),
value_width_(value_width())
{}
GLM_FUNC_QUALIFIER
inline
precision_guard::~precision_guard()
{
value_width() = value_width_;
precision() = precision_;
}
/* explicit */ GLM_FUNC_QUALIFIER
/* explicit */ inline
format_guard::format_guard()
: order_(order()),
cr_ (cr())
{}
GLM_FUNC_QUALIFIER
inline
format_guard::~format_guard()
{
cr() = cr_;
order() = order_;
}
GLM_FUNC_QUALIFIER unsigned& precision()
inline unsigned& precision()
{
static unsigned p(3);
return p;
}
GLM_FUNC_QUALIFIER unsigned& value_width()
inline unsigned& value_width()
{
static unsigned p(9);
return p;
}
GLM_FUNC_QUALIFIER format_guard::order_t& order()
inline format_guard::order_t& order()
{
static format_guard::order_t p(format_guard::row_major);
return p;
}
GLM_FUNC_QUALIFIER char&
inline char&
cr()
{
static char p('\n'); return p;
}
GLM_FUNC_QUALIFIER std::ios_base& column_major(std::ios_base& os)
inline std::ios_base& column_major(std::ios_base& os)
{
order() = format_guard::column_major;
return os;
}
GLM_FUNC_QUALIFIER std::ios_base& row_major(std::ios_base& os)
inline std::ios_base& row_major(std::ios_base& os)
{
order() = format_guard::row_major;
return os;
}
GLM_FUNC_QUALIFIER std::ios_base& formatted(std::ios_base& os)
inline std::ios_base& formatted(std::ios_base& os)
{
cr() = '\n';
return os;
}
GLM_FUNC_QUALIFIER std::ios_base& unformatted(std::ios_base& os)
inline std::ios_base& unformatted(std::ios_base& os)
{
cr() = ' ';
@ -104,7 +104,7 @@ namespace detail
// functions, inlined (inline)
template <typename CTy, typename CTr, typename T, precision P>
GLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tquat<T,P> const& a)
inline std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tquat<T,P> const& a)
{
typename std::basic_ostream<CTy,CTr>::sentry const cerberus(os);
@ -124,7 +124,7 @@ namespace detail
}
template <typename CTy, typename CTr, typename T, precision P>
GLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tvec2<T,P> const& a)
inline std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tvec2<T,P> const& a)
{
typename std::basic_ostream<CTy,CTr>::sentry const cerberus(os);
@ -142,7 +142,7 @@ namespace detail
}
template <typename CTy, typename CTr, typename T, precision P>
GLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tvec3<T,P> const& a)
inline std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tvec3<T,P> const& a)
{
typename std::basic_ostream<CTy,CTr>::sentry const cerberus(os);
@ -161,7 +161,7 @@ namespace detail
}
template <typename CTy, typename CTr, typename T, precision P>
GLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tvec4<T,P> const& a)
inline std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tvec4<T,P> const& a)
{
typename std::basic_ostream<CTy,CTr>::sentry const cerberus(os);
@ -181,7 +181,7 @@ namespace detail
}
template <typename CTy, typename CTr, typename T, precision P>
GLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tmat2x2<T,P> const& m)
inline std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tmat2x2<T,P> const& m)
{
typename std::basic_ostream<CTy,CTr>::sentry const cerberus(os);
@ -196,7 +196,7 @@ namespace detail
}
template <typename CTy, typename CTr, typename T, precision P>
GLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tmat2x3<T,P> const& m)
inline std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tmat2x3<T,P> const& m)
{
typename std::basic_ostream<CTy,CTr>::sentry const cerberus(os);
@ -211,7 +211,7 @@ namespace detail
}
template <typename CTy, typename CTr, typename T, precision P>
GLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tmat2x4<T,P> const& m)
inline std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tmat2x4<T,P> const& m)
{
typename std::basic_ostream<CTy,CTr>::sentry const cerberus(os);
@ -226,7 +226,7 @@ namespace detail
}
template <typename CTy, typename CTr, typename T, precision P>
GLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tmat3x2<T,P> const& m)
inline std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tmat3x2<T,P> const& m)
{
typename std::basic_ostream<CTy,CTr>::sentry const cerberus(os);
@ -242,7 +242,7 @@ namespace detail
}
template <typename CTy, typename CTr, typename T, precision P>
GLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tmat3x3<T,P> const& m)
inline std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tmat3x3<T,P> const& m)
{
typename std::basic_ostream<CTy,CTr>::sentry const cerberus(os);
@ -258,7 +258,7 @@ namespace detail
}
template <typename CTy, typename CTr, typename T, precision P>
GLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tmat3x4<T,P> const& m)
inline std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tmat3x4<T,P> const& m)
{
typename std::basic_ostream<CTy,CTr>::sentry const cerberus(os);
@ -274,7 +274,7 @@ namespace detail
}
template <typename CTy, typename CTr, typename T, precision P>
GLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tmat4x2<T,P> const& m)
inline std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tmat4x2<T,P> const& m)
{
typename std::basic_ostream<CTy,CTr>::sentry const cerberus(os);
@ -291,7 +291,7 @@ namespace detail
}
template <typename CTy, typename CTr, typename T, precision P>
GLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tmat4x3<T,P> const& m)
inline std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tmat4x3<T,P> const& m)
{
typename std::basic_ostream<CTy,CTr>::sentry const cerberus(os);
@ -308,7 +308,7 @@ namespace detail
}
template <typename CTy, typename CTr, typename T, precision P>
GLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tmat4x4<T,P> const& m)
inline std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, tmat4x4<T,P> const& m)
{
typename std::basic_ostream<CTy,CTr>::sentry const cerberus(os);

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename genType>
GLM_FUNC_QUALIFIER genType log(
inline genType log(
genType const & x,
genType const & base)
{

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> matrixCross3
inline detail::tmat3x3<T, P> matrixCross3
(
detail::tvec3<T, P> const & x
)
@ -26,7 +26,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> matrixCross4
inline detail::tmat4x4<T, P> matrixCross4
(
detail::tvec3<T, P> const & x
)

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER void axisAngle
inline void axisAngle
(
detail::tmat4x4<T, P> const & mat,
detail::tvec3<T, P> & axis,
@ -85,7 +85,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> axisAngleMatrix
inline detail::tmat4x4<T, P> axisAngleMatrix
(
detail::tvec3<T, P> const & axis,
T const angle
@ -105,7 +105,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> extractMatrixRotation
inline detail::tmat4x4<T, P> extractMatrixRotation
(
detail::tmat4x4<T, P> const & mat
)
@ -119,7 +119,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> interpolate
inline detail::tmat4x4<T, P> interpolate
(
detail::tmat4x4<T, P> const & m1,
detail::tmat4x4<T, P> const & m2,

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat2x2<T, P> rowMajor2
inline detail::tmat2x2<T, P> rowMajor2
(
detail::tvec2<T, P> const & v1,
detail::tvec2<T, P> const & v2
@ -25,7 +25,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat2x2<T, P> rowMajor2(
inline detail::tmat2x2<T, P> rowMajor2(
const detail::tmat2x2<T, P>& m)
{
detail::tmat2x2<T, P> Result;
@ -37,7 +37,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> rowMajor3(
inline detail::tmat3x3<T, P> rowMajor3(
const detail::tvec3<T, P>& v1,
const detail::tvec3<T, P>& v2,
const detail::tvec3<T, P>& v3)
@ -56,7 +56,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> rowMajor3(
inline detail::tmat3x3<T, P> rowMajor3(
const detail::tmat3x3<T, P>& m)
{
detail::tmat3x3<T, P> Result;
@ -73,7 +73,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> rowMajor4(
inline detail::tmat4x4<T, P> rowMajor4(
const detail::tvec4<T, P>& v1,
const detail::tvec4<T, P>& v2,
const detail::tvec4<T, P>& v3,
@ -100,7 +100,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> rowMajor4(
inline detail::tmat4x4<T, P> rowMajor4(
const detail::tmat4x4<T, P>& m)
{
detail::tmat4x4<T, P> Result;
@ -124,7 +124,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat2x2<T, P> colMajor2(
inline detail::tmat2x2<T, P> colMajor2(
const detail::tvec2<T, P>& v1,
const detail::tvec2<T, P>& v2)
{
@ -132,14 +132,14 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat2x2<T, P> colMajor2(
inline detail::tmat2x2<T, P> colMajor2(
const detail::tmat2x2<T, P>& m)
{
return detail::tmat2x2<T, P>(m);
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> colMajor3(
inline detail::tmat3x3<T, P> colMajor3(
const detail::tvec3<T, P>& v1,
const detail::tvec3<T, P>& v2,
const detail::tvec3<T, P>& v3)
@ -148,14 +148,14 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> colMajor3(
inline detail::tmat3x3<T, P> colMajor3(
const detail::tmat3x3<T, P>& m)
{
return detail::tmat3x3<T, P>(m);
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> colMajor4(
inline detail::tmat4x4<T, P> colMajor4(
const detail::tvec4<T, P>& v1,
const detail::tvec4<T, P>& v2,
const detail::tvec4<T, P>& v3,
@ -165,7 +165,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> colMajor4(
inline detail::tmat4x4<T, P> colMajor4(
const detail::tmat4x4<T, P>& m)
{
return detail::tmat4x4<T, P>(m);

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat2x2<T, P> diagonal2x2
inline detail::tmat2x2<T, P> diagonal2x2
(
detail::tvec2<T, P> const & v
)
@ -22,7 +22,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat2x3<T, P> diagonal2x3
inline detail::tmat2x3<T, P> diagonal2x3
(
detail::tvec2<T, P> const & v
)
@ -34,7 +34,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat2x4<T, P> diagonal2x4
inline detail::tmat2x4<T, P> diagonal2x4
(
detail::tvec2<T, P> const & v
)
@ -46,7 +46,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x2<T, P> diagonal3x2
inline detail::tmat3x2<T, P> diagonal3x2
(
detail::tvec2<T, P> const & v
)
@ -58,7 +58,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> diagonal3x3
inline detail::tmat3x3<T, P> diagonal3x3
(
detail::tvec3<T, P> const & v
)
@ -71,7 +71,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x4<T, P> diagonal3x4
inline detail::tmat3x4<T, P> diagonal3x4
(
detail::tvec3<T, P> const & v
)
@ -84,7 +84,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> diagonal4x4
inline detail::tmat4x4<T, P> diagonal4x4
(
detail::tvec4<T, P> const & v
)
@ -98,7 +98,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x3<T, P> diagonal4x3
inline detail::tmat4x3<T, P> diagonal4x3
(
detail::tvec3<T, P> const & v
)
@ -111,7 +111,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x2<T, P> diagonal4x2
inline detail::tmat4x2<T, P> diagonal4x2
(
detail::tvec2<T, P> const & v
)

View File

@ -13,7 +13,7 @@
namespace glm
{
template<typename T, precision P>
GLM_FUNC_QUALIFIER bool isNull(detail::tmat2x2<T, P> const & m, T const & epsilon)
inline bool isNull(detail::tmat2x2<T, P> const & m, T const & epsilon)
{
bool result = true;
for(length_t i = 0; result && i < 2 ; ++i)
@ -22,7 +22,7 @@ namespace glm
}
template<typename T, precision P>
GLM_FUNC_QUALIFIER bool isNull(detail::tmat3x3<T, P> const & m, T const & epsilon)
inline bool isNull(detail::tmat3x3<T, P> const & m, T const & epsilon)
{
bool result = true;
for(length_t i = 0; result && i < 3 ; ++i)
@ -31,7 +31,7 @@ namespace glm
}
template<typename T, precision P>
GLM_FUNC_QUALIFIER bool isNull(detail::tmat4x4<T, P> const & m, T const & epsilon)
inline bool isNull(detail::tmat4x4<T, P> const & m, T const & epsilon)
{
bool result = true;
for(length_t i = 0; result && i < 4 ; ++i)
@ -40,7 +40,7 @@ namespace glm
}
template<typename T, precision P, template <typename, precision> class matType>
GLM_FUNC_QUALIFIER bool isIdentity(matType<T, P> const & m, T const & epsilon)
inline bool isIdentity(matType<T, P> const & m, T const & epsilon)
{
bool result = true;
for(length_t i(0); result && i < m[0].length(); ++i)
@ -56,7 +56,7 @@ namespace glm
}
template<typename T, precision P>
GLM_FUNC_QUALIFIER bool isNormalized(detail::tmat2x2<T, P> const & m, T const & epsilon)
inline bool isNormalized(detail::tmat2x2<T, P> const & m, T const & epsilon)
{
bool result(true);
for(length_t i(0); result && i < m.length(); ++i)
@ -72,7 +72,7 @@ namespace glm
}
template<typename T, precision P>
GLM_FUNC_QUALIFIER bool isNormalized(detail::tmat3x3<T, P> const & m, T const & epsilon)
inline bool isNormalized(detail::tmat3x3<T, P> const & m, T const & epsilon)
{
bool result(true);
for(length_t i(0); result && i < m.length(); ++i)
@ -88,7 +88,7 @@ namespace glm
}
template<typename T, precision P>
GLM_FUNC_QUALIFIER bool isNormalized(detail::tmat4x4<T, P> const & m, T const & epsilon)
inline bool isNormalized(detail::tmat4x4<T, P> const & m, T const & epsilon)
{
bool result(true);
for(length_t i(0); result && i < m.length(); ++i)
@ -104,7 +104,7 @@ namespace glm
}
template<typename T, precision P, template <typename, precision> class matType>
GLM_FUNC_QUALIFIER bool isOrthogonal(matType<T, P> const & m, T const & epsilon)
inline bool isOrthogonal(matType<T, P> const & m, T const & epsilon)
{
bool result(true);
for(length_t i(0); result && i < m.length() - 1; ++i)

View File

@ -57,7 +57,7 @@ namespace glm
/// @param m Input matrix multiplied by this translation matrix.
/// @param v Coordinates of a translation vector.
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> translate(
inline detail::tmat3x3<T, P> translate(
detail::tmat3x3<T, P> const & m,
detail::tvec2<T, P> const & v);
@ -66,7 +66,7 @@ namespace glm
/// @param m Input matrix multiplied by this translation matrix.
/// @param angle Rotation angle expressed in radians if GLM_FORCE_RADIANS is defined or degrees otherwise.
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> rotate(
inline detail::tmat3x3<T, P> rotate(
detail::tmat3x3<T, P> const & m,
T const & angle);
@ -75,7 +75,7 @@ namespace glm
/// @param m Input matrix multiplied by this translation matrix.
/// @param v Coordinates of a scale vector.
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> scale(
inline detail::tmat3x3<T, P> scale(
detail::tmat3x3<T, P> const & m,
detail::tvec2<T, P> const & v);
@ -84,7 +84,7 @@ namespace glm
/// @param m Input matrix multiplied by this translation matrix.
/// @param y Shear factor.
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> shearX(
inline detail::tmat3x3<T, P> shearX(
detail::tmat3x3<T, P> const & m,
T const & y);
@ -93,7 +93,7 @@ namespace glm
/// @param m Input matrix multiplied by this translation matrix.
/// @param x Shear factor.
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> shearY(
inline detail::tmat3x3<T, P> shearY(
detail::tmat3x3<T, P> const & m,
T const & x);

View File

@ -32,7 +32,7 @@ namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> translate(
inline detail::tmat3x3<T, P> translate(
detail::tmat3x3<T, P> const & m,
detail::tvec2<T, P> const & v)
{
@ -43,7 +43,7 @@ namespace glm
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> rotate(
inline detail::tmat3x3<T, P> rotate(
detail::tmat3x3<T, P> const & m,
T const & angle)
{
@ -63,7 +63,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> scale(
inline detail::tmat3x3<T, P> scale(
detail::tmat3x3<T, P> const & m,
detail::tvec2<T, P> const & v)
{
@ -75,7 +75,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> shearX(
inline detail::tmat3x3<T, P> shearX(
detail::tmat3x3<T, P> const & m,
T const & y)
{
@ -85,7 +85,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> shearY(
inline detail::tmat3x3<T, P> shearY(
detail::tmat3x3<T, P> const & m,
T const & x)
{

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER T mixedProduct
inline T mixedProduct
(
detail::tvec3<T, P> const & v1,
detail::tvec3<T, P> const & v2,

View File

@ -17,7 +17,7 @@ namespace detail
struct higherMultiple
{
template <typename genType>
GLM_FUNC_QUALIFIER genType operator()
inline genType operator()
(
genType const & Source,
genType const & Multiple
@ -28,8 +28,7 @@ namespace detail
genType Tmp = Source - genType(1);
return Tmp + (Multiple - (Tmp % Multiple));
}
else
return Source + (-Source % Multiple);
return Source + (-Source % Multiple);
}
};
@ -37,7 +36,7 @@ namespace detail
struct higherMultiple<false>
{
template <typename genType>
GLM_FUNC_QUALIFIER genType operator()
inline genType operator()
(
genType const & Source,
genType const & Multiple
@ -53,7 +52,7 @@ namespace detail
// higherMultiple
template <typename genType>
GLM_FUNC_QUALIFIER genType higherMultiple
inline genType higherMultiple
(
genType const & Source,
genType const & Multiple
@ -64,7 +63,7 @@ namespace detail
}
template <>
GLM_FUNC_QUALIFIER float higherMultiple
inline float higherMultiple
(
float const & Source,
float const & Multiple
@ -80,7 +79,7 @@ namespace detail
}
template <>
GLM_FUNC_QUALIFIER double higherMultiple
inline double higherMultiple
(
double const & Source,
double const & Multiple
@ -101,7 +100,7 @@ namespace detail
// lowerMultiple
template <typename genType>
GLM_FUNC_QUALIFIER genType lowerMultiple
inline genType lowerMultiple
(
genType const & Source,
genType const & Multiple
@ -117,7 +116,7 @@ namespace detail
}
template <>
GLM_FUNC_QUALIFIER float lowerMultiple
inline float lowerMultiple
(
float const & Source,
float const & Multiple
@ -133,7 +132,7 @@ namespace detail
}
template <>
GLM_FUNC_QUALIFIER double lowerMultiple
inline double lowerMultiple
(
double const & Source,
double const & Multiple

28
deps/glm/gtx/norm.inl vendored
View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T>
GLM_FUNC_QUALIFIER T length2
inline T length2
(
T const & x
)
@ -19,7 +19,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T length2
inline T length2
(
detail::tvec2<T, P> const & x
)
@ -28,7 +28,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T length2
inline T length2
(
detail::tvec3<T, P> const & x
)
@ -37,7 +37,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T length2
inline T length2
(
detail::tvec4<T, P> const & x
)
@ -46,7 +46,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER T distance2
inline T distance2
(
T const & p0,
T const & p1
@ -56,7 +56,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T distance2
inline T distance2
(
detail::tvec2<T, P> const & p0,
detail::tvec2<T, P> const & p1
@ -66,7 +66,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T distance2
inline T distance2
(
detail::tvec3<T, P> const & p0,
detail::tvec3<T, P> const & p1
@ -76,7 +76,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T distance2
inline T distance2
(
detail::tvec4<T, P> const & p0,
detail::tvec4<T, P> const & p1
@ -86,7 +86,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T l1Norm
inline T l1Norm
(
detail::tvec3<T, P> const & a,
detail::tvec3<T, P> const & b
@ -96,7 +96,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T l1Norm
inline T l1Norm
(
detail::tvec3<T, P> const & v
)
@ -105,7 +105,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T l2Norm
inline T l2Norm
(
detail::tvec3<T, P> const & a,
detail::tvec3<T, P> const & b
@ -115,7 +115,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T l2Norm
inline T l2Norm
(
detail::tvec3<T, P> const & v
)
@ -124,7 +124,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T lxNorm
inline T lxNorm
(
detail::tvec3<T, P> const & x,
detail::tvec3<T, P> const & y,
@ -135,7 +135,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T lxNorm
inline T lxNorm
(
detail::tvec3<T, P> const & v,
unsigned int Depth

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> triangleNormal
inline detail::tvec3<T, P> triangleNormal
(
detail::tvec3<T, P> const & p1,
detail::tvec3<T, P> const & p2,

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename genType>
GLM_FUNC_QUALIFIER genType normalizeDot
inline genType normalizeDot
(
genType const & x,
genType const & y
@ -23,7 +23,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T normalizeDot
inline T normalizeDot
(
detail::tvec2<T, P> const & x,
detail::tvec2<T, P> const & y
@ -36,7 +36,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T normalizeDot
inline T normalizeDot
(
detail::tvec3<T, P> const & x,
detail::tvec3<T, P> const & y
@ -49,7 +49,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T normalizeDot
inline T normalizeDot
(
detail::tvec4<T, P> const & x,
detail::tvec4<T, P> const & y
@ -62,7 +62,7 @@ namespace glm
}
template <typename genType>
GLM_FUNC_QUALIFIER genType fastNormalizeDot
inline genType fastNormalizeDot
(
genType const & x,
genType const & y
@ -75,7 +75,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T fastNormalizeDot
inline T fastNormalizeDot
(
detail::tvec2<T, P> const & x,
detail::tvec2<T, P> const & y
@ -88,7 +88,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T fastNormalizeDot
inline T fastNormalizeDot
(
detail::tvec3<T, P> const & x,
detail::tvec3<T, P> const & y
@ -101,7 +101,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T fastNormalizeDot
inline T fastNormalizeDot
(
detail::tvec4<T, P> const & x,
detail::tvec4<T, P> const & y

View File

@ -10,30 +10,30 @@
namespace glm
{
template <typename genType>
GLM_FUNC_QUALIFIER genType pow2(genType const & x)
inline genType pow2(genType const & x)
{
return x * x;
}
template <typename genType>
GLM_FUNC_QUALIFIER genType pow3(genType const & x)
inline genType pow3(genType const & x)
{
return x * x * x;
}
template <typename genType>
GLM_FUNC_QUALIFIER genType pow4(genType const & x)
inline genType pow4(genType const & x)
{
return (x * x) * (x * x);
}
GLM_FUNC_QUALIFIER bool powOfTwo(int x)
inline bool powOfTwo(int x)
{
return !(x & (x - 1));
}
template <precision P>
GLM_FUNC_QUALIFIER detail::tvec2<bool, P> powOfTwo(detail::tvec2<int, P> const & x)
inline detail::tvec2<bool, P> powOfTwo(detail::tvec2<int, P> const & x)
{
return detail::tvec2<bool, P>(
powOfTwo(x.x),
@ -41,7 +41,7 @@ namespace glm
}
template <precision P>
GLM_FUNC_QUALIFIER detail::tvec3<bool, P> powOfTwo(detail::tvec3<int, P> const & x)
inline detail::tvec3<bool, P> powOfTwo(detail::tvec3<int, P> const & x)
{
return detail::tvec3<bool, P>(
powOfTwo(x.x),
@ -50,7 +50,7 @@ namespace glm
}
template <precision P>
GLM_FUNC_QUALIFIER detail::tvec4<bool, P> powOfTwo(detail::tvec4<int, P> const & x)
inline detail::tvec4<bool, P> powOfTwo(detail::tvec4<int, P> const & x)
{
return detail::tvec4<bool, P>(
powOfTwo(x.x),

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> orthonormalize
inline detail::tmat3x3<T, P> orthonormalize
(
const detail::tmat3x3<T, P>& m
)
@ -32,7 +32,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> orthonormalize
inline detail::tvec3<T, P> orthonormalize
(
const detail::tvec3<T, P>& x,
const detail::tvec3<T, P>& y

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename vecType>
GLM_FUNC_QUALIFIER vecType perp
inline vecType perp
(
vecType const & x,
vecType const & Normal

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> polar
inline detail::tvec3<T, P> polar
(
detail::tvec3<T, P> const & euclidean
)
@ -34,7 +34,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> euclidean
inline detail::tvec3<T, P> euclidean
(
detail::tvec2<T, P> const & polar
)

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename vecType>
GLM_FUNC_QUALIFIER vecType proj
inline vecType proj
(
vecType const & x,
vecType const & Normal

View File

@ -12,7 +12,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> cross
inline detail::tvec3<T, P> cross
(
detail::tvec3<T, P> const & v,
detail::tquat<T, P> const & q
@ -22,7 +22,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> cross
inline detail::tvec3<T, P> cross
(
detail::tquat<T, P> const & q,
detail::tvec3<T, P> const & v
@ -32,7 +32,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> squad
inline detail::tquat<T, P> squad
(
detail::tquat<T, P> const & q1,
detail::tquat<T, P> const & q2,
@ -44,7 +44,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> intermediate
inline detail::tquat<T, P> intermediate
(
detail::tquat<T, P> const & prev,
detail::tquat<T, P> const & curr,
@ -56,7 +56,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> exp
inline detail::tquat<T, P> exp
(
detail::tquat<T, P> const & q
)
@ -68,7 +68,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> log
inline detail::tquat<T, P> log
(
detail::tquat<T, P> const & q
)
@ -92,7 +92,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> pow
inline detail::tquat<T, P> pow
(
detail::tquat<T, P> const & x,
T const & y
@ -111,7 +111,7 @@ namespace glm
}
//template <typename T, precision P>
//GLM_FUNC_QUALIFIER detail::tquat<T, P> sqrt
//inline detail::tquat<T, P> sqrt
//(
// detail::tquat<T, P> const & q
//)
@ -121,7 +121,7 @@ namespace glm
//}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> rotate
inline detail::tvec3<T, P> rotate
(
detail::tquat<T, P> const & q,
detail::tvec3<T, P> const & v
@ -131,7 +131,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> rotate
inline detail::tvec4<T, P> rotate
(
detail::tquat<T, P> const & q,
detail::tvec4<T, P> const & v
@ -141,7 +141,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T extractRealComponent
inline T extractRealComponent
(
detail::tquat<T, P> const & q
)
@ -154,7 +154,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T length2
inline T length2
(
detail::tquat<T, P> const & q
)
@ -163,7 +163,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> shortMix
inline detail::tquat<T, P> shortMix
(
detail::tquat<T, P> const & x,
detail::tquat<T, P> const & y,
@ -205,7 +205,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> fastMix
inline detail::tquat<T, P> fastMix
(
detail::tquat<T, P> const & x,
detail::tquat<T, P> const & y,
@ -216,7 +216,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> rotation
inline detail::tquat<T, P> rotation
(
detail::tvec3<T, P> const & orig,
detail::tvec3<T, P> const & dest

View File

@ -29,7 +29,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> rotateNormalizedAxis
inline detail::tmat4x4<T, P> rotateNormalizedAxis
(
detail::tmat4x4<T, P> const & m,
T const & angle,
@ -71,7 +71,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tquat<T, P> rotateNormalizedAxis
inline detail::tquat<T, P> rotateNormalizedAxis
(
detail::tquat<T, P> const & q,
T const & angle,

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> rotate
inline detail::tvec2<T, P> rotate
(
detail::tvec2<T, P> const & v,
T const & angle
@ -31,7 +31,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> rotate
inline detail::tvec3<T, P> rotate
(
detail::tvec3<T, P> const & v,
T const & angle,
@ -40,20 +40,8 @@ namespace glm
{
return detail::tmat3x3<T, P>(glm::rotate(angle, normal)) * v;
}
/*
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> rotateGTX(
const detail::tvec3<T, P>& x,
T angle,
const detail::tvec3<T, P>& normal)
{
const T Cos = cos(radians(angle));
const T Sin = sin(radians(angle));
return x * Cos + ((x * normal) * (T(1) - Cos)) * normal + cross(x, normal) * Sin;
}
*/
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> rotate
inline detail::tvec4<T, P> rotate
(
detail::tvec4<T, P> const & v,
T const & angle,
@ -64,7 +52,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> rotateX
inline detail::tvec3<T, P> rotateX
(
detail::tvec3<T, P> const & v,
T const & angle
@ -87,7 +75,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> rotateY
inline detail::tvec3<T, P> rotateY
(
detail::tvec3<T, P> const & v,
T const & angle
@ -110,7 +98,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> rotateZ
inline detail::tvec3<T, P> rotateZ
(
detail::tvec3<T, P> const & v,
T const & angle
@ -133,7 +121,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> rotateX
inline detail::tvec4<T, P> rotateX
(
detail::tvec4<T, P> const & v,
T const & angle
@ -156,7 +144,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> rotateY
inline detail::tvec4<T, P> rotateY
(
detail::tvec4<T, P> const & v,
T const & angle
@ -179,7 +167,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> rotateZ
inline detail::tvec4<T, P> rotateZ
(
detail::tvec4<T, P> const & v,
T const & angle
@ -202,7 +190,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> orientation
inline detail::tmat4x4<T, P> orientation
(
detail::tvec3<T, P> const & Normal,
detail::tvec3<T, P> const & Up

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T>
GLM_FUNC_QUALIFIER bool lessThan
inline bool lessThan
(
T const & x,
T const & y
@ -20,7 +20,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER bool lessThanEqual
inline bool lessThanEqual
(
T const & x,
T const & y
@ -30,7 +30,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER bool greaterThan
inline bool greaterThan
(
T const & x,
T const & y
@ -40,7 +40,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER bool greaterThanEqual
inline bool greaterThanEqual
(
T const & x,
T const & y
@ -50,7 +50,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER bool equal
inline bool equal
(
T const & x,
T const & y
@ -60,7 +60,7 @@ namespace glm
}
template <typename T>
GLM_FUNC_QUALIFIER bool notEqual
inline bool notEqual
(
T const & x,
T const & y
@ -69,7 +69,7 @@ namespace glm
return x != y;
}
GLM_FUNC_QUALIFIER bool any
inline bool any
(
bool const & x
)
@ -77,7 +77,7 @@ namespace glm
return x;
}
GLM_FUNC_QUALIFIER bool all
inline bool all
(
bool const & x
)
@ -85,7 +85,7 @@ namespace glm
return x;
}
GLM_FUNC_QUALIFIER bool not_
inline bool not_
(
bool const & x
)

View File

@ -10,7 +10,7 @@
namespace glm{
namespace detail{
GLM_FUNC_QUALIFIER length_t fmat4x4SIMD::length() const
inline length_t fmat4x4SIMD::length() const
{
return 4;
}
@ -18,7 +18,7 @@ GLM_FUNC_QUALIFIER length_t fmat4x4SIMD::length() const
//////////////////////////////////////
// Accesses
GLM_FUNC_QUALIFIER fvec4SIMD & fmat4x4SIMD::operator[]
inline fvec4SIMD & fmat4x4SIMD::operator[]
(
length_t i
)
@ -28,7 +28,7 @@ GLM_FUNC_QUALIFIER fvec4SIMD & fmat4x4SIMD::operator[]
return this->Data[i];
}
GLM_FUNC_QUALIFIER fvec4SIMD const & fmat4x4SIMD::operator[]
inline fvec4SIMD const & fmat4x4SIMD::operator[]
(
length_t i
) const
@ -41,7 +41,7 @@ GLM_FUNC_QUALIFIER fvec4SIMD const & fmat4x4SIMD::operator[]
//////////////////////////////////////////////////////////////
// Constructors
GLM_FUNC_QUALIFIER fmat4x4SIMD::fmat4x4SIMD()
inline fmat4x4SIMD::fmat4x4SIMD()
{
#ifndef GLM_SIMD_ENABLE_DEFAULT_INIT
this->Data[0] = fvec4SIMD(1.0f, 0, 0, 0);
@ -51,7 +51,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD::fmat4x4SIMD()
#endif
}
GLM_FUNC_QUALIFIER fmat4x4SIMD::fmat4x4SIMD(float const & s)
inline fmat4x4SIMD::fmat4x4SIMD(float const & s)
{
this->Data[0] = fvec4SIMD(s, 0, 0, 0);
this->Data[1] = fvec4SIMD(0, s, 0, 0);
@ -59,7 +59,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD::fmat4x4SIMD(float const & s)
this->Data[3] = fvec4SIMD(0, 0, 0, s);
}
GLM_FUNC_QUALIFIER fmat4x4SIMD::fmat4x4SIMD
inline fmat4x4SIMD::fmat4x4SIMD
(
float const & x0, float const & y0, float const & z0, float const & w0,
float const & x1, float const & y1, float const & z1, float const & w1,
@ -73,7 +73,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD::fmat4x4SIMD
this->Data[3] = fvec4SIMD(x3, y3, z3, w3);
}
GLM_FUNC_QUALIFIER fmat4x4SIMD::fmat4x4SIMD
inline fmat4x4SIMD::fmat4x4SIMD
(
fvec4SIMD const & v0,
fvec4SIMD const & v1,
@ -87,7 +87,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD::fmat4x4SIMD
this->Data[3] = v3;
}
GLM_FUNC_QUALIFIER fmat4x4SIMD::fmat4x4SIMD
inline fmat4x4SIMD::fmat4x4SIMD
(
mat4 const & m
)
@ -98,7 +98,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD::fmat4x4SIMD
this->Data[3] = fvec4SIMD(m[3]);
}
GLM_FUNC_QUALIFIER fmat4x4SIMD::fmat4x4SIMD
inline fmat4x4SIMD::fmat4x4SIMD
(
__m128 const in[4]
)
@ -112,7 +112,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD::fmat4x4SIMD
//////////////////////////////////////////////////////////////
// mat4 operators
GLM_FUNC_QUALIFIER fmat4x4SIMD& fmat4x4SIMD::operator=
inline fmat4x4SIMD& fmat4x4SIMD::operator=
(
fmat4x4SIMD const & m
)
@ -124,7 +124,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD& fmat4x4SIMD::operator=
return *this;
}
GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator+=
inline fmat4x4SIMD & fmat4x4SIMD::operator+=
(
fmat4x4SIMD const & m
)
@ -136,7 +136,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator+=
return *this;
}
GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator-=
inline fmat4x4SIMD & fmat4x4SIMD::operator-=
(
fmat4x4SIMD const & m
)
@ -149,7 +149,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator-=
return *this;
}
GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator*=
inline fmat4x4SIMD & fmat4x4SIMD::operator*=
(
fmat4x4SIMD const & m
)
@ -158,7 +158,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator*=
return *this;
}
GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator/=
inline fmat4x4SIMD & fmat4x4SIMD::operator/=
(
fmat4x4SIMD const & m
)
@ -169,7 +169,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator/=
return *this;
}
GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator+=
inline fmat4x4SIMD & fmat4x4SIMD::operator+=
(
float const & s
)
@ -182,7 +182,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator+=
return *this;
}
GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator-=
inline fmat4x4SIMD & fmat4x4SIMD::operator-=
(
float const & s
)
@ -195,7 +195,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator-=
return *this;
}
GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator*=
inline fmat4x4SIMD & fmat4x4SIMD::operator*=
(
float const & s
)
@ -208,7 +208,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator*=
return *this;
}
GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator/=
inline fmat4x4SIMD & fmat4x4SIMD::operator/=
(
float const & s
)
@ -221,7 +221,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator/=
return *this;
}
GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator++ ()
inline fmat4x4SIMD & fmat4x4SIMD::operator++ ()
{
this->Data[0].Data = _mm_add_ps(this->Data[0].Data, one);
this->Data[1].Data = _mm_add_ps(this->Data[1].Data, one);
@ -230,7 +230,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator++ ()
return *this;
}
GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator-- ()
inline fmat4x4SIMD & fmat4x4SIMD::operator-- ()
{
this->Data[0].Data = _mm_sub_ps(this->Data[0].Data, one);
this->Data[1].Data = _mm_sub_ps(this->Data[1].Data, one);
@ -243,7 +243,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD & fmat4x4SIMD::operator-- ()
//////////////////////////////////////////////////////////////
// Binary operators
GLM_FUNC_QUALIFIER fmat4x4SIMD operator+
inline fmat4x4SIMD operator+
(
const fmat4x4SIMD &m,
float const & s
@ -258,7 +258,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD operator+
);
}
GLM_FUNC_QUALIFIER fmat4x4SIMD operator+
inline fmat4x4SIMD operator+
(
float const & s,
const fmat4x4SIMD &m
@ -273,7 +273,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD operator+
);
}
GLM_FUNC_QUALIFIER fmat4x4SIMD operator+
inline fmat4x4SIMD operator+
(
const fmat4x4SIMD &m1,
const fmat4x4SIMD &m2
@ -289,7 +289,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD operator+
}
GLM_FUNC_QUALIFIER fmat4x4SIMD operator-
inline fmat4x4SIMD operator-
(
const fmat4x4SIMD &m,
float const & s
@ -304,7 +304,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD operator-
);
}
GLM_FUNC_QUALIFIER fmat4x4SIMD operator-
inline fmat4x4SIMD operator-
(
float const & s,
const fmat4x4SIMD &m
@ -319,7 +319,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD operator-
);
}
GLM_FUNC_QUALIFIER fmat4x4SIMD operator-
inline fmat4x4SIMD operator-
(
const fmat4x4SIMD &m1,
const fmat4x4SIMD &m2
@ -335,7 +335,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD operator-
}
GLM_FUNC_QUALIFIER fmat4x4SIMD operator*
inline fmat4x4SIMD operator*
(
const fmat4x4SIMD &m,
float const & s
@ -350,7 +350,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD operator*
);
}
GLM_FUNC_QUALIFIER fmat4x4SIMD operator*
inline fmat4x4SIMD operator*
(
float const & s,
const fmat4x4SIMD &m
@ -365,7 +365,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD operator*
);
}
GLM_FUNC_QUALIFIER fvec4SIMD operator*
inline fvec4SIMD operator*
(
const fmat4x4SIMD &m,
fvec4SIMD const & v
@ -374,7 +374,7 @@ GLM_FUNC_QUALIFIER fvec4SIMD operator*
return sse_mul_ps(&m.Data[0].Data, v.Data);
}
GLM_FUNC_QUALIFIER fvec4SIMD operator*
inline fvec4SIMD operator*
(
fvec4SIMD const & v,
const fmat4x4SIMD &m
@ -383,7 +383,7 @@ GLM_FUNC_QUALIFIER fvec4SIMD operator*
return sse_mul_ps(v.Data, &m.Data[0].Data);
}
GLM_FUNC_QUALIFIER fmat4x4SIMD operator*
inline fmat4x4SIMD operator*
(
const fmat4x4SIMD &m1,
const fmat4x4SIMD &m2
@ -397,7 +397,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD operator*
GLM_FUNC_QUALIFIER fmat4x4SIMD operator/
inline fmat4x4SIMD operator/
(
const fmat4x4SIMD &m,
float const & s
@ -412,7 +412,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD operator/
);
}
GLM_FUNC_QUALIFIER fmat4x4SIMD operator/
inline fmat4x4SIMD operator/
(
float const & s,
const fmat4x4SIMD &m
@ -427,14 +427,14 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD operator/
);
}
GLM_FUNC_QUALIFIER detail::fmat4x4SIMD inverse(detail::fmat4x4SIMD const & m)
inline detail::fmat4x4SIMD inverse(detail::fmat4x4SIMD const & m)
{
detail::fmat4x4SIMD result;
detail::sse_inverse_ps(&m[0].Data, &result[0].Data);
return result;
}
GLM_FUNC_QUALIFIER fvec4SIMD operator/
inline fvec4SIMD operator/
(
const fmat4x4SIMD & m,
fvec4SIMD const & v
@ -443,7 +443,7 @@ GLM_FUNC_QUALIFIER fvec4SIMD operator/
return inverse(m) * v;
}
GLM_FUNC_QUALIFIER fvec4SIMD operator/
inline fvec4SIMD operator/
(
fvec4SIMD const & v,
const fmat4x4SIMD &m
@ -452,7 +452,7 @@ GLM_FUNC_QUALIFIER fvec4SIMD operator/
return v * inverse(m);
}
GLM_FUNC_QUALIFIER fmat4x4SIMD operator/
inline fmat4x4SIMD operator/
(
const fmat4x4SIMD &m1,
const fmat4x4SIMD &m2
@ -470,7 +470,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD operator/
//////////////////////////////////////////////////////////////
// Unary constant operators
GLM_FUNC_QUALIFIER fmat4x4SIMD const operator-
inline fmat4x4SIMD const operator-
(
fmat4x4SIMD const & m
)
@ -484,7 +484,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD const operator-
);
}
GLM_FUNC_QUALIFIER fmat4x4SIMD const operator--
inline fmat4x4SIMD const operator--
(
fmat4x4SIMD const & m,
int
@ -499,7 +499,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD const operator--
);
}
GLM_FUNC_QUALIFIER fmat4x4SIMD const operator++
inline fmat4x4SIMD const operator++
(
fmat4x4SIMD const & m,
int
@ -516,7 +516,7 @@ GLM_FUNC_QUALIFIER fmat4x4SIMD const operator++
}//namespace detail
GLM_FUNC_QUALIFIER mat4 mat4_cast
inline mat4 mat4_cast
(
detail::fmat4x4SIMD const & x
)
@ -529,7 +529,7 @@ GLM_FUNC_QUALIFIER mat4 mat4_cast
return Result;
}
GLM_FUNC_QUALIFIER detail::fmat4x4SIMD matrixCompMult
inline detail::fmat4x4SIMD matrixCompMult
(
detail::fmat4x4SIMD const & x,
detail::fmat4x4SIMD const & y
@ -543,7 +543,7 @@ GLM_FUNC_QUALIFIER detail::fmat4x4SIMD matrixCompMult
return result;
}
GLM_FUNC_QUALIFIER detail::fmat4x4SIMD outerProduct
inline detail::fmat4x4SIMD outerProduct
(
detail::fvec4SIMD const & c,
detail::fvec4SIMD const & r
@ -562,14 +562,14 @@ GLM_FUNC_QUALIFIER detail::fmat4x4SIMD outerProduct
return result;
}
GLM_FUNC_QUALIFIER detail::fmat4x4SIMD transpose(detail::fmat4x4SIMD const & m)
inline detail::fmat4x4SIMD transpose(detail::fmat4x4SIMD const & m)
{
detail::fmat4x4SIMD result;
detail::sse_transpose_ps(&m[0].Data, &result[0].Data);
return result;
}
GLM_FUNC_QUALIFIER float determinant(detail::fmat4x4SIMD const & m)
inline float determinant(detail::fmat4x4SIMD const & m)
{
float Result;
_mm_store_ss(&Result, detail::sse_det_ps(&m[0].Data));

View File

@ -14,17 +14,17 @@ namespace detail{
//////////////////////////////////////
// Implicit basic constructors
GLM_FUNC_QUALIFIER fquatSIMD::fquatSIMD()
inline fquatSIMD::fquatSIMD()
#ifdef GLM_SIMD_ENABLE_DEFAULT_INIT
: Data(_mm_set_ps(1.0f, 0.0f, 0.0f, 0.0f))
#endif
{}
GLM_FUNC_QUALIFIER fquatSIMD::fquatSIMD(__m128 const & Data) :
inline fquatSIMD::fquatSIMD(__m128 const & Data) :
Data(Data)
{}
GLM_FUNC_QUALIFIER fquatSIMD::fquatSIMD(fquatSIMD const & q) :
inline fquatSIMD::fquatSIMD(fquatSIMD const & q) :
Data(q.Data)
{}
@ -32,15 +32,15 @@ GLM_FUNC_QUALIFIER fquatSIMD::fquatSIMD(fquatSIMD const & q) :
//////////////////////////////////////
// Explicit basic constructors
GLM_FUNC_QUALIFIER fquatSIMD::fquatSIMD(float const & w, float const & x, float const & y, float const & z) :
inline fquatSIMD::fquatSIMD(float const & w, float const & x, float const & y, float const & z) :
Data(_mm_set_ps(w, z, y, x))
{}
GLM_FUNC_QUALIFIER fquatSIMD::fquatSIMD(quat const & q) :
inline fquatSIMD::fquatSIMD(quat const & q) :
Data(_mm_set_ps(q.w, q.z, q.y, q.x))
{}
GLM_FUNC_QUALIFIER fquatSIMD::fquatSIMD(vec3 const & eulerAngles)
inline fquatSIMD::fquatSIMD(vec3 const & eulerAngles)
{
vec3 c = glm::cos(eulerAngles * 0.5f);
vec3 s = glm::sin(eulerAngles * 0.5f);
@ -56,19 +56,19 @@ GLM_FUNC_QUALIFIER fquatSIMD::fquatSIMD(vec3 const & eulerAngles)
//////////////////////////////////////
// Unary arithmetic operators
GLM_FUNC_QUALIFIER fquatSIMD& fquatSIMD::operator=(fquatSIMD const & q)
inline fquatSIMD& fquatSIMD::operator=(fquatSIMD const & q)
{
this->Data = q.Data;
return *this;
}
GLM_FUNC_QUALIFIER fquatSIMD& fquatSIMD::operator*=(float const & s)
inline fquatSIMD& fquatSIMD::operator*=(float const & s)
{
this->Data = _mm_mul_ps(this->Data, _mm_set_ps1(s));
return *this;
}
GLM_FUNC_QUALIFIER fquatSIMD& fquatSIMD::operator/=(float const & s)
inline fquatSIMD& fquatSIMD::operator/=(float const & s)
{
this->Data = _mm_div_ps(Data, _mm_set1_ps(s));
return *this;
@ -77,19 +77,19 @@ GLM_FUNC_QUALIFIER fquatSIMD& fquatSIMD::operator/=(float const & s)
// negate operator
GLM_FUNC_QUALIFIER fquatSIMD operator- (fquatSIMD const & q)
inline fquatSIMD operator- (fquatSIMD const & q)
{
return fquatSIMD(_mm_mul_ps(q.Data, _mm_set_ps(-1.0f, -1.0f, -1.0f, -1.0f)));
}
// operator+
GLM_FUNC_QUALIFIER fquatSIMD operator+ (fquatSIMD const & q1, fquatSIMD const & q2)
inline fquatSIMD operator+ (fquatSIMD const & q1, fquatSIMD const & q2)
{
return fquatSIMD(_mm_add_ps(q1.Data, q2.Data));
}
//operator*
GLM_FUNC_QUALIFIER fquatSIMD operator* (fquatSIMD const & q1, fquatSIMD const & q2)
inline fquatSIMD operator* (fquatSIMD const & q1, fquatSIMD const & q2)
{
// SSE2 STATS:
// 11 shuffle
@ -151,7 +151,7 @@ GLM_FUNC_QUALIFIER fquatSIMD operator* (fquatSIMD const & q1, fquatSIMD const &
return detail::fquatSIMD(w, x, y, z);
}
GLM_FUNC_QUALIFIER fvec4SIMD operator* (fquatSIMD const & q, fvec4SIMD const & v)
inline fvec4SIMD operator* (fquatSIMD const & q, fvec4SIMD const & v)
{
static const __m128 two = _mm_set1_ps(2.0f);
@ -173,24 +173,24 @@ GLM_FUNC_QUALIFIER fvec4SIMD operator* (fquatSIMD const & q, fvec4SIMD const & v
return _mm_add_ps(v.Data, _mm_add_ps(uv, uuv));
}
GLM_FUNC_QUALIFIER fvec4SIMD operator* (fvec4SIMD const & v, fquatSIMD const & q)
inline fvec4SIMD operator* (fvec4SIMD const & v, fquatSIMD const & q)
{
return glm::inverse(q) * v;
}
GLM_FUNC_QUALIFIER fquatSIMD operator* (fquatSIMD const & q, float s)
inline fquatSIMD operator* (fquatSIMD const & q, float s)
{
return fquatSIMD(_mm_mul_ps(q.Data, _mm_set1_ps(s)));
}
GLM_FUNC_QUALIFIER fquatSIMD operator* (float s, fquatSIMD const & q)
inline fquatSIMD operator* (float s, fquatSIMD const & q)
{
return fquatSIMD(_mm_mul_ps(_mm_set1_ps(s), q.Data));
}
//operator/
GLM_FUNC_QUALIFIER fquatSIMD operator/ (fquatSIMD const & q, float s)
inline fquatSIMD operator/ (fquatSIMD const & q, float s)
{
return fquatSIMD(_mm_div_ps(q.Data, _mm_set1_ps(s)));
}
@ -199,7 +199,7 @@ GLM_FUNC_QUALIFIER fquatSIMD operator/ (fquatSIMD const & q, float s)
}//namespace detail
GLM_FUNC_QUALIFIER quat quat_cast
inline quat quat_cast
(
detail::fquatSIMD const & x
)
@ -211,7 +211,7 @@ GLM_FUNC_QUALIFIER quat quat_cast
}
template <typename T>
GLM_FUNC_QUALIFIER detail::fquatSIMD quatSIMD_cast_impl(const T m0[], const T m1[], const T m2[])
inline detail::fquatSIMD quatSIMD_cast_impl(const T m0[], const T m1[], const T m2[])
{
T trace = m0[0] + m1[1] + m2[2] + T(1.0);
if (trace > T(0))
@ -266,7 +266,7 @@ GLM_FUNC_QUALIFIER detail::fquatSIMD quatSIMD_cast_impl(const T m0[], const T m1
}
}
GLM_FUNC_QUALIFIER detail::fquatSIMD quatSIMD_cast
inline detail::fquatSIMD quatSIMD_cast
(
detail::fmat4x4SIMD const & m
)
@ -284,7 +284,7 @@ GLM_FUNC_QUALIFIER detail::fquatSIMD quatSIMD_cast
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::fquatSIMD quatSIMD_cast
inline detail::fquatSIMD quatSIMD_cast
(
detail::tmat4x4<T, P> const & m
)
@ -293,7 +293,7 @@ GLM_FUNC_QUALIFIER detail::fquatSIMD quatSIMD_cast
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::fquatSIMD quatSIMD_cast
inline detail::fquatSIMD quatSIMD_cast
(
detail::tmat3x3<T, P> const & m
)
@ -302,7 +302,7 @@ GLM_FUNC_QUALIFIER detail::fquatSIMD quatSIMD_cast
}
GLM_FUNC_QUALIFIER detail::fmat4x4SIMD mat4SIMD_cast
inline detail::fmat4x4SIMD mat4SIMD_cast
(
detail::fquatSIMD const & q
)
@ -357,7 +357,7 @@ GLM_FUNC_QUALIFIER detail::fmat4x4SIMD mat4SIMD_cast
return result;
}
GLM_FUNC_QUALIFIER mat4 mat4_cast
inline mat4 mat4_cast
(
detail::fquatSIMD const & q
)
@ -367,7 +367,7 @@ GLM_FUNC_QUALIFIER mat4 mat4_cast
GLM_FUNC_QUALIFIER float length
inline float length
(
detail::fquatSIMD const & q
)
@ -375,7 +375,7 @@ GLM_FUNC_QUALIFIER float length
return glm::sqrt(dot(q, q));
}
GLM_FUNC_QUALIFIER detail::fquatSIMD normalize
inline detail::fquatSIMD normalize
(
detail::fquatSIMD const & q
)
@ -383,7 +383,7 @@ GLM_FUNC_QUALIFIER detail::fquatSIMD normalize
return _mm_mul_ps(q.Data, _mm_set1_ps(1.0f / length(q)));
}
GLM_FUNC_QUALIFIER float dot
inline float dot
(
detail::fquatSIMD const & q1,
detail::fquatSIMD const & q2
@ -395,7 +395,7 @@ GLM_FUNC_QUALIFIER float dot
return result;
}
GLM_FUNC_QUALIFIER detail::fquatSIMD mix
inline detail::fquatSIMD mix
(
detail::fquatSIMD const & x,
detail::fquatSIMD const & y,
@ -421,7 +421,7 @@ GLM_FUNC_QUALIFIER detail::fquatSIMD mix
}
}
GLM_FUNC_QUALIFIER detail::fquatSIMD lerp
inline detail::fquatSIMD lerp
(
detail::fquatSIMD const & x,
detail::fquatSIMD const & y,
@ -435,7 +435,7 @@ GLM_FUNC_QUALIFIER detail::fquatSIMD lerp
return _mm_add_ps(x.Data, _mm_mul_ps(_mm_set1_ps(a), _mm_sub_ps(y.Data, x.Data)));
}
GLM_FUNC_QUALIFIER detail::fquatSIMD slerp
inline detail::fquatSIMD slerp
(
detail::fquatSIMD const & x,
detail::fquatSIMD const & y,
@ -473,7 +473,7 @@ GLM_FUNC_QUALIFIER detail::fquatSIMD slerp
}
GLM_FUNC_QUALIFIER detail::fquatSIMD fastMix
inline detail::fquatSIMD fastMix
(
detail::fquatSIMD const & x,
detail::fquatSIMD const & y,
@ -501,7 +501,7 @@ GLM_FUNC_QUALIFIER detail::fquatSIMD fastMix
}
}
GLM_FUNC_QUALIFIER detail::fquatSIMD fastSlerp
inline detail::fquatSIMD fastSlerp
(
detail::fquatSIMD const & x,
detail::fquatSIMD const & y,
@ -539,7 +539,7 @@ GLM_FUNC_QUALIFIER detail::fquatSIMD fastSlerp
GLM_FUNC_QUALIFIER detail::fquatSIMD conjugate
inline detail::fquatSIMD conjugate
(
detail::fquatSIMD const & q
)
@ -547,7 +547,7 @@ GLM_FUNC_QUALIFIER detail::fquatSIMD conjugate
return detail::fquatSIMD(_mm_mul_ps(q.Data, _mm_set_ps(1.0f, -1.0f, -1.0f, -1.0f)));
}
GLM_FUNC_QUALIFIER detail::fquatSIMD inverse
inline detail::fquatSIMD inverse
(
detail::fquatSIMD const & q
)
@ -556,7 +556,7 @@ GLM_FUNC_QUALIFIER detail::fquatSIMD inverse
}
GLM_FUNC_QUALIFIER detail::fquatSIMD angleAxisSIMD
inline detail::fquatSIMD angleAxisSIMD
(
float const & angle,
vec3 const & v
@ -577,7 +577,7 @@ GLM_FUNC_QUALIFIER detail::fquatSIMD angleAxisSIMD
v.x * s);
}
GLM_FUNC_QUALIFIER detail::fquatSIMD angleAxisSIMD
inline detail::fquatSIMD angleAxisSIMD
(
float const & angle,
float const & x,
@ -589,7 +589,7 @@ GLM_FUNC_QUALIFIER detail::fquatSIMD angleAxisSIMD
}
GLM_FUNC_QUALIFIER __m128 fastSin(__m128 x)
inline __m128 fastSin(__m128 x)
{
static const __m128 c0 = _mm_set1_ps(0.16666666666666666666666666666667f);
static const __m128 c1 = _mm_set1_ps(0.00833333333333333333333333333333f);

View File

@ -19,32 +19,32 @@ struct mask
//////////////////////////////////////
// Implicit basic constructors
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD()
inline fvec4SIMD::fvec4SIMD()
#ifdef GLM_SIMD_ENABLE_DEFAULT_INIT
: Data(_mm_set_ps(0.0f, 0.0f, 0.0f, 0.0f))
#endif
{}
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(__m128 const & Data) :
inline fvec4SIMD::fvec4SIMD(__m128 const & Data) :
Data(Data)
{}
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(fvec4SIMD const & v) :
inline fvec4SIMD::fvec4SIMD(fvec4SIMD const & v) :
Data(v.Data)
{}
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(vec4 const & v) :
inline fvec4SIMD::fvec4SIMD(vec4 const & v) :
Data(_mm_set_ps(v.w, v.z, v.y, v.x))
{}
//////////////////////////////////////
// Explicit basic constructors
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(float const & s) :
inline fvec4SIMD::fvec4SIMD(float const & s) :
Data(_mm_set1_ps(s))
{}
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(float const & x, float const & y, float const & z, float const & w) :
inline fvec4SIMD::fvec4SIMD(float const & x, float const & y, float const & z, float const & w) :
// Data(_mm_setr_ps(x, y, z, w))
Data(_mm_set_ps(w, z, y, x))
{}
@ -56,98 +56,98 @@ GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(float const & x, float const & y, float
//////////////////////////////////////
// Conversion vector constructors
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(vec2 const & v, float const & s1, float const & s2) :
inline fvec4SIMD::fvec4SIMD(vec2 const & v, float const & s1, float const & s2) :
Data(_mm_set_ps(s2, s1, v.y, v.x))
{}
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(float const & s1, vec2 const & v, float const & s2) :
inline fvec4SIMD::fvec4SIMD(float const & s1, vec2 const & v, float const & s2) :
Data(_mm_set_ps(s2, v.y, v.x, s1))
{}
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(float const & s1, float const & s2, vec2 const & v) :
inline fvec4SIMD::fvec4SIMD(float const & s1, float const & s2, vec2 const & v) :
Data(_mm_set_ps(v.y, v.x, s2, s1))
{}
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(vec3 const & v, float const & s) :
inline fvec4SIMD::fvec4SIMD(vec3 const & v, float const & s) :
Data(_mm_set_ps(s, v.z, v.y, v.x))
{}
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(float const & s, vec3 const & v) :
inline fvec4SIMD::fvec4SIMD(float const & s, vec3 const & v) :
Data(_mm_set_ps(v.z, v.y, v.x, s))
{}
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(vec2 const & v1, vec2 const & v2) :
inline fvec4SIMD::fvec4SIMD(vec2 const & v1, vec2 const & v2) :
Data(_mm_set_ps(v2.y, v2.x, v1.y, v1.x))
{}
//GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(ivec4SIMD const & v) :
//inline fvec4SIMD::fvec4SIMD(ivec4SIMD const & v) :
// Data(_mm_cvtepi32_ps(v.Data))
//{}
//////////////////////////////////////
// Unary arithmetic operators
GLM_FUNC_QUALIFIER fvec4SIMD& fvec4SIMD::operator=(fvec4SIMD const & v)
inline fvec4SIMD& fvec4SIMD::operator=(fvec4SIMD const & v)
{
this->Data = v.Data;
return *this;
}
GLM_FUNC_QUALIFIER fvec4SIMD& fvec4SIMD::operator+=(float const & s)
inline fvec4SIMD& fvec4SIMD::operator+=(float const & s)
{
this->Data = _mm_add_ps(Data, _mm_set_ps1(s));
return *this;
}
GLM_FUNC_QUALIFIER fvec4SIMD& fvec4SIMD::operator+=(fvec4SIMD const & v)
inline fvec4SIMD& fvec4SIMD::operator+=(fvec4SIMD const & v)
{
this->Data = _mm_add_ps(this->Data , v.Data);
return *this;
}
GLM_FUNC_QUALIFIER fvec4SIMD& fvec4SIMD::operator-=(float const & s)
inline fvec4SIMD& fvec4SIMD::operator-=(float const & s)
{
this->Data = _mm_sub_ps(Data, _mm_set_ps1(s));
return *this;
}
GLM_FUNC_QUALIFIER fvec4SIMD& fvec4SIMD::operator-=(fvec4SIMD const & v)
inline fvec4SIMD& fvec4SIMD::operator-=(fvec4SIMD const & v)
{
this->Data = _mm_sub_ps(this->Data , v.Data);
return *this;
}
GLM_FUNC_QUALIFIER fvec4SIMD& fvec4SIMD::operator*=(float const & s)
inline fvec4SIMD& fvec4SIMD::operator*=(float const & s)
{
this->Data = _mm_mul_ps(this->Data, _mm_set_ps1(s));
return *this;
}
GLM_FUNC_QUALIFIER fvec4SIMD& fvec4SIMD::operator*=(fvec4SIMD const & v)
inline fvec4SIMD& fvec4SIMD::operator*=(fvec4SIMD const & v)
{
this->Data = _mm_mul_ps(this->Data , v.Data);
return *this;
}
GLM_FUNC_QUALIFIER fvec4SIMD& fvec4SIMD::operator/=(float const & s)
inline fvec4SIMD& fvec4SIMD::operator/=(float const & s)
{
this->Data = _mm_div_ps(Data, _mm_set1_ps(s));
return *this;
}
GLM_FUNC_QUALIFIER fvec4SIMD& fvec4SIMD::operator/=(fvec4SIMD const & v)
inline fvec4SIMD& fvec4SIMD::operator/=(fvec4SIMD const & v)
{
this->Data = _mm_div_ps(this->Data , v.Data);
return *this;
}
GLM_FUNC_QUALIFIER fvec4SIMD& fvec4SIMD::operator++()
inline fvec4SIMD& fvec4SIMD::operator++()
{
this->Data = _mm_add_ps(this->Data , glm::detail::one);
return *this;
}
GLM_FUNC_QUALIFIER fvec4SIMD& fvec4SIMD::operator--()
inline fvec4SIMD& fvec4SIMD::operator--()
{
this->Data = _mm_sub_ps(this->Data, glm::detail::one);
return *this;
@ -157,7 +157,7 @@ GLM_FUNC_QUALIFIER fvec4SIMD& fvec4SIMD::operator--()
// Swizzle operators
template <comp X, comp Y, comp Z, comp W>
GLM_FUNC_QUALIFIER fvec4SIMD fvec4SIMD::swizzle() const
inline fvec4SIMD fvec4SIMD::swizzle() const
{
__m128 Data = _mm_shuffle_ps(
this->Data, this->Data,
@ -166,7 +166,7 @@ GLM_FUNC_QUALIFIER fvec4SIMD fvec4SIMD::swizzle() const
}
template <comp X, comp Y, comp Z, comp W>
GLM_FUNC_QUALIFIER fvec4SIMD& fvec4SIMD::swizzle()
inline fvec4SIMD& fvec4SIMD::swizzle()
{
this->Data = _mm_shuffle_ps(
this->Data, this->Data,
@ -175,96 +175,96 @@ GLM_FUNC_QUALIFIER fvec4SIMD& fvec4SIMD::swizzle()
}
// operator+
GLM_FUNC_QUALIFIER fvec4SIMD operator+ (fvec4SIMD const & v, float s)
inline fvec4SIMD operator+ (fvec4SIMD const & v, float s)
{
return fvec4SIMD(_mm_add_ps(v.Data, _mm_set1_ps(s)));
}
GLM_FUNC_QUALIFIER fvec4SIMD operator+ (float s, fvec4SIMD const & v)
inline fvec4SIMD operator+ (float s, fvec4SIMD const & v)
{
return fvec4SIMD(_mm_add_ps(_mm_set1_ps(s), v.Data));
}
GLM_FUNC_QUALIFIER fvec4SIMD operator+ (fvec4SIMD const & v1, fvec4SIMD const & v2)
inline fvec4SIMD operator+ (fvec4SIMD const & v1, fvec4SIMD const & v2)
{
return fvec4SIMD(_mm_add_ps(v1.Data, v2.Data));
}
//operator-
GLM_FUNC_QUALIFIER fvec4SIMD operator- (fvec4SIMD const & v, float s)
inline fvec4SIMD operator- (fvec4SIMD const & v, float s)
{
return fvec4SIMD(_mm_sub_ps(v.Data, _mm_set1_ps(s)));
}
GLM_FUNC_QUALIFIER fvec4SIMD operator- (float s, fvec4SIMD const & v)
inline fvec4SIMD operator- (float s, fvec4SIMD const & v)
{
return fvec4SIMD(_mm_sub_ps(_mm_set1_ps(s), v.Data));
}
GLM_FUNC_QUALIFIER fvec4SIMD operator- (fvec4SIMD const & v1, fvec4SIMD const & v2)
inline fvec4SIMD operator- (fvec4SIMD const & v1, fvec4SIMD const & v2)
{
return fvec4SIMD(_mm_sub_ps(v1.Data, v2.Data));
}
//operator*
GLM_FUNC_QUALIFIER fvec4SIMD operator* (fvec4SIMD const & v, float s)
inline fvec4SIMD operator* (fvec4SIMD const & v, float s)
{
__m128 par0 = v.Data;
__m128 par1 = _mm_set1_ps(s);
return fvec4SIMD(_mm_mul_ps(par0, par1));
}
GLM_FUNC_QUALIFIER fvec4SIMD operator* (float s, fvec4SIMD const & v)
inline fvec4SIMD operator* (float s, fvec4SIMD const & v)
{
__m128 par0 = _mm_set1_ps(s);
__m128 par1 = v.Data;
return fvec4SIMD(_mm_mul_ps(par0, par1));
}
GLM_FUNC_QUALIFIER fvec4SIMD operator* (fvec4SIMD const & v1, fvec4SIMD const & v2)
inline fvec4SIMD operator* (fvec4SIMD const & v1, fvec4SIMD const & v2)
{
return fvec4SIMD(_mm_mul_ps(v1.Data, v2.Data));
}
//operator/
GLM_FUNC_QUALIFIER fvec4SIMD operator/ (fvec4SIMD const & v, float s)
inline fvec4SIMD operator/ (fvec4SIMD const & v, float s)
{
__m128 par0 = v.Data;
__m128 par1 = _mm_set1_ps(s);
return fvec4SIMD(_mm_div_ps(par0, par1));
}
GLM_FUNC_QUALIFIER fvec4SIMD operator/ (float s, fvec4SIMD const & v)
inline fvec4SIMD operator/ (float s, fvec4SIMD const & v)
{
__m128 par0 = _mm_set1_ps(s);
__m128 par1 = v.Data;
return fvec4SIMD(_mm_div_ps(par0, par1));
}
GLM_FUNC_QUALIFIER fvec4SIMD operator/ (fvec4SIMD const & v1, fvec4SIMD const & v2)
inline fvec4SIMD operator/ (fvec4SIMD const & v1, fvec4SIMD const & v2)
{
return fvec4SIMD(_mm_div_ps(v1.Data, v2.Data));
}
// Unary constant operators
GLM_FUNC_QUALIFIER fvec4SIMD operator- (fvec4SIMD const & v)
inline fvec4SIMD operator- (fvec4SIMD const & v)
{
return fvec4SIMD(_mm_sub_ps(_mm_setzero_ps(), v.Data));
}
GLM_FUNC_QUALIFIER fvec4SIMD operator++ (fvec4SIMD const & v, int)
inline fvec4SIMD operator++ (fvec4SIMD const & v, int)
{
return fvec4SIMD(_mm_add_ps(v.Data, glm::detail::one));
}
GLM_FUNC_QUALIFIER fvec4SIMD operator-- (fvec4SIMD const & v, int)
inline fvec4SIMD operator-- (fvec4SIMD const & v, int)
{
return fvec4SIMD(_mm_sub_ps(v.Data, glm::detail::one));
}
}//namespace detail
GLM_FUNC_QUALIFIER vec4 vec4_cast
inline vec4 vec4_cast
(
detail::fvec4SIMD const & x
)
@ -274,7 +274,7 @@ GLM_FUNC_QUALIFIER vec4 vec4_cast
return Result;
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD abs
inline detail::fvec4SIMD abs
(
detail::fvec4SIMD const & x
)
@ -282,7 +282,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD abs
return detail::sse_abs_ps(x.Data);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD sign
inline detail::fvec4SIMD sign
(
detail::fvec4SIMD const & x
)
@ -290,7 +290,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD sign
return detail::sse_sgn_ps(x.Data);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD floor
inline detail::fvec4SIMD floor
(
detail::fvec4SIMD const & x
)
@ -298,7 +298,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD floor
return detail::sse_flr_ps(x.Data);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD trunc
inline detail::fvec4SIMD trunc
(
detail::fvec4SIMD const & x
)
@ -318,7 +318,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD trunc
return _mm_or_ps(And0, And1);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD round
inline detail::fvec4SIMD round
(
detail::fvec4SIMD const & x
)
@ -326,7 +326,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD round
return detail::sse_rnd_ps(x.Data);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD ceil
inline detail::fvec4SIMD ceil
(
detail::fvec4SIMD const & x
)
@ -334,7 +334,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD ceil
return detail::sse_ceil_ps(x.Data);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD fract
inline detail::fvec4SIMD fract
(
detail::fvec4SIMD const & x
)
@ -342,7 +342,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD fract
return detail::sse_frc_ps(x.Data);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD mod
inline detail::fvec4SIMD mod
(
detail::fvec4SIMD const & x,
detail::fvec4SIMD const & y
@ -351,7 +351,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD mod
return detail::sse_mod_ps(x.Data, y.Data);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD mod
inline detail::fvec4SIMD mod
(
detail::fvec4SIMD const & x,
float const & y
@ -360,7 +360,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD mod
return detail::sse_mod_ps(x.Data, _mm_set1_ps(y));
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD min
inline detail::fvec4SIMD min
(
detail::fvec4SIMD const & x,
detail::fvec4SIMD const & y
@ -369,7 +369,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD min
return _mm_min_ps(x.Data, y.Data);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD min
inline detail::fvec4SIMD min
(
detail::fvec4SIMD const & x,
float const & y
@ -378,7 +378,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD min
return _mm_min_ps(x.Data, _mm_set1_ps(y));
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD max
inline detail::fvec4SIMD max
(
detail::fvec4SIMD const & x,
detail::fvec4SIMD const & y
@ -387,7 +387,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD max
return _mm_max_ps(x.Data, y.Data);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD max
inline detail::fvec4SIMD max
(
detail::fvec4SIMD const & x,
float const & y
@ -396,7 +396,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD max
return _mm_max_ps(x.Data, _mm_set1_ps(y));
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD clamp
inline detail::fvec4SIMD clamp
(
detail::fvec4SIMD const & x,
detail::fvec4SIMD const & minVal,
@ -406,7 +406,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD clamp
return detail::sse_clp_ps(x.Data, minVal.Data, maxVal.Data);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD clamp
inline detail::fvec4SIMD clamp
(
detail::fvec4SIMD const & x,
float const & minVal,
@ -416,7 +416,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD clamp
return detail::sse_clp_ps(x.Data, _mm_set1_ps(minVal), _mm_set1_ps(maxVal));
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD mix
inline detail::fvec4SIMD mix
(
detail::fvec4SIMD const & x,
detail::fvec4SIMD const & y,
@ -428,7 +428,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD mix
return _mm_add_ps(x.Data, Mul0);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD step
inline detail::fvec4SIMD step
(
detail::fvec4SIMD const & edge,
detail::fvec4SIMD const & x
@ -438,7 +438,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD step
return _mm_max_ps(_mm_min_ps(cmp0, _mm_setzero_ps()), detail::one);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD step
inline detail::fvec4SIMD step
(
float const & edge,
detail::fvec4SIMD const & x
@ -448,7 +448,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD step
return _mm_max_ps(_mm_min_ps(cmp0, _mm_setzero_ps()), detail::one);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD smoothstep
inline detail::fvec4SIMD smoothstep
(
detail::fvec4SIMD const & edge0,
detail::fvec4SIMD const & edge1,
@ -458,7 +458,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD smoothstep
return detail::sse_ssp_ps(edge0.Data, edge1.Data, x.Data);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD smoothstep
inline detail::fvec4SIMD smoothstep
(
float const & edge0,
float const & edge1,
@ -468,7 +468,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD smoothstep
return detail::sse_ssp_ps(_mm_set1_ps(edge0), _mm_set1_ps(edge1), x.Data);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD fma
inline detail::fvec4SIMD fma
(
detail::fvec4SIMD const & a,
detail::fvec4SIMD const & b,
@ -478,7 +478,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD fma
return _mm_add_ps(_mm_mul_ps(a.Data, b.Data), c.Data);
}
GLM_FUNC_QUALIFIER float length
inline float length
(
detail::fvec4SIMD const & x
)
@ -490,7 +490,7 @@ GLM_FUNC_QUALIFIER float length
return Result;
}
GLM_FUNC_QUALIFIER float fastLength
inline float fastLength
(
detail::fvec4SIMD const & x
)
@ -502,7 +502,7 @@ GLM_FUNC_QUALIFIER float fastLength
return Result;
}
GLM_FUNC_QUALIFIER float niceLength
inline float niceLength
(
detail::fvec4SIMD const & x
)
@ -514,7 +514,7 @@ GLM_FUNC_QUALIFIER float niceLength
return Result;
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD length4
inline detail::fvec4SIMD length4
(
detail::fvec4SIMD const & x
)
@ -522,7 +522,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD length4
return sqrt(dot4(x, x));
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD fastLength4
inline detail::fvec4SIMD fastLength4
(
detail::fvec4SIMD const & x
)
@ -530,7 +530,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD fastLength4
return fastSqrt(dot4(x, x));
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD niceLength4
inline detail::fvec4SIMD niceLength4
(
detail::fvec4SIMD const & x
)
@ -538,7 +538,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD niceLength4
return niceSqrt(dot4(x, x));
}
GLM_FUNC_QUALIFIER float distance
inline float distance
(
detail::fvec4SIMD const & p0,
detail::fvec4SIMD const & p1
@ -549,7 +549,7 @@ GLM_FUNC_QUALIFIER float distance
return Result;
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD distance4
inline detail::fvec4SIMD distance4
(
detail::fvec4SIMD const & p0,
detail::fvec4SIMD const & p1
@ -558,7 +558,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD distance4
return detail::sse_dst_ps(p0.Data, p1.Data);
}
GLM_FUNC_QUALIFIER float dot
inline float dot
(
detail::fvec4SIMD const & x,
detail::fvec4SIMD const & y
@ -569,7 +569,7 @@ GLM_FUNC_QUALIFIER float dot
return Result;
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD dot4
inline detail::fvec4SIMD dot4
(
detail::fvec4SIMD const & x,
detail::fvec4SIMD const & y
@ -578,7 +578,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD dot4
return detail::sse_dot_ps(x.Data, y.Data);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD cross
inline detail::fvec4SIMD cross
(
detail::fvec4SIMD const & x,
detail::fvec4SIMD const & y
@ -587,7 +587,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD cross
return detail::sse_xpd_ps(x.Data, y.Data);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD normalize
inline detail::fvec4SIMD normalize
(
detail::fvec4SIMD const & x
)
@ -598,7 +598,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD normalize
return mul0;
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD fastNormalize
inline detail::fvec4SIMD fastNormalize
(
detail::fvec4SIMD const & x
)
@ -609,7 +609,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD fastNormalize
return mul0;
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD faceforward
inline detail::fvec4SIMD faceforward
(
detail::fvec4SIMD const & N,
detail::fvec4SIMD const & I,
@ -619,7 +619,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD faceforward
return detail::sse_ffd_ps(N.Data, I.Data, Nref.Data);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD reflect
inline detail::fvec4SIMD reflect
(
detail::fvec4SIMD const & I,
detail::fvec4SIMD const & N
@ -628,7 +628,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD reflect
return detail::sse_rfe_ps(I.Data, N.Data);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD refract
inline detail::fvec4SIMD refract
(
detail::fvec4SIMD const & I,
detail::fvec4SIMD const & N,
@ -638,24 +638,24 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD refract
return detail::sse_rfa_ps(I.Data, N.Data, _mm_set1_ps(eta));
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD sqrt(detail::fvec4SIMD const & x)
inline detail::fvec4SIMD sqrt(detail::fvec4SIMD const & x)
{
return _mm_mul_ps(inversesqrt(x).Data, x.Data);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD niceSqrt(detail::fvec4SIMD const & x)
inline detail::fvec4SIMD niceSqrt(detail::fvec4SIMD const & x)
{
return _mm_sqrt_ps(x.Data);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD fastSqrt(detail::fvec4SIMD const & x)
inline detail::fvec4SIMD fastSqrt(detail::fvec4SIMD const & x)
{
return _mm_mul_ps(fastInversesqrt(x.Data).Data, x.Data);
}
// SSE scalar reciprocal sqrt using rsqrt op, plus one Newton-Rhaphson iteration
// By Elan Ruskin, http://assemblyrequired.crashworks.org/
GLM_FUNC_QUALIFIER detail::fvec4SIMD inversesqrt(detail::fvec4SIMD const & x)
inline detail::fvec4SIMD inversesqrt(detail::fvec4SIMD const & x)
{
GLM_ALIGN(4) static const __m128 three = {3, 3, 3, 3}; // aligned consts for fast load
GLM_ALIGN(4) static const __m128 half = {0.5,0.5,0.5,0.5};
@ -666,7 +666,7 @@ GLM_FUNC_QUALIFIER detail::fvec4SIMD inversesqrt(detail::fvec4SIMD const & x)
return _mm_mul_ps(halfrecip, threeminus_xrr);
}
GLM_FUNC_QUALIFIER detail::fvec4SIMD fastInversesqrt(detail::fvec4SIMD const & x)
inline detail::fvec4SIMD fastInversesqrt(detail::fvec4SIMD const & x)
{
return _mm_rsqrt_ps(x.Data);
}

View File

@ -10,7 +10,7 @@
namespace glm{
template <typename genType>
GLM_FUNC_QUALIFIER genType catmullRom
inline genType catmullRom
(
genType const & v1,
genType const & v2,
@ -33,7 +33,7 @@ GLM_FUNC_QUALIFIER genType catmullRom
}
template <typename genType>
GLM_FUNC_QUALIFIER genType hermite
inline genType hermite
(
genType const & v1,
genType const & t1,
@ -55,7 +55,7 @@ GLM_FUNC_QUALIFIER genType hermite
}
template <typename genType>
GLM_FUNC_QUALIFIER genType cubic
inline genType cubic
(
genType const & v1,
genType const & v2,

View File

@ -13,7 +13,7 @@
namespace glm{
namespace detail
{
GLM_FUNC_QUALIFIER std::string format(const char* msg, ...)
inline std::string format(const char* msg, ...)
{
std::size_t const STRING_BUFFER(4096);
char text[STRING_BUFFER];
@ -40,22 +40,22 @@ namespace detail
////////////////////////////////
// Scalars
GLM_FUNC_QUALIFIER std::string to_string(float x)
inline std::string to_string(float x)
{
return detail::format("float(%f)", x);
}
GLM_FUNC_QUALIFIER std::string to_string(double x)
inline std::string to_string(double x)
{
return detail::format("double(%f)", x);
}
GLM_FUNC_QUALIFIER std::string to_string(int x)
inline std::string to_string(int x)
{
return detail::format("int(%d)", x);
}
GLM_FUNC_QUALIFIER std::string to_string(unsigned int x)
inline std::string to_string(unsigned int x)
{
return detail::format("uint(%d)", x);
}
@ -64,7 +64,7 @@ namespace detail
// Bool vectors
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tvec2<bool, P> const & v
)
@ -75,7 +75,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tvec3<bool, P> const & v
)
@ -87,7 +87,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tvec4<bool, P> const & v
)
@ -103,7 +103,7 @@ namespace detail
// Float vectors
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tvec2<float, P> const & v
)
@ -112,7 +112,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tvec3<float, P> const & v
)
@ -121,7 +121,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tvec4<float, P> const & v
)
@ -133,7 +133,7 @@ namespace detail
// Double vectors
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tvec2<double, P> const & v
)
@ -142,7 +142,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tvec3<double, P> const & v
)
@ -151,7 +151,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tvec4<double, P> const & v
)
@ -163,7 +163,7 @@ namespace detail
// Int vectors
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tvec2<int, P> const & v
)
@ -172,7 +172,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tvec3<int, P> const & v
)
@ -181,7 +181,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tvec4<int, P> const & v
)
@ -193,7 +193,7 @@ namespace detail
// Unsigned int vectors
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tvec2<unsigned int, P> const & v
)
@ -202,7 +202,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tvec3<unsigned int, P> const & v
)
@ -211,7 +211,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tvec4<unsigned int, P> const & v
)
@ -223,7 +223,7 @@ namespace detail
// Float matrices
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tmat2x2<float, P> const & x
)
@ -234,7 +234,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tmat2x3<float, P> const & x
)
@ -245,7 +245,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tmat2x4<float, P> const & x
)
@ -256,7 +256,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tmat3x2<float, P> const & x
)
@ -268,7 +268,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tmat3x3<float, P> const & x
)
@ -280,7 +280,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tmat3x4<float, P> const & x
)
@ -292,7 +292,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tmat4x2<float, P> const & x
)
@ -305,7 +305,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tmat4x3<float, P> const & x
)
@ -318,7 +318,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tmat4x4<float, P> const & x
)
@ -334,7 +334,7 @@ namespace detail
// Double matrices
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tmat2x2<double, P> const & x
)
@ -345,7 +345,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tmat2x3<double, P> const & x
)
@ -356,7 +356,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tmat2x4<double, P> const & x
)
@ -367,7 +367,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tmat3x2<double, P> const & x
)
@ -379,7 +379,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tmat3x3<double, P> const & x
)
@ -391,7 +391,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tmat3x4<double, P> const & x
)
@ -403,7 +403,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tmat4x2<double, P> const & x
)
@ -416,7 +416,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tmat4x3<double, P> const & x
)
@ -429,7 +429,7 @@ namespace detail
}
template <precision P>
GLM_FUNC_QUALIFIER std::string to_string
inline std::string to_string
(
detail::tmat4x4<double, P> const & x
)

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> translate(
inline detail::tmat4x4<T, P> translate(
detail::tvec3<T, P> const & v)
{
return translate(
@ -18,7 +18,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> rotate(
inline detail::tmat4x4<T, P> rotate(
T angle,
detail::tvec3<T, P> const & v)
{
@ -27,7 +27,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> scale(
inline detail::tmat4x4<T, P> scale(
detail::tvec3<T, P> const & v)
{
return scale(

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> shearX2D(
inline detail::tmat3x3<T, P> shearX2D(
const detail::tmat3x3<T, P>& m,
T s)
{
@ -20,7 +20,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> shearY2D(
inline detail::tmat3x3<T, P> shearY2D(
const detail::tmat3x3<T, P>& m,
T s)
{
@ -30,7 +30,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> shearX3D(
inline detail::tmat4x4<T, P> shearX3D(
const detail::tmat4x4<T, P>& m,
T s,
T t)
@ -42,7 +42,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> shearY3D(
inline detail::tmat4x4<T, P> shearY3D(
const detail::tmat4x4<T, P>& m,
T s,
T t)
@ -54,7 +54,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> shearZ3D(
inline detail::tmat4x4<T, P> shearZ3D(
const detail::tmat4x4<T, P>& m,
T s,
T t)
@ -66,7 +66,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> reflect2D(
inline detail::tmat3x3<T, P> reflect2D(
const detail::tmat3x3<T, P>& m,
const detail::tvec3<T, P>& normal)
{
@ -79,7 +79,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> reflect3D(
inline detail::tmat4x4<T, P> reflect3D(
const detail::tmat4x4<T, P>& m,
const detail::tvec3<T, P>& normal)
{
@ -99,7 +99,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> proj2D(
inline detail::tmat3x3<T, P> proj2D(
const detail::tmat3x3<T, P>& m,
const detail::tvec3<T, P>& normal)
{
@ -112,7 +112,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> proj3D(
inline detail::tmat4x4<T, P> proj3D(
const detail::tmat4x4<T, P>& m,
const detail::tvec3<T, P>& normal)
{
@ -130,7 +130,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> scaleBias(
inline detail::tmat4x4<T, P> scaleBias(
T scale,
T bias)
{
@ -143,7 +143,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> scaleBias(
inline detail::tmat4x4<T, P> scaleBias(
const detail::tmat4x4<T, P>& m,
T scale,
T bias)

View File

@ -10,7 +10,7 @@
namespace glm
{
template <typename genType>
GLM_FUNC_QUALIFIER genType angle
inline genType angle
(
genType const & x,
genType const & y
@ -27,7 +27,7 @@ namespace glm
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER T angle
inline T angle
(
vecType<T, P> const & x,
vecType<T, P> const & y
@ -45,7 +45,7 @@ namespace glm
//! \todo epsilon is hard coded to 0.01
template <typename T, precision P>
GLM_FUNC_QUALIFIER T orientedAngle
inline T orientedAngle
(
detail::tvec2<T, P> const & x,
detail::tvec2<T, P> const & y
@ -67,7 +67,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T orientedAngle
inline T orientedAngle
(
detail::tvec3<T, P> const & x,
detail::tvec3<T, P> const & y,

View File

@ -21,7 +21,7 @@ namespace detail
template <typename T, precision P>
struct compute_areCollinear<T, P, tvec2>
{
GLM_FUNC_QUALIFIER static bool call(detail::tvec2<T, P> const & v0, detail::tvec2<T, P> const & v1, T const & epsilon)
inline static bool call(detail::tvec2<T, P> const & v0, detail::tvec2<T, P> const & v1, T const & epsilon)
{
return length(cross(detail::tvec3<T, P>(v0, static_cast<T>(0)), detail::tvec3<T, P>(v1, static_cast<T>(0)))) < epsilon;
}
@ -30,7 +30,7 @@ namespace detail
template <typename T, precision P>
struct compute_areCollinear<T, P, tvec3>
{
GLM_FUNC_QUALIFIER static bool call(detail::tvec3<T, P> const & v0, detail::tvec3<T, P> const & v1, T const & epsilon)
inline static bool call(detail::tvec3<T, P> const & v0, detail::tvec3<T, P> const & v1, T const & epsilon)
{
return length(cross(v0, v1)) < epsilon;
}
@ -39,7 +39,7 @@ namespace detail
template <typename T, precision P>
struct compute_areCollinear<T, P, tvec4>
{
GLM_FUNC_QUALIFIER static bool call(detail::tvec4<T, P> const & v0, detail::tvec4<T, P> const & v1, T const & epsilon)
inline static bool call(detail::tvec4<T, P> const & v0, detail::tvec4<T, P> const & v1, T const & epsilon)
{
return length(cross(detail::tvec3<T, P>(v0), detail::tvec3<T, P>(v1))) < epsilon;
}
@ -51,7 +51,7 @@ namespace detail
template <typename T, precision P>
struct compute_isCompNull<T, P, tvec2>
{
GLM_FUNC_QUALIFIER static detail::tvec2<bool, P> call(detail::tvec2<T, P> const & v, T const & epsilon)
inline static detail::tvec2<bool, P> call(detail::tvec2<T, P> const & v, T const & epsilon)
{
return detail::tvec2<bool, P>(
(abs(v.x) < epsilon),
@ -62,7 +62,7 @@ namespace detail
template <typename T, precision P>
struct compute_isCompNull<T, P, tvec3>
{
GLM_FUNC_QUALIFIER static detail::tvec3<bool, P> call(detail::tvec3<T, P> const & v, T const & epsilon)
inline static detail::tvec3<bool, P> call(detail::tvec3<T, P> const & v, T const & epsilon)
{
return detail::tvec3<bool, P>(
(abs(v.x) < epsilon),
@ -74,7 +74,7 @@ namespace detail
template <typename T, precision P>
struct compute_isCompNull<T, P, tvec4>
{
GLM_FUNC_QUALIFIER static detail::tvec4<bool, P> call(detail::tvec4<T, P> const & v, T const & epsilon)
inline static detail::tvec4<bool, P> call(detail::tvec4<T, P> const & v, T const & epsilon)
{
return detail::tvec4<bool, P>(
(abs(v.x) < epsilon),
@ -87,7 +87,7 @@ namespace detail
}//namespace detail
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER bool areCollinear
inline bool areCollinear
(
vecType<T, P> const & v0,
vecType<T, P> const & v1,
@ -98,7 +98,7 @@ namespace detail
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER bool areOrthogonal
inline bool areOrthogonal
(
vecType<T, P> const & v0,
vecType<T, P> const & v1,
@ -111,7 +111,7 @@ namespace detail
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER bool isNormalized
inline bool isNormalized
(
vecType<T, P> const & v,
T const & epsilon
@ -121,7 +121,7 @@ namespace detail
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER bool isNull
inline bool isNull
(
vecType<T, P> const & v,
T const & epsilon
@ -131,7 +131,7 @@ namespace detail
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<bool, P> isCompNull
inline vecType<bool, P> isCompNull
(
vecType<T, P> const & v,
T const & epsilon
@ -141,7 +141,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<bool, P> isCompNull
inline detail::tvec2<bool, P> isCompNull
(
detail::tvec2<T, P> const & v,
T const & epsilon)
@ -152,7 +152,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<bool, P> isCompNull
inline detail::tvec3<bool, P> isCompNull
(
detail::tvec3<T, P> const & v,
T const & epsilon
@ -165,7 +165,7 @@ namespace detail
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<bool, P> isCompNull
inline detail::tvec4<bool, P> isCompNull
(
detail::tvec4<T, P> const & v,
T const & epsilon
@ -179,7 +179,7 @@ namespace detail
}
template <typename T, precision P, template <typename, precision> class vecType>
GLM_FUNC_QUALIFIER bool areOrthonormal
inline bool areOrthonormal
(
vecType<T, P> const & v0,
vecType<T, P> const & v1,

24
deps/glm/gtx/wrap.inl vendored
View File

@ -13,7 +13,7 @@
namespace glm
{
template <typename genType>
GLM_FUNC_QUALIFIER genType clamp
inline genType clamp
(
genType const & Texcoord
)
@ -22,7 +22,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> clamp
inline detail::tvec2<T, P> clamp
(
detail::tvec2<T, P> const & Texcoord
)
@ -34,7 +34,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> clamp
inline detail::tvec3<T, P> clamp
(
detail::tvec3<T, P> const & Texcoord
)
@ -46,7 +46,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> clamp
inline detail::tvec4<T, P> clamp
(
detail::tvec4<T, P> const & Texcoord
)
@ -61,7 +61,7 @@ namespace glm
// repeat
template <typename genType>
GLM_FUNC_QUALIFIER genType repeat
inline genType repeat
(
genType const & Texcoord
)
@ -70,7 +70,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> repeat
inline detail::tvec2<T, P> repeat
(
detail::tvec2<T, P> const & Texcoord
)
@ -82,7 +82,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> repeat
inline detail::tvec3<T, P> repeat
(
detail::tvec3<T, P> const & Texcoord
)
@ -94,7 +94,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> repeat
inline detail::tvec4<T, P> repeat
(
detail::tvec4<T, P> const & Texcoord
)
@ -109,7 +109,7 @@ namespace glm
// mirrorRepeat
template <typename genType, precision P>
GLM_FUNC_QUALIFIER genType mirrorRepeat
inline genType mirrorRepeat
(
genType const & Texcoord
)
@ -128,7 +128,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec2<T, P> mirrorRepeat
inline detail::tvec2<T, P> mirrorRepeat
(
detail::tvec2<T, P> const & Texcoord
)
@ -140,7 +140,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec3<T, P> mirrorRepeat
inline detail::tvec3<T, P> mirrorRepeat
(
detail::tvec3<T, P> const & Texcoord
)
@ -152,7 +152,7 @@ namespace glm
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER detail::tvec4<T, P> mirrorRepeat
inline detail::tvec4<T, P> mirrorRepeat
(
detail::tvec4<T, P> const & Texcoord
)