|
|
@@ -22,16 +22,23 @@ namespace glm
|
|
|
{
|
|
|
namespace detail
|
|
|
{
|
|
|
- GLM_ALIGN(4) struct fvec4SIMD
|
|
|
+ GLM_ALIGN(4) union fvec4SIMD
|
|
|
{
|
|
|
+ enum ctor{null};
|
|
|
+ typedef float value_type;
|
|
|
+ typedef std::size_t size_type;
|
|
|
+ static size_type value_size();
|
|
|
+
|
|
|
+ typedef fvec4SIMD type;
|
|
|
+ typedef tvec4<bool> bool_type;
|
|
|
+
|
|
|
static __m128 one;
|
|
|
|
|
|
- union
|
|
|
- {
|
|
|
- __m128 Data;
|
|
|
- struct{float x, y, z, w;};
|
|
|
- float array[4];
|
|
|
- };
|
|
|
+ __m128 Data;
|
|
|
+ float Array[4];
|
|
|
+ struct{float x, y, z, w;};
|
|
|
+ struct{float r, g, b, a;};
|
|
|
+ struct{float s, t, q, p;};
|
|
|
|
|
|
//////////////////////////////////////
|
|
|
// Implicit basic constructors
|
|
|
@@ -44,9 +51,15 @@ namespace glm
|
|
|
//////////////////////////////////////
|
|
|
// Explicit basic constructors
|
|
|
|
|
|
- fvec4SIMD(float const & s);
|
|
|
- fvec4SIMD(float const & x, float const & y, float const & z, float const & w);
|
|
|
- fvec4SIMD(float const v[4]);
|
|
|
+ explicit fvec4SIMD(
|
|
|
+ ctor);
|
|
|
+ explicit fvec4SIMD(
|
|
|
+ float const & s);
|
|
|
+ explicit fvec4SIMD(
|
|
|
+ float const & x,
|
|
|
+ float const & y,
|
|
|
+ float const & z,
|
|
|
+ float const & w);
|
|
|
|
|
|
////////////////////////////////////////
|
|
|
//// Swizzle constructors
|
|
|
@@ -81,22 +94,6 @@ namespace glm
|
|
|
fvec4SIMD& operator++();
|
|
|
fvec4SIMD& operator--();
|
|
|
|
|
|
- ////////////////////////////////////////
|
|
|
- //// Unary bit operators
|
|
|
-
|
|
|
- //fvec4SIMD& operator%= (float s);
|
|
|
- //fvec4SIMD& operator%= (fvec4SIMD const & v);
|
|
|
- //fvec4SIMD& operator&= (float s);
|
|
|
- //fvec4SIMD& operator&= (fvec4SIMD const & v);
|
|
|
- //fvec4SIMD& operator|= (float s);
|
|
|
- //fvec4SIMD& operator|= (fvec4SIMD const & v);
|
|
|
- //fvec4SIMD& operator^= (float s);
|
|
|
- //fvec4SIMD& operator^= (fvec4SIMD const & v);
|
|
|
- //fvec4SIMD& operator<<=(float s);
|
|
|
- //fvec4SIMD& operator<<=(fvec4SIMD const & v);
|
|
|
- //fvec4SIMD& operator>>=(float s);
|
|
|
- //fvec4SIMD& operator>>=(fvec4SIMD const & v);
|
|
|
-
|
|
|
//////////////////////////////////////
|
|
|
// Swizzle operators
|
|
|
|