|
|
@@ -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)
|
|
|
{
|