mirror of
https://github.com/g-truc/glm.git
synced 2024-11-26 02:04:35 +00:00
Fixed merge
This commit is contained in:
commit
a79b4c2989
@ -10,7 +10,7 @@
|
|||||||
This library works perfectly with OpenGL but it also ensures interoperability with other third party libraries and SDK. It is a good candidate for software rendering (Raytracing / Rasterisation), image processing, physic simulations and any context that requires a simple and convenient mathematics library.
|
This library works perfectly with OpenGL but it also ensures interoperability with other third party libraries and SDK. It is a good candidate for software rendering (Raytracing / Rasterisation), image processing, physic simulations and any context that requires a simple and convenient mathematics library.
|
||||||
|
|
||||||
GLM is written as a platform independent library with no dependence and officially supports the following compilers:
|
GLM is written as a platform independent library with no dependence and officially supports the following compilers:
|
||||||
1. Clang 2.0 and higher
|
1. Clang 2.0 and higher
|
||||||
2. CUDA 3.0 and higher
|
2. CUDA 3.0 and higher
|
||||||
3. GCC 3.4 and higher
|
3. GCC 3.4 and higher
|
||||||
4. LLVM 2.3 through GCC 4.2 front-end and higher
|
4. LLVM 2.3 through GCC 4.2 front-end and higher
|
||||||
|
@ -1535,7 +1535,11 @@
|
|||||||
This library works perfectly with OpenGL but it also ensures interoperability with other third party libraries and SDKs. It is a good candidate for software rendering (Raytracing / Rasterisation), image processing, physic simulations and any context that requires a simple and convenient mathematics library.
|
This library works perfectly with OpenGL but it also ensures interoperability with other third party libraries and SDKs. It is a good candidate for software rendering (Raytracing / Rasterisation), image processing, physic simulations and any context that requires a simple and convenient mathematics library.
|
||||||
</paragraph>
|
</paragraph>
|
||||||
<list name="GLM is written as a platform independent library with no dependence and officially supports the following compilers:">
|
<list name="GLM is written as a platform independent library with no dependence and officially supports the following compilers:">
|
||||||
<list-element><link href="http://http://gcc.gnu.org/">GCC</link> 3.4 and higher</list-element>
|
<list-element><link href="http://clang.llvm.org">Clang</link> 2.0 and higher</list-element>
|
||||||
|
<list-element>
|
||||||
|
<link href="http://developer.nvidia.com/category/zone/cuda-zone">CUDA</link> 3.0 and higher
|
||||||
|
</list-element>
|
||||||
|
<list-element><link href="http://gcc.gnu.org/">GCC</link> 3.4 and higher</list-element>
|
||||||
<list-element><link href="http://llvm.org/">LLVM</link> 2.3 through GCC 4.2 front-end and higher</list-element>
|
<list-element><link href="http://llvm.org/">LLVM</link> 2.3 through GCC 4.2 front-end and higher</list-element>
|
||||||
<list-element><link href="http://msdn.microsoft.com/en-us/visualc/default">Visual C++</link> 2005 and higher</list-element>
|
<list-element><link href="http://msdn.microsoft.com/en-us/visualc/default">Visual C++</link> 2005 and higher</list-element>
|
||||||
<list-element>Any C++ compiler following C++98 norm</list-element>
|
<list-element>Any C++ compiler following C++98 norm</list-element>
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
// Compiler
|
// Compiler
|
||||||
|
|
||||||
// User defines: GLM_FORCE_COMPILER_UNKNOWN
|
// User defines: GLM_FORCE_COMPILER_UNKNOWN
|
||||||
|
// TODO ? __llvm__
|
||||||
|
|
||||||
#define GLM_COMPILER_UNKNOWN 0x00000000
|
#define GLM_COMPILER_UNKNOWN 0x00000000
|
||||||
|
|
||||||
@ -81,6 +82,16 @@
|
|||||||
#define GLM_COMPILER_CUDA32 0x10000030
|
#define GLM_COMPILER_CUDA32 0x10000030
|
||||||
#define GLM_COMPILER_CUDA40 0x10000040
|
#define GLM_COMPILER_CUDA40 0x10000040
|
||||||
|
|
||||||
|
// Clang
|
||||||
|
#define GLM_COMPILER_CLANG 0x20000000
|
||||||
|
#define GLM_COMPILER_CLANG26 0x20000010
|
||||||
|
#define GLM_COMPILER_CLANG27 0x20000020
|
||||||
|
#define GLM_COMPILER_CLANG28 0x20000030
|
||||||
|
#define GLM_COMPILER_CLANG29 0x20000040
|
||||||
|
|
||||||
|
// LLVM GCC
|
||||||
|
#define GLM_COMPILER_LLVM_GCC 0x40000000
|
||||||
|
|
||||||
// Build model
|
// Build model
|
||||||
#define GLM_MODEL_32 0x00000010
|
#define GLM_MODEL_32 0x00000010
|
||||||
#define GLM_MODEL_64 0x00000020
|
#define GLM_MODEL_64 0x00000020
|
||||||
@ -91,6 +102,8 @@
|
|||||||
|
|
||||||
// CUDA
|
// CUDA
|
||||||
#elif defined(__CUDACC__)
|
#elif defined(__CUDACC__)
|
||||||
|
# define GLM_COMPILER GLM_COMPILER_CUDA
|
||||||
|
/*
|
||||||
# if CUDA_VERSION < 3000
|
# if CUDA_VERSION < 3000
|
||||||
# error "GLM requires CUDA 3.0 or higher"
|
# error "GLM requires CUDA 3.0 or higher"
|
||||||
# elif CUDA_VERSION == 3000
|
# elif CUDA_VERSION == 3000
|
||||||
@ -104,6 +117,7 @@
|
|||||||
# else
|
# else
|
||||||
# define GLM_COMPILER GLM_COMPILER_CUDA
|
# define GLM_COMPILER GLM_COMPILER_CUDA
|
||||||
# endif
|
# endif
|
||||||
|
*/
|
||||||
|
|
||||||
// Visual C++
|
// Visual C++
|
||||||
#elif defined(_MSC_VER)
|
#elif defined(_MSC_VER)
|
||||||
@ -131,6 +145,20 @@
|
|||||||
# define GLM_COMPILER GLM_COMPILER_VC
|
# define GLM_COMPILER GLM_COMPILER_VC
|
||||||
# endif//_MSC_VER
|
# endif//_MSC_VER
|
||||||
|
|
||||||
|
#elif defined(__clang__)
|
||||||
|
# if (__clang_major__ == 2) && (__clang_minor__ == 6)
|
||||||
|
# define GLM_COMPILER GLM_COMPILER_CLANG26
|
||||||
|
# elif (__clang_major__ == 2) && (__clang_minor__ == 7)
|
||||||
|
# define GLM_COMPILER GLM_COMPILER_CLANG27
|
||||||
|
# elif (__clang_major__ == 2) && (__clang_minor__ == 8)
|
||||||
|
# define GLM_COMPILER GLM_COMPILER_CLANG28
|
||||||
|
# elif (__clang_major__ == 2) && (__clang_minor__ == 9)
|
||||||
|
# define GLM_COMPILER GLM_COMPILER_CLANG29
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__llvm__)
|
||||||
|
# define GLM_COMPILER GLM_COMPILER_LLVM_GCC
|
||||||
|
|
||||||
// G++
|
// G++
|
||||||
#elif defined(__GNUC__)
|
#elif defined(__GNUC__)
|
||||||
# if (__GNUC__ == 3) && (__GNUC_MINOR__ == 2)
|
# if (__GNUC__ == 3) && (__GNUC_MINOR__ == 2)
|
||||||
@ -196,8 +224,14 @@
|
|||||||
// Report compiler detection
|
// Report compiler detection
|
||||||
#if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_COMPILER_DISPLAYED))
|
#if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_COMPILER_DISPLAYED))
|
||||||
# define GLM_MESSAGE_COMPILER_DISPLAYED
|
# define GLM_MESSAGE_COMPILER_DISPLAYED
|
||||||
# if(GLM_COMPILER & GLM_COMPILER_VC)
|
# if(GLM_COMPILER & GLM_COMPILER_CUDA)
|
||||||
|
# pragma message("GLM: CUDA compiler detected")
|
||||||
|
# elif(GLM_COMPILER & GLM_COMPILER_VC)
|
||||||
# pragma message("GLM: Visual C++ compiler detected")
|
# pragma message("GLM: Visual C++ compiler detected")
|
||||||
|
# elif(GLM_COMPILER & GLM_COMPILER_CLANG)
|
||||||
|
# pragma message("GLM: Clang compiler detected")
|
||||||
|
# elif(GLM_COMPILER & GLM_COMPILER_LLVM_GCC)
|
||||||
|
# pragma message("GLM: LLVM GCC compiler detected")
|
||||||
# elif(GLM_COMPILER & GLM_COMPILER_GCC)
|
# elif(GLM_COMPILER & GLM_COMPILER_GCC)
|
||||||
# pragma message("GLM: GCC compiler detected")
|
# pragma message("GLM: GCC compiler detected")
|
||||||
# elif(GLM_COMPILER & GLM_COMPILER_BC)
|
# elif(GLM_COMPILER & GLM_COMPILER_BC)
|
||||||
@ -402,7 +436,7 @@
|
|||||||
|
|
||||||
// User defines: GLM_FORCE_INLINE GLM_FORCE_CUDA
|
// User defines: GLM_FORCE_INLINE GLM_FORCE_CUDA
|
||||||
|
|
||||||
#if(defined(GLM_FORCE_CUDA) || (defined(__CUDACC__)))
|
#if(defined(GLM_FORCE_CUDA) || (GLM_COMPILER & GLM_COMPILER_CUDA))
|
||||||
# define GLM_CUDA_FUNC_DEF __device__ __host__
|
# define GLM_CUDA_FUNC_DEF __device__ __host__
|
||||||
# define GLM_CUDA_FUNC_DECL __device__ __host__
|
# define GLM_CUDA_FUNC_DECL __device__ __host__
|
||||||
#else
|
#else
|
||||||
|
@ -17,351 +17,346 @@
|
|||||||
# pragma message("GLM: GLM_GTC_half_float extension included")
|
# pragma message("GLM: GLM_GTC_half_float extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace detail
|
||||||
{
|
{
|
||||||
namespace test{
|
|
||||||
bool main_gtc_half_float();
|
|
||||||
}//namespace
|
|
||||||
namespace detail
|
|
||||||
{
|
|
||||||
#ifndef _MSC_EXTENSIONS
|
#ifndef _MSC_EXTENSIONS
|
||||||
template <>
|
template <>
|
||||||
struct tvec2<thalf>
|
struct tvec2<thalf>
|
||||||
{
|
|
||||||
enum ctor{null};
|
|
||||||
typedef thalf value_type;
|
|
||||||
typedef std::size_t size_type;
|
|
||||||
static size_type value_size();
|
|
||||||
|
|
||||||
typedef tvec2<thalf> type;
|
|
||||||
typedef tvec2<bool> bool_type;
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Data
|
|
||||||
|
|
||||||
thalf x, y;
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Accesses
|
|
||||||
|
|
||||||
thalf & operator[](size_type i);
|
|
||||||
thalf const & operator[](size_type i) const;
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Implicit basic constructors
|
|
||||||
|
|
||||||
tvec2();
|
|
||||||
tvec2(tvec2<thalf> const & v);
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Explicit basic constructors
|
|
||||||
|
|
||||||
explicit tvec2(ctor);
|
|
||||||
explicit tvec2(
|
|
||||||
thalf const & s);
|
|
||||||
explicit tvec2(
|
|
||||||
thalf const & s1,
|
|
||||||
thalf const & s2);
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Swizzle constructors
|
|
||||||
|
|
||||||
tvec2(tref2<thalf> const & r);
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Convertion scalar constructors
|
|
||||||
|
|
||||||
//! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename U>
|
|
||||||
explicit tvec2(U const & x);
|
|
||||||
//! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename U, typename V>
|
|
||||||
explicit tvec2(U const & x, V const & y);
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Convertion vector constructors
|
|
||||||
|
|
||||||
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename U>
|
|
||||||
explicit tvec2(tvec2<U> const & v);
|
|
||||||
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename U>
|
|
||||||
explicit tvec2(tvec3<U> const & v);
|
|
||||||
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename U>
|
|
||||||
explicit tvec2(tvec4<U> const & v);
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Unary arithmetic operators
|
|
||||||
|
|
||||||
tvec2<thalf>& operator= (tvec2<thalf> const & v);
|
|
||||||
|
|
||||||
tvec2<thalf>& operator+=(thalf const & s);
|
|
||||||
tvec2<thalf>& operator+=(tvec2<thalf> const & v);
|
|
||||||
tvec2<thalf>& operator-=(thalf const & s);
|
|
||||||
tvec2<thalf>& operator-=(tvec2<thalf> const & v);
|
|
||||||
tvec2<thalf>& operator*=(thalf const & s);
|
|
||||||
tvec2<thalf>& operator*=(tvec2<thalf> const & v);
|
|
||||||
tvec2<thalf>& operator/=(thalf const & s);
|
|
||||||
tvec2<thalf>& operator/=(tvec2<thalf> const & v);
|
|
||||||
tvec2<thalf>& operator++();
|
|
||||||
tvec2<thalf>& operator--();
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Swizzle operators
|
|
||||||
|
|
||||||
thalf swizzle(comp X) const;
|
|
||||||
tvec2<thalf> swizzle(comp X, comp Y) const;
|
|
||||||
tvec3<thalf> swizzle(comp X, comp Y, comp Z) const;
|
|
||||||
tvec4<thalf> swizzle(comp X, comp Y, comp Z, comp W) const;
|
|
||||||
tref2<thalf> swizzle(comp X, comp Y);
|
|
||||||
};
|
|
||||||
|
|
||||||
template <>
|
|
||||||
struct tvec3<thalf>
|
|
||||||
{
|
|
||||||
enum ctor{null};
|
|
||||||
typedef thalf value_type;
|
|
||||||
typedef std::size_t size_type;
|
|
||||||
static size_type value_size();
|
|
||||||
|
|
||||||
typedef tvec3<thalf> type;
|
|
||||||
typedef tvec3<bool> bool_type;
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Data
|
|
||||||
|
|
||||||
thalf x, y, z;
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Accesses
|
|
||||||
|
|
||||||
thalf & operator[](size_type i);
|
|
||||||
thalf const & operator[](size_type i) const;
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Implicit basic constructors
|
|
||||||
|
|
||||||
tvec3();
|
|
||||||
tvec3(tvec3<thalf> const & v);
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Explicit basic constructors
|
|
||||||
|
|
||||||
explicit tvec3(ctor);
|
|
||||||
explicit tvec3(
|
|
||||||
thalf const & s);
|
|
||||||
explicit tvec3(
|
|
||||||
thalf const & s1,
|
|
||||||
thalf const & s2,
|
|
||||||
thalf const & s3);
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Swizzle constructors
|
|
||||||
|
|
||||||
tvec3(tref3<thalf> const & r);
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Convertion scalar constructors
|
|
||||||
|
|
||||||
//! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename U>
|
|
||||||
explicit tvec3(U const & x);
|
|
||||||
//! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename U, typename V, typename W>
|
|
||||||
explicit tvec3(U const & x, V const & y, W const & z);
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Convertion vector constructors
|
|
||||||
|
|
||||||
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename A, typename B>
|
|
||||||
explicit tvec3(tvec2<A> const & v, B const & s);
|
|
||||||
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename A, typename B>
|
|
||||||
explicit tvec3(A const & s, tvec2<B> const & v);
|
|
||||||
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename U>
|
|
||||||
explicit tvec3(tvec3<U> const & v);
|
|
||||||
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename U>
|
|
||||||
explicit tvec3(tvec4<U> const & v);
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Unary arithmetic operators
|
|
||||||
|
|
||||||
tvec3<thalf>& operator= (tvec3<thalf> const & v);
|
|
||||||
|
|
||||||
tvec3<thalf>& operator+=(thalf const & s);
|
|
||||||
tvec3<thalf>& operator+=(tvec3<thalf> const & v);
|
|
||||||
tvec3<thalf>& operator-=(thalf const & s);
|
|
||||||
tvec3<thalf>& operator-=(tvec3<thalf> const & v);
|
|
||||||
tvec3<thalf>& operator*=(thalf const & s);
|
|
||||||
tvec3<thalf>& operator*=(tvec3<thalf> const & v);
|
|
||||||
tvec3<thalf>& operator/=(thalf const & s);
|
|
||||||
tvec3<thalf>& operator/=(tvec3<thalf> const & v);
|
|
||||||
tvec3<thalf>& operator++();
|
|
||||||
tvec3<thalf>& operator--();
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Swizzle operators
|
|
||||||
|
|
||||||
thalf swizzle(comp X) const;
|
|
||||||
tvec2<thalf> swizzle(comp X, comp Y) const;
|
|
||||||
tvec3<thalf> swizzle(comp X, comp Y, comp Z) const;
|
|
||||||
tvec4<thalf> swizzle(comp X, comp Y, comp Z, comp W) const;
|
|
||||||
tref3<thalf> swizzle(comp X, comp Y, comp Z);
|
|
||||||
};
|
|
||||||
|
|
||||||
template <>
|
|
||||||
struct tvec4<thalf>
|
|
||||||
{
|
|
||||||
enum ctor{null};
|
|
||||||
typedef thalf value_type;
|
|
||||||
typedef std::size_t size_type;
|
|
||||||
static size_type value_size();
|
|
||||||
|
|
||||||
typedef tvec4<thalf> type;
|
|
||||||
typedef tvec4<bool> bool_type;
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Data
|
|
||||||
|
|
||||||
thalf x, y, z, w;
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Accesses
|
|
||||||
|
|
||||||
thalf & operator[](size_type i);
|
|
||||||
thalf const & operator[](size_type i) const;
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Implicit basic constructors
|
|
||||||
|
|
||||||
tvec4();
|
|
||||||
tvec4(tvec4<thalf> const & v);
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Explicit basic constructors
|
|
||||||
|
|
||||||
explicit tvec4(ctor);
|
|
||||||
explicit tvec4(
|
|
||||||
thalf const & s);
|
|
||||||
explicit tvec4(
|
|
||||||
thalf const & s0,
|
|
||||||
thalf const & s1,
|
|
||||||
thalf const & s2,
|
|
||||||
thalf const & s3);
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Swizzle constructors
|
|
||||||
|
|
||||||
tvec4(tref4<thalf> const & r);
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Convertion scalar constructors
|
|
||||||
|
|
||||||
//! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename U>
|
|
||||||
explicit tvec4(U const & x);
|
|
||||||
//! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename A, typename B, typename C, typename D>
|
|
||||||
explicit tvec4(A const & x, B const & y, C const & z, D const & w);
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Convertion vector constructors
|
|
||||||
|
|
||||||
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename A, typename B, typename C>
|
|
||||||
explicit tvec4(tvec2<A> const & v, B const & s1, C const & s2);
|
|
||||||
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename A, typename B, typename C>
|
|
||||||
explicit tvec4(A const & s1, tvec2<B> const & v, C const & s2);
|
|
||||||
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename A, typename B, typename C>
|
|
||||||
explicit tvec4(A const & s1, B const & s2, tvec2<C> const & v);
|
|
||||||
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename A, typename B>
|
|
||||||
explicit tvec4(tvec3<A> const & v, B const & s);
|
|
||||||
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename A, typename B>
|
|
||||||
explicit tvec4(A const & s, tvec3<B> const & v);
|
|
||||||
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename A, typename B>
|
|
||||||
explicit tvec4(tvec2<A> const & v1, tvec2<B> const & v2);
|
|
||||||
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
|
||||||
template <typename U>
|
|
||||||
explicit tvec4(tvec4<U> const & v);
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Unary arithmetic operators
|
|
||||||
|
|
||||||
tvec4<thalf>& operator= (tvec4<thalf> const & v);
|
|
||||||
|
|
||||||
tvec4<thalf>& operator+=(thalf const & s);
|
|
||||||
tvec4<thalf>& operator+=(tvec4<thalf> const & v);
|
|
||||||
tvec4<thalf>& operator-=(thalf const & s);
|
|
||||||
tvec4<thalf>& operator-=(tvec4<thalf> const & v);
|
|
||||||
tvec4<thalf>& operator*=(thalf const & s);
|
|
||||||
tvec4<thalf>& operator*=(tvec4<thalf> const & v);
|
|
||||||
tvec4<thalf>& operator/=(thalf const & s);
|
|
||||||
tvec4<thalf>& operator/=(tvec4<thalf> const & v);
|
|
||||||
tvec4<thalf>& operator++();
|
|
||||||
tvec4<thalf>& operator--();
|
|
||||||
|
|
||||||
//////////////////////////////////////
|
|
||||||
// Swizzle operators
|
|
||||||
|
|
||||||
thalf swizzle(comp X) const;
|
|
||||||
tvec2<thalf> swizzle(comp X, comp Y) const;
|
|
||||||
tvec3<thalf> swizzle(comp X, comp Y, comp Z) const;
|
|
||||||
tvec4<thalf> swizzle(comp X, comp Y, comp Z, comp W) const;
|
|
||||||
tref4<thalf> swizzle(comp X, comp Y, comp Z, comp W);
|
|
||||||
};
|
|
||||||
#endif//_MSC_EXTENSIONS
|
|
||||||
}
|
|
||||||
//namespace detail
|
|
||||||
|
|
||||||
namespace gtc{
|
|
||||||
//! GLM_GTC_half_float extension: Add support for half precision floating-point types
|
|
||||||
namespace half_float
|
|
||||||
{
|
{
|
||||||
/// \addtogroup gtc_half_float
|
enum ctor{null};
|
||||||
///@{
|
typedef thalf value_type;
|
||||||
|
typedef std::size_t size_type;
|
||||||
|
static size_type value_size();
|
||||||
|
|
||||||
//! Type for half-precision floating-point numbers.
|
typedef tvec2<thalf> type;
|
||||||
//! From GLM_GTC_half_float extension.
|
typedef tvec2<bool> bool_type;
|
||||||
typedef detail::thalf half;
|
|
||||||
|
|
||||||
//! Vector of 2 half-precision floating-point numbers.
|
//////////////////////////////////////
|
||||||
//! From GLM_GTC_half_float extension.
|
// Data
|
||||||
typedef detail::tvec2<detail::thalf> hvec2;
|
|
||||||
|
|
||||||
//! Vector of 3 half-precision floating-point numbers.
|
thalf x, y;
|
||||||
//! From GLM_GTC_half_float extension.
|
|
||||||
typedef detail::tvec3<detail::thalf> hvec3;
|
|
||||||
|
|
||||||
//! Vector of 4 half-precision floating-point numbers.
|
//////////////////////////////////////
|
||||||
//! From GLM_GTC_half_float extension.
|
// Accesses
|
||||||
typedef detail::tvec4<detail::thalf> hvec4;
|
|
||||||
|
|
||||||
//! 2 * 2 matrix of half-precision floating-point numbers.
|
thalf & operator[](size_type i);
|
||||||
//! From GLM_GTC_half_float extension.
|
thalf const & operator[](size_type i) const;
|
||||||
typedef detail::tmat2x2<detail::thalf> hmat2;
|
|
||||||
|
|
||||||
//! 3 * 3 matrix of half-precision floating-point numbers.
|
//////////////////////////////////////
|
||||||
//! From GLM_GTC_half_float extension.
|
// Implicit basic constructors
|
||||||
typedef detail::tmat3x3<detail::thalf> hmat3;
|
|
||||||
|
|
||||||
//! 4 * 4 matrix of half-precision floating-point numbers.
|
tvec2();
|
||||||
//! From GLM_GTC_half_float extension.
|
tvec2(tvec2<thalf> const & v);
|
||||||
typedef detail::tmat4x4<detail::thalf> hmat4;
|
|
||||||
|
|
||||||
///@}
|
//////////////////////////////////////
|
||||||
|
// Explicit basic constructors
|
||||||
|
|
||||||
}//namespace half_float
|
explicit tvec2(ctor);
|
||||||
}//namespace gtc
|
explicit tvec2(
|
||||||
}//namespace glm
|
thalf const & s);
|
||||||
|
explicit tvec2(
|
||||||
|
thalf const & s1,
|
||||||
|
thalf const & s2);
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Swizzle constructors
|
||||||
|
|
||||||
|
tvec2(tref2<thalf> const & r);
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Convertion scalar constructors
|
||||||
|
|
||||||
|
//! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename U>
|
||||||
|
explicit tvec2(U const & x);
|
||||||
|
//! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename U, typename V>
|
||||||
|
explicit tvec2(U const & x, V const & y);
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Convertion vector constructors
|
||||||
|
|
||||||
|
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename U>
|
||||||
|
explicit tvec2(tvec2<U> const & v);
|
||||||
|
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename U>
|
||||||
|
explicit tvec2(tvec3<U> const & v);
|
||||||
|
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename U>
|
||||||
|
explicit tvec2(tvec4<U> const & v);
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Unary arithmetic operators
|
||||||
|
|
||||||
|
tvec2<thalf>& operator= (tvec2<thalf> const & v);
|
||||||
|
|
||||||
|
tvec2<thalf>& operator+=(thalf const & s);
|
||||||
|
tvec2<thalf>& operator+=(tvec2<thalf> const & v);
|
||||||
|
tvec2<thalf>& operator-=(thalf const & s);
|
||||||
|
tvec2<thalf>& operator-=(tvec2<thalf> const & v);
|
||||||
|
tvec2<thalf>& operator*=(thalf const & s);
|
||||||
|
tvec2<thalf>& operator*=(tvec2<thalf> const & v);
|
||||||
|
tvec2<thalf>& operator/=(thalf const & s);
|
||||||
|
tvec2<thalf>& operator/=(tvec2<thalf> const & v);
|
||||||
|
tvec2<thalf>& operator++();
|
||||||
|
tvec2<thalf>& operator--();
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Swizzle operators
|
||||||
|
|
||||||
|
thalf swizzle(comp X) const;
|
||||||
|
tvec2<thalf> swizzle(comp X, comp Y) const;
|
||||||
|
tvec3<thalf> swizzle(comp X, comp Y, comp Z) const;
|
||||||
|
tvec4<thalf> swizzle(comp X, comp Y, comp Z, comp W) const;
|
||||||
|
tref2<thalf> swizzle(comp X, comp Y);
|
||||||
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct tvec3<thalf>
|
||||||
|
{
|
||||||
|
enum ctor{null};
|
||||||
|
typedef thalf value_type;
|
||||||
|
typedef std::size_t size_type;
|
||||||
|
static size_type value_size();
|
||||||
|
|
||||||
|
typedef tvec3<thalf> type;
|
||||||
|
typedef tvec3<bool> bool_type;
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Data
|
||||||
|
|
||||||
|
thalf x, y, z;
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Accesses
|
||||||
|
|
||||||
|
thalf & operator[](size_type i);
|
||||||
|
thalf const & operator[](size_type i) const;
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Implicit basic constructors
|
||||||
|
|
||||||
|
tvec3();
|
||||||
|
tvec3(tvec3<thalf> const & v);
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Explicit basic constructors
|
||||||
|
|
||||||
|
explicit tvec3(ctor);
|
||||||
|
explicit tvec3(
|
||||||
|
thalf const & s);
|
||||||
|
explicit tvec3(
|
||||||
|
thalf const & s1,
|
||||||
|
thalf const & s2,
|
||||||
|
thalf const & s3);
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Swizzle constructors
|
||||||
|
|
||||||
|
tvec3(tref3<thalf> const & r);
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Convertion scalar constructors
|
||||||
|
|
||||||
|
//! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename U>
|
||||||
|
explicit tvec3(U const & x);
|
||||||
|
//! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename U, typename V, typename W>
|
||||||
|
explicit tvec3(U const & x, V const & y, W const & z);
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Convertion vector constructors
|
||||||
|
|
||||||
|
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename A, typename B>
|
||||||
|
explicit tvec3(tvec2<A> const & v, B const & s);
|
||||||
|
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename A, typename B>
|
||||||
|
explicit tvec3(A const & s, tvec2<B> const & v);
|
||||||
|
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename U>
|
||||||
|
explicit tvec3(tvec3<U> const & v);
|
||||||
|
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename U>
|
||||||
|
explicit tvec3(tvec4<U> const & v);
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Unary arithmetic operators
|
||||||
|
|
||||||
|
tvec3<thalf>& operator= (tvec3<thalf> const & v);
|
||||||
|
|
||||||
|
tvec3<thalf>& operator+=(thalf const & s);
|
||||||
|
tvec3<thalf>& operator+=(tvec3<thalf> const & v);
|
||||||
|
tvec3<thalf>& operator-=(thalf const & s);
|
||||||
|
tvec3<thalf>& operator-=(tvec3<thalf> const & v);
|
||||||
|
tvec3<thalf>& operator*=(thalf const & s);
|
||||||
|
tvec3<thalf>& operator*=(tvec3<thalf> const & v);
|
||||||
|
tvec3<thalf>& operator/=(thalf const & s);
|
||||||
|
tvec3<thalf>& operator/=(tvec3<thalf> const & v);
|
||||||
|
tvec3<thalf>& operator++();
|
||||||
|
tvec3<thalf>& operator--();
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Swizzle operators
|
||||||
|
|
||||||
|
thalf swizzle(comp X) const;
|
||||||
|
tvec2<thalf> swizzle(comp X, comp Y) const;
|
||||||
|
tvec3<thalf> swizzle(comp X, comp Y, comp Z) const;
|
||||||
|
tvec4<thalf> swizzle(comp X, comp Y, comp Z, comp W) const;
|
||||||
|
tref3<thalf> swizzle(comp X, comp Y, comp Z);
|
||||||
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct tvec4<thalf>
|
||||||
|
{
|
||||||
|
enum ctor{null};
|
||||||
|
typedef thalf value_type;
|
||||||
|
typedef std::size_t size_type;
|
||||||
|
static size_type value_size();
|
||||||
|
|
||||||
|
typedef tvec4<thalf> type;
|
||||||
|
typedef tvec4<bool> bool_type;
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Data
|
||||||
|
|
||||||
|
thalf x, y, z, w;
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Accesses
|
||||||
|
|
||||||
|
thalf & operator[](size_type i);
|
||||||
|
thalf const & operator[](size_type i) const;
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Implicit basic constructors
|
||||||
|
|
||||||
|
tvec4();
|
||||||
|
tvec4(tvec4<thalf> const & v);
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Explicit basic constructors
|
||||||
|
|
||||||
|
explicit tvec4(ctor);
|
||||||
|
explicit tvec4(
|
||||||
|
thalf const & s);
|
||||||
|
explicit tvec4(
|
||||||
|
thalf const & s0,
|
||||||
|
thalf const & s1,
|
||||||
|
thalf const & s2,
|
||||||
|
thalf const & s3);
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Swizzle constructors
|
||||||
|
|
||||||
|
tvec4(tref4<thalf> const & r);
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Convertion scalar constructors
|
||||||
|
|
||||||
|
//! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename U>
|
||||||
|
explicit tvec4(U const & x);
|
||||||
|
//! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename A, typename B, typename C, typename D>
|
||||||
|
explicit tvec4(A const & x, B const & y, C const & z, D const & w);
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Convertion vector constructors
|
||||||
|
|
||||||
|
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename A, typename B, typename C>
|
||||||
|
explicit tvec4(tvec2<A> const & v, B const & s1, C const & s2);
|
||||||
|
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename A, typename B, typename C>
|
||||||
|
explicit tvec4(A const & s1, tvec2<B> const & v, C const & s2);
|
||||||
|
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename A, typename B, typename C>
|
||||||
|
explicit tvec4(A const & s1, B const & s2, tvec2<C> const & v);
|
||||||
|
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename A, typename B>
|
||||||
|
explicit tvec4(tvec3<A> const & v, B const & s);
|
||||||
|
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename A, typename B>
|
||||||
|
explicit tvec4(A const & s, tvec3<B> const & v);
|
||||||
|
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename A, typename B>
|
||||||
|
explicit tvec4(tvec2<A> const & v1, tvec2<B> const & v2);
|
||||||
|
//! Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)
|
||||||
|
template <typename U>
|
||||||
|
explicit tvec4(tvec4<U> const & v);
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Unary arithmetic operators
|
||||||
|
|
||||||
|
tvec4<thalf>& operator= (tvec4<thalf> const & v);
|
||||||
|
|
||||||
|
tvec4<thalf>& operator+=(thalf const & s);
|
||||||
|
tvec4<thalf>& operator+=(tvec4<thalf> const & v);
|
||||||
|
tvec4<thalf>& operator-=(thalf const & s);
|
||||||
|
tvec4<thalf>& operator-=(tvec4<thalf> const & v);
|
||||||
|
tvec4<thalf>& operator*=(thalf const & s);
|
||||||
|
tvec4<thalf>& operator*=(tvec4<thalf> const & v);
|
||||||
|
tvec4<thalf>& operator/=(thalf const & s);
|
||||||
|
tvec4<thalf>& operator/=(tvec4<thalf> const & v);
|
||||||
|
tvec4<thalf>& operator++();
|
||||||
|
tvec4<thalf>& operator--();
|
||||||
|
|
||||||
|
//////////////////////////////////////
|
||||||
|
// Swizzle operators
|
||||||
|
|
||||||
|
thalf swizzle(comp X) const;
|
||||||
|
tvec2<thalf> swizzle(comp X, comp Y) const;
|
||||||
|
tvec3<thalf> swizzle(comp X, comp Y, comp Z) const;
|
||||||
|
tvec4<thalf> swizzle(comp X, comp Y, comp Z, comp W) const;
|
||||||
|
tref4<thalf> swizzle(comp X, comp Y, comp Z, comp W);
|
||||||
|
};
|
||||||
|
#endif//_MSC_EXTENSIONS
|
||||||
|
}
|
||||||
|
//namespace detail
|
||||||
|
|
||||||
|
namespace gtc{
|
||||||
|
namespace half_float ///< GLM_GTC_half_float extension: Add support for half precision floating-point types
|
||||||
|
{
|
||||||
|
/// \addtogroup gtc_half_float
|
||||||
|
///@{
|
||||||
|
|
||||||
|
/// Type for half-precision floating-point numbers.
|
||||||
|
/// From GLM_GTC_half_float extension.
|
||||||
|
typedef detail::thalf half;
|
||||||
|
|
||||||
|
/// Vector of 2 half-precision floating-point numbers.
|
||||||
|
/// From GLM_GTC_half_float extension.
|
||||||
|
typedef detail::tvec2<detail::thalf> hvec2;
|
||||||
|
|
||||||
|
/// Vector of 3 half-precision floating-point numbers.
|
||||||
|
/// From GLM_GTC_half_float extension.
|
||||||
|
typedef detail::tvec3<detail::thalf> hvec3;
|
||||||
|
|
||||||
|
/// Vector of 4 half-precision floating-point numbers.
|
||||||
|
/// From GLM_GTC_half_float extension.
|
||||||
|
typedef detail::tvec4<detail::thalf> hvec4;
|
||||||
|
|
||||||
|
/// 2 * 2 matrix of half-precision floating-point numbers.
|
||||||
|
/// From GLM_GTC_half_float extension.
|
||||||
|
typedef detail::tmat2x2<detail::thalf> hmat2;
|
||||||
|
|
||||||
|
/// 3 * 3 matrix of half-precision floating-point numbers.
|
||||||
|
/// From GLM_GTC_half_float extension.
|
||||||
|
typedef detail::tmat3x3<detail::thalf> hmat3;
|
||||||
|
|
||||||
|
/// 4 * 4 matrix of half-precision floating-point numbers.
|
||||||
|
/// From GLM_GTC_half_float extension.
|
||||||
|
typedef detail::tmat4x4<detail::thalf> hmat4;
|
||||||
|
|
||||||
|
/// @}
|
||||||
|
|
||||||
|
}// namespace half_float
|
||||||
|
}// namespace gtc
|
||||||
|
}// namespace glm
|
||||||
|
|
||||||
#include "half_float.inl"
|
#include "half_float.inl"
|
||||||
|
|
||||||
|
@ -22,8 +22,7 @@
|
|||||||
|
|
||||||
namespace glm{
|
namespace glm{
|
||||||
namespace gtc{
|
namespace gtc{
|
||||||
//! GLM_GTC_matrix_access extension: Set a column or a row of a matrix
|
namespace matrix_access ///< GLM_GTC_matrix_access extension: Set a column or a row of a matrix
|
||||||
namespace matrix_access
|
|
||||||
{
|
{
|
||||||
/// \addtogroup gtc_matrix_access
|
/// \addtogroup gtc_matrix_access
|
||||||
///@{
|
///@{
|
||||||
|
@ -20,189 +20,183 @@
|
|||||||
# pragma message("GLM: GLM_GTC_matrix_integer extension included")
|
# pragma message("GLM: GLM_GTC_matrix_integer extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtc{
|
||||||
|
namespace matrix_integer ///< GLM_GTC_matrix_integer extension: Add integer matrices
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtc_matrix_integer
|
||||||
bool main_gtc_matrix_integer();
|
///@{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtc{
|
typedef detail::tmat2x2<highp_int> highp_imat2; //!< \brief High-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
//! GLM_GTC_matrix_integer extension: Add integer matrices
|
typedef detail::tmat3x3<highp_int> highp_imat3; //!< \brief High-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
namespace matrix_integer
|
typedef detail::tmat4x4<highp_int> highp_imat4; //!< \brief High-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
{
|
|
||||||
/// \addtogroup gtc_matrix_integer
|
|
||||||
///@{
|
|
||||||
|
|
||||||
typedef detail::tmat2x2<highp_int> highp_imat2; //!< \brief High-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x2<highp_int> highp_imat2x2; //!< \brief High-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat3x3<highp_int> highp_imat3; //!< \brief High-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x3<highp_int> highp_imat2x3; //!< \brief High-precision signed integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat4x4<highp_int> highp_imat4; //!< \brief High-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x4<highp_int> highp_imat2x4; //!< \brief High-precision signed integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat3x2<highp_int> highp_imat3x2; //!< \brief High-precision signed integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat3x3<highp_int> highp_imat3x3; //!< \brief High-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat3x4<highp_int> highp_imat3x4; //!< \brief High-precision signed integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat4x2<highp_int> highp_imat4x2; //!< \brief High-precision signed integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat4x3<highp_int> highp_imat4x3; //!< \brief High-precision signed integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat4x4<highp_int> highp_imat4x4; //!< \brief High-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
|
||||||
typedef detail::tmat2x2<highp_int> highp_imat2x2; //!< \brief High-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x2<mediump_int> mediump_imat2; //!< \brief Medium-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat2x3<highp_int> highp_imat2x3; //!< \brief High-precision signed integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat3x3<mediump_int> mediump_imat3; //!< \brief Medium-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat2x4<highp_int> highp_imat2x4; //!< \brief High-precision signed integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat4x4<mediump_int> mediump_imat4; //!< \brief Medium-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat3x2<highp_int> highp_imat3x2; //!< \brief High-precision signed integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat3x3<highp_int> highp_imat3x3; //!< \brief High-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat3x4<highp_int> highp_imat3x4; //!< \brief High-precision signed integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat4x2<highp_int> highp_imat4x2; //!< \brief High-precision signed integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat4x3<highp_int> highp_imat4x3; //!< \brief High-precision signed integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat4x4<highp_int> highp_imat4x4; //!< \brief High-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
|
|
||||||
typedef detail::tmat2x2<mediump_int> mediump_imat2; //!< \brief Medium-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x2<mediump_int> mediump_imat2x2; //!< \brief Medium-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat3x3<mediump_int> mediump_imat3; //!< \brief Medium-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x3<mediump_int> mediump_imat2x3; //!< \brief Medium-precision signed integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat4x4<mediump_int> mediump_imat4; //!< \brief Medium-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x4<mediump_int> mediump_imat2x4; //!< \brief Medium-precision signed integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat3x2<mediump_int> mediump_imat3x2; //!< \brief Medium-precision signed integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat3x3<mediump_int> mediump_imat3x3; //!< \brief Medium-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat3x4<mediump_int> mediump_imat3x4; //!< \brief Medium-precision signed integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat4x2<mediump_int> mediump_imat4x2; //!< \brief Medium-precision signed integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat4x3<mediump_int> mediump_imat4x3; //!< \brief Medium-precision signed integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat4x4<mediump_int> mediump_imat4x4; //!< \brief Medium-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
|
||||||
typedef detail::tmat2x2<mediump_int> mediump_imat2x2; //!< \brief Medium-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x2<lowp_int> lowp_imat2; //!< \brief Low-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat2x3<mediump_int> mediump_imat2x3; //!< \brief Medium-precision signed integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat3x3<lowp_int> lowp_imat3; //!< \brief Low-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat2x4<mediump_int> mediump_imat2x4; //!< \brief Medium-precision signed integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat4x4<lowp_int> lowp_imat4; //!< \brief Low-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat3x2<mediump_int> mediump_imat3x2; //!< \brief Medium-precision signed integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat3x3<mediump_int> mediump_imat3x3; //!< \brief Medium-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat3x4<mediump_int> mediump_imat3x4; //!< \brief Medium-precision signed integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat4x2<mediump_int> mediump_imat4x2; //!< \brief Medium-precision signed integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat4x3<mediump_int> mediump_imat4x3; //!< \brief Medium-precision signed integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat4x4<mediump_int> mediump_imat4x4; //!< \brief Medium-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
|
|
||||||
typedef detail::tmat2x2<lowp_int> lowp_imat2; //!< \brief Low-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x2<lowp_int> lowp_imat2x2; //!< \brief Low-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat3x3<lowp_int> lowp_imat3; //!< \brief Low-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x3<lowp_int> lowp_imat2x3; //!< \brief Low-precision signed integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat4x4<lowp_int> lowp_imat4; //!< \brief Low-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x4<lowp_int> lowp_imat2x4; //!< \brief Low-precision signed integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat3x2<lowp_int> lowp_imat3x2; //!< \brief Low-precision signed integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat3x3<lowp_int> lowp_imat3x3; //!< \brief Low-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat3x4<lowp_int> lowp_imat3x4; //!< \brief Low-precision signed integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat4x2<lowp_int> lowp_imat4x2; //!< \brief Low-precision signed integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat4x3<lowp_int> lowp_imat4x3; //!< \brief Low-precision signed integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat4x4<lowp_int> lowp_imat4x4; //!< \brief Low-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
|
||||||
typedef detail::tmat2x2<lowp_int> lowp_imat2x2; //!< \brief Low-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x2<highp_uint> highp_umat2; //!< \brief High-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat2x3<lowp_int> lowp_imat2x3; //!< \brief Low-precision signed integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat3x3<highp_uint> highp_umat3; //!< \brief High-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat2x4<lowp_int> lowp_imat2x4; //!< \brief Low-precision signed integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat4x4<highp_uint> highp_umat4; //!< \brief High-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat3x2<lowp_int> lowp_imat3x2; //!< \brief Low-precision signed integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat3x3<lowp_int> lowp_imat3x3; //!< \brief Low-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat3x4<lowp_int> lowp_imat3x4; //!< \brief Low-precision signed integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat4x2<lowp_int> lowp_imat4x2; //!< \brief Low-precision signed integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat4x3<lowp_int> lowp_imat4x3; //!< \brief Low-precision signed integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat4x4<lowp_int> lowp_imat4x4; //!< \brief Low-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
|
|
||||||
typedef detail::tmat2x2<highp_uint> highp_umat2; //!< \brief High-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x2<highp_uint> highp_umat2x2; //!< \brief High-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat3x3<highp_uint> highp_umat3; //!< \brief High-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x3<highp_uint> highp_umat2x3; //!< \brief High-precision signed integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat4x4<highp_uint> highp_umat4; //!< \brief High-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x4<highp_uint> highp_umat2x4; //!< \brief High-precision signed integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat3x2<highp_uint> highp_umat3x2; //!< \brief High-precision signed integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat3x3<highp_uint> highp_umat3x3; //!< \brief High-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat3x4<highp_uint> highp_umat3x4; //!< \brief High-precision signed integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat4x2<highp_uint> highp_umat4x2; //!< \brief High-precision signed integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat4x3<highp_uint> highp_umat4x3; //!< \brief High-precision signed integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat4x4<highp_uint> highp_umat4x4; //!< \brief High-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
|
||||||
typedef detail::tmat2x2<highp_uint> highp_umat2x2; //!< \brief High-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x2<mediump_uint> mediump_umat2; //!< \brief Medium-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat2x3<highp_uint> highp_umat2x3; //!< \brief High-precision signed integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat3x3<mediump_uint> mediump_umat3; //!< \brief Medium-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat2x4<highp_uint> highp_umat2x4; //!< \brief High-precision signed integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat4x4<mediump_uint> mediump_umat4; //!< \brief Medium-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat3x2<highp_uint> highp_umat3x2; //!< \brief High-precision signed integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat3x3<highp_uint> highp_umat3x3; //!< \brief High-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat3x4<highp_uint> highp_umat3x4; //!< \brief High-precision signed integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat4x2<highp_uint> highp_umat4x2; //!< \brief High-precision signed integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat4x3<highp_uint> highp_umat4x3; //!< \brief High-precision signed integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat4x4<highp_uint> highp_umat4x4; //!< \brief High-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
|
|
||||||
typedef detail::tmat2x2<mediump_uint> mediump_umat2; //!< \brief Medium-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x2<mediump_uint> mediump_umat2x2; //!< \brief Medium-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat3x3<mediump_uint> mediump_umat3; //!< \brief Medium-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x3<mediump_uint> mediump_umat2x3; //!< \brief Medium-precision signed integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat4x4<mediump_uint> mediump_umat4; //!< \brief Medium-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x4<mediump_uint> mediump_umat2x4; //!< \brief Medium-precision signed integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat3x2<mediump_uint> mediump_umat3x2; //!< \brief Medium-precision signed integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat3x3<mediump_uint> mediump_umat3x3; //!< \brief Medium-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat3x4<mediump_uint> mediump_umat3x4; //!< \brief Medium-precision signed integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat4x2<mediump_uint> mediump_umat4x2; //!< \brief Medium-precision signed integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat4x3<mediump_uint> mediump_umat4x3; //!< \brief Medium-precision signed integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat4x4<mediump_uint> mediump_umat4x4; //!< \brief Medium-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
|
||||||
typedef detail::tmat2x2<mediump_uint> mediump_umat2x2; //!< \brief Medium-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x2<lowp_uint> lowp_umat2; //!< \brief Low-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat2x3<mediump_uint> mediump_umat2x3; //!< \brief Medium-precision signed integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat3x3<lowp_uint> lowp_umat3; //!< \brief Low-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat2x4<mediump_uint> mediump_umat2x4; //!< \brief Medium-precision signed integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat4x4<lowp_uint> lowp_umat4; //!< \brief Low-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat3x2<mediump_uint> mediump_umat3x2; //!< \brief Medium-precision signed integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat3x3<mediump_uint> mediump_umat3x3; //!< \brief Medium-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat3x4<mediump_uint> mediump_umat3x4; //!< \brief Medium-precision signed integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat4x2<mediump_uint> mediump_umat4x2; //!< \brief Medium-precision signed integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat4x3<mediump_uint> mediump_umat4x3; //!< \brief Medium-precision signed integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat4x4<mediump_uint> mediump_umat4x4; //!< \brief Medium-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
|
|
||||||
typedef detail::tmat2x2<lowp_uint> lowp_umat2; //!< \brief Low-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x2<lowp_uint> lowp_umat2x2; //!< \brief Low-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat3x3<lowp_uint> lowp_umat3; //!< \brief Low-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x3<lowp_uint> lowp_umat2x3; //!< \brief Low-precision signed integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat4x4<lowp_uint> lowp_umat4; //!< \brief Low-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat2x4<lowp_uint> lowp_umat2x4; //!< \brief Low-precision signed integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
|
typedef detail::tmat3x2<lowp_uint> lowp_umat3x2; //!< \brief Low-precision signed integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat2x2<lowp_uint> lowp_umat2x2; //!< \brief Low-precision signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat3x3<lowp_uint> lowp_umat3x3; //!< \brief Low-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat2x3<lowp_uint> lowp_umat2x3; //!< \brief Low-precision signed integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat3x4<lowp_uint> lowp_umat3x4; //!< \brief Low-precision signed integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat2x4<lowp_uint> lowp_umat2x4; //!< \brief Low-precision signed integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat4x2<lowp_uint> lowp_umat4x2; //!< \brief Low-precision signed integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat3x2<lowp_uint> lowp_umat3x2; //!< \brief Low-precision signed integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat4x3<lowp_uint> lowp_umat4x3; //!< \brief Low-precision signed integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat3x3<lowp_uint> lowp_umat3x3; //!< \brief Low-precision signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef detail::tmat4x4<lowp_uint> lowp_umat4x4; //!< \brief Low-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef detail::tmat3x4<lowp_uint> lowp_umat3x4; //!< \brief Low-precision signed integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat4x2<lowp_uint> lowp_umat4x2; //!< \brief Low-precision signed integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat4x3<lowp_uint> lowp_umat4x3; //!< \brief Low-precision signed integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
typedef detail::tmat4x4<lowp_uint> lowp_umat4x4; //!< \brief Low-precision signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
|
||||||
|
|
||||||
#if(defined(GLM_PRECISION_HIGHP_INT))
|
#if(defined(GLM_PRECISION_HIGHP_INT))
|
||||||
typedef highp_imat2 imat2; //!< \brief Signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_imat2 imat2; //!< \brief Signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_imat3 imat3; //!< \brief Signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_imat3 imat3; //!< \brief Signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_imat4 imat4; //!< \brief Signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_imat4 imat4; //!< \brief Signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_imat2x2 imat2x2; //!< \brief Signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_imat2x2 imat2x2; //!< \brief Signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_imat2x3 imat2x3; //!< \brief Signed integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_imat2x3 imat2x3; //!< \brief Signed integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_imat2x4 imat2x4; //!< \brief Signed integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_imat2x4 imat2x4; //!< \brief Signed integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_imat3x2 imat3x2; //!< \brief Signed integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_imat3x2 imat3x2; //!< \brief Signed integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_imat3x3 imat3x3; //!< \brief Signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_imat3x3 imat3x3; //!< \brief Signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_imat3x4 imat3x4; //!< \brief Signed integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_imat3x4 imat3x4; //!< \brief Signed integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_imat4x2 imat4x2; //!< \brief Signed integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_imat4x2 imat4x2; //!< \brief Signed integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_imat4x3 imat4x3; //!< \brief Signed integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_imat4x3 imat4x3; //!< \brief Signed integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_imat4x4 imat4x4; //!< \brief Signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_imat4x4 imat4x4; //!< \brief Signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
#elif(defined(GLM_PRECISION_LOWP_INT))
|
#elif(defined(GLM_PRECISION_LOWP_INT))
|
||||||
typedef lowp_imat2 imat2; //!< \brief Signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_imat2 imat2; //!< \brief Signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_imat3 imat3; //!< \brief Signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_imat3 imat3; //!< \brief Signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_imat4 imat4; //!< \brief Signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_imat4 imat4; //!< \brief Signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_imat2x2 imat2x2; //!< \brief Signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_imat2x2 imat2x2; //!< \brief Signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_imat2x3 imat2x3; //!< \brief Signed integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_imat2x3 imat2x3; //!< \brief Signed integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_imat2x4 imat2x4; //!< \brief Signed integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_imat2x4 imat2x4; //!< \brief Signed integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_imat3x2 imat3x2; //!< \brief Signed integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_imat3x2 imat3x2; //!< \brief Signed integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_imat3x3 imat3x3; //!< \brief Signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_imat3x3 imat3x3; //!< \brief Signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_imat3x4 imat3x4; //!< \brief Signed integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_imat3x4 imat3x4; //!< \brief Signed integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_imat4x2 imat4x2; //!< \brief Signed integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_imat4x2 imat4x2; //!< \brief Signed integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_imat4x3 imat4x3; //!< \brief Signed integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_imat4x3 imat4x3; //!< \brief Signed integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_imat4x4 imat4x4; //!< \brief Signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_imat4x4 imat4x4; //!< \brief Signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
|
#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
|
||||||
typedef mediump_imat2 imat2; //!< \brief Signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_imat2 imat2; //!< \brief Signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_imat3 imat3; //!< \brief Signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_imat3 imat3; //!< \brief Signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_imat4 imat4; //!< \brief Signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_imat4 imat4; //!< \brief Signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_imat2x2 imat2x2; //!< \brief Signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_imat2x2 imat2x2; //!< \brief Signed integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_imat2x3 imat2x3; //!< \brief Signed integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_imat2x3 imat2x3; //!< \brief Signed integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_imat2x4 imat2x4; //!< \brief Signed integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_imat2x4 imat2x4; //!< \brief Signed integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_imat3x2 imat3x2; //!< \brief Signed integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_imat3x2 imat3x2; //!< \brief Signed integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_imat3x3 imat3x3; //!< \brief Signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_imat3x3 imat3x3; //!< \brief Signed integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_imat3x4 imat3x4; //!< \brief Signed integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_imat3x4 imat3x4; //!< \brief Signed integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_imat4x2 imat4x2; //!< \brief Signed integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_imat4x2 imat4x2; //!< \brief Signed integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_imat4x3 imat4x3; //!< \brief Signed integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_imat4x3 imat4x3; //!< \brief Signed integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_imat4x4 imat4x4; //!< \brief Signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_imat4x4 imat4x4; //!< \brief Signed integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
#endif//GLM_PRECISION
|
#endif//GLM_PRECISION
|
||||||
|
|
||||||
#if(defined(GLM_PRECISION_HIGHP_UINT))
|
#if(defined(GLM_PRECISION_HIGHP_UINT))
|
||||||
typedef highp_umat2 umat2; //!< \brief Unsigned integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_umat2 umat2; //!< \brief Unsigned integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_umat3 umat3; //!< \brief Unsigned integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_umat3 umat3; //!< \brief Unsigned integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_umat4 umat4; //!< \brief Unsigned integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_umat4 umat4; //!< \brief Unsigned integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_umat2x2 umat2x2; //!< \brief Unsigned integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_umat2x2 umat2x2; //!< \brief Unsigned integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_umat2x3 umat2x3; //!< \brief Unsigned integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_umat2x3 umat2x3; //!< \brief Unsigned integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_umat2x4 umat2x4; //!< \brief Unsigned integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_umat2x4 umat2x4; //!< \brief Unsigned integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_umat3x2 umat3x2; //!< \brief Unsigned integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_umat3x2 umat3x2; //!< \brief Unsigned integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_umat3x3 umat3x3; //!< \brief Unsigned integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_umat3x3 umat3x3; //!< \brief Unsigned integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_umat3x4 umat3x4; //!< \brief Unsigned integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_umat3x4 umat3x4; //!< \brief Unsigned integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_umat4x2 umat4x2; //!< \brief Unsigned integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_umat4x2 umat4x2; //!< \brief Unsigned integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_umat4x3 umat4x3; //!< \brief Unsigned integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_umat4x3 umat4x3; //!< \brief Unsigned integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef highp_umat4x4 umat4x4; //!< \brief Unsigned integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef highp_umat4x4 umat4x4; //!< \brief Unsigned integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
#elif(defined(GLM_PRECISION_LOWP_UINT))
|
#elif(defined(GLM_PRECISION_LOWP_UINT))
|
||||||
typedef lowp_umat2 umat2; //!< \brief Unsigned integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_umat2 umat2; //!< \brief Unsigned integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_umat3 umat3; //!< \brief Unsigned integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_umat3 umat3; //!< \brief Unsigned integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_umat4 umat4; //!< \brief Unsigned integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_umat4 umat4; //!< \brief Unsigned integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_umat2x2 umat2x2; //!< \brief Unsigned integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_umat2x2 umat2x2; //!< \brief Unsigned integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_umat2x3 umat2x3; //!< \brief Unsigned integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_umat2x3 umat2x3; //!< \brief Unsigned integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_umat2x4 umat2x4; //!< \brief Unsigned integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_umat2x4 umat2x4; //!< \brief Unsigned integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_umat3x2 umat3x2; //!< \brief Unsigned integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_umat3x2 umat3x2; //!< \brief Unsigned integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_umat3x3 umat3x3; //!< \brief Unsigned integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_umat3x3 umat3x3; //!< \brief Unsigned integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_umat3x4 umat3x4; //!< \brief Unsigned integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_umat3x4 umat3x4; //!< \brief Unsigned integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_umat4x2 umat4x2; //!< \brief Unsigned integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_umat4x2 umat4x2; //!< \brief Unsigned integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_umat4x3 umat4x3; //!< \brief Unsigned integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_umat4x3 umat4x3; //!< \brief Unsigned integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef lowp_umat4x4 umat4x4; //!< \brief Unsigned integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef lowp_umat4x4 umat4x4; //!< \brief Unsigned integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
|
#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
|
||||||
typedef mediump_umat2 umat2; //!< \brief Unsigned integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_umat2 umat2; //!< \brief Unsigned integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_umat3 umat3; //!< \brief Unsigned integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_umat3 umat3; //!< \brief Unsigned integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_umat4 umat4; //!< \brief Unsigned integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_umat4 umat4; //!< \brief Unsigned integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_umat2x2 umat2x2; //!< \brief Unsigned integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_umat2x2 umat2x2; //!< \brief Unsigned integer 2x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_umat2x3 umat2x3; //!< \brief Unsigned integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_umat2x3 umat2x3; //!< \brief Unsigned integer 2x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_umat2x4 umat2x4; //!< \brief Unsigned integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_umat2x4 umat2x4; //!< \brief Unsigned integer 2x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_umat3x2 umat3x2; //!< \brief Unsigned integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_umat3x2 umat3x2; //!< \brief Unsigned integer 3x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_umat3x3 umat3x3; //!< \brief Unsigned integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_umat3x3 umat3x3; //!< \brief Unsigned integer 3x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_umat3x4 umat3x4; //!< \brief Unsigned integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_umat3x4 umat3x4; //!< \brief Unsigned integer 3x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_umat4x2 umat4x2; //!< \brief Unsigned integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_umat4x2 umat4x2; //!< \brief Unsigned integer 4x2 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_umat4x3 umat4x3; //!< \brief Unsigned integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_umat4x3 umat4x3; //!< \brief Unsigned integer 4x3 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
typedef mediump_umat4x4 umat4x4; //!< \brief Unsigned integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
typedef mediump_umat4x4 umat4x4; //!< \brief Unsigned integer 4x4 matrix. (from GLM_GTC_matrix_integer extension)
|
||||||
#endif//GLM_PRECISION
|
#endif//GLM_PRECISION
|
||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
}//namespace matrix_integer
|
}//namespace matrix_integer
|
||||||
}//namespace gtc
|
}//namespace gtc
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
namespace glm{using namespace gtc::matrix_integer;}
|
namespace glm{using namespace gtc::matrix_integer;}
|
||||||
|
@ -22,8 +22,7 @@
|
|||||||
|
|
||||||
namespace glm{
|
namespace glm{
|
||||||
namespace gtc{
|
namespace gtc{
|
||||||
//! GLM_GTC_matrix_inverse extension: Inverse matrix functions
|
namespace matrix_inverse ///< GLM_GTC_matrix_inverse extension: Inverse matrix functions
|
||||||
namespace matrix_inverse
|
|
||||||
{
|
{
|
||||||
/// \addtogroup gtc_matrix_inverse
|
/// \addtogroup gtc_matrix_inverse
|
||||||
///@{
|
///@{
|
||||||
|
@ -41,13 +41,8 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm{
|
namespace glm{
|
||||||
namespace test{
|
|
||||||
bool main_gtc_matrix_transform();
|
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtc{
|
namespace gtc{
|
||||||
/// GLM_GTC_matrix_transform extension: Add transformation matrices
|
namespace matrix_transform ///< GLM_GTC_matrix_transform extension: Add transformation matrices
|
||||||
namespace matrix_transform
|
|
||||||
{
|
{
|
||||||
/// @addtogroup gtc_matrix_transform
|
/// @addtogroup gtc_matrix_transform
|
||||||
/// @{
|
/// @{
|
||||||
|
@ -26,206 +26,200 @@
|
|||||||
# pragma message("GLM: GLM_GTC_quaternion extension included")
|
# pragma message("GLM: GLM_GTC_quaternion extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace detail
|
||||||
{
|
{
|
||||||
namespace test{
|
//! \brief Template for quaternion.
|
||||||
bool main_gtc_quaternion();
|
//! From GLM_GTC_quaternion extension.
|
||||||
}//namespace test
|
/// \ingroup gtc_quaternion
|
||||||
|
template <typename T>
|
||||||
namespace detail
|
struct tquat// : public genType<T, tquat>
|
||||||
{
|
{
|
||||||
//! \brief Template for quaternion.
|
typedef T value_type;
|
||||||
//! From GLM_GTC_quaternion extension.
|
|
||||||
/// \ingroup gtc_quaternion
|
|
||||||
template <typename T>
|
|
||||||
struct tquat// : public genType<T, tquat>
|
|
||||||
{
|
|
||||||
typedef T value_type;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
value_type x, y, z, w;
|
value_type x, y, z, w;
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
tquat();
|
tquat();
|
||||||
explicit tquat(
|
explicit tquat(
|
||||||
value_type const & s,
|
value_type const & s,
|
||||||
tvec3<T> const & v);
|
tvec3<T> const & v);
|
||||||
explicit tquat(
|
explicit tquat(
|
||||||
value_type const & w,
|
value_type const & w,
|
||||||
value_type const & x,
|
value_type const & x,
|
||||||
value_type const & y,
|
value_type const & y,
|
||||||
value_type const & z);
|
value_type const & z);
|
||||||
|
|
||||||
// Convertions
|
// Convertions
|
||||||
//explicit tquat(valType const & pitch, valType const & yaw, valType const & roll);
|
//explicit tquat(valType const & pitch, valType const & yaw, valType const & roll);
|
||||||
//! pitch, yaw, roll
|
//! pitch, yaw, roll
|
||||||
explicit tquat(
|
explicit tquat(
|
||||||
tvec3<T> const & eulerAngles);
|
tvec3<T> const & eulerAngles);
|
||||||
explicit tquat(
|
explicit tquat(
|
||||||
tmat3x3<T> const & m);
|
tmat3x3<T> const & m);
|
||||||
explicit tquat(
|
explicit tquat(
|
||||||
tmat4x4<T> const & m);
|
tmat4x4<T> const & m);
|
||||||
|
|
||||||
// Accesses
|
// Accesses
|
||||||
value_type & operator[](int i);
|
value_type & operator[](int i);
|
||||||
value_type const & operator[](int i) const;
|
value_type const & operator[](int i) const;
|
||||||
|
|
||||||
// Operators
|
// Operators
|
||||||
tquat<T> & operator*=(value_type const & s);
|
tquat<T> & operator*=(value_type const & s);
|
||||||
tquat<T> & operator/=(value_type const & s);
|
tquat<T> & operator/=(value_type const & s);
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tquat<T> operator- (
|
detail::tquat<T> operator- (
|
||||||
detail::tquat<T> const & q);
|
detail::tquat<T> const & q);
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tquat<T> operator* (
|
detail::tquat<T> operator* (
|
||||||
detail::tquat<T> const & q,
|
detail::tquat<T> const & q,
|
||||||
detail::tquat<T> const & p);
|
detail::tquat<T> const & p);
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec3<T> operator* (
|
detail::tvec3<T> operator* (
|
||||||
detail::tquat<T> const & q,
|
detail::tquat<T> const & q,
|
||||||
detail::tvec3<T> const & v);
|
detail::tvec3<T> const & v);
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec3<T> operator* (
|
detail::tvec3<T> operator* (
|
||||||
detail::tvec3<T> const & v,
|
detail::tvec3<T> const & v,
|
||||||
detail::tquat<T> const & q);
|
detail::tquat<T> const & q);
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec4<T> operator* (
|
detail::tvec4<T> operator* (
|
||||||
detail::tquat<T> const & q,
|
detail::tquat<T> const & q,
|
||||||
detail::tvec4<T> const & v);
|
detail::tvec4<T> const & v);
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec4<T> operator* (
|
detail::tvec4<T> operator* (
|
||||||
detail::tvec4<T> const & v,
|
detail::tvec4<T> const & v,
|
||||||
detail::tquat<T> const & q);
|
detail::tquat<T> const & q);
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tquat<T> operator* (
|
detail::tquat<T> operator* (
|
||||||
detail::tquat<T> const & q,
|
detail::tquat<T> const & q,
|
||||||
typename detail::tquat<T>::value_type const & s);
|
typename detail::tquat<T>::value_type const & s);
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tquat<T> operator* (
|
detail::tquat<T> operator* (
|
||||||
typename detail::tquat<T>::value_type const & s,
|
typename detail::tquat<T>::value_type const & s,
|
||||||
detail::tquat<T> const & q);
|
detail::tquat<T> const & q);
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tquat<T> operator/ (
|
detail::tquat<T> operator/ (
|
||||||
detail::tquat<T> const & q,
|
detail::tquat<T> const & q,
|
||||||
typename detail::tquat<T>::value_type const & s);
|
typename detail::tquat<T>::value_type const & s);
|
||||||
|
|
||||||
} //namespace detail
|
} //namespace detail
|
||||||
|
|
||||||
namespace gtc{
|
namespace gtc{
|
||||||
//! GLM_GTC_quaternion extension: Quaternion types and functions
|
namespace quaternion ///< GLM_GTC_quaternion extension: Quaternion types and functions
|
||||||
namespace quaternion
|
{
|
||||||
{
|
/// \addtogroup gtc_quaternion
|
||||||
/// \addtogroup gtc_quaternion
|
///@{
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Returns the length of the quaternion x.
|
//! Returns the length of the quaternion x.
|
||||||
//! From GLM_GTC_quaternion extension.
|
//! From GLM_GTC_quaternion extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
typename detail::tquat<T>::value_type length(
|
typename detail::tquat<T>::value_type length(
|
||||||
detail::tquat<T> const & q);
|
detail::tquat<T> const & q);
|
||||||
|
|
||||||
//! Returns the normalized quaternion of from x.
|
//! Returns the normalized quaternion of from x.
|
||||||
//! From GLM_GTC_quaternion extension.
|
//! From GLM_GTC_quaternion extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tquat<T> normalize(
|
detail::tquat<T> normalize(
|
||||||
detail::tquat<T> const & q);
|
detail::tquat<T> const & q);
|
||||||
|
|
||||||
//! Returns dot product of q1 and q2, i.e., q1[0] * q2[0] + q1[1] * q2[1] + ...
|
//! Returns dot product of q1 and q2, i.e., q1[0] * q2[0] + q1[1] * q2[1] + ...
|
||||||
//! From GLM_GTC_quaternion extension.
|
//! From GLM_GTC_quaternion extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
typename detail::tquat<T>::value_type dot(
|
typename detail::tquat<T>::value_type dot(
|
||||||
detail::tquat<T> const & q1,
|
detail::tquat<T> const & q1,
|
||||||
detail::tquat<T> const & q2);
|
detail::tquat<T> const & q2);
|
||||||
|
|
||||||
//! Returns the cross product of q1 and q2.
|
//! Returns the cross product of q1 and q2.
|
||||||
//! From GLM_GTC_quaternion extension.
|
//! From GLM_GTC_quaternion extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
GLM_DEPRECATED detail::tquat<T> cross(
|
GLM_DEPRECATED detail::tquat<T> cross(
|
||||||
detail::tquat<T> const & q1,
|
detail::tquat<T> const & q1,
|
||||||
detail::tquat<T> const & q2);
|
detail::tquat<T> const & q2);
|
||||||
|
|
||||||
//! Returns a SLERP interpolated quaternion of x and y according a.
|
//! Returns a SLERP interpolated quaternion of x and y according a.
|
||||||
//! From GLM_GTC_quaternion extension.
|
//! From GLM_GTC_quaternion extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tquat<T> mix(
|
detail::tquat<T> mix(
|
||||||
detail::tquat<T> const & x,
|
detail::tquat<T> const & x,
|
||||||
detail::tquat<T> const & y,
|
detail::tquat<T> const & y,
|
||||||
typename detail::tquat<T>::value_type const & a);
|
typename detail::tquat<T>::value_type const & a);
|
||||||
|
|
||||||
//! Returns the q conjugate.
|
//! Returns the q conjugate.
|
||||||
//! From GLM_GTC_quaternion extension.
|
//! From GLM_GTC_quaternion extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tquat<T> conjugate(
|
detail::tquat<T> conjugate(
|
||||||
detail::tquat<T> const & q);
|
detail::tquat<T> const & q);
|
||||||
|
|
||||||
//! Returns the q inverse.
|
//! Returns the q inverse.
|
||||||
//! From GLM_GTC_quaternion extension.
|
//! From GLM_GTC_quaternion extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tquat<T> inverse(
|
detail::tquat<T> inverse(
|
||||||
detail::tquat<T> const & q);
|
detail::tquat<T> const & q);
|
||||||
|
|
||||||
//! Rotates a quaternion from an vector of 3 components axis and an angle expressed in degrees.
|
//! Rotates a quaternion from an vector of 3 components axis and an angle expressed in degrees.
|
||||||
//! From GLM_GTC_quaternion extension.
|
//! From GLM_GTC_quaternion extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tquat<T> rotate(
|
detail::tquat<T> rotate(
|
||||||
detail::tquat<T> const & q,
|
detail::tquat<T> const & q,
|
||||||
typename detail::tquat<T>::value_type const & angle,
|
typename detail::tquat<T>::value_type const & angle,
|
||||||
detail::tvec3<T> const & v);
|
detail::tvec3<T> const & v);
|
||||||
|
|
||||||
//! Converts a quaternion to a 3 * 3 matrix.
|
//! Converts a quaternion to a 3 * 3 matrix.
|
||||||
//! From GLM_GTC_quaternion extension.
|
//! From GLM_GTC_quaternion extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat3x3<T> mat3_cast(
|
detail::tmat3x3<T> mat3_cast(
|
||||||
detail::tquat<T> const & x);
|
detail::tquat<T> const & x);
|
||||||
|
|
||||||
//! Converts a quaternion to a 4 * 4 matrix.
|
//! Converts a quaternion to a 4 * 4 matrix.
|
||||||
//! From GLM_GTC_quaternion extension.
|
//! From GLM_GTC_quaternion extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> mat4_cast(
|
detail::tmat4x4<T> mat4_cast(
|
||||||
detail::tquat<T> const & x);
|
detail::tquat<T> const & x);
|
||||||
|
|
||||||
//! Converts a 3 * 3 matrix to a quaternion.
|
//! Converts a 3 * 3 matrix to a quaternion.
|
||||||
//! From GLM_GTC_quaternion extension.
|
//! From GLM_GTC_quaternion extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tquat<T> quat_cast(
|
detail::tquat<T> quat_cast(
|
||||||
detail::tmat3x3<T> const & x);
|
detail::tmat3x3<T> const & x);
|
||||||
|
|
||||||
//! Converts a 4 * 4 matrix to a quaternion.
|
//! Converts a 4 * 4 matrix to a quaternion.
|
||||||
//! From GLM_GTC_quaternion extension.
|
//! From GLM_GTC_quaternion extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tquat<T> quat_cast(
|
detail::tquat<T> quat_cast(
|
||||||
detail::tmat4x4<T> const & x);
|
detail::tmat4x4<T> const & x);
|
||||||
|
|
||||||
//! Quaternion of floating-point numbers.
|
//! Quaternion of floating-point numbers.
|
||||||
//! From GLM_GTC_quaternion extension.
|
//! From GLM_GTC_quaternion extension.
|
||||||
typedef detail::tquat<float> quat;
|
typedef detail::tquat<float> quat;
|
||||||
|
|
||||||
//! Quaternion of half-precision floating-point numbers.
|
//! Quaternion of half-precision floating-point numbers.
|
||||||
//! From GLM_GTC_quaternion extension.
|
//! From GLM_GTC_quaternion extension.
|
||||||
typedef detail::tquat<detail::thalf> hquat;
|
typedef detail::tquat<detail::thalf> hquat;
|
||||||
|
|
||||||
//! Quaternion of single-precision floating-point numbers.
|
//! Quaternion of single-precision floating-point numbers.
|
||||||
//! From GLM_GTC_quaternion extension.
|
//! From GLM_GTC_quaternion extension.
|
||||||
typedef detail::tquat<float> fquat;
|
typedef detail::tquat<float> fquat;
|
||||||
|
|
||||||
//! Quaternion of double-precision floating-point numbers.
|
//! Quaternion of double-precision floating-point numbers.
|
||||||
//! From GLM_GTC_quaternion extension.
|
//! From GLM_GTC_quaternion extension.
|
||||||
typedef detail::tquat<double> dquat;
|
typedef detail::tquat<double> dquat;
|
||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
}//namespace quaternion
|
} //namespace quaternion
|
||||||
}//namespace gtc
|
} //namespace gtc
|
||||||
} //namespace glm
|
} //namespace glm
|
||||||
|
|
||||||
#include "quaternion.inl"
|
#include "quaternion.inl"
|
||||||
|
@ -21,333 +21,327 @@
|
|||||||
# pragma message("GLM: GLM_GTC_swizzle extension included")
|
# pragma message("GLM: GLM_GTC_swizzle extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtc{
|
||||||
|
namespace swizzle ///< GLM_GTC_swizzle extension
|
||||||
{
|
{
|
||||||
namespace test{
|
using namespace gtc::half_float;
|
||||||
void main_gtc_swizzle();
|
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtc{
|
template <typename T, template <typename> class vecType>
|
||||||
//! GLM_GTC_swizzle extension
|
T const & swizzle(
|
||||||
namespace swizzle
|
vecType<T> const & v,
|
||||||
{
|
comp x);
|
||||||
using namespace gtc::half_float;
|
|
||||||
|
|
||||||
template <typename T, template <typename> class vecType>
|
template <typename T, template <typename> class vecType>
|
||||||
T const & swizzle(
|
detail::tvec2<T> const & swizzle(
|
||||||
vecType<T> const & v,
|
vecType<T> const & v,
|
||||||
comp x);
|
comp x, comp y);
|
||||||
|
|
||||||
template <typename T, template <typename> class vecType>
|
template <typename T, template <typename> class vecType>
|
||||||
detail::tvec2<T> const & swizzle(
|
detail::tvec3<T> const & swizzle(
|
||||||
vecType<T> const & v,
|
vecType<T> const & v,
|
||||||
comp x, comp y);
|
comp x, comp y, comp z);
|
||||||
|
|
||||||
template <typename T, template <typename> class vecType>
|
template <typename T, template <typename> class vecType>
|
||||||
detail::tvec3<T> const & swizzle(
|
detail::tvec4<T> const & swizzle(
|
||||||
vecType<T> const & v,
|
vecType<T> const & v,
|
||||||
comp x, comp y, comp z);
|
comp x, comp y, comp z, comp w);
|
||||||
|
|
||||||
template <typename T, template <typename> class vecType>
|
template <typename T, template <typename> class vecType>
|
||||||
detail::tvec4<T> const & swizzle(
|
T & swizzle(
|
||||||
vecType<T> const & v,
|
vecType<T> & v,
|
||||||
comp x, comp y, comp z, comp w);
|
comp x);
|
||||||
|
|
||||||
template <typename T, template <typename> class vecType>
|
template <typename T, template <typename> class vecType>
|
||||||
T & swizzle(
|
detail::tref2<T> swizzle(
|
||||||
vecType<T> & v,
|
vecType<T> & v,
|
||||||
comp x);
|
comp x, comp y);
|
||||||
|
|
||||||
template <typename T, template <typename> class vecType>
|
template <typename T, template <typename> class vecType>
|
||||||
detail::tref2<T> swizzle(
|
detail::tref3<T> swizzle(
|
||||||
vecType<T> & v,
|
vecType<T> & v,
|
||||||
comp x, comp y);
|
comp x, comp y, comp z);
|
||||||
|
|
||||||
template <typename T, template <typename> class vecType>
|
template <typename T, template <typename> class vecType>
|
||||||
detail::tref3<T> swizzle(
|
detail::tref4<T> swizzle(
|
||||||
vecType<T> & v,
|
vecType<T> & v,
|
||||||
comp x, comp y, comp z);
|
comp x, comp y, comp z, comp w);
|
||||||
|
|
||||||
template <typename T, template <typename> class vecType>
|
|
||||||
detail::tref4<T> swizzle(
|
|
||||||
vecType<T> & v,
|
|
||||||
comp x, comp y, comp z, comp w);
|
|
||||||
|
|
||||||
# define static_swizzle1(TYPE, SIZE) \
|
# define static_swizzle1(TYPE, SIZE) \
|
||||||
template <comp x> \
|
template <comp x> \
|
||||||
GLM_FUNC_QUALIFIER TYPE swizzle(detail::tvec##SIZE<TYPE> const & v) \
|
GLM_FUNC_QUALIFIER TYPE swizzle(detail::tvec##SIZE<TYPE> const & v) \
|
||||||
{return v[x];} \
|
{return v[x];} \
|
||||||
\
|
\
|
||||||
template <comp x> \
|
template <comp x> \
|
||||||
GLM_FUNC_QUALIFIER TYPE& swizzle(detail::tvec##SIZE<TYPE> & v) \
|
GLM_FUNC_QUALIFIER TYPE& swizzle(detail::tvec##SIZE<TYPE> & v) \
|
||||||
{return v[x];}
|
{return v[x];}
|
||||||
|
|
||||||
static_swizzle1(detail::float16, 2)
|
static_swizzle1(detail::float16, 2)
|
||||||
static_swizzle1(detail::float16, 3)
|
static_swizzle1(detail::float16, 3)
|
||||||
static_swizzle1(detail::float16, 4)
|
static_swizzle1(detail::float16, 4)
|
||||||
static_swizzle1(detail::float32, 2)
|
static_swizzle1(detail::float32, 2)
|
||||||
static_swizzle1(detail::float32, 3)
|
static_swizzle1(detail::float32, 3)
|
||||||
static_swizzle1(detail::float32, 4)
|
static_swizzle1(detail::float32, 4)
|
||||||
static_swizzle1(detail::float64, 2)
|
static_swizzle1(detail::float64, 2)
|
||||||
static_swizzle1(detail::float64, 3)
|
static_swizzle1(detail::float64, 3)
|
||||||
static_swizzle1(detail::float64, 4)
|
static_swizzle1(detail::float64, 4)
|
||||||
|
|
||||||
static_swizzle1(detail::int8, 2)
|
static_swizzle1(detail::int8, 2)
|
||||||
static_swizzle1(detail::int8, 3)
|
static_swizzle1(detail::int8, 3)
|
||||||
static_swizzle1(detail::int8, 4)
|
static_swizzle1(detail::int8, 4)
|
||||||
static_swizzle1(detail::int16, 2)
|
static_swizzle1(detail::int16, 2)
|
||||||
static_swizzle1(detail::int16, 3)
|
static_swizzle1(detail::int16, 3)
|
||||||
static_swizzle1(detail::int16, 4)
|
static_swizzle1(detail::int16, 4)
|
||||||
static_swizzle1(detail::int32, 2)
|
static_swizzle1(detail::int32, 2)
|
||||||
static_swizzle1(detail::int32, 3)
|
static_swizzle1(detail::int32, 3)
|
||||||
static_swizzle1(detail::int32, 4)
|
static_swizzle1(detail::int32, 4)
|
||||||
static_swizzle1(detail::int64, 2)
|
static_swizzle1(detail::int64, 2)
|
||||||
static_swizzle1(detail::int64, 3)
|
static_swizzle1(detail::int64, 3)
|
||||||
static_swizzle1(detail::int64, 4)
|
static_swizzle1(detail::int64, 4)
|
||||||
|
|
||||||
static_swizzle1(detail::uint8, 2)
|
static_swizzle1(detail::uint8, 2)
|
||||||
static_swizzle1(detail::uint8, 3)
|
static_swizzle1(detail::uint8, 3)
|
||||||
static_swizzle1(detail::uint8, 4)
|
static_swizzle1(detail::uint8, 4)
|
||||||
static_swizzle1(detail::uint16, 2)
|
static_swizzle1(detail::uint16, 2)
|
||||||
static_swizzle1(detail::uint16, 3)
|
static_swizzle1(detail::uint16, 3)
|
||||||
static_swizzle1(detail::uint16, 4)
|
static_swizzle1(detail::uint16, 4)
|
||||||
static_swizzle1(detail::uint32, 2)
|
static_swizzle1(detail::uint32, 2)
|
||||||
static_swizzle1(detail::uint32, 3)
|
static_swizzle1(detail::uint32, 3)
|
||||||
static_swizzle1(detail::uint32, 4)
|
static_swizzle1(detail::uint32, 4)
|
||||||
static_swizzle1(detail::uint64, 2)
|
static_swizzle1(detail::uint64, 2)
|
||||||
static_swizzle1(detail::uint64, 3)
|
static_swizzle1(detail::uint64, 3)
|
||||||
static_swizzle1(detail::uint64, 4)
|
static_swizzle1(detail::uint64, 4)
|
||||||
|
|
||||||
# define static_swizzle2_const(TYPE) \
|
# define static_swizzle2_const(TYPE) \
|
||||||
template <comp x, comp y> \
|
template <comp x, comp y> \
|
||||||
GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \
|
GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \
|
||||||
{return TYPE(v[x], v[y]);}
|
{return TYPE(v[x], v[y]);}
|
||||||
|
|
||||||
# define static_swizzle3_const(TYPE) \
|
# define static_swizzle3_const(TYPE) \
|
||||||
template <comp x, comp y, comp z> \
|
template <comp x, comp y, comp z> \
|
||||||
GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \
|
GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \
|
||||||
{return TYPE(v[x], v[y], v[z]);}
|
{return TYPE(v[x], v[y], v[z]);}
|
||||||
|
|
||||||
# define static_swizzle4_const(TYPE) \
|
# define static_swizzle4_const(TYPE) \
|
||||||
template <comp x, comp y, comp z, comp w> \
|
template <comp x, comp y, comp z, comp w> \
|
||||||
GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \
|
GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \
|
||||||
{return TYPE(v[x], v[y], v[z], v[w]);}
|
{return TYPE(v[x], v[y], v[z], v[w]);}
|
||||||
/*
|
/*
|
||||||
# define static_swizzle2_const(TYPE, SIZE) \
|
# define static_swizzle2_const(TYPE, SIZE) \
|
||||||
template <comp x, comp y> \
|
template <comp x, comp y> \
|
||||||
GLM_FUNC_QUALIFIER detail::tvec2<TYPE> swizzle(detail::tvec##SIZE<TYPE> const & v) \
|
GLM_FUNC_QUALIFIER detail::tvec2<TYPE> swizzle(detail::tvec##SIZE<TYPE> const & v) \
|
||||||
{return detail::tvec2<TYPE>(v[x], v[y]);}
|
{return detail::tvec2<TYPE>(v[x], v[y]);}
|
||||||
|
|
||||||
# define static_swizzle3_const(TYPE, SIZE) \
|
# define static_swizzle3_const(TYPE, SIZE) \
|
||||||
template <comp x, comp y, comp z> \
|
template <comp x, comp y, comp z> \
|
||||||
GLM_FUNC_QUALIFIER detail::tvec3<TYPE> swizzle(detail::tvec##SIZE<TYPE> const & v) \
|
GLM_FUNC_QUALIFIER detail::tvec3<TYPE> swizzle(detail::tvec##SIZE<TYPE> const & v) \
|
||||||
{return detail::tvec3<TYPE>(v[x], v[y], v[z]);}
|
{return detail::tvec3<TYPE>(v[x], v[y], v[z]);}
|
||||||
|
|
||||||
# define static_swizzle4_const(TYPE, SIZE) \
|
# define static_swizzle4_const(TYPE, SIZE) \
|
||||||
template <comp x, comp y, comp z, comp w> \
|
template <comp x, comp y, comp z, comp w> \
|
||||||
GLM_FUNC_QUALIFIER detail::tvec4<TYPE> swizzle(detail::tvec##SIZE<TYPE> const & v) \
|
GLM_FUNC_QUALIFIER detail::tvec4<TYPE> swizzle(detail::tvec##SIZE<TYPE> const & v) \
|
||||||
{return detail::tvec4<TYPE>(v[x], v[y], v[z], v[w]);}
|
{return detail::tvec4<TYPE>(v[x], v[y], v[z], v[w]);}
|
||||||
*/
|
*/
|
||||||
static_swizzle2_const(glm::f16vec2)
|
static_swizzle2_const(glm::f16vec2)
|
||||||
static_swizzle2_const(glm::f16vec3)
|
static_swizzle2_const(glm::f16vec3)
|
||||||
static_swizzle2_const(glm::f16vec4)
|
static_swizzle2_const(glm::f16vec4)
|
||||||
static_swizzle2_const(glm::f32vec2)
|
static_swizzle2_const(glm::f32vec2)
|
||||||
static_swizzle2_const(glm::f32vec3)
|
static_swizzle2_const(glm::f32vec3)
|
||||||
static_swizzle2_const(glm::f32vec4)
|
static_swizzle2_const(glm::f32vec4)
|
||||||
static_swizzle2_const(glm::f64vec2)
|
static_swizzle2_const(glm::f64vec2)
|
||||||
static_swizzle2_const(glm::f64vec3)
|
static_swizzle2_const(glm::f64vec3)
|
||||||
static_swizzle2_const(glm::f64vec4)
|
static_swizzle2_const(glm::f64vec4)
|
||||||
|
|
||||||
static_swizzle2_const(glm::i8vec2)
|
static_swizzle2_const(glm::i8vec2)
|
||||||
static_swizzle2_const(glm::i8vec3)
|
static_swizzle2_const(glm::i8vec3)
|
||||||
static_swizzle2_const(glm::i8vec4)
|
static_swizzle2_const(glm::i8vec4)
|
||||||
static_swizzle2_const(glm::i16vec2)
|
static_swizzle2_const(glm::i16vec2)
|
||||||
static_swizzle2_const(glm::i16vec3)
|
static_swizzle2_const(glm::i16vec3)
|
||||||
static_swizzle2_const(glm::i16vec4)
|
static_swizzle2_const(glm::i16vec4)
|
||||||
static_swizzle2_const(glm::i32vec2)
|
static_swizzle2_const(glm::i32vec2)
|
||||||
static_swizzle2_const(glm::i32vec3)
|
static_swizzle2_const(glm::i32vec3)
|
||||||
static_swizzle2_const(glm::i32vec4)
|
static_swizzle2_const(glm::i32vec4)
|
||||||
static_swizzle2_const(glm::i64vec2)
|
static_swizzle2_const(glm::i64vec2)
|
||||||
static_swizzle2_const(glm::i64vec3)
|
static_swizzle2_const(glm::i64vec3)
|
||||||
static_swizzle2_const(glm::i64vec4)
|
static_swizzle2_const(glm::i64vec4)
|
||||||
|
|
||||||
static_swizzle2_const(glm::u8vec2)
|
static_swizzle2_const(glm::u8vec2)
|
||||||
static_swizzle2_const(glm::u8vec3)
|
static_swizzle2_const(glm::u8vec3)
|
||||||
static_swizzle2_const(glm::u8vec4)
|
static_swizzle2_const(glm::u8vec4)
|
||||||
static_swizzle2_const(glm::u16vec2)
|
static_swizzle2_const(glm::u16vec2)
|
||||||
static_swizzle2_const(glm::u16vec3)
|
static_swizzle2_const(glm::u16vec3)
|
||||||
static_swizzle2_const(glm::u16vec4)
|
static_swizzle2_const(glm::u16vec4)
|
||||||
static_swizzle2_const(glm::u32vec2)
|
static_swizzle2_const(glm::u32vec2)
|
||||||
static_swizzle2_const(glm::u32vec3)
|
static_swizzle2_const(glm::u32vec3)
|
||||||
static_swizzle2_const(glm::u32vec4)
|
static_swizzle2_const(glm::u32vec4)
|
||||||
static_swizzle2_const(glm::u64vec2)
|
static_swizzle2_const(glm::u64vec2)
|
||||||
static_swizzle2_const(glm::u64vec3)
|
static_swizzle2_const(glm::u64vec3)
|
||||||
static_swizzle2_const(glm::u64vec4)
|
static_swizzle2_const(glm::u64vec4)
|
||||||
|
|
||||||
static_swizzle3_const(glm::f16vec2)
|
static_swizzle3_const(glm::f16vec2)
|
||||||
static_swizzle3_const(glm::f16vec3)
|
static_swizzle3_const(glm::f16vec3)
|
||||||
static_swizzle3_const(glm::f16vec4)
|
static_swizzle3_const(glm::f16vec4)
|
||||||
static_swizzle3_const(glm::f32vec2)
|
static_swizzle3_const(glm::f32vec2)
|
||||||
static_swizzle3_const(glm::f32vec3)
|
static_swizzle3_const(glm::f32vec3)
|
||||||
static_swizzle3_const(glm::f32vec4)
|
static_swizzle3_const(glm::f32vec4)
|
||||||
static_swizzle3_const(glm::f64vec2)
|
static_swizzle3_const(glm::f64vec2)
|
||||||
static_swizzle3_const(glm::f64vec3)
|
static_swizzle3_const(glm::f64vec3)
|
||||||
static_swizzle3_const(glm::f64vec4)
|
static_swizzle3_const(glm::f64vec4)
|
||||||
|
|
||||||
static_swizzle3_const(glm::i8vec2)
|
static_swizzle3_const(glm::i8vec2)
|
||||||
static_swizzle3_const(glm::i8vec3)
|
static_swizzle3_const(glm::i8vec3)
|
||||||
static_swizzle3_const(glm::i8vec4)
|
static_swizzle3_const(glm::i8vec4)
|
||||||
static_swizzle3_const(glm::i16vec2)
|
static_swizzle3_const(glm::i16vec2)
|
||||||
static_swizzle3_const(glm::i16vec3)
|
static_swizzle3_const(glm::i16vec3)
|
||||||
static_swizzle3_const(glm::i16vec4)
|
static_swizzle3_const(glm::i16vec4)
|
||||||
static_swizzle3_const(glm::i32vec2)
|
static_swizzle3_const(glm::i32vec2)
|
||||||
static_swizzle3_const(glm::i32vec3)
|
static_swizzle3_const(glm::i32vec3)
|
||||||
static_swizzle3_const(glm::i32vec4)
|
static_swizzle3_const(glm::i32vec4)
|
||||||
static_swizzle3_const(glm::i64vec2)
|
static_swizzle3_const(glm::i64vec2)
|
||||||
static_swizzle3_const(glm::i64vec3)
|
static_swizzle3_const(glm::i64vec3)
|
||||||
static_swizzle3_const(glm::i64vec4)
|
static_swizzle3_const(glm::i64vec4)
|
||||||
|
|
||||||
static_swizzle3_const(glm::u8vec2)
|
static_swizzle3_const(glm::u8vec2)
|
||||||
static_swizzle3_const(glm::u8vec3)
|
static_swizzle3_const(glm::u8vec3)
|
||||||
static_swizzle3_const(glm::u8vec4)
|
static_swizzle3_const(glm::u8vec4)
|
||||||
static_swizzle3_const(glm::u16vec2)
|
static_swizzle3_const(glm::u16vec2)
|
||||||
static_swizzle3_const(glm::u16vec3)
|
static_swizzle3_const(glm::u16vec3)
|
||||||
static_swizzle3_const(glm::u16vec4)
|
static_swizzle3_const(glm::u16vec4)
|
||||||
static_swizzle3_const(glm::u32vec2)
|
static_swizzle3_const(glm::u32vec2)
|
||||||
static_swizzle3_const(glm::u32vec3)
|
static_swizzle3_const(glm::u32vec3)
|
||||||
static_swizzle3_const(glm::u32vec4)
|
static_swizzle3_const(glm::u32vec4)
|
||||||
static_swizzle3_const(glm::u64vec2)
|
static_swizzle3_const(glm::u64vec2)
|
||||||
static_swizzle3_const(glm::u64vec3)
|
static_swizzle3_const(glm::u64vec3)
|
||||||
static_swizzle3_const(glm::u64vec4)
|
static_swizzle3_const(glm::u64vec4)
|
||||||
|
|
||||||
static_swizzle4_const(glm::f16vec2)
|
static_swizzle4_const(glm::f16vec2)
|
||||||
static_swizzle4_const(glm::f16vec3)
|
static_swizzle4_const(glm::f16vec3)
|
||||||
static_swizzle4_const(glm::f16vec4)
|
static_swizzle4_const(glm::f16vec4)
|
||||||
static_swizzle4_const(glm::f32vec2)
|
static_swizzle4_const(glm::f32vec2)
|
||||||
static_swizzle4_const(glm::f32vec3)
|
static_swizzle4_const(glm::f32vec3)
|
||||||
static_swizzle4_const(glm::f32vec4)
|
static_swizzle4_const(glm::f32vec4)
|
||||||
static_swizzle4_const(glm::f64vec2)
|
static_swizzle4_const(glm::f64vec2)
|
||||||
static_swizzle4_const(glm::f64vec3)
|
static_swizzle4_const(glm::f64vec3)
|
||||||
static_swizzle4_const(glm::f64vec4)
|
static_swizzle4_const(glm::f64vec4)
|
||||||
|
|
||||||
static_swizzle4_const(glm::i8vec2)
|
static_swizzle4_const(glm::i8vec2)
|
||||||
static_swizzle4_const(glm::i8vec3)
|
static_swizzle4_const(glm::i8vec3)
|
||||||
static_swizzle4_const(glm::i8vec4)
|
static_swizzle4_const(glm::i8vec4)
|
||||||
static_swizzle4_const(glm::i16vec2)
|
static_swizzle4_const(glm::i16vec2)
|
||||||
static_swizzle4_const(glm::i16vec3)
|
static_swizzle4_const(glm::i16vec3)
|
||||||
static_swizzle4_const(glm::i16vec4)
|
static_swizzle4_const(glm::i16vec4)
|
||||||
static_swizzle4_const(glm::i32vec2)
|
static_swizzle4_const(glm::i32vec2)
|
||||||
static_swizzle4_const(glm::i32vec3)
|
static_swizzle4_const(glm::i32vec3)
|
||||||
static_swizzle4_const(glm::i32vec4)
|
static_swizzle4_const(glm::i32vec4)
|
||||||
static_swizzle4_const(glm::i64vec2)
|
static_swizzle4_const(glm::i64vec2)
|
||||||
static_swizzle4_const(glm::i64vec3)
|
static_swizzle4_const(glm::i64vec3)
|
||||||
static_swizzle4_const(glm::i64vec4)
|
static_swizzle4_const(glm::i64vec4)
|
||||||
|
|
||||||
static_swizzle4_const(glm::u8vec2)
|
static_swizzle4_const(glm::u8vec2)
|
||||||
static_swizzle4_const(glm::u8vec3)
|
static_swizzle4_const(glm::u8vec3)
|
||||||
static_swizzle4_const(glm::u8vec4)
|
static_swizzle4_const(glm::u8vec4)
|
||||||
static_swizzle4_const(glm::u16vec2)
|
static_swizzle4_const(glm::u16vec2)
|
||||||
static_swizzle4_const(glm::u16vec3)
|
static_swizzle4_const(glm::u16vec3)
|
||||||
static_swizzle4_const(glm::u16vec4)
|
static_swizzle4_const(glm::u16vec4)
|
||||||
static_swizzle4_const(glm::u32vec2)
|
static_swizzle4_const(glm::u32vec2)
|
||||||
static_swizzle4_const(glm::u32vec3)
|
static_swizzle4_const(glm::u32vec3)
|
||||||
static_swizzle4_const(glm::u32vec4)
|
static_swizzle4_const(glm::u32vec4)
|
||||||
static_swizzle4_const(glm::u64vec2)
|
static_swizzle4_const(glm::u64vec2)
|
||||||
static_swizzle4_const(glm::u64vec3)
|
static_swizzle4_const(glm::u64vec3)
|
||||||
static_swizzle4_const(glm::u64vec4)
|
static_swizzle4_const(glm::u64vec4)
|
||||||
|
|
||||||
# define static_swizzle2_ref(TYPE) \
|
# define static_swizzle2_ref(TYPE) \
|
||||||
template <glm::comp x, glm::comp y> \
|
template <glm::comp x, glm::comp y> \
|
||||||
GLM_FUNC_QUALIFIER glm::detail::tref2<typename TYPE::value_type> swizzle(TYPE & v) \
|
GLM_FUNC_QUALIFIER glm::detail::tref2<typename TYPE::value_type> swizzle(TYPE & v) \
|
||||||
{return glm::detail::tref2<typename TYPE::value_type>(v[x], v[y]);}
|
{return glm::detail::tref2<typename TYPE::value_type>(v[x], v[y]);}
|
||||||
|
|
||||||
# define static_swizzle3_ref(TYPE) \
|
# define static_swizzle3_ref(TYPE) \
|
||||||
template <glm::comp x, glm::comp y, glm::comp z> \
|
template <glm::comp x, glm::comp y, glm::comp z> \
|
||||||
GLM_FUNC_QUALIFIER glm::detail::tref3<typename TYPE::value_type> swizzle(TYPE & v) \
|
GLM_FUNC_QUALIFIER glm::detail::tref3<typename TYPE::value_type> swizzle(TYPE & v) \
|
||||||
{return glm::detail::tref3<typename TYPE::value_type>(v[x], v[y], v[z]);}
|
{return glm::detail::tref3<typename TYPE::value_type>(v[x], v[y], v[z]);}
|
||||||
|
|
||||||
# define static_swizzle4_ref(TYPE) \
|
# define static_swizzle4_ref(TYPE) \
|
||||||
template <glm::comp x, glm::comp y, glm::comp z, glm::comp w> \
|
template <glm::comp x, glm::comp y, glm::comp z, glm::comp w> \
|
||||||
GLM_FUNC_QUALIFIER glm::detail::tref4<typename TYPE::value_type> swizzle(TYPE & v) \
|
GLM_FUNC_QUALIFIER glm::detail::tref4<typename TYPE::value_type> swizzle(TYPE & v) \
|
||||||
{return glm::detail::tref4<typename TYPE::value_type>(v[x], v[y], v[z], v[w]);}
|
{return glm::detail::tref4<typename TYPE::value_type>(v[x], v[y], v[z], v[w]);}
|
||||||
|
|
||||||
static_swizzle2_ref(glm::f16vec2)
|
static_swizzle2_ref(glm::f16vec2)
|
||||||
static_swizzle2_ref(glm::f16vec3)
|
static_swizzle2_ref(glm::f16vec3)
|
||||||
static_swizzle2_ref(glm::f16vec4)
|
static_swizzle2_ref(glm::f16vec4)
|
||||||
static_swizzle2_ref(glm::f32vec2)
|
static_swizzle2_ref(glm::f32vec2)
|
||||||
static_swizzle2_ref(glm::f32vec3)
|
static_swizzle2_ref(glm::f32vec3)
|
||||||
static_swizzle2_ref(glm::f32vec4)
|
static_swizzle2_ref(glm::f32vec4)
|
||||||
static_swizzle2_ref(glm::f64vec2)
|
static_swizzle2_ref(glm::f64vec2)
|
||||||
static_swizzle2_ref(glm::f64vec3)
|
static_swizzle2_ref(glm::f64vec3)
|
||||||
static_swizzle2_ref(glm::f64vec4)
|
static_swizzle2_ref(glm::f64vec4)
|
||||||
|
|
||||||
static_swizzle2_ref(glm::i8vec2)
|
static_swizzle2_ref(glm::i8vec2)
|
||||||
static_swizzle2_ref(glm::i8vec3)
|
static_swizzle2_ref(glm::i8vec3)
|
||||||
static_swizzle2_ref(glm::i8vec4)
|
static_swizzle2_ref(glm::i8vec4)
|
||||||
static_swizzle2_ref(glm::i16vec2)
|
static_swizzle2_ref(glm::i16vec2)
|
||||||
static_swizzle2_ref(glm::i16vec3)
|
static_swizzle2_ref(glm::i16vec3)
|
||||||
static_swizzle2_ref(glm::i16vec4)
|
static_swizzle2_ref(glm::i16vec4)
|
||||||
static_swizzle2_ref(glm::i32vec2)
|
static_swizzle2_ref(glm::i32vec2)
|
||||||
static_swizzle2_ref(glm::i32vec3)
|
static_swizzle2_ref(glm::i32vec3)
|
||||||
static_swizzle2_ref(glm::i32vec4)
|
static_swizzle2_ref(glm::i32vec4)
|
||||||
static_swizzle2_ref(glm::i64vec2)
|
static_swizzle2_ref(glm::i64vec2)
|
||||||
static_swizzle2_ref(glm::i64vec3)
|
static_swizzle2_ref(glm::i64vec3)
|
||||||
static_swizzle2_ref(glm::i64vec4)
|
static_swizzle2_ref(glm::i64vec4)
|
||||||
|
|
||||||
static_swizzle2_ref(glm::u8vec2)
|
static_swizzle2_ref(glm::u8vec2)
|
||||||
static_swizzle2_ref(glm::u8vec3)
|
static_swizzle2_ref(glm::u8vec3)
|
||||||
static_swizzle2_ref(glm::u8vec4)
|
static_swizzle2_ref(glm::u8vec4)
|
||||||
static_swizzle2_ref(glm::u16vec2)
|
static_swizzle2_ref(glm::u16vec2)
|
||||||
static_swizzle2_ref(glm::u16vec3)
|
static_swizzle2_ref(glm::u16vec3)
|
||||||
static_swizzle2_ref(glm::u16vec4)
|
static_swizzle2_ref(glm::u16vec4)
|
||||||
static_swizzle2_ref(glm::u32vec2)
|
static_swizzle2_ref(glm::u32vec2)
|
||||||
static_swizzle2_ref(glm::u32vec3)
|
static_swizzle2_ref(glm::u32vec3)
|
||||||
static_swizzle2_ref(glm::u32vec4)
|
static_swizzle2_ref(glm::u32vec4)
|
||||||
static_swizzle2_ref(glm::u64vec2)
|
static_swizzle2_ref(glm::u64vec2)
|
||||||
static_swizzle2_ref(glm::u64vec3)
|
static_swizzle2_ref(glm::u64vec3)
|
||||||
static_swizzle2_ref(glm::u64vec4)
|
static_swizzle2_ref(glm::u64vec4)
|
||||||
|
|
||||||
static_swizzle3_ref(glm::f16vec3)
|
static_swizzle3_ref(glm::f16vec3)
|
||||||
static_swizzle3_ref(glm::f16vec4)
|
static_swizzle3_ref(glm::f16vec4)
|
||||||
static_swizzle3_ref(glm::f32vec3)
|
static_swizzle3_ref(glm::f32vec3)
|
||||||
static_swizzle3_ref(glm::f32vec4)
|
static_swizzle3_ref(glm::f32vec4)
|
||||||
static_swizzle3_ref(glm::f64vec3)
|
static_swizzle3_ref(glm::f64vec3)
|
||||||
static_swizzle3_ref(glm::f64vec4)
|
static_swizzle3_ref(glm::f64vec4)
|
||||||
|
|
||||||
static_swizzle3_ref(glm::i8vec3)
|
static_swizzle3_ref(glm::i8vec3)
|
||||||
static_swizzle3_ref(glm::i8vec4)
|
static_swizzle3_ref(glm::i8vec4)
|
||||||
static_swizzle3_ref(glm::i16vec3)
|
static_swizzle3_ref(glm::i16vec3)
|
||||||
static_swizzle3_ref(glm::i16vec4)
|
static_swizzle3_ref(glm::i16vec4)
|
||||||
static_swizzle3_ref(glm::i32vec3)
|
static_swizzle3_ref(glm::i32vec3)
|
||||||
static_swizzle3_ref(glm::i32vec4)
|
static_swizzle3_ref(glm::i32vec4)
|
||||||
static_swizzle3_ref(glm::i64vec3)
|
static_swizzle3_ref(glm::i64vec3)
|
||||||
static_swizzle3_ref(glm::i64vec4)
|
static_swizzle3_ref(glm::i64vec4)
|
||||||
|
|
||||||
static_swizzle3_ref(glm::u8vec3)
|
static_swizzle3_ref(glm::u8vec3)
|
||||||
static_swizzle3_ref(glm::u8vec4)
|
static_swizzle3_ref(glm::u8vec4)
|
||||||
static_swizzle3_ref(glm::u16vec3)
|
static_swizzle3_ref(glm::u16vec3)
|
||||||
static_swizzle3_ref(glm::u16vec4)
|
static_swizzle3_ref(glm::u16vec4)
|
||||||
static_swizzle3_ref(glm::u32vec3)
|
static_swizzle3_ref(glm::u32vec3)
|
||||||
static_swizzle3_ref(glm::u32vec4)
|
static_swizzle3_ref(glm::u32vec4)
|
||||||
static_swizzle3_ref(glm::u64vec3)
|
static_swizzle3_ref(glm::u64vec3)
|
||||||
static_swizzle3_ref(glm::u64vec4)
|
static_swizzle3_ref(glm::u64vec4)
|
||||||
|
|
||||||
static_swizzle4_ref(glm::f16vec4)
|
static_swizzle4_ref(glm::f16vec4)
|
||||||
static_swizzle4_ref(glm::f32vec4)
|
static_swizzle4_ref(glm::f32vec4)
|
||||||
static_swizzle4_ref(glm::f64vec4)
|
static_swizzle4_ref(glm::f64vec4)
|
||||||
|
|
||||||
static_swizzle4_ref(glm::i8vec4)
|
static_swizzle4_ref(glm::i8vec4)
|
||||||
static_swizzle4_ref(glm::i16vec4)
|
static_swizzle4_ref(glm::i16vec4)
|
||||||
static_swizzle4_ref(glm::i32vec4)
|
static_swizzle4_ref(glm::i32vec4)
|
||||||
static_swizzle4_ref(glm::i64vec4)
|
static_swizzle4_ref(glm::i64vec4)
|
||||||
|
|
||||||
static_swizzle4_ref(glm::u8vec4)
|
static_swizzle4_ref(glm::u8vec4)
|
||||||
static_swizzle4_ref(glm::u16vec4)
|
static_swizzle4_ref(glm::u16vec4)
|
||||||
static_swizzle4_ref(glm::u32vec4)
|
static_swizzle4_ref(glm::u32vec4)
|
||||||
static_swizzle4_ref(glm::u64vec4)
|
static_swizzle4_ref(glm::u64vec4)
|
||||||
|
|
||||||
}//namespace swizzle
|
}//namespace swizzle
|
||||||
}//namespace gtc
|
}//namespace gtc
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "swizzle.inl"
|
#include "swizzle.inl"
|
||||||
|
@ -24,199 +24,193 @@
|
|||||||
# pragma message("GLM: GLM_GTC_type_precision extension included")
|
# pragma message("GLM: GLM_GTC_type_precision extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtc{
|
||||||
|
namespace type_precision ///< GLM_GTC_type_precision extension: Defined types with specific size.
|
||||||
{
|
{
|
||||||
namespace test{
|
///////////////////////////
|
||||||
bool main_gtc_type_precision();
|
// Dependences
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtc{
|
using namespace gtc::half_float;
|
||||||
//! GLM_GTC_type_precision extension: Defined types with specific size.
|
using namespace gtc::quaternion;
|
||||||
namespace type_precision
|
|
||||||
{
|
|
||||||
///////////////////////////
|
|
||||||
// Dependences
|
|
||||||
|
|
||||||
using namespace gtc::half_float;
|
///////////////////////////
|
||||||
using namespace gtc::quaternion;
|
// Signed int vector types
|
||||||
|
|
||||||
///////////////////////////
|
/// \addtogroup gtc_type_precision
|
||||||
// Signed int vector types
|
///@{
|
||||||
|
|
||||||
/// \addtogroup gtc_type_precision
|
typedef detail::int8 int8; //!< \brief 8bit signed integer. (from GLM_GTC_type_precision extension)
|
||||||
///@{
|
typedef detail::int16 int16; //!< \brief 16bit signed integer. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::int32 int32; //!< \brief 32bit signed integer. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::int64 int64; //!< \brief 64bit signed integer. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
typedef detail::int8 int8; //!< \brief 8bit signed integer. (from GLM_GTC_type_precision extension)
|
typedef int8 i8; //!< \brief 8bit signed integer. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::int16 int16; //!< \brief 16bit signed integer. (from GLM_GTC_type_precision extension)
|
typedef int16 i16; //!< \brief 16bit signed integer. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::int32 int32; //!< \brief 32bit signed integer. (from GLM_GTC_type_precision extension)
|
typedef int32 i32; //!< \brief 32bit signed integer. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::int64 int64; //!< \brief 64bit signed integer. (from GLM_GTC_type_precision extension)
|
typedef int64 i64; //!< \brief 64bit signed integer. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
typedef int8 i8; //!< \brief 8bit signed integer. (from GLM_GTC_type_precision extension)
|
//typedef i8 i8vec1; //!< \brief 8bit signed integer scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef int16 i16; //!< \brief 16bit signed integer. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec2<i8> i8vec2; //!< \brief 8bit signed integer vector of 2 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef int32 i32; //!< \brief 32bit signed integer. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec3<i8> i8vec3; //!< \brief 8bit signed integer vector of 3 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef int64 i64; //!< \brief 64bit signed integer. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec4<i8> i8vec4; //!< \brief 8bit signed integer vector of 4 components. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
//typedef i8 i8vec1; //!< \brief 8bit signed integer scalar. (from GLM_GTC_type_precision extension)
|
//typedef i16 i16vec1; //!< \brief 16bit signed integer scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec2<i8> i8vec2; //!< \brief 8bit signed integer vector of 2 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec2<i16> i16vec2; //!< \brief 16bit signed integer vector of 2 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec3<i8> i8vec3; //!< \brief 8bit signed integer vector of 3 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec3<i16> i16vec3; //!< \brief 16bit signed integer vector of 3 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec4<i8> i8vec4; //!< \brief 8bit signed integer vector of 4 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec4<i16> i16vec4; //!< \brief 16bit signed integer vector of 4 components. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
//typedef i16 i16vec1; //!< \brief 16bit signed integer scalar. (from GLM_GTC_type_precision extension)
|
//typedef i32 i32vec1; //!< \brief 32bit signed integer scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec2<i16> i16vec2; //!< \brief 16bit signed integer vector of 2 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec2<i32> i32vec2; //!< \brief 32bit signed integer vector of 2 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec3<i16> i16vec3; //!< \brief 16bit signed integer vector of 3 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec3<i32> i32vec3; //!< \brief 32bit signed integer vector of 3 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec4<i16> i16vec4; //!< \brief 16bit signed integer vector of 4 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec4<i32> i32vec4; //!< \brief 32bit signed integer vector of 4 components. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
//typedef i32 i32vec1; //!< \brief 32bit signed integer scalar. (from GLM_GTC_type_precision extension)
|
//typedef i64 i64vec1; //!< \brief 32bit signed integer scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec2<i32> i32vec2; //!< \brief 32bit signed integer vector of 2 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec2<i64> i64vec2; //!< \brief 64bit signed integer vector of 2 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec3<i32> i32vec3; //!< \brief 32bit signed integer vector of 3 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec3<i64> i64vec3; //!< \brief 64bit signed integer vector of 3 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec4<i32> i32vec4; //!< \brief 32bit signed integer vector of 4 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec4<i64> i64vec4; //!< \brief 64bit signed integer vector of 4 components. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
//typedef i64 i64vec1; //!< \brief 32bit signed integer scalar. (from GLM_GTC_type_precision extension)
|
/////////////////////////////
|
||||||
typedef detail::tvec2<i64> i64vec2; //!< \brief 64bit signed integer vector of 2 components. (from GLM_GTC_type_precision extension)
|
// Unsigned int vector types
|
||||||
typedef detail::tvec3<i64> i64vec3; //!< \brief 64bit signed integer vector of 3 components. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tvec4<i64> i64vec4; //!< \brief 64bit signed integer vector of 4 components. (from GLM_GTC_type_precision extension)
|
|
||||||
|
|
||||||
/////////////////////////////
|
typedef detail::uint8 uint8; //!< \brief 8bit unsigned integer. (from GLM_GTC_type_precision extension)
|
||||||
// Unsigned int vector types
|
typedef detail::uint16 uint16; //!< \brief 16bit unsigned integer. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::uint32 uint32; //!< \brief 32bit unsigned integer. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::uint64 uint64; //!< \brief 64bit unsigned integer. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
typedef detail::uint8 uint8; //!< \brief 8bit unsigned integer. (from GLM_GTC_type_precision extension)
|
typedef uint8 u8; //!< \brief 8bit unsigned integer. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::uint16 uint16; //!< \brief 16bit unsigned integer. (from GLM_GTC_type_precision extension)
|
typedef uint16 u16; //!< \brief 16bit unsigned integer. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::uint32 uint32; //!< \brief 32bit unsigned integer. (from GLM_GTC_type_precision extension)
|
typedef uint32 u32; //!< \brief 32bit unsigned integer. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::uint64 uint64; //!< \brief 64bit unsigned integer. (from GLM_GTC_type_precision extension)
|
typedef uint64 u64; //!< \brief 64bit unsigned integer. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
typedef uint8 u8; //!< \brief 8bit unsigned integer. (from GLM_GTC_type_precision extension)
|
//typedef u8 u8vec1; //!< \brief 8bit unsigned integer scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef uint16 u16; //!< \brief 16bit unsigned integer. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec2<u8> u8vec2; //!< \brief 8bit unsigned integer vector of 2 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef uint32 u32; //!< \brief 32bit unsigned integer. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec3<u8> u8vec3; //!< \brief 8bit unsigned integer vector of 3 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef uint64 u64; //!< \brief 64bit unsigned integer. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec4<u8> u8vec4; //!< \brief 8bit unsigned integer vector of 4 components. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
//typedef u8 u8vec1; //!< \brief 8bit unsigned integer scalar. (from GLM_GTC_type_precision extension)
|
//typedef u16 u16vec1; //!< \brief 16bit unsigned integer scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec2<u8> u8vec2; //!< \brief 8bit unsigned integer vector of 2 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec2<u16> u16vec2; //!< \brief 16bit unsigned integer vector of 2 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec3<u8> u8vec3; //!< \brief 8bit unsigned integer vector of 3 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec3<u16> u16vec3; //!< \brief 16bit unsigned integer vector of 3 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec4<u8> u8vec4; //!< \brief 8bit unsigned integer vector of 4 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec4<u16> u16vec4; //!< \brief 16bit unsigned integer vector of 4 components. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
//typedef u16 u16vec1; //!< \brief 16bit unsigned integer scalar. (from GLM_GTC_type_precision extension)
|
//typedef u32 u32vec1; //!< \brief 32bit unsigned integer scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec2<u16> u16vec2; //!< \brief 16bit unsigned integer vector of 2 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec2<u32> u32vec2; //!< \brief 32bit unsigned integer vector of 2 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec3<u16> u16vec3; //!< \brief 16bit unsigned integer vector of 3 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec3<u32> u32vec3; //!< \brief 32bit unsigned integer vector of 3 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec4<u16> u16vec4; //!< \brief 16bit unsigned integer vector of 4 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec4<u32> u32vec4; //!< \brief 32bit unsigned integer vector of 4 components. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
//typedef u32 u32vec1; //!< \brief 32bit unsigned integer scalar. (from GLM_GTC_type_precision extension)
|
//typedef u64 u64vec1; //!< \brief 64bit unsigned integer scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec2<u32> u32vec2; //!< \brief 32bit unsigned integer vector of 2 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec2<u64> u64vec2; //!< \brief 64bit unsigned integer vector of 2 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec3<u32> u32vec3; //!< \brief 32bit unsigned integer vector of 3 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec3<u64> u64vec3; //!< \brief 64bit unsigned integer vector of 3 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec4<u32> u32vec4; //!< \brief 32bit unsigned integer vector of 4 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec4<u64> u64vec4; //!< \brief 64bit unsigned integer vector of 4 components. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
//typedef u64 u64vec1; //!< \brief 64bit unsigned integer scalar. (from GLM_GTC_type_precision extension)
|
//////////////////////
|
||||||
typedef detail::tvec2<u64> u64vec2; //!< \brief 64bit unsigned integer vector of 2 components. (from GLM_GTC_type_precision extension)
|
// Float vector types
|
||||||
typedef detail::tvec3<u64> u64vec3; //!< \brief 64bit unsigned integer vector of 3 components. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tvec4<u64> u64vec4; //!< \brief 64bit unsigned integer vector of 4 components. (from GLM_GTC_type_precision extension)
|
|
||||||
|
|
||||||
//////////////////////
|
typedef detail::float16 float16; //!< \brief Half-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
||||||
// Float vector types
|
typedef detail::float32 float32; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::float64 float64; //!< \brief Double-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
typedef detail::float16 float16; //!< \brief Half-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
typedef float16 f16; //!< \brief Half-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::float32 float32; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
typedef float32 f32; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::float64 float64; //!< \brief Double-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
typedef float64 f64; //!< \brief Double-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
typedef float16 f16; //!< \brief Half-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec2<float> fvec2; //!< Vector of 2 single-precision floating-point numbers. (from GLM_GTC_type_precision extension)
|
||||||
typedef float32 f32; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec3<float> fvec3; //!< Vector of 3 single-precision floating-point numbers. (from GLM_GTC_type_precision extension)
|
||||||
typedef float64 f64; //!< \brief Double-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec4<float> fvec4; //!< Vector of 4 single-precision floating-point numbers. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
typedef detail::tvec2<float> fvec2; //!< Vector of 2 single-precision floating-point numbers. (from GLM_GTC_type_precision extension)
|
//typedef f16 f16vec1; //!< \brief Half-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec3<float> fvec3; //!< Vector of 3 single-precision floating-point numbers. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec2<f16> f16vec2; //!< \brief Half-precision floating-point vector of 2 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec4<float> fvec4; //!< Vector of 4 single-precision floating-point numbers. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec3<f16> f16vec3; //!< \brief Half-precision floating-point vector of 3 components. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tvec4<f16> f16vec4; //!< \brief Half-precision floating-point vector of 4 components. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
//typedef f16 f16vec1; //!< \brief Half-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
//typedef f32 f32vec1; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec2<f16> f16vec2; //!< \brief Half-precision floating-point vector of 2 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec2<f32> f32vec2; //!< \brief Single-precision floating-point vector of 2 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec3<f16> f16vec3; //!< \brief Half-precision floating-point vector of 3 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec3<f32> f32vec3; //!< \brief Single-precision floating-point vector of 3 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec4<f16> f16vec4; //!< \brief Half-precision floating-point vector of 4 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec4<f32> f32vec4; //!< \brief Single-precision floating-point vector of 4 components. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
//typedef f32 f32vec1; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
//typedef f64 f64vec1; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec2<f32> f32vec2; //!< \brief Single-precision floating-point vector of 2 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec2<f64> f64vec2; //!< \brief Double-precision floating-point vector of 2 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec3<f32> f32vec3; //!< \brief Single-precision floating-point vector of 3 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec3<f64> f64vec3; //!< \brief Double-precision floating-point vector of 3 components. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tvec4<f32> f32vec4; //!< \brief Single-precision floating-point vector of 4 components. (from GLM_GTC_type_precision extension)
|
typedef detail::tvec4<f64> f64vec4; //!< \brief Double-precision floating-point vector of 4 components. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
//typedef f64 f64vec1; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
//////////////////////
|
||||||
typedef detail::tvec2<f64> f64vec2; //!< \brief Double-precision floating-point vector of 2 components. (from GLM_GTC_type_precision extension)
|
// Float matrix types
|
||||||
typedef detail::tvec3<f64> f64vec3; //!< \brief Double-precision floating-point vector of 3 components. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tvec4<f64> f64vec4; //!< \brief Double-precision floating-point vector of 4 components. (from GLM_GTC_type_precision extension)
|
|
||||||
|
|
||||||
//////////////////////
|
//typedef f32 fmat1; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
||||||
// Float matrix types
|
typedef detail::tmat2x2<f32> fmat2; //!< \brief Single-precision floating-point 2x2 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat3x3<f32> fmat3; //!< \brief Single-precision floating-point 3x3 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat4x4<f32> fmat4; //!< \brief Single-precision floating-point 4x4 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
//typedef f32 fmat1; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
//typedef f32 fmat1x1; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat2x2<f32> fmat2; //!< \brief Single-precision floating-point 2x2 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat2x2<f32> fmat2x2; //!< \brief Single-precision floating-point 2x2 matrix. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat3x3<f32> fmat3; //!< \brief Single-precision floating-point 3x3 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat2x3<f32> fmat2x3; //!< \brief Single-precision floating-point 2x3 matrix. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat4x4<f32> fmat4; //!< \brief Single-precision floating-point 4x4 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat2x4<f32> fmat2x4; //!< \brief Single-precision floating-point 2x4 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat3x2<f32> fmat3x2; //!< \brief Single-precision floating-point 3x2 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat3x3<f32> fmat3x3; //!< \brief Single-precision floating-point 3x3 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat3x4<f32> fmat3x4; //!< \brief Single-precision floating-point 3x4 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat4x2<f32> fmat4x2; //!< \brief Single-precision floating-point 4x2 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat4x3<f32> fmat4x3; //!< \brief Single-precision floating-point 4x3 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat4x4<f32> fmat4x4; //!< \brief Single-precision floating-point 4x4 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
//typedef f32 fmat1x1; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
//typedef f16 f16mat1; //!< \brief Half-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat2x2<f32> fmat2x2; //!< \brief Single-precision floating-point 2x2 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat2x2<f16> f16mat2; //!< \brief Half-precision floating-point 2x2 matrix. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat2x3<f32> fmat2x3; //!< \brief Single-precision floating-point 2x3 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat3x3<f16> f16mat3; //!< \brief Half-precision floating-point 3x3 matrix. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat2x4<f32> fmat2x4; //!< \brief Single-precision floating-point 2x4 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat4x4<f16> f16mat4; //!< \brief Half-precision floating-point 4x4 matrix. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat3x2<f32> fmat3x2; //!< \brief Single-precision floating-point 3x2 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat3x3<f32> fmat3x3; //!< \brief Single-precision floating-point 3x3 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat3x4<f32> fmat3x4; //!< \brief Single-precision floating-point 3x4 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat4x2<f32> fmat4x2; //!< \brief Single-precision floating-point 4x2 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat4x3<f32> fmat4x3; //!< \brief Single-precision floating-point 4x3 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat4x4<f32> fmat4x4; //!< \brief Single-precision floating-point 4x4 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
|
|
||||||
//typedef f16 f16mat1; //!< \brief Half-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
//typedef f16 f16mat1x1; //!< \brief Half-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat2x2<f16> f16mat2; //!< \brief Half-precision floating-point 2x2 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat2x2<f16> f16mat2x2; //!< \brief Half-precision floating-point 2x2 matrix. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat3x3<f16> f16mat3; //!< \brief Half-precision floating-point 3x3 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat2x3<f16> f16mat2x3; //!< \brief Half-precision floating-point 2x3 matrix. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat4x4<f16> f16mat4; //!< \brief Half-precision floating-point 4x4 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat2x4<f16> f16mat2x4; //!< \brief Half-precision floating-point 2x4 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat3x2<f16> f16mat3x2; //!< \brief Half-precision floating-point 3x2 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat3x3<f16> f16mat3x3; //!< \brief Half-precision floating-point 3x3 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat3x4<f16> f16mat3x4; //!< \brief Half-precision floating-point 3x4 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat4x2<f16> f16mat4x2; //!< \brief Half-precision floating-point 4x2 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat4x3<f16> f16mat4x3; //!< \brief Half-precision floating-point 4x3 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat4x4<f16> f16mat4x4; //!< \brief Half-precision floating-point 4x4 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
//typedef f16 f16mat1x1; //!< \brief Half-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
//typedef f32 f32mat1; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat2x2<f16> f16mat2x2; //!< \brief Half-precision floating-point 2x2 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat2x2<f32> f32mat2; //!< \brief Single-precision floating-point 2x2 matrix. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat2x3<f16> f16mat2x3; //!< \brief Half-precision floating-point 2x3 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat3x3<f32> f32mat3; //!< \brief Single-precision floating-point 3x3 matrix. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat2x4<f16> f16mat2x4; //!< \brief Half-precision floating-point 2x4 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat4x4<f32> f32mat4; //!< \brief Single-precision floating-point 4x4 matrix. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat3x2<f16> f16mat3x2; //!< \brief Half-precision floating-point 3x2 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat3x3<f16> f16mat3x3; //!< \brief Half-precision floating-point 3x3 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat3x4<f16> f16mat3x4; //!< \brief Half-precision floating-point 3x4 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat4x2<f16> f16mat4x2; //!< \brief Half-precision floating-point 4x2 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat4x3<f16> f16mat4x3; //!< \brief Half-precision floating-point 4x3 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat4x4<f16> f16mat4x4; //!< \brief Half-precision floating-point 4x4 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
|
|
||||||
//typedef f32 f32mat1; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
//typedef f32 f32mat1x1; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat2x2<f32> f32mat2; //!< \brief Single-precision floating-point 2x2 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat2x2<f32> f32mat2x2; //!< \brief Single-precision floating-point 2x2 matrix. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat3x3<f32> f32mat3; //!< \brief Single-precision floating-point 3x3 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat2x3<f32> f32mat2x3; //!< \brief Single-precision floating-point 2x3 matrix. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat4x4<f32> f32mat4; //!< \brief Single-precision floating-point 4x4 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat2x4<f32> f32mat2x4; //!< \brief Single-precision floating-point 2x4 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat3x2<f32> f32mat3x2; //!< \brief Single-precision floating-point 3x2 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat3x3<f32> f32mat3x3; //!< \brief Single-precision floating-point 3x3 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat3x4<f32> f32mat3x4; //!< \brief Single-precision floating-point 3x4 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat4x2<f32> f32mat4x2; //!< \brief Single-precision floating-point 4x2 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat4x3<f32> f32mat4x3; //!< \brief Single-precision floating-point 4x3 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat4x4<f32> f32mat4x4; //!< \brief Single-precision floating-point 4x4 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
//typedef f32 f32mat1x1; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
//typedef f64 f64mat1; //!< \brief Double-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat2x2<f32> f32mat2x2; //!< \brief Single-precision floating-point 2x2 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat2x2<f64> f64mat2; //!< \brief Double-precision floating-point 2x2 matrix. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat2x3<f32> f32mat2x3; //!< \brief Single-precision floating-point 2x3 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat3x3<f64> f64mat3; //!< \brief Double-precision floating-point 3x3 matrix. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat2x4<f32> f32mat2x4; //!< \brief Single-precision floating-point 2x4 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat4x4<f64> f64mat4; //!< \brief Double-precision floating-point 4x4 matrix. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat3x2<f32> f32mat3x2; //!< \brief Single-precision floating-point 3x2 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat3x3<f32> f32mat3x3; //!< \brief Single-precision floating-point 3x3 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat3x4<f32> f32mat3x4; //!< \brief Single-precision floating-point 3x4 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat4x2<f32> f32mat4x2; //!< \brief Single-precision floating-point 4x2 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat4x3<f32> f32mat4x3; //!< \brief Single-precision floating-point 4x3 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat4x4<f32> f32mat4x4; //!< \brief Single-precision floating-point 4x4 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
|
|
||||||
//typedef f64 f64mat1; //!< \brief Double-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
//typedef f64 f64mat1x1; //!< \brief Double-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat2x2<f64> f64mat2; //!< \brief Double-precision floating-point 2x2 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat2x2<f64> f64mat2x2; //!< \brief Double-precision floating-point 2x2 matrix. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat3x3<f64> f64mat3; //!< \brief Double-precision floating-point 3x3 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat2x3<f64> f64mat2x3; //!< \brief Double-precision floating-point 2x3 matrix. (from GLM_GTC_type_precision extension)
|
||||||
typedef detail::tmat4x4<f64> f64mat4; //!< \brief Double-precision floating-point 4x4 matrix. (from GLM_GTC_type_precision extension)
|
typedef detail::tmat2x4<f64> f64mat2x4; //!< \brief Double-precision floating-point 2x4 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat3x2<f64> f64mat3x2; //!< \brief Double-precision floating-point 3x2 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat3x3<f64> f64mat3x3; //!< \brief Double-precision floating-point 3x3 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat3x4<f64> f64mat3x4; //!< \brief Double-precision floating-point 3x4 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat4x2<f64> f64mat4x2; //!< \brief Double-precision floating-point 4x2 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat4x3<f64> f64mat4x3; //!< \brief Double-precision floating-point 4x3 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tmat4x4<f64> f64mat4x4; //!< \brief Double-precision floating-point 4x4 matrix. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
//typedef f64 f64mat1x1; //!< \brief Double-precision floating-point scalar. (from GLM_GTC_type_precision extension)
|
//////////////////////////
|
||||||
typedef detail::tmat2x2<f64> f64mat2x2; //!< \brief Double-precision floating-point 2x2 matrix. (from GLM_GTC_type_precision extension)
|
// Float quaternion types
|
||||||
typedef detail::tmat2x3<f64> f64mat2x3; //!< \brief Double-precision floating-point 2x3 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat2x4<f64> f64mat2x4; //!< \brief Double-precision floating-point 2x4 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat3x2<f64> f64mat3x2; //!< \brief Double-precision floating-point 3x2 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat3x3<f64> f64mat3x3; //!< \brief Double-precision floating-point 3x3 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat3x4<f64> f64mat3x4; //!< \brief Double-precision floating-point 3x4 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat4x2<f64> f64mat4x2; //!< \brief Double-precision floating-point 4x2 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat4x3<f64> f64mat4x3; //!< \brief Double-precision floating-point 4x3 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tmat4x4<f64> f64mat4x4; //!< \brief Double-precision floating-point 4x4 matrix. (from GLM_GTC_type_precision extension)
|
|
||||||
|
|
||||||
//////////////////////////
|
typedef detail::tquat<f16> f16quat; //!< \brief Half-precision floating-point quaternion. (from GLM_GTC_type_precision extension)
|
||||||
// Float quaternion types
|
typedef detail::tquat<f32> f32quat; //!< \brief Single-precision floating-point quaternion. (from GLM_GTC_type_precision extension)
|
||||||
|
typedef detail::tquat<f64> f64quat; //!< \brief Double-precision floating-point quaternion. (from GLM_GTC_type_precision extension)
|
||||||
|
|
||||||
typedef detail::tquat<f16> f16quat; //!< \brief Half-precision floating-point quaternion. (from GLM_GTC_type_precision extension)
|
///@}
|
||||||
typedef detail::tquat<f32> f32quat; //!< \brief Single-precision floating-point quaternion. (from GLM_GTC_type_precision extension)
|
|
||||||
typedef detail::tquat<f64> f64quat; //!< \brief Double-precision floating-point quaternion. (from GLM_GTC_type_precision extension)
|
|
||||||
|
|
||||||
///@}
|
}//namespace type_precision
|
||||||
|
}//namespace gtc
|
||||||
}//namespace type_precision
|
|
||||||
}//namespace gtc
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "type_precision.inl"
|
#include "type_precision.inl"
|
||||||
|
@ -21,429 +21,424 @@
|
|||||||
# pragma message("GLM: GLM_GTC_type_ptr extension included")
|
# pragma message("GLM: GLM_GTC_type_ptr extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
{
|
namespace gtc{
|
||||||
namespace test{
|
namespace type_ptr ///< GLM_GTC_type_ptr extension: Get access to vectors & matrices value type address.
|
||||||
void main_gtc_type_ptr();
|
{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtc{
|
/// \addtogroup gtc_type_ptr
|
||||||
//! GLM_GTC_type_ptr extension: Get access to vectors & matrices value type address.
|
///@{
|
||||||
namespace type_ptr{
|
|
||||||
|
|
||||||
/// \addtogroup gtc_type_ptr
|
//! Get the const address of the vector content.
|
||||||
///@{
|
//! From GLM_GTC_type_ptr extension.
|
||||||
|
template<typename T>
|
||||||
|
GLM_FUNC_QUALIFIER T const * value_ptr
|
||||||
|
(
|
||||||
|
detail::tvec2<T> const & vec
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return &(vec.x);
|
||||||
|
}
|
||||||
|
|
||||||
//! Get the const address of the vector content.
|
//! Get the address of the vector content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T const * value_ptr
|
GLM_FUNC_QUALIFIER T * value_ptr
|
||||||
(
|
(
|
||||||
detail::tvec2<T> const & vec
|
detail::tvec2<T> & vec
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(vec.x);
|
return &(vec.x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the address of the vector content.
|
//! Get the const address of the vector content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T * value_ptr
|
GLM_FUNC_QUALIFIER T const * value_ptr
|
||||||
(
|
(
|
||||||
detail::tvec2<T> & vec
|
detail::tvec3<T> const & vec
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(vec.x);
|
return &(vec.x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the const address of the vector content.
|
//! Get the address of the vector content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T const * value_ptr
|
GLM_FUNC_QUALIFIER T * value_ptr
|
||||||
(
|
(
|
||||||
detail::tvec3<T> const & vec
|
detail::tvec3<T> & vec
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(vec.x);
|
return &(vec.x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the address of the vector content.
|
|
||||||
//! From GLM_GTC_type_ptr extension.
|
|
||||||
template<typename T>
|
|
||||||
GLM_FUNC_QUALIFIER T * value_ptr
|
|
||||||
(
|
|
||||||
detail::tvec3<T> & vec
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return &(vec.x);
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Get the const address of the vector content.
|
//! Get the const address of the vector content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T const * value_ptr
|
GLM_FUNC_QUALIFIER T const * value_ptr
|
||||||
(
|
(
|
||||||
detail::tvec4<T> const & vec
|
detail::tvec4<T> const & vec
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(vec.x);
|
return &(vec.x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the address of the vector content.
|
//! Get the address of the vector content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T * value_ptr
|
GLM_FUNC_QUALIFIER T * value_ptr
|
||||||
(
|
(
|
||||||
detail::tvec4<T> & vec
|
detail::tvec4<T> & vec
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(vec.x);
|
return &(vec.x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the const address of the matrix content.
|
//! Get the const address of the matrix content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T const * value_ptr
|
GLM_FUNC_QUALIFIER T const * value_ptr
|
||||||
(
|
(
|
||||||
detail::tmat2x2<T> const & mat
|
detail::tmat2x2<T> const & mat
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(mat[0].x);
|
return &(mat[0].x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the address of the matrix content.
|
//! Get the address of the matrix content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T * value_ptr
|
GLM_FUNC_QUALIFIER T * value_ptr
|
||||||
(
|
(
|
||||||
detail::tmat2x2<T> & mat
|
detail::tmat2x2<T> & mat
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(mat[0].x);
|
return &(mat[0].x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the const address of the matrix content.
|
//! Get the const address of the matrix content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T const * value_ptr
|
GLM_FUNC_QUALIFIER T const * value_ptr
|
||||||
(
|
(
|
||||||
detail::tmat3x3<T> const & mat
|
detail::tmat3x3<T> const & mat
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(mat[0].x);
|
return &(mat[0].x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the address of the matrix content.
|
//! Get the address of the matrix content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T * value_ptr
|
GLM_FUNC_QUALIFIER T * value_ptr
|
||||||
(
|
(
|
||||||
detail::tmat3x3<T> & mat
|
detail::tmat3x3<T> & mat
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(mat[0].x);
|
return &(mat[0].x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the const address of the matrix content.
|
//! Get the const address of the matrix content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T const * value_ptr
|
GLM_FUNC_QUALIFIER T const * value_ptr
|
||||||
(
|
(
|
||||||
detail::tmat4x4<T> const & mat
|
detail::tmat4x4<T> const & mat
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(mat[0].x);
|
return &(mat[0].x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the address of the matrix content.
|
//! Get the address of the matrix content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T * value_ptr
|
GLM_FUNC_QUALIFIER T * value_ptr
|
||||||
(
|
(
|
||||||
detail::tmat4x4<T> & mat
|
detail::tmat4x4<T> & mat
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(mat[0].x);
|
return &(mat[0].x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the const address of the matrix content.
|
//! Get the const address of the matrix content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T const * value_ptr
|
GLM_FUNC_QUALIFIER T const * value_ptr
|
||||||
(
|
(
|
||||||
detail::tmat2x3<T> const & mat
|
detail::tmat2x3<T> const & mat
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(mat[0].x);
|
return &(mat[0].x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the address of the matrix content.
|
//! Get the address of the matrix content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T * value_ptr
|
GLM_FUNC_QUALIFIER T * value_ptr
|
||||||
(
|
(
|
||||||
detail::tmat2x3<T> & mat
|
detail::tmat2x3<T> & mat
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(mat[0].x);
|
return &(mat[0].x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the const address of the matrix content.
|
//! Get the const address of the matrix content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T const * value_ptr
|
GLM_FUNC_QUALIFIER T const * value_ptr
|
||||||
(
|
(
|
||||||
detail::tmat3x2<T> const & mat
|
detail::tmat3x2<T> const & mat
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(mat[0].x);
|
return &(mat[0].x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the address of the matrix content.
|
//! Get the address of the matrix content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T * value_ptr
|
GLM_FUNC_QUALIFIER T * value_ptr
|
||||||
(
|
(
|
||||||
detail::tmat3x2<T> & mat
|
detail::tmat3x2<T> & mat
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(mat[0].x);
|
return &(mat[0].x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the const address of the matrix content.
|
//! Get the const address of the matrix content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T const * value_ptr
|
GLM_FUNC_QUALIFIER T const * value_ptr
|
||||||
(
|
(
|
||||||
detail::tmat2x4<T> const & mat
|
detail::tmat2x4<T> const & mat
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(mat[0].x);
|
return &(mat[0].x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the address of the matrix content.
|
//! Get the address of the matrix content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T * value_ptr
|
GLM_FUNC_QUALIFIER T * value_ptr
|
||||||
(
|
(
|
||||||
detail::tmat2x4<T> & mat
|
detail::tmat2x4<T> & mat
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(mat[0].x);
|
return &(mat[0].x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the const address of the matrix content.
|
//! Get the const address of the matrix content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T const * value_ptr
|
GLM_FUNC_QUALIFIER T const * value_ptr
|
||||||
(
|
(
|
||||||
detail::tmat4x2<T> const & mat
|
detail::tmat4x2<T> const & mat
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(mat[0].x);
|
return &(mat[0].x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the address of the matrix content.
|
//! Get the address of the matrix content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T * value_ptr
|
GLM_FUNC_QUALIFIER T * value_ptr
|
||||||
(
|
(
|
||||||
detail::tmat4x2<T> & mat
|
detail::tmat4x2<T> & mat
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(mat[0].x);
|
return &(mat[0].x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the const address of the matrix content.
|
//! Get the const address of the matrix content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T const * value_ptr
|
GLM_FUNC_QUALIFIER T const * value_ptr
|
||||||
(
|
(
|
||||||
detail::tmat3x4<T> const & mat
|
detail::tmat3x4<T> const & mat
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(mat[0].x);
|
return &(mat[0].x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the address of the matrix content.
|
//! Get the address of the matrix content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T * value_ptr
|
GLM_FUNC_QUALIFIER T * value_ptr
|
||||||
(
|
(
|
||||||
detail::tmat3x4<T> & mat
|
detail::tmat3x4<T> & mat
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(mat[0].x);
|
return &(mat[0].x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the const address of the matrix content.
|
//! Get the const address of the matrix content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T const * value_ptr
|
GLM_FUNC_QUALIFIER T const * value_ptr
|
||||||
(
|
(
|
||||||
detail::tmat4x3<T> const & mat
|
detail::tmat4x3<T> const & mat
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return &(mat[0].x);
|
return &(mat[0].x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the address of the matrix content.
|
//! Get the address of the matrix content.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER T * value_ptr(detail::tmat4x3<T> & mat)
|
GLM_FUNC_QUALIFIER T * value_ptr(detail::tmat4x3<T> & mat)
|
||||||
{
|
{
|
||||||
return &(mat[0].x);
|
return &(mat[0].x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Build a vector from a pointer.
|
//! Build a vector from a pointer.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER detail::tvec2<T> make_vec2(T const * const ptr)
|
GLM_FUNC_QUALIFIER detail::tvec2<T> make_vec2(T const * const ptr)
|
||||||
{
|
{
|
||||||
detail::tvec2<T> Result;
|
detail::tvec2<T> Result;
|
||||||
memcpy(value_ptr(Result), ptr, sizeof(detail::tvec2<T>));
|
memcpy(value_ptr(Result), ptr, sizeof(detail::tvec2<T>));
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Build a vector from a pointer.
|
//! Build a vector from a pointer.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER detail::tvec3<T> make_vec3(T const * const ptr)
|
GLM_FUNC_QUALIFIER detail::tvec3<T> make_vec3(T const * const ptr)
|
||||||
{
|
{
|
||||||
detail::tvec3<T> Result;
|
detail::tvec3<T> Result;
|
||||||
memcpy(value_ptr(Result), ptr, sizeof(detail::tvec3<T>));
|
memcpy(value_ptr(Result), ptr, sizeof(detail::tvec3<T>));
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Build a vector from a pointer.
|
//! Build a vector from a pointer.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER detail::tvec4<T> make_vec4(T const * const ptr)
|
GLM_FUNC_QUALIFIER detail::tvec4<T> make_vec4(T const * const ptr)
|
||||||
{
|
{
|
||||||
detail::tvec4<T> Result;
|
detail::tvec4<T> Result;
|
||||||
memcpy(value_ptr(Result), ptr, sizeof(detail::tvec4<T>));
|
memcpy(value_ptr(Result), ptr, sizeof(detail::tvec4<T>));
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Build a matrix from a pointer.
|
//! Build a matrix from a pointer.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER detail::tmat2x2<T> make_mat2x2(T const * const ptr)
|
GLM_FUNC_QUALIFIER detail::tmat2x2<T> make_mat2x2(T const * const ptr)
|
||||||
{
|
{
|
||||||
detail::tmat2x2<T> Result;
|
detail::tmat2x2<T> Result;
|
||||||
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x2<T>));
|
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x2<T>));
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Build a matrix from a pointer.
|
//! Build a matrix from a pointer.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER detail::tmat2x3<T> make_mat2x3(T const * const ptr)
|
GLM_FUNC_QUALIFIER detail::tmat2x3<T> make_mat2x3(T const * const ptr)
|
||||||
{
|
{
|
||||||
detail::tmat2x3<T> Result;
|
detail::tmat2x3<T> Result;
|
||||||
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x3<T>));
|
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x3<T>));
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Build a matrix from a pointer.
|
//! Build a matrix from a pointer.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER detail::tmat2x4<T> make_mat2x4(T const * const ptr)
|
GLM_FUNC_QUALIFIER detail::tmat2x4<T> make_mat2x4(T const * const ptr)
|
||||||
{
|
{
|
||||||
detail::tmat2x4<T> Result;
|
detail::tmat2x4<T> Result;
|
||||||
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x4<T>));
|
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x4<T>));
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Build a matrix from a pointer.
|
//! Build a matrix from a pointer.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER detail::tmat3x2<T> make_mat3x2(T const * const ptr)
|
GLM_FUNC_QUALIFIER detail::tmat3x2<T> make_mat3x2(T const * const ptr)
|
||||||
{
|
{
|
||||||
detail::tmat3x2<T> Result;
|
detail::tmat3x2<T> Result;
|
||||||
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x2<T>));
|
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x2<T>));
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Build a matrix from a pointer.
|
//! Build a matrix from a pointer.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER detail::tmat3x3<T> make_mat3x3(T const * const ptr)
|
GLM_FUNC_QUALIFIER detail::tmat3x3<T> make_mat3x3(T const * const ptr)
|
||||||
{
|
{
|
||||||
detail::tmat3x3<T> Result;
|
detail::tmat3x3<T> Result;
|
||||||
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x3<T>));
|
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x3<T>));
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Build a matrix from a pointer.
|
//! Build a matrix from a pointer.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER detail::tmat3x4<T> make_mat3x4(T const * const ptr)
|
GLM_FUNC_QUALIFIER detail::tmat3x4<T> make_mat3x4(T const * const ptr)
|
||||||
{
|
{
|
||||||
detail::tmat3x4<T> Result;
|
detail::tmat3x4<T> Result;
|
||||||
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x4<T>));
|
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x4<T>));
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//! Build a matrix from a pointer.
|
//! Build a matrix from a pointer.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER detail::tmat4x2<T> make_mat4x2(T const * const ptr)
|
GLM_FUNC_QUALIFIER detail::tmat4x2<T> make_mat4x2(T const * const ptr)
|
||||||
{
|
{
|
||||||
detail::tmat4x2<T> Result;
|
detail::tmat4x2<T> Result;
|
||||||
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x2<T>));
|
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x2<T>));
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Build a matrix from a pointer.
|
//! Build a matrix from a pointer.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER detail::tmat4x3<T> make_mat4x3(T const * const ptr)
|
GLM_FUNC_QUALIFIER detail::tmat4x3<T> make_mat4x3(T const * const ptr)
|
||||||
{
|
{
|
||||||
detail::tmat4x3<T> Result;
|
detail::tmat4x3<T> Result;
|
||||||
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x3<T>));
|
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x3<T>));
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Build a matrix from a pointer.
|
//! Build a matrix from a pointer.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER detail::tmat4x4<T> make_mat4x4(T const * const ptr)
|
GLM_FUNC_QUALIFIER detail::tmat4x4<T> make_mat4x4(T const * const ptr)
|
||||||
{
|
{
|
||||||
detail::tmat4x4<T> Result;
|
detail::tmat4x4<T> Result;
|
||||||
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x4<T>));
|
memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x4<T>));
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Build a matrix from a pointer.
|
//! Build a matrix from a pointer.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER detail::tmat2x2<T> make_mat2(T const * const ptr)
|
GLM_FUNC_QUALIFIER detail::tmat2x2<T> make_mat2(T const * const ptr)
|
||||||
{
|
{
|
||||||
return make_mat2x2(ptr);
|
return make_mat2x2(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Build a matrix from a pointer.
|
//! Build a matrix from a pointer.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER detail::tmat3x3<T> make_mat3(T const * const ptr)
|
GLM_FUNC_QUALIFIER detail::tmat3x3<T> make_mat3(T const * const ptr)
|
||||||
{
|
{
|
||||||
return make_mat3x3(ptr);
|
return make_mat3x3(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Build a matrix from a pointer.
|
//! Build a matrix from a pointer.
|
||||||
//! From GLM_GTC_type_ptr extension.
|
//! From GLM_GTC_type_ptr extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
GLM_FUNC_QUALIFIER detail::tmat4x4<T> make_mat4(T const * const ptr)
|
GLM_FUNC_QUALIFIER detail::tmat4x4<T> make_mat4(T const * const ptr)
|
||||||
{
|
{
|
||||||
return make_mat4x4(ptr);
|
return make_mat4x4(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
}//namespace type_ptr
|
}//namespace type_ptr
|
||||||
}//namespace gtc
|
}//namespace gtc
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "type_ptr.inl"
|
#include "type_ptr.inl"
|
||||||
|
@ -21,68 +21,59 @@
|
|||||||
# pragma message("GLM: GLM_GTX_associated_min_max extension included")
|
# pragma message("GLM: GLM_GTX_associated_min_max extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace associated_min_max ///< GLM_GTX_associated_min_max extension: Min and max functions that return associated values not the compared onces.
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_associated_min_max
|
||||||
void main_gtx_associated_min_max();
|
///@{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx
|
//! \brief Min comparison between 2 variables
|
||||||
{
|
template<typename genTypeT, typename genTypeU>
|
||||||
//! GLM_GTX_associated_min_max extension: Min and max functions that return associated values not the compared onces.
|
genTypeU associatedMin(
|
||||||
namespace associated_min_max
|
const genTypeT& x, const genTypeU& a,
|
||||||
{
|
const genTypeT& y, const genTypeU& b);
|
||||||
/// \addtogroup gtx_associated_min_max
|
|
||||||
///@{
|
|
||||||
|
|
||||||
//! \brief Min comparison between 2 variables
|
//! \brief Min comparison between 3 variables
|
||||||
template<typename genTypeT, typename genTypeU>
|
template<typename genTypeT, typename genTypeU>
|
||||||
genTypeU associatedMin(
|
genTypeU associatedMin(
|
||||||
const genTypeT& x, const genTypeU& a,
|
const genTypeT& x, const genTypeU& a,
|
||||||
const genTypeT& y, const genTypeU& b);
|
const genTypeT& y, const genTypeU& b,
|
||||||
|
const genTypeT& z, const genTypeU& c);
|
||||||
|
|
||||||
//! \brief Min comparison between 3 variables
|
//! \brief Min comparison between 4 variables
|
||||||
template<typename genTypeT, typename genTypeU>
|
template<typename genTypeT, typename genTypeU>
|
||||||
genTypeU associatedMin(
|
genTypeU associatedMin(
|
||||||
const genTypeT& x, const genTypeU& a,
|
const genTypeT& x, const genTypeU& a,
|
||||||
const genTypeT& y, const genTypeU& b,
|
const genTypeT& y, const genTypeU& b,
|
||||||
const genTypeT& z, const genTypeU& c);
|
const genTypeT& z, const genTypeU& c,
|
||||||
|
const genTypeT& w, const genTypeU& d);
|
||||||
|
|
||||||
//! \brief Min comparison between 4 variables
|
//! \brief Max comparison between 2 variables
|
||||||
template<typename genTypeT, typename genTypeU>
|
template<typename genTypeT, typename genTypeU>
|
||||||
genTypeU associatedMin(
|
genTypeU associatedMax(
|
||||||
const genTypeT& x, const genTypeU& a,
|
const genTypeT& x, const genTypeU& a,
|
||||||
const genTypeT& y, const genTypeU& b,
|
const genTypeT& y, const genTypeU& b);
|
||||||
const genTypeT& z, const genTypeU& c,
|
|
||||||
const genTypeT& w, const genTypeU& d);
|
|
||||||
|
|
||||||
//! \brief Max comparison between 2 variables
|
//! \brief Max comparison between 3 variables
|
||||||
template<typename genTypeT, typename genTypeU>
|
template<typename genTypeT, typename genTypeU>
|
||||||
genTypeU associatedMax(
|
genTypeU associatedMax(
|
||||||
const genTypeT& x, const genTypeU& a,
|
const genTypeT& x, const genTypeU& a,
|
||||||
const genTypeT& y, const genTypeU& b);
|
const genTypeT& y, const genTypeU& b,
|
||||||
|
const genTypeT& z, const genTypeU& c);
|
||||||
|
|
||||||
//! \brief Max comparison between 3 variables
|
//! \brief Max comparison between 4 variables
|
||||||
template<typename genTypeT, typename genTypeU>
|
template<typename genTypeT, typename genTypeU>
|
||||||
genTypeU associatedMax(
|
genTypeU associatedMax(
|
||||||
const genTypeT& x, const genTypeU& a,
|
const genTypeT& x, const genTypeU& a,
|
||||||
const genTypeT& y, const genTypeU& b,
|
const genTypeT& y, const genTypeU& b,
|
||||||
const genTypeT& z, const genTypeU& c);
|
const genTypeT& z, const genTypeU& c,
|
||||||
|
const genTypeT& w, const genTypeU& d);
|
||||||
|
|
||||||
//! \brief Max comparison between 4 variables
|
///@}
|
||||||
template<typename genTypeT, typename genTypeU>
|
} //namespace associated_min_max
|
||||||
genTypeU associatedMax(
|
} //namespace gtx
|
||||||
const genTypeT& x, const genTypeU& a,
|
} //namespace glm
|
||||||
const genTypeT& y, const genTypeU& b,
|
|
||||||
const genTypeT& z, const genTypeU& c,
|
|
||||||
const genTypeT& w, const genTypeU& d);
|
|
||||||
///@}
|
|
||||||
|
|
||||||
}//namespace associated_min_max
|
|
||||||
|
|
||||||
bool test();
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
|
||||||
|
|
||||||
#include "associated_min_max.inl"
|
#include "associated_min_max.inl"
|
||||||
|
|
||||||
|
159
glm/gtx/bit.hpp
159
glm/gtx/bit.hpp
@ -22,106 +22,99 @@
|
|||||||
# pragma message("GLM: GLM_GTX_bit extension included")
|
# pragma message("GLM: GLM_GTX_bit extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace bit ///< GLM_GTX_bit extension: Allow to perform bit operations on integer values
|
||||||
{
|
{
|
||||||
namespace test{
|
using namespace gtc::half_float;
|
||||||
void main_gtx_bit();
|
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
/// \addtogroup gtx_bit
|
||||||
//! GLM_GTX_bit extension: Allow to perform bit operations on integer values
|
///@{
|
||||||
namespace bit
|
|
||||||
{
|
|
||||||
using namespace gtc::half_float;
|
|
||||||
|
|
||||||
/// \addtogroup gtx_bit
|
//! Build a mask of 'count' bits
|
||||||
///@{
|
//! From GLM_GTX_bit extension.
|
||||||
|
template <typename genIType>
|
||||||
|
genIType mask(genIType const & count);
|
||||||
|
|
||||||
//! Build a mask of 'count' bits
|
//! Component wise extraction of bit fields.
|
||||||
//! From GLM_GTX_bit extension.
|
//! genType and genIType could be a scalar or a vector.
|
||||||
template <typename genIType>
|
//! From GLM_GTX_bit extension.
|
||||||
genIType mask(genIType const & count);
|
template <typename genIUType, typename sizeType>
|
||||||
|
genIUType extractField(
|
||||||
|
genIUType const & v,
|
||||||
|
sizeType const & first,
|
||||||
|
sizeType const & count);
|
||||||
|
|
||||||
//! Component wise extraction of bit fields.
|
//! Find the lowest bit set to 1 in a integer variable.
|
||||||
//! genType and genIType could be a scalar or a vector.
|
//! From GLM_GTX_bit extension.
|
||||||
//! From GLM_GTX_bit extension.
|
template <typename genType>
|
||||||
template <typename genIUType, typename sizeType>
|
int lowestBit(genType const & value);
|
||||||
genIUType extractField(
|
|
||||||
genIUType const & v,
|
|
||||||
sizeType const & first,
|
|
||||||
sizeType const & count);
|
|
||||||
|
|
||||||
//! Find the lowest bit set to 1 in a integer variable.
|
//! Find the highest bit set to 1 in a integer variable.
|
||||||
//! From GLM_GTX_bit extension.
|
//! From GLM_GTX_bit extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
int lowestBit(genType const & value);
|
int highestBit(genType const & value);
|
||||||
|
|
||||||
//! Find the highest bit set to 1 in a integer variable.
|
//! Find the highest bit set to 1 in a integer variable and return its value.
|
||||||
//! From GLM_GTX_bit extension.
|
//! From GLM_GTX_bit extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
int highestBit(genType const & value);
|
genType highestBitValue(genType const & value);
|
||||||
|
|
||||||
//! Find the highest bit set to 1 in a integer variable and return its value.
|
//! Return true if the value is a power of two number.
|
||||||
//! From GLM_GTX_bit extension.
|
//! From GLM_GTX_bit extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType highestBitValue(genType const & value);
|
bool isPowerOfTwo(genType const & value);
|
||||||
|
|
||||||
//! Return true if the value is a power of two number.
|
//! Return the power of two number which value is just higher the input value.
|
||||||
//! From GLM_GTX_bit extension.
|
//! From GLM_GTX_bit extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
bool isPowerOfTwo(genType const & value);
|
genType powerOfTwoAbove(genType const & value);
|
||||||
|
|
||||||
//! Return the power of two number which value is just higher the input value.
|
//! Return the power of two number which value is just lower the input value.
|
||||||
//! From GLM_GTX_bit extension.
|
//! From GLM_GTX_bit extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType powerOfTwoAbove(genType const & value);
|
genType powerOfTwoBelow(genType const & value);
|
||||||
|
|
||||||
//! Return the power of two number which value is just lower the input value.
|
//! Return the power of two number which value is the closet to the input value.
|
||||||
//! From GLM_GTX_bit extension.
|
//! From GLM_GTX_bit extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType powerOfTwoBelow(genType const & value);
|
genType powerOfTwoNearest(genType const & value);
|
||||||
|
|
||||||
//! Return the power of two number which value is the closet to the input value.
|
//! Revert all bits of any integer based type.
|
||||||
//! From GLM_GTX_bit extension.
|
//! From GLM_GTX_bit extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType powerOfTwoNearest(genType const & value);
|
genType bitRevert(genType const & value);
|
||||||
|
|
||||||
//! Revert all bits of any integer based type.
|
//! Rotate all bits to the right.
|
||||||
//! From GLM_GTX_bit extension.
|
//! From GLM_GTX_bit extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType bitRevert(genType const & value);
|
genType bitRotateRight(genType const & In, std::size_t Shift);
|
||||||
|
|
||||||
//! Rotate all bits to the right.
|
//! Rotate all bits to the left.
|
||||||
//! From GLM_GTX_bit extension.
|
//! From GLM_GTX_bit extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType bitRotateRight(genType const & In, std::size_t Shift);
|
genType bitRotateLeft(genType const & In, std::size_t Shift);
|
||||||
|
|
||||||
//! Rotate all bits to the left.
|
//! Set to 1 a range of bits.
|
||||||
//! From GLM_GTX_bit extension.
|
//! From GLM_GTX_bit extension.
|
||||||
template <typename genType>
|
template <typename genIUType>
|
||||||
genType bitRotateLeft(genType const & In, std::size_t Shift);
|
genIUType fillBitfieldWithOne(
|
||||||
|
genIUType const & Value,
|
||||||
|
int const & FromBit,
|
||||||
|
int const & ToBit);
|
||||||
|
|
||||||
//! Set to 1 a range of bits.
|
//! Set to 0 a range of bits.
|
||||||
//! From GLM_GTX_bit extension.
|
//! From GLM_GTX_bit extension.
|
||||||
template <typename genIUType>
|
template <typename genIUType>
|
||||||
genIUType fillBitfieldWithOne(
|
genIUType fillBitfieldWithZero(
|
||||||
genIUType const & Value,
|
genIUType const & Value,
|
||||||
int const & FromBit,
|
int const & FromBit,
|
||||||
int const & ToBit);
|
int const & ToBit);
|
||||||
|
|
||||||
//! Set to 0 a range of bits.
|
/// @}
|
||||||
//! From GLM_GTX_bit extension.
|
}// namespace bit
|
||||||
template <typename genIUType>
|
}// namespace gtx
|
||||||
genIUType fillBitfieldWithZero(
|
}// namespace glm
|
||||||
genIUType const & Value,
|
|
||||||
int const & FromBit,
|
|
||||||
int const & ToBit);
|
|
||||||
|
|
||||||
///@}
|
|
||||||
|
|
||||||
}//namespace bit
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
|
||||||
|
|
||||||
#include "bit.inl"
|
#include "bit.inl"
|
||||||
|
|
||||||
|
@ -20,31 +20,25 @@
|
|||||||
# pragma message("GLM: GLM_GTX_closest_point extension included")
|
# pragma message("GLM: GLM_GTX_closest_point extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace closest_point ///< GLM_GTX_closest_point extension: Find the point on a straight line which is the closet of a point.
|
||||||
{
|
{
|
||||||
namespace test{
|
|
||||||
void main_gtx_closest_point();
|
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
|
||||||
//! GLM_GTX_closest_point extension: Find the point on a straight line which is the closet of a point.
|
|
||||||
namespace closest_point{
|
|
||||||
|
|
||||||
/// \addtogroup gtx_closest_point
|
/// \addtogroup gtx_closest_point
|
||||||
///@{
|
/// @{
|
||||||
|
|
||||||
//! Find the point on a straight line which is the closet of a point.
|
/// Find the point on a straight line which is the closet of a point.
|
||||||
//! From GLM_GTX_closest_point extension.
|
/// From GLM_GTX_closest_point extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec3<T> closestPointOnLine(
|
detail::tvec3<T> closestPointOnLine(
|
||||||
detail::tvec3<T> const & point,
|
detail::tvec3<T> const & point,
|
||||||
detail::tvec3<T> const & a,
|
detail::tvec3<T> const & a,
|
||||||
detail::tvec3<T> const & b);
|
detail::tvec3<T> const & b);
|
||||||
///@}
|
|
||||||
|
|
||||||
}//namespace closest_point
|
/// @}
|
||||||
}//namespace gtx
|
}// namespace closest_point
|
||||||
}//namespace glm
|
}// namespace gtx
|
||||||
|
}// namespace glm
|
||||||
|
|
||||||
#include "closest_point.inl"
|
#include "closest_point.inl"
|
||||||
|
|
||||||
|
@ -22,88 +22,82 @@
|
|||||||
# pragma message("GLM: GLM_GTX_color_cast extension included")
|
# pragma message("GLM: GLM_GTX_color_cast extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace color_cast ///< GLM_GTX_color_cast extension: Conversion between two color types
|
||||||
{
|
{
|
||||||
namespace test{
|
using namespace gtx::number_precision;
|
||||||
void main_ext_gtx_color_cast();
|
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
/// \addtogroup gtx_color_cast
|
||||||
//! GLM_GTX_color_cast extension: Conversion between two color types
|
///@{
|
||||||
namespace color_cast
|
|
||||||
{
|
|
||||||
using namespace gtx::number_precision;
|
|
||||||
|
|
||||||
/// \addtogroup gtx_color_cast
|
//! Conversion of a floating value into a 8bit unsigned int value.
|
||||||
///@{
|
//! From GLM_GTX_color_cast extension.
|
||||||
|
template <typename valType> gtc::type_precision::uint8 u8channel_cast(valType a);
|
||||||
|
|
||||||
//! Conversion of a floating value into a 8bit unsigned int value.
|
//! Conversion of a floating value into a 16bit unsigned int value.
|
||||||
//! From GLM_GTX_color_cast extension.
|
//! From GLM_GTX_color_cast extension.
|
||||||
template <typename valType> gtc::type_precision::uint8 u8channel_cast(valType a);
|
template <typename valType> gtc::type_precision::uint16 u16channel_cast(valType a);
|
||||||
|
|
||||||
//! Conversion of a floating value into a 16bit unsigned int value.
|
template <typename T> gtc::type_precision::uint32 u32_rgbx_cast(const detail::tvec3<T>& c); //!< \brief Conversion of a 3 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension)
|
||||||
//! From GLM_GTX_color_cast extension.
|
template <typename T> gtc::type_precision::uint32 u32_xrgb_cast(const detail::tvec3<T>& c); //!< \brief Conversion of a 3 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension)
|
||||||
template <typename valType> gtc::type_precision::uint16 u16channel_cast(valType a);
|
template <typename T> gtc::type_precision::uint32 u32_bgrx_cast(const detail::tvec3<T>& c); //!< \brief Conversion of a 3 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension)
|
||||||
|
template <typename T> gtc::type_precision::uint32 u32_xbgr_cast(const detail::tvec3<T>& c); //!< \brief Conversion of a 3 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension)
|
||||||
|
|
||||||
template <typename T> gtc::type_precision::uint32 u32_rgbx_cast(const detail::tvec3<T>& c); //!< \brief Conversion of a 3 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::uint32 u32_rgba_cast(const detail::tvec4<T>& c); //!< \brief Conversion of a 4 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::uint32 u32_xrgb_cast(const detail::tvec3<T>& c); //!< \brief Conversion of a 3 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::uint32 u32_argb_cast(const detail::tvec4<T>& c); //!< \brief Conversion of a 4 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::uint32 u32_bgrx_cast(const detail::tvec3<T>& c); //!< \brief Conversion of a 3 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::uint32 u32_bgra_cast(const detail::tvec4<T>& c); //!< \brief Conversion of a 4 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::uint32 u32_xbgr_cast(const detail::tvec3<T>& c); //!< \brief Conversion of a 3 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::uint32 u32_abgr_cast(const detail::tvec4<T>& c); //!< \brief Conversion of a 4 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension)
|
||||||
|
|
||||||
template <typename T> gtc::type_precision::uint32 u32_rgba_cast(const detail::tvec4<T>& c); //!< \brief Conversion of a 4 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::uint64 u64_rgbx_cast(const detail::tvec3<T>& c); //!< \brief Conversion of a 3 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::uint32 u32_argb_cast(const detail::tvec4<T>& c); //!< \brief Conversion of a 4 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::uint64 u64_xrgb_cast(const detail::tvec3<T>& c); //!< \brief Conversion of a 3 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::uint32 u32_bgra_cast(const detail::tvec4<T>& c); //!< \brief Conversion of a 4 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::uint64 u64_bgrx_cast(const detail::tvec3<T>& c); //!< \brief Conversion of a 3 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::uint32 u32_abgr_cast(const detail::tvec4<T>& c); //!< \brief Conversion of a 4 components color into an 32bit unsigned int value. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::uint64 u64_xbgr_cast(const detail::tvec3<T>& c); //!< \brief Conversion of a 3 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension)
|
||||||
|
|
||||||
template <typename T> gtc::type_precision::uint64 u64_rgbx_cast(const detail::tvec3<T>& c); //!< \brief Conversion of a 3 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::uint64 u64_rgba_cast(const detail::tvec4<T>& c); //!< \brief Conversion of a 4 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::uint64 u64_xrgb_cast(const detail::tvec3<T>& c); //!< \brief Conversion of a 3 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::uint64 u64_argb_cast(const detail::tvec4<T>& c); //!< \brief Conversion of a 4 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::uint64 u64_bgrx_cast(const detail::tvec3<T>& c); //!< \brief Conversion of a 3 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::uint64 u64_bgra_cast(const detail::tvec4<T>& c); //!< \brief Conversion of a 4 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::uint64 u64_xbgr_cast(const detail::tvec3<T>& c); //!< \brief Conversion of a 3 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::uint64 u64_abgr_cast(const detail::tvec4<T>& c); //!< \brief Conversion of a 4 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension)
|
||||||
|
|
||||||
template <typename T> gtc::type_precision::uint64 u64_rgba_cast(const detail::tvec4<T>& c); //!< \brief Conversion of a 4 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension)
|
template <typename T> gtx::number_precision::f16vec1 f16_channel_cast(T a); //!< \brief Conversion of a u8 or u16 value to a single channel floating value. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::uint64 u64_argb_cast(const detail::tvec4<T>& c); //!< \brief Conversion of a 4 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension)
|
|
||||||
template <typename T> gtc::type_precision::uint64 u64_bgra_cast(const detail::tvec4<T>& c); //!< \brief Conversion of a 4 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension)
|
|
||||||
template <typename T> gtc::type_precision::uint64 u64_abgr_cast(const detail::tvec4<T>& c); //!< \brief Conversion of a 4 components color into an 64bit unsigned int value. (From GLM_GTX_color_cast extension)
|
|
||||||
|
|
||||||
template <typename T> gtx::number_precision::f16vec1 f16_channel_cast(T a); //!< \brief Conversion of a u8 or u16 value to a single channel floating value. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::f16vec3 f16_rgbx_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
|
template <typename T> gtc::type_precision::f16vec3 f16_xrgb_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
|
template <typename T> gtc::type_precision::f16vec3 f16_bgrx_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
|
template <typename T> gtc::type_precision::f16vec3 f16_xbgr_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
|
|
||||||
template <typename T> gtc::type_precision::f16vec3 f16_rgbx_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::f16vec4 f16_rgba_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::f16vec3 f16_xrgb_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::f16vec4 f16_argb_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::f16vec3 f16_bgrx_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::f16vec4 f16_bgra_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::f16vec3 f16_xbgr_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::f16vec4 f16_abgr_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
|
|
||||||
template <typename T> gtc::type_precision::f16vec4 f16_rgba_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
template <typename T> gtx::number_precision::f32vec1 f32_channel_cast(T a); //!< \brief Conversion of a u8 or u16 value to a single channel floating value. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::f16vec4 f16_argb_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
|
||||||
template <typename T> gtc::type_precision::f16vec4 f16_bgra_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
|
||||||
template <typename T> gtc::type_precision::f16vec4 f16_abgr_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
|
||||||
|
|
||||||
template <typename T> gtx::number_precision::f32vec1 f32_channel_cast(T a); //!< \brief Conversion of a u8 or u16 value to a single channel floating value. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::f32vec3 f32_rgbx_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
|
template <typename T> gtc::type_precision::f32vec3 f32_xrgb_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
|
template <typename T> gtc::type_precision::f32vec3 f32_bgrx_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
|
template <typename T> gtc::type_precision::f32vec3 f32_xbgr_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
|
|
||||||
template <typename T> gtc::type_precision::f32vec3 f32_rgbx_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::f32vec4 f32_rgba_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::f32vec3 f32_xrgb_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::f32vec4 f32_argb_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::f32vec3 f32_bgrx_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::f32vec4 f32_bgra_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::f32vec3 f32_xbgr_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::f32vec4 f32_abgr_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
|
|
||||||
template <typename T> gtc::type_precision::f32vec4 f32_rgba_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
template <typename T> gtx::number_precision::f64vec1 f64_channel_cast(T a); //!< \brief Conversion of a u8 or u16 value to a single channel floating value. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::f32vec4 f32_argb_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
|
||||||
template <typename T> gtc::type_precision::f32vec4 f32_bgra_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
|
||||||
template <typename T> gtc::type_precision::f32vec4 f32_abgr_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
|
||||||
|
|
||||||
template <typename T> gtx::number_precision::f64vec1 f64_channel_cast(T a); //!< \brief Conversion of a u8 or u16 value to a single channel floating value. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::f64vec3 f64_rgbx_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
|
template <typename T> gtc::type_precision::f64vec3 f64_xrgb_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
|
template <typename T> gtc::type_precision::f64vec3 f64_bgrx_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
|
template <typename T> gtc::type_precision::f64vec3 f64_xbgr_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
|
|
||||||
template <typename T> gtc::type_precision::f64vec3 f64_rgbx_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::f64vec4 f64_rgba_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::f64vec3 f64_xrgb_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::f64vec4 f64_argb_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::f64vec3 f64_bgrx_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::f64vec4 f64_bgra_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
template <typename T> gtc::type_precision::f64vec3 f64_xbgr_cast(T c); //!< \brief Conversion of a u32 or u64 color into 3 components floating color. (From GLM_GTX_color_cast extension)
|
template <typename T> gtc::type_precision::f64vec4 f64_abgr_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
||||||
|
|
||||||
template <typename T> gtc::type_precision::f64vec4 f64_rgba_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
///@}
|
||||||
template <typename T> gtc::type_precision::f64vec4 f64_argb_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
}//namespace color_space
|
||||||
template <typename T> gtc::type_precision::f64vec4 f64_bgra_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
}//namespace gtx
|
||||||
template <typename T> gtc::type_precision::f64vec4 f64_abgr_cast(T c); //!< \brief Conversion of a u32 or u64 color into 4 components floating color. (From GLM_GTX_color_cast extension)
|
|
||||||
|
|
||||||
///@}
|
|
||||||
}//namespace color_space
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "color_cast.inl"
|
#include "color_cast.inl"
|
||||||
|
@ -20,61 +20,54 @@
|
|||||||
# pragma message("GLM: GLM_GTX_color_space extension included")
|
# pragma message("GLM: GLM_GTX_color_space extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace color_space ///< GLM_GTX_color_space extension: Related to RGB to HSV conversions and operations
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_color_space
|
||||||
void main_gtx_color_space();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Converts a color from HSV color space to its color in RGB color space.
|
||||||
//! GLM_GTX_color_space extension: Related to RGB to HSV conversions and operations
|
//! From GLM_GTX_color_space extension.
|
||||||
namespace color_space
|
template <typename valType>
|
||||||
{
|
detail::tvec3<valType> rgbColor(
|
||||||
/// \addtogroup gtx_color_space
|
detail::tvec3<valType> const & hsvValue);
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Converts a color from HSV color space to its color in RGB color space.
|
//! Converts a color from RGB color space to its color in HSV color space.
|
||||||
//! From GLM_GTX_color_space extension.
|
//! From GLM_GTX_color_space extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tvec3<valType> rgbColor(
|
detail::tvec3<valType> hsvColor(
|
||||||
detail::tvec3<valType> const & hsvValue);
|
detail::tvec3<valType> const & rgbValue);
|
||||||
|
|
||||||
//! Converts a color from RGB color space to its color in HSV color space.
|
|
||||||
//! From GLM_GTX_color_space extension.
|
|
||||||
template <typename valType>
|
|
||||||
detail::tvec3<valType> hsvColor(
|
|
||||||
detail::tvec3<valType> const & rgbValue);
|
|
||||||
|
|
||||||
//! Build a saturation matrix.
|
//! Build a saturation matrix.
|
||||||
//! From GLM_GTX_color_space extension
|
//! From GLM_GTX_color_space extension
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat4x4<valType> saturation(
|
detail::tmat4x4<valType> saturation(
|
||||||
valType const s);
|
valType const s);
|
||||||
|
|
||||||
//! Modify the saturation of a color.
|
//! Modify the saturation of a color.
|
||||||
//! From GLM_GTX_color_space extension.
|
//! From GLM_GTX_color_space extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tvec3<valType> saturation(
|
detail::tvec3<valType> saturation(
|
||||||
valType const s,
|
valType const s,
|
||||||
detail::tvec3<valType> const & color);
|
detail::tvec3<valType> const & color);
|
||||||
|
|
||||||
//! Modify the saturation of a color.
|
//! Modify the saturation of a color.
|
||||||
//! From GLM_GTX_color_space extension.
|
//! From GLM_GTX_color_space extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tvec4<valType> saturation(
|
detail::tvec4<valType> saturation(
|
||||||
valType const s,
|
valType const s,
|
||||||
detail::tvec4<valType> const & color);
|
detail::tvec4<valType> const & color);
|
||||||
|
|
||||||
//! Compute color luminosity associating ratios (0.33, 0.59, 0.11) to RGB canals.
|
//! Compute color luminosity associating ratios (0.33, 0.59, 0.11) to RGB canals.
|
||||||
//! From GLM_GTX_color_space extension.
|
//! From GLM_GTX_color_space extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
valType luminosity(
|
valType luminosity(
|
||||||
detail::tvec3<valType> const & color);
|
detail::tvec3<valType> const & color);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}//namespace color_space
|
||||||
}//namespace color_space
|
}//namespace gtx
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "color_space.inl"
|
#include "color_space.inl"
|
||||||
|
@ -20,48 +20,42 @@
|
|||||||
# pragma message("GLM: GLM_GTX_color_space_YCoCg extension included")
|
# pragma message("GLM: GLM_GTX_color_space_YCoCg extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace color_space_YCoCg ///< GLM_GTX_color_space_YCoCg extension: RGB to YCoCg conversions and operations
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_color_space_YCoCg
|
||||||
void main_gtx_color_space_YCoCg();
|
///@{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Convert a color from RGB color space to YCoCg color space.
|
||||||
//! GLM_GTX_color_space_YCoCg extension: RGB to YCoCg conversions and operations
|
//! From GLM_GTX_color_space_YCoCg extension.
|
||||||
namespace color_space_YCoCg
|
template <typename valType>
|
||||||
{
|
detail::tvec3<valType> rgb2YCoCg(
|
||||||
/// \addtogroup gtx_color_space_YCoCg
|
detail::tvec3<valType> const & rgbColor);
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Convert a color from RGB color space to YCoCg color space.
|
//! Convert a color from YCoCg color space to RGB color space.
|
||||||
//! From GLM_GTX_color_space_YCoCg extension.
|
//! From GLM_GTX_color_space_YCoCg extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tvec3<valType> rgb2YCoCg(
|
detail::tvec3<valType> YCoCg2rgb(
|
||||||
detail::tvec3<valType> const & rgbColor);
|
detail::tvec3<valType> const & YCoCgColor);
|
||||||
|
|
||||||
//! Convert a color from YCoCg color space to RGB color space.
|
//! Convert a color from RGB color space to YCoCgR color space.
|
||||||
//! From GLM_GTX_color_space_YCoCg extension.
|
//! \see "YCoCg-R: A Color Space with RGB Reversibility and Low Dynamic Range"
|
||||||
template <typename valType>
|
//! From GLM_GTX_color_space_YCoCg extension.
|
||||||
detail::tvec3<valType> YCoCg2rgb(
|
template <typename valType>
|
||||||
detail::tvec3<valType> const & YCoCgColor);
|
detail::tvec3<valType> rgb2YCoCgR(
|
||||||
|
detail::tvec3<valType> const & rgbColor);
|
||||||
|
|
||||||
//! Convert a color from RGB color space to YCoCgR color space.
|
//! Convert a color from YCoCgR color space to RGB color space.
|
||||||
//! \see "YCoCg-R: A Color Space with RGB Reversibility and Low Dynamic Range"
|
//! \see "YCoCg-R: A Color Space with RGB Reversibility and Low Dynamic Range"
|
||||||
//! From GLM_GTX_color_space_YCoCg extension.
|
//! From GLM_GTX_color_space_YCoCg extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tvec3<valType> rgb2YCoCgR(
|
detail::tvec3<valType> YCoCgR2rgb(
|
||||||
detail::tvec3<valType> const & rgbColor);
|
detail::tvec3<valType> const & YCoCgColor);
|
||||||
|
|
||||||
//! Convert a color from YCoCgR color space to RGB color space.
|
/// @}
|
||||||
//! \see "YCoCg-R: A Color Space with RGB Reversibility and Low Dynamic Range"
|
}//namespace color_space_YCoCg
|
||||||
//! From GLM_GTX_color_space_YCoCg extension.
|
}//namespace gtx
|
||||||
template <typename valType>
|
|
||||||
detail::tvec3<valType> YCoCgR2rgb(
|
|
||||||
detail::tvec3<valType> const & YCoCgColor);
|
|
||||||
|
|
||||||
///@}
|
|
||||||
}//namespace color_space_YCoCg
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "color_space_YCoCg.inl"
|
#include "color_space_YCoCg.inl"
|
||||||
|
@ -28,136 +28,129 @@
|
|||||||
#include <cmath>
|
#include <cmath>
|
||||||
#endif//GLM_COMPILER
|
#endif//GLM_COMPILER
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace compatibility ///< GLM_GTX_compatibility extension: Provide functions to increase the compatibility with Cg and HLSL languages
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_compatibility
|
||||||
void main_gtx_compatibility();
|
///@{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
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)
|
||||||
//! GLM_GTX_compatibility extension: Provide functions to increase the compatibility with Cg and HLSL languages
|
template <typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> lerp(const detail::tvec2<T>& x, const detail::tvec2<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)
|
||||||
namespace compatibility
|
template <typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> lerp(const detail::tvec3<T>& x, const detail::tvec3<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> GLM_FUNC_QUALIFIER detail::tvec4<T> lerp(const detail::tvec4<T>& x, const detail::tvec4<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)
|
||||||
/// \addtogroup gtx_compatibility
|
template <typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> lerp(const detail::tvec2<T>& x, const detail::tvec2<T>& y, const detail::tvec2<T>& 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> GLM_FUNC_QUALIFIER detail::tvec3<T> lerp(const detail::tvec3<T>& x, const detail::tvec3<T>& y, const detail::tvec3<T>& 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> GLM_FUNC_QUALIFIER detail::tvec4<T> lerp(const detail::tvec4<T>& x, const detail::tvec4<T>& y, const detail::tvec4<T>& 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> 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> 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> GLM_FUNC_QUALIFIER detail::tvec2<T> lerp(const detail::tvec2<T>& x, const detail::tvec2<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> GLM_FUNC_QUALIFIER detail::tvec2<T> saturate(const detail::tvec2<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> GLM_FUNC_QUALIFIER detail::tvec3<T> lerp(const detail::tvec3<T>& x, const detail::tvec3<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> GLM_FUNC_QUALIFIER detail::tvec3<T> saturate(const detail::tvec3<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> GLM_FUNC_QUALIFIER detail::tvec4<T> lerp(const detail::tvec4<T>& x, const detail::tvec4<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> GLM_FUNC_QUALIFIER detail::tvec4<T> saturate(const detail::tvec4<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> GLM_FUNC_QUALIFIER detail::tvec2<T> lerp(const detail::tvec2<T>& x, const detail::tvec2<T>& y, const detail::tvec2<T>& 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> GLM_FUNC_QUALIFIER detail::tvec3<T> lerp(const detail::tvec3<T>& x, const detail::tvec3<T>& y, const detail::tvec3<T>& 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> GLM_FUNC_QUALIFIER detail::tvec4<T> lerp(const detail::tvec4<T>& x, const detail::tvec4<T>& y, const detail::tvec4<T>& 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> 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> 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> GLM_FUNC_QUALIFIER detail::tvec2<T> saturate(const detail::tvec2<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> GLM_FUNC_QUALIFIER detail::tvec2<T> atan2(const detail::tvec2<T>& x, const detail::tvec2<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> GLM_FUNC_QUALIFIER detail::tvec3<T> saturate(const detail::tvec3<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> GLM_FUNC_QUALIFIER detail::tvec3<T> atan2(const detail::tvec3<T>& x, const detail::tvec3<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> GLM_FUNC_QUALIFIER detail::tvec4<T> saturate(const detail::tvec4<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> GLM_FUNC_QUALIFIER detail::tvec4<T> atan2(const detail::tvec4<T>& x, const detail::tvec4<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> 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 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> GLM_FUNC_QUALIFIER detail::tvec2<T> atan2(const detail::tvec2<T>& x, const detail::tvec2<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 valType> detail::tvec2<bool> isfinite(const detail::tvec2<valType>& x); //!< \brief Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)
|
||||||
template <typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> atan2(const detail::tvec3<T>& x, const detail::tvec3<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 valType> detail::tvec3<bool> isfinite(const detail::tvec3<valType>& x); //!< \brief Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)
|
||||||
template <typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> atan2(const detail::tvec4<T>& x, const detail::tvec4<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 valType> detail::tvec4<bool> isfinite(const detail::tvec4<valType>& x); //!< \brief Test whether or not a scalar or each vector component is a finite value. (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 genType> bool isinf(genType const & x); //!< \brief Determines whether the given floating-point value is infinite. (From GLM_GTX_compatibility extension)
|
||||||
template <typename valType> detail::tvec2<bool> isfinite(const detail::tvec2<valType>& x); //!< \brief Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)
|
template <typename genType> detail::tvec2<bool> isinf(const detail::tvec2<genType>& x); //!< \brief Determines whether the given floating-point value is infinite. (From GLM_GTX_compatibility extension)
|
||||||
template <typename valType> detail::tvec3<bool> isfinite(const detail::tvec3<valType>& x); //!< \brief Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)
|
template <typename genType> detail::tvec3<bool> isinf(const detail::tvec3<genType>& x); //!< \brief Determines whether the given floating-point value is infinite. (From GLM_GTX_compatibility extension)
|
||||||
template <typename valType> detail::tvec4<bool> isfinite(const detail::tvec4<valType>& x); //!< \brief Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)
|
template <typename genType> detail::tvec4<bool> isinf(const detail::tvec4<genType>& x); //!< \brief Determines whether the given floating-point value is infinite. (From GLM_GTX_compatibility extension)
|
||||||
|
|
||||||
template <typename genType> bool isinf(genType const & x); //!< \brief Determines whether the given floating-point value is infinite. (From GLM_GTX_compatibility extension)
|
template <typename genType> bool isnan(genType const & x); //!< \brief Checks given floating-point value for not a number (NAN) (From GLM_GTX_compatibility extension)
|
||||||
template <typename genType> detail::tvec2<bool> isinf(const detail::tvec2<genType>& x); //!< \brief Determines whether the given floating-point value is infinite. (From GLM_GTX_compatibility extension)
|
template <typename genType> detail::tvec2<bool> isnan(const detail::tvec2<genType>& x); //!< \brief Checks given floating-point value for not a number (NAN) (From GLM_GTX_compatibility extension)
|
||||||
template <typename genType> detail::tvec3<bool> isinf(const detail::tvec3<genType>& x); //!< \brief Determines whether the given floating-point value is infinite. (From GLM_GTX_compatibility extension)
|
template <typename genType> detail::tvec3<bool> isnan(const detail::tvec3<genType>& x); //!< \brief Checks given floating-point value for not a number (NAN) (From GLM_GTX_compatibility extension)
|
||||||
template <typename genType> detail::tvec4<bool> isinf(const detail::tvec4<genType>& x); //!< \brief Determines whether the given floating-point value is infinite. (From GLM_GTX_compatibility extension)
|
template <typename genType> detail::tvec4<bool> isnan(const detail::tvec4<genType>& x); //!< \brief Checks given floating-point value for not a number (NAN) (From GLM_GTX_compatibility extension)
|
||||||
|
|
||||||
template <typename genType> bool isnan(genType const & x); //!< \brief Checks given floating-point value for not a number (NAN) (From GLM_GTX_compatibility extension)
|
typedef bool bool1; //!< \brief boolean type with 1 component. (From GLM_GTX_compatibility extension)
|
||||||
template <typename genType> detail::tvec2<bool> isnan(const detail::tvec2<genType>& x); //!< \brief Checks given floating-point value for not a number (NAN) (From GLM_GTX_compatibility extension)
|
typedef detail::tvec2<bool> bool2; //!< \brief boolean type with 2 components. (From GLM_GTX_compatibility extension)
|
||||||
template <typename genType> detail::tvec3<bool> isnan(const detail::tvec3<genType>& x); //!< \brief Checks given floating-point value for not a number (NAN) (From GLM_GTX_compatibility extension)
|
typedef detail::tvec3<bool> bool3; //!< \brief boolean type with 3 components. (From GLM_GTX_compatibility extension)
|
||||||
template <typename genType> detail::tvec4<bool> isnan(const detail::tvec4<genType>& x); //!< \brief Checks given floating-point value for not a number (NAN) (From GLM_GTX_compatibility extension)
|
typedef detail::tvec4<bool> bool4; //!< \brief boolean type with 4 components. (From GLM_GTX_compatibility extension)
|
||||||
|
|
||||||
typedef bool bool1; //!< \brief boolean type with 1 component. (From GLM_GTX_compatibility extension)
|
typedef bool bool1x1; //!< \brief boolean matrix with 1 x 1 component. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tvec2<bool> bool2; //!< \brief boolean type with 2 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tmat2x2<bool> bool2x2; //!< \brief boolean matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tvec3<bool> bool3; //!< \brief boolean type with 3 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tmat2x3<bool> bool2x3; //!< \brief boolean matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tvec4<bool> bool4; //!< \brief boolean type with 4 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tmat2x4<bool> bool2x4; //!< \brief boolean matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat3x2<bool> bool3x2; //!< \brief boolean matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat3x3<bool> bool3x3; //!< \brief boolean matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat3x4<bool> bool3x4; //!< \brief boolean matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat4x2<bool> bool4x2; //!< \brief boolean matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat4x3<bool> bool4x3; //!< \brief boolean matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat4x4<bool> bool4x4; //!< \brief boolean matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
|
||||||
|
|
||||||
typedef bool bool1x1; //!< \brief boolean matrix with 1 x 1 component. (From GLM_GTX_compatibility extension)
|
typedef int int1; //!< \brief integer vector with 1 component. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tmat2x2<bool> bool2x2; //!< \brief boolean matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tvec2<int> int2; //!< \brief integer vector with 2 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tmat2x3<bool> bool2x3; //!< \brief boolean matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tvec3<int> int3; //!< \brief integer vector with 3 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tmat2x4<bool> bool2x4; //!< \brief boolean matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tvec4<int> int4; //!< \brief integer vector with 4 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tmat3x2<bool> bool3x2; //!< \brief boolean matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat3x3<bool> bool3x3; //!< \brief boolean matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat3x4<bool> bool3x4; //!< \brief boolean matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat4x2<bool> bool4x2; //!< \brief boolean matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat4x3<bool> bool4x3; //!< \brief boolean matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat4x4<bool> bool4x4; //!< \brief boolean matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
|
|
||||||
|
|
||||||
typedef int int1; //!< \brief integer vector with 1 component. (From GLM_GTX_compatibility extension)
|
typedef int int1x1; //!< \brief integer matrix with 1 component. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tvec2<int> int2; //!< \brief integer vector with 2 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tmat2x2<int> int2x2; //!< \brief integer matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tvec3<int> int3; //!< \brief integer vector with 3 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tmat2x3<int> int2x3; //!< \brief integer matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tvec4<int> int4; //!< \brief integer vector with 4 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tmat2x4<int> int2x4; //!< \brief integer matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat3x2<int> int3x2; //!< \brief integer matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat3x3<int> int3x3; //!< \brief integer matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat3x4<int> int3x4; //!< \brief integer matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat4x2<int> int4x2; //!< \brief integer matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat4x3<int> int4x3; //!< \brief integer matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat4x4<int> int4x4; //!< \brief integer matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
|
||||||
|
|
||||||
typedef int int1x1; //!< \brief integer matrix with 1 component. (From GLM_GTX_compatibility extension)
|
typedef gtc::half_float::half half1; //!< \brief half-precision floating-point vector with 1 component. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tmat2x2<int> int2x2; //!< \brief integer matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tvec2<gtc::half_float::half> half2; //!< \brief half-precision floating-point vector with 2 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tmat2x3<int> int2x3; //!< \brief integer matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tvec3<gtc::half_float::half> half3; //!< \brief half-precision floating-point vector with 2 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tmat2x4<int> int2x4; //!< \brief integer matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tvec4<gtc::half_float::half> half4; //!< \brief half-precision floating-point vector with 2 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tmat3x2<int> int3x2; //!< \brief integer matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat3x3<int> int3x3; //!< \brief integer matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat3x4<int> int3x4; //!< \brief integer matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat4x2<int> int4x2; //!< \brief integer matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat4x3<int> int4x3; //!< \brief integer matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat4x4<int> int4x4; //!< \brief integer matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
|
|
||||||
|
|
||||||
typedef gtc::half_float::half half1; //!< \brief half-precision floating-point vector with 1 component. (From GLM_GTX_compatibility extension)
|
typedef gtc::half_float::half half1x1; //!< \brief half-precision floating-point matrix with 1 component. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tvec2<gtc::half_float::half> half2; //!< \brief half-precision floating-point vector with 2 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tmat2x2<gtc::half_float::half> half2x2; //!< \brief half-precision floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tvec3<gtc::half_float::half> half3; //!< \brief half-precision floating-point vector with 2 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tmat2x3<gtc::half_float::half> half2x3; //!< \brief half-precision floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tvec4<gtc::half_float::half> half4; //!< \brief half-precision floating-point vector with 2 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tmat2x4<gtc::half_float::half> half2x4; //!< \brief half-precision floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat3x2<gtc::half_float::half> half3x2; //!< \brief half-precision floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat3x3<gtc::half_float::half> half3x3; //!< \brief half-precision floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat3x4<gtc::half_float::half> half3x4; //!< \brief half-precision floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat4x2<gtc::half_float::half> half4x2; //!< \brief half-precision floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat4x3<gtc::half_float::half> half4x3; //!< \brief half-precision floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat4x4<gtc::half_float::half> half4x4; //!< \brief half-precision floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
|
||||||
|
|
||||||
typedef gtc::half_float::half half1x1; //!< \brief half-precision floating-point matrix with 1 component. (From GLM_GTX_compatibility extension)
|
typedef float float1; //!< \brief single-precision floating-point vector with 1 component. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tmat2x2<gtc::half_float::half> half2x2; //!< \brief half-precision floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tvec2<float> float2; //!< \brief single-precision floating-point vector with 2 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tmat2x3<gtc::half_float::half> half2x3; //!< \brief half-precision floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tvec3<float> float3; //!< \brief single-precision floating-point vector with 3 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tmat2x4<gtc::half_float::half> half2x4; //!< \brief half-precision floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tvec4<float> float4; //!< \brief single-precision floating-point vector with 4 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tmat3x2<gtc::half_float::half> half3x2; //!< \brief half-precision floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat3x3<gtc::half_float::half> half3x3; //!< \brief half-precision floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat3x4<gtc::half_float::half> half3x4; //!< \brief half-precision floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat4x2<gtc::half_float::half> half4x2; //!< \brief half-precision floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat4x3<gtc::half_float::half> half4x3; //!< \brief half-precision floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat4x4<gtc::half_float::half> half4x4; //!< \brief half-precision floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
|
|
||||||
|
|
||||||
typedef float float1; //!< \brief single-precision floating-point vector with 1 component. (From GLM_GTX_compatibility extension)
|
typedef float float1x1; //!< \brief single-precision floating-point matrix with 1 component. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tvec2<float> float2; //!< \brief single-precision floating-point vector with 2 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tmat2x2<float> float2x2; //!< \brief single-precision floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tvec3<float> float3; //!< \brief single-precision floating-point vector with 3 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tmat2x3<float> float2x3; //!< \brief single-precision floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tvec4<float> float4; //!< \brief single-precision floating-point vector with 4 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tmat2x4<float> float2x4; //!< \brief single-precision floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat3x2<float> float3x2; //!< \brief single-precision floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat3x3<float> float3x3; //!< \brief single-precision floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat3x4<float> float3x4; //!< \brief single-precision floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat4x2<float> float4x2; //!< \brief single-precision floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat4x3<float> float4x3; //!< \brief single-precision floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat4x4<float> float4x4; //!< \brief single-precision floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
|
||||||
|
|
||||||
typedef float float1x1; //!< \brief single-precision floating-point matrix with 1 component. (From GLM_GTX_compatibility extension)
|
typedef double double1; //!< \brief double-precision floating-point vector with 1 component. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tmat2x2<float> float2x2; //!< \brief single-precision floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tvec2<double> double2; //!< \brief double-precision floating-point vector with 2 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tmat2x3<float> float2x3; //!< \brief single-precision floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tvec3<double> double3; //!< \brief double-precision floating-point vector with 3 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tmat2x4<float> float2x4; //!< \brief single-precision floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tvec4<double> double4; //!< \brief double-precision floating-point vector with 4 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tmat3x2<float> float3x2; //!< \brief single-precision floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat3x3<float> float3x3; //!< \brief single-precision floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat3x4<float> float3x4; //!< \brief single-precision floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat4x2<float> float4x2; //!< \brief single-precision floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat4x3<float> float4x3; //!< \brief single-precision floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat4x4<float> float4x4; //!< \brief single-precision floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
|
|
||||||
|
|
||||||
typedef double double1; //!< \brief double-precision floating-point vector with 1 component. (From GLM_GTX_compatibility extension)
|
typedef double double1x1; //!< \brief double-precision floating-point matrix with 1 component. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tvec2<double> double2; //!< \brief double-precision floating-point vector with 2 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tmat2x2<double> double2x2; //!< \brief double-precision floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tvec3<double> double3; //!< \brief double-precision floating-point vector with 3 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tmat2x3<double> double2x3; //!< \brief double-precision floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
|
||||||
typedef detail::tvec4<double> double4; //!< \brief double-precision floating-point vector with 4 components. (From GLM_GTX_compatibility extension)
|
typedef detail::tmat2x4<double> double2x4; //!< \brief double-precision floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat3x2<double> double3x2; //!< \brief double-precision floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat3x3<double> double3x3; //!< \brief double-precision floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat3x4<double> double3x4; //!< \brief double-precision floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat4x2<double> double4x2; //!< \brief double-precision floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat4x3<double> double4x3; //!< \brief double-precision floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
|
||||||
|
typedef detail::tmat4x4<double> double4x4; //!< \brief double-precision floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
|
||||||
|
|
||||||
typedef double double1x1; //!< \brief double-precision floating-point matrix with 1 component. (From GLM_GTX_compatibility extension)
|
/// @}
|
||||||
typedef detail::tmat2x2<double> double2x2; //!< \brief double-precision floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
|
}//namespace compatibility
|
||||||
typedef detail::tmat2x3<double> double2x3; //!< \brief double-precision floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
|
}//namespace gtx
|
||||||
typedef detail::tmat2x4<double> double2x4; //!< \brief double-precision floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat3x2<double> double3x2; //!< \brief double-precision floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat3x3<double> double3x3; //!< \brief double-precision floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat3x4<double> double3x4; //!< \brief double-precision floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat4x2<double> double4x2; //!< \brief double-precision floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat4x3<double> double4x3; //!< \brief double-precision floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
|
|
||||||
typedef detail::tmat4x4<double> double4x4; //!< \brief double-precision floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
|
|
||||||
|
|
||||||
///@}
|
|
||||||
|
|
||||||
}//namespace compatibility
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "compatibility.inl"
|
#include "compatibility.inl"
|
||||||
|
@ -20,47 +20,40 @@
|
|||||||
# pragma message("GLM: GLM_GTX_component_wise extension included")
|
# pragma message("GLM: GLM_GTX_component_wise extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace component_wise ///< GLM_GTX_component_wise extension: Operations between components of a type
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_component_wise
|
||||||
void main_gtx_component_wise();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Add all vector components together.
|
||||||
//! GLM_GTX_component_wise extension: Operations between components of a type
|
//! From GLM_GTX_component_wise extension.
|
||||||
namespace component_wise
|
template <typename genType>
|
||||||
{
|
typename genType::value_type compAdd(
|
||||||
/// \addtogroup gtx_component_wise
|
genType const & v);
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Add all vector components together.
|
//! Multiply all vector components together.
|
||||||
//! From GLM_GTX_component_wise extension.
|
//! From GLM_GTX_component_wise extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
typename genType::value_type compAdd(
|
typename genType::value_type compMul(
|
||||||
genType const & v);
|
genType const & v);
|
||||||
|
|
||||||
//! Multiply all vector components together.
|
//! Find the minimum value between single vector components.
|
||||||
//! From GLM_GTX_component_wise extension.
|
//! From GLM_GTX_component_wise extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
typename genType::value_type compMul(
|
typename genType::value_type compMin(
|
||||||
genType const & v);
|
genType const & v);
|
||||||
|
|
||||||
//! Find the minimum value between single vector components.
|
//! Find the maximum value between single vector components.
|
||||||
//! From GLM_GTX_component_wise extension.
|
//! From GLM_GTX_component_wise extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
typename genType::value_type compMin(
|
typename genType::value_type compMax(
|
||||||
genType const & v);
|
genType const & v);
|
||||||
|
|
||||||
//! Find the maximum value between single vector components.
|
/// @}
|
||||||
//! From GLM_GTX_component_wise extension.
|
}//namespace component_wise
|
||||||
template <typename genType>
|
}//namespace gtx
|
||||||
typename genType::value_type compMax(
|
|
||||||
genType const & v);
|
|
||||||
|
|
||||||
///@}
|
|
||||||
|
|
||||||
}//namespace component_wise
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "component_wise.inl"
|
#include "component_wise.inl"
|
||||||
|
@ -22,39 +22,32 @@
|
|||||||
# pragma message("GLM: GLM_GTX_epsilon extension included")
|
# pragma message("GLM: GLM_GTX_epsilon extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace epsilon ///< GLM_GTX_epsilon extension: Comparison functions for a user defined epsilon values.
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_epsilon
|
||||||
void main_gtx_epsilon();
|
///@{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Returns the component-wise compare of |x - y| < epsilon.
|
||||||
//! GLM_GTX_epsilon extension: Comparison functions for a user defined epsilon values.
|
//! From GLM_GTX_epsilon extension.
|
||||||
namespace epsilon
|
template <typename genTypeT, typename genTypeU>
|
||||||
{
|
bool equalEpsilon(
|
||||||
/// \addtogroup gtx_epsilon
|
genTypeT const & x,
|
||||||
///@{
|
genTypeT const & y,
|
||||||
|
genTypeU const & epsilon);
|
||||||
//! Returns the component-wise compare of |x - y| < epsilon.
|
|
||||||
//! From GLM_GTX_epsilon extension.
|
|
||||||
template <typename genTypeT, typename genTypeU>
|
|
||||||
bool equalEpsilon(
|
|
||||||
genTypeT const & x,
|
|
||||||
genTypeT const & y,
|
|
||||||
genTypeU const & epsilon);
|
|
||||||
|
|
||||||
//! Returns the component-wise compare of |x - y| >= epsilon.
|
//! Returns the component-wise compare of |x - y| >= epsilon.
|
||||||
//! From GLM_GTX_epsilon extension.
|
//! From GLM_GTX_epsilon extension.
|
||||||
template <typename genTypeT, typename genTypeU>
|
template <typename genTypeT, typename genTypeU>
|
||||||
bool notEqualEpsilon(
|
bool notEqualEpsilon(
|
||||||
genTypeT const & x,
|
genTypeT const & x,
|
||||||
genTypeT const & y,
|
genTypeT const & y,
|
||||||
genTypeU const & epsilon);
|
genTypeU const & epsilon);
|
||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
}//namespace epsilon
|
||||||
}//namespace epsilon
|
}//namespace gtx
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "epsilon.inl"
|
#include "epsilon.inl"
|
||||||
|
@ -26,114 +26,112 @@
|
|||||||
# pragma message("GLM: GLM_GTX_euler_angles extension included")
|
# pragma message("GLM: GLM_GTX_euler_angles extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace euler_angles ///< GLM_GTX_euler_angles extension: Build matrices from Euler angles.
|
||||||
{
|
{
|
||||||
namespace gtx{
|
/// \addtogroup gtx_euler_angles
|
||||||
//! GLM_GTX_euler_angles extension: Build matrices from Euler angles.
|
/// @{
|
||||||
namespace euler_angles
|
|
||||||
{
|
|
||||||
/// \addtogroup gtx_euler_angles
|
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle X.
|
//! Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle X.
|
||||||
//! From GLM_GTX_euler_angles extension.
|
//! From GLM_GTX_euler_angles extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat4x4<valType> eulerAngleX(
|
detail::tmat4x4<valType> eulerAngleX(
|
||||||
valType const & angleX);
|
valType const & angleX);
|
||||||
|
|
||||||
//! Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Y.
|
//! Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Y.
|
||||||
//! From GLM_GTX_euler_angles extension.
|
//! From GLM_GTX_euler_angles extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat4x4<valType> eulerAngleY(
|
detail::tmat4x4<valType> eulerAngleY(
|
||||||
valType const & angleY);
|
valType const & angleY);
|
||||||
|
|
||||||
//! Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Z.
|
//! Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Z.
|
||||||
//! From GLM_GTX_euler_angles extension.
|
//! From GLM_GTX_euler_angles extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat4x4<valType> eulerAngleZ(
|
detail::tmat4x4<valType> eulerAngleZ(
|
||||||
valType const & angleZ);
|
valType const & angleZ);
|
||||||
|
|
||||||
//! Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y).
|
//! Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y).
|
||||||
//! From GLM_GTX_euler_angles extension.
|
//! From GLM_GTX_euler_angles extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat4x4<valType> eulerAngleXY(
|
detail::tmat4x4<valType> eulerAngleXY(
|
||||||
valType const & angleX,
|
valType const & angleX,
|
||||||
valType const & angleY);
|
valType const & angleY);
|
||||||
|
|
||||||
//! Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X).
|
//! Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X).
|
||||||
//! From GLM_GTX_euler_angles extension.
|
//! From GLM_GTX_euler_angles extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat4x4<valType> eulerAngleYX(
|
detail::tmat4x4<valType> eulerAngleYX(
|
||||||
valType const & angleY,
|
valType const & angleY,
|
||||||
valType const & angleX);
|
valType const & angleX);
|
||||||
|
|
||||||
//! Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z).
|
//! Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z).
|
||||||
//! From GLM_GTX_euler_angles extension.
|
//! From GLM_GTX_euler_angles extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat4x4<valType> eulerAngleXZ(
|
detail::tmat4x4<valType> eulerAngleXZ(
|
||||||
valType const & angleX,
|
valType const & angleX,
|
||||||
valType const & angleZ);
|
valType const & angleZ);
|
||||||
|
|
||||||
//! Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X).
|
//! Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X).
|
||||||
//! From GLM_GTX_euler_angles extension.
|
//! From GLM_GTX_euler_angles extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat4x4<valType> eulerAngleZX(
|
detail::tmat4x4<valType> eulerAngleZX(
|
||||||
valType const & angleZ,
|
valType const & angleZ,
|
||||||
valType const & angleX);
|
valType const & angleX);
|
||||||
|
|
||||||
//! Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z).
|
//! Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z).
|
||||||
//! From GLM_GTX_euler_angles extension.
|
//! From GLM_GTX_euler_angles extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat4x4<valType> eulerAngleYZ(
|
detail::tmat4x4<valType> eulerAngleYZ(
|
||||||
valType const & angleY,
|
valType const & angleY,
|
||||||
valType const & angleZ);
|
valType const & angleZ);
|
||||||
|
|
||||||
//! Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y).
|
//! Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y).
|
||||||
//! From GLM_GTX_euler_angles extension.
|
//! From GLM_GTX_euler_angles extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat4x4<valType> eulerAngleZY(
|
detail::tmat4x4<valType> eulerAngleZY(
|
||||||
valType const & angleZ,
|
valType const & angleZ,
|
||||||
valType const & angleY);
|
valType const & angleY);
|
||||||
|
|
||||||
//! Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
|
//! Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
|
||||||
//! From GLM_GTX_euler_angles extension.
|
//! From GLM_GTX_euler_angles extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat4x4<valType> eulerAngleYXZ(
|
detail::tmat4x4<valType> eulerAngleYXZ(
|
||||||
valType const & yaw,
|
valType const & yaw,
|
||||||
valType const & pitch,
|
valType const & pitch,
|
||||||
valType const & roll);
|
valType const & roll);
|
||||||
|
|
||||||
//! Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
|
//! Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
|
||||||
//! From GLM_GTX_euler_angles extension.
|
//! From GLM_GTX_euler_angles extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat4x4<valType> yawPitchRoll(
|
detail::tmat4x4<valType> yawPitchRoll(
|
||||||
valType const & yaw,
|
valType const & yaw,
|
||||||
valType const & pitch,
|
valType const & pitch,
|
||||||
valType const & roll);
|
valType const & roll);
|
||||||
|
|
||||||
//! Creates a 2D 2 * 2 rotation matrix from an euler angle.
|
//! Creates a 2D 2 * 2 rotation matrix from an euler angle.
|
||||||
//! From GLM_GTX_euler_angles extension.
|
//! From GLM_GTX_euler_angles extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat2x2<T> orientate2(T const & angle);
|
detail::tmat2x2<T> orientate2(T const & angle);
|
||||||
|
|
||||||
//! Creates a 2D 4 * 4 homogeneous rotation matrix from an euler angle.
|
//! Creates a 2D 4 * 4 homogeneous rotation matrix from an euler angle.
|
||||||
//! From GLM_GTX_euler_angles extension.
|
//! From GLM_GTX_euler_angles extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat3x3<T> orientate3(T const & angle);
|
detail::tmat3x3<T> orientate3(T const & angle);
|
||||||
|
|
||||||
//! Creates a 3D 3 * 3 rotation matrix from euler angles (Y * X * Z).
|
//! Creates a 3D 3 * 3 rotation matrix from euler angles (Y * X * Z).
|
||||||
//! From GLM_GTX_euler_angles extension.
|
//! From GLM_GTX_euler_angles extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat3x3<T> orientate3(detail::tvec3<T> const & angles);
|
detail::tmat3x3<T> orientate3(detail::tvec3<T> const & angles);
|
||||||
|
|
||||||
//! Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
|
//! Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
|
||||||
//! From GLM_GTX_euler_angles extension.
|
//! From GLM_GTX_euler_angles extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> orientate4(detail::tvec3<T> const & angles);
|
detail::tmat4x4<T> orientate4(detail::tvec3<T> const & angles);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
}//namespace euler_angles
|
}//namespace euler_angles
|
||||||
}//namespace gtx
|
}//namespace gtx
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "euler_angles.inl"
|
#include "euler_angles.inl"
|
||||||
|
@ -20,31 +20,24 @@
|
|||||||
# pragma message("GLM: GLM_GTX_extend extension included")
|
# pragma message("GLM: GLM_GTX_extend extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace extend ///< GLM_GTX_extend extension: Extend a position from a source to a position at a defined length.
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_extend
|
||||||
void main_gtx_extend();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Extends of Length the Origin position using the (Source - Origin) direction.
|
||||||
//! GLM_GTX_extend extension: Extend a position from a source to a position at a defined length.
|
//! From GLM_GTX_extend extension.
|
||||||
namespace extend
|
template <typename genType>
|
||||||
{
|
genType extend(
|
||||||
/// \addtogroup gtx_extend
|
genType const & Origin,
|
||||||
///@{
|
genType const & Source,
|
||||||
|
typename genType::value_type const Length);
|
||||||
|
|
||||||
//! Extends of Length the Origin position using the (Source - Origin) direction.
|
/// @}
|
||||||
//! From GLM_GTX_extend extension.
|
}//namespace extend
|
||||||
template <typename genType>
|
}//namespace gtx
|
||||||
genType extend(
|
|
||||||
genType const & Origin,
|
|
||||||
genType const & Source,
|
|
||||||
typename genType::value_type const Length);
|
|
||||||
|
|
||||||
///@}
|
|
||||||
|
|
||||||
}//namespace extend
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "extend.inl"
|
#include "extend.inl"
|
||||||
|
@ -22,157 +22,150 @@
|
|||||||
# pragma message("GLM: GLM_GTX_extented_min_max extension included")
|
# pragma message("GLM: GLM_GTX_extented_min_max extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace extented_min_max ///< GLM_GTX_extented_min_max extension: Min and max functions for 3 to 4 parameters.
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_extented_min_max
|
||||||
void main_ext_gtx_extented_min_max();
|
///@{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//< Return the minimum component-wise values of 3 inputs
|
||||||
//! GLM_GTX_extented_min_max extension: Min and max functions for 3 to 4 parameters.
|
//< From GLM_GTX_extented_min_max extension
|
||||||
namespace extented_min_max
|
template <typename T>
|
||||||
{
|
T min(
|
||||||
/// \addtogroup gtx_extented_min_max
|
T const & x,
|
||||||
///@{
|
T const & y,
|
||||||
|
T const & z);
|
||||||
|
|
||||||
//< Return the minimum component-wise values of 3 inputs
|
//< Return the minimum component-wise values of 3 inputs
|
||||||
//< From GLM_GTX_extented_min_max extension
|
//< From GLM_GTX_extented_min_max extension
|
||||||
template <typename T>
|
template
|
||||||
T min(
|
<
|
||||||
T const & x,
|
typename T,
|
||||||
T const & y,
|
template <typename> class C
|
||||||
T const & z);
|
>
|
||||||
|
C<T> min(
|
||||||
|
C<T> const & x,
|
||||||
|
typename C<T>::value_type const & y,
|
||||||
|
typename C<T>::value_type const & z);
|
||||||
|
|
||||||
//< Return the minimum component-wise values of 3 inputs
|
//< Return the minimum component-wise values of 3 inputs
|
||||||
//< From GLM_GTX_extented_min_max extension
|
//< From GLM_GTX_extented_min_max extension
|
||||||
template
|
template
|
||||||
<
|
<
|
||||||
typename T,
|
typename T,
|
||||||
template <typename> class C
|
template <typename> class C
|
||||||
>
|
>
|
||||||
C<T> min(
|
C<T> min(
|
||||||
C<T> const & x,
|
C<T> const & x,
|
||||||
typename C<T>::value_type const & y,
|
C<T> const & y,
|
||||||
typename C<T>::value_type const & z);
|
C<T> const & z);
|
||||||
|
|
||||||
//< Return the minimum component-wise values of 3 inputs
|
//< Return the minimum component-wise values of 4 inputs
|
||||||
//< From GLM_GTX_extented_min_max extension
|
//< From GLM_GTX_extented_min_max extension
|
||||||
template
|
template <typename T>
|
||||||
<
|
T min(
|
||||||
typename T,
|
T const & x,
|
||||||
template <typename> class C
|
T const & y,
|
||||||
>
|
T const & z,
|
||||||
C<T> min(
|
T const & w);
|
||||||
C<T> const & x,
|
|
||||||
C<T> const & y,
|
|
||||||
C<T> const & z);
|
|
||||||
|
|
||||||
//< Return the minimum component-wise values of 4 inputs
|
//< Return the minimum component-wise values of 4 inputs
|
||||||
//< From GLM_GTX_extented_min_max extension
|
//< From GLM_GTX_extented_min_max extension
|
||||||
template <typename T>
|
template
|
||||||
T min(
|
<
|
||||||
T const & x,
|
typename T,
|
||||||
T const & y,
|
template <typename> class C
|
||||||
T const & z,
|
>
|
||||||
T const & w);
|
C<T> min(
|
||||||
|
C<T> const & x,
|
||||||
|
typename C<T>::value_type const & y,
|
||||||
|
typename C<T>::value_type const & z,
|
||||||
|
typename C<T>::value_type const & w);
|
||||||
|
|
||||||
//< Return the minimum component-wise values of 4 inputs
|
//< Return the minimum component-wise values of 4 inputs
|
||||||
//< From GLM_GTX_extented_min_max extension
|
//< From GLM_GTX_extented_min_max extension
|
||||||
template
|
template
|
||||||
<
|
<
|
||||||
typename T,
|
typename T,
|
||||||
template <typename> class C
|
template <typename> class C
|
||||||
>
|
>
|
||||||
C<T> min(
|
C<T> min(
|
||||||
C<T> const & x,
|
C<T> const & x,
|
||||||
typename C<T>::value_type const & y,
|
C<T> const & y,
|
||||||
typename C<T>::value_type const & z,
|
C<T> const & z,
|
||||||
typename C<T>::value_type const & w);
|
C<T> const & w);
|
||||||
|
|
||||||
//< Return the minimum component-wise values of 4 inputs
|
//< Return the maximum component-wise values of 3 inputs
|
||||||
//< From GLM_GTX_extented_min_max extension
|
//< From GLM_GTX_extented_min_max extension
|
||||||
template
|
template <typename T>
|
||||||
<
|
T max(
|
||||||
typename T,
|
T const & x,
|
||||||
template <typename> class C
|
T const & y,
|
||||||
>
|
T const & z);
|
||||||
C<T> min(
|
|
||||||
C<T> const & x,
|
|
||||||
C<T> const & y,
|
|
||||||
C<T> const & z,
|
|
||||||
C<T> const & w);
|
|
||||||
|
|
||||||
//< Return the maximum component-wise values of 3 inputs
|
//< Return the maximum component-wise values of 3 inputs
|
||||||
//< From GLM_GTX_extented_min_max extension
|
//< From GLM_GTX_extented_min_max extension
|
||||||
template <typename T>
|
template
|
||||||
T max(
|
<
|
||||||
T const & x,
|
typename T,
|
||||||
T const & y,
|
template <typename> class C
|
||||||
T const & z);
|
>
|
||||||
|
C<T> max(
|
||||||
|
C<T> const & x,
|
||||||
|
typename C<T>::value_type const & y,
|
||||||
|
typename C<T>::value_type const & z);
|
||||||
|
|
||||||
//< Return the maximum component-wise values of 3 inputs
|
//< Return the maximum component-wise values of 3 inputs
|
||||||
//< From GLM_GTX_extented_min_max extension
|
//< From GLM_GTX_extented_min_max extension
|
||||||
template
|
template
|
||||||
<
|
<
|
||||||
typename T,
|
typename T,
|
||||||
template <typename> class C
|
template <typename> class C
|
||||||
>
|
>
|
||||||
C<T> max(
|
C<T> max(
|
||||||
C<T> const & x,
|
C<T> const & x,
|
||||||
typename C<T>::value_type const & y,
|
C<T> const & y,
|
||||||
typename C<T>::value_type const & z);
|
C<T> const & z);
|
||||||
|
|
||||||
//< Return the maximum component-wise values of 3 inputs
|
//< Return the maximum component-wise values of 4 inputs
|
||||||
//< From GLM_GTX_extented_min_max extension
|
//< From GLM_GTX_extented_min_max extension
|
||||||
template
|
template <typename T>
|
||||||
<
|
T max(
|
||||||
typename T,
|
T const & x,
|
||||||
template <typename> class C
|
T const & y,
|
||||||
>
|
T const & z,
|
||||||
C<T> max(
|
T const & w);
|
||||||
C<T> const & x,
|
|
||||||
C<T> const & y,
|
|
||||||
C<T> const & z);
|
|
||||||
|
|
||||||
//< Return the maximum component-wise values of 4 inputs
|
//< Return the maximum component-wise values of 4 inputs
|
||||||
//< From GLM_GTX_extented_min_max extension
|
//< From GLM_GTX_extented_min_max extension
|
||||||
template <typename T>
|
template
|
||||||
T max(
|
<
|
||||||
T const & x,
|
typename T,
|
||||||
T const & y,
|
template <typename> class C
|
||||||
T const & z,
|
>
|
||||||
T const & w);
|
C<T> max(
|
||||||
|
C<T> const & x,
|
||||||
|
typename C<T>::value_type const & y,
|
||||||
|
typename C<T>::value_type const & z,
|
||||||
|
typename C<T>::value_type const & w);
|
||||||
|
|
||||||
//< Return the maximum component-wise values of 4 inputs
|
//< Return the maximum component-wise values of 4 inputs
|
||||||
//< From GLM_GTX_extented_min_max extension
|
//< From GLM_GTX_extented_min_max extension
|
||||||
template
|
template
|
||||||
<
|
<
|
||||||
typename T,
|
typename T,
|
||||||
template <typename> class C
|
template <typename> class C
|
||||||
>
|
>
|
||||||
C<T> max(
|
C<T> max(
|
||||||
C<T> const & x,
|
C<T> const & x,
|
||||||
typename C<T>::value_type const & y,
|
C<T> const & y,
|
||||||
typename C<T>::value_type const & z,
|
C<T> const & z,
|
||||||
typename C<T>::value_type const & w);
|
C<T> const & w);
|
||||||
|
|
||||||
//< Return the maximum component-wise values of 4 inputs
|
/// @}
|
||||||
//< From GLM_GTX_extented_min_max extension
|
}//namespace extented_min_max
|
||||||
template
|
}//namespace gtx
|
||||||
<
|
|
||||||
typename T,
|
|
||||||
template <typename> class C
|
|
||||||
>
|
|
||||||
C<T> max(
|
|
||||||
C<T> const & x,
|
|
||||||
C<T> const & y,
|
|
||||||
C<T> const & z,
|
|
||||||
C<T> const & w);
|
|
||||||
|
|
||||||
///@}
|
|
||||||
|
|
||||||
}//namespace extented_min_max
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "extented_min_max.inl"
|
#include "extented_min_max.inl"
|
||||||
|
@ -22,63 +22,56 @@
|
|||||||
# pragma message("GLM: GLM_GTX_fast_exponential extension included")
|
# pragma message("GLM: GLM_GTX_fast_exponential extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace fast_exponential ///< GLM_GTX_fast_exponential extension: Fast but less accurate implementations of exponential based functions.
|
||||||
{
|
{
|
||||||
namespace test{
|
using namespace gtc::half_float;
|
||||||
void main_gtx_fast_exponential();
|
/// \addtogroup gtx_fast_exponential
|
||||||
}//namespace test
|
/// @{
|
||||||
|
|
||||||
namespace gtx{
|
//! Faster than the common pow function but less accurate.
|
||||||
//! GLM_GTX_fast_exponential extension: Fast but less accurate implementations of exponential based functions.
|
//! From GLM_GTX_fast_exponential extension.
|
||||||
namespace fast_exponential
|
template <typename valType>
|
||||||
{
|
valType fastPow(
|
||||||
using namespace gtc::half_float;
|
valType const & x,
|
||||||
/// \addtogroup gtx_fast_exponential
|
valType const & y);
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Faster than the common pow function but less accurate.
|
//! Faster than the common pow function but less accurate.
|
||||||
//! From GLM_GTX_fast_exponential extension.
|
//! From GLM_GTX_fast_exponential extension.
|
||||||
template <typename valType>
|
template <typename T, typename U>
|
||||||
valType fastPow(
|
T fastPow(
|
||||||
valType const & x,
|
const T& x,
|
||||||
valType const & y);
|
const U& y);
|
||||||
|
|
||||||
//! Faster than the common pow function but less accurate.
|
|
||||||
//! From GLM_GTX_fast_exponential extension.
|
|
||||||
template <typename T, typename U>
|
|
||||||
T fastPow(
|
|
||||||
const T& x,
|
|
||||||
const U& y);
|
|
||||||
|
|
||||||
//! Faster than the common exp function but less accurate.
|
//! Faster than the common exp function but less accurate.
|
||||||
//! From GLM_GTX_fast_exponential extension.
|
//! From GLM_GTX_fast_exponential extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T fastExp(const T& x);
|
T fastExp(const T& x);
|
||||||
|
|
||||||
//! Faster than the common log function but less accurate.
|
//! Faster than the common log function but less accurate.
|
||||||
//! From GLM_GTX_fast_exponential extension.
|
//! From GLM_GTX_fast_exponential extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T fastLog(const T& x);
|
T fastLog(const T& x);
|
||||||
|
|
||||||
//! Faster than the common exp2 function but less accurate.
|
//! Faster than the common exp2 function but less accurate.
|
||||||
//! From GLM_GTX_fast_exponential extension.
|
//! From GLM_GTX_fast_exponential extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T fastExp2(const T& x);
|
T fastExp2(const T& x);
|
||||||
|
|
||||||
//! Faster than the common log2 function but less accurate.
|
//! Faster than the common log2 function but less accurate.
|
||||||
//! From GLM_GTX_fast_exponential extension.
|
//! From GLM_GTX_fast_exponential extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T fastLog2(const T& x);
|
T fastLog2(const T& x);
|
||||||
|
|
||||||
//! Faster than the common ln function but less accurate.
|
//! Faster than the common ln function but less accurate.
|
||||||
//! From GLM_GTX_fast_exponential extension.
|
//! From GLM_GTX_fast_exponential extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T fastLn(const T& x);
|
T fastLn(const T& x);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}//namespace fast_exponential
|
||||||
}//namespace fast_exponential
|
}//namespace gtx
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "fast_exponential.inl"
|
#include "fast_exponential.inl"
|
||||||
|
@ -24,49 +24,42 @@
|
|||||||
# pragma message("GLM: GLM_GTX_fast_square_root extension included")
|
# pragma message("GLM: GLM_GTX_fast_square_root extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace fast_square_root ///< GLM_GTX_fast_square_root extension: Fast but less accurate implementations of square root based functions.
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_fast_square_root
|
||||||
void main_gtx_fast_square_root();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Faster than the common sqrt function but less accurate.
|
||||||
//! GLM_GTX_fast_square_root extension: Fast but less accurate implementations of square root based functions.
|
//! From GLM_GTX_fast_square_root extension.
|
||||||
namespace fast_square_root
|
template <typename genType>
|
||||||
{
|
genType fastSqrt(genType const & x);
|
||||||
/// \addtogroup gtx_fast_square_root
|
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Faster than the common sqrt function but less accurate.
|
//! Faster than the common inversesqrt function but less accurate.
|
||||||
//! From GLM_GTX_fast_square_root extension.
|
//! From GLM_GTX_fast_square_root extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType fastSqrt(genType const & x);
|
genType fastInverseSqrt(genType const & x);
|
||||||
|
|
||||||
//! Faster than the common inversesqrt function but less accurate.
|
|
||||||
//! From GLM_GTX_fast_square_root extension.
|
|
||||||
template <typename genType>
|
|
||||||
genType fastInverseSqrt(genType const & x);
|
|
||||||
|
|
||||||
//! Faster than the common length function but less accurate.
|
//! Faster than the common length function but less accurate.
|
||||||
//! From GLM_GTX_fast_square_root extension.
|
//! From GLM_GTX_fast_square_root extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
typename genType::value_type fastLength(genType const & x);
|
typename genType::value_type fastLength(genType const & x);
|
||||||
|
|
||||||
//! Faster than the common distance function but less accurate.
|
//! Faster than the common distance function but less accurate.
|
||||||
//! From GLM_GTX_fast_square_root extension.
|
//! From GLM_GTX_fast_square_root extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
typename genType::value_type fastDistance(genType const & x, genType const & y);
|
typename genType::value_type fastDistance(genType const & x, genType const & y);
|
||||||
|
|
||||||
//! Faster than the common normalize function but less accurate.
|
//! Faster than the common normalize function but less accurate.
|
||||||
//! From GLM_GTX_fast_square_root extension.
|
//! From GLM_GTX_fast_square_root extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType fastNormalize(genType const & x);
|
genType fastNormalize(genType const & x);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}// namespace fast_square_root
|
||||||
}//namespace fast_square_root
|
}// namespace gtx
|
||||||
}// namespace gtx
|
}// namespace glm
|
||||||
}//namespace glm
|
|
||||||
|
|
||||||
#include "fast_square_root.inl"
|
#include "fast_square_root.inl"
|
||||||
|
|
||||||
|
@ -20,65 +20,58 @@
|
|||||||
# pragma message("GLM: GLM_GTX_fast_trigonometry extension included")
|
# pragma message("GLM: GLM_GTX_fast_trigonometry extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace fast_trigonometry ///< GLM_GTX_fast_trigonometry extension: Fast but less accurate implementations of trigonometric functions.
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_fast_trigonometry
|
||||||
void main_gtx_fast_trigonometry();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Faster than the common sin function but less accurate.
|
||||||
//! GLM_GTX_fast_trigonometry extension: Fast but less accurate implementations of trigonometric functions.
|
//! Defined between -2pi and 2pi.
|
||||||
namespace fast_trigonometry
|
//! From GLM_GTX_fast_trigonometry extension.
|
||||||
{
|
template <typename T>
|
||||||
/// \addtogroup gtx_fast_trigonometry
|
T fastSin(const T& angle);
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Faster than the common sin function but less accurate.
|
//! Faster than the common cos function but less accurate.
|
||||||
//! Defined between -2pi and 2pi.
|
//! Defined between -2pi and 2pi.
|
||||||
//! From GLM_GTX_fast_trigonometry extension.
|
//! From GLM_GTX_fast_trigonometry extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T fastSin(const T& angle);
|
T fastCos(const T& angle);
|
||||||
|
|
||||||
//! Faster than the common cos function but less accurate.
|
//! Faster than the common tan function but less accurate.
|
||||||
//! Defined between -2pi and 2pi.
|
//! Defined between -2pi and 2pi.
|
||||||
//! From GLM_GTX_fast_trigonometry extension.
|
//! From GLM_GTX_fast_trigonometry extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T fastCos(const T& angle);
|
T fastTan(const T& angle);
|
||||||
|
|
||||||
//! Faster than the common tan function but less accurate.
|
//! Faster than the common asin function but less accurate.
|
||||||
//! Defined between -2pi and 2pi.
|
//! Defined between -2pi and 2pi.
|
||||||
//! From GLM_GTX_fast_trigonometry extension.
|
//! From GLM_GTX_fast_trigonometry extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T fastTan(const T& angle);
|
T fastAsin(const T& angle);
|
||||||
|
|
||||||
//! Faster than the common asin function but less accurate.
|
//! Faster than the common acos function but less accurate.
|
||||||
//! Defined between -2pi and 2pi.
|
//! Defined between -2pi and 2pi.
|
||||||
//! From GLM_GTX_fast_trigonometry extension.
|
//! From GLM_GTX_fast_trigonometry extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T fastAsin(const T& angle);
|
T fastAcos(const T& angle);
|
||||||
|
|
||||||
//! Faster than the common acos function but less accurate.
|
//! Faster than the common atan function but less accurate.
|
||||||
//! Defined between -2pi and 2pi.
|
//! Defined between -2pi and 2pi.
|
||||||
//! From GLM_GTX_fast_trigonometry extension.
|
//! From GLM_GTX_fast_trigonometry extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T fastAcos(const T& angle);
|
T fastAtan(const T& y, const T& x);
|
||||||
|
|
||||||
//! Faster than the common atan function but less accurate.
|
//! Faster than the common atan function but less accurate.
|
||||||
//! Defined between -2pi and 2pi.
|
//! Defined between -2pi and 2pi.
|
||||||
//! From GLM_GTX_fast_trigonometry extension.
|
//! From GLM_GTX_fast_trigonometry extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T fastAtan(const T& y, const T& x);
|
T fastAtan(const T& angle);
|
||||||
|
|
||||||
//! Faster than the common atan function but less accurate.
|
/// @}
|
||||||
//! Defined between -2pi and 2pi.
|
}//namespace fast_trigonometry
|
||||||
//! From GLM_GTX_fast_trigonometry extension.
|
}//namespace gtx
|
||||||
template <typename T>
|
|
||||||
T fastAtan(const T& angle);
|
|
||||||
|
|
||||||
///@}
|
|
||||||
|
|
||||||
}//namespace fast_trigonometry
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "fast_trigonometry.inl"
|
#include "fast_trigonometry.inl"
|
||||||
|
@ -21,34 +21,32 @@
|
|||||||
# pragma message("GLM: GLM_GTX_gradient_paint extension included")
|
# pragma message("GLM: GLM_GTX_gradient_paint extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace gradient_paint ///< GLM_GTX_gradient_paint extension: Compute a radient gradient according section OpenVG 1.1 specifications, 9.3.2 Radial Gradients
|
||||||
{
|
{
|
||||||
namespace test{
|
using namespace gtx::optimum_pow;
|
||||||
void main_gtx_gradient_paint();
|
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
/// \addtogroup gtx_gradient_paint
|
||||||
//! GLM_GTX_gradient_paint extension: Compute a radient gradient according section OpenVG 1.1 specifications, 9.3.2 Radial Gradients
|
/// @{
|
||||||
namespace gradient_paint
|
|
||||||
{
|
|
||||||
using namespace gtx::optimum_pow;
|
|
||||||
|
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
valType radialGradient(
|
valType radialGradient(
|
||||||
glm::detail::tvec2<valType> const & Center,
|
glm::detail::tvec2<valType> const & Center,
|
||||||
valType const & Radius,
|
valType const & Radius,
|
||||||
glm::detail::tvec2<valType> const & Focal,
|
glm::detail::tvec2<valType> const & Focal,
|
||||||
glm::detail::tvec2<valType> const & Position);
|
glm::detail::tvec2<valType> const & Position);
|
||||||
|
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
valType linearGradient(
|
valType linearGradient(
|
||||||
glm::detail::tvec2<valType> const & Point0,
|
glm::detail::tvec2<valType> const & Point0,
|
||||||
glm::detail::tvec2<valType> const & Point1,
|
glm::detail::tvec2<valType> const & Point1,
|
||||||
glm::detail::tvec2<valType> const & Position);
|
glm::detail::tvec2<valType> const & Position);
|
||||||
|
|
||||||
}//namespace gradient_paint
|
/// @}
|
||||||
}//namespace gtx
|
}// namespace gradient_paint
|
||||||
}//namespace glm
|
}// namespace gtx
|
||||||
|
}// namespace glm
|
||||||
|
|
||||||
#include "gradient_paint.inl"
|
#include "gradient_paint.inl"
|
||||||
|
|
||||||
|
@ -20,36 +20,33 @@
|
|||||||
# pragma message("GLM: GLM_GTX_handed_coordinate_space extension included")
|
# pragma message("GLM: GLM_GTX_handed_coordinate_space extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace handed_coordinate_space ///< GLM_GTX_handed_coordinate_space extension: To know if a set of three basis vectors defines a right or left-handed coordinate system.
|
||||||
{
|
{
|
||||||
namespace gtx{
|
/// \addtogroup gtx_handed_coordinate_space
|
||||||
//! GLM_GTX_handed_coordinate_space extension: To know if a set of three basis vectors defines a right or left-handed coordinate system.
|
/// @{
|
||||||
namespace handed_coordinate_space
|
|
||||||
{
|
|
||||||
/// \addtogroup gtx_handed_coordinate_space
|
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Return if a trihedron right handed or not.
|
//! Return if a trihedron right handed or not.
|
||||||
//! From GLM_GTX_handed_coordinate_space extension.
|
//! From GLM_GTX_handed_coordinate_space extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
bool rightHanded(
|
bool rightHanded(
|
||||||
detail::tvec3<T> const & tangent,
|
detail::tvec3<T> const & tangent,
|
||||||
detail::tvec3<T> const & binormal,
|
detail::tvec3<T> const & binormal,
|
||||||
detail::tvec3<T> const & normal);
|
detail::tvec3<T> const & normal);
|
||||||
|
|
||||||
//! Return if a trihedron left handed or not.
|
//! Return if a trihedron left handed or not.
|
||||||
//! From GLM_GTX_handed_coordinate_space extension.
|
//! From GLM_GTX_handed_coordinate_space extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
bool leftHanded(
|
bool leftHanded(
|
||||||
detail::tvec3<T> const & tangent,
|
detail::tvec3<T> const & tangent,
|
||||||
detail::tvec3<T> const & binormal,
|
detail::tvec3<T> const & binormal,
|
||||||
detail::tvec3<T> const & normal);
|
detail::tvec3<T> const & normal);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}// namespace handed_coordinate_space
|
||||||
}//namespace handed_coordinate_space
|
}// namespace gtx
|
||||||
}//namespace gtx
|
}// namespace glm
|
||||||
}//namespace glm
|
|
||||||
|
|
||||||
#include "handed_coordinate_space.inl"
|
#include "handed_coordinate_space.inl"
|
||||||
|
|
||||||
|
@ -20,76 +20,73 @@
|
|||||||
# pragma message("GLM: GLM_GTX_inertia extension included")
|
# pragma message("GLM: GLM_GTX_inertia extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace inertia ///< GLM_GTX_inertia extension: Create inertia matrices
|
||||||
{
|
{
|
||||||
namespace gtx{
|
/// \addtogroup gtx_inertia
|
||||||
//! GLM_GTX_inertia extension: Create inertia matrices
|
/// @{
|
||||||
namespace inertia
|
|
||||||
{
|
|
||||||
/// \addtogroup gtx_inertia
|
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Build an inertia matrix for a box.
|
//! Build an inertia matrix for a box.
|
||||||
//! From GLM_GTX_inertia extension.
|
//! From GLM_GTX_inertia extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat3x3<T> boxInertia3(
|
detail::tmat3x3<T> boxInertia3(
|
||||||
const T Mass,
|
const T Mass,
|
||||||
const detail::tvec3<T>& Scale);
|
const detail::tvec3<T>& Scale);
|
||||||
|
|
||||||
//! Build an inertia matrix for a box.
|
//! Build an inertia matrix for a box.
|
||||||
//! From GLM_GTX_inertia extension.
|
//! From GLM_GTX_inertia extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> boxInertia4(
|
detail::tmat4x4<T> boxInertia4(
|
||||||
const T Mass,
|
const T Mass,
|
||||||
const detail::tvec3<T>& Scale);
|
const detail::tvec3<T>& Scale);
|
||||||
|
|
||||||
//! Build an inertia matrix for a disk.
|
//! Build an inertia matrix for a disk.
|
||||||
//! From GLM_GTX_inertia extension.
|
//! From GLM_GTX_inertia extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat3x3<T> diskInertia3(
|
detail::tmat3x3<T> diskInertia3(
|
||||||
const T Mass,
|
const T Mass,
|
||||||
const T Radius);
|
const T Radius);
|
||||||
|
|
||||||
//! Build an inertia matrix for a disk.
|
//! Build an inertia matrix for a disk.
|
||||||
//! From GLM_GTX_inertia extension.
|
//! From GLM_GTX_inertia extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> diskInertia4(
|
detail::tmat4x4<T> diskInertia4(
|
||||||
const T Mass,
|
const T Mass,
|
||||||
const T Radius);
|
const T Radius);
|
||||||
|
|
||||||
//! Build an inertia matrix for a ball.
|
//! Build an inertia matrix for a ball.
|
||||||
//! From GLM_GTX_inertia extension.
|
//! From GLM_GTX_inertia extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat3x3<T> ballInertia3(
|
detail::tmat3x3<T> ballInertia3(
|
||||||
const T Mass,
|
const T Mass,
|
||||||
const T Radius);
|
const T Radius);
|
||||||
|
|
||||||
//! Build an inertia matrix for a ball.
|
//! Build an inertia matrix for a ball.
|
||||||
//! From GLM_GTX_inertia extension.
|
//! From GLM_GTX_inertia extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> ballInertia4(
|
detail::tmat4x4<T> ballInertia4(
|
||||||
const T Mass,
|
const T Mass,
|
||||||
const T Radius);
|
const T Radius);
|
||||||
|
|
||||||
//! Build an inertia matrix for a sphere.
|
//! Build an inertia matrix for a sphere.
|
||||||
//! From GLM_GTX_inertia extension.
|
//! From GLM_GTX_inertia extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat3x3<T> sphereInertia3(
|
detail::tmat3x3<T> sphereInertia3(
|
||||||
const T Mass,
|
const T Mass,
|
||||||
const T Radius);
|
const T Radius);
|
||||||
|
|
||||||
//! Build an inertia matrix for a sphere.
|
//! Build an inertia matrix for a sphere.
|
||||||
//! From GLM_GTX_inertia extension.
|
//! From GLM_GTX_inertia extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> sphereInertia4(
|
detail::tmat4x4<T> sphereInertia4(
|
||||||
const T Mass,
|
const T Mass,
|
||||||
const T Radius);
|
const T Radius);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}// namespace inertia
|
||||||
}//namespace inertia
|
}// namespace gtx
|
||||||
}//namespace gtx
|
}// namespace glm
|
||||||
}//namespace glm
|
|
||||||
|
|
||||||
#include "inertia.inl"
|
#include "inertia.inl"
|
||||||
|
|
||||||
|
@ -21,25 +21,23 @@
|
|||||||
# pragma message("GLM: GLM_GTX_int_10_10_10_2 extension included")
|
# pragma message("GLM: GLM_GTX_int_10_10_10_2 extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace int_10_10_10_2 ///< GLM_GTX_int_10_10_10_2 extension: Add support for integer for core functions
|
||||||
{
|
{
|
||||||
namespace gtx{
|
using namespace gtx::raw_data;
|
||||||
//! GLM_GTX_int_10_10_10_2 extension: Add support for integer for core functions
|
|
||||||
namespace int_10_10_10_2
|
|
||||||
{
|
|
||||||
using namespace gtx::raw_data;
|
|
||||||
|
|
||||||
/// \addtogroup gtx_int_10_10_10_2
|
/// \addtogroup gtx_int_10_10_10_2
|
||||||
///@{
|
///@{
|
||||||
|
|
||||||
//! From GLM_GTX_int_10_10_10_2 extension.
|
//! From GLM_GTX_int_10_10_10_2 extension.
|
||||||
//! Cast a vec4 to an u_10_10_10_2.
|
//! Cast a vec4 to an u_10_10_10_2.
|
||||||
dword uint10_10_10_2_cast(glm::vec4 const & v);
|
dword uint10_10_10_2_cast(glm::vec4 const & v);
|
||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
}//namespace integer
|
}//namespace integer
|
||||||
}//namespace gtx
|
}//namespace gtx
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "int_10_10_10_2.inl"
|
#include "int_10_10_10_2.inl"
|
||||||
|
@ -20,36 +20,33 @@
|
|||||||
# pragma message("GLM: GLM_GTX_integer extension included")
|
# pragma message("GLM: GLM_GTX_integer extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace integer ///< GLM_GTX_integer extension: Add support for integer for core functions
|
||||||
{
|
{
|
||||||
namespace gtx{
|
/// \addtogroup gtx_integer
|
||||||
//! GLM_GTX_integer extension: Add support for integer for core functions
|
/// @{
|
||||||
namespace integer
|
|
||||||
{
|
|
||||||
/// \addtogroup gtx_integer
|
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Returns x raised to the y power.
|
//! Returns x raised to the y power.
|
||||||
//! From GLM_GTX_integer extension.
|
//! From GLM_GTX_integer extension.
|
||||||
int pow(int x, int y);
|
int pow(int x, int y);
|
||||||
|
|
||||||
//! Returns the positive square root of x.
|
//! Returns the positive square root of x.
|
||||||
//! From GLM_GTX_integer extension.
|
//! From GLM_GTX_integer extension.
|
||||||
int sqrt(int x);
|
int sqrt(int x);
|
||||||
|
|
||||||
//! Modulus. Returns x - y * floor(x / y) for each component in x using the floating point value y.
|
//! Modulus. Returns x - y * floor(x / y) for each component in x using the floating point value y.
|
||||||
//! From GLM_GTX_integer extension.
|
//! From GLM_GTX_integer extension.
|
||||||
int mod(int x, int y);
|
int mod(int x, int y);
|
||||||
|
|
||||||
//! Return the factorial value of a number (!12 max, integer only)
|
//! Return the factorial value of a number (!12 max, integer only)
|
||||||
//! From GLM_GTX_integer extension.
|
//! From GLM_GTX_integer extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType factorial(genType const & x);
|
genType factorial(genType const & x);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}//namespace integer
|
||||||
}//namespace integer
|
}//namespace gtx
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "integer.inl"
|
#include "integer.inl"
|
||||||
|
@ -22,54 +22,47 @@
|
|||||||
# pragma message("GLM: GLM_GTX_closest_point extension included")
|
# pragma message("GLM: GLM_GTX_closest_point extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace intersect ///< GLM_GTX_intersect extension: Add intersection functions
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_intersect
|
||||||
void main_gtx_intesect();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Compute the intersection of a ray and a triangle.
|
||||||
//! GLM_GTX_intersect extension: Add intersection functions
|
//! From GLM_GTX_intersect extension.
|
||||||
namespace intersect
|
template <typename genType>
|
||||||
{
|
bool intersectRayTriangle(
|
||||||
/// \addtogroup gtx_intersect
|
genType const & orig, genType const & dir,
|
||||||
///@{
|
genType const & vert0, genType const & vert1, genType const & vert2,
|
||||||
|
genType & baryPosition);
|
||||||
|
|
||||||
//! Compute the intersection of a ray and a triangle.
|
//! Compute the intersection of a line and a triangle.
|
||||||
//! From GLM_GTX_intersect extension.
|
//! From GLM_GTX_intersect extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
bool intersectRayTriangle(
|
bool intersectLineTriangle(
|
||||||
genType const & orig, genType const & dir,
|
genType const & orig, genType const & dir,
|
||||||
genType const & vert0, genType const & vert1, genType const & vert2,
|
genType const & vert0, genType const & vert1, genType const & vert2,
|
||||||
genType & baryPosition);
|
genType & position);
|
||||||
|
|
||||||
//! Compute the intersection of a line and a triangle.
|
//! Compute the intersection of a ray and a sphere.
|
||||||
//! From GLM_GTX_intersect extension.
|
//! From GLM_GTX_intersect extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
bool intersectLineTriangle(
|
bool intersectRaySphere(
|
||||||
genType const & orig, genType const & dir,
|
genType const & orig, genType const & dir,
|
||||||
genType const & vert0, genType const & vert1, genType const & vert2,
|
genType const & center, typename genType::value_type radius,
|
||||||
genType & position);
|
genType & position, genType & normal);
|
||||||
|
|
||||||
//! Compute the intersection of a ray and a sphere.
|
//! Compute the intersection of a line and a sphere.
|
||||||
//! From GLM_GTX_intersect extension.
|
//! From GLM_GTX_intersect extension
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
bool intersectRaySphere(
|
bool intersectLineSphere(
|
||||||
genType const & orig, genType const & dir,
|
genType const & point0, genType const & point1,
|
||||||
genType const & center, typename genType::value_type radius,
|
genType const & center, typename genType::value_type radius,
|
||||||
genType & position, genType & normal);
|
genType & position, genType & normal);
|
||||||
|
|
||||||
//! Compute the intersection of a line and a sphere.
|
/// @}
|
||||||
//! From GLM_GTX_intersect extension
|
}//namespace intersect
|
||||||
template <typename genType>
|
|
||||||
bool intersectLineSphere(
|
|
||||||
genType const & point0, genType const & point1,
|
|
||||||
genType const & center, typename genType::value_type radius,
|
|
||||||
genType & position, genType & normal);
|
|
||||||
|
|
||||||
///@}
|
|
||||||
|
|
||||||
}//namespace intersect
|
|
||||||
}//namespace gtx
|
}//namespace gtx
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
|
@ -20,30 +20,24 @@
|
|||||||
# pragma message("GLM: GLM_GTX_log_base extension included")
|
# pragma message("GLM: GLM_GTX_log_base extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace log_base ///< GLM_GTX_log_base extension: Logarithm for any base. base can be a vector or a scalar.
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_log_base
|
||||||
void main_ext_gtx_log_base();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Logarithm for any base.
|
||||||
//! GLM_GTX_log_base extension: Logarithm for any base. base can be a vector or a scalar.
|
//! From GLM_GTX_log_base.
|
||||||
namespace log_base
|
template <typename genType>
|
||||||
{
|
genType log(
|
||||||
/// \addtogroup gtx_log_base
|
genType const & x,
|
||||||
///@{
|
genType const & base);
|
||||||
|
|
||||||
//! Logarithm for any base.
|
/// @}
|
||||||
//! From GLM_GTX_log_base.
|
|
||||||
template <typename genType>
|
|
||||||
genType log(
|
|
||||||
genType const & x,
|
|
||||||
genType const & base);
|
|
||||||
|
|
||||||
///@}
|
}//namespace extend
|
||||||
|
}//namespace gtx
|
||||||
}//namespace extend
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "log_base.inl"
|
#include "log_base.inl"
|
||||||
|
@ -20,35 +20,28 @@
|
|||||||
# pragma message("GLM: GLM_GTX_matrix_cross_product extension included")
|
# pragma message("GLM: GLM_GTX_matrix_cross_product extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace matrix_cross_product ///< GLM_GTX_matrix_cross_product: Build cross product matrices
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_matrix_cross_product
|
||||||
void main_gtx_matrix_cross_product();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Build a cross product matrix.
|
||||||
//! GLM_GTX_matrix_cross_product: Build cross product matrices
|
//! From GLM_GTX_matrix_cross_product extension.
|
||||||
namespace matrix_cross_product
|
template <typename T>
|
||||||
{
|
detail::tmat3x3<T> matrixCross3(
|
||||||
/// \addtogroup gtx_matrix_cross_product
|
detail::tvec3<T> const & x);
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Build a cross product matrix.
|
|
||||||
//! From GLM_GTX_matrix_cross_product extension.
|
|
||||||
template <typename T>
|
|
||||||
detail::tmat3x3<T> matrixCross3(
|
|
||||||
detail::tvec3<T> const & x);
|
|
||||||
|
|
||||||
//! Build a cross product matrix.
|
//! Build a cross product matrix.
|
||||||
//! From GLM_GTX_matrix_cross_product extension.
|
//! From GLM_GTX_matrix_cross_product extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> matrixCross4(
|
detail::tmat4x4<T> matrixCross4(
|
||||||
detail::tvec3<T> const & x);
|
detail::tvec3<T> const & x);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}//namespace matrix_cross_product
|
||||||
}//namespace matrix_cross_product
|
}//namespace gtx
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "matrix_cross_product.inl"
|
#include "matrix_cross_product.inl"
|
||||||
|
@ -23,47 +23,40 @@
|
|||||||
# pragma message("GLM: GLM_GTX_matrix_interpolation extension included")
|
# pragma message("GLM: GLM_GTX_matrix_interpolation extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace matrix_interpolation ///< GLM_GTX_matrix_interpolation extension: Add transformation matrices
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_matrix_interpolation
|
||||||
void main_gtx_transform();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Get the axis and angle of the rotation from a matrix.
|
||||||
//! GLM_GTX_matrix_interpolation extension: Add transformation matrices
|
//! From GLM_GTX_matrix_interpolation extension.
|
||||||
namespace matrix_interpolation
|
template <typename T>
|
||||||
{
|
void axisAngle(
|
||||||
/// \addtogroup gtx_matrix_interpolation
|
detail::tmat4x4<T> const & mat,
|
||||||
///@{
|
detail::tvec3<T> & axis,
|
||||||
|
T & angle);
|
||||||
|
|
||||||
//! Get the axis and angle of the rotation from a matrix.
|
//! Build a matrix from axis and angle.
|
||||||
//! From GLM_GTX_matrix_interpolation extension.
|
//! From GLM_GTX_matrix_interpolation extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void axisAngle(
|
detail::tmat4x4<T> axisAngleMatrix(
|
||||||
detail::tmat4x4<T> const & mat,
|
detail::tvec3<T> const & axis,
|
||||||
detail::tvec3<T> & axis,
|
T const angle);
|
||||||
T & angle);
|
|
||||||
|
|
||||||
//! Build a matrix from axis and angle.
|
//! Build a interpolation of 4 * 4 matrixes.
|
||||||
//! From GLM_GTX_matrix_interpolation extension.
|
//! From GLM_GTX_matrix_interpolation extension.
|
||||||
template <typename T>
|
//! Warning! works only with rotation and/or translation matrixes, scale will generate unexpected results.
|
||||||
detail::tmat4x4<T> axisAngleMatrix(
|
template <typename T>
|
||||||
detail::tvec3<T> const & axis,
|
detail::tmat4x4<T> interpolate(
|
||||||
T const angle);
|
detail::tmat4x4<T> const & m1,
|
||||||
|
detail::tmat4x4<T> const & m2,
|
||||||
|
T const delta);
|
||||||
|
|
||||||
//! Build a interpolation of 4 * 4 matrixes.
|
/// @}
|
||||||
//! From GLM_GTX_matrix_interpolation extension.
|
}//namespace matrix_interpolation
|
||||||
//! Warning! works only with rotation and/or translation matrixes, scale will generate unexpected results.
|
}//namespace gtx
|
||||||
template <typename T>
|
|
||||||
detail::tmat4x4<T> interpolate(
|
|
||||||
detail::tmat4x4<T> const & m1,
|
|
||||||
detail::tmat4x4<T> const & m2,
|
|
||||||
T const delta);
|
|
||||||
|
|
||||||
///@}
|
|
||||||
|
|
||||||
}//namespace matrix_interpolation
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "matrix_interpolation.inl"
|
#include "matrix_interpolation.inl"
|
||||||
|
@ -20,103 +20,100 @@
|
|||||||
# pragma message("GLM: GLM_GTX_matrix_major_storage extension included")
|
# pragma message("GLM: GLM_GTX_matrix_major_storage extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace matrix_major_storage ///< GLM_GTX_matrix_major_storage: Build matrices with specific matrix order, row or column
|
||||||
{
|
{
|
||||||
namespace gtx{
|
/// \addtogroup gtx_matrix_major_storage
|
||||||
//! GLM_GTX_matrix_major_storage: Build matrices with specific matrix order, row or column
|
/// @{
|
||||||
namespace matrix_major_storage
|
|
||||||
{
|
|
||||||
/// \addtogroup gtx_matrix_major_storage
|
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Build a row major matrix from row vectors.
|
//! Build a row major matrix from row vectors.
|
||||||
//! From GLM_GTX_matrix_major_storage extension.
|
//! From GLM_GTX_matrix_major_storage extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat2x2<T> rowMajor2(
|
detail::tmat2x2<T> rowMajor2(
|
||||||
const detail::tvec2<T>& v1,
|
const detail::tvec2<T>& v1,
|
||||||
const detail::tvec2<T>& v2);
|
const detail::tvec2<T>& v2);
|
||||||
|
|
||||||
//! Build a row major matrix from other matrix.
|
//! Build a row major matrix from other matrix.
|
||||||
//! From GLM_GTX_matrix_major_storage extension.
|
//! From GLM_GTX_matrix_major_storage extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat2x2<T> rowMajor2(
|
detail::tmat2x2<T> rowMajor2(
|
||||||
const detail::tmat2x2<T>& m);
|
const detail::tmat2x2<T>& m);
|
||||||
|
|
||||||
//! Build a row major matrix from row vectors.
|
//! Build a row major matrix from row vectors.
|
||||||
//! From GLM_GTX_matrix_major_storage extension.
|
//! From GLM_GTX_matrix_major_storage extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat3x3<T> rowMajor3(
|
detail::tmat3x3<T> rowMajor3(
|
||||||
const detail::tvec3<T>& v1,
|
const detail::tvec3<T>& v1,
|
||||||
const detail::tvec3<T>& v2,
|
const detail::tvec3<T>& v2,
|
||||||
const detail::tvec3<T>& v3);
|
const detail::tvec3<T>& v3);
|
||||||
|
|
||||||
//! Build a row major matrix from other matrix.
|
//! Build a row major matrix from other matrix.
|
||||||
//! From GLM_GTX_matrix_major_storage extension.
|
//! From GLM_GTX_matrix_major_storage extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat3x3<T> rowMajor3(
|
detail::tmat3x3<T> rowMajor3(
|
||||||
const detail::tmat3x3<T>& m);
|
const detail::tmat3x3<T>& m);
|
||||||
|
|
||||||
//! Build a row major matrix from row vectors.
|
//! Build a row major matrix from row vectors.
|
||||||
//! From GLM_GTX_matrix_major_storage extension.
|
//! From GLM_GTX_matrix_major_storage extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> rowMajor4(
|
detail::tmat4x4<T> rowMajor4(
|
||||||
const detail::tvec4<T>& v1,
|
const detail::tvec4<T>& v1,
|
||||||
const detail::tvec4<T>& v2,
|
const detail::tvec4<T>& v2,
|
||||||
const detail::tvec4<T>& v3,
|
const detail::tvec4<T>& v3,
|
||||||
const detail::tvec4<T>& v4);
|
const detail::tvec4<T>& v4);
|
||||||
|
|
||||||
//! Build a row major matrix from other matrix.
|
//! Build a row major matrix from other matrix.
|
||||||
//! From GLM_GTX_matrix_major_storage extension.
|
//! From GLM_GTX_matrix_major_storage extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> rowMajor4(
|
detail::tmat4x4<T> rowMajor4(
|
||||||
const detail::tmat4x4<T>& m);
|
const detail::tmat4x4<T>& m);
|
||||||
|
|
||||||
//! Build a column major matrix from column vectors.
|
//! Build a column major matrix from column vectors.
|
||||||
//! From GLM_GTX_matrix_major_storage extension.
|
//! From GLM_GTX_matrix_major_storage extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat2x2<T> colMajor2(
|
detail::tmat2x2<T> colMajor2(
|
||||||
const detail::tvec2<T>& v1,
|
const detail::tvec2<T>& v1,
|
||||||
const detail::tvec2<T>& v2);
|
const detail::tvec2<T>& v2);
|
||||||
|
|
||||||
//! Build a column major matrix from other matrix.
|
//! Build a column major matrix from other matrix.
|
||||||
//! From GLM_GTX_matrix_major_storage extension.
|
//! From GLM_GTX_matrix_major_storage extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat2x2<T> colMajor2(
|
detail::tmat2x2<T> colMajor2(
|
||||||
const detail::tmat2x2<T>& m);
|
const detail::tmat2x2<T>& m);
|
||||||
|
|
||||||
//! Build a column major matrix from column vectors.
|
//! Build a column major matrix from column vectors.
|
||||||
//! From GLM_GTX_matrix_major_storage extension.
|
//! From GLM_GTX_matrix_major_storage extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat3x3<T> colMajor3(
|
detail::tmat3x3<T> colMajor3(
|
||||||
const detail::tvec3<T>& v1,
|
const detail::tvec3<T>& v1,
|
||||||
const detail::tvec3<T>& v2,
|
const detail::tvec3<T>& v2,
|
||||||
const detail::tvec3<T>& v3);
|
const detail::tvec3<T>& v3);
|
||||||
|
|
||||||
//! Build a column major matrix from other matrix.
|
//! Build a column major matrix from other matrix.
|
||||||
//! From GLM_GTX_matrix_major_storage extension.
|
//! From GLM_GTX_matrix_major_storage extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat3x3<T> colMajor3(
|
detail::tmat3x3<T> colMajor3(
|
||||||
const detail::tmat3x3<T>& m);
|
const detail::tmat3x3<T>& m);
|
||||||
|
|
||||||
//! Build a column major matrix from column vectors.
|
//! Build a column major matrix from column vectors.
|
||||||
//! From GLM_GTX_matrix_major_storage extension.
|
//! From GLM_GTX_matrix_major_storage extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> colMajor4(
|
detail::tmat4x4<T> colMajor4(
|
||||||
const detail::tvec4<T>& v1,
|
const detail::tvec4<T>& v1,
|
||||||
const detail::tvec4<T>& v2,
|
const detail::tvec4<T>& v2,
|
||||||
const detail::tvec4<T>& v3,
|
const detail::tvec4<T>& v3,
|
||||||
const detail::tvec4<T>& v4);
|
const detail::tvec4<T>& v4);
|
||||||
|
|
||||||
//! Build a column major matrix from other matrix.
|
//! Build a column major matrix from other matrix.
|
||||||
//! From GLM_GTX_matrix_major_storage extension.
|
//! From GLM_GTX_matrix_major_storage extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> colMajor4(
|
detail::tmat4x4<T> colMajor4(
|
||||||
const detail::tmat4x4<T>& m);
|
const detail::tmat4x4<T>& m);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}//namespace matrix_major_storage
|
||||||
}//namespace matrix_major_storage
|
}//namespace gtx
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "matrix_major_storage.inl"
|
#include "matrix_major_storage.inl"
|
||||||
|
@ -20,77 +20,70 @@
|
|||||||
# pragma message("GLM: GLM_GTX_matrix_operation extension included")
|
# pragma message("GLM: GLM_GTX_matrix_operation extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace matrix_operation ///< GLM_GTX_matrix_operation: Build diagonal matrices
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_matrix_operation
|
||||||
void main_gtx_matrix_operation();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Build a diagonal matrix.
|
||||||
//! GLM_GTX_matrix_operation: Build diagonal matrices
|
//! From GLM_GTX_matrix_operation extension.
|
||||||
namespace matrix_operation
|
template <typename valType>
|
||||||
{
|
detail::tmat2x2<valType> diagonal2x2(
|
||||||
/// \addtogroup gtx_matrix_operation
|
detail::tvec2<valType> const & v);
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Build a diagonal matrix.
|
//! Build a diagonal matrix.
|
||||||
//! From GLM_GTX_matrix_operation extension.
|
//! From GLM_GTX_matrix_operation extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat2x2<valType> diagonal2x2(
|
detail::tmat2x3<valType> diagonal2x3(
|
||||||
detail::tvec2<valType> const & v);
|
detail::tvec2<valType> const & v);
|
||||||
|
|
||||||
//! Build a diagonal matrix.
|
//! Build a diagonal matrix.
|
||||||
//! From GLM_GTX_matrix_operation extension.
|
//! From GLM_GTX_matrix_operation extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat2x3<valType> diagonal2x3(
|
detail::tmat2x4<valType> diagonal2x4(
|
||||||
detail::tvec2<valType> const & v);
|
detail::tvec2<valType> const & v);
|
||||||
|
|
||||||
//! Build a diagonal matrix.
|
//! Build a diagonal matrix.
|
||||||
//! From GLM_GTX_matrix_operation extension.
|
//! From GLM_GTX_matrix_operation extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat2x4<valType> diagonal2x4(
|
detail::tmat3x2<valType> diagonal3x2(
|
||||||
detail::tvec2<valType> const & v);
|
detail::tvec2<valType> const & v);
|
||||||
|
|
||||||
//! Build a diagonal matrix.
|
//! Build a diagonal matrix.
|
||||||
//! From GLM_GTX_matrix_operation extension.
|
//! From GLM_GTX_matrix_operation extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat3x2<valType> diagonal3x2(
|
detail::tmat3x3<valType> diagonal3x3(
|
||||||
detail::tvec2<valType> const & v);
|
detail::tvec3<valType> const & v);
|
||||||
|
|
||||||
//! Build a diagonal matrix.
|
//! Build a diagonal matrix.
|
||||||
//! From GLM_GTX_matrix_operation extension.
|
//! From GLM_GTX_matrix_operation extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat3x3<valType> diagonal3x3(
|
detail::tmat3x4<valType> diagonal3x4(
|
||||||
detail::tvec3<valType> const & v);
|
detail::tvec3<valType> const & v);
|
||||||
|
|
||||||
//! Build a diagonal matrix.
|
//! Build a diagonal matrix.
|
||||||
//! From GLM_GTX_matrix_operation extension.
|
//! From GLM_GTX_matrix_operation extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat3x4<valType> diagonal3x4(
|
detail::tmat4x2<valType> diagonal4x2(
|
||||||
detail::tvec3<valType> const & v);
|
detail::tvec2<valType> const & v);
|
||||||
|
|
||||||
//! Build a diagonal matrix.
|
//! Build a diagonal matrix.
|
||||||
//! From GLM_GTX_matrix_operation extension.
|
//! From GLM_GTX_matrix_operation extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat4x2<valType> diagonal4x2(
|
detail::tmat4x3<valType> diagonal4x3(
|
||||||
detail::tvec2<valType> const & v);
|
detail::tvec3<valType> const & v);
|
||||||
|
|
||||||
//! Build a diagonal matrix.
|
//! Build a diagonal matrix.
|
||||||
//! From GLM_GTX_matrix_operation extension.
|
//! From GLM_GTX_matrix_operation extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat4x3<valType> diagonal4x3(
|
detail::tmat4x4<valType> diagonal4x4(
|
||||||
detail::tvec3<valType> const & v);
|
detail::tvec4<valType> const & v);
|
||||||
|
|
||||||
//! Build a diagonal matrix.
|
/// @}
|
||||||
//! From GLM_GTX_matrix_operation extension.
|
}//namespace matrix_operation
|
||||||
template <typename valType>
|
}//namespace gtx
|
||||||
detail::tmat4x4<valType> diagonal4x4(
|
|
||||||
detail::tvec4<valType> const & v);
|
|
||||||
|
|
||||||
///@}
|
|
||||||
|
|
||||||
}//namespace matrix_operation
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "matrix_operation.inl"
|
#include "matrix_operation.inl"
|
||||||
|
@ -20,78 +20,72 @@
|
|||||||
# pragma message("GLM: GLM_GTX_matrix_query extension included")
|
# pragma message("GLM: GLM_GTX_matrix_query extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace matrix_query ///< GLM_GTX_matrix_query: Query to evaluate matrix properties
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_matrix_query
|
||||||
void main_gtx_matrix_query();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Return if a matrix a null matrix.
|
||||||
//! GLM_GTX_matrix_query: Query to evaluate matrix properties
|
//! From GLM_GTX_matrix_query extension.
|
||||||
namespace matrix_query
|
template<typename T>
|
||||||
{
|
bool isNull(
|
||||||
/// \addtogroup gtx_matrix_query
|
const detail::tmat2x2<T>& m,
|
||||||
///@{
|
const T epsilon = std::numeric_limits<T>::epsilon());
|
||||||
|
|
||||||
//! Return if a matrix a null matrix.
|
|
||||||
//! From GLM_GTX_matrix_query extension.
|
|
||||||
template<typename T>
|
|
||||||
bool isNull(
|
|
||||||
const detail::tmat2x2<T>& m,
|
|
||||||
const T epsilon = std::numeric_limits<T>::epsilon());
|
|
||||||
|
|
||||||
//! Return if a matrix a null matrix.
|
//! Return if a matrix a null matrix.
|
||||||
//! From GLM_GTX_matrix_query extension.
|
//! From GLM_GTX_matrix_query extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
bool isNull(
|
bool isNull(
|
||||||
const detail::tmat3x3<T>& m,
|
const detail::tmat3x3<T>& m,
|
||||||
const T epsilon = std::numeric_limits<T>::epsilon());
|
const T epsilon = std::numeric_limits<T>::epsilon());
|
||||||
|
|
||||||
//! Return if a matrix a null matrix.
|
//! Return if a matrix a null matrix.
|
||||||
//! From GLM_GTX_matrix_query extension.
|
//! From GLM_GTX_matrix_query extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
bool isNull(
|
bool isNull(
|
||||||
const detail::tmat4x4<T>& m,
|
const detail::tmat4x4<T>& m,
|
||||||
const T epsilon = std::numeric_limits<T>::epsilon());
|
const T epsilon = std::numeric_limits<T>::epsilon());
|
||||||
|
|
||||||
//! Return if a matrix an identity matrix.
|
//! Return if a matrix an identity matrix.
|
||||||
//! From GLM_GTX_matrix_query extension.
|
//! From GLM_GTX_matrix_query extension.
|
||||||
template<typename genType>
|
template<typename genType>
|
||||||
bool isIdentity(
|
bool isIdentity(
|
||||||
const genType& m,
|
const genType& m,
|
||||||
const typename genType::value_type epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
|
const typename genType::value_type epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
|
||||||
|
|
||||||
//! Return if a matrix a normalized matrix.
|
//! Return if a matrix a normalized matrix.
|
||||||
//! From GLM_GTX_matrix_query extension.
|
//! From GLM_GTX_matrix_query extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
bool isNormalized(
|
bool isNormalized(
|
||||||
const detail::tmat2x2<T>& m,
|
const detail::tmat2x2<T>& m,
|
||||||
const T epsilon = std::numeric_limits<T>::epsilon());
|
const T epsilon = std::numeric_limits<T>::epsilon());
|
||||||
|
|
||||||
//! Return if a matrix a normalized matrix.
|
//! Return if a matrix a normalized matrix.
|
||||||
//! From GLM_GTX_matrix_query extension.
|
//! From GLM_GTX_matrix_query extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
bool isNormalized(
|
bool isNormalized(
|
||||||
const detail::tmat3x3<T>& m,
|
const detail::tmat3x3<T>& m,
|
||||||
const T epsilon = std::numeric_limits<T>::epsilon());
|
const T epsilon = std::numeric_limits<T>::epsilon());
|
||||||
|
|
||||||
//! Return if a matrix a normalized matrix.
|
//! Return if a matrix a normalized matrix.
|
||||||
//! From GLM_GTX_matrix_query extension.
|
//! From GLM_GTX_matrix_query extension.
|
||||||
template<typename T>
|
template<typename T>
|
||||||
bool isNormalized(
|
bool isNormalized(
|
||||||
const detail::tmat4x4<T>& m,
|
const detail::tmat4x4<T>& m,
|
||||||
const T epsilon = std::numeric_limits<T>::epsilon());
|
const T epsilon = std::numeric_limits<T>::epsilon());
|
||||||
|
|
||||||
//! Return if a matrix an orthonormalized matrix.
|
//! Return if a matrix an orthonormalized matrix.
|
||||||
//! From GLM_GTX_matrix_query extension.
|
//! From GLM_GTX_matrix_query extension.
|
||||||
template<typename genType>
|
template<typename genType>
|
||||||
bool isOrthogonal(
|
bool isOrthogonal(
|
||||||
const genType& m,
|
const genType& m,
|
||||||
const typename genType::value_type epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
|
const typename genType::value_type epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
}//namespace matrix_query
|
}//namespace matrix_query
|
||||||
}//namespace gtx
|
}//namespace gtx
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "matrix_query.inl"
|
#include "matrix_query.inl"
|
||||||
|
@ -20,30 +20,24 @@
|
|||||||
# pragma message("GLM: GLM_GTX_mixed_product extension included")
|
# pragma message("GLM: GLM_GTX_mixed_product extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace mixed_product ///< GLM_GTX_mixed_product extension: Mixed product of 3 vectors.
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_mixed_product
|
||||||
void main_gtx_matrix_selection();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! \brief Mixed product of 3 vectors (from GLM_GTX_mixed_product extension)
|
||||||
//! GLM_GTX_mixed_product extension: Mixed product of 3 vectors.
|
template <typename valType>
|
||||||
namespace mixed_product
|
valType mixedProduct(
|
||||||
{
|
detail::tvec3<valType> const & v1,
|
||||||
/// \addtogroup gtx_mixed_product
|
detail::tvec3<valType> const & v2,
|
||||||
///@{
|
detail::tvec3<valType> const & v3);
|
||||||
|
|
||||||
//! \brief Mixed product of 3 vectors (from GLM_GTX_mixed_product extension)
|
/// @}
|
||||||
template <typename valType>
|
}// namespace mixed_product
|
||||||
valType mixedProduct(
|
}// namespace gtx
|
||||||
detail::tvec3<valType> const & v1,
|
}// namespace glm
|
||||||
detail::tvec3<valType> const & v2,
|
|
||||||
detail::tvec3<valType> const & v3);
|
|
||||||
|
|
||||||
///@}
|
|
||||||
}//namespace mixed_product
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
|
||||||
|
|
||||||
#include "mixed_product.inl"
|
#include "mixed_product.inl"
|
||||||
|
|
||||||
|
@ -20,37 +20,30 @@
|
|||||||
# pragma message("GLM: GLM_GTX_multiple extension included")
|
# pragma message("GLM: GLM_GTX_multiple extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace multiple ///< GLM_GTX_multiple: Find the closest number of a number multiple of other number.
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_multiple
|
||||||
bool main_img_multiple();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Higher Multiple number of Source.
|
||||||
//! GLM_GTX_multiple: Find the closest number of a number multiple of other number.
|
//! From GLM_GTX_multiple extension.
|
||||||
namespace multiple
|
template <typename genType>
|
||||||
{
|
genType higherMultiple(
|
||||||
/// \addtogroup gtx_multiple
|
genType const & Source,
|
||||||
///@{
|
genType const & Multiple);
|
||||||
|
|
||||||
//! Higher Multiple number of Source.
|
//! Lower Multiple number of Source.
|
||||||
//! From GLM_GTX_multiple extension.
|
//! From GLM_GTX_multiple extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType higherMultiple(
|
genType lowerMultiple(
|
||||||
genType const & Source,
|
genType const & Source,
|
||||||
genType const & Multiple);
|
genType const & Multiple);
|
||||||
|
|
||||||
//! Lower Multiple number of Source.
|
/// @}
|
||||||
//! From GLM_GTX_multiple extension.
|
}//namespace multiple
|
||||||
template <typename genType>
|
}//namespace gtx
|
||||||
genType lowerMultiple(
|
|
||||||
genType const & Source,
|
|
||||||
genType const & Multiple);
|
|
||||||
|
|
||||||
///@}
|
|
||||||
|
|
||||||
}//namespace multiple
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "multiple.inl"
|
#include "multiple.inl"
|
||||||
|
@ -25,42 +25,35 @@
|
|||||||
# pragma message("GLM: GLM_GTX_noise extension included")
|
# pragma message("GLM: GLM_GTX_noise extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace noise ///< GLM_GTX_noise extension: Comparison functions for a user defined epsilon values.
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_noise
|
||||||
void main_gtx_noise();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Classic perlin noise.
|
||||||
//! GLM_GTX_noise extension: Comparison functions for a user defined epsilon values.
|
//! From GLM_GTX_noise extension.
|
||||||
namespace noise
|
template <typename T, template<typename> class vecType>
|
||||||
{
|
T perlin(
|
||||||
/// \addtogroup gtx_noise
|
vecType<T> const & p);
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Classic perlin noise.
|
|
||||||
//! From GLM_GTX_noise extension.
|
|
||||||
template <typename T, template<typename> class vecType>
|
|
||||||
T perlin(
|
|
||||||
vecType<T> const & p);
|
|
||||||
|
|
||||||
//! Periodic perlin noise.
|
//! Periodic perlin noise.
|
||||||
//! From GLM_GTX_noise extension.
|
//! From GLM_GTX_noise extension.
|
||||||
template <typename T, template<typename> class vecType>
|
template <typename T, template<typename> class vecType>
|
||||||
T perlin(
|
T perlin(
|
||||||
vecType<T> const & p,
|
vecType<T> const & p,
|
||||||
vecType<T> const & rep);
|
vecType<T> const & rep);
|
||||||
|
|
||||||
//! Simplex noise.
|
//! Simplex noise.
|
||||||
//! From GLM_GTX_noise extension.
|
//! From GLM_GTX_noise extension.
|
||||||
template <typename T, template<typename> class vecType>
|
template <typename T, template<typename> class vecType>
|
||||||
T simplex(
|
T simplex(
|
||||||
vecType<T> const & p);
|
vecType<T> const & p);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}//namespace noise
|
||||||
}//namespace noise
|
}//namespace gtx
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "noise.inl"
|
#include "noise.inl"
|
||||||
|
191
glm/gtx/norm.hpp
191
glm/gtx/norm.hpp
@ -25,122 +25,115 @@
|
|||||||
# pragma message("GLM: GLM_GTX_norm extension included")
|
# pragma message("GLM: GLM_GTX_norm extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace norm ///< GLM_GTX_norm extension: Various way to compute vector norms.
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_norm
|
||||||
void main_gtx_norm();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Returns the squared length of x.
|
||||||
//! GLM_GTX_norm extension: Various way to compute vector norms.
|
//! From GLM_GTX_norm extension.
|
||||||
namespace norm
|
template <typename T>
|
||||||
{
|
T length2(
|
||||||
/// \addtogroup gtx_norm
|
const T x);
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Returns the squared length of x.
|
//! Returns the squared length of x.
|
||||||
//! From GLM_GTX_norm extension.
|
//! From GLM_GTX_norm extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T length2(
|
T length2(
|
||||||
const T x);
|
const detail::tvec2<T> & x);
|
||||||
|
|
||||||
//! Returns the squared length of x.
|
//! Returns the squared length of x.
|
||||||
//! From GLM_GTX_norm extension.
|
//! From GLM_GTX_norm extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T length2(
|
T length2(
|
||||||
const detail::tvec2<T> & x);
|
const detail::tvec3<T>& x);
|
||||||
|
|
||||||
//! Returns the squared length of x.
|
|
||||||
//! From GLM_GTX_norm extension.
|
|
||||||
template <typename T>
|
|
||||||
T length2(
|
|
||||||
const detail::tvec3<T>& x);
|
|
||||||
|
|
||||||
//! Returns the squared length of x.
|
//! Returns the squared length of x.
|
||||||
//! From GLM_GTX_norm extension.
|
//! From GLM_GTX_norm extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T length2(
|
T length2(
|
||||||
const detail::tvec4<T>& x);
|
const detail::tvec4<T>& x);
|
||||||
|
|
||||||
//! Returns the squared length of x.
|
//! Returns the squared length of x.
|
||||||
//! From GLM_GTX_norm extension.
|
//! From GLM_GTX_norm extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T length2(
|
T length2(
|
||||||
const detail::tquat<T>& q);
|
const detail::tquat<T>& q);
|
||||||
|
|
||||||
//! Returns the squared distance between p0 and p1, i.e., length(p0 - p1).
|
//! Returns the squared distance between p0 and p1, i.e., length(p0 - p1).
|
||||||
//! From GLM_GTX_norm extension.
|
//! From GLM_GTX_norm extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T distance2(
|
T distance2(
|
||||||
const T p0,
|
const T p0,
|
||||||
const T p1);
|
const T p1);
|
||||||
|
|
||||||
//! Returns the squared distance between p0 and p1, i.e., length(p0 - p1).
|
//! Returns the squared distance between p0 and p1, i.e., length(p0 - p1).
|
||||||
//! From GLM_GTX_norm extension.
|
//! From GLM_GTX_norm extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T distance2(
|
T distance2(
|
||||||
const detail::tvec2<T>& p0,
|
const detail::tvec2<T>& p0,
|
||||||
const detail::tvec2<T>& p1);
|
const detail::tvec2<T>& p1);
|
||||||
|
|
||||||
//! Returns the squared distance between p0 and p1, i.e., length(p0 - p1).
|
//! Returns the squared distance between p0 and p1, i.e., length(p0 - p1).
|
||||||
//! From GLM_GTX_norm extension.
|
//! From GLM_GTX_norm extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T distance2(
|
T distance2(
|
||||||
const detail::tvec3<T>& p0,
|
const detail::tvec3<T>& p0,
|
||||||
const detail::tvec3<T>& p1);
|
const detail::tvec3<T>& p1);
|
||||||
|
|
||||||
//! Returns the squared distance between p0 and p1, i.e., length(p0 - p1).
|
//! Returns the squared distance between p0 and p1, i.e., length(p0 - p1).
|
||||||
//! From GLM_GTX_norm extension.
|
//! From GLM_GTX_norm extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T distance2(
|
T distance2(
|
||||||
const detail::tvec4<T>& p0,
|
const detail::tvec4<T>& p0,
|
||||||
const detail::tvec4<T>& p1);
|
const detail::tvec4<T>& p1);
|
||||||
|
|
||||||
//! Returns the L1 norm between x and y.
|
//! Returns the L1 norm between x and y.
|
||||||
//! From GLM_GTX_norm extension.
|
//! From GLM_GTX_norm extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T l1Norm(
|
T l1Norm(
|
||||||
const detail::tvec3<T>& x,
|
const detail::tvec3<T>& x,
|
||||||
const detail::tvec3<T>& y);
|
const detail::tvec3<T>& y);
|
||||||
|
|
||||||
//! Returns the L1 norm of v.
|
//! Returns the L1 norm of v.
|
||||||
//! From GLM_GTX_norm extension.
|
//! From GLM_GTX_norm extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T l1Norm(
|
T l1Norm(
|
||||||
const detail::tvec3<T>& v);
|
const detail::tvec3<T>& v);
|
||||||
|
|
||||||
//! Returns the L2 norm between x and y.
|
//! Returns the L2 norm between x and y.
|
||||||
//! From GLM_GTX_norm extension.
|
//! From GLM_GTX_norm extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T l2Norm(
|
T l2Norm(
|
||||||
const detail::tvec3<T>& x,
|
const detail::tvec3<T>& x,
|
||||||
const detail::tvec3<T>& y);
|
const detail::tvec3<T>& y);
|
||||||
|
|
||||||
//! Returns the L2 norm of v.
|
//! Returns the L2 norm of v.
|
||||||
//! From GLM_GTX_norm extension.
|
//! From GLM_GTX_norm extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T l2Norm(
|
T l2Norm(
|
||||||
const detail::tvec3<T>& x);
|
const detail::tvec3<T>& x);
|
||||||
|
|
||||||
//! Returns the L norm between x and y.
|
//! Returns the L norm between x and y.
|
||||||
//! From GLM_GTX_norm extension.
|
//! From GLM_GTX_norm extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T lxNorm(
|
T lxNorm(
|
||||||
const detail::tvec3<T>& x,
|
const detail::tvec3<T>& x,
|
||||||
const detail::tvec3<T>& y,
|
const detail::tvec3<T>& y,
|
||||||
unsigned int Depth);
|
unsigned int Depth);
|
||||||
|
|
||||||
//! Returns the L norm of v.
|
//! Returns the L norm of v.
|
||||||
//! From GLM_GTX_norm extension.
|
//! From GLM_GTX_norm extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T lxNorm(
|
T lxNorm(
|
||||||
const detail::tvec3<T>& x,
|
const detail::tvec3<T>& x,
|
||||||
unsigned int Depth);
|
unsigned int Depth);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}//namespace norm
|
||||||
}//namespace norm
|
}//namespace gtx
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "norm.inl"
|
#include "norm.inl"
|
||||||
|
@ -20,31 +20,24 @@
|
|||||||
# pragma message("GLM: GLM_GTX_normal extension included")
|
# pragma message("GLM: GLM_GTX_normal extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace normal ///< GLM_GTX_normal extension: Compute the normal of a triangle.
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_normal
|
||||||
void main_gtx_normal();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
|
||||||
//! GLM_GTX_normal extension: Compute the normal of a triangle.
|
|
||||||
namespace normal
|
|
||||||
{
|
|
||||||
/// \addtogroup gtx_normal
|
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Computes triangle normal from triangle points.
|
//! Computes triangle normal from triangle points.
|
||||||
//! From GLM_GTX_normal extension.
|
//! From GLM_GTX_normal extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec3<T> triangleNormal(
|
detail::tvec3<T> triangleNormal(
|
||||||
detail::tvec3<T> const & p1,
|
detail::tvec3<T> const & p1,
|
||||||
detail::tvec3<T> const & p2,
|
detail::tvec3<T> const & p2,
|
||||||
detail::tvec3<T> const & p3);
|
detail::tvec3<T> const & p3);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}//namespace normal
|
||||||
}//namespace normal
|
}//namespace gtx
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "normal.inl"
|
#include "normal.inl"
|
||||||
|
@ -22,37 +22,34 @@
|
|||||||
# pragma message("GLM: GLM_GTX_normalize_dot extension included")
|
# pragma message("GLM: GLM_GTX_normalize_dot extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace normalize_dot ///< GLM_GTX_normalize_dot extension: Dot product of vectors that need to be normalize with a single square root.
|
||||||
{
|
{
|
||||||
namespace gtx{
|
using namespace gtx::fast_square_root;
|
||||||
//! GLM_GTX_normalize_dot extension: Dot product of vectors that need to be normalize with a single square root.
|
|
||||||
namespace normalize_dot
|
|
||||||
{
|
|
||||||
using namespace gtx::fast_square_root;
|
|
||||||
|
|
||||||
/// \addtogroup gtx_normalize_dot
|
/// \addtogroup gtx_normalize_dot
|
||||||
///@{
|
/// @{
|
||||||
|
|
||||||
//! Normalize parameters and returns the dot product of x and y.
|
//! Normalize parameters and returns the dot product of x and y.
|
||||||
//! It's faster that dot(normalize(x), normalize(y)).
|
//! It's faster that dot(normalize(x), normalize(y)).
|
||||||
//! From GLM_GTX_normalize_dot extension.
|
//! From GLM_GTX_normalize_dot extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
typename genType::value_type normalizeDot(
|
typename genType::value_type normalizeDot(
|
||||||
genType const & x,
|
genType const & x,
|
||||||
genType const & y);
|
genType const & y);
|
||||||
|
|
||||||
//! Normalize parameters and returns the dot product of x and y.
|
//! Normalize parameters and returns the dot product of x and y.
|
||||||
//! Faster that dot(fastNormalize(x), fastNormalize(y)).
|
//! Faster that dot(fastNormalize(x), fastNormalize(y)).
|
||||||
//! From GLM_GTX_normalize_dot extension.
|
//! From GLM_GTX_normalize_dot extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
typename genType::value_type fastNormalizeDot(
|
typename genType::value_type fastNormalizeDot(
|
||||||
genType const & x,
|
genType const & x,
|
||||||
genType const & y);
|
genType const & y);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}//namespace normalize_dot
|
||||||
}//namespace normalize_dot
|
}//namespace gtx
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "normalize_dot.inl"
|
#include "normalize_dot.inl"
|
||||||
|
@ -25,8 +25,7 @@
|
|||||||
|
|
||||||
namespace glm{
|
namespace glm{
|
||||||
namespace gtx{
|
namespace gtx{
|
||||||
//! GLM_GTX_number_precision extension: Defined size types.
|
namespace number_precision ///< GLM_GTX_number_precision extension: Defined size types.
|
||||||
namespace number_precision
|
|
||||||
{
|
{
|
||||||
using namespace gtc::type_precision;
|
using namespace gtc::type_precision;
|
||||||
|
|
||||||
@ -34,7 +33,7 @@ namespace number_precision
|
|||||||
// Unsigned int vector types
|
// Unsigned int vector types
|
||||||
|
|
||||||
/// \addtogroup gtx_number_precision
|
/// \addtogroup gtx_number_precision
|
||||||
///@{
|
/// @{
|
||||||
|
|
||||||
typedef u8 u8vec1; //!< \brief 8bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
|
typedef u8 u8vec1; //!< \brief 8bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
|
||||||
typedef u16 u16vec1; //!< \brief 16bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
|
typedef u16 u16vec1; //!< \brief 16bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
|
||||||
@ -58,7 +57,7 @@ namespace number_precision
|
|||||||
typedef f64 f64mat1; //!< \brief Double-precision floating-point scalar. (from GLM_GTX_number_precision extension)
|
typedef f64 f64mat1; //!< \brief Double-precision floating-point scalar. (from GLM_GTX_number_precision extension)
|
||||||
typedef f64 f64mat1x1; //!< \brief Double-precision floating-point scalar. (from GLM_GTX_number_precision extension)
|
typedef f64 f64mat1x1; //!< \brief Double-precision floating-point scalar. (from GLM_GTX_number_precision extension)
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
}//namespace number_precision
|
}//namespace number_precision
|
||||||
}//namespace gtx
|
}//namespace gtx
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
@ -22,14 +22,13 @@
|
|||||||
|
|
||||||
namespace glm{
|
namespace glm{
|
||||||
namespace gtx{
|
namespace gtx{
|
||||||
//! GLM_GTX_ocl_type extension: OpenCL types.
|
namespace ocl_type ///< GLM_GTX_ocl_type extension: OpenCL types.
|
||||||
namespace ocl_type
|
|
||||||
{
|
{
|
||||||
///////////////////////////
|
///////////////////////////
|
||||||
// Scalar types
|
// Scalar types
|
||||||
|
|
||||||
/// \addtogroup gtx_ocl_type
|
/// \addtogroup gtx_ocl_type
|
||||||
///@{
|
/// @{
|
||||||
|
|
||||||
typedef detail::int8 cl_char; //!< \brief 8bit signed integer. (from GLM_GTX_ocl_type extension)
|
typedef detail::int8 cl_char; //!< \brief 8bit signed integer. (from GLM_GTX_ocl_type extension)
|
||||||
typedef detail::int16 cl_short; //!< \brief 16bit signed integer. (from GLM_GTX_ocl_type extension)
|
typedef detail::int16 cl_short; //!< \brief 16bit signed integer. (from GLM_GTX_ocl_type extension)
|
||||||
@ -99,8 +98,7 @@ namespace ocl_type
|
|||||||
//typedef detail::tvec4<detail::float16> cl_half4; //!< \brief Half-precision floating-point scalar. (from GLM_GTX_ocl_type extension)
|
//typedef detail::tvec4<detail::float16> cl_half4; //!< \brief Half-precision floating-point scalar. (from GLM_GTX_ocl_type extension)
|
||||||
typedef detail::tvec4<detail::float32> cl_float4; //!< \brief Single-precision floating-point scalar. (from GLM_GTX_ocl_type extension)
|
typedef detail::tvec4<detail::float32> cl_float4; //!< \brief Single-precision floating-point scalar. (from GLM_GTX_ocl_type extension)
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
|
||||||
}//namespace ocl_type
|
}//namespace ocl_type
|
||||||
}//namespace gtx
|
}//namespace gtx
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
@ -20,54 +20,47 @@
|
|||||||
# pragma message("GLM: GLM_GTX_optimum_pow extension included")
|
# pragma message("GLM: GLM_GTX_optimum_pow extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace optimum_pow ///< GLM_GTX_optimum_pow extension: Integer exponentiation of power functions.
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_optimum_pow
|
||||||
void main_gtx_optimum_pow();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Returns x raised to the power of 2.
|
||||||
//! GLM_GTX_optimum_pow extension: Integer exponentiation of power functions.
|
//! From GLM_GTX_optimum_pow extension.
|
||||||
namespace optimum_pow
|
template <typename genType>
|
||||||
{
|
genType pow2(const genType& x);
|
||||||
/// \addtogroup gtx_optimum_pow
|
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Returns x raised to the power of 2.
|
//! Returns x raised to the power of 3.
|
||||||
//! From GLM_GTX_optimum_pow extension.
|
//! From GLM_GTX_optimum_pow extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType pow2(const genType& x);
|
genType pow3(const genType& x);
|
||||||
|
|
||||||
//! Returns x raised to the power of 3.
|
//! Returns x raised to the power of 4.
|
||||||
//! From GLM_GTX_optimum_pow extension.
|
//! From GLM_GTX_optimum_pow extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType pow3(const genType& x);
|
genType pow4(const genType& x);
|
||||||
|
|
||||||
//! Returns x raised to the power of 4.
|
|
||||||
//! From GLM_GTX_optimum_pow extension.
|
|
||||||
template <typename genType>
|
|
||||||
genType pow4(const genType& x);
|
|
||||||
|
|
||||||
//! Checks if the parameter is a power of 2 number.
|
//! Checks if the parameter is a power of 2 number.
|
||||||
//! From GLM_GTX_optimum_pow extension.
|
//! From GLM_GTX_optimum_pow extension.
|
||||||
bool powOfTwo(int num);
|
bool powOfTwo(int num);
|
||||||
|
|
||||||
//! Checks to determine if the parameter component are power of 2 numbers.
|
//! Checks to determine if the parameter component are power of 2 numbers.
|
||||||
//! From GLM_GTX_optimum_pow extension.
|
//! From GLM_GTX_optimum_pow extension.
|
||||||
detail::tvec2<bool> powOfTwo(const detail::tvec2<int>& x);
|
detail::tvec2<bool> powOfTwo(const detail::tvec2<int>& x);
|
||||||
|
|
||||||
//! Checks to determine if the parameter component are power of 2 numbers.
|
//! Checks to determine if the parameter component are power of 2 numbers.
|
||||||
//! From GLM_GTX_optimum_pow extension.
|
//! From GLM_GTX_optimum_pow extension.
|
||||||
detail::tvec3<bool> powOfTwo(const detail::tvec3<int>& x);
|
detail::tvec3<bool> powOfTwo(const detail::tvec3<int>& x);
|
||||||
|
|
||||||
//! Checks to determine if the parameter component are power of 2 numbers.
|
//! Checks to determine if the parameter component are power of 2 numbers.
|
||||||
//! From GLM_GTX_optimum_pow extension.
|
//! From GLM_GTX_optimum_pow extension.
|
||||||
detail::tvec4<bool> powOfTwo(const detail::tvec4<int>& x);
|
detail::tvec4<bool> powOfTwo(const detail::tvec4<int>& x);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}//namespace optimum_pow
|
||||||
}//namespace optimum_pow
|
}//namespace gtx
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "optimum_pow.inl"
|
#include "optimum_pow.inl"
|
||||||
|
@ -20,36 +20,29 @@
|
|||||||
# pragma message("GLM: GLM_GTX_orthonormalize extension included")
|
# pragma message("GLM: GLM_GTX_orthonormalize extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace orthonormalize ///< GLM_GTX_orthonormalize extension: Orthonormalize matrices.
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_orthonormalize
|
||||||
void main_gtx_orthonormalize();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Returns the orthonormalized matrix of m.
|
||||||
//! GLM_GTX_orthonormalize extension: Orthonormalize matrices.
|
//! From GLM_GTX_orthonormalize extension.
|
||||||
namespace orthonormalize
|
template <typename T>
|
||||||
{
|
detail::tmat3x3<T> orthonormalize(
|
||||||
/// \addtogroup gtx_orthonormalize
|
const detail::tmat3x3<T>& m);
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Returns the orthonormalized matrix of m.
|
|
||||||
//! From GLM_GTX_orthonormalize extension.
|
|
||||||
template <typename T>
|
|
||||||
detail::tmat3x3<T> orthonormalize(
|
|
||||||
const detail::tmat3x3<T>& m);
|
|
||||||
|
|
||||||
//! Orthonormalizes x according y.
|
//! Orthonormalizes x according y.
|
||||||
//! From GLM_GTX_orthonormalize extension.
|
//! From GLM_GTX_orthonormalize extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec3<T> orthonormalize(
|
detail::tvec3<T> orthonormalize(
|
||||||
const detail::tvec3<T>& x,
|
const detail::tvec3<T>& x,
|
||||||
const detail::tvec3<T>& y);
|
const detail::tvec3<T>& y);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}//namespace orthonormalize
|
||||||
}//namespace orthonormalize
|
}//namespace gtx
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "orthonormalize.inl"
|
#include "orthonormalize.inl"
|
||||||
|
@ -22,45 +22,37 @@
|
|||||||
# pragma message("GLM: GLM_GTX_perpendicular extension included")
|
# pragma message("GLM: GLM_GTX_perpendicular extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace perpendicular ///< GLM_GTX_perpendicular extension: Perpendicular of a vector from other one
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_perpendicular
|
||||||
void main_gtx_perpendicular();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Projects x a perpendicular axis of Normal.
|
||||||
//! GLM_GTX_perpendicular extension: Perpendicular of a vector from other one
|
//! From GLM_GTX_perpendicular extension.
|
||||||
namespace perpendicular
|
template <typename T>
|
||||||
{
|
detail::tvec2<T> perp(
|
||||||
/// \addtogroup gtx_perpendicular
|
detail::tvec2<T> const & x,
|
||||||
///@{
|
detail::tvec2<T> const & Normal);
|
||||||
|
|
||||||
//! Projects x a perpendicular axis of Normal.
|
//! Projects x a perpendicular axis of Normal.
|
||||||
//! From GLM_GTX_perpendicular extension.
|
//! From GLM_GTX_perpendicular extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec2<T> perp(
|
detail::tvec3<T> perp(
|
||||||
detail::tvec2<T> const & x,
|
detail::tvec3<T> const & x,
|
||||||
detail::tvec2<T> const & Normal);
|
detail::tvec3<T> const & Normal);
|
||||||
|
|
||||||
//! Projects x a perpendicular axis of Normal.
|
//! Projects x a perpendicular axis of Normal.
|
||||||
//! From GLM_GTX_perpendicular extension.
|
//! From GLM_GTX_perpendicular extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec3<T> perp(
|
detail::tvec4<T> perp(
|
||||||
detail::tvec3<T> const & x,
|
detail::tvec4<T> const & x,
|
||||||
detail::tvec3<T> const & Normal);
|
detail::tvec4<T> const & Normal);
|
||||||
|
|
||||||
//! Projects x a perpendicular axis of Normal.
|
/// @}
|
||||||
//! From GLM_GTX_perpendicular extension.
|
}//namespace perpendicular
|
||||||
template <typename T>
|
}//namespace gtx
|
||||||
detail::tvec4<T> perp(
|
|
||||||
detail::tvec4<T> const & x,
|
|
||||||
detail::tvec4<T> const & Normal);
|
|
||||||
|
|
||||||
|
|
||||||
///@}
|
|
||||||
|
|
||||||
}//namespace perpendicular
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "perpendicular.inl"
|
#include "perpendicular.inl"
|
||||||
|
@ -20,29 +20,26 @@
|
|||||||
# pragma message("GLM: GLM_GTX_polar_coordinates extension included")
|
# pragma message("GLM: GLM_GTX_polar_coordinates extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace polar_coordinates ///< GLM_GTX_polar_coordinates extension: Conversion from Euclidean space to polar space and revert.
|
||||||
{
|
{
|
||||||
namespace gtx{
|
/// \addtogroup gtx_polar_coordinates
|
||||||
//! GLM_GTX_polar_coordinates extension: Conversion from Euclidean space to polar space and revert.
|
/// @{
|
||||||
namespace polar_coordinates
|
|
||||||
{
|
|
||||||
/// \addtogroup gtx_polar_coordinates
|
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Convert Euclidean to Polar coordinates, x is the xz distance, y, the latitude and z the longitude.
|
//! Convert Euclidean to Polar coordinates, x is the xz distance, y, the latitude and z the longitude.
|
||||||
//! From GLM_GTX_polar_coordinates extension.
|
//! From GLM_GTX_polar_coordinates extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec3<T> polar(const detail::tvec3<T>& euclidean);
|
detail::tvec3<T> polar(const detail::tvec3<T>& euclidean);
|
||||||
|
|
||||||
//! Convert Polar to Euclidean coordinates.
|
//! Convert Polar to Euclidean coordinates.
|
||||||
//! From GLM_GTX_polar_coordinates extension.
|
//! From GLM_GTX_polar_coordinates extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec3<T> euclidean(const detail::tvec3<T>& polar);
|
detail::tvec3<T> euclidean(const detail::tvec3<T>& polar);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}//namespace polar_coordinates
|
||||||
}//namespace polar_coordinates
|
}//namespace gtx
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "polar_coordinates.inl"
|
#include "polar_coordinates.inl"
|
||||||
|
@ -20,44 +20,37 @@
|
|||||||
# pragma message("GLM: GLM_GTX_projection extension included")
|
# pragma message("GLM: GLM_GTX_projection extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace projection ///< GLM_GTX_projection extension: Projection of a vector to other one
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_projection
|
||||||
void main_gtx_projection();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Projects x on Normal.
|
||||||
//! GLM_GTX_projection extension: Projection of a vector to other one
|
//! From GLM_GTX_projection extension.
|
||||||
namespace projection
|
template <typename T>
|
||||||
{
|
detail::tvec2<T> proj(
|
||||||
/// \addtogroup gtx_projection
|
detail::tvec2<T> const & x,
|
||||||
///@{
|
detail::tvec2<T> const & Normal);
|
||||||
|
|
||||||
//! Projects x on Normal.
|
|
||||||
//! From GLM_GTX_projection extension.
|
|
||||||
template <typename T>
|
|
||||||
detail::tvec2<T> proj(
|
|
||||||
detail::tvec2<T> const & x,
|
|
||||||
detail::tvec2<T> const & Normal);
|
|
||||||
|
|
||||||
//! Projects x on Normal.
|
//! Projects x on Normal.
|
||||||
//! From GLM_GTX_projection extension.
|
//! From GLM_GTX_projection extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec3<T> proj(
|
detail::tvec3<T> proj(
|
||||||
detail::tvec3<T> const & x,
|
detail::tvec3<T> const & x,
|
||||||
detail::tvec3<T> const & Normal);
|
detail::tvec3<T> const & Normal);
|
||||||
|
|
||||||
//! Projects x on Normal.
|
//! Projects x on Normal.
|
||||||
//! From GLM_GTX_projection extension.
|
//! From GLM_GTX_projection extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec4<T> proj(
|
detail::tvec4<T> proj(
|
||||||
detail::tvec4<T> const & x,
|
detail::tvec4<T> const & x,
|
||||||
detail::tvec4<T> const & Normal);
|
detail::tvec4<T> const & Normal);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}//namespace projection
|
||||||
}//namespace projection
|
}//namespace gtx
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "projection.inl"
|
#include "projection.inl"
|
||||||
|
@ -25,192 +25,189 @@
|
|||||||
# pragma message("GLM: GLM_GTX_quaternion extension included")
|
# pragma message("GLM: GLM_GTX_quaternion extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace quaternion ///< GLM_GTX_quaternion extension: Quaternion types and functions
|
||||||
{
|
{
|
||||||
namespace gtx{
|
using namespace gtc::quaternion;
|
||||||
//! GLM_GTX_quaternion extension: Quaternion types and functions
|
|
||||||
namespace quaternion
|
|
||||||
{
|
|
||||||
using namespace gtc::quaternion;
|
|
||||||
|
|
||||||
/// \addtogroup gtx_quaternion
|
/// \addtogroup gtx_quaternion
|
||||||
///@{
|
///@{
|
||||||
|
|
||||||
//! Compute a cross product between a quaternion and a vector.
|
//! Compute a cross product between a quaternion and a vector.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tvec3<valType> cross(
|
detail::tvec3<valType> cross(
|
||||||
detail::tquat<valType> const & q,
|
detail::tquat<valType> const & q,
|
||||||
detail::tvec3<valType> const & v);
|
detail::tvec3<valType> const & v);
|
||||||
|
|
||||||
//! Compute a cross product between a vector and a quaternion.
|
//! Compute a cross product between a vector and a quaternion.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tvec3<valType> cross(
|
detail::tvec3<valType> cross(
|
||||||
detail::tvec3<valType> const & v,
|
detail::tvec3<valType> const & v,
|
||||||
detail::tquat<valType> const & q);
|
detail::tquat<valType> const & q);
|
||||||
|
|
||||||
//! Compute a point on a path according squad equation.
|
//! Compute a point on a path according squad equation.
|
||||||
//! q1 and q2 are control points; s1 and s2 are intermediate control points.
|
//! q1 and q2 are control points; s1 and s2 are intermediate control points.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tquat<valType> squad(
|
detail::tquat<valType> squad(
|
||||||
detail::tquat<valType> const & q1,
|
detail::tquat<valType> const & q1,
|
||||||
detail::tquat<valType> const & q2,
|
detail::tquat<valType> const & q2,
|
||||||
detail::tquat<valType> const & s1,
|
detail::tquat<valType> const & s1,
|
||||||
detail::tquat<valType> const & s2,
|
detail::tquat<valType> const & s2,
|
||||||
valType const & h);
|
valType const & h);
|
||||||
|
|
||||||
//! Returns an intermediate control point for squad interpolation.
|
//! Returns an intermediate control point for squad interpolation.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tquat<valType> intermediate(
|
detail::tquat<valType> intermediate(
|
||||||
detail::tquat<valType> const & prev,
|
detail::tquat<valType> const & prev,
|
||||||
detail::tquat<valType> const & curr,
|
detail::tquat<valType> const & curr,
|
||||||
detail::tquat<valType> const & next);
|
detail::tquat<valType> const & next);
|
||||||
|
|
||||||
//! Returns a exp of a quaternion.
|
//! Returns a exp of a quaternion.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tquat<valType> exp(
|
detail::tquat<valType> exp(
|
||||||
detail::tquat<valType> const & q,
|
detail::tquat<valType> const & q,
|
||||||
valType const & exponent);
|
valType const & exponent);
|
||||||
|
|
||||||
//! Returns a log of a quaternion.
|
//! Returns a log of a quaternion.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tquat<valType> log(
|
detail::tquat<valType> log(
|
||||||
detail::tquat<valType> const & q);
|
detail::tquat<valType> const & q);
|
||||||
|
|
||||||
//! Returns x raised to the y power.
|
//! Returns x raised to the y power.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tquat<valType> pow(
|
detail::tquat<valType> pow(
|
||||||
detail::tquat<valType> const & x,
|
detail::tquat<valType> const & x,
|
||||||
valType const & y);
|
valType const & y);
|
||||||
|
|
||||||
//! Returns quarternion square root.
|
//! Returns quarternion square root.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
//template <typename valType>
|
//template <typename valType>
|
||||||
//detail::tquat<valType> sqrt(
|
//detail::tquat<valType> sqrt(
|
||||||
// detail::tquat<valType> const & q);
|
// detail::tquat<valType> const & q);
|
||||||
|
|
||||||
//! Rotates a 3 components vector by a quaternion.
|
//! Rotates a 3 components vector by a quaternion.
|
||||||
//! From GLM_GTX_transform extension.
|
//! From GLM_GTX_transform extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tvec3<valType> rotate(
|
detail::tvec3<valType> rotate(
|
||||||
detail::tquat<valType> const & q,
|
detail::tquat<valType> const & q,
|
||||||
detail::tvec3<valType> const & v);
|
detail::tvec3<valType> const & v);
|
||||||
|
|
||||||
//! Rotates a 4 components vector by a quaternion.
|
//! Rotates a 4 components vector by a quaternion.
|
||||||
//! From GLM_GTX_transform extension.
|
//! From GLM_GTX_transform extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tvec4<valType> rotate(
|
detail::tvec4<valType> rotate(
|
||||||
detail::tquat<valType> const & q,
|
detail::tquat<valType> const & q,
|
||||||
detail::tvec4<valType> const & v);
|
detail::tvec4<valType> const & v);
|
||||||
|
|
||||||
//! Returns the quaternion rotation angle.
|
//! Returns the quaternion rotation angle.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
valType angle(
|
valType angle(
|
||||||
detail::tquat<valType> const & x);
|
detail::tquat<valType> const & x);
|
||||||
|
|
||||||
//! Returns the q rotation axis.
|
//! Returns the q rotation axis.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tvec3<valType> axis(
|
detail::tvec3<valType> axis(
|
||||||
detail::tquat<valType> const & x);
|
detail::tquat<valType> const & x);
|
||||||
|
|
||||||
//! Build a quaternion from an angle and a normalized axis.
|
//! Build a quaternion from an angle and a normalized axis.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tquat<valType> angleAxis(
|
detail::tquat<valType> angleAxis(
|
||||||
valType const & angle,
|
valType const & angle,
|
||||||
valType const & x,
|
valType const & x,
|
||||||
valType const & y,
|
valType const & y,
|
||||||
valType const & z);
|
valType const & z);
|
||||||
|
|
||||||
//! Build a quaternion from an angle and a normalized axis.
|
//! Build a quaternion from an angle and a normalized axis.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tquat<valType> angleAxis(
|
detail::tquat<valType> angleAxis(
|
||||||
valType const & angle,
|
valType const & angle,
|
||||||
detail::tvec3<valType> const & axis);
|
detail::tvec3<valType> const & axis);
|
||||||
|
|
||||||
//! Extract the real component of a quaternion.
|
//! Extract the real component of a quaternion.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
valType extractRealComponent(
|
valType extractRealComponent(
|
||||||
detail::tquat<valType> const & q);
|
detail::tquat<valType> const & q);
|
||||||
|
|
||||||
//! Returns roll value of euler angles.
|
//! Returns roll value of euler angles.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
valType roll(
|
valType roll(
|
||||||
detail::tquat<valType> const & x);
|
detail::tquat<valType> const & x);
|
||||||
|
|
||||||
//! Returns pitch value of euler angles.
|
//! Returns pitch value of euler angles.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
valType pitch(
|
valType pitch(
|
||||||
detail::tquat<valType> const & x);
|
detail::tquat<valType> const & x);
|
||||||
|
|
||||||
//! Returns yaw value of euler angles.
|
//! Returns yaw value of euler angles.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
valType yaw(
|
valType yaw(
|
||||||
detail::tquat<valType> const & x);
|
detail::tquat<valType> const & x);
|
||||||
|
|
||||||
//! Returns euler angles, yitch as x, yaw as y, roll as z.
|
//! Returns euler angles, yitch as x, yaw as y, roll as z.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tvec3<valType> eularAngles(
|
detail::tvec3<valType> eularAngles(
|
||||||
detail::tquat<valType> const & x);
|
detail::tquat<valType> const & x);
|
||||||
|
|
||||||
//! Converts a quaternion to a 3 * 3 matrix.
|
//! Converts a quaternion to a 3 * 3 matrix.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat3x3<valType> toMat3(
|
detail::tmat3x3<valType> toMat3(
|
||||||
detail::tquat<valType> const & x){return gtc::quaternion::mat3_cast(x);}
|
detail::tquat<valType> const & x){return gtc::quaternion::mat3_cast(x);}
|
||||||
|
|
||||||
//! Converts a quaternion to a 4 * 4 matrix.
|
//! Converts a quaternion to a 4 * 4 matrix.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat4x4<valType> toMat4(
|
detail::tmat4x4<valType> toMat4(
|
||||||
detail::tquat<valType> const & x){return gtc::quaternion::mat4_cast(x);}
|
detail::tquat<valType> const & x){return gtc::quaternion::mat4_cast(x);}
|
||||||
|
|
||||||
//! Converts a 3 * 3 matrix to a quaternion.
|
//! Converts a 3 * 3 matrix to a quaternion.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tquat<valType> toQuat(
|
detail::tquat<valType> toQuat(
|
||||||
detail::tmat3x3<valType> const & x){return gtc::quaternion::quat_cast(x);}
|
detail::tmat3x3<valType> const & x){return gtc::quaternion::quat_cast(x);}
|
||||||
|
|
||||||
//! Converts a 4 * 4 matrix to a quaternion.
|
//! Converts a 4 * 4 matrix to a quaternion.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tquat<valType> toQuat(
|
detail::tquat<valType> toQuat(
|
||||||
detail::tmat4x4<valType> const & x){return gtc::quaternion::quat_cast(x);}
|
detail::tmat4x4<valType> const & x){return gtc::quaternion::quat_cast(x);}
|
||||||
|
|
||||||
//! Quaternion interpolation using the rotation short path.
|
//! Quaternion interpolation using the rotation short path.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tquat<T> shortMix(
|
detail::tquat<T> shortMix(
|
||||||
detail::tquat<T> const & x,
|
detail::tquat<T> const & x,
|
||||||
detail::tquat<T> const & y,
|
detail::tquat<T> const & y,
|
||||||
T const & a);
|
T const & a);
|
||||||
|
|
||||||
//! Quaternion normalized linear interpolation.
|
//! Quaternion normalized linear interpolation.
|
||||||
//! From GLM_GTX_quaternion extension.
|
//! From GLM_GTX_quaternion extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tquat<T> fastMix(
|
detail::tquat<T> fastMix(
|
||||||
detail::tquat<T> const & x,
|
detail::tquat<T> const & x,
|
||||||
detail::tquat<T> const & y,
|
detail::tquat<T> const & y,
|
||||||
T const & a);
|
T const & a);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}//namespace quaternion
|
||||||
}//namespace quaternion
|
}//namespace gtx
|
||||||
}//namespace gtx
|
|
||||||
} //namespace glm
|
} //namespace glm
|
||||||
|
|
||||||
#include "quaternion.inl"
|
#include "quaternion.inl"
|
||||||
|
@ -25,11 +25,10 @@
|
|||||||
|
|
||||||
namespace glm{
|
namespace glm{
|
||||||
namespace gtx{
|
namespace gtx{
|
||||||
//! GLM_GTX_random extension: Generate random number from various distribution methods
|
namespace random ///< GLM_GTX_random extension: Generate random number from various distribution methods
|
||||||
namespace random
|
|
||||||
{
|
{
|
||||||
/// \addtogroup gtx_random
|
/// \addtogroup gtx_random
|
||||||
///@{
|
/// @{
|
||||||
|
|
||||||
//! Generate a random number in the interval [-1, 1], according a linear distribution.
|
//! Generate a random number in the interval [-1, 1], according a linear distribution.
|
||||||
//! From GLM_GTX_random extension.
|
//! From GLM_GTX_random extension.
|
||||||
|
@ -22,36 +22,34 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm{
|
namespace glm{
|
||||||
namespace gtx
|
namespace gtx{
|
||||||
|
namespace raw_data ///< GLM_GTX_raw_data extension: Projection of a vector to other one
|
||||||
{
|
{
|
||||||
//! GLM_GTX_raw_data extension: Projection of a vector to other one
|
using namespace gtc::type_precision;
|
||||||
namespace raw_data
|
|
||||||
{
|
|
||||||
using namespace gtc::type_precision;
|
|
||||||
|
|
||||||
/// \addtogroup gtx_raw_data
|
/// \addtogroup gtx_raw_data
|
||||||
///@{
|
///@{
|
||||||
|
|
||||||
//! Type for byte numbers.
|
//! Type for byte numbers.
|
||||||
//! From GLM_GTX_raw_data extension.
|
//! From GLM_GTX_raw_data extension.
|
||||||
typedef uint8 byte;
|
typedef uint8 byte;
|
||||||
|
|
||||||
//! Type for word numbers.
|
//! Type for word numbers.
|
||||||
//! From GLM_GTX_raw_data extension.
|
//! From GLM_GTX_raw_data extension.
|
||||||
typedef uint16 word;
|
typedef uint16 word;
|
||||||
|
|
||||||
//! Type for dword numbers.
|
//! Type for dword numbers.
|
||||||
//! From GLM_GTX_raw_data extension.
|
//! From GLM_GTX_raw_data extension.
|
||||||
typedef uint32 dword;
|
typedef uint32 dword;
|
||||||
|
|
||||||
//! Type for qword numbers.
|
//! Type for qword numbers.
|
||||||
//! From GLM_GTX_raw_data extension.
|
//! From GLM_GTX_raw_data extension.
|
||||||
typedef uint64 qword;
|
typedef uint64 qword;
|
||||||
|
|
||||||
///@}
|
///@}
|
||||||
}
|
}// namespace raw_data
|
||||||
}//namespace gtx
|
}// namespace gtx
|
||||||
}//namespace glm
|
}// namespace glm
|
||||||
|
|
||||||
#include "raw_data.inl"
|
#include "raw_data.inl"
|
||||||
|
|
||||||
|
@ -17,86 +17,79 @@
|
|||||||
# pragma message("GLM: GLM_GTX_reciprocal extension included")
|
# pragma message("GLM: GLM_GTX_reciprocal extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace reciprocal ///< GLM_GTX_reciprocal extension: Define secant, cosecant and cotangent functions.
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_reciprocal
|
||||||
void main_gtx_reciprocal();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Secant function.
|
||||||
//! GLM_GTX_reciprocal extension: Define secant, cosecant and cotangent functions.
|
//! hypotenuse / adjacent or 1 / cos(x)
|
||||||
namespace reciprocal
|
//! From GLM_GTX_reciprocal extension.
|
||||||
{
|
template <typename genType>
|
||||||
/// \addtogroup gtx_reciprocal
|
genType sec(genType const & angle);
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Secant function.
|
//! Cosecant function.
|
||||||
//! hypotenuse / adjacent or 1 / cos(x)
|
//! hypotenuse / opposite or 1 / sin(x)
|
||||||
//! From GLM_GTX_reciprocal extension.
|
//! From GLM_GTX_reciprocal extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType sec(genType const & angle);
|
genType csc(genType const & angle);
|
||||||
|
|
||||||
//! Cosecant function.
|
|
||||||
//! hypotenuse / opposite or 1 / sin(x)
|
|
||||||
//! From GLM_GTX_reciprocal extension.
|
|
||||||
template <typename genType>
|
|
||||||
genType csc(genType const & angle);
|
|
||||||
|
|
||||||
//! Cotangent function.
|
//! Cotangent function.
|
||||||
//! adjacent / opposite or 1 / tan(x)
|
//! adjacent / opposite or 1 / tan(x)
|
||||||
//! From GLM_GTX_reciprocal extension.
|
//! From GLM_GTX_reciprocal extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType cot(genType const & angle);
|
genType cot(genType const & angle);
|
||||||
|
|
||||||
//! Inverse secant function.
|
//! Inverse secant function.
|
||||||
//! From GLM_GTX_reciprocal extension.
|
//! From GLM_GTX_reciprocal extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType asec(genType const & x);
|
genType asec(genType const & x);
|
||||||
|
|
||||||
//! Inverse cosecant function.
|
//! Inverse cosecant function.
|
||||||
//! From GLM_GTX_reciprocal extension.
|
//! From GLM_GTX_reciprocal extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType acsc(genType const & x);
|
genType acsc(genType const & x);
|
||||||
|
|
||||||
//! Inverse cotangent function.
|
//! Inverse cotangent function.
|
||||||
//! From GLM_GTX_reciprocal extension.
|
//! From GLM_GTX_reciprocal extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType acot(genType const & x);
|
genType acot(genType const & x);
|
||||||
|
|
||||||
//! Secant hyperbolic function.
|
//! Secant hyperbolic function.
|
||||||
//! From GLM_GTX_reciprocal extension.
|
//! From GLM_GTX_reciprocal extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType sech(genType const & angle);
|
genType sech(genType const & angle);
|
||||||
|
|
||||||
//! Cosecant hyperbolic function.
|
//! Cosecant hyperbolic function.
|
||||||
//! From GLM_GTX_reciprocal extension.
|
//! From GLM_GTX_reciprocal extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType csch(genType const & angle);
|
genType csch(genType const & angle);
|
||||||
|
|
||||||
//! Cotangent hyperbolic function.
|
//! Cotangent hyperbolic function.
|
||||||
//! From GLM_GTX_reciprocal extension.
|
//! From GLM_GTX_reciprocal extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType coth(genType const & angle);
|
genType coth(genType const & angle);
|
||||||
|
|
||||||
//! Inverse secant hyperbolic function.
|
//! Inverse secant hyperbolic function.
|
||||||
//! From GLM_GTX_reciprocal extension.
|
//! From GLM_GTX_reciprocal extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType asech(genType const & x);
|
genType asech(genType const & x);
|
||||||
|
|
||||||
//! Inverse cosecant hyperbolic function.
|
//! Inverse cosecant hyperbolic function.
|
||||||
//! From GLM_GTX_reciprocal extension.
|
//! From GLM_GTX_reciprocal extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType acsch(genType const & x);
|
genType acsch(genType const & x);
|
||||||
|
|
||||||
//! Inverse cotangent hyperbolic function.
|
//! Inverse cotangent hyperbolic function.
|
||||||
//! From GLM_GTX_reciprocal extension.
|
//! From GLM_GTX_reciprocal extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType acoth(genType const & x);
|
genType acoth(genType const & x);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}//namespace reciprocal
|
||||||
}//namespace reciprocal
|
}//namespace gtx
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "reciprocal.inl"
|
#include "reciprocal.inl"
|
||||||
|
@ -23,88 +23,86 @@
|
|||||||
|
|
||||||
namespace glm{
|
namespace glm{
|
||||||
namespace gtx{
|
namespace gtx{
|
||||||
//! GLM_GTX_rotate_vector extension: Function to directly rotate a vector
|
namespace rotate_vector ///< GLM_GTX_rotate_vector extension: Function to directly rotate a vector
|
||||||
namespace rotate_vector
|
|
||||||
{
|
{
|
||||||
using namespace transform;
|
using namespace transform;
|
||||||
|
|
||||||
/// \addtogroup gtx_rotate_vector
|
/// \addtogroup gtx_rotate_vector
|
||||||
///@{
|
/// @{
|
||||||
|
|
||||||
//! Rotate a two dimensional vector.
|
//! Rotate a two dimensional vector.
|
||||||
//! From GLM_GTX_rotate_vector extension.
|
//! From GLM_GTX_rotate_vector extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec2<T> rotate(
|
detail::tvec2<T> rotate(
|
||||||
detail::tvec2<T> const & v,
|
detail::tvec2<T> const & v,
|
||||||
T const & angle);
|
T const & angle);
|
||||||
|
|
||||||
//! Rotate a three dimensional vector around an axis.
|
//! Rotate a three dimensional vector around an axis.
|
||||||
//! From GLM_GTX_rotate_vector extension.
|
//! From GLM_GTX_rotate_vector extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec3<T> rotate(
|
detail::tvec3<T> rotate(
|
||||||
detail::tvec3<T> const & v,
|
detail::tvec3<T> const & v,
|
||||||
T const & angle,
|
T const & angle,
|
||||||
detail::tvec3<T> const & normal);
|
detail::tvec3<T> const & normal);
|
||||||
|
|
||||||
//! Rotate a four dimensional vector around an axis.
|
//! Rotate a four dimensional vector around an axis.
|
||||||
//! From GLM_GTX_rotate_vector extension.
|
//! From GLM_GTX_rotate_vector extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec4<T> rotate(
|
detail::tvec4<T> rotate(
|
||||||
detail::tvec4<T> const & v,
|
detail::tvec4<T> const & v,
|
||||||
T const & angle,
|
T const & angle,
|
||||||
detail::tvec3<T> const & normal);
|
detail::tvec3<T> const & normal);
|
||||||
|
|
||||||
//! Rotate a three dimensional vector around the X axis.
|
//! Rotate a three dimensional vector around the X axis.
|
||||||
//! From GLM_GTX_rotate_vector extension.
|
//! From GLM_GTX_rotate_vector extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec3<T> rotateX(
|
detail::tvec3<T> rotateX(
|
||||||
detail::tvec3<T> const & v,
|
detail::tvec3<T> const & v,
|
||||||
T const & angle);
|
T const & angle);
|
||||||
|
|
||||||
//! Rotate a three dimensional vector around the Y axis.
|
//! Rotate a three dimensional vector around the Y axis.
|
||||||
//! From GLM_GTX_rotate_vector extension.
|
//! From GLM_GTX_rotate_vector extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec3<T> rotateY(
|
detail::tvec3<T> rotateY(
|
||||||
detail::tvec3<T> const & v,
|
detail::tvec3<T> const & v,
|
||||||
T const & angle);
|
T const & angle);
|
||||||
|
|
||||||
//! Rotate a three dimensional vector around the Z axis.
|
//! Rotate a three dimensional vector around the Z axis.
|
||||||
//! From GLM_GTX_rotate_vector extension.
|
//! From GLM_GTX_rotate_vector extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec3<T> rotateZ(
|
detail::tvec3<T> rotateZ(
|
||||||
detail::tvec3<T> const & v,
|
detail::tvec3<T> const & v,
|
||||||
T const & angle);
|
T const & angle);
|
||||||
|
|
||||||
//! Rotate a four dimentionnals vector around the X axis.
|
//! Rotate a four dimentionnals vector around the X axis.
|
||||||
//! From GLM_GTX_rotate_vector extension.
|
//! From GLM_GTX_rotate_vector extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec4<T> rotateX(
|
detail::tvec4<T> rotateX(
|
||||||
detail::tvec4<T> const & v,
|
detail::tvec4<T> const & v,
|
||||||
T const & angle);
|
T const & angle);
|
||||||
|
|
||||||
//! Rotate a four dimensional vector around the X axis.
|
//! Rotate a four dimensional vector around the X axis.
|
||||||
//! From GLM_GTX_rotate_vector extension.
|
//! From GLM_GTX_rotate_vector extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec4<T> rotateY(
|
detail::tvec4<T> rotateY(
|
||||||
detail::tvec4<T> const & v,
|
detail::tvec4<T> const & v,
|
||||||
T const & angle);
|
T const & angle);
|
||||||
|
|
||||||
//! Rotate a four dimensional vector around the X axis.
|
//! Rotate a four dimensional vector around the X axis.
|
||||||
//! From GLM_GTX_rotate_vector extension.
|
//! From GLM_GTX_rotate_vector extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tvec4<T> rotateZ(
|
detail::tvec4<T> rotateZ(
|
||||||
detail::tvec4<T> const & v,
|
detail::tvec4<T> const & v,
|
||||||
T const & angle);
|
T const & angle);
|
||||||
|
|
||||||
//! Build a rotation matrix from a normal and a up vector.
|
//! Build a rotation matrix from a normal and a up vector.
|
||||||
//! From GLM_GTX_rotate_vector extension.
|
//! From GLM_GTX_rotate_vector extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> orientation(
|
detail::tmat4x4<T> orientation(
|
||||||
detail::tvec3<T> const & Normal,
|
detail::tvec3<T> const & Normal,
|
||||||
detail::tvec3<T> const & Up);
|
detail::tvec3<T> const & Up);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
|
||||||
}//namespace rotate_vector
|
}//namespace rotate_vector
|
||||||
}//namespace gtx
|
}//namespace gtx
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
@ -28,157 +28,153 @@
|
|||||||
# pragma message("GLM: GLM_GTX_simd_mat4 extension included")
|
# pragma message("GLM: GLM_GTX_simd_mat4 extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace detail
|
||||||
{
|
{
|
||||||
namespace detail
|
/// 4x4 Matrix implemented using SIMD SEE intrinsics.
|
||||||
|
/// \ingroup gtx_simd_mat4
|
||||||
|
GLM_ALIGNED_STRUCT(16) fmat4x4SIMD
|
||||||
{
|
{
|
||||||
/// 4x4 Matrix implemented using SIMD SEE intrinsics.
|
enum ctor{null};
|
||||||
/// \ingroup gtx_simd_mat4
|
|
||||||
GLM_ALIGNED_STRUCT(16) fmat4x4SIMD
|
|
||||||
{
|
|
||||||
enum ctor{null};
|
|
||||||
|
|
||||||
typedef float value_type;
|
typedef float value_type;
|
||||||
typedef fvec4SIMD col_type;
|
typedef fvec4SIMD col_type;
|
||||||
typedef fvec4SIMD row_type;
|
typedef fvec4SIMD row_type;
|
||||||
typedef std::size_t size_type;
|
typedef std::size_t size_type;
|
||||||
static size_type value_size();
|
static size_type value_size();
|
||||||
static size_type col_size();
|
static size_type col_size();
|
||||||
static size_type row_size();
|
static size_type row_size();
|
||||||
static bool is_matrix();
|
static bool is_matrix();
|
||||||
|
|
||||||
fvec4SIMD Data[4];
|
fvec4SIMD Data[4];
|
||||||
|
|
||||||
//////////////////////////////////////
|
//////////////////////////////////////
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
fmat4x4SIMD();
|
fmat4x4SIMD();
|
||||||
explicit fmat4x4SIMD(float const & s);
|
explicit fmat4x4SIMD(float const & s);
|
||||||
explicit fmat4x4SIMD(
|
explicit fmat4x4SIMD(
|
||||||
float const & x0, float const & y0, float const & z0, float const & w0,
|
float const & x0, float const & y0, float const & z0, float const & w0,
|
||||||
float const & x1, float const & y1, float const & z1, float const & w1,
|
float const & x1, float const & y1, float const & z1, float const & w1,
|
||||||
float const & x2, float const & y2, float const & z2, float const & w2,
|
float const & x2, float const & y2, float const & z2, float const & w2,
|
||||||
float const & x3, float const & y3, float const & z3, float const & w3);
|
float const & x3, float const & y3, float const & z3, float const & w3);
|
||||||
explicit fmat4x4SIMD(
|
explicit fmat4x4SIMD(
|
||||||
fvec4SIMD const & v0,
|
fvec4SIMD const & v0,
|
||||||
fvec4SIMD const & v1,
|
fvec4SIMD const & v1,
|
||||||
fvec4SIMD const & v2,
|
fvec4SIMD const & v2,
|
||||||
fvec4SIMD const & v3);
|
fvec4SIMD const & v3);
|
||||||
explicit fmat4x4SIMD(
|
explicit fmat4x4SIMD(
|
||||||
tmat4x4<float> const & m);
|
tmat4x4<float> const & m);
|
||||||
|
|
||||||
// Conversions
|
// Conversions
|
||||||
//template <typename U>
|
//template <typename U>
|
||||||
//explicit tmat4x4(tmat4x4<U> const & m);
|
//explicit tmat4x4(tmat4x4<U> const & m);
|
||||||
|
|
||||||
//explicit tmat4x4(tmat2x2<T> const & x);
|
//explicit tmat4x4(tmat2x2<T> const & x);
|
||||||
//explicit tmat4x4(tmat3x3<T> const & x);
|
//explicit tmat4x4(tmat3x3<T> const & x);
|
||||||
//explicit tmat4x4(tmat2x3<T> const & x);
|
//explicit tmat4x4(tmat2x3<T> const & x);
|
||||||
//explicit tmat4x4(tmat3x2<T> const & x);
|
//explicit tmat4x4(tmat3x2<T> const & x);
|
||||||
//explicit tmat4x4(tmat2x4<T> const & x);
|
//explicit tmat4x4(tmat2x4<T> const & x);
|
||||||
//explicit tmat4x4(tmat4x2<T> const & x);
|
//explicit tmat4x4(tmat4x2<T> const & x);
|
||||||
//explicit tmat4x4(tmat3x4<T> const & x);
|
//explicit tmat4x4(tmat3x4<T> const & x);
|
||||||
//explicit tmat4x4(tmat4x3<T> const & x);
|
//explicit tmat4x4(tmat4x3<T> const & x);
|
||||||
|
|
||||||
// Accesses
|
// Accesses
|
||||||
fvec4SIMD & operator[](size_type i);
|
fvec4SIMD & operator[](size_type i);
|
||||||
fvec4SIMD const & operator[](size_type i) const;
|
fvec4SIMD const & operator[](size_type i) const;
|
||||||
|
|
||||||
// Unary updatable operators
|
// Unary updatable operators
|
||||||
fmat4x4SIMD & operator= (fmat4x4SIMD const & m);
|
fmat4x4SIMD & operator= (fmat4x4SIMD const & m);
|
||||||
fmat4x4SIMD & operator+= (float const & s);
|
fmat4x4SIMD & operator+= (float const & s);
|
||||||
fmat4x4SIMD & operator+= (fmat4x4SIMD const & m);
|
fmat4x4SIMD & operator+= (fmat4x4SIMD const & m);
|
||||||
fmat4x4SIMD & operator-= (float const & s);
|
fmat4x4SIMD & operator-= (float const & s);
|
||||||
fmat4x4SIMD & operator-= (fmat4x4SIMD const & m);
|
fmat4x4SIMD & operator-= (fmat4x4SIMD const & m);
|
||||||
fmat4x4SIMD & operator*= (float const & s);
|
fmat4x4SIMD & operator*= (float const & s);
|
||||||
fmat4x4SIMD & operator*= (fmat4x4SIMD const & m);
|
fmat4x4SIMD & operator*= (fmat4x4SIMD const & m);
|
||||||
fmat4x4SIMD & operator/= (float const & s);
|
fmat4x4SIMD & operator/= (float const & s);
|
||||||
fmat4x4SIMD & operator/= (fmat4x4SIMD const & m);
|
fmat4x4SIMD & operator/= (fmat4x4SIMD const & m);
|
||||||
fmat4x4SIMD & operator++ ();
|
fmat4x4SIMD & operator++ ();
|
||||||
fmat4x4SIMD & operator-- ();
|
fmat4x4SIMD & operator-- ();
|
||||||
};
|
};
|
||||||
|
|
||||||
// Binary operators
|
// Binary operators
|
||||||
fmat4x4SIMD operator+ (fmat4x4SIMD const & m, float const & s);
|
fmat4x4SIMD operator+ (fmat4x4SIMD const & m, float const & s);
|
||||||
fmat4x4SIMD operator+ (float const & s, fmat4x4SIMD const & m);
|
fmat4x4SIMD operator+ (float const & s, fmat4x4SIMD const & m);
|
||||||
fmat4x4SIMD operator+ (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
|
fmat4x4SIMD operator+ (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
|
||||||
|
|
||||||
fmat4x4SIMD operator- (fmat4x4SIMD const & m, float const & s);
|
fmat4x4SIMD operator- (fmat4x4SIMD const & m, float const & s);
|
||||||
fmat4x4SIMD operator- (float const & s, fmat4x4SIMD const & m);
|
fmat4x4SIMD operator- (float const & s, fmat4x4SIMD const & m);
|
||||||
fmat4x4SIMD operator- (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
|
fmat4x4SIMD operator- (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
|
||||||
|
|
||||||
fmat4x4SIMD operator* (fmat4x4SIMD const & m, float const & s);
|
fmat4x4SIMD operator* (fmat4x4SIMD const & m, float const & s);
|
||||||
fmat4x4SIMD operator* (float const & s, fmat4x4SIMD const & m);
|
fmat4x4SIMD operator* (float const & s, fmat4x4SIMD const & m);
|
||||||
|
|
||||||
fvec4SIMD operator* (fmat4x4SIMD const & m, fvec4SIMD const & v);
|
fvec4SIMD operator* (fmat4x4SIMD const & m, fvec4SIMD const & v);
|
||||||
fvec4SIMD operator* (fvec4SIMD const & v, fmat4x4SIMD const & m);
|
fvec4SIMD operator* (fvec4SIMD const & v, fmat4x4SIMD const & m);
|
||||||
|
|
||||||
fmat4x4SIMD operator* (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
|
fmat4x4SIMD operator* (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
|
||||||
|
|
||||||
fmat4x4SIMD operator/ (fmat4x4SIMD const & m, float const & s);
|
fmat4x4SIMD operator/ (fmat4x4SIMD const & m, float const & s);
|
||||||
fmat4x4SIMD operator/ (float const & s, fmat4x4SIMD const & m);
|
fmat4x4SIMD operator/ (float const & s, fmat4x4SIMD const & m);
|
||||||
|
|
||||||
fvec4SIMD operator/ (fmat4x4SIMD const & m, fvec4SIMD const & v);
|
fvec4SIMD operator/ (fmat4x4SIMD const & m, fvec4SIMD const & v);
|
||||||
fvec4SIMD operator/ (fvec4SIMD const & v, fmat4x4SIMD const & m);
|
fvec4SIMD operator/ (fvec4SIMD const & v, fmat4x4SIMD const & m);
|
||||||
|
|
||||||
fmat4x4SIMD operator/ (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
|
fmat4x4SIMD operator/ (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
|
||||||
|
|
||||||
// Unary constant operators
|
// Unary constant operators
|
||||||
fmat4x4SIMD const operator- (fmat4x4SIMD const & m);
|
fmat4x4SIMD const operator- (fmat4x4SIMD const & m);
|
||||||
fmat4x4SIMD const operator-- (fmat4x4SIMD const & m, int);
|
fmat4x4SIMD const operator-- (fmat4x4SIMD const & m, int);
|
||||||
fmat4x4SIMD const operator++ (fmat4x4SIMD const & m, int);
|
fmat4x4SIMD const operator++ (fmat4x4SIMD const & m, int);
|
||||||
|
}//namespace detail
|
||||||
|
|
||||||
}//namespace detail
|
namespace gtx{
|
||||||
|
namespace simd_mat4 ///< GLM_GTX_simd_mat4 extension: SIMD implementation of mat4 type.
|
||||||
|
{
|
||||||
|
typedef detail::fmat4x4SIMD simdMat4;
|
||||||
|
|
||||||
namespace gtx{
|
/// \addtogroup gtx_simd_mat4
|
||||||
//! GLM_GTX_simd_mat4 extension: SIMD implementation of mat4 type.
|
///@{
|
||||||
namespace simd_mat4
|
|
||||||
{
|
|
||||||
typedef detail::fmat4x4SIMD simdMat4;
|
|
||||||
|
|
||||||
/// \addtogroup gtx_simd_mat4
|
//! Convert a simdMat4 to a mat4.
|
||||||
///@{
|
//! (From GLM_GTX_simd_mat4 extension)
|
||||||
|
detail::tmat4x4<float> mat4_cast(
|
||||||
|
detail::fmat4x4SIMD const & x);
|
||||||
|
|
||||||
//! Convert a simdMat4 to a mat4.
|
//! Multiply matrix x by matrix y component-wise, i.e.,
|
||||||
//! (From GLM_GTX_simd_mat4 extension)
|
//! result[i][j] is the scalar product of x[i][j] and y[i][j].
|
||||||
detail::tmat4x4<float> mat4_cast(
|
//! (From GLM_GTX_simd_mat4 extension).
|
||||||
detail::fmat4x4SIMD const & x);
|
detail::fmat4x4SIMD matrixCompMult(
|
||||||
|
detail::fmat4x4SIMD const & x,
|
||||||
|
detail::fmat4x4SIMD const & y);
|
||||||
|
|
||||||
//! Multiply matrix x by matrix y component-wise, i.e.,
|
//! Treats the first parameter c as a column vector
|
||||||
//! result[i][j] is the scalar product of x[i][j] and y[i][j].
|
//! and the second parameter r as a row vector
|
||||||
//! (From GLM_GTX_simd_mat4 extension).
|
//! and does a linear algebraic matrix multiply c * r.
|
||||||
detail::fmat4x4SIMD matrixCompMult(
|
//! (From GLM_GTX_simd_mat4 extension).
|
||||||
detail::fmat4x4SIMD const & x,
|
detail::fmat4x4SIMD outerProduct(
|
||||||
detail::fmat4x4SIMD const & y);
|
detail::fvec4SIMD const & c,
|
||||||
|
detail::fvec4SIMD const & r);
|
||||||
|
|
||||||
//! Treats the first parameter c as a column vector
|
//! Returns the transposed matrix of x
|
||||||
//! and the second parameter r as a row vector
|
//! (From GLM_GTX_simd_mat4 extension).
|
||||||
//! and does a linear algebraic matrix multiply c * r.
|
detail::fmat4x4SIMD transpose(
|
||||||
//! (From GLM_GTX_simd_mat4 extension).
|
detail::fmat4x4SIMD const & x);
|
||||||
detail::fmat4x4SIMD outerProduct(
|
|
||||||
detail::fvec4SIMD const & c,
|
|
||||||
detail::fvec4SIMD const & r);
|
|
||||||
|
|
||||||
//! Returns the transposed matrix of x
|
//! Return the determinant of a mat4 matrix.
|
||||||
//! (From GLM_GTX_simd_mat4 extension).
|
//! (From GLM_GTX_simd_mat4 extension).
|
||||||
detail::fmat4x4SIMD transpose(
|
float determinant(
|
||||||
detail::fmat4x4SIMD const & x);
|
detail::fmat4x4SIMD const & m);
|
||||||
|
|
||||||
//! Return the determinant of a mat4 matrix.
|
//! Return the inverse of a mat4 matrix.
|
||||||
//! (From GLM_GTX_simd_mat4 extension).
|
//! (From GLM_GTX_simd_mat4 extension).
|
||||||
float determinant(
|
detail::fmat4x4SIMD inverse(
|
||||||
detail::fmat4x4SIMD const & m);
|
detail::fmat4x4SIMD const & m);
|
||||||
|
|
||||||
//! Return the inverse of a mat4 matrix.
|
/// @}
|
||||||
//! (From GLM_GTX_simd_mat4 extension).
|
}// namespace simd_mat4
|
||||||
detail::fmat4x4SIMD inverse(
|
}// namespace gtx
|
||||||
detail::fmat4x4SIMD const & m);
|
}// namespace glm
|
||||||
|
|
||||||
///@}
|
|
||||||
|
|
||||||
}//namespace simd_mat4
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
|
||||||
|
|
||||||
#include "simd_mat4.inl"
|
#include "simd_mat4.inl"
|
||||||
|
|
||||||
|
@ -28,446 +28,443 @@
|
|||||||
# pragma message("GLM: GLM_GTX_simd_vec4 extension included")
|
# pragma message("GLM: GLM_GTX_simd_vec4 extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace detail
|
||||||
{
|
{
|
||||||
namespace detail
|
/// 4-dimensional vector implemented using SIMD SEE intrinsics.
|
||||||
|
/// \ingroup gtx_simd_vec4
|
||||||
|
GLM_ALIGNED_STRUCT(4) fvec4SIMD
|
||||||
{
|
{
|
||||||
/// 4-dimensional vector implemented using SIMD SEE intrinsics.
|
enum ctor{null};
|
||||||
/// \ingroup gtx_simd_vec4
|
typedef __m128 value_type;
|
||||||
GLM_ALIGNED_STRUCT(4) fvec4SIMD
|
typedef std::size_t size_type;
|
||||||
{
|
static size_type value_size();
|
||||||
enum ctor{null};
|
|
||||||
typedef __m128 value_type;
|
typedef fvec4SIMD type;
|
||||||
typedef std::size_t size_type;
|
typedef tvec4<bool> bool_type;
|
||||||
static size_type value_size();
|
|
||||||
|
__m128 Data;
|
||||||
typedef fvec4SIMD type;
|
|
||||||
typedef tvec4<bool> bool_type;
|
//////////////////////////////////////
|
||||||
|
// Implicit basic constructors
|
||||||
__m128 Data;
|
|
||||||
|
fvec4SIMD();
|
||||||
//////////////////////////////////////
|
fvec4SIMD(__m128 const & Data);
|
||||||
// Implicit basic constructors
|
fvec4SIMD(fvec4SIMD const & v);
|
||||||
|
|
||||||
fvec4SIMD();
|
//////////////////////////////////////
|
||||||
fvec4SIMD(__m128 const & Data);
|
// Explicit basic constructors
|
||||||
fvec4SIMD(fvec4SIMD const & v);
|
|
||||||
|
explicit fvec4SIMD(
|
||||||
//////////////////////////////////////
|
ctor);
|
||||||
// Explicit basic constructors
|
explicit fvec4SIMD(
|
||||||
|
float const & s);
|
||||||
explicit fvec4SIMD(
|
explicit fvec4SIMD(
|
||||||
ctor);
|
float const & x,
|
||||||
explicit fvec4SIMD(
|
float const & y,
|
||||||
float const & s);
|
float const & z,
|
||||||
explicit fvec4SIMD(
|
float const & w);
|
||||||
float const & x,
|
explicit fvec4SIMD(
|
||||||
float const & y,
|
tvec4<float> const & v);
|
||||||
float const & z,
|
|
||||||
float const & w);
|
////////////////////////////////////////
|
||||||
explicit fvec4SIMD(
|
//// Convertion vector constructors
|
||||||
tvec4<float> const & v);
|
|
||||||
|
fvec4SIMD(vec2 const & v, float const & s1, float const & s2);
|
||||||
////////////////////////////////////////
|
fvec4SIMD(float const & s1, vec2 const & v, float const & s2);
|
||||||
//// Convertion vector constructors
|
fvec4SIMD(float const & s1, float const & s2, vec2 const & v);
|
||||||
|
fvec4SIMD(vec3 const & v, float const & s);
|
||||||
fvec4SIMD(vec2 const & v, float const & s1, float const & s2);
|
fvec4SIMD(float const & s, vec3 const & v);
|
||||||
fvec4SIMD(float const & s1, vec2 const & v, float const & s2);
|
fvec4SIMD(vec2 const & v1, vec2 const & v2);
|
||||||
fvec4SIMD(float const & s1, float const & s2, vec2 const & v);
|
//fvec4SIMD(ivec4SIMD const & v);
|
||||||
fvec4SIMD(vec3 const & v, float const & s);
|
|
||||||
fvec4SIMD(float const & s, vec3 const & v);
|
//////////////////////////////////////
|
||||||
fvec4SIMD(vec2 const & v1, vec2 const & v2);
|
// Unary arithmetic operators
|
||||||
//fvec4SIMD(ivec4SIMD const & v);
|
|
||||||
|
fvec4SIMD& operator= (fvec4SIMD const & v);
|
||||||
//////////////////////////////////////
|
fvec4SIMD& operator+=(fvec4SIMD const & v);
|
||||||
// Unary arithmetic operators
|
fvec4SIMD& operator-=(fvec4SIMD const & v);
|
||||||
|
fvec4SIMD& operator*=(fvec4SIMD const & v);
|
||||||
fvec4SIMD& operator= (fvec4SIMD const & v);
|
fvec4SIMD& operator/=(fvec4SIMD const & v);
|
||||||
fvec4SIMD& operator+=(fvec4SIMD const & v);
|
|
||||||
fvec4SIMD& operator-=(fvec4SIMD const & v);
|
fvec4SIMD& operator+=(float const & s);
|
||||||
fvec4SIMD& operator*=(fvec4SIMD const & v);
|
fvec4SIMD& operator-=(float const & s);
|
||||||
fvec4SIMD& operator/=(fvec4SIMD const & v);
|
fvec4SIMD& operator*=(float const & s);
|
||||||
|
fvec4SIMD& operator/=(float const & s);
|
||||||
fvec4SIMD& operator+=(float const & s);
|
|
||||||
fvec4SIMD& operator-=(float const & s);
|
fvec4SIMD& operator++();
|
||||||
fvec4SIMD& operator*=(float const & s);
|
fvec4SIMD& operator--();
|
||||||
fvec4SIMD& operator/=(float const & s);
|
|
||||||
|
//////////////////////////////////////
|
||||||
fvec4SIMD& operator++();
|
// Swizzle operators
|
||||||
fvec4SIMD& operator--();
|
|
||||||
|
template <comp X, comp Y, comp Z, comp W>
|
||||||
//////////////////////////////////////
|
fvec4SIMD& swizzle();
|
||||||
// Swizzle operators
|
template <comp X, comp Y, comp Z, comp W>
|
||||||
|
fvec4SIMD swizzle() const;
|
||||||
template <comp X, comp Y, comp Z, comp W>
|
template <comp X, comp Y, comp Z>
|
||||||
fvec4SIMD& swizzle();
|
fvec4SIMD swizzle() const;
|
||||||
template <comp X, comp Y, comp Z, comp W>
|
template <comp X, comp Y>
|
||||||
fvec4SIMD swizzle() const;
|
fvec4SIMD swizzle() const;
|
||||||
template <comp X, comp Y, comp Z>
|
template <comp X>
|
||||||
fvec4SIMD swizzle() const;
|
fvec4SIMD swizzle() const;
|
||||||
template <comp X, comp Y>
|
};
|
||||||
fvec4SIMD swizzle() const;
|
}//namespace detail
|
||||||
template <comp X>
|
|
||||||
fvec4SIMD swizzle() const;
|
namespace gtx{
|
||||||
};
|
namespace simd_vec4 ///< GLM_GTX_simd_vec4 extension: SIMD implementation of vec4 type.
|
||||||
|
{
|
||||||
}//namespace detail
|
typedef detail::fvec4SIMD simdVec4;
|
||||||
|
|
||||||
namespace gtx{
|
/// \addtogroup gtx_simd_vec4
|
||||||
//! GLM_GTX_simd_vec4 extension: SIMD implementation of vec4 type.
|
///@{
|
||||||
namespace simd_vec4
|
|
||||||
{
|
//! Convert a simdVec4 to a vec4.
|
||||||
typedef detail::fvec4SIMD simdVec4;
|
//! (From GLM_GTX_simd_vec4 extension)
|
||||||
|
detail::tvec4<float> vec4_cast(
|
||||||
/// \addtogroup gtx_simd_vec4
|
detail::fvec4SIMD const & x);
|
||||||
///@{
|
|
||||||
|
//! Returns x if x >= 0; otherwise, it returns -x.
|
||||||
//! Convert a simdVec4 to a vec4.
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
//! (From GLM_GTX_simd_vec4 extension)
|
detail::fvec4SIMD abs(detail::fvec4SIMD const & x);
|
||||||
detail::tvec4<float> vec4_cast(
|
|
||||||
detail::fvec4SIMD const & x);
|
//! Returns 1.0 if x > 0, 0.0 if x = 0, or -1.0 if x < 0.
|
||||||
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
//! Returns x if x >= 0; otherwise, it returns -x.
|
detail::fvec4SIMD sign(detail::fvec4SIMD const & x);
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
|
||||||
detail::fvec4SIMD abs(detail::fvec4SIMD const & x);
|
//! Returns a value equal to the nearest integer that is less then or equal to x.
|
||||||
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
//! Returns 1.0 if x > 0, 0.0 if x = 0, or -1.0 if x < 0.
|
detail::fvec4SIMD floor(detail::fvec4SIMD const & x);
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
|
||||||
detail::fvec4SIMD sign(detail::fvec4SIMD const & x);
|
//! Returns a value equal to the nearest integer to x
|
||||||
|
//! whose absolute value is not larger than the absolute value of x.
|
||||||
//! Returns a value equal to the nearest integer that is less then or equal to x.
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
detail::fvec4SIMD trunc(detail::fvec4SIMD const & x);
|
||||||
detail::fvec4SIMD floor(detail::fvec4SIMD const & x);
|
|
||||||
|
//! Returns a value equal to the nearest integer to x.
|
||||||
//! Returns a value equal to the nearest integer to x
|
//! The fraction 0.5 will round in a direction chosen by the
|
||||||
//! whose absolute value is not larger than the absolute value of x.
|
//! implementation, presumably the direction that is fastest.
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
//! This includes the possibility that round(x) returns the
|
||||||
detail::fvec4SIMD trunc(detail::fvec4SIMD const & x);
|
//! same value as roundEven(x) for all values of x.
|
||||||
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
//! Returns a value equal to the nearest integer to x.
|
detail::fvec4SIMD round(detail::fvec4SIMD const & x);
|
||||||
//! The fraction 0.5 will round in a direction chosen by the
|
|
||||||
//! implementation, presumably the direction that is fastest.
|
//! Returns a value equal to the nearest integer to x.
|
||||||
//! This includes the possibility that round(x) returns the
|
//! A fractional part of 0.5 will round toward the nearest even
|
||||||
//! same value as roundEven(x) for all values of x.
|
//! integer. (Both 3.5 and 4.5 for x will return 4.0.)
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
detail::fvec4SIMD round(detail::fvec4SIMD const & x);
|
//detail::fvec4SIMD roundEven(detail::fvec4SIMD const & x);
|
||||||
|
|
||||||
//! Returns a value equal to the nearest integer to x.
|
//! Returns a value equal to the nearest integer
|
||||||
//! A fractional part of 0.5 will round toward the nearest even
|
//! that is greater than or equal to x.
|
||||||
//! integer. (Both 3.5 and 4.5 for x will return 4.0.)
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
detail::fvec4SIMD ceil(detail::fvec4SIMD const & x);
|
||||||
//detail::fvec4SIMD roundEven(detail::fvec4SIMD const & x);
|
|
||||||
|
//! Return x - floor(x).
|
||||||
//! Returns a value equal to the nearest integer
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
//! that is greater than or equal to x.
|
detail::fvec4SIMD fract(detail::fvec4SIMD const & x);
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
|
||||||
detail::fvec4SIMD ceil(detail::fvec4SIMD const & x);
|
//! Modulus. Returns x - y * floor(x / y)
|
||||||
|
//! for each component in x using the floating point value y.
|
||||||
//! Return x - floor(x).
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
detail::fvec4SIMD mod(
|
||||||
detail::fvec4SIMD fract(detail::fvec4SIMD const & x);
|
detail::fvec4SIMD const & x,
|
||||||
|
detail::fvec4SIMD const & y);
|
||||||
//! Modulus. Returns x - y * floor(x / y)
|
|
||||||
//! for each component in x using the floating point value y.
|
//! Modulus. Returns x - y * floor(x / y)
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
//! for each component in x using the floating point value y.
|
||||||
detail::fvec4SIMD mod(
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
detail::fvec4SIMD const & x,
|
detail::fvec4SIMD mod(
|
||||||
detail::fvec4SIMD const & y);
|
detail::fvec4SIMD const & x,
|
||||||
|
float const & y);
|
||||||
//! Modulus. Returns x - y * floor(x / y)
|
|
||||||
//! for each component in x using the floating point value y.
|
//! Returns the fractional part of x and sets i to the integer
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
//! part (as a whole number floating point value). Both the
|
||||||
detail::fvec4SIMD mod(
|
//! return value and the output parameter will have the same
|
||||||
detail::fvec4SIMD const & x,
|
//! sign as x.
|
||||||
float const & y);
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
|
//detail::fvec4SIMD modf(
|
||||||
//! Returns the fractional part of x and sets i to the integer
|
// detail::fvec4SIMD const & x,
|
||||||
//! part (as a whole number floating point value). Both the
|
// detail::fvec4SIMD & i);
|
||||||
//! return value and the output parameter will have the same
|
|
||||||
//! sign as x.
|
//! Returns y if y < x; otherwise, it returns x.
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
//detail::fvec4SIMD modf(
|
detail::fvec4SIMD min(
|
||||||
// detail::fvec4SIMD const & x,
|
detail::fvec4SIMD const & x,
|
||||||
// detail::fvec4SIMD & i);
|
detail::fvec4SIMD const & y);
|
||||||
|
|
||||||
//! Returns y if y < x; otherwise, it returns x.
|
detail::fvec4SIMD min(
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
detail::fvec4SIMD const & x,
|
||||||
detail::fvec4SIMD min(
|
float const & y);
|
||||||
detail::fvec4SIMD const & x,
|
|
||||||
detail::fvec4SIMD const & y);
|
//! Returns y if x < y; otherwise, it returns x.
|
||||||
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
detail::fvec4SIMD min(
|
detail::fvec4SIMD max(
|
||||||
detail::fvec4SIMD const & x,
|
detail::fvec4SIMD const & x,
|
||||||
float const & y);
|
detail::fvec4SIMD const & y);
|
||||||
|
|
||||||
//! Returns y if x < y; otherwise, it returns x.
|
detail::fvec4SIMD max(
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
detail::fvec4SIMD const & x,
|
||||||
detail::fvec4SIMD max(
|
float const & y);
|
||||||
detail::fvec4SIMD const & x,
|
|
||||||
detail::fvec4SIMD const & y);
|
//! Returns min(max(x, minVal), maxVal) for each component in x
|
||||||
|
//! using the floating-point values minVal and maxVal.
|
||||||
detail::fvec4SIMD max(
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
detail::fvec4SIMD const & x,
|
detail::fvec4SIMD clamp(
|
||||||
float const & y);
|
detail::fvec4SIMD const & x,
|
||||||
|
detail::fvec4SIMD const & minVal,
|
||||||
//! Returns min(max(x, minVal), maxVal) for each component in x
|
detail::fvec4SIMD const & maxVal);
|
||||||
//! using the floating-point values minVal and maxVal.
|
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
detail::fvec4SIMD clamp(
|
||||||
detail::fvec4SIMD clamp(
|
detail::fvec4SIMD const & x,
|
||||||
detail::fvec4SIMD const & x,
|
float const & minVal,
|
||||||
detail::fvec4SIMD const & minVal,
|
float const & maxVal);
|
||||||
detail::fvec4SIMD const & maxVal);
|
|
||||||
|
//! \return If genTypeU is a floating scalar or vector:
|
||||||
detail::fvec4SIMD clamp(
|
//! Returns x * (1.0 - a) + y * a, i.e., the linear blend of
|
||||||
detail::fvec4SIMD const & x,
|
//! x and y using the floating-point value a.
|
||||||
float const & minVal,
|
//! The value for a is not restricted to the range [0, 1].
|
||||||
float const & maxVal);
|
//!
|
||||||
|
//! \return If genTypeU is a boolean scalar or vector:
|
||||||
//! \return If genTypeU is a floating scalar or vector:
|
//! Selects which vector each returned component comes
|
||||||
//! Returns x * (1.0 - a) + y * a, i.e., the linear blend of
|
//! from. For a component of a that is false, the
|
||||||
//! x and y using the floating-point value a.
|
//! corresponding component of x is returned. For a
|
||||||
//! The value for a is not restricted to the range [0, 1].
|
//! component of a that is true, the corresponding
|
||||||
//!
|
//! component of y is returned. Components of x and y that
|
||||||
//! \return If genTypeU is a boolean scalar or vector:
|
//! are not selected are allowed to be invalid floating point
|
||||||
//! Selects which vector each returned component comes
|
//! values and will have no effect on the results. Thus, this
|
||||||
//! from. For a component of a that is false, the
|
//! provides different functionality than
|
||||||
//! corresponding component of x is returned. For a
|
//! genType mix(genType x, genType y, genType(a))
|
||||||
//! component of a that is true, the corresponding
|
//! where a is a Boolean vector.
|
||||||
//! component of y is returned. Components of x and y that
|
//!
|
||||||
//! are not selected are allowed to be invalid floating point
|
//! From GLSL 1.30.08 specification, section 8.3
|
||||||
//! values and will have no effect on the results. Thus, this
|
//!
|
||||||
//! provides different functionality than
|
//! \param[in] x Floating point scalar or vector.
|
||||||
//! genType mix(genType x, genType y, genType(a))
|
//! \param[in] y Floating point scalar or vector.
|
||||||
//! where a is a Boolean vector.
|
//! \param[in] a Floating point or boolean scalar or vector.
|
||||||
//!
|
//!
|
||||||
//! From GLSL 1.30.08 specification, section 8.3
|
// \todo Test when 'a' is a boolean.
|
||||||
//!
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
//! \param[in] x Floating point scalar or vector.
|
detail::fvec4SIMD mix(
|
||||||
//! \param[in] y Floating point scalar or vector.
|
detail::fvec4SIMD const & x,
|
||||||
//! \param[in] a Floating point or boolean scalar or vector.
|
detail::fvec4SIMD const & y,
|
||||||
//!
|
detail::fvec4SIMD const & a);
|
||||||
// \todo Test when 'a' is a boolean.
|
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
//! Returns 0.0 if x < edge, otherwise it returns 1.0.
|
||||||
detail::fvec4SIMD mix(
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
detail::fvec4SIMD const & x,
|
detail::fvec4SIMD step(
|
||||||
detail::fvec4SIMD const & y,
|
detail::fvec4SIMD const & edge,
|
||||||
detail::fvec4SIMD const & a);
|
detail::fvec4SIMD const & x);
|
||||||
|
|
||||||
//! Returns 0.0 if x < edge, otherwise it returns 1.0.
|
detail::fvec4SIMD step(
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
float const & edge,
|
||||||
detail::fvec4SIMD step(
|
detail::fvec4SIMD const & x);
|
||||||
detail::fvec4SIMD const & edge,
|
|
||||||
detail::fvec4SIMD const & x);
|
//! Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and
|
||||||
|
//! performs smooth Hermite interpolation between 0 and 1
|
||||||
detail::fvec4SIMD step(
|
//! when edge0 < x < edge1. This is useful in cases where
|
||||||
float const & edge,
|
//! you would want a threshold function with a smooth
|
||||||
detail::fvec4SIMD const & x);
|
//! transition. This is equivalent to:
|
||||||
|
//! genType t;
|
||||||
//! Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and
|
//! t = clamp ((x – edge0) / (edge1 – edge0), 0, 1);
|
||||||
//! performs smooth Hermite interpolation between 0 and 1
|
//! return t * t * (3 – 2 * t);
|
||||||
//! when edge0 < x < edge1. This is useful in cases where
|
//! Results are undefined if edge0 >= edge1.
|
||||||
//! you would want a threshold function with a smooth
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
//! transition. This is equivalent to:
|
detail::fvec4SIMD smoothstep(
|
||||||
//! genType t;
|
detail::fvec4SIMD const & edge0,
|
||||||
//! t = clamp ((x – edge0) / (edge1 – edge0), 0, 1);
|
detail::fvec4SIMD const & edge1,
|
||||||
//! return t * t * (3 – 2 * t);
|
detail::fvec4SIMD const & x);
|
||||||
//! Results are undefined if edge0 >= edge1.
|
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
detail::fvec4SIMD smoothstep(
|
||||||
detail::fvec4SIMD smoothstep(
|
float const & edge0,
|
||||||
detail::fvec4SIMD const & edge0,
|
float const & edge1,
|
||||||
detail::fvec4SIMD const & edge1,
|
detail::fvec4SIMD const & x);
|
||||||
detail::fvec4SIMD const & x);
|
|
||||||
|
//! Returns true if x holds a NaN (not a number)
|
||||||
detail::fvec4SIMD smoothstep(
|
//! representation in the underlying implementation's set of
|
||||||
float const & edge0,
|
//! floating point representations. Returns false otherwise,
|
||||||
float const & edge1,
|
//! including for implementations with no NaN
|
||||||
detail::fvec4SIMD const & x);
|
//! representations.
|
||||||
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
//! Returns true if x holds a NaN (not a number)
|
//bvec4 isnan(detail::fvec4SIMD const & x);
|
||||||
//! representation in the underlying implementation's set of
|
|
||||||
//! floating point representations. Returns false otherwise,
|
//! Returns true if x holds a positive infinity or negative
|
||||||
//! including for implementations with no NaN
|
//! infinity representation in the underlying implementation's
|
||||||
//! representations.
|
//! set of floating point representations. Returns false
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
//! otherwise, including for implementations with no infinity
|
||||||
//bvec4 isnan(detail::fvec4SIMD const & x);
|
//! representations.
|
||||||
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
//! Returns true if x holds a positive infinity or negative
|
//bvec4 isinf(detail::fvec4SIMD const & x);
|
||||||
//! infinity representation in the underlying implementation's
|
|
||||||
//! set of floating point representations. Returns false
|
//! Returns a signed or unsigned integer value representing
|
||||||
//! otherwise, including for implementations with no infinity
|
//! the encoding of a floating-point value. The floatingpoint
|
||||||
//! representations.
|
//! value's bit-level representation is preserved.
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
//bvec4 isinf(detail::fvec4SIMD const & x);
|
//detail::ivec4SIMD floatBitsToInt(detail::fvec4SIMD const & value);
|
||||||
|
|
||||||
//! Returns a signed or unsigned integer value representing
|
//! Returns a floating-point value corresponding to a signed
|
||||||
//! the encoding of a floating-point value. The floatingpoint
|
//! or unsigned integer encoding of a floating-point value.
|
||||||
//! value's bit-level representation is preserved.
|
//! If an inf or NaN is passed in, it will not signal, and the
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
//! resulting floating point value is unspecified. Otherwise,
|
||||||
//detail::ivec4SIMD floatBitsToInt(detail::fvec4SIMD const & value);
|
//! the bit-level representation is preserved.
|
||||||
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
//! Returns a floating-point value corresponding to a signed
|
//detail::fvec4SIMD intBitsToFloat(detail::ivec4SIMD const & value);
|
||||||
//! or unsigned integer encoding of a floating-point value.
|
|
||||||
//! If an inf or NaN is passed in, it will not signal, and the
|
//! Computes and returns a * b + c.
|
||||||
//! resulting floating point value is unspecified. Otherwise,
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
//! the bit-level representation is preserved.
|
detail::fvec4SIMD fma(
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
detail::fvec4SIMD const & a,
|
||||||
//detail::fvec4SIMD intBitsToFloat(detail::ivec4SIMD const & value);
|
detail::fvec4SIMD const & b,
|
||||||
|
detail::fvec4SIMD const & c);
|
||||||
//! Computes and returns a * b + c.
|
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
//! Splits x into a floating-point significand in the range
|
||||||
detail::fvec4SIMD fma(
|
//! [0.5, 1.0) and an integral exponent of two, such that:
|
||||||
detail::fvec4SIMD const & a,
|
//! x = significand * exp(2, exponent)
|
||||||
detail::fvec4SIMD const & b,
|
//! The significand is returned by the function and the
|
||||||
detail::fvec4SIMD const & c);
|
//! exponent is returned in the parameter exp. For a
|
||||||
|
//! floating-point value of zero, the significant and exponent
|
||||||
//! Splits x into a floating-point significand in the range
|
//! are both zero. For a floating-point value that is an
|
||||||
//! [0.5, 1.0) and an integral exponent of two, such that:
|
//! infinity or is not a number, the results are undefined.
|
||||||
//! x = significand * exp(2, exponent)
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
//! The significand is returned by the function and the
|
//detail::fvec4SIMD frexp(detail::fvec4SIMD const & x, detail::ivec4SIMD & exp);
|
||||||
//! exponent is returned in the parameter exp. For a
|
|
||||||
//! floating-point value of zero, the significant and exponent
|
//! Builds a floating-point number from x and the
|
||||||
//! are both zero. For a floating-point value that is an
|
//! corresponding integral exponent of two in exp, returning:
|
||||||
//! infinity or is not a number, the results are undefined.
|
//! significand * exp(2, exponent)
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
//! If this product is too large to be represented in the
|
||||||
//detail::fvec4SIMD frexp(detail::fvec4SIMD const & x, detail::ivec4SIMD & exp);
|
//! floating-point type, the result is undefined.
|
||||||
|
//! (From GLM_GTX_simd_vec4 extension, common function)
|
||||||
//! Builds a floating-point number from x and the
|
//detail::fvec4SIMD ldexp(detail::fvec4SIMD const & x, detail::ivec4SIMD const & exp);
|
||||||
//! corresponding integral exponent of two in exp, returning:
|
|
||||||
//! significand * exp(2, exponent)
|
//! Returns the length of x, i.e., sqrt(x * x).
|
||||||
//! If this product is too large to be represented in the
|
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
||||||
//! floating-point type, the result is undefined.
|
float length(
|
||||||
//! (From GLM_GTX_simd_vec4 extension, common function)
|
detail::fvec4SIMD const & x);
|
||||||
//detail::fvec4SIMD ldexp(detail::fvec4SIMD const & x, detail::ivec4SIMD const & exp);
|
|
||||||
|
//! Returns the length of x, i.e., sqrt(x * x).
|
||||||
//! Returns the length of x, i.e., sqrt(x * x).
|
//! Less accurate but much faster than simdLength.
|
||||||
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
||||||
float length(
|
float fastLength(
|
||||||
detail::fvec4SIMD const & x);
|
detail::fvec4SIMD const & x);
|
||||||
|
|
||||||
//! Returns the length of x, i.e., sqrt(x * x).
|
//! Returns the length of x, i.e., sqrt(x * x).
|
||||||
//! Less accurate but much faster than simdLength.
|
//! Slightly more accurate but much slower than simdLength.
|
||||||
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
||||||
float fastLength(
|
float niceLength(
|
||||||
detail::fvec4SIMD const & x);
|
detail::fvec4SIMD const & x);
|
||||||
|
|
||||||
//! Returns the length of x, i.e., sqrt(x * x).
|
//! Returns the length of x, i.e., sqrt(x * x).
|
||||||
//! Slightly more accurate but much slower than simdLength.
|
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
||||||
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
detail::fvec4SIMD length4(
|
||||||
float niceLength(
|
detail::fvec4SIMD const & x);
|
||||||
detail::fvec4SIMD const & x);
|
|
||||||
|
//! Returns the length of x, i.e., sqrt(x * x).
|
||||||
//! Returns the length of x, i.e., sqrt(x * x).
|
//! Less accurate but much faster than simdLength4.
|
||||||
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
||||||
detail::fvec4SIMD length4(
|
detail::fvec4SIMD fastLength4(
|
||||||
detail::fvec4SIMD const & x);
|
detail::fvec4SIMD const & x);
|
||||||
|
|
||||||
//! Returns the length of x, i.e., sqrt(x * x).
|
//! Returns the length of x, i.e., sqrt(x * x).
|
||||||
//! Less accurate but much faster than simdLength4.
|
//! Slightly more accurate but much slower than simdLength4.
|
||||||
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
||||||
detail::fvec4SIMD fastLength4(
|
detail::fvec4SIMD niceLength4(
|
||||||
detail::fvec4SIMD const & x);
|
detail::fvec4SIMD const & x);
|
||||||
|
|
||||||
//! Returns the length of x, i.e., sqrt(x * x).
|
//! Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).
|
||||||
//! Slightly more accurate but much slower than simdLength4.
|
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
||||||
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
float distance(
|
||||||
detail::fvec4SIMD niceLength4(
|
detail::fvec4SIMD const & p0,
|
||||||
detail::fvec4SIMD const & x);
|
detail::fvec4SIMD const & p1);
|
||||||
|
|
||||||
//! Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).
|
//! Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).
|
||||||
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
||||||
float distance(
|
detail::fvec4SIMD distance4(
|
||||||
detail::fvec4SIMD const & p0,
|
detail::fvec4SIMD const & p0,
|
||||||
detail::fvec4SIMD const & p1);
|
detail::fvec4SIMD const & p1);
|
||||||
|
|
||||||
//! Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).
|
//! Returns the dot product of x and y, i.e., result = x * y.
|
||||||
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
||||||
detail::fvec4SIMD distance4(
|
float simdDot(
|
||||||
detail::fvec4SIMD const & p0,
|
detail::fvec4SIMD const & x,
|
||||||
detail::fvec4SIMD const & p1);
|
detail::fvec4SIMD const & y);
|
||||||
|
|
||||||
//! Returns the dot product of x and y, i.e., result = x * y.
|
//! Returns the dot product of x and y, i.e., result = x * y.
|
||||||
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
||||||
float simdDot(
|
detail::fvec4SIMD dot4(
|
||||||
detail::fvec4SIMD const & x,
|
detail::fvec4SIMD const & x,
|
||||||
detail::fvec4SIMD const & y);
|
detail::fvec4SIMD const & y);
|
||||||
|
|
||||||
//! Returns the dot product of x and y, i.e., result = x * y.
|
//! Returns the cross product of x and y.
|
||||||
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
||||||
detail::fvec4SIMD dot4(
|
detail::fvec4SIMD cross(
|
||||||
detail::fvec4SIMD const & x,
|
detail::fvec4SIMD const & x,
|
||||||
detail::fvec4SIMD const & y);
|
detail::fvec4SIMD const & y);
|
||||||
|
|
||||||
//! Returns the cross product of x and y.
|
//! Returns a vector in the same direction as x but with length of 1.
|
||||||
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
||||||
detail::fvec4SIMD cross(
|
detail::fvec4SIMD normalize(
|
||||||
detail::fvec4SIMD const & x,
|
detail::fvec4SIMD const & x);
|
||||||
detail::fvec4SIMD const & y);
|
|
||||||
|
//! Returns a vector in the same direction as x but with length of 1.
|
||||||
//! Returns a vector in the same direction as x but with length of 1.
|
//! Less accurate but much faster than simdNormalize.
|
||||||
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
||||||
detail::fvec4SIMD normalize(
|
detail::fvec4SIMD fastNormalize(
|
||||||
detail::fvec4SIMD const & x);
|
detail::fvec4SIMD const & x);
|
||||||
|
|
||||||
//! Returns a vector in the same direction as x but with length of 1.
|
//! If dot(Nref, I) < 0.0, return N, otherwise, return -N.
|
||||||
//! Less accurate but much faster than simdNormalize.
|
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
||||||
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
detail::fvec4SIMD simdFaceforward(
|
||||||
detail::fvec4SIMD fastNormalize(
|
detail::fvec4SIMD const & N,
|
||||||
detail::fvec4SIMD const & x);
|
detail::fvec4SIMD const & I,
|
||||||
|
detail::fvec4SIMD const & Nref);
|
||||||
//! If dot(Nref, I) < 0.0, return N, otherwise, return -N.
|
|
||||||
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
//! For the incident vector I and surface orientation N,
|
||||||
detail::fvec4SIMD simdFaceforward(
|
//! returns the reflection direction : result = I - 2.0 * dot(N, I) * N.
|
||||||
detail::fvec4SIMD const & N,
|
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
||||||
detail::fvec4SIMD const & I,
|
detail::fvec4SIMD reflect(
|
||||||
detail::fvec4SIMD const & Nref);
|
detail::fvec4SIMD const & I,
|
||||||
|
detail::fvec4SIMD const & N);
|
||||||
//! For the incident vector I and surface orientation N,
|
|
||||||
//! returns the reflection direction : result = I - 2.0 * dot(N, I) * N.
|
//! For the incident vector I and surface normal N,
|
||||||
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
//! and the ratio of indices of refraction eta,
|
||||||
detail::fvec4SIMD reflect(
|
//! return the refraction vector.
|
||||||
detail::fvec4SIMD const & I,
|
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
||||||
detail::fvec4SIMD const & N);
|
detail::fvec4SIMD refract(
|
||||||
|
detail::fvec4SIMD const & I,
|
||||||
//! For the incident vector I and surface normal N,
|
detail::fvec4SIMD const & N,
|
||||||
//! and the ratio of indices of refraction eta,
|
float const & eta);
|
||||||
//! return the refraction vector.
|
|
||||||
//! (From GLM_GTX_simd_vec4 extension, geometry functions)
|
//! Returns the positive square root of x.
|
||||||
detail::fvec4SIMD refract(
|
//! (From GLM_GTX_simd_vec4 extension, exponential function)
|
||||||
detail::fvec4SIMD const & I,
|
detail::fvec4SIMD sqrt(
|
||||||
detail::fvec4SIMD const & N,
|
detail::fvec4SIMD const & x);
|
||||||
float const & eta);
|
|
||||||
|
//! Returns the positive square root of x with the nicest quality but very slow.
|
||||||
//! Returns the positive square root of x.
|
//! Slightly more accurate but much slower than simdSqrt.
|
||||||
//! (From GLM_GTX_simd_vec4 extension, exponential function)
|
//! (From GLM_GTX_simd_vec4 extension, exponential function)
|
||||||
detail::fvec4SIMD sqrt(
|
detail::fvec4SIMD niceSqrt(
|
||||||
detail::fvec4SIMD const & x);
|
detail::fvec4SIMD const & x);
|
||||||
|
|
||||||
//! Returns the positive square root of x with the nicest quality but very slow.
|
//! Returns the positive square root of x
|
||||||
//! Slightly more accurate but much slower than simdSqrt.
|
//! Less accurate but much faster than sqrt.
|
||||||
//! (From GLM_GTX_simd_vec4 extension, exponential function)
|
//! (From GLM_GTX_simd_vec4 extension, exponential function)
|
||||||
detail::fvec4SIMD niceSqrt(
|
detail::fvec4SIMD fastSqrt(
|
||||||
detail::fvec4SIMD const & x);
|
detail::fvec4SIMD const & x);
|
||||||
|
|
||||||
//! Returns the positive square root of x
|
//! Returns the reciprocal of the positive square root of x.
|
||||||
//! Less accurate but much faster than sqrt.
|
//! (From GLM_GTX_simd_vec4 extension, exponential function)
|
||||||
//! (From GLM_GTX_simd_vec4 extension, exponential function)
|
detail::fvec4SIMD inversesqrt(
|
||||||
detail::fvec4SIMD fastSqrt(
|
detail::fvec4SIMD const & x);
|
||||||
detail::fvec4SIMD const & x);
|
|
||||||
|
//! Returns the reciprocal of the positive square root of x.
|
||||||
//! Returns the reciprocal of the positive square root of x.
|
//! Faster than inversesqrt but less accurate.
|
||||||
//! (From GLM_GTX_simd_vec4 extension, exponential function)
|
//! (From GLM_GTX_simd_vec4 extension, exponential function)
|
||||||
detail::fvec4SIMD inversesqrt(
|
detail::fvec4SIMD fastInversesqrt(
|
||||||
detail::fvec4SIMD const & x);
|
detail::fvec4SIMD const & x);
|
||||||
|
|
||||||
//! Returns the reciprocal of the positive square root of x.
|
/// @}
|
||||||
//! Faster than inversesqrt but less accurate.
|
}//namespace simd_vec4
|
||||||
//! (From GLM_GTX_simd_vec4 extension, exponential function)
|
}//namespace gtx
|
||||||
detail::fvec4SIMD fastInversesqrt(
|
|
||||||
detail::fvec4SIMD const & x);
|
|
||||||
|
|
||||||
///@}
|
|
||||||
}//namespace simd_vec4
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "simd_vec4.inl"
|
#include "simd_vec4.inl"
|
||||||
|
@ -20,50 +20,47 @@
|
|||||||
# pragma message("GLM: GLM_GTX_simplex extension included")
|
# pragma message("GLM: GLM_GTX_simplex extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace spline ///< GLM_GTX_simplex extension: Spline functions
|
||||||
{
|
{
|
||||||
namespace gtx{
|
/// \addtogroup gtx_spline
|
||||||
//! GLM_GTX_simplex extension: Spline functions
|
///@{
|
||||||
namespace spline
|
|
||||||
{
|
|
||||||
/// \addtogroup gtx_spline
|
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Return a point from a catmull rom curve.
|
//! Return a point from a catmull rom curve.
|
||||||
//! From GLM_GTX_spline extension.
|
//! From GLM_GTX_spline extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType catmullRom(
|
genType catmullRom(
|
||||||
genType const & v1,
|
genType const & v1,
|
||||||
genType const & v2,
|
genType const & v2,
|
||||||
genType const & v3,
|
genType const & v3,
|
||||||
genType const & v4,
|
genType const & v4,
|
||||||
typename genType::value_type const & s);
|
typename genType::value_type const & s);
|
||||||
|
|
||||||
//! Return a point from a hermite curve.
|
//! Return a point from a hermite curve.
|
||||||
//! From GLM_GTX_spline extension.
|
//! From GLM_GTX_spline extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType hermite(
|
genType hermite(
|
||||||
genType const & v1,
|
genType const & v1,
|
||||||
genType const & t1,
|
genType const & t1,
|
||||||
genType const & v2,
|
genType const & v2,
|
||||||
genType const & t2,
|
genType const & t2,
|
||||||
typename genType::value_type const & s);
|
typename genType::value_type const & s);
|
||||||
|
|
||||||
//! Return a point from a cubic curve.
|
//! Return a point from a cubic curve.
|
||||||
//! From GLM_GTX_spline extension.
|
//! From GLM_GTX_spline extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType cubic(
|
genType cubic(
|
||||||
genType const & v1,
|
genType const & v1,
|
||||||
genType const & v2,
|
genType const & v2,
|
||||||
genType const & v3,
|
genType const & v3,
|
||||||
genType const & v4,
|
genType const & v4,
|
||||||
typename genType::value_type const & s);
|
typename genType::value_type const & s);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}// namespace simplex
|
||||||
}//namespace simplex
|
}// namespace gtx
|
||||||
}//namespace gtx
|
}// namespace glm
|
||||||
}//namespace glm
|
|
||||||
|
|
||||||
#include "simplex.inl"
|
#include "simplex.inl"
|
||||||
|
|
||||||
|
@ -21,51 +21,48 @@
|
|||||||
# pragma message("GLM: GLM_GTX_spline extension included")
|
# pragma message("GLM: GLM_GTX_spline extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace spline ///< GLM_GTX_spline extension: Spline functions
|
||||||
{
|
{
|
||||||
namespace gtx{
|
using namespace gtx::optimum_pow;
|
||||||
//! GLM_GTX_spline extension: Spline functions
|
|
||||||
namespace spline
|
|
||||||
{
|
|
||||||
using namespace gtx::optimum_pow;
|
|
||||||
|
|
||||||
/// \addtogroup gtx_spline
|
/// \addtogroup gtx_spline
|
||||||
///@{
|
/// @{
|
||||||
|
|
||||||
//! Return a point from a catmull rom curve.
|
//! Return a point from a catmull rom curve.
|
||||||
//! From GLM_GTX_spline extension.
|
//! From GLM_GTX_spline extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType catmullRom(
|
genType catmullRom(
|
||||||
genType const & v1,
|
genType const & v1,
|
||||||
genType const & v2,
|
genType const & v2,
|
||||||
genType const & v3,
|
genType const & v3,
|
||||||
genType const & v4,
|
genType const & v4,
|
||||||
typename genType::value_type const & s);
|
typename genType::value_type const & s);
|
||||||
|
|
||||||
//! Return a point from a hermite curve.
|
//! Return a point from a hermite curve.
|
||||||
//! From GLM_GTX_spline extension.
|
//! From GLM_GTX_spline extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType hermite(
|
genType hermite(
|
||||||
genType const & v1,
|
genType const & v1,
|
||||||
genType const & t1,
|
genType const & t1,
|
||||||
genType const & v2,
|
genType const & v2,
|
||||||
genType const & t2,
|
genType const & t2,
|
||||||
typename genType::value_type const & s);
|
typename genType::value_type const & s);
|
||||||
|
|
||||||
//! Return a point from a cubic curve.
|
//! Return a point from a cubic curve.
|
||||||
//! From GLM_GTX_spline extension.
|
//! From GLM_GTX_spline extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType cubic(
|
genType cubic(
|
||||||
genType const & v1,
|
genType const & v1,
|
||||||
genType const & v2,
|
genType const & v2,
|
||||||
genType const & v3,
|
genType const & v3,
|
||||||
genType const & v4,
|
genType const & v4,
|
||||||
typename genType::value_type const & s);
|
typename genType::value_type const & s);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}//namespace spline
|
||||||
}//namespace spline
|
}//namespace gtx
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "spline.inl"
|
#include "spline.inl"
|
||||||
|
@ -21,54 +21,48 @@
|
|||||||
# pragma message("GLM: GLM_GTX_std_based_type extension included")
|
# pragma message("GLM: GLM_GTX_std_based_type extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace std_based_type ///< GLM_GTX_std_based_type extension: Add support vector types based on C++ standard type
|
||||||
{
|
{
|
||||||
namespace test{
|
typedef detail::tvec2<std::size_t> size2;
|
||||||
void main_gtx_std_based_type();
|
typedef detail::tvec3<std::size_t> size3;
|
||||||
}//namespace test
|
typedef detail::tvec4<std::size_t> size4;
|
||||||
|
|
||||||
namespace gtx{
|
typedef detail::tvec2<signed char> scvec2;
|
||||||
//! GLM_GTX_std_based_type extension: Add support vector types based on C++ standard type
|
typedef detail::tvec3<signed char> scvec3;
|
||||||
namespace std_based_type
|
typedef detail::tvec4<signed char> scvec4;
|
||||||
{
|
|
||||||
typedef detail::tvec2<std::size_t> size2;
|
|
||||||
typedef detail::tvec3<std::size_t> size3;
|
|
||||||
typedef detail::tvec4<std::size_t> size4;
|
|
||||||
|
|
||||||
typedef detail::tvec2<signed char> scvec2;
|
typedef detail::tvec2<unsigned char> ucvec2;
|
||||||
typedef detail::tvec3<signed char> scvec3;
|
typedef detail::tvec3<unsigned char> ucvec3;
|
||||||
typedef detail::tvec4<signed char> scvec4;
|
typedef detail::tvec4<unsigned char> ucvec4;
|
||||||
|
|
||||||
typedef detail::tvec2<unsigned char> ucvec2;
|
typedef detail::tvec2<signed short> ssvec2;
|
||||||
typedef detail::tvec3<unsigned char> ucvec3;
|
typedef detail::tvec3<signed short> ssvec3;
|
||||||
typedef detail::tvec4<unsigned char> ucvec4;
|
typedef detail::tvec4<signed short> ssvec4;
|
||||||
|
|
||||||
typedef detail::tvec2<signed short> ssvec2;
|
typedef detail::tvec2<unsigned short> usvec2;
|
||||||
typedef detail::tvec3<signed short> ssvec3;
|
typedef detail::tvec3<unsigned short> usvec3;
|
||||||
typedef detail::tvec4<signed short> ssvec4;
|
typedef detail::tvec4<unsigned short> usvec4;
|
||||||
|
|
||||||
typedef detail::tvec2<unsigned short> usvec2;
|
typedef detail::tvec2<signed int> sivec2;
|
||||||
typedef detail::tvec3<unsigned short> usvec3;
|
typedef detail::tvec3<signed int> sivec3;
|
||||||
typedef detail::tvec4<unsigned short> usvec4;
|
typedef detail::tvec4<signed int> sivec4;
|
||||||
|
|
||||||
typedef detail::tvec2<signed int> sivec2;
|
typedef detail::tvec2<unsigned int> uivec2;
|
||||||
typedef detail::tvec3<signed int> sivec3;
|
typedef detail::tvec3<unsigned int> uivec3;
|
||||||
typedef detail::tvec4<signed int> sivec4;
|
typedef detail::tvec4<unsigned int> uivec4;
|
||||||
|
|
||||||
typedef detail::tvec2<unsigned int> uivec2;
|
typedef detail::tvec2<signed long> slvec2;
|
||||||
typedef detail::tvec3<unsigned int> uivec3;
|
typedef detail::tvec3<signed long> slvec3;
|
||||||
typedef detail::tvec4<unsigned int> uivec4;
|
typedef detail::tvec4<signed long> slvec4;
|
||||||
|
|
||||||
typedef detail::tvec2<signed long> slvec2;
|
typedef detail::tvec2<unsigned long> ulvec2;
|
||||||
typedef detail::tvec3<signed long> slvec3;
|
typedef detail::tvec3<unsigned long> ulvec3;
|
||||||
typedef detail::tvec4<signed long> slvec4;
|
typedef detail::tvec4<unsigned long> ulvec4;
|
||||||
|
|
||||||
typedef detail::tvec2<unsigned long> ulvec2;
|
}//namespace std_based_type
|
||||||
typedef detail::tvec3<unsigned long> ulvec3;
|
}//namespace gtx
|
||||||
typedef detail::tvec4<unsigned long> ulvec4;
|
|
||||||
|
|
||||||
}//namespace std_based_type
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "std_based_type.inl"
|
#include "std_based_type.inl"
|
||||||
|
@ -28,33 +28,26 @@
|
|||||||
# pragma message("GLM: GLM_GTX_string_cast extension included")
|
# pragma message("GLM: GLM_GTX_string_cast extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace string_cast ///< GLM_GTX_string_cast extension: Setup strings for GLM type values
|
||||||
{
|
{
|
||||||
namespace test{
|
using namespace gtc::half_float;
|
||||||
void main_gtx_string_cast();
|
using namespace gtx::integer;
|
||||||
}//namespace test
|
using namespace gtx::unsigned_int;
|
||||||
|
using namespace gtx::quaternion;
|
||||||
|
|
||||||
namespace gtx{
|
/// \addtogroup gtx_string_cast
|
||||||
//! GLM_GTX_string_cast extension: Setup strings for GLM type values
|
/// @{
|
||||||
namespace string_cast
|
|
||||||
{
|
|
||||||
using namespace gtc::half_float;
|
|
||||||
using namespace gtx::integer;
|
|
||||||
using namespace gtx::unsigned_int;
|
|
||||||
using namespace gtx::quaternion;
|
|
||||||
|
|
||||||
/// \addtogroup gtx_string_cast
|
//! Create a string from a GLM type value.
|
||||||
///@{
|
//! From GLM_GTX_string_cast extension.
|
||||||
|
template <typename genType>
|
||||||
|
std::string to_string(genType const & x);
|
||||||
|
|
||||||
//! Create a string from a GLM type value.
|
/// @}
|
||||||
//! From GLM_GTX_string_cast extension.
|
}//namespace string_cast
|
||||||
template <typename genType>
|
}//namespace gtx
|
||||||
std::string to_string(genType const & x);
|
|
||||||
|
|
||||||
///@}
|
|
||||||
|
|
||||||
}//namespace string_cast
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "string_cast.inl"
|
#include "string_cast.inl"
|
||||||
|
@ -42,95 +42,88 @@
|
|||||||
# pragma message("GLM: GLM_GTX_transform extension included")
|
# pragma message("GLM: GLM_GTX_transform extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace transform ///< GLM_GTX_transform extension: Add transformation matrices
|
||||||
{
|
{
|
||||||
namespace test{
|
using namespace gtc::matrix_transform;
|
||||||
void main_gtx_transform();
|
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
/// \addtogroup gtx_transform
|
||||||
//! GLM_GTX_transform extension: Add transformation matrices
|
/// @{
|
||||||
namespace transform
|
|
||||||
{
|
|
||||||
using namespace gtc::matrix_transform;
|
|
||||||
|
|
||||||
/// \addtogroup gtx_transform
|
//! Builds a translation 4 * 4 matrix created from 3 scalars.
|
||||||
///@{
|
//! - From \link gtx_transform GLM_GTX_transform \endlink extension
|
||||||
|
//! - See also: \link glm::gtc::matrix_transform::translate GLM_GTC_matrix_transform \endlink
|
||||||
//! Builds a translation 4 * 4 matrix created from 3 scalars.
|
template <typename T>
|
||||||
//! - From \link gtx_transform GLM_GTX_transform \endlink extension
|
detail::tmat4x4<T> translate(
|
||||||
//! - See also: \link glm::gtc::matrix_transform::translate GLM_GTC_matrix_transform \endlink
|
T x, T y, T z);
|
||||||
template <typename T>
|
|
||||||
detail::tmat4x4<T> translate(
|
|
||||||
T x, T y, T z);
|
|
||||||
|
|
||||||
//! Transforms a matrix with a translation 4 * 4 matrix created from 3 scalars.
|
//! Transforms a matrix with a translation 4 * 4 matrix created from 3 scalars.
|
||||||
//! - From \link gtx_transform GLM_GTX_transform \endlink extension
|
//! - From \link gtx_transform GLM_GTX_transform \endlink extension
|
||||||
//! - See also: \link glm::gtc::matrix_transform::translate GLM_GTC_matrix_transform \endlink
|
//! - See also: \link glm::gtc::matrix_transform::translate GLM_GTC_matrix_transform \endlink
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> translate(
|
detail::tmat4x4<T> translate(
|
||||||
detail::tmat4x4<T> const & m,
|
detail::tmat4x4<T> const & m,
|
||||||
T x, T y, T z);
|
T x, T y, T z);
|
||||||
|
|
||||||
//! Transforms a matrix with a translation 4 * 4 matrix created from 3 scalars.
|
//! Transforms a matrix with a translation 4 * 4 matrix created from 3 scalars.
|
||||||
//! - From \link gtx_transform GLM_GTX_transform \endlink extension
|
//! - From \link gtx_transform GLM_GTX_transform \endlink extension
|
||||||
//! - See also: \link glm::gtc::matrix_transform::translate GLM_GTC_matrix_transform \endlink
|
//! - See also: \link glm::gtc::matrix_transform::translate GLM_GTC_matrix_transform \endlink
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> translate(
|
detail::tmat4x4<T> translate(
|
||||||
detail::tvec3<T> const & v);
|
detail::tvec3<T> const & v);
|
||||||
|
|
||||||
//! Builds a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in degrees.
|
//! Builds a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in degrees.
|
||||||
//! - From \link gtx_transform GLM_GTX_transform \endlink extension
|
//! - From \link gtx_transform GLM_GTX_transform \endlink extension
|
||||||
//! - See also: \link glm::gtc::matrix_transform::rotate GLM_GTC_matrix_transform \endlink
|
//! - See also: \link glm::gtc::matrix_transform::rotate GLM_GTC_matrix_transform \endlink
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> rotate(
|
detail::tmat4x4<T> rotate(
|
||||||
T angle,
|
T angle,
|
||||||
T x, T y, T z);
|
T x, T y, T z);
|
||||||
|
|
||||||
//! Builds a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in degrees.
|
//! Builds a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in degrees.
|
||||||
//! - From \link gtx_transform GLM_GTX_transform \endlink extension
|
//! - From \link gtx_transform GLM_GTX_transform \endlink extension
|
||||||
//! - See also: \link glm::gtc::matrix_transform::rotate GLM_GTC_matrix_transform \endlink
|
//! - See also: \link glm::gtc::matrix_transform::rotate GLM_GTC_matrix_transform \endlink
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> rotate(
|
detail::tmat4x4<T> rotate(
|
||||||
T angle,
|
T angle,
|
||||||
detail::tvec3<T> const & v);
|
detail::tvec3<T> const & v);
|
||||||
|
|
||||||
//! Transforms a matrix with a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in degrees.
|
//! Transforms a matrix with a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in degrees.
|
||||||
//! - From \link gtx_transform GLM_GTX_transform \endlink extension
|
//! - From \link gtx_transform GLM_GTX_transform \endlink extension
|
||||||
//! - See also: \link glm::gtc::matrix_transform::rotate GLM_GTC_matrix_transform \endlink
|
//! - See also: \link glm::gtc::matrix_transform::rotate GLM_GTC_matrix_transform \endlink
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> rotate(
|
detail::tmat4x4<T> rotate(
|
||||||
detail::tmat4x4<T> const & m,
|
detail::tmat4x4<T> const & m,
|
||||||
T angle,
|
T angle,
|
||||||
T x, T y, T z);
|
T x, T y, T z);
|
||||||
|
|
||||||
//! Builds a scale 4 * 4 matrix created from 3 scalars.
|
//! Builds a scale 4 * 4 matrix created from 3 scalars.
|
||||||
//! - From \link gtx_transform GLM_GTX_transform \endlink extension
|
//! - From \link gtx_transform GLM_GTX_transform \endlink extension
|
||||||
//! - See also: \link glm::gtc::matrix_transform::scale GLM_GTC_matrix_transform \endlink
|
//! - See also: \link glm::gtc::matrix_transform::scale GLM_GTC_matrix_transform \endlink
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> scale(
|
detail::tmat4x4<T> scale(
|
||||||
T x, T y, T z);
|
T x, T y, T z);
|
||||||
|
|
||||||
//! Transforms a matrix with a scale 4 * 4 matrix created from 3 scalars.
|
//! Transforms a matrix with a scale 4 * 4 matrix created from 3 scalars.
|
||||||
//! - From \link gtx_transform GLM_GTX_transform \endlink extension
|
//! - From \link gtx_transform GLM_GTX_transform \endlink extension
|
||||||
//! - See also: \link glm::gtc::matrix_transform::scale GLM_GTC_matrix_transform \endlink
|
//! - See also: \link glm::gtc::matrix_transform::scale GLM_GTC_matrix_transform \endlink
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> scale(
|
detail::tmat4x4<T> scale(
|
||||||
detail::tmat4x4<T> const & m,
|
detail::tmat4x4<T> const & m,
|
||||||
T x, T y, T z);
|
T x, T y, T z);
|
||||||
|
|
||||||
//! Transforms a matrix with a scale 4 * 4 matrix created from a vector of 3 components.
|
//! Transforms a matrix with a scale 4 * 4 matrix created from a vector of 3 components.
|
||||||
//! - From \link gtx_transform GLM_GTX_transform \endlink extension
|
//! - From \link gtx_transform GLM_GTX_transform \endlink extension
|
||||||
//! - See also: \link glm::gtc::matrix_transform::scale GLM_GTC_matrix_transform \endlink
|
//! - See also: \link glm::gtc::matrix_transform::scale GLM_GTC_matrix_transform \endlink
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> scale(
|
detail::tmat4x4<T> scale(
|
||||||
detail::tvec3<T> const & v);
|
detail::tvec3<T> const & v);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}// namespace transform
|
||||||
}//namespace transform
|
}// namespace gtx
|
||||||
}//namespace gtx
|
}// namespace glm
|
||||||
}//namespace glm
|
|
||||||
|
|
||||||
#include "transform.inl"
|
#include "transform.inl"
|
||||||
|
|
||||||
|
@ -22,101 +22,94 @@
|
|||||||
# pragma message("GLM: GLM_GTX_transform2 extension included")
|
# pragma message("GLM: GLM_GTX_transform2 extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace transform2 ///< GLM_GTX_transform2 extension: Add extra transformation matrices
|
||||||
{
|
{
|
||||||
namespace test{
|
using namespace gtx::transform;
|
||||||
void main_gtx_transform2();
|
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
/// \addtogroup gtx_transform2
|
||||||
//! GLM_GTX_transform2 extension: Add extra transformation matrices
|
/// @{
|
||||||
namespace transform2
|
|
||||||
{
|
|
||||||
using namespace gtx::transform;
|
|
||||||
|
|
||||||
/// \addtogroup gtx_transform2
|
//! Transforms a matrix with a shearing on X axis.
|
||||||
///@{
|
//! From GLM_GTX_transform2 extension.
|
||||||
|
template <typename T>
|
||||||
|
detail::tmat3x3<T> shearX2D(
|
||||||
|
detail::tmat3x3<T> const & m,
|
||||||
|
T y);
|
||||||
|
|
||||||
//! Transforms a matrix with a shearing on X axis.
|
//! Transforms a matrix with a shearing on Y axis.
|
||||||
//! From GLM_GTX_transform2 extension.
|
//! From GLM_GTX_transform2 extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat3x3<T> shearX2D(
|
detail::tmat3x3<T> shearY2D(
|
||||||
detail::tmat3x3<T> const & m,
|
detail::tmat3x3<T> const & m,
|
||||||
T y);
|
T x);
|
||||||
|
|
||||||
//! Transforms a matrix with a shearing on Y axis.
|
//! Transforms a matrix with a shearing on X axis
|
||||||
//! From GLM_GTX_transform2 extension.
|
//! From GLM_GTX_transform2 extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat3x3<T> shearY2D(
|
detail::tmat4x4<T> shearX3D(
|
||||||
detail::tmat3x3<T> const & m,
|
const detail::tmat4x4<T> & m,
|
||||||
T x);
|
T y,
|
||||||
|
T z);
|
||||||
//! Transforms a matrix with a shearing on X axis
|
|
||||||
//! From GLM_GTX_transform2 extension.
|
|
||||||
template <typename T>
|
|
||||||
detail::tmat4x4<T> shearX3D(
|
|
||||||
const detail::tmat4x4<T> & m,
|
|
||||||
T y,
|
|
||||||
T z);
|
|
||||||
|
|
||||||
//! Transforms a matrix with a shearing on Y axis.
|
//! Transforms a matrix with a shearing on Y axis.
|
||||||
//! From GLM_GTX_transform2 extension.
|
//! From GLM_GTX_transform2 extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> shearY3D(
|
detail::tmat4x4<T> shearY3D(
|
||||||
const detail::tmat4x4<T> & m,
|
const detail::tmat4x4<T> & m,
|
||||||
T x,
|
T x,
|
||||||
T z);
|
T z);
|
||||||
|
|
||||||
//! Transforms a matrix with a shearing on Z axis.
|
//! Transforms a matrix with a shearing on Z axis.
|
||||||
//! From GLM_GTX_transform2 extension.
|
//! From GLM_GTX_transform2 extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> shearZ3D(
|
detail::tmat4x4<T> shearZ3D(
|
||||||
const detail::tmat4x4<T> & m,
|
const detail::tmat4x4<T> & m,
|
||||||
T x,
|
T x,
|
||||||
T y);
|
T y);
|
||||||
|
|
||||||
//template <typename T> GLM_FUNC_QUALIFIER detail::tmat4x4<T> shear(const detail::tmat4x4<T> & m, shearPlane, planePoint, angle)
|
//template <typename T> GLM_FUNC_QUALIFIER detail::tmat4x4<T> shear(const detail::tmat4x4<T> & m, shearPlane, planePoint, angle)
|
||||||
// Identity + tan(angle) * cross(Normal, OnPlaneVector) 0
|
// Identity + tan(angle) * cross(Normal, OnPlaneVector) 0
|
||||||
// - dot(PointOnPlane, normal) * OnPlaneVector 1
|
// - dot(PointOnPlane, normal) * OnPlaneVector 1
|
||||||
|
|
||||||
// Reflect functions seem to don't work
|
// Reflect functions seem to don't work
|
||||||
//template <typename T> detail::tmat3x3<T> reflect2D(const detail::tmat3x3<T> & m, const detail::tvec3<T>& normal){return reflect2DGTX(m, normal);} //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension)
|
//template <typename T> detail::tmat3x3<T> reflect2D(const detail::tmat3x3<T> & m, const detail::tvec3<T>& normal){return reflect2DGTX(m, normal);} //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension)
|
||||||
//template <typename T> detail::tmat4x4<T> reflect3D(const detail::tmat4x4<T> & m, const detail::tvec3<T>& normal){return reflect3DGTX(m, normal);} //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension)
|
//template <typename T> detail::tmat4x4<T> reflect3D(const detail::tmat4x4<T> & m, const detail::tvec3<T>& normal){return reflect3DGTX(m, normal);} //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension)
|
||||||
|
|
||||||
//! Build planar projection matrix along normal axis.
|
//! Build planar projection matrix along normal axis.
|
||||||
//! From GLM_GTX_transform2 extension.
|
//! From GLM_GTX_transform2 extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat3x3<T> proj2D(
|
detail::tmat3x3<T> proj2D(
|
||||||
const detail::tmat3x3<T> & m,
|
const detail::tmat3x3<T> & m,
|
||||||
const detail::tvec3<T>& normal);
|
const detail::tvec3<T>& normal);
|
||||||
|
|
||||||
//! Build planar projection matrix along normal axis.
|
//! Build planar projection matrix along normal axis.
|
||||||
//! From GLM_GTX_transform2 extension.
|
//! From GLM_GTX_transform2 extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
detail::tmat4x4<T> proj3D(
|
detail::tmat4x4<T> proj3D(
|
||||||
const detail::tmat4x4<T> & m,
|
const detail::tmat4x4<T> & m,
|
||||||
const detail::tvec3<T>& normal);
|
const detail::tvec3<T>& normal);
|
||||||
|
|
||||||
//! Build a scale bias matrix.
|
//! Build a scale bias matrix.
|
||||||
//! From GLM_GTX_transform2 extension.
|
//! From GLM_GTX_transform2 extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat4x4<valType> scaleBias(
|
detail::tmat4x4<valType> scaleBias(
|
||||||
valType scale,
|
valType scale,
|
||||||
valType bias);
|
valType bias);
|
||||||
|
|
||||||
//! Build a scale bias matrix.
|
//! Build a scale bias matrix.
|
||||||
//! From GLM_GTX_transform2 extension.
|
//! From GLM_GTX_transform2 extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
detail::tmat4x4<valType> scaleBias(
|
detail::tmat4x4<valType> scaleBias(
|
||||||
detail::tmat4x4<valType> const & m,
|
detail::tmat4x4<valType> const & m,
|
||||||
valType scale,
|
valType scale,
|
||||||
valType bias);
|
valType bias);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}// namespace transform2
|
||||||
}//namespace transform2
|
}// namespace gtx
|
||||||
}//namespace gtx
|
}// namespace glm
|
||||||
}//namespace glm
|
|
||||||
|
|
||||||
#include "transform2.inl"
|
#include "transform2.inl"
|
||||||
|
|
||||||
|
@ -20,50 +20,47 @@
|
|||||||
# pragma message("GLM: GLM_GTX_ulp extension included")
|
# pragma message("GLM: GLM_GTX_ulp extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace ulp ///< GLM_GTX_ulp extension: Precision calculation functions
|
||||||
{
|
{
|
||||||
namespace gtx{
|
/// \addtogroup gtx_ulp
|
||||||
//! GLM_GTX_ulp extension: Precision calculation functions
|
/// @{
|
||||||
namespace ulp
|
|
||||||
{
|
|
||||||
/// \addtogroup gtx_ulp
|
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Return the next ULP value(s) after the input value(s).
|
//! Return the next ULP value(s) after the input value(s).
|
||||||
//! From GLM_GTX_ulp extension.
|
//! From GLM_GTX_ulp extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType next_float(genType const & x);
|
genType next_float(genType const & x);
|
||||||
|
|
||||||
//! Return the previous ULP value(s) before the input value(s).
|
//! Return the previous ULP value(s) before the input value(s).
|
||||||
//! From GLM_GTX_ulp extension.
|
//! From GLM_GTX_ulp extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType prev_float(genType const & x);
|
genType prev_float(genType const & x);
|
||||||
|
|
||||||
//! Return the value(s) ULP distance after the input value(s).
|
//! Return the value(s) ULP distance after the input value(s).
|
||||||
//! From GLM_GTX_ulp extension.
|
//! From GLM_GTX_ulp extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType next_float(genType const & x, uint const & Distance);
|
genType next_float(genType const & x, uint const & Distance);
|
||||||
|
|
||||||
//! Return the value(s) ULP distance before the input value(s).
|
//! Return the value(s) ULP distance before the input value(s).
|
||||||
//! From GLM_GTX_ulp extension.
|
//! From GLM_GTX_ulp extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType prev_float(genType const & x, uint const & Distance);
|
genType prev_float(genType const & x, uint const & Distance);
|
||||||
|
|
||||||
//! Return the distance in the number of ULP between 2 scalars.
|
//! Return the distance in the number of ULP between 2 scalars.
|
||||||
//! From GLM_GTX_ulp extension.
|
//! From GLM_GTX_ulp extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
uint float_distance(T const & x, T const & y);
|
uint float_distance(T const & x, T const & y);
|
||||||
|
|
||||||
//! Return the distance in the number of ULP between 2 vectors.
|
//! Return the distance in the number of ULP between 2 vectors.
|
||||||
//! From GLM_GTX_ulp extension.
|
//! From GLM_GTX_ulp extension.
|
||||||
template<typename T, template<typename> class vecType>
|
template<typename T, template<typename> class vecType>
|
||||||
vecType<uint> float_distance(vecType<T> const & x, vecType<T> const & y);
|
vecType<uint> float_distance(vecType<T> const & x, vecType<T> const & y);
|
||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
}// namespace ulp
|
||||||
}//namespace ulp
|
}// namespace gtx
|
||||||
}//namespace gtx
|
}// namespace glm
|
||||||
}//namespace glm
|
|
||||||
|
|
||||||
#include "ulp.inl"
|
#include "ulp.inl"
|
||||||
|
|
||||||
|
@ -22,41 +22,34 @@
|
|||||||
# pragma message("GLM: GLM_GTX_unsigned_int extension included")
|
# pragma message("GLM: GLM_GTX_unsigned_int extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace unsigned_int ///< GLM_GTX_unsigned_int extension: Add support for unsigned integer for core functions
|
||||||
{
|
{
|
||||||
namespace test{
|
using namespace gtx::integer;
|
||||||
void main_gtx_unsigned_int();
|
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
/// \addtogroup gtx_unsigned_int
|
||||||
//! GLM_GTX_unsigned_int extension: Add support for unsigned integer for core functions
|
/// @{
|
||||||
namespace unsigned_int
|
|
||||||
{
|
|
||||||
using namespace gtx::integer;
|
|
||||||
|
|
||||||
/// \addtogroup gtx_unsigned_int
|
//! 32bit signed integer.
|
||||||
///@{
|
//! From GLM_GTX_unsigned_int extension.
|
||||||
|
typedef signed int sint;
|
||||||
|
|
||||||
//! 32bit signed integer.
|
//! Returns x raised to the y power.
|
||||||
//! From GLM_GTX_unsigned_int extension.
|
//! From GLM_GTX_unsigned_int extension.
|
||||||
typedef signed int sint;
|
uint pow(uint x, uint y);
|
||||||
|
|
||||||
//! Returns x raised to the y power.
|
//! Returns the positive square root of x.
|
||||||
//! From GLM_GTX_unsigned_int extension.
|
//! From GLM_GTX_unsigned_int extension.
|
||||||
uint pow(uint x, uint y);
|
uint sqrt(uint x);
|
||||||
|
|
||||||
//! Returns the positive square root of x.
|
//! Modulus. Returns x - y * floor(x / y) for each component in x using the floating point value y.
|
||||||
//! From GLM_GTX_unsigned_int extension.
|
//! From GLM_GTX_unsigned_int extension.
|
||||||
uint sqrt(uint x);
|
uint mod(uint x, uint y);
|
||||||
|
|
||||||
//! Modulus. Returns x - y * floor(x / y) for each component in x using the floating point value y.
|
/// @}
|
||||||
//! From GLM_GTX_unsigned_int extension.
|
}//namespace unsigned_int
|
||||||
uint mod(uint x, uint y);
|
}//namespace gtx
|
||||||
|
|
||||||
///@}
|
|
||||||
|
|
||||||
}//namespace unsigned_int
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "unsigned_int.inl"
|
#include "unsigned_int.inl"
|
||||||
|
141
glm/gtx/vec1.hpp
141
glm/gtx/vec1.hpp
@ -21,104 +21,97 @@
|
|||||||
# pragma message("GLM: GLM_GTX_vec1 extension included")
|
# pragma message("GLM: GLM_GTX_vec1 extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace vector1{ ///< GLM_GTX_vec1 extension: 1 component vector.
|
||||||
|
namespace precision
|
||||||
{
|
{
|
||||||
namespace test{
|
//! 1 component vector of high precision floating-point numbers.
|
||||||
void main_gtx_vector1();
|
//! There is no guarantee on the actual precision.
|
||||||
}//namespace test
|
//! From GLM_GTX_vec1 extension.
|
||||||
|
typedef detail::highp_vec1_t highp_vec1;
|
||||||
|
//! 1 component vector of medium precision floating-point numbers.
|
||||||
|
//! There is no guarantee on the actual precision.
|
||||||
|
//! From GLM_GTX_vec1 extension.
|
||||||
|
typedef detail::mediump_vec1_t mediump_vec1;
|
||||||
|
//! 1 component vector of low precision floating-point numbers.
|
||||||
|
//! There is no guarantee on the actual precision.
|
||||||
|
//! From GLM_GTX_vec1 extension.
|
||||||
|
typedef detail::lowp_vec1_t lowp_vec1;
|
||||||
|
|
||||||
namespace gtx{
|
//! 1 component vector of high precision signed integer numbers.
|
||||||
//! GLM_GTX_vector1 extension: 1 component vector.
|
//! There is no guarantee on the actual precision.
|
||||||
namespace vector1
|
//! From GLM_GTX_vec1 extension.
|
||||||
{
|
typedef detail::highp_ivec1_t highp_ivec1;
|
||||||
namespace precision
|
//! 1 component vector of medium precision signed integer numbers.
|
||||||
{
|
//! There is no guarantee on the actual precision.
|
||||||
//! 1 component vector of high precision floating-point numbers.
|
//! From GLM_GTX_vec1 extension.
|
||||||
//! There is no guarantee on the actual precision.
|
typedef detail::mediump_ivec1_t mediump_ivec1;
|
||||||
//! From GLM_GTX_vec1 extension.
|
//! 1 component vector of low precision signed integer numbers.
|
||||||
typedef detail::highp_vec1_t highp_vec1;
|
//! There is no guarantee on the actual precision.
|
||||||
//! 1 component vector of medium precision floating-point numbers.
|
//! From GLM_GTX_vec1 extension.
|
||||||
//! There is no guarantee on the actual precision.
|
typedef detail::lowp_ivec1_t lowp_ivec1;
|
||||||
//! From GLM_GTX_vec1 extension.
|
|
||||||
typedef detail::mediump_vec1_t mediump_vec1;
|
|
||||||
//! 1 component vector of low precision floating-point numbers.
|
|
||||||
//! There is no guarantee on the actual precision.
|
|
||||||
//! From GLM_GTX_vec1 extension.
|
|
||||||
typedef detail::lowp_vec1_t lowp_vec1;
|
|
||||||
|
|
||||||
//! 1 component vector of high precision signed integer numbers.
|
//! 1 component vector of high precision unsigned integer numbers.
|
||||||
//! There is no guarantee on the actual precision.
|
//! There is no guarantee on the actual precision.
|
||||||
//! From GLM_GTX_vec1 extension.
|
//! From GLM_GTX_vec1 extension.
|
||||||
typedef detail::highp_ivec1_t highp_ivec1;
|
typedef detail::highp_uvec1_t highp_uvec1;
|
||||||
//! 1 component vector of medium precision signed integer numbers.
|
//! 1 component vector of medium precision unsigned integer numbers.
|
||||||
//! There is no guarantee on the actual precision.
|
//! There is no guarantee on the actual precision.
|
||||||
//! From GLM_GTX_vec1 extension.
|
//! From GLM_GTX_vec1 extension.
|
||||||
typedef detail::mediump_ivec1_t mediump_ivec1;
|
typedef detail::mediump_uvec1_t mediump_uvec1;
|
||||||
//! 1 component vector of low precision signed integer numbers.
|
//! 1 component vector of low precision unsigned integer numbers.
|
||||||
//! There is no guarantee on the actual precision.
|
//! There is no guarantee on the actual precision.
|
||||||
//! From GLM_GTX_vec1 extension.
|
//! From GLM_GTX_vec1 extension.
|
||||||
typedef detail::lowp_ivec1_t lowp_ivec1;
|
typedef detail::lowp_uvec1_t lowp_uvec1;
|
||||||
|
}//namespace precision
|
||||||
|
|
||||||
//! 1 component vector of high precision unsigned integer numbers.
|
//////////////////////////
|
||||||
//! There is no guarantee on the actual precision.
|
// vec1 definition
|
||||||
//! From GLM_GTX_vec1 extension.
|
|
||||||
typedef detail::highp_uvec1_t highp_uvec1;
|
|
||||||
//! 1 component vector of medium precision unsigned integer numbers.
|
|
||||||
//! There is no guarantee on the actual precision.
|
|
||||||
//! From GLM_GTX_vec1 extension.
|
|
||||||
typedef detail::mediump_uvec1_t mediump_uvec1;
|
|
||||||
//! 1 component vector of low precision unsigned integer numbers.
|
|
||||||
//! There is no guarantee on the actual precision.
|
|
||||||
//! From GLM_GTX_vec1 extension.
|
|
||||||
typedef detail::lowp_uvec1_t lowp_uvec1;
|
|
||||||
}//namespace precision
|
|
||||||
|
|
||||||
//////////////////////////
|
//! 1 component vector of boolean.
|
||||||
// vec1 definition
|
//! From GLM_GTX_vec1 extension.
|
||||||
|
typedef detail::tvec1<bool> bvec1;
|
||||||
//! 1 component vector of boolean.
|
|
||||||
//! From GLM_GTX_vec1 extension.
|
|
||||||
typedef detail::tvec1<bool> bvec1;
|
|
||||||
|
|
||||||
#if(defined(GLM_PRECISION_HIGHP_FLOAT))
|
#if(defined(GLM_PRECISION_HIGHP_FLOAT))
|
||||||
typedef precision::highp_vec1 vec1;
|
typedef precision::highp_vec1 vec1;
|
||||||
#elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
|
#elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
|
||||||
typedef precision::mediump_vec1 vec1;
|
typedef precision::mediump_vec1 vec1;
|
||||||
#elif(defined(GLM_PRECISION_LOWP_FLOAT))
|
#elif(defined(GLM_PRECISION_LOWP_FLOAT))
|
||||||
typedef precision::lowp_vec1 vec1;
|
typedef precision::lowp_vec1 vec1;
|
||||||
#else
|
#else
|
||||||
//! 1 component vector of floating-point numbers.
|
//! 1 component vector of floating-point numbers.
|
||||||
//! From GLM_GTX_vec1 extension.
|
//! From GLM_GTX_vec1 extension.
|
||||||
typedef precision::mediump_vec1 vec1;
|
typedef precision::mediump_vec1 vec1;
|
||||||
#endif//GLM_PRECISION
|
#endif//GLM_PRECISION
|
||||||
|
|
||||||
#if(defined(GLM_PRECISION_HIGHP_INT))
|
#if(defined(GLM_PRECISION_HIGHP_INT))
|
||||||
typedef precision::highp_ivec1 ivec1;
|
typedef precision::highp_ivec1 ivec1;
|
||||||
#elif(defined(GLM_PRECISION_MEDIUMP_INT))
|
#elif(defined(GLM_PRECISION_MEDIUMP_INT))
|
||||||
typedef precision::mediump_ivec1 ivec1;
|
typedef precision::mediump_ivec1 ivec1;
|
||||||
#elif(defined(GLM_PRECISION_LOWP_INT))
|
#elif(defined(GLM_PRECISION_LOWP_INT))
|
||||||
typedef precision::lowp_ivec1 ivec1;
|
typedef precision::lowp_ivec1 ivec1;
|
||||||
#else
|
#else
|
||||||
//! 1 component vector of signed integer numbers.
|
//! 1 component vector of signed integer numbers.
|
||||||
//! From GLM_GTX_vec1 extension.
|
//! From GLM_GTX_vec1 extension.
|
||||||
typedef precision::mediump_ivec1 ivec1;
|
typedef precision::mediump_ivec1 ivec1;
|
||||||
#endif//GLM_PRECISION
|
#endif//GLM_PRECISION
|
||||||
|
|
||||||
#if(defined(GLM_PRECISION_HIGHP_UINT))
|
#if(defined(GLM_PRECISION_HIGHP_UINT))
|
||||||
typedef precision::highp_uvec1 uvec1;
|
typedef precision::highp_uvec1 uvec1;
|
||||||
#elif(defined(GLM_PRECISION_MEDIUMP_UINT))
|
#elif(defined(GLM_PRECISION_MEDIUMP_UINT))
|
||||||
typedef precision::mediump_uvec1 uvec1;
|
typedef precision::mediump_uvec1 uvec1;
|
||||||
#elif(defined(GLM_PRECISION_LOWP_UINT))
|
#elif(defined(GLM_PRECISION_LOWP_UINT))
|
||||||
typedef precision::lowp_uvec1 uvec1;
|
typedef precision::lowp_uvec1 uvec1;
|
||||||
#else
|
#else
|
||||||
//! 1 component vector of unsigned integer numbers.
|
//! 1 component vector of unsigned integer numbers.
|
||||||
//! From GLM_GTX_vec1 extension.
|
//! From GLM_GTX_vec1 extension.
|
||||||
typedef precision::mediump_uvec1 uvec1;
|
typedef precision::mediump_uvec1 uvec1;
|
||||||
#endif//GLM_PRECISION
|
#endif//GLM_PRECISION
|
||||||
|
|
||||||
}//namespace vec1
|
}// namespace vec1
|
||||||
}//namespace gtx
|
}// namespace gtx
|
||||||
}//namespace glm
|
}// namespace glm
|
||||||
|
|
||||||
#include "vec1.inl"
|
#include "vec1.inl"
|
||||||
|
|
||||||
|
@ -20,50 +20,43 @@
|
|||||||
# pragma message("GLM: GLM_GTX_vector_access extension included")
|
# pragma message("GLM: GLM_GTX_vector_access extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace vector_access ///< GLM_GTX_vector_access extension: Function to set values to vectors
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_vector_access
|
||||||
void main_gtx_vector_access();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Set values to a 2 components vector.
|
||||||
//! GLM_GTX_vector_access extension: Function to set values to vectors
|
//! From GLM_GTX_vector_access extension.
|
||||||
namespace vector_access
|
template <typename valType>
|
||||||
{
|
void set(
|
||||||
/// \addtogroup gtx_vector_access
|
detail::tvec2<valType> & v,
|
||||||
///@{
|
valType const & x,
|
||||||
|
valType const & y);
|
||||||
|
|
||||||
//! Set values to a 2 components vector.
|
//! Set values to a 3 components vector.
|
||||||
//! From GLM_GTX_vector_access extension.
|
//! From GLM_GTX_vector_access extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
void set(
|
void set(
|
||||||
detail::tvec2<valType> & v,
|
detail::tvec3<valType> & v,
|
||||||
valType const & x,
|
valType const & x,
|
||||||
valType const & y);
|
valType const & y,
|
||||||
|
valType const & z);
|
||||||
|
|
||||||
//! Set values to a 3 components vector.
|
//! Set values to a 4 components vector.
|
||||||
//! From GLM_GTX_vector_access extension.
|
//! From GLM_GTX_vector_access extension.
|
||||||
template <typename valType>
|
template <typename valType>
|
||||||
void set(
|
void set(
|
||||||
detail::tvec3<valType> & v,
|
detail::tvec4<valType> & v,
|
||||||
valType const & x,
|
valType const & x,
|
||||||
valType const & y,
|
valType const & y,
|
||||||
valType const & z);
|
valType const & z,
|
||||||
|
valType const & w);
|
||||||
|
|
||||||
//! Set values to a 4 components vector.
|
/// @}
|
||||||
//! From GLM_GTX_vector_access extension.
|
}//namespace vector_access
|
||||||
template <typename valType>
|
}//namespace gtx
|
||||||
void set(
|
|
||||||
detail::tvec4<valType> & v,
|
|
||||||
valType const & x,
|
|
||||||
valType const & y,
|
|
||||||
valType const & z,
|
|
||||||
valType const & w);
|
|
||||||
|
|
||||||
///@}
|
|
||||||
|
|
||||||
}//namespace vector_access
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
|
||||||
#include "vector_access.inl"
|
#include "vector_access.inl"
|
||||||
|
@ -27,8 +27,7 @@
|
|||||||
|
|
||||||
namespace glm{
|
namespace glm{
|
||||||
namespace gtx{
|
namespace gtx{
|
||||||
//! GLM_GTX_vector_angle extension: Compute angle between vectors
|
namespace vector_angle ///< GLM_GTX_vector_angle extension: Compute angle between vectors
|
||||||
namespace vector_angle
|
|
||||||
{
|
{
|
||||||
using namespace quaternion;
|
using namespace quaternion;
|
||||||
using namespace epsilon;
|
using namespace epsilon;
|
||||||
@ -40,7 +39,7 @@ namespace vector_angle
|
|||||||
//! Parameters need to be normalized.
|
//! Parameters need to be normalized.
|
||||||
//! From GLM_GTX_vector_angle extension
|
//! From GLM_GTX_vector_angle extension
|
||||||
template <typename vecType>
|
template <typename vecType>
|
||||||
typename vecType::value_type angle(
|
GLM_FUNC_QUALIFIER typename vecType::value_type angle(
|
||||||
vecType const & x,
|
vecType const & x,
|
||||||
vecType const & y);
|
vecType const & y);
|
||||||
|
|
||||||
@ -48,7 +47,7 @@ namespace vector_angle
|
|||||||
//! Parameters need to be normalized.
|
//! Parameters need to be normalized.
|
||||||
//! From GLM_GTX_vector_angle extension.
|
//! From GLM_GTX_vector_angle extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
typename T orientedAngle(
|
GLM_FUNC_QUALIFIER T orientedAngle(
|
||||||
detail::tvec2<T> const & x,
|
detail::tvec2<T> const & x,
|
||||||
detail::tvec2<T> const & y);
|
detail::tvec2<T> const & y);
|
||||||
|
|
||||||
@ -56,15 +55,15 @@ namespace vector_angle
|
|||||||
//! Parameters need to be normalized.
|
//! Parameters need to be normalized.
|
||||||
//! From GLM_GTX_vector_angle extension.
|
//! From GLM_GTX_vector_angle extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
typename vecType<T> orientedAngle(
|
GLM_FUNC_QUALIFIER T orientedAngle(
|
||||||
detail::tvec3<T> const & x,
|
detail::tvec3<T> const & x,
|
||||||
detail::tvec3<T> const & y,
|
detail::tvec3<T> const & y,
|
||||||
detail::tvec3<T> const & ref);
|
detail::tvec3<T> const & ref);
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
}//namespace vector_angle
|
}// namespace vector_angle
|
||||||
}//namespace gtx
|
}// namespace gtx
|
||||||
}//namespace glm
|
}// namespace glm
|
||||||
|
|
||||||
#include "vector_angle.inl"
|
#include "vector_angle.inl"
|
||||||
|
|
||||||
|
@ -22,78 +22,71 @@
|
|||||||
# pragma message("GLM: GLM_GTX_vector_query extension included")
|
# pragma message("GLM: GLM_GTX_vector_query extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace vector_query ///< GLM_GTX_vector_query extension: Query informations of vector types
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_vector_query
|
||||||
void main_ext_gtx_vector_query();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Check if two vectors are collinears.
|
||||||
//! GLM_GTX_vector_query extension: Query informations of vector types
|
//! From GLM_GTX_vector_query extensions.
|
||||||
namespace vector_query
|
template <typename genType>
|
||||||
{
|
bool areCollinear(
|
||||||
/// \addtogroup gtx_vector_query
|
genType const & v0,
|
||||||
///@{
|
genType const & v1,
|
||||||
|
typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
|
||||||
//! Check if two vectors are collinears.
|
|
||||||
//! From GLM_GTX_vector_query extensions.
|
|
||||||
template <typename genType>
|
|
||||||
bool areCollinear(
|
|
||||||
genType const & v0,
|
|
||||||
genType const & v1,
|
|
||||||
typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
|
|
||||||
|
|
||||||
//! Check if two vectors are opposites.
|
//! Check if two vectors are opposites.
|
||||||
//! From GLM_GTX_vector_query extensions.
|
//! From GLM_GTX_vector_query extensions.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
bool areOpposite(
|
bool areOpposite(
|
||||||
genType const & v0,
|
genType const & v0,
|
||||||
genType const & v1,
|
genType const & v1,
|
||||||
typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
|
typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
|
||||||
|
|
||||||
//! Check if two vectors are orthogonals.
|
//! Check if two vectors are orthogonals.
|
||||||
//! From GLM_GTX_vector_query extensions.
|
//! From GLM_GTX_vector_query extensions.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
bool areOrthogonal(
|
bool areOrthogonal(
|
||||||
genType const & v0,
|
genType const & v0,
|
||||||
genType const & v1,
|
genType const & v1,
|
||||||
typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
|
typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
|
||||||
|
|
||||||
//! Check if a vector is normalized.
|
//! Check if a vector is normalized.
|
||||||
//! From GLM_GTX_vector_query extensions.
|
//! From GLM_GTX_vector_query extensions.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
bool isNormalized(
|
bool isNormalized(
|
||||||
genType const & v,
|
genType const & v,
|
||||||
typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
|
typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
|
||||||
|
|
||||||
//! Check if a vector is null.
|
//! Check if a vector is null.
|
||||||
//! From GLM_GTX_vector_query extensions.
|
//! From GLM_GTX_vector_query extensions.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
bool isNull(
|
bool isNull(
|
||||||
genType const & v,
|
genType const & v,
|
||||||
typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
|
typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
|
||||||
|
|
||||||
//! Check if two vectors are orthonormal.
|
//! Check if two vectors are orthonormal.
|
||||||
//! From GLM_GTX_vector_query extensions.
|
//! From GLM_GTX_vector_query extensions.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
bool areOrthonormal(
|
bool areOrthonormal(
|
||||||
genType const & v0,
|
genType const & v0,
|
||||||
genType const & v1,
|
genType const & v1,
|
||||||
typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
|
typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
|
||||||
|
|
||||||
//! Check if two vectors are similar.
|
//! Check if two vectors are similar.
|
||||||
//! From GLM_GTX_vector_query extensions.
|
//! From GLM_GTX_vector_query extensions.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
bool areSimilar(
|
bool areSimilar(
|
||||||
genType const & v0,
|
genType const & v0,
|
||||||
genType const & v1,
|
genType const & v1,
|
||||||
typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
|
typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
|
||||||
|
|
||||||
///@}
|
/// @}
|
||||||
|
}// namespace vector_query
|
||||||
}//namespace vector_query
|
}// namespace gtx
|
||||||
}//namespace gtx
|
}// namespace glm
|
||||||
}//namespace glm
|
|
||||||
|
|
||||||
#include "vector_query.inl"
|
#include "vector_query.inl"
|
||||||
|
|
||||||
|
@ -20,48 +20,42 @@
|
|||||||
# pragma message("GLM: GLM_GTX_verbose_operator extension included")
|
# pragma message("GLM: GLM_GTX_verbose_operator extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace verbose_operator ///< GLM_GTX_verbose_operator extension: Use words to replace operators
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_verbose_operator
|
||||||
void main_ext_gtx_verbose_operator();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Addition of two values
|
||||||
//! GLM_GTX_verbose_operator extension: Use words to replace operators
|
//! From GLM_GTX_verbose_operator extension.
|
||||||
namespace verbose_operator
|
template <typename genTypeT, typename genTypeU>
|
||||||
{
|
genTypeT add(genTypeT const & a, genTypeU const & b);
|
||||||
/// \addtogroup gtx_verbose_operator
|
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Addition of two values
|
//! Substration of two values
|
||||||
//! From GLM_GTX_verbose_operator extension.
|
//! From GLM_GTX_verbose_operator extension.
|
||||||
template <typename genTypeT, typename genTypeU>
|
template <typename genTypeT, typename genTypeU>
|
||||||
genTypeT add(genTypeT const & a, genTypeU const & b);
|
genTypeT sub(genTypeT const & a, genTypeU const & b);
|
||||||
|
|
||||||
//! Substration of two values
|
//! Multiplication of two values
|
||||||
//! From GLM_GTX_verbose_operator extension.
|
//! From GLM_GTX_verbose_operator extension.
|
||||||
template <typename genTypeT, typename genTypeU>
|
template <typename genTypeT, typename genTypeU>
|
||||||
genTypeT sub(genTypeT const & a, genTypeU const & b);
|
genTypeT mul(genTypeT const & a, genTypeU const & b);
|
||||||
|
|
||||||
//! Multiplication of two values
|
//! Division of two values
|
||||||
//! From GLM_GTX_verbose_operator extension.
|
//! From GLM_GTX_verbose_operator extension.
|
||||||
template <typename genTypeT, typename genTypeU>
|
template <typename genTypeT, typename genTypeU>
|
||||||
genTypeT mul(genTypeT const & a, genTypeU const & b);
|
genTypeT div(genTypeT const & a, genTypeU const & b);
|
||||||
|
|
||||||
//! Division of two values
|
//! Multiplication and addition of three values
|
||||||
//! From GLM_GTX_verbose_operator extension.
|
//! From GLM_GTX_verbose_operator extension.
|
||||||
template <typename genTypeT, typename genTypeU>
|
template <typename genTypeT, typename genTypeU, typename genTypeV>
|
||||||
genTypeT div(genTypeT const & a, genTypeU const & b);
|
genTypeT mad(genTypeT const & a, genTypeU const & b, genTypeV const & c);
|
||||||
|
|
||||||
//! Multiplication and addition of three values
|
/// @}
|
||||||
//! From GLM_GTX_verbose_operator extension.
|
}// namespace verbose_operator
|
||||||
template <typename genTypeT, typename genTypeU, typename genTypeV>
|
}// namespace gtx
|
||||||
genTypeT mad(genTypeT const & a, genTypeU const & b, genTypeV const & c);
|
}// namespace glm
|
||||||
|
|
||||||
///@}
|
|
||||||
}//namespace verbose_operator
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
|
||||||
|
|
||||||
#include "verbose_operator.inl"
|
#include "verbose_operator.inl"
|
||||||
|
|
||||||
|
@ -20,39 +20,32 @@
|
|||||||
# pragma message("GLM: GLM_GTX_wrap extension included")
|
# pragma message("GLM: GLM_GTX_wrap extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm{
|
||||||
|
namespace gtx{
|
||||||
|
namespace wrap ///< GLM_GTX_wrap: Wrapping mode using my texture samping.
|
||||||
{
|
{
|
||||||
namespace test{
|
/// \addtogroup gtx_wrap
|
||||||
bool main_gtx_wrap();
|
/// @{
|
||||||
}//namespace test
|
|
||||||
|
|
||||||
namespace gtx{
|
//! Simulate GL_CLAMP OpenGL wrap mode
|
||||||
//! GLM_GTX_wrap: Wrapping mode using my texture samping.
|
//! From GLM_GTX_wrap extension.
|
||||||
namespace wrap
|
template <typename genType>
|
||||||
{
|
genType clamp(genType const & Texcoord);
|
||||||
/// \addtogroup gtx_wrap
|
|
||||||
///@{
|
|
||||||
|
|
||||||
//! Simulate GL_CLAMP OpenGL wrap mode
|
//! Simulate GL_REPEAT OpenGL wrap mode
|
||||||
//! From GLM_GTX_wrap extension.
|
//! From GLM_GTX_wrap extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType clamp(genType const & Texcoord);
|
genType repeat(genType const & Texcoord);
|
||||||
|
|
||||||
//! Simulate GL_REPEAT OpenGL wrap mode
|
//! Simulate GL_MIRROR_REPEAT OpenGL wrap mode
|
||||||
//! From GLM_GTX_wrap extension.
|
//! From GLM_GTX_wrap extension.
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
genType repeat(genType const & Texcoord);
|
genType mirrorRepeat(genType const & Texcoord);
|
||||||
|
|
||||||
//! Simulate GL_MIRROR_REPEAT OpenGL wrap mode
|
/// @}
|
||||||
//! From GLM_GTX_wrap extension.
|
}// namespace wrap
|
||||||
template <typename genType>
|
}// namespace gtx
|
||||||
genType mirrorRepeat(genType const & Texcoord);
|
}// namespace glm
|
||||||
|
|
||||||
///@}
|
|
||||||
|
|
||||||
}//namespace wrap
|
|
||||||
}//namespace gtx
|
|
||||||
}//namespace glm
|
|
||||||
|
|
||||||
#include "wrap.inl"
|
#include "wrap.inl"
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@ http://glm.g-truc.net/glm-0.9.2.pdf
|
|||||||
GLM 0.9.2.1: 2010-05-20
|
GLM 0.9.2.1: 2010-05-20
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
- Automatically detect CUDA support
|
- Automatically detect CUDA support
|
||||||
|
- Improved Clang detection
|
||||||
- Fixed errors and warnings in VC with C++ extensions disabled
|
- Fixed errors and warnings in VC with C++ extensions disabled
|
||||||
- Fixed and tested GLM_GTX_vector_angle
|
- Fixed and tested GLM_GTX_vector_angle
|
||||||
- Fixed and tested GLM_GTX_rotate_vector
|
- Fixed and tested GLM_GTX_rotate_vector
|
||||||
|
@ -12,16 +12,18 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
|
||||||
int test_vector_angle_calls()
|
int test_angle()
|
||||||
{
|
{
|
||||||
int Error = 0;
|
int Error = 0;
|
||||||
|
|
||||||
float AngleA = glm::angle(glm::vec3(1, 0, 0), glm::vec3(0, 1, 0));
|
float AngleA = glm::angle(glm::vec2(1, 0), glm::normalize(glm::vec2(1, 1)));
|
||||||
float AngleB = glm::orientedAngle(glm::vec2(1, 0), glm::normalize(glm::vec2(1, 1)));
|
Error += glm::equalEpsilon(AngleA, 45.f, 0.01f) ? 0 : 1;
|
||||||
float AngleC = glm::orientedAngle(glm::vec2(0, 1), glm::normalize(glm::vec2(1, 1)));
|
float AngleB = glm::angle(glm::vec3(1, 0, 0), glm::normalize(glm::vec3(1, 1, 0)));
|
||||||
float AngleD = glm::orientedAngle(glm::vec3(1, 0, 0), glm::vec3(0, 1, 0), glm::vec3(0, 0, 1));
|
Error += glm::equalEpsilon(AngleB, 45.f, 0.01f) ? 0 : 1;
|
||||||
|
float AngleC = glm::angle(glm::vec4(1, 0, 0, 0), glm::normalize(glm::vec4(1, 1, 0, 0)));
|
||||||
return Error;
|
Error += glm::equalEpsilon(AngleC, 45.f, 0.01f) ? 0 : 1;
|
||||||
|
|
||||||
|
return Error;
|
||||||
}
|
}
|
||||||
|
|
||||||
int test_orientedAngle_vec2()
|
int test_orientedAngle_vec2()
|
||||||
@ -55,9 +57,9 @@ int test_orientedAngle_vec3()
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
int Error = 0;
|
int Error = 0;
|
||||||
|
Error += test_angle();
|
||||||
Error += test_orientedAngle_vec2();
|
Error += test_orientedAngle_vec2();
|
||||||
Error += test_orientedAngle_vec3();
|
Error += test_orientedAngle_vec3();
|
||||||
Error += test_vector_angle_calls();
|
|
||||||
|
|
||||||
return Error;
|
return Error;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user