diff options
author | LaG1924 <12997935+LaG1924@users.noreply.github.com> | 2018-08-21 17:40:38 +0200 |
---|---|---|
committer | LaG1924 <12997935+LaG1924@users.noreply.github.com> | 2018-08-21 17:40:38 +0200 |
commit | 2877f4eda3d1b0c7431039e3142ecf1a282a34b1 (patch) | |
tree | 58ad35e27ab2a3b8955f5adbf28f296670681ffc /external/include/glm/gtc/type_aligned.hpp | |
parent | Smooth sun movement (diff) | |
download | AltCraft-2877f4eda3d1b0c7431039e3142ecf1a282a34b1.tar AltCraft-2877f4eda3d1b0c7431039e3142ecf1a282a34b1.tar.gz AltCraft-2877f4eda3d1b0c7431039e3142ecf1a282a34b1.tar.bz2 AltCraft-2877f4eda3d1b0c7431039e3142ecf1a282a34b1.tar.lz AltCraft-2877f4eda3d1b0c7431039e3142ecf1a282a34b1.tar.xz AltCraft-2877f4eda3d1b0c7431039e3142ecf1a282a34b1.tar.zst AltCraft-2877f4eda3d1b0c7431039e3142ecf1a282a34b1.zip |
Diffstat (limited to '')
-rw-r--r-- | external/include/glm/gtc/type_aligned.hpp | 588 |
1 files changed, 414 insertions, 174 deletions
diff --git a/external/include/glm/gtc/type_aligned.hpp b/external/include/glm/gtc/type_aligned.hpp index 2e4503c..7e51ce1 100644 --- a/external/include/glm/gtc/type_aligned.hpp +++ b/external/include/glm/gtc/type_aligned.hpp @@ -6,8 +6,9 @@ /// @defgroup gtc_type_aligned GLM_GTC_type_aligned /// @ingroup gtc /// -/// @brief Aligned types. -/// <glm/gtc/type_aligned.hpp> need to be included to use these features. +/// Include <glm/gtc/type_aligned.hpp> to use the features of this extension. +/// +/// Aligned types allowing SIMD optimizations of vectors and matrices types #pragma once @@ -25,214 +26,376 @@ namespace glm { - template <typename T, precision P> struct tvec1; - template <typename T, precision P> struct tvec2; - template <typename T, precision P> struct tvec3; - template <typename T, precision P> struct tvec4; /// @addtogroup gtc_type_aligned /// @{ // -- *vec1 -- - typedef tvec1<float, aligned_highp> aligned_highp_vec1; - typedef tvec1<float, aligned_mediump> aligned_mediump_vec1; - typedef tvec1<float, aligned_lowp> aligned_lowp_vec1; - typedef tvec1<double, aligned_highp> aligned_highp_dvec1; - typedef tvec1<double, aligned_mediump> aligned_mediump_dvec1; - typedef tvec1<double, aligned_lowp> aligned_lowp_dvec1; - typedef tvec1<int, aligned_highp> aligned_highp_ivec1; - typedef tvec1<int, aligned_mediump> aligned_mediump_ivec1; - typedef tvec1<int, aligned_lowp> aligned_lowp_ivec1; - typedef tvec1<uint, aligned_highp> aligned_highp_uvec1; - typedef tvec1<uint, aligned_mediump> aligned_mediump_uvec1; - typedef tvec1<uint, aligned_lowp> aligned_lowp_uvec1; - typedef tvec1<bool, aligned_highp> aligned_highp_bvec1; - typedef tvec1<bool, aligned_mediump> aligned_mediump_bvec1; - typedef tvec1<bool, aligned_lowp> aligned_lowp_bvec1; - - typedef tvec1<float, packed_highp> packed_highp_vec1; - typedef tvec1<float, packed_mediump> packed_mediump_vec1; - typedef tvec1<float, packed_lowp> packed_lowp_vec1; - typedef tvec1<double, packed_highp> packed_highp_dvec1; - typedef tvec1<double, packed_mediump> packed_mediump_dvec1; - typedef tvec1<double, packed_lowp> packed_lowp_dvec1; - typedef tvec1<int, packed_highp> packed_highp_ivec1; - typedef tvec1<int, packed_mediump> packed_mediump_ivec1; - typedef tvec1<int, packed_lowp> packed_lowp_ivec1; - typedef tvec1<uint, packed_highp> packed_highp_uvec1; - typedef tvec1<uint, packed_mediump> packed_mediump_uvec1; - typedef tvec1<uint, packed_lowp> packed_lowp_uvec1; - typedef tvec1<bool, packed_highp> packed_highp_bvec1; - typedef tvec1<bool, packed_mediump> packed_mediump_bvec1; - typedef tvec1<bool, packed_lowp> packed_lowp_bvec1; + /// 1 component vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs. + typedef vec<1, float, aligned_highp> aligned_highp_vec1; + + /// 1 component vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. + typedef vec<1, float, aligned_mediump> aligned_mediump_vec1; + + /// 1 component vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs. + typedef vec<1, float, aligned_lowp> aligned_lowp_vec1; + + /// 1 component vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs. + typedef vec<1, double, aligned_highp> aligned_highp_dvec1; + + /// 1 component vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. + typedef vec<1, double, aligned_mediump> aligned_mediump_dvec1; + + /// 1 component vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs. + typedef vec<1, double, aligned_lowp> aligned_lowp_dvec1; + + /// 1 component vector aligned in memory of signed integer numbers. + typedef vec<1, int, aligned_highp> aligned_highp_ivec1; + + /// 1 component vector aligned in memory of signed integer numbers. + typedef vec<1, int, aligned_mediump> aligned_mediump_ivec1; + + /// 1 component vector aligned in memory of signed integer numbers. + typedef vec<1, int, aligned_lowp> aligned_lowp_ivec1; + + /// 1 component vector aligned in memory of unsigned integer numbers. + typedef vec<1, uint, aligned_highp> aligned_highp_uvec1; + + /// 1 component vector aligned in memory of unsigned integer numbers. + typedef vec<1, uint, aligned_mediump> aligned_mediump_uvec1; + + /// 1 component vector aligned in memory of unsigned integer numbers. + typedef vec<1, uint, aligned_lowp> aligned_lowp_uvec1; + + /// 1 component vector aligned in memory of bool values. + typedef vec<1, bool, aligned_highp> aligned_highp_bvec1; + + /// 1 component vector aligned in memory of bool values. + typedef vec<1, bool, aligned_mediump> aligned_mediump_bvec1; + + /// 1 component vector aligned in memory of bool values. + typedef vec<1, bool, aligned_lowp> aligned_lowp_bvec1; + + /// 1 component vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs. + typedef vec<1, float, packed_highp> packed_highp_vec1; + + /// 1 component vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. + typedef vec<1, float, packed_mediump> packed_mediump_vec1; + + /// 1 component vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs. + typedef vec<1, float, packed_lowp> packed_lowp_vec1; + + /// 1 component vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs. + typedef vec<1, double, packed_highp> packed_highp_dvec1; + + /// 1 component vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. + typedef vec<1, double, packed_mediump> packed_mediump_dvec1; + + /// 1 component vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs. + typedef vec<1, double, packed_lowp> packed_lowp_dvec1; + + /// 1 component vector tightly packed in memory of signed integer numbers. + typedef vec<1, int, packed_highp> packed_highp_ivec1; + + /// 1 component vector tightly packed in memory of signed integer numbers. + typedef vec<1, int, packed_mediump> packed_mediump_ivec1; + + /// 1 component vector tightly packed in memory of signed integer numbers. + typedef vec<1, int, packed_lowp> packed_lowp_ivec1; + + /// 1 component vector tightly packed in memory of unsigned integer numbers. + typedef vec<1, uint, packed_highp> packed_highp_uvec1; + + /// 1 component vector tightly packed in memory of unsigned integer numbers. + typedef vec<1, uint, packed_mediump> packed_mediump_uvec1; + + /// 1 component vector tightly packed in memory of unsigned integer numbers. + typedef vec<1, uint, packed_lowp> packed_lowp_uvec1; + + /// 1 component vector tightly packed in memory of bool values. + typedef vec<1, bool, packed_highp> packed_highp_bvec1; + + /// 1 component vector tightly packed in memory of bool values. + typedef vec<1, bool, packed_mediump> packed_mediump_bvec1; + + /// 1 component vector tightly packed in memory of bool values. + typedef vec<1, bool, packed_lowp> packed_lowp_bvec1; // -- *vec2 -- - /// 2 components vector of high single-precision floating-point numbers. - /// There is no guarantee on the actual precision. - typedef tvec2<float, aligned_highp> aligned_highp_vec2; + /// 2 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs. + typedef vec<2, float, aligned_highp> aligned_highp_vec2; + + /// 2 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. + typedef vec<2, float, aligned_mediump> aligned_mediump_vec2; + + /// 2 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs. + typedef vec<2, float, aligned_lowp> aligned_lowp_vec2; + + /// 2 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs. + typedef vec<2, double, aligned_highp> aligned_highp_dvec2; + + /// 2 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. + typedef vec<2, double, aligned_mediump> aligned_mediump_dvec2; + + /// 2 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs. + typedef vec<2, double, aligned_lowp> aligned_lowp_dvec2; + + /// 2 components vector aligned in memory of signed integer numbers. + typedef vec<2, int, aligned_highp> aligned_highp_ivec2; - /// 2 components vector of medium single-precision floating-point numbers. - /// There is no guarantee on the actual precision. - typedef tvec2<float, aligned_mediump> aligned_mediump_vec2; + /// 2 components vector aligned in memory of signed integer numbers. + typedef vec<2, int, aligned_mediump> aligned_mediump_ivec2; - /// 2 components vector of low single-precision floating-point numbers. - /// There is no guarantee on the actual precision. - typedef tvec2<float, aligned_lowp> aligned_lowp_vec2; + /// 2 components vector aligned in memory of signed integer numbers. + typedef vec<2, int, aligned_lowp> aligned_lowp_ivec2; - /// 2 components vector of high double-precision floating-point numbers. - /// There is no guarantee on the actual precision. - typedef tvec2<double, aligned_highp> aligned_highp_dvec2; + /// 2 components vector aligned in memory of unsigned integer numbers. + typedef vec<2, uint, aligned_highp> aligned_highp_uvec2; - /// 2 components vector of medium double-precision floating-point numbers. - /// There is no guarantee on the actual precision. - typedef tvec2<double, aligned_mediump> aligned_mediump_dvec2; + /// 2 components vector aligned in memory of unsigned integer numbers. + typedef vec<2, uint, aligned_mediump> aligned_mediump_uvec2; - /// 2 components vector of low double-precision floating-point numbers. - /// There is no guarantee on the actual precision. - typedef tvec2<double, aligned_lowp> aligned_lowp_dvec2; + /// 2 components vector aligned in memory of unsigned integer numbers. + typedef vec<2, uint, aligned_lowp> aligned_lowp_uvec2; - /// 2 components vector of high precision signed integer numbers. - /// There is no guarantee on the actual precision. - typedef tvec2<int, aligned_highp> aligned_highp_ivec2; + /// 2 components vector aligned in memory of bool values. + typedef vec<2, bool, aligned_highp> aligned_highp_bvec2; - /// 2 components vector of medium precision signed integer numbers. - /// There is no guarantee on the actual precision. - typedef tvec2<int, aligned_mediump> aligned_mediump_ivec2; + /// 2 components vector aligned in memory of bool values. + typedef vec<2, bool, aligned_mediump> aligned_mediump_bvec2; - /// 2 components vector of low precision signed integer numbers. - /// There is no guarantee on the actual precision. - typedef tvec2<int, aligned_lowp> aligned_lowp_ivec2; + /// 2 components vector aligned in memory of bool values. + typedef vec<2, bool, aligned_lowp> aligned_lowp_bvec2; - /// 2 components vector of high precision unsigned integer numbers. - /// There is no guarantee on the actual precision. - typedef tvec2<uint, aligned_highp> aligned_highp_uvec2; + /// 2 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs. + typedef vec<2, float, packed_highp> packed_highp_vec2; - /// 2 components vector of medium precision unsigned integer numbers. - /// There is no guarantee on the actual precision. - typedef tvec2<uint, aligned_mediump> aligned_mediump_uvec2; + /// 2 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. + typedef vec<2, float, packed_mediump> packed_mediump_vec2; - /// 2 components vector of low precision unsigned integer numbers. - /// There is no guarantee on the actual precision. - typedef tvec2<uint, aligned_lowp> aligned_lowp_uvec2; + /// 2 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs. + typedef vec<2, float, packed_lowp> packed_lowp_vec2; - /// 2 components vector of high precision bool numbers. - /// There is no guarantee on the actual precision. - typedef tvec2<bool, aligned_highp> aligned_highp_bvec2; + /// 2 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs. + typedef vec<2, double, packed_highp> packed_highp_dvec2; - /// 2 components vector of medium precision bool numbers. - /// There is no guarantee on the actual precision. - typedef tvec2<bool, aligned_mediump> aligned_mediump_bvec2; + /// 2 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. + typedef vec<2, double, packed_mediump> packed_mediump_dvec2; - /// 2 components vector of low precision bool numbers. - /// There is no guarantee on the actual precision. - typedef tvec2<bool, aligned_lowp> aligned_lowp_bvec2; + /// 2 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs. + typedef vec<2, double, packed_lowp> packed_lowp_dvec2; + + /// 2 components vector tightly packed in memory of signed integer numbers. + typedef vec<2, int, packed_highp> packed_highp_ivec2; + + /// 2 components vector tightly packed in memory of signed integer numbers. + typedef vec<2, int, packed_mediump> packed_mediump_ivec2; + + /// 2 components vector tightly packed in memory of signed integer numbers. + typedef vec<2, int, packed_lowp> packed_lowp_ivec2; + + /// 2 components vector tightly packed in memory of unsigned integer numbers. + typedef vec<2, uint, packed_highp> packed_highp_uvec2; + + /// 2 components vector tightly packed in memory of unsigned integer numbers. + typedef vec<2, uint, packed_mediump> packed_mediump_uvec2; + + /// 2 components vector tightly packed in memory of unsigned integer numbers. + typedef vec<2, uint, packed_lowp> packed_lowp_uvec2; + + /// 2 components vector tightly packed in memory of bool values. + typedef vec<2, bool, packed_highp> packed_highp_bvec2; + + /// 2 components vector tightly packed in memory of bool values. + typedef vec<2, bool, packed_mediump> packed_mediump_bvec2; + + /// 2 components vector tightly packed in memory of bool values. + typedef vec<2, bool, packed_lowp> packed_lowp_bvec2; // -- *vec3 -- - /// 3 components vector of high single-precision floating-point numbers. - /// There is no guarantee on the actual precision. - typedef tvec3<float, aligned_highp> aligned_highp_vec3; + /// 3 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs. + typedef vec<3, float, aligned_highp> aligned_highp_vec3; + + /// 3 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. + typedef vec<3, float, aligned_mediump> aligned_mediump_vec3; + + /// 3 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs. + typedef vec<3, float, aligned_lowp> aligned_lowp_vec3; + + /// 3 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs. + typedef vec<3, double, aligned_highp> aligned_highp_dvec3; - /// 3 components vector of medium single-precision floating-point numbers. - /// There is no guarantee on the actual precision. - typedef tvec3<float, aligned_mediump> aligned_mediump_vec3; + /// 3 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. + typedef vec<3, double, aligned_mediump> aligned_mediump_dvec3; - /// 3 components vector of low single-precision floating-point numbers. - /// There is no guarantee on the actual precision. - typedef tvec3<float, aligned_lowp> aligned_lowp_vec3; + /// 3 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs. + typedef vec<3, double, aligned_lowp> aligned_lowp_dvec3; - /// 3 components vector of high double-precision floating-point numbers. - /// There is no guarantee on the actual precision. - typedef tvec3<double, aligned_highp> aligned_highp_dvec3; + /// 3 components vector aligned in memory of signed integer numbers. + typedef vec<3, int, aligned_highp> aligned_highp_ivec3; - /// 3 components vector of medium double-precision floating-point numbers. - /// There is no guarantee on the actual precision. - typedef tvec3<double, aligned_mediump> aligned_mediump_dvec3; + /// 3 components vector aligned in memory of signed integer numbers. + typedef vec<3, int, aligned_mediump> aligned_mediump_ivec3; - /// 3 components vector of low double-precision floating-point numbers. - /// There is no guarantee on the actual precision. - typedef tvec3<double, aligned_lowp> aligned_lowp_dvec3; + /// 3 components vector aligned in memory of signed integer numbers. + typedef vec<3, int, aligned_lowp> aligned_lowp_ivec3; - /// 3 components vector of high precision signed integer numbers. - /// There is no guarantee on the actual precision. - typedef tvec3<int, aligned_highp> aligned_highp_ivec3; + /// 3 components vector aligned in memory of unsigned integer numbers. + typedef vec<3, uint, aligned_highp> aligned_highp_uvec3; - /// 3 components vector of medium precision signed integer numbers. - /// There is no guarantee on the actual precision. - typedef tvec3<int, aligned_mediump> aligned_mediump_ivec3; + /// 3 components vector aligned in memory of unsigned integer numbers. + typedef vec<3, uint, aligned_mediump> aligned_mediump_uvec3; - /// 3 components vector of low precision signed integer numbers. - /// There is no guarantee on the actual precision. - typedef tvec3<int, aligned_lowp> aligned_lowp_ivec3; + /// 3 components vector aligned in memory of unsigned integer numbers. + typedef vec<3, uint, aligned_lowp> aligned_lowp_uvec3; - /// 3 components vector of high precision unsigned integer numbers. - /// There is no guarantee on the actual precision. - typedef tvec3<uint, aligned_highp> aligned_highp_uvec3; + /// 3 components vector aligned in memory of bool values. + typedef vec<3, bool, aligned_highp> aligned_highp_bvec3; - /// 3 components vector of medium precision unsigned integer numbers. - /// There is no guarantee on the actual precision. - typedef tvec3<uint, aligned_mediump> aligned_mediump_uvec3; + /// 3 components vector aligned in memory of bool values. + typedef vec<3, bool, aligned_mediump> aligned_mediump_bvec3; - /// 3 components vector of low precision unsigned integer numbers. - /// There is no guarantee on the actual precision. - typedef tvec3<uint, aligned_lowp> aligned_lowp_uvec3; + /// 3 components vector aligned in memory of bool values. + typedef vec<3, bool, aligned_lowp> aligned_lowp_bvec3; - /// 3 components vector of high precision bool numbers. - typedef tvec3<bool, aligned_highp> aligned_highp_bvec3; + /// 3 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs. + typedef vec<3, float, packed_highp> packed_highp_vec3; - /// 3 components vector of medium precision bool numbers. - typedef tvec3<bool, aligned_mediump> aligned_mediump_bvec3; + /// 3 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. + typedef vec<3, float, packed_mediump> packed_mediump_vec3; - /// 3 components vector of low precision bool numbers. - typedef tvec3<bool, aligned_lowp> aligned_lowp_bvec3; + /// 3 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs. + typedef vec<3, float, packed_lowp> packed_lowp_vec3; + + /// 3 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs. + typedef vec<3, double, packed_highp> packed_highp_dvec3; + + /// 3 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. + typedef vec<3, double, packed_mediump> packed_mediump_dvec3; + + /// 3 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs. + typedef vec<3, double, packed_lowp> packed_lowp_dvec3; + + /// 3 components vector tightly packed in memory of signed integer numbers. + typedef vec<3, int, packed_highp> packed_highp_ivec3; + + /// 3 components vector tightly packed in memory of signed integer numbers. + typedef vec<3, int, packed_mediump> packed_mediump_ivec3; + + /// 3 components vector tightly packed in memory of signed integer numbers. + typedef vec<3, int, packed_lowp> packed_lowp_ivec3; + + /// 3 components vector tightly packed in memory of unsigned integer numbers. + typedef vec<3, uint, packed_highp> packed_highp_uvec3; + + /// 3 components vector tightly packed in memory of unsigned integer numbers. + typedef vec<3, uint, packed_mediump> packed_mediump_uvec3; + + /// 3 components vector tightly packed in memory of unsigned integer numbers. + typedef vec<3, uint, packed_lowp> packed_lowp_uvec3; + + /// 3 components vector tightly packed in memory of bool values. + typedef vec<3, bool, packed_highp> packed_highp_bvec3; + + /// 3 components vector tightly packed in memory of bool values. + typedef vec<3, bool, packed_mediump> packed_mediump_bvec3; + + /// 3 components vector tightly packed in memory of bool values. + typedef vec<3, bool, packed_lowp> packed_lowp_bvec3; // -- *vec4 -- - /// 4 components vector of high single-precision floating-point numbers. - typedef tvec4<float, aligned_highp> aligned_highp_vec4; + /// 4 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs. + typedef vec<4, float, aligned_highp> aligned_highp_vec4; + + /// 4 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. + typedef vec<4, float, aligned_mediump> aligned_mediump_vec4; + + /// 4 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs. + typedef vec<4, float, aligned_lowp> aligned_lowp_vec4; + + /// 4 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs. + typedef vec<4, double, aligned_highp> aligned_highp_dvec4; + + /// 4 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. + typedef vec<4, double, aligned_mediump> aligned_mediump_dvec4; + + /// 4 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs. + typedef vec<4, double, aligned_lowp> aligned_lowp_dvec4; + + /// 4 components vector aligned in memory of signed integer numbers. + typedef vec<4, int, aligned_highp> aligned_highp_ivec4; + + /// 4 components vector aligned in memory of signed integer numbers. + typedef vec<4, int, aligned_mediump> aligned_mediump_ivec4; + + /// 4 components vector aligned in memory of signed integer numbers. + typedef vec<4, int, aligned_lowp> aligned_lowp_ivec4; + + /// 4 components vector aligned in memory of unsigned integer numbers. + typedef vec<4, uint, aligned_highp> aligned_highp_uvec4; + + /// 4 components vector aligned in memory of unsigned integer numbers. + typedef vec<4, uint, aligned_mediump> aligned_mediump_uvec4; + + /// 4 components vector aligned in memory of unsigned integer numbers. + typedef vec<4, uint, aligned_lowp> aligned_lowp_uvec4; + + /// 4 components vector aligned in memory of bool values. + typedef vec<4, bool, aligned_highp> aligned_highp_bvec4; - /// 4 components vector of medium single-precision floating-point numbers. - typedef tvec4<float, aligned_mediump> aligned_mediump_vec4; + /// 4 components vector aligned in memory of bool values. + typedef vec<4, bool, aligned_mediump> aligned_mediump_bvec4; - /// 4 components vector of low single-precision floating-point numbers. - typedef tvec4<float, aligned_lowp> aligned_lowp_vec4; + /// 4 components vector aligned in memory of bool values. + typedef vec<4, bool, aligned_lowp> aligned_lowp_bvec4; - /// 4 components vector of high double-precision floating-point numbers. - typedef tvec4<double, aligned_highp> aligned_highp_dvec4; + /// 4 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs. + typedef vec<4, float, packed_highp> packed_highp_vec4; - /// 4 components vector of medium double-precision floating-point numbers. - typedef tvec4<double, aligned_mediump> aligned_mediump_dvec4; + /// 4 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. + typedef vec<4, float, packed_mediump> packed_mediump_vec4; - /// 4 components vector of low double-precision floating-point numbers. - typedef tvec4<double, aligned_lowp> aligned_lowp_dvec4; + /// 4 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs. + typedef vec<4, float, packed_lowp> packed_lowp_vec4; - /// 4 components vector of high precision signed integer numbers. - typedef tvec4<int, aligned_highp> aligned_highp_ivec4; + /// 4 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs. + typedef vec<4, double, packed_highp> packed_highp_dvec4; - /// 4 components vector of medium precision signed integer numbers. - typedef tvec4<int, aligned_mediump> aligned_mediump_ivec4; + /// 4 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. + typedef vec<4, double, packed_mediump> packed_mediump_dvec4; - /// 4 components vector of low precision signed integer numbers. - typedef tvec4<int, aligned_lowp> aligned_lowp_ivec4; + /// 4 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs. + typedef vec<4, double, packed_lowp> packed_lowp_dvec4; - /// 4 components vector of high precision unsigned integer numbers. - typedef tvec4<uint, aligned_highp> aligned_highp_uvec4; + /// 4 components vector tightly packed in memory of signed integer numbers. + typedef vec<4, int, packed_highp> packed_highp_ivec4; - /// 4 components vector of medium precision unsigned integer numbers. - typedef tvec4<uint, aligned_mediump> aligned_mediump_uvec4; + /// 4 components vector tightly packed in memory of signed integer numbers. + typedef vec<4, int, packed_mediump> packed_mediump_ivec4; - /// 4 components vector of low precision unsigned integer numbers. - typedef tvec4<uint, aligned_lowp> aligned_lowp_uvec4; + /// 4 components vector tightly packed in memory of signed integer numbers. + typedef vec<4, int, packed_lowp> packed_lowp_ivec4; - /// 4 components vector of high precision bool numbers. - typedef tvec4<bool, aligned_highp> aligned_highp_bvec4; + /// 4 components vector tightly packed in memory of unsigned integer numbers. + typedef vec<4, uint, packed_highp> packed_highp_uvec4; - /// 4 components vector of medium precision bool numbers. - typedef tvec4<bool, aligned_mediump> aligned_mediump_bvec4; + /// 4 components vector tightly packed in memory of unsigned integer numbers. + typedef vec<4, uint, packed_mediump> packed_mediump_uvec4; - /// 4 components vector of low precision bool numbers. - typedef tvec4<bool, aligned_lowp> aligned_lowp_bvec4; + /// 4 components vector tightly packed in memory of unsigned integer numbers. + typedef vec<4, uint, packed_lowp> packed_lowp_uvec4; + + /// 4 components vector tightly packed in memory of bool values. + typedef vec<4, bool, packed_highp> packed_highp_bvec4; + + /// 4 components vector tightly packed in memory of bool values. + typedef vec<4, bool, packed_mediump> packed_mediump_bvec4; + + /// 4 components vector tightly packed in memory of bool values. + typedef vec<4, bool, packed_lowp> packed_lowp_bvec4; // -- default -- @@ -241,23 +404,43 @@ namespace glm typedef aligned_lowp_vec2 aligned_vec2; typedef aligned_lowp_vec3 aligned_vec3; typedef aligned_lowp_vec4 aligned_vec4; + typedef packed_lowp_vec1 packed_vec1; + typedef packed_lowp_vec2 packed_vec2; + typedef packed_lowp_vec3 packed_vec3; + typedef packed_lowp_vec4 packed_vec4; #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT)) typedef aligned_mediump_vec1 aligned_vec1; typedef aligned_mediump_vec2 aligned_vec2; typedef aligned_mediump_vec3 aligned_vec3; typedef aligned_mediump_vec4 aligned_vec4; + typedef packed_mediump_vec1 packed_vec1; + typedef packed_mediump_vec2 packed_vec2; + typedef packed_mediump_vec3 packed_vec3; + typedef packed_mediump_vec4 packed_vec4; #else //defined(GLM_PRECISION_HIGHP_FLOAT) - /// 1 component vector of floating-point numbers. + /// 1 component vector aligned in memory of single-precision floating-point numbers. typedef aligned_highp_vec1 aligned_vec1; - /// 2 components vector of floating-point numbers. + /// 2 components vector aligned in memory of single-precision floating-point numbers. typedef aligned_highp_vec2 aligned_vec2; - /// 3 components vector of floating-point numbers. + /// 3 components vector aligned in memory of single-precision floating-point numbers. typedef aligned_highp_vec3 aligned_vec3; - /// 4 components vector of floating-point numbers. + /// 4 components vector aligned in memory of single-precision floating-point numbers. typedef aligned_highp_vec4 aligned_vec4; + + /// 1 component vector tightly packed in memory of single-precision floating-point numbers. + typedef packed_highp_vec1 packed_vec1; + + /// 2 components vector tightly packed in memory of single-precision floating-point numbers. + typedef packed_highp_vec2 packed_vec2; + + /// 3 components vector tightly packed in memory of single-precision floating-point numbers. + typedef packed_highp_vec3 packed_vec3; + + /// 4 components vector tightly packed in memory of single-precision floating-point numbers. + typedef packed_highp_vec4 packed_vec4; #endif//GLM_PRECISION #if(defined(GLM_PRECISION_LOWP_DOUBLE)) @@ -265,23 +448,43 @@ namespace glm typedef aligned_lowp_dvec2 aligned_dvec2; typedef aligned_lowp_dvec3 aligned_dvec3; typedef aligned_lowp_dvec4 aligned_dvec4; + typedef packed_lowp_dvec1 packed_dvec1; + typedef packed_lowp_dvec2 packed_dvec2; + typedef packed_lowp_dvec3 packed_dvec3; + typedef packed_lowp_dvec4 packed_dvec4; #elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE)) typedef aligned_mediump_dvec1 aligned_dvec1; typedef aligned_mediump_dvec2 aligned_dvec2; typedef aligned_mediump_dvec3 aligned_dvec3; typedef aligned_mediump_dvec4 aligned_dvec4; + typedef packed_mediump_dvec1 packed_dvec1; + typedef packed_mediump_dvec2 packed_dvec2; + typedef packed_mediump_dvec3 packed_dvec3; + typedef packed_mediump_dvec4 packed_dvec4; #else //defined(GLM_PRECISION_HIGHP_DOUBLE) - /// 1 component vector of double-precision floating-point numbers. + /// 1 component vector aligned in memory of double-precision floating-point numbers. typedef aligned_highp_dvec1 aligned_dvec1; - /// 2 components vector of double-precision floating-point numbers. + /// 2 components vector aligned in memory of double-precision floating-point numbers. typedef aligned_highp_dvec2 aligned_dvec2; - /// 3 components vector of double-precision floating-point numbers. + /// 3 components vector aligned in memory of double-precision floating-point numbers. typedef aligned_highp_dvec3 aligned_dvec3; - /// 4 components vector of double-precision floating-point numbers. + /// 4 components vector aligned in memory of double-precision floating-point numbers. typedef aligned_highp_dvec4 aligned_dvec4; + + /// 1 component vector tightly packed in memory of double-precision floating-point numbers. + typedef packed_highp_dvec1 packed_dvec1; + + /// 2 components vector tightly packed in memory of double-precision floating-point numbers. + typedef packed_highp_dvec2 packed_dvec2; + + /// 3 components vector tightly packed in memory of double-precision floating-point numbers. + typedef packed_highp_dvec3 packed_dvec3; + + /// 4 components vector tightly packed in memory of double-precision floating-point numbers. + typedef packed_highp_dvec4 packed_dvec4; #endif//GLM_PRECISION #if(defined(GLM_PRECISION_LOWP_INT)) @@ -295,17 +498,30 @@ namespace glm typedef aligned_mediump_ivec3 aligned_ivec3; typedef aligned_mediump_ivec4 aligned_ivec4; #else //defined(GLM_PRECISION_HIGHP_INT) - /// 1 component vector of signed integer numbers. + /// 1 component vector aligned in memory of signed integer numbers. typedef aligned_highp_ivec1 aligned_ivec1; - /// 2 components vector of signed integer numbers. + /// 2 components vector aligned in memory of signed integer numbers. typedef aligned_highp_ivec2 aligned_ivec2; - /// 3 components vector of signed integer numbers. + /// 3 components vector aligned in memory of signed integer numbers. typedef aligned_highp_ivec3 aligned_ivec3; - /// 4 components vector of signed integer numbers. + /// 4 components vector aligned in memory of signed integer numbers. typedef aligned_highp_ivec4 aligned_ivec4; + + /// 1 component vector tightly packed in memory of signed integer numbers. + typedef packed_highp_ivec1 packed_ivec1; + + /// 2 components vector tightly packed in memory of signed integer numbers. + typedef packed_highp_ivec2 packed_ivec2; + + /// 3 components vector tightly packed in memory of signed integer numbers. + typedef packed_highp_ivec3 packed_ivec3; + + /// 4 components vector tightly packed in memory of signed integer numbers. + typedef packed_highp_ivec4 packed_ivec4; + #endif//GLM_PRECISION // -- Unsigned integer definition -- @@ -321,17 +537,29 @@ namespace glm typedef aligned_mediump_uvec3 aligned_uvec3; typedef aligned_mediump_uvec4 aligned_uvec4; #else //defined(GLM_PRECISION_HIGHP_UINT) - /// 1 component vector of unsigned integer numbers. + /// 1 component vector aligned in memory of unsigned integer numbers. typedef aligned_highp_uvec1 aligned_uvec1; - /// 2 components vector of unsigned integer numbers. + /// 2 components vector aligned in memory of unsigned integer numbers. typedef aligned_highp_uvec2 aligned_uvec2; - /// 3 components vector of unsigned integer numbers. + /// 3 components vector aligned in memory of unsigned integer numbers. typedef aligned_highp_uvec3 aligned_uvec3; - /// 4 components vector of unsigned integer numbers. + /// 4 components vector aligned in memory of unsigned integer numbers. typedef aligned_highp_uvec4 aligned_uvec4; + + /// 1 component vector tightly packed in memory of unsigned integer numbers. + typedef packed_highp_uvec1 packed_uvec1; + + /// 2 components vector tightly packed in memory of unsigned integer numbers. + typedef packed_highp_uvec2 packed_uvec2; + + /// 3 components vector tightly packed in memory of unsigned integer numbers. + typedef packed_highp_uvec3 packed_uvec3; + + /// 4 components vector tightly packed in memory of unsigned integer numbers. + typedef packed_highp_uvec4 packed_uvec4; #endif//GLM_PRECISION #if(defined(GLM_PRECISION_LOWP_BOOL)) @@ -345,17 +573,29 @@ namespace glm typedef aligned_mediump_bvec3 aligned_bvec3; typedef aligned_mediump_bvec4 aligned_bvec4; #else //defined(GLM_PRECISION_HIGHP_BOOL) - /// 1 component vector of boolean. + /// 1 component vector aligned in memory of bool values. typedef aligned_highp_bvec1 aligned_bvec1; - /// 2 components vector of boolean. + /// 2 components vector aligned in memory of bool values. typedef aligned_highp_bvec2 aligned_bvec2; - /// 3 components vector of boolean. + /// 3 components vector aligned in memory of bool values. typedef aligned_highp_bvec3 aligned_bvec3; - /// 4 components vector of boolean. + /// 4 components vector aligned in memory of bool values. typedef aligned_highp_bvec4 aligned_bvec4; + + /// 1 components vector tightly packed in memory of bool values. + typedef packed_highp_bvec1 packed_bvec1; + + /// 2 components vector tightly packed in memory of bool values. + typedef packed_highp_bvec2 packed_bvec2; + + /// 3 components vector tightly packed in memory of bool values. + typedef packed_highp_bvec3 packed_bvec3; + + /// 4 components vector tightly packed in memory of bool values. + typedef packed_highp_bvec4 packed_bvec4; #endif//GLM_PRECISION /// @} |