|
|
|
@ -11,13 +11,65 @@ |
|
|
|
|
|
|
|
|
|
namespace glm |
|
|
|
|
{ |
|
|
|
|
/*
|
|
|
|
|
enum genTypeEnum |
|
|
|
|
{ |
|
|
|
|
QUALIFIER_HIGHP, |
|
|
|
|
QUALIFIER_MEDIUMP, |
|
|
|
|
QUALIFIER_LOWP |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
template <typename genType> |
|
|
|
|
struct genTypeTrait |
|
|
|
|
{}; |
|
|
|
|
|
|
|
|
|
template <length_t L, typename T> |
|
|
|
|
struct genTypeTrait<vec<L, T, aligned_highp> > |
|
|
|
|
{ |
|
|
|
|
static const genTypeEnum GENTYPE = QUALIFIER_HIGHP; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
template <length_t L, typename T> |
|
|
|
|
struct genTypeTrait<vec<L, T, aligned_mediump> > |
|
|
|
|
{ |
|
|
|
|
static const genTypeEnum GENTYPE = QUALIFIER_MEDIUMP; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
template <length_t L, typename T> |
|
|
|
|
struct genTypeTrait<vec<L, T, aligned_lowp> > |
|
|
|
|
{ |
|
|
|
|
static const genTypeEnum GENTYPE = QUALIFIER_LOWP; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
template<length_t L, typename T, qualifier Q, bool isAligned> |
|
|
|
|
struct load_gentype |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
# if GLM_ARCH & GLM_ARCH_SSE_BIT |
|
|
|
|
template<qualifier Q> |
|
|
|
|
struct load_gentype<4, float, Q, true> |
|
|
|
|
{ |
|
|
|
|
GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, float, Q> load(float const* Mem) |
|
|
|
|
{ |
|
|
|
|
vec<4, float, Q> Result; |
|
|
|
|
Result.data = _mm_loadu_ps(Mem); |
|
|
|
|
return Result; |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
# endif//GLM_ARCH & GLM_ARCH_SSE_BIT
|
|
|
|
|
|
|
|
|
|
template<typename genType> |
|
|
|
|
GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType example_identity() |
|
|
|
|
{ |
|
|
|
|
return detail::init_gentype<genType, detail::genTypeTrait<genType>::GENTYPE>::identity(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <typename genType, typename valType> |
|
|
|
|
genType load(valType const* Mem) |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
aligned_vec4 loadu(float const* Mem) |
|
|
|
|
{ |
|
|
|
|