|
|
|
@@ -168,7 +168,7 @@ namespace detail
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// Wrapper for a binary operator (e.g. u.yy + v.zy)
|
|
|
|
// Wrapper for a binary operator (e.g. u.yy + v.zy)
|
|
|
|
//
|
|
|
|
//
|
|
|
|
#define _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \
|
|
|
|
#define GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \
|
|
|
|
_GLM_SWIZZLE_TEMPLATE2 \
|
|
|
|
_GLM_SWIZZLE_TEMPLATE2 \
|
|
|
|
GLM_FUNC_QUALIFIER vec<N, T, P> operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \
|
|
|
|
GLM_FUNC_QUALIFIER vec<N, T, P> operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \
|
|
|
|
{ \
|
|
|
|
{ \
|
|
|
|
@@ -188,7 +188,7 @@ namespace detail
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// Wrapper for a operand between a swizzle and a binary (e.g. 1.0f - u.xyz)
|
|
|
|
// Wrapper for a operand between a swizzle and a binary (e.g. 1.0f - u.xyz)
|
|
|
|
//
|
|
|
|
//
|
|
|
|
#define _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \
|
|
|
|
#define GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \
|
|
|
|
_GLM_SWIZZLE_TEMPLATE1 \
|
|
|
|
_GLM_SWIZZLE_TEMPLATE1 \
|
|
|
|
GLM_FUNC_QUALIFIER vec<N, T, P> operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const T& b) \
|
|
|
|
GLM_FUNC_QUALIFIER vec<N, T, P> operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const T& b) \
|
|
|
|
{ \
|
|
|
|
{ \
|
|
|
|
@@ -267,12 +267,12 @@ namespace glm
|
|
|
|
{
|
|
|
|
{
|
|
|
|
namespace detail
|
|
|
|
namespace detail
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(-)
|
|
|
|
GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(-)
|
|
|
|
_GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(*)
|
|
|
|
GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(*)
|
|
|
|
_GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(+)
|
|
|
|
GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(+)
|
|
|
|
_GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(-)
|
|
|
|
GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(-)
|
|
|
|
_GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(*)
|
|
|
|
GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(*)
|
|
|
|
_GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(/)
|
|
|
|
GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(/)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
//
|
|
|
|
@@ -297,13 +297,13 @@ namespace glm
|
|
|
|
//_GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(vec_type, mix);
|
|
|
|
//_GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(vec_type, mix);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#define _GLM_SWIZZLE2_2_MEMBERS(T, P, E0,E1) \
|
|
|
|
#define GLM_SWIZZLE2_2_MEMBERS(T, P, E0,E1) \
|
|
|
|
struct { detail::_swizzle<2, T, P, 0,0,-1,-2> E0 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<2, T, P, 0,0,-1,-2> E0 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<2, T, P, 0,1,-1,-2> E0 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<2, T, P, 0,1,-1,-2> E0 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<2, T, P, 1,0,-1,-2> E1 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<2, T, P, 1,0,-1,-2> E1 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<2, T, P, 1,1,-1,-2> E1 ## E1; };
|
|
|
|
struct { detail::_swizzle<2, T, P, 1,1,-1,-2> E1 ## E1; };
|
|
|
|
|
|
|
|
|
|
|
|
#define _GLM_SWIZZLE2_3_MEMBERS(T, P, E0,E1) \
|
|
|
|
#define GLM_SWIZZLE2_3_MEMBERS(T, P, E0,E1) \
|
|
|
|
struct { detail::_swizzle<3,T, P, 0,0,0,-1> E0 ## E0 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<3,T, P, 0,0,0,-1> E0 ## E0 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<3,T, P, 0,0,1,-1> E0 ## E0 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<3,T, P, 0,0,1,-1> E0 ## E0 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<3,T, P, 0,1,0,-1> E0 ## E1 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<3,T, P, 0,1,0,-1> E0 ## E1 ## E0; }; \
|
|
|
|
@@ -313,7 +313,7 @@ namespace glm
|
|
|
|
struct { detail::_swizzle<3,T, P, 1,1,0,-1> E1 ## E1 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<3,T, P, 1,1,0,-1> E1 ## E1 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<3,T, P, 1,1,1,-1> E1 ## E1 ## E1; };
|
|
|
|
struct { detail::_swizzle<3,T, P, 1,1,1,-1> E1 ## E1 ## E1; };
|
|
|
|
|
|
|
|
|
|
|
|
#define _GLM_SWIZZLE2_4_MEMBERS(T, P, E0,E1) \
|
|
|
|
#define GLM_SWIZZLE2_4_MEMBERS(T, P, E0,E1) \
|
|
|
|
struct { detail::_swizzle<4,T, P, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<4,T, P, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<4,T, P, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<4,T, P, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<4,T, P, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<4,T, P, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \
|
|
|
|
@@ -331,7 +331,7 @@ namespace glm
|
|
|
|
struct { detail::_swizzle<4,T, P, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<4,T, P, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<4,T, P, 1,1,1,1> E1 ## E1 ## E1 ## E1; };
|
|
|
|
struct { detail::_swizzle<4,T, P, 1,1,1,1> E1 ## E1 ## E1 ## E1; };
|
|
|
|
|
|
|
|
|
|
|
|
#define _GLM_SWIZZLE3_2_MEMBERS(T, P, E0,E1,E2) \
|
|
|
|
#define GLM_SWIZZLE3_2_MEMBERS(T, P, E0,E1,E2) \
|
|
|
|
struct { detail::_swizzle<2,T, P, 0,0,-1,-2> E0 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<2,T, P, 0,0,-1,-2> E0 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<2,T, P, 0,1,-1,-2> E0 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<2,T, P, 0,1,-1,-2> E0 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<2,T, P, 0,2,-1,-2> E0 ## E2; }; \
|
|
|
|
struct { detail::_swizzle<2,T, P, 0,2,-1,-2> E0 ## E2; }; \
|
|
|
|
@@ -342,7 +342,7 @@ namespace glm
|
|
|
|
struct { detail::_swizzle<2,T, P, 2,1,-1,-2> E2 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<2,T, P, 2,1,-1,-2> E2 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<2,T, P, 2,2,-1,-2> E2 ## E2; };
|
|
|
|
struct { detail::_swizzle<2,T, P, 2,2,-1,-2> E2 ## E2; };
|
|
|
|
|
|
|
|
|
|
|
|
#define _GLM_SWIZZLE3_3_MEMBERS(T, P ,E0,E1,E2) \
|
|
|
|
#define GLM_SWIZZLE3_3_MEMBERS(T, P ,E0,E1,E2) \
|
|
|
|
struct { detail::_swizzle<3, T, P, 0,0,0,-1> E0 ## E0 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<3, T, P, 0,0,0,-1> E0 ## E0 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<3, T, P, 0,0,1,-1> E0 ## E0 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<3, T, P, 0,0,1,-1> E0 ## E0 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<3, T, P, 0,0,2,-1> E0 ## E0 ## E2; }; \
|
|
|
|
struct { detail::_swizzle<3, T, P, 0,0,2,-1> E0 ## E0 ## E2; }; \
|
|
|
|
@@ -371,7 +371,7 @@ namespace glm
|
|
|
|
struct { detail::_swizzle<3, T, P, 2,2,1,-1> E2 ## E2 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<3, T, P, 2,2,1,-1> E2 ## E2 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<3, T, P, 2,2,2,-1> E2 ## E2 ## E2; };
|
|
|
|
struct { detail::_swizzle<3, T, P, 2,2,2,-1> E2 ## E2 ## E2; };
|
|
|
|
|
|
|
|
|
|
|
|
#define _GLM_SWIZZLE3_4_MEMBERS(T, P, E0,E1,E2) \
|
|
|
|
#define GLM_SWIZZLE3_4_MEMBERS(T, P, E0,E1,E2) \
|
|
|
|
struct { detail::_swizzle<4,T, P, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<4,T, P, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<4,T, P, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<4,T, P, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<4,T, P, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \
|
|
|
|
struct { detail::_swizzle<4,T, P, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \
|
|
|
|
@@ -454,7 +454,7 @@ namespace glm
|
|
|
|
struct { detail::_swizzle<4,T, P, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<4,T, P, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<4,T, P, 2,2,2,2> E2 ## E2 ## E2 ## E2; };
|
|
|
|
struct { detail::_swizzle<4,T, P, 2,2,2,2> E2 ## E2 ## E2 ## E2; };
|
|
|
|
|
|
|
|
|
|
|
|
#define _GLM_SWIZZLE4_2_MEMBERS(T, P, E0,E1,E2,E3) \
|
|
|
|
#define GLM_SWIZZLE4_2_MEMBERS(T, P, E0,E1,E2,E3) \
|
|
|
|
struct { detail::_swizzle<2,T, P, 0,0,-1,-2> E0 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<2,T, P, 0,0,-1,-2> E0 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<2,T, P, 0,1,-1,-2> E0 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<2,T, P, 0,1,-1,-2> E0 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<2,T, P, 0,2,-1,-2> E0 ## E2; }; \
|
|
|
|
struct { detail::_swizzle<2,T, P, 0,2,-1,-2> E0 ## E2; }; \
|
|
|
|
@@ -472,7 +472,7 @@ namespace glm
|
|
|
|
struct { detail::_swizzle<2,T, P, 3,2,-1,-2> E3 ## E2; }; \
|
|
|
|
struct { detail::_swizzle<2,T, P, 3,2,-1,-2> E3 ## E2; }; \
|
|
|
|
struct { detail::_swizzle<2,T, P, 3,3,-1,-2> E3 ## E3; };
|
|
|
|
struct { detail::_swizzle<2,T, P, 3,3,-1,-2> E3 ## E3; };
|
|
|
|
|
|
|
|
|
|
|
|
#define _GLM_SWIZZLE4_3_MEMBERS(T, P, E0,E1,E2,E3) \
|
|
|
|
#define GLM_SWIZZLE4_3_MEMBERS(T, P, E0,E1,E2,E3) \
|
|
|
|
struct { detail::_swizzle<3, T, P, 0,0,0,-1> E0 ## E0 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<3, T, P, 0,0,0,-1> E0 ## E0 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<3, T, P, 0,0,1,-1> E0 ## E0 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<3, T, P, 0,0,1,-1> E0 ## E0 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<3, T, P, 0,0,2,-1> E0 ## E0 ## E2; }; \
|
|
|
|
struct { detail::_swizzle<3, T, P, 0,0,2,-1> E0 ## E0 ## E2; }; \
|
|
|
|
@@ -538,7 +538,7 @@ namespace glm
|
|
|
|
struct { detail::_swizzle<3, T, P, 3,3,2,-1> E3 ## E3 ## E2; }; \
|
|
|
|
struct { detail::_swizzle<3, T, P, 3,3,2,-1> E3 ## E3 ## E2; }; \
|
|
|
|
struct { detail::_swizzle<3, T, P, 3,3,3,-1> E3 ## E3 ## E3; };
|
|
|
|
struct { detail::_swizzle<3, T, P, 3,3,3,-1> E3 ## E3 ## E3; };
|
|
|
|
|
|
|
|
|
|
|
|
#define _GLM_SWIZZLE4_4_MEMBERS(T, P, E0,E1,E2,E3) \
|
|
|
|
#define GLM_SWIZZLE4_4_MEMBERS(T, P, E0,E1,E2,E3) \
|
|
|
|
struct { detail::_swizzle<4, T, P, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<4, T, P, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
|
|
|
|
struct { detail::_swizzle<4, T, P, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<4, T, P, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
|
|
|
|
struct { detail::_swizzle<4, T, P, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \
|
|
|
|
struct { detail::_swizzle<4, T, P, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \
|
|
|
|
|