|
|
@ -70,7 +70,7 @@ namespace glm |
|
|
|
w(0) |
|
|
|
w(0) |
|
|
|
{} |
|
|
|
{} |
|
|
|
|
|
|
|
|
|
|
|
#if((GLM_HAS_UNRESTRICTED_UNIONS) && (GLM_ARCH & GLM_ARCH_SSE2)) |
|
|
|
#if (GLM_HAS_UNRESTRICTED_UNIONS) && (GLM_ARCH & GLM_ARCH_SSE2) |
|
|
|
template <> |
|
|
|
template <> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<float, lowp>::tvec4() : |
|
|
|
GLM_FUNC_QUALIFIER tvec4<float, lowp>::tvec4() : |
|
|
|
data(_mm_setzero_ps()) |
|
|
|
data(_mm_setzero_ps()) |
|
|
@ -90,7 +90,7 @@ namespace glm |
|
|
|
w(v.w) |
|
|
|
w(v.w) |
|
|
|
{} |
|
|
|
{} |
|
|
|
|
|
|
|
|
|
|
|
#if((GLM_HAS_UNRESTRICTED_UNIONS) && (GLM_ARCH & GLM_ARCH_SSE2)) |
|
|
|
#if (GLM_HAS_UNRESTRICTED_UNIONS) && (GLM_ARCH & GLM_ARCH_SSE2) |
|
|
|
template <> |
|
|
|
template <> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<float, lowp>::tvec4(tvec4<float, lowp> const & v) : |
|
|
|
GLM_FUNC_QUALIFIER tvec4<float, lowp>::tvec4(tvec4<float, lowp> const & v) : |
|
|
|
data(v.data) |
|
|
|
data(v.data) |
|
|
@ -163,29 +163,20 @@ namespace glm |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
template <typename A, typename B, typename C, typename D> |
|
|
|
template <typename A, typename B, typename C, typename D> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4 |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(A const & a, B const & b, C const & c, D const & d) : |
|
|
|
( |
|
|
|
x(static_cast<T>(a)), |
|
|
|
A const & x, |
|
|
|
y(static_cast<T>(b)), |
|
|
|
B const & y, |
|
|
|
z(static_cast<T>(c)), |
|
|
|
C const & z, |
|
|
|
w(static_cast<T>(d)) |
|
|
|
D const & w |
|
|
|
|
|
|
|
) : |
|
|
|
|
|
|
|
x(static_cast<T>(x)), |
|
|
|
|
|
|
|
y(static_cast<T>(y)), |
|
|
|
|
|
|
|
z(static_cast<T>(z)), |
|
|
|
|
|
|
|
w(static_cast<T>(w)) |
|
|
|
|
|
|
|
{} |
|
|
|
{} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
template <typename U, precision Q> |
|
|
|
template <typename A, typename B, typename C, typename D> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4 |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(tvec1<A, P> const & a, tvec1<B, P> const & b, tvec1<C, P> const & c, tvec1<D, P> const & d) : |
|
|
|
( |
|
|
|
x(static_cast<T>(a.x)), |
|
|
|
tvec4<U, Q> const & v |
|
|
|
y(static_cast<T>(b.x)), |
|
|
|
) : |
|
|
|
z(static_cast<T>(c.x)), |
|
|
|
x(static_cast<T>(v.x)), |
|
|
|
w(static_cast<T>(d.x)) |
|
|
|
y(static_cast<T>(v.y)), |
|
|
|
|
|
|
|
z(static_cast<T>(v.z)), |
|
|
|
|
|
|
|
w(static_cast<T>(v.w)) |
|
|
|
|
|
|
|
{} |
|
|
|
{} |
|
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////// |
|
|
|
////////////////////////////////////// |
|
|
@ -193,26 +184,25 @@ namespace glm |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
template <typename A, typename B, typename C, precision Q> |
|
|
|
template <typename A, typename B, typename C, precision Q> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4 |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(tvec2<A, Q> const & a, B const & b, C const & c) : |
|
|
|
( |
|
|
|
x(static_cast<T>(a.x)), |
|
|
|
tvec2<A, Q> const & v, |
|
|
|
y(static_cast<T>(a.y)), |
|
|
|
B const & s1, |
|
|
|
z(static_cast<T>(b)), |
|
|
|
C const & s2 |
|
|
|
w(static_cast<T>(c)) |
|
|
|
) : |
|
|
|
|
|
|
|
x(static_cast<T>(v.x)), |
|
|
|
|
|
|
|
y(static_cast<T>(v.y)), |
|
|
|
|
|
|
|
z(static_cast<T>(s1)), |
|
|
|
|
|
|
|
w(static_cast<T>(s2)) |
|
|
|
|
|
|
|
{} |
|
|
|
{} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
template <typename A, typename B, typename C, precision Q> |
|
|
|
template <typename A, typename B, typename C, precision Q> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4 |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(tvec2<A, Q> const & a, tvec1<B, Q> const & b, tvec1<C, Q> const & c) : |
|
|
|
( |
|
|
|
x(static_cast<T>(a.x)), |
|
|
|
A const & s1, |
|
|
|
y(static_cast<T>(a.y)), |
|
|
|
tvec2<B, Q> const & v, |
|
|
|
z(static_cast<T>(b.x)), |
|
|
|
C const & s2 |
|
|
|
w(static_cast<T>(c.x)) |
|
|
|
) : |
|
|
|
{} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
template <typename A, typename B, typename C, precision Q> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(A const & s1, tvec2<B, Q> const & v, C const & s2) : |
|
|
|
x(static_cast<T>(s1)), |
|
|
|
x(static_cast<T>(s1)), |
|
|
|
y(static_cast<T>(v.x)), |
|
|
|
y(static_cast<T>(v.x)), |
|
|
|
z(static_cast<T>(v.y)), |
|
|
|
z(static_cast<T>(v.y)), |
|
|
@ -221,55 +211,83 @@ namespace glm |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
template <typename A, typename B, typename C, precision Q> |
|
|
|
template <typename A, typename B, typename C, precision Q> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4 |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(tvec1<A, Q> const & a, tvec2<B, Q> const & b, tvec1<C, Q> const & c) : |
|
|
|
( |
|
|
|
x(static_cast<T>(a.x)), |
|
|
|
A const & s1, |
|
|
|
y(static_cast<T>(b.x)), |
|
|
|
B const & s2, |
|
|
|
z(static_cast<T>(b.y)), |
|
|
|
tvec2<C, Q> const & v |
|
|
|
w(static_cast<T>(c.x)) |
|
|
|
) : |
|
|
|
{} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
template <typename A, typename B, typename C, precision Q> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(A const & s1, B const & s2, tvec2<C, Q> const & v) : |
|
|
|
x(static_cast<T>(s1)), |
|
|
|
x(static_cast<T>(s1)), |
|
|
|
y(static_cast<T>(s2)), |
|
|
|
y(static_cast<T>(s2)), |
|
|
|
z(static_cast<T>(v.x)), |
|
|
|
z(static_cast<T>(v.x)), |
|
|
|
w(static_cast<T>(v.y)) |
|
|
|
w(static_cast<T>(v.y)) |
|
|
|
{} |
|
|
|
{} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
template <typename A, typename B, typename C, precision Q> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(tvec1<A, Q> const & a, tvec1<B, Q> const & b, tvec2<C, Q> const & c) : |
|
|
|
|
|
|
|
x(static_cast<T>(a.x)), |
|
|
|
|
|
|
|
y(static_cast<T>(b.x)), |
|
|
|
|
|
|
|
z(static_cast<T>(c.x)), |
|
|
|
|
|
|
|
w(static_cast<T>(c.y)) |
|
|
|
|
|
|
|
{} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
template <typename A, typename B, precision Q> |
|
|
|
template <typename A, typename B, precision Q> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4 |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(tvec3<A, Q> const & a, B const & b) : |
|
|
|
( |
|
|
|
x(static_cast<T>(a.x)), |
|
|
|
tvec3<A, Q> const & v, |
|
|
|
y(static_cast<T>(a.y)), |
|
|
|
B const & s |
|
|
|
z(static_cast<T>(a.z)), |
|
|
|
) : |
|
|
|
w(static_cast<T>(b)) |
|
|
|
x(static_cast<T>(v.x)), |
|
|
|
|
|
|
|
y(static_cast<T>(v.y)), |
|
|
|
|
|
|
|
z(static_cast<T>(v.z)), |
|
|
|
|
|
|
|
w(static_cast<T>(s)) |
|
|
|
|
|
|
|
{} |
|
|
|
{} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
template <typename A, typename B, precision Q> |
|
|
|
template <typename A, typename B, precision Q> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4 |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(tvec3<A, Q> const & a, tvec1<B, Q> const & b) : |
|
|
|
( |
|
|
|
x(static_cast<T>(a.x)), |
|
|
|
A const & s, |
|
|
|
y(static_cast<T>(a.y)), |
|
|
|
tvec3<B, Q> const & v |
|
|
|
z(static_cast<T>(a.z)), |
|
|
|
) : |
|
|
|
w(static_cast<T>(b.x)) |
|
|
|
x(static_cast<T>(s)), |
|
|
|
|
|
|
|
y(static_cast<T>(v.x)), |
|
|
|
|
|
|
|
z(static_cast<T>(v.y)), |
|
|
|
|
|
|
|
w(static_cast<T>(v.z)) |
|
|
|
|
|
|
|
{} |
|
|
|
{} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
template <typename A, typename B, precision Q> |
|
|
|
template <typename A, typename B, precision Q> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4 |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(A const & a, tvec3<B, Q> const & b) : |
|
|
|
( |
|
|
|
x(static_cast<T>(a)), |
|
|
|
tvec2<A, Q> const & v1, |
|
|
|
y(static_cast<T>(b.x)), |
|
|
|
tvec2<B, Q> const & v2 |
|
|
|
z(static_cast<T>(b.y)), |
|
|
|
) : |
|
|
|
w(static_cast<T>(b.z)) |
|
|
|
x(static_cast<T>(v1.x)), |
|
|
|
{} |
|
|
|
y(static_cast<T>(v1.y)), |
|
|
|
|
|
|
|
z(static_cast<T>(v2.x)), |
|
|
|
template <typename T, precision P> |
|
|
|
w(static_cast<T>(v2.y)) |
|
|
|
template <typename A, typename B, precision Q> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(tvec1<A, Q> const & a, tvec3<B, Q> const & b) : |
|
|
|
|
|
|
|
x(static_cast<T>(a.x)), |
|
|
|
|
|
|
|
y(static_cast<T>(b.x)), |
|
|
|
|
|
|
|
z(static_cast<T>(b.y)), |
|
|
|
|
|
|
|
w(static_cast<T>(b.z)) |
|
|
|
|
|
|
|
{} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
template <typename A, typename B, precision Q> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(tvec2<A, Q> const & a, tvec2<B, Q> const & b) : |
|
|
|
|
|
|
|
x(static_cast<T>(a.x)), |
|
|
|
|
|
|
|
y(static_cast<T>(a.y)), |
|
|
|
|
|
|
|
z(static_cast<T>(b.x)), |
|
|
|
|
|
|
|
w(static_cast<T>(b.y)) |
|
|
|
|
|
|
|
{} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
template <typename U, precision Q> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(tvec4<U, Q> const & v) : |
|
|
|
|
|
|
|
x(static_cast<T>(v.x)), |
|
|
|
|
|
|
|
y(static_cast<T>(v.y)), |
|
|
|
|
|
|
|
z(static_cast<T>(v.z)), |
|
|
|
|
|
|
|
w(static_cast<T>(v.w)) |
|
|
|
{} |
|
|
|
{} |
|
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////// |
|
|
|
////////////////////////////////////// |
|
|
@ -285,7 +303,7 @@ namespace glm |
|
|
|
return *this; |
|
|
|
return *this; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#if((GLM_HAS_UNRESTRICTED_UNIONS) && (GLM_ARCH & GLM_ARCH_SSE2)) |
|
|
|
#if (GLM_HAS_UNRESTRICTED_UNIONS) && (GLM_ARCH & GLM_ARCH_SSE2) |
|
|
|
template <> |
|
|
|
template <> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<float, lowp> & tvec4<float, lowp>::operator= (tvec4<float, lowp> const & v) |
|
|
|
GLM_FUNC_QUALIFIER tvec4<float, lowp> & tvec4<float, lowp>::operator= (tvec4<float, lowp> const & v) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -302,115 +320,48 @@ namespace glm |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator+= (T v) |
|
|
|
template <typename U> |
|
|
|
{ |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator=(tvec4<U, P> const & v) |
|
|
|
this->x += v; |
|
|
|
|
|
|
|
this->y += v; |
|
|
|
|
|
|
|
this->z += v; |
|
|
|
|
|
|
|
this->w += v; |
|
|
|
|
|
|
|
return *this; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if((GLM_HAS_UNRESTRICTED_UNIONS) && (GLM_ARCH & GLM_ARCH_SSE2)) |
|
|
|
|
|
|
|
template <> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<float, lowp> & tvec4<float, lowp>::operator+= (float s) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
this->data = _mm_add_ps(this->data, _mm_set_ps1(s)); |
|
|
|
|
|
|
|
return *this; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<float, mediump> & tvec4<float, mediump>::operator+= (float s) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
this->data = _mm_add_ps(this->data, _mm_set_ps1(s)); |
|
|
|
|
|
|
|
return *this; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator+= (tvec4<T, P> const & v) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
this->x += v.x; |
|
|
|
|
|
|
|
this->y += v.y; |
|
|
|
|
|
|
|
this->z += v.z; |
|
|
|
|
|
|
|
this->w += v.w; |
|
|
|
|
|
|
|
return *this; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator-= (T v) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
this->x -= v; |
|
|
|
|
|
|
|
this->y -= v; |
|
|
|
|
|
|
|
this->z -= v; |
|
|
|
|
|
|
|
this->w -= v; |
|
|
|
|
|
|
|
return *this; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator-= (tvec4<T, P> const & v) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
this->x -= v.x; |
|
|
|
|
|
|
|
this->y -= v.y; |
|
|
|
|
|
|
|
this->z -= v.z; |
|
|
|
|
|
|
|
this->w -= v.w; |
|
|
|
|
|
|
|
return *this; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator*= (T v) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
this->x *= v; |
|
|
|
|
|
|
|
this->y *= v; |
|
|
|
|
|
|
|
this->z *= v; |
|
|
|
|
|
|
|
this->w *= v; |
|
|
|
|
|
|
|
return *this; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator*= (tvec4<T, P> const & v) |
|
|
|
|
|
|
|
{ |
|
|
|
{ |
|
|
|
this->x *= v.x; |
|
|
|
this->x = static_cast<T>(v.x); |
|
|
|
this->y *= v.y; |
|
|
|
this->y = static_cast<T>(v.y); |
|
|
|
this->z *= v.z; |
|
|
|
this->z = static_cast<T>(v.z); |
|
|
|
this->w *= v.w; |
|
|
|
this->w = static_cast<T>(v.w); |
|
|
|
return *this; |
|
|
|
return *this; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator/= (T v) |
|
|
|
template <typename U> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator+=(U s) |
|
|
|
{ |
|
|
|
{ |
|
|
|
this->x /= v; |
|
|
|
this->x += static_cast<T>(s); |
|
|
|
this->y /= v; |
|
|
|
this->y += static_cast<T>(s); |
|
|
|
this->z /= v; |
|
|
|
this->z += static_cast<T>(s); |
|
|
|
this->w /= v; |
|
|
|
this->w += static_cast<T>(s); |
|
|
|
return *this; |
|
|
|
return *this; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
#if (GLM_HAS_UNRESTRICTED_UNIONS) && (GLM_ARCH & GLM_ARCH_SSE2) |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator/= (tvec4<T, P> const & v) |
|
|
|
template <> |
|
|
|
|
|
|
|
template <typename U> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<float, lowp> & tvec4<float, lowp>::operator+=(U s) |
|
|
|
{ |
|
|
|
{ |
|
|
|
this->x /= v.x; |
|
|
|
this->data = _mm_add_ps(this->data, _mm_set_ps1(static_cast<float>(s))); |
|
|
|
this->y /= v.y; |
|
|
|
|
|
|
|
this->z /= v.z; |
|
|
|
|
|
|
|
this->w /= v.w; |
|
|
|
|
|
|
|
return *this; |
|
|
|
return *this; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <> |
|
|
|
template <typename U, precision Q> |
|
|
|
template <typename U> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator= (tvec4<U, Q> const & v) |
|
|
|
GLM_FUNC_QUALIFIER tvec4<float, mediump> & tvec4<float, mediump>::operator+=(U s) |
|
|
|
{ |
|
|
|
{ |
|
|
|
this->x = static_cast<T>(v.x); |
|
|
|
this->data = _mm_add_ps(this->data, _mm_set_ps1(static_cast<float>(s))); |
|
|
|
this->y = static_cast<T>(v.y); |
|
|
|
|
|
|
|
this->z = static_cast<T>(v.z); |
|
|
|
|
|
|
|
this->w = static_cast<T>(v.w); |
|
|
|
|
|
|
|
return *this; |
|
|
|
return *this; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
template <typename U> |
|
|
|
template <typename U> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator+= (U s) |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator+=(tvec1<U, P> const & s) |
|
|
|
{ |
|
|
|
{ |
|
|
|
this->x += static_cast<T>(s); |
|
|
|
this->x += static_cast<T>(s); |
|
|
|
this->y += static_cast<T>(s); |
|
|
|
this->y += static_cast<T>(s); |
|
|
@ -419,10 +370,10 @@ namespace glm |
|
|
|
return *this; |
|
|
|
return *this; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#if((GLM_HAS_UNRESTRICTED_UNIONS) && (GLM_ARCH & GLM_ARCH_SSE2)) |
|
|
|
#if (GLM_HAS_UNRESTRICTED_UNIONS) && (GLM_ARCH & GLM_ARCH_SSE2) |
|
|
|
template <> |
|
|
|
template <> |
|
|
|
template <typename U> |
|
|
|
template <typename U> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<float, lowp> & tvec4<float, lowp>::operator+= (U s) |
|
|
|
GLM_FUNC_QUALIFIER tvec4<float, lowp> & tvec4<float, lowp>::operator+=(tvec1<U, P> const & s) |
|
|
|
{ |
|
|
|
{ |
|
|
|
this->data = _mm_add_ps(this->data, _mm_set_ps1(static_cast<float>(s))); |
|
|
|
this->data = _mm_add_ps(this->data, _mm_set_ps1(static_cast<float>(s))); |
|
|
|
return *this; |
|
|
|
return *this; |
|
|
@ -430,7 +381,7 @@ namespace glm |
|
|
|
|
|
|
|
|
|
|
|
template <> |
|
|
|
template <> |
|
|
|
template <typename U> |
|
|
|
template <typename U> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<float, mediump> & tvec4<float, mediump>::operator+= (U s) |
|
|
|
GLM_FUNC_QUALIFIER tvec4<float, mediump> & tvec4<float, mediump>::operator+=(tvec1<U, P> const & s) |
|
|
|
{ |
|
|
|
{ |
|
|
|
this->data = _mm_add_ps(this->data, _mm_set_ps1(static_cast<float>(s))); |
|
|
|
this->data = _mm_add_ps(this->data, _mm_set_ps1(static_cast<float>(s))); |
|
|
|
return *this; |
|
|
|
return *this; |
|
|
@ -459,6 +410,17 @@ namespace glm |
|
|
|
return *this; |
|
|
|
return *this; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
template <typename U> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator-=(tvec1<U, P> const & v) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
this->x -= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->y -= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->z -= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->w -= static_cast<T>(v.x); |
|
|
|
|
|
|
|
return *this; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
template <typename U> |
|
|
|
template <typename U> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator-=(tvec4<U, P> const & v) |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator-=(tvec4<U, P> const & v) |
|
|
@ -481,6 +443,17 @@ namespace glm |
|
|
|
return *this; |
|
|
|
return *this; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
template <typename U> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator*=(tvec1<U, P> const & v) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
this->x *= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->y *= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->z *= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->w *= static_cast<T>(v.x); |
|
|
|
|
|
|
|
return *this; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
template <typename U> |
|
|
|
template <typename U> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator*=(tvec4<U, P> const & v) |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator*=(tvec4<U, P> const & v) |
|
|
@ -503,6 +476,17 @@ namespace glm |
|
|
|
return *this; |
|
|
|
return *this; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
template <typename U> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator/=(tvec1<U, P> const & v) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
this->x /= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->y /= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->z /= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->w /= static_cast<T>(v.x); |
|
|
|
|
|
|
|
return *this; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
template <typename U> |
|
|
|
template <typename U> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator/=(tvec4<U, P> const & v) |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator/=(tvec4<U, P> const & v) |
|
|
@ -567,6 +551,17 @@ namespace glm |
|
|
|
return *this; |
|
|
|
return *this; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
template <typename U> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator%=(tvec1<U, P> const & v) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
this->x %= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->y %= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->z %= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->w %= static_cast<T>(v.x); |
|
|
|
|
|
|
|
return *this; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
template <typename U> |
|
|
|
template <typename U> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator%=(tvec4<U, P> const & v) |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator%=(tvec4<U, P> const & v) |
|
|
@ -589,6 +584,17 @@ namespace glm |
|
|
|
return *this; |
|
|
|
return *this; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
template <typename U> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator&=(tvec1<U, P> const & v) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
this->x &= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->y &= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->z &= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->w &= static_cast<T>(v.x); |
|
|
|
|
|
|
|
return *this; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
template <typename U> |
|
|
|
template <typename U> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator&=(tvec4<U, P> const & v) |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator&=(tvec4<U, P> const & v) |
|
|
@ -611,6 +617,17 @@ namespace glm |
|
|
|
return *this; |
|
|
|
return *this; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
template <typename U> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator|=(tvec1<U, P> const & v) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
this->x |= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->y |= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->z |= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->w |= static_cast<T>(v.x); |
|
|
|
|
|
|
|
return *this; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
template <typename U> |
|
|
|
template <typename U> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator|=(tvec4<U, P> const & v) |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator|=(tvec4<U, P> const & v) |
|
|
@ -633,6 +650,17 @@ namespace glm |
|
|
|
return *this; |
|
|
|
return *this; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
template <typename U> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator^=(tvec1<U, P> const & v) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
this->x ^= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->y ^= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->z ^= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->w ^= static_cast<T>(v.x); |
|
|
|
|
|
|
|
return *this; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
template <typename U> |
|
|
|
template <typename U> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator^=(tvec4<U, P> const & v) |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator^=(tvec4<U, P> const & v) |
|
|
@ -655,6 +683,17 @@ namespace glm |
|
|
|
return *this; |
|
|
|
return *this; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
template <typename U> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator<<=(tvec1<U, P> const & v) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
this->x <<= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->y <<= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->z <<= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->w <<= static_cast<T>(v.x); |
|
|
|
|
|
|
|
return *this; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
template <typename U> |
|
|
|
template <typename U> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator<<=(tvec4<U, P> const & v) |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator<<=(tvec4<U, P> const & v) |
|
|
@ -677,6 +716,17 @@ namespace glm |
|
|
|
return *this; |
|
|
|
return *this; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
template <typename U> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator>>=(tvec1<U, P> const & v) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
this->x >>= static_cast<T>(v.x); |
|
|
|
|
|
|
|
this->y >>= static_cast<T>(v.y); |
|
|
|
|
|
|
|
this->z >>= static_cast<T>(v.z); |
|
|
|
|
|
|
|
this->w >>= static_cast<T>(v.w); |
|
|
|
|
|
|
|
return *this; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
template <typename U> |
|
|
|
template <typename U> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator>>=(tvec4<U, P> const & v) |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> & tvec4<T, P>::operator>>=(tvec4<U, P> const & v) |
|
|
@ -688,6 +738,21 @@ namespace glm |
|
|
|
return *this; |
|
|
|
return *this; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////// |
|
|
|
|
|
|
|
// Boolean operators |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER bool operator==(tvec4<T, P> const & v1, tvec4<T, P> const & v2) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return (v1.x == v2.x) && (v1.y == v2.y) && (v1.z == v2.z) && (v1.w == v2.w); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER bool operator!=(tvec4<T, P> const & v1, tvec4<T, P> const & v2) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return (v1.x != v2.x) || (v1.y != v2.y) || (v1.z != v2.z) || (v1.w != v2.w); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////// |
|
|
|
////////////////////////////////////// |
|
|
|
// Binary arithmetic operators |
|
|
|
// Binary arithmetic operators |
|
|
|
|
|
|
|
|
|
|
@ -876,38 +941,11 @@ namespace glm |
|
|
|
-v.w); |
|
|
|
-v.w); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////// |
|
|
|
|
|
|
|
// Boolean operators |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER bool operator== |
|
|
|
|
|
|
|
( |
|
|
|
|
|
|
|
tvec4<T, P> const & v1, |
|
|
|
|
|
|
|
tvec4<T, P> const & v2 |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return (v1.x == v2.x) && (v1.y == v2.y) && (v1.z == v2.z) && (v1.w == v2.w); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER bool operator!= |
|
|
|
|
|
|
|
( |
|
|
|
|
|
|
|
tvec4<T, P> const & v1, |
|
|
|
|
|
|
|
tvec4<T, P> const & v2 |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return (v1.x != v2.x) || (v1.y != v2.y) || (v1.z != v2.z) || (v1.w != v2.w); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////// |
|
|
|
////////////////////////////////////// |
|
|
|
// Binary bit operators |
|
|
|
// Binary bit operators |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator% |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator%(tvec4<T, P> const & v, T const & s) |
|
|
|
( |
|
|
|
|
|
|
|
tvec4<T, P> const & v, |
|
|
|
|
|
|
|
T const & s |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
{ |
|
|
|
{ |
|
|
|
return tvec4<T, P>( |
|
|
|
return tvec4<T, P>( |
|
|
|
v.x % s, |
|
|
|
v.x % s, |
|
|
@ -917,11 +955,17 @@ namespace glm |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator% |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator%(tvec4<T, P> const & v, tvec1<T, P> const & s) |
|
|
|
( |
|
|
|
{ |
|
|
|
T const & s, |
|
|
|
return tvec4<T, P>( |
|
|
|
tvec4<T, P> const & v |
|
|
|
v.x % s.x, |
|
|
|
) |
|
|
|
v.y % s.x, |
|
|
|
|
|
|
|
v.z % s.x, |
|
|
|
|
|
|
|
v.w % s.x); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator%(T const & s, tvec4<T, P> const & v) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return tvec4<T, P>( |
|
|
|
return tvec4<T, P>( |
|
|
|
s % v.x, |
|
|
|
s % v.x, |
|
|
@ -931,11 +975,17 @@ namespace glm |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator% |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator%(tvec1<T, P> const & s, tvec4<T, P> const & v) |
|
|
|
( |
|
|
|
{ |
|
|
|
tvec4<T, P> const & v1, |
|
|
|
return tvec4<T, P>( |
|
|
|
tvec4<T, P> const & v2 |
|
|
|
s.x % v.x, |
|
|
|
) |
|
|
|
s.x % v.y, |
|
|
|
|
|
|
|
s.x % v.z, |
|
|
|
|
|
|
|
s.x % v.w); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator%(tvec4<T, P> const & v1, tvec4<T, P> const & v2) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return tvec4<T, P>( |
|
|
|
return tvec4<T, P>( |
|
|
|
v1.x % v2.x, |
|
|
|
v1.x % v2.x, |
|
|
@ -945,11 +995,7 @@ namespace glm |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator& |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator&(tvec4<T, P> const & v, T const & s) |
|
|
|
( |
|
|
|
|
|
|
|
tvec4<T, P> const & v, |
|
|
|
|
|
|
|
T const & s |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
{ |
|
|
|
{ |
|
|
|
return tvec4<T, P>( |
|
|
|
return tvec4<T, P>( |
|
|
|
v.x & s, |
|
|
|
v.x & s, |
|
|
@ -959,11 +1005,17 @@ namespace glm |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator& |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator&(tvec4<T, P> const & v, tvec1<T, P> const & s) |
|
|
|
( |
|
|
|
{ |
|
|
|
T const & s, |
|
|
|
return tvec4<T, P>( |
|
|
|
tvec4<T, P> const & v |
|
|
|
v.x & s.x, |
|
|
|
) |
|
|
|
v.y & s.x, |
|
|
|
|
|
|
|
v.z & s.x, |
|
|
|
|
|
|
|
v.w & s.x); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator&(T const & s, tvec4<T, P> const & v) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return tvec4<T, P>( |
|
|
|
return tvec4<T, P>( |
|
|
|
s & v.x, |
|
|
|
s & v.x, |
|
|
@ -973,11 +1025,17 @@ namespace glm |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator& |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator&(tvec1<T, P> const & s, tvec4<T, P> const & v) |
|
|
|
( |
|
|
|
{ |
|
|
|
tvec4<T, P> const & v1, |
|
|
|
return tvec4<T, P>( |
|
|
|
tvec4<T, P> const & v2 |
|
|
|
s.x & v.x, |
|
|
|
) |
|
|
|
s.x & v.y, |
|
|
|
|
|
|
|
s.x & v.z, |
|
|
|
|
|
|
|
s.x & v.w); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator&(tvec4<T, P> const & v1, tvec4<T, P> const & v2) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return tvec4<T, P>( |
|
|
|
return tvec4<T, P>( |
|
|
|
v1.x & v2.x, |
|
|
|
v1.x & v2.x, |
|
|
@ -987,11 +1045,7 @@ namespace glm |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator| |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator|(tvec4<T, P> const & v, T const & s) |
|
|
|
( |
|
|
|
|
|
|
|
tvec4<T, P> const & v, |
|
|
|
|
|
|
|
T const & s |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
{ |
|
|
|
{ |
|
|
|
return tvec4<T, P>( |
|
|
|
return tvec4<T, P>( |
|
|
|
v.x | s, |
|
|
|
v.x | s, |
|
|
@ -1001,11 +1055,17 @@ namespace glm |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator| |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator|(tvec4<T, P> const & v, tvec1<T, P> const & s) |
|
|
|
( |
|
|
|
{ |
|
|
|
T const & s, |
|
|
|
return tvec4<T, P>( |
|
|
|
tvec4<T, P> const & v |
|
|
|
v.x | s.x, |
|
|
|
) |
|
|
|
v.y | s.x, |
|
|
|
|
|
|
|
v.z | s.x, |
|
|
|
|
|
|
|
v.w | s.x); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator|(T const & s, tvec4<T, P> const & v) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return tvec4<T, P>( |
|
|
|
return tvec4<T, P>( |
|
|
|
s | v.x, |
|
|
|
s | v.x, |
|
|
@ -1015,11 +1075,17 @@ namespace glm |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator| |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator|(tvec1<T, P> const & s, tvec4<T, P> const & v) |
|
|
|
( |
|
|
|
{ |
|
|
|
tvec4<T, P> const & v1, |
|
|
|
return tvec4<T, P>( |
|
|
|
tvec4<T, P> const & v2 |
|
|
|
s.x | v.x, |
|
|
|
) |
|
|
|
s.x | v.y, |
|
|
|
|
|
|
|
s.x | v.z, |
|
|
|
|
|
|
|
s.x | v.w); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator|(tvec4<T, P> const & v1, tvec4<T, P> const & v2) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return tvec4<T, P>( |
|
|
|
return tvec4<T, P>( |
|
|
|
v1.x | v2.x, |
|
|
|
v1.x | v2.x, |
|
|
@ -1029,11 +1095,7 @@ namespace glm |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator^ |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator^(tvec4<T, P> const & v, T const & s) |
|
|
|
( |
|
|
|
|
|
|
|
tvec4<T, P> const & v, |
|
|
|
|
|
|
|
T const & s |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
{ |
|
|
|
{ |
|
|
|
return tvec4<T, P>( |
|
|
|
return tvec4<T, P>( |
|
|
|
v.x ^ s, |
|
|
|
v.x ^ s, |
|
|
@ -1043,11 +1105,17 @@ namespace glm |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator^ |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator^(tvec4<T, P> const & v, tvec1<T, P> const & s) |
|
|
|
( |
|
|
|
{ |
|
|
|
T const & s, |
|
|
|
return tvec4<T, P>( |
|
|
|
tvec4<T, P> const & v |
|
|
|
v.x ^ s.x, |
|
|
|
) |
|
|
|
v.y ^ s.x, |
|
|
|
|
|
|
|
v.z ^ s.x, |
|
|
|
|
|
|
|
v.w ^ s.x); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator^(T const & s, tvec4<T, P> const & v) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return tvec4<T, P>( |
|
|
|
return tvec4<T, P>( |
|
|
|
s ^ v.x, |
|
|
|
s ^ v.x, |
|
|
@ -1057,11 +1125,17 @@ namespace glm |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator^ |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator^(tvec1<T, P> const & s, tvec4<T, P> const & v) |
|
|
|
( |
|
|
|
{ |
|
|
|
tvec4<T, P> const & v1, |
|
|
|
return tvec4<T, P>( |
|
|
|
tvec4<T, P> const & v2 |
|
|
|
s.x ^ v.x, |
|
|
|
) |
|
|
|
s.x ^ v.y, |
|
|
|
|
|
|
|
s.x ^ v.z, |
|
|
|
|
|
|
|
s.x ^ v.w); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator^(tvec4<T, P> const & v1, tvec4<T, P> const & v2) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return tvec4<T, P>( |
|
|
|
return tvec4<T, P>( |
|
|
|
v1.x ^ v2.x, |
|
|
|
v1.x ^ v2.x, |
|
|
@ -1071,11 +1145,7 @@ namespace glm |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator<< |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator<<(tvec4<T, P> const & v, T const & s) |
|
|
|
( |
|
|
|
|
|
|
|
tvec4<T, P> const & v, |
|
|
|
|
|
|
|
T const & s |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
{ |
|
|
|
{ |
|
|
|
return tvec4<T, P>( |
|
|
|
return tvec4<T, P>( |
|
|
|
v.x << s, |
|
|
|
v.x << s, |
|
|
@ -1085,11 +1155,17 @@ namespace glm |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator<< |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator<<(tvec4<T, P> const & v, tvec1<T, P> const & s) |
|
|
|
( |
|
|
|
{ |
|
|
|
T const & s, |
|
|
|
return tvec4<T, P>( |
|
|
|
tvec4<T, P> const & v |
|
|
|
v.x << s.x, |
|
|
|
) |
|
|
|
v.y << s.x, |
|
|
|
|
|
|
|
v.z << s.x, |
|
|
|
|
|
|
|
v.w << s.x); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator<<(T const & s, tvec4<T, P> const & v) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return tvec4<T, P>( |
|
|
|
return tvec4<T, P>( |
|
|
|
s << v.x, |
|
|
|
s << v.x, |
|
|
@ -1099,11 +1175,17 @@ namespace glm |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator<< |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator<<(tvec1<T, P> const & s, tvec4<T, P> const & v) |
|
|
|
( |
|
|
|
{ |
|
|
|
tvec4<T, P> const & v1, |
|
|
|
return tvec4<T, P>( |
|
|
|
tvec4<T, P> const & v2 |
|
|
|
s.x << v.x, |
|
|
|
) |
|
|
|
s.x << v.y, |
|
|
|
|
|
|
|
s.x << v.z, |
|
|
|
|
|
|
|
s.x << v.w); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator<<(tvec4<T, P> const & v1, tvec4<T, P> const & v2) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return tvec4<T, P>( |
|
|
|
return tvec4<T, P>( |
|
|
|
v1.x << v2.x, |
|
|
|
v1.x << v2.x, |
|
|
@ -1113,11 +1195,7 @@ namespace glm |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator>> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator>>(tvec4<T, P> const & v, T const & s) |
|
|
|
( |
|
|
|
|
|
|
|
tvec4<T, P> const & v, |
|
|
|
|
|
|
|
T const & s |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
{ |
|
|
|
{ |
|
|
|
return tvec4<T, P>( |
|
|
|
return tvec4<T, P>( |
|
|
|
v.x >> s, |
|
|
|
v.x >> s, |
|
|
@ -1127,11 +1205,17 @@ namespace glm |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator>> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator>>(tvec4<T, P> const & v, tvec1<T, P> const & s) |
|
|
|
( |
|
|
|
{ |
|
|
|
T const & s, |
|
|
|
return tvec4<T, P>( |
|
|
|
tvec4<T, P> const & v |
|
|
|
v.x >> s.x, |
|
|
|
) |
|
|
|
v.y >> s.x, |
|
|
|
|
|
|
|
v.z >> s.x, |
|
|
|
|
|
|
|
v.w >> s.x); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator>>(T const & s, tvec4<T, P> const & v) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return tvec4<T, P>( |
|
|
|
return tvec4<T, P>( |
|
|
|
s >> v.x, |
|
|
|
s >> v.x, |
|
|
@ -1141,11 +1225,17 @@ namespace glm |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator>> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator>>(tvec1<T, P> const & s, tvec4<T, P> const & v) |
|
|
|
( |
|
|
|
{ |
|
|
|
tvec4<T, P> const & v1, |
|
|
|
return tvec4<T, P>( |
|
|
|
tvec4<T, P> const & v2 |
|
|
|
s.x >> v.x, |
|
|
|
) |
|
|
|
s.x >> v.y, |
|
|
|
|
|
|
|
s.x >> v.z, |
|
|
|
|
|
|
|
s.x >> v.w); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
|
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator>>(tvec4<T, P> const & v1, tvec4<T, P> const & v2) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return tvec4<T, P>( |
|
|
|
return tvec4<T, P>( |
|
|
|
v1.x >> v2.x, |
|
|
|
v1.x >> v2.x, |
|
|
@ -1155,10 +1245,7 @@ namespace glm |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template <typename T, precision P> |
|
|
|
template <typename T, precision P> |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator~ |
|
|
|
GLM_FUNC_QUALIFIER tvec4<T, P> operator~(tvec4<T, P> const & v) |
|
|
|
( |
|
|
|
|
|
|
|
tvec4<T, P> const & v |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
{ |
|
|
|
{ |
|
|
|
return tvec4<T, P>( |
|
|
|
return tvec4<T, P>( |
|
|
|
~v.x, |
|
|
|
~v.x, |
|
|
|