|
|
@@ -7,110 +7,8 @@
|
|
|
#include "type_int.hpp"
|
|
|
#include "compute_vector_relational.hpp"
|
|
|
|
|
|
-namespace glm{
|
|
|
-namespace detail
|
|
|
+namespace glm
|
|
|
{
|
|
|
- template<length_t L, typename T, qualifier Q>
|
|
|
- struct storage_alignment
|
|
|
- {};
|
|
|
-
|
|
|
- template<length_t L, typename T>
|
|
|
- struct alignas(L * sizeof(T)) storage_alignment<L, T, aligned_highp>
|
|
|
- {};
|
|
|
-
|
|
|
- template<length_t L, typename T>
|
|
|
- struct alignas(L * sizeof(T)) storage_alignment<L, T, aligned_mediump>
|
|
|
- {};
|
|
|
-
|
|
|
- template<length_t L, typename T>
|
|
|
- struct alignas(L * sizeof(T)) storage_alignment<L, T, aligned_lowp>
|
|
|
- {};
|
|
|
-
|
|
|
- template<length_t L, typename T, bool is_aligned>
|
|
|
- struct storage
|
|
|
- {
|
|
|
- typedef struct type {
|
|
|
- T data[L];
|
|
|
- } type;
|
|
|
- };
|
|
|
-
|
|
|
- template<length_t L, typename T>
|
|
|
- struct storage<L, T, true>
|
|
|
- {
|
|
|
- typedef struct alignas(L * sizeof(T)) type {
|
|
|
- T data[L];
|
|
|
- } type;
|
|
|
- };
|
|
|
-
|
|
|
- template<typename T>
|
|
|
- struct storage<3, T, true>
|
|
|
- {
|
|
|
- typedef struct alignas(4 * sizeof(T)) type {
|
|
|
- T data[4];
|
|
|
- } type;
|
|
|
- };
|
|
|
-
|
|
|
-# if GLM_ARCH & GLM_ARCH_SSE2_BIT
|
|
|
- template<>
|
|
|
- struct storage<4, float, true>
|
|
|
- {
|
|
|
- typedef glm_f32vec4 type;
|
|
|
- };
|
|
|
-
|
|
|
- template<>
|
|
|
- struct storage<4, int32, true>
|
|
|
- {
|
|
|
- typedef glm_i32vec4 type;
|
|
|
- };
|
|
|
-
|
|
|
- template<>
|
|
|
- struct storage<4, uint32, true>
|
|
|
- {
|
|
|
- typedef glm_u32vec4 type;
|
|
|
- };
|
|
|
-
|
|
|
- template<>
|
|
|
- struct storage<2, double, true>
|
|
|
- {
|
|
|
- typedef glm_f64vec2 type;
|
|
|
- };
|
|
|
-
|
|
|
- template<>
|
|
|
- struct storage<2, int64, true>
|
|
|
- {
|
|
|
- typedef glm_i64vec2 type;
|
|
|
- };
|
|
|
-
|
|
|
- template<>
|
|
|
- struct storage<2, uint64, true>
|
|
|
- {
|
|
|
- typedef glm_u64vec2 type;
|
|
|
- };
|
|
|
-# endif
|
|
|
-
|
|
|
-# if (GLM_ARCH & GLM_ARCH_AVX_BIT)
|
|
|
- template<>
|
|
|
- struct storage<4, double, true>
|
|
|
- {
|
|
|
- typedef glm_f64vec4 type;
|
|
|
- };
|
|
|
-# endif
|
|
|
-
|
|
|
-# if (GLM_ARCH & GLM_ARCH_AVX2_BIT)
|
|
|
- template<>
|
|
|
- struct storage<4, int64, true>
|
|
|
- {
|
|
|
- typedef glm_i64vec4 type;
|
|
|
- };
|
|
|
-
|
|
|
- template<>
|
|
|
- struct storage<4, uint64, true>
|
|
|
- {
|
|
|
- typedef glm_u64vec4 type;
|
|
|
- };
|
|
|
-# endif
|
|
|
-}//namespace detail
|
|
|
-
|
|
|
#if GLM_HAS_TEMPLATE_ALIASES
|
|
|
template <typename T, qualifier Q = defaultp> using tvec2 = vec<2, T, Q>;
|
|
|
template <typename T, qualifier Q = defaultp> using tvec3 = vec<3, T, Q>;
|