Merge branch '0.9.3' into 0.9.4
This commit is contained in:
commit
64e06fa57a
@ -26,6 +26,8 @@
|
|||||||
/// @author Christophe Riccio
|
/// @author Christophe Riccio
|
||||||
///////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include <cmath>
|
||||||
|
|
||||||
//! Workaround for compatibility with other libraries
|
//! Workaround for compatibility with other libraries
|
||||||
#ifdef max
|
#ifdef max
|
||||||
#undef max
|
#undef max
|
||||||
|
|||||||
@ -53,7 +53,7 @@ namespace glm
|
|||||||
namespace glm{
|
namespace glm{
|
||||||
namespace detail
|
namespace detail
|
||||||
{
|
{
|
||||||
//! Internal class for implementing swizzle operators
|
// Internal class for implementing swizzle operators
|
||||||
template <typename T, int N>
|
template <typename T, int N>
|
||||||
struct _swizzle_base0
|
struct _swizzle_base0
|
||||||
{
|
{
|
||||||
@ -92,7 +92,7 @@ namespace detail
|
|||||||
V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2), this->elem(E3)); }
|
V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2), this->elem(E3)); }
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Internal class for implementing swizzle operators
|
// Internal class for implementing swizzle operators
|
||||||
/*!
|
/*!
|
||||||
Template parameters:
|
Template parameters:
|
||||||
|
|
||||||
@ -183,7 +183,7 @@ namespace detail
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Specialization for swizzles containing duplicate elements. These cannot be modified.
|
// Specialization for swizzles containing duplicate elements. These cannot be modified.
|
||||||
template <typename ValueType, typename VecType, int N, int E0, int E1, int E2, int E3>
|
template <typename ValueType, typename VecType, int N, int E0, int E1, int E2, int E3>
|
||||||
struct _swizzle_base2<ValueType,VecType,N,E0,E1,E2,E3,1> : public _swizzle_base1<ValueType,VecType,E0,E1,E2,E3,N>
|
struct _swizzle_base2<ValueType,VecType,N,E0,E1,E2,E3,1> : public _swizzle_base1<ValueType,VecType,E0,E1,E2,E3,N>
|
||||||
{
|
{
|
||||||
|
|||||||
@ -29,8 +29,10 @@
|
|||||||
namespace glm{
|
namespace glm{
|
||||||
namespace detail{
|
namespace detail{
|
||||||
|
|
||||||
|
#if(GLM_COMPILER & GLM_COMPILER_VC)
|
||||||
#pragma warning(push)
|
#pragma warning(push)
|
||||||
#pragma warning(disable : 4510 4512 4610)
|
#pragma warning(disable : 4510 4512 4610)
|
||||||
|
#endif
|
||||||
|
|
||||||
union ieee754_QNAN
|
union ieee754_QNAN
|
||||||
{
|
{
|
||||||
@ -43,7 +45,9 @@ namespace detail{
|
|||||||
ieee754_QNAN() : f(0.0)/*, mantissa(0x7FFFFF), exp(0xFF), sign(0x0)*/ {}
|
ieee754_QNAN() : f(0.0)/*, mantissa(0x7FFFFF), exp(0xFF), sign(0x0)*/ {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if(GLM_COMPILER & GLM_COMPILER_VC)
|
||||||
#pragma warning(pop)
|
#pragma warning(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
static const __m128 GLM_VAR_USED zero = _mm_setzero_ps();
|
static const __m128 GLM_VAR_USED zero = _mm_setzero_ps();
|
||||||
static const __m128 GLM_VAR_USED one = _mm_set_ps1(1.0f);
|
static const __m128 GLM_VAR_USED one = _mm_set_ps1(1.0f);
|
||||||
|
|||||||
@ -465,6 +465,8 @@
|
|||||||
# pragma message("GLM: C++ with GNU language extensions")
|
# pragma message("GLM: C++ with GNU language extensions")
|
||||||
# elif(GLM_LANG == GLM_LANG_CXXMS)
|
# elif(GLM_LANG == GLM_LANG_CXXMS)
|
||||||
# pragma message("GLM: C++ with VC language extensions")
|
# pragma message("GLM: C++ with VC language extensions")
|
||||||
|
# else
|
||||||
|
# pragma message("GLM: C++ language undetected")
|
||||||
# endif//GLM_MODEL
|
# endif//GLM_MODEL
|
||||||
#endif//GLM_MESSAGE
|
#endif//GLM_MESSAGE
|
||||||
|
|
||||||
|
|||||||
@ -48,32 +48,34 @@ namespace detail
|
|||||||
template <typename T> struct tmat4x3;
|
template <typename T> struct tmat4x3;
|
||||||
template <typename T> struct tmat4x4;
|
template <typename T> struct tmat4x4;
|
||||||
|
|
||||||
//! \brief Template for 2 * 2 matrix of floating-point numbers.
|
// @brief Template for 2 * 2 matrix of floating-point numbers.
|
||||||
//! \ingroup core_template
|
// @ingroup core_template
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct tmat2x2
|
struct tmat2x2
|
||||||
{
|
{
|
||||||
|
// Implementation detail
|
||||||
enum ctor{null};
|
enum ctor{null};
|
||||||
typedef T value_type;
|
typedef T value_type;
|
||||||
typedef std::size_t size_type;
|
typedef std::size_t size_type;
|
||||||
typedef tvec2<T> col_type;
|
typedef tvec2<T> col_type;
|
||||||
typedef tvec2<T> row_type;
|
typedef tvec2<T> row_type;
|
||||||
GLM_FUNC_DECL size_type length() const;
|
|
||||||
static GLM_FUNC_DECL size_type col_size();
|
static GLM_FUNC_DECL size_type col_size();
|
||||||
static GLM_FUNC_DECL size_type row_size();
|
static GLM_FUNC_DECL size_type row_size();
|
||||||
|
|
||||||
typedef tmat2x2<T> type;
|
typedef tmat2x2<T> type;
|
||||||
typedef tmat2x2<T> transpose_type;
|
typedef tmat2x2<T> transpose_type;
|
||||||
|
|
||||||
|
GLM_FUNC_DECL size_type length() const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Implementation detail
|
// Implementation detail
|
||||||
GLM_FUNC_DECL tmat2x2<T> _inverse() const;
|
GLM_FUNC_DECL tmat2x2<T> _inverse() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//////////////////////////////////////
|
//////////////////////////////////////
|
||||||
// Data
|
// Implementation detail
|
||||||
col_type value[2];
|
col_type value[2];
|
||||||
|
|
||||||
public:
|
public:
|
||||||
//////////////////////////////////////
|
//////////////////////////////////////
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|||||||
@ -48,8 +48,8 @@ namespace detail
|
|||||||
template <typename T> struct tmat4x3;
|
template <typename T> struct tmat4x3;
|
||||||
template <typename T> struct tmat4x4;
|
template <typename T> struct tmat4x4;
|
||||||
|
|
||||||
//! \brief Template for 2 columns and 3 rows matrix of floating-point numbers.
|
// \brief Template for 2 columns and 3 rows matrix of floating-point numbers.
|
||||||
//! \ingroup core_template
|
// \ingroup core_template
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct tmat2x3
|
struct tmat2x3
|
||||||
{
|
{
|
||||||
|
|||||||
@ -48,8 +48,8 @@ namespace detail
|
|||||||
template <typename T> struct tmat4x3;
|
template <typename T> struct tmat4x3;
|
||||||
template <typename T> struct tmat4x4;
|
template <typename T> struct tmat4x4;
|
||||||
|
|
||||||
//! Template for 2 columns and 4 rows matrix of floating-point numbers.
|
// Template for 2 columns and 4 rows matrix of floating-point numbers.
|
||||||
//! \ingroup core_template
|
// \ingroup core_template
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct tmat2x4
|
struct tmat2x4
|
||||||
{
|
{
|
||||||
|
|||||||
@ -48,8 +48,8 @@ namespace detail
|
|||||||
template <typename T> struct tmat4x3;
|
template <typename T> struct tmat4x3;
|
||||||
template <typename T> struct tmat4x4;
|
template <typename T> struct tmat4x4;
|
||||||
|
|
||||||
//! \brief Template for 3 columns and 2 rows matrix of floating-point numbers.
|
// \brief Template for 3 columns and 2 rows matrix of floating-point numbers.
|
||||||
//! \ingroup core_template
|
// \ingroup core_template
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct tmat3x2
|
struct tmat3x2
|
||||||
{
|
{
|
||||||
|
|||||||
@ -48,8 +48,8 @@ namespace detail
|
|||||||
template <typename T> struct tmat4x3;
|
template <typename T> struct tmat4x3;
|
||||||
template <typename T> struct tmat4x4;
|
template <typename T> struct tmat4x4;
|
||||||
|
|
||||||
//! \brief Template for 3 * 3 matrix of floating-point numbers.
|
// @brief Template for 3 * 3 matrix of floating-point numbers.
|
||||||
//! \ingroup core_template
|
// @ingroup core_template
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct tmat3x3
|
struct tmat3x3
|
||||||
{
|
{
|
||||||
@ -66,9 +66,11 @@ namespace detail
|
|||||||
typedef tmat3x3<T> transpose_type;
|
typedef tmat3x3<T> transpose_type;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Implementation detail
|
/// Implementation detail
|
||||||
|
/// @cond DETAIL
|
||||||
GLM_FUNC_DECL tmat3x3<T> _inverse() const;
|
GLM_FUNC_DECL tmat3x3<T> _inverse() const;
|
||||||
|
/// @endcond
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Data
|
// Data
|
||||||
col_type value[3];
|
col_type value[3];
|
||||||
|
|||||||
@ -48,8 +48,8 @@ namespace detail
|
|||||||
template <typename T> struct tmat4x3;
|
template <typename T> struct tmat4x3;
|
||||||
template <typename T> struct tmat4x4;
|
template <typename T> struct tmat4x4;
|
||||||
|
|
||||||
//! \brief Template for 3 columns and 4 rows matrix of floating-point numbers.
|
// \brief Template for 3 columns and 4 rows matrix of floating-point numbers.
|
||||||
//! \ingroup core_template
|
// \ingroup core_template
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct tmat3x4
|
struct tmat3x4
|
||||||
{
|
{
|
||||||
|
|||||||
@ -48,8 +48,8 @@ namespace detail
|
|||||||
template <typename T> struct tmat4x3;
|
template <typename T> struct tmat4x3;
|
||||||
template <typename T> struct tmat4x4;
|
template <typename T> struct tmat4x4;
|
||||||
|
|
||||||
//! \brief Template for 4 columns and 2 rows matrix of floating-point numbers.
|
// \brief Template for 4 columns and 2 rows matrix of floating-point numbers.
|
||||||
//! \ingroup core_template
|
// \ingroup core_template
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct tmat4x2
|
struct tmat4x2
|
||||||
{
|
{
|
||||||
|
|||||||
@ -48,8 +48,8 @@ namespace detail
|
|||||||
template <typename T> struct tmat4x3;
|
template <typename T> struct tmat4x3;
|
||||||
template <typename T> struct tmat4x4;
|
template <typename T> struct tmat4x4;
|
||||||
|
|
||||||
//! \brief Template for 4 columns and 3 rows matrix of floating-point numbers.
|
// \brief Template for 4 columns and 3 rows matrix of floating-point numbers.
|
||||||
//! \ingroup core_template
|
// \ingroup core_template
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct tmat4x3
|
struct tmat4x3
|
||||||
{
|
{
|
||||||
|
|||||||
@ -48,8 +48,8 @@ namespace detail
|
|||||||
template <typename T> struct tmat4x3;
|
template <typename T> struct tmat4x3;
|
||||||
template <typename T> struct tmat4x4;
|
template <typename T> struct tmat4x4;
|
||||||
|
|
||||||
//! \brief Template for 4 * 4 matrix of floating-point numbers.
|
// \brief Template for 4 * 4 matrix of floating-point numbers.
|
||||||
//! \ingroup core_template
|
// \ingroup core_template
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct tmat4x4
|
struct tmat4x4
|
||||||
{
|
{
|
||||||
@ -66,8 +66,10 @@ namespace detail
|
|||||||
typedef tmat4x4<T> transpose_type;
|
typedef tmat4x4<T> transpose_type;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Implementation detail
|
/// Implementation detail
|
||||||
|
/// @cond DETAIL
|
||||||
GLM_FUNC_DECL tmat4x4<T> _inverse() const;
|
GLM_FUNC_DECL tmat4x4<T> _inverse() const;
|
||||||
|
/// @endcond
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Data
|
// Data
|
||||||
|
|||||||
@ -44,8 +44,8 @@ namespace detail
|
|||||||
template <typename T> struct tvec3;
|
template <typename T> struct tvec3;
|
||||||
template <typename T> struct tvec4;
|
template <typename T> struct tvec4;
|
||||||
|
|
||||||
//! The basic 2D vector type.
|
// The basic 2D vector type.
|
||||||
//! \ingroup core_template
|
// \ingroup core_template
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct tvec2
|
struct tvec2
|
||||||
{
|
{
|
||||||
|
|||||||
@ -44,8 +44,8 @@ namespace detail
|
|||||||
template <typename T> struct tvec2;
|
template <typename T> struct tvec2;
|
||||||
template <typename T> struct tvec4;
|
template <typename T> struct tvec4;
|
||||||
|
|
||||||
//! Basic 3D vector type.
|
// Basic 3D vector type.
|
||||||
//! \ingroup core_template
|
// \ingroup core_template
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct tvec3
|
struct tvec3
|
||||||
{
|
{
|
||||||
|
|||||||
@ -44,8 +44,8 @@ namespace detail
|
|||||||
template <typename T> struct tvec2;
|
template <typename T> struct tvec2;
|
||||||
template <typename T> struct tvec3;
|
template <typename T> struct tvec3;
|
||||||
|
|
||||||
/// Basic 4D vector type.
|
// Basic 4D vector type.
|
||||||
/// @ingroup core_template
|
// @ingroup core_template
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct tvec4
|
struct tvec4
|
||||||
{
|
{
|
||||||
|
|||||||
@ -235,7 +235,7 @@ namespace glm
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
GLM_FUNC_QUALIFIER detail::tvec3<valType> eularAngles
|
GLM_FUNC_QUALIFIER detail::tvec3<valType> eulerAngles
|
||||||
(
|
(
|
||||||
detail::tquat<valType> const & x
|
detail::tquat<valType> const & x
|
||||||
)
|
)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user