Browse Source

Work on integer matrix

Christophe Riccio 5 years ago
parent
commit
79d78bbdde
52 changed files with 12659 additions and 451 deletions
  1. 38 0
      glm/ext/matrix_int2x2.hpp
  2. 70 0
      glm/ext/matrix_int2x2_sized.hpp
  3. 33 0
      glm/ext/matrix_int2x3.hpp
  4. 38 0
      glm/ext/matrix_int2x3_sized.hpp
  5. 33 0
      glm/ext/matrix_int2x4.hpp
  6. 487 0
      glm/ext/matrix_int2x4_sized.hpp
  7. 33 0
      glm/ext/matrix_int3x2.hpp
  8. 487 0
      glm/ext/matrix_int3x2_sized.hpp
  9. 38 0
      glm/ext/matrix_int3x3.hpp
  10. 487 0
      glm/ext/matrix_int3x3_sized.hpp
  11. 33 0
      glm/ext/matrix_int3x4.hpp
  12. 487 0
      glm/ext/matrix_int3x4_sized.hpp
  13. 33 0
      glm/ext/matrix_int4x2.hpp
  14. 487 0
      glm/ext/matrix_int4x2_sized.hpp
  15. 33 0
      glm/ext/matrix_int4x3.hpp
  16. 487 0
      glm/ext/matrix_int4x3_sized.hpp
  17. 38 0
      glm/ext/matrix_int4x4.hpp
  18. 487 0
      glm/ext/matrix_int4x4_sized.hpp
  19. 487 0
      glm/ext/matrix_uint2x2.hpp
  20. 487 0
      glm/ext/matrix_uint2x2_sized.hpp
  21. 487 0
      glm/ext/matrix_uint2x3.hpp
  22. 487 0
      glm/ext/matrix_uint2x3_sized.hpp
  23. 487 0
      glm/ext/matrix_uint2x4.hpp
  24. 487 0
      glm/ext/matrix_uint2x4_sized.hpp
  25. 487 0
      glm/ext/matrix_uint3x2.hpp
  26. 487 0
      glm/ext/matrix_uint3x2_sized.hpp
  27. 487 0
      glm/ext/matrix_uint3x3.hpp
  28. 487 0
      glm/ext/matrix_uint3x3_sized.hpp
  29. 487 0
      glm/ext/matrix_uint3x4.hpp
  30. 487 0
      glm/ext/matrix_uint3x4_sized.hpp
  31. 487 0
      glm/ext/matrix_uint4x2.hpp
  32. 487 0
      glm/ext/matrix_uint4x2_sized.hpp
  33. 487 0
      glm/ext/matrix_uint4x3.hpp
  34. 487 0
      glm/ext/matrix_uint4x3_sized.hpp
  35. 487 0
      glm/ext/matrix_uint4x4.hpp
  36. 487 0
      glm/ext/matrix_uint4x4_sized.hpp
  37. 0 34
      glm/ext/vector_int1_precision.hpp
  38. 8 24
      glm/ext/vector_int1_sized.hpp
  39. 0 31
      glm/ext/vector_int2_precision.hpp
  40. 8 24
      glm/ext/vector_int2_sized.hpp
  41. 0 31
      glm/ext/vector_int3_precision.hpp
  42. 8 24
      glm/ext/vector_int3_sized.hpp
  43. 0 31
      glm/ext/vector_int4_precision.hpp
  44. 8 24
      glm/ext/vector_int4_sized.hpp
  45. 0 40
      glm/ext/vector_uint1_precision.hpp
  46. 8 24
      glm/ext/vector_uint1_sized.hpp
  47. 0 31
      glm/ext/vector_uint2_precision.hpp
  48. 8 24
      glm/ext/vector_uint2_sized.hpp
  49. 0 31
      glm/ext/vector_uint3_precision.hpp
  50. 8 24
      glm/ext/vector_uint3_sized.hpp
  51. 0 31
      glm/ext/vector_uint4_precision.hpp
  52. 8 23
      glm/ext/vector_uint4_sized.hpp

+ 38 - 0
glm/ext/matrix_int2x2.hpp

@@ -0,0 +1,38 @@
+/// @ref ext_matrix_int2x2
+/// @file glm/ext/matrix_int2x2.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup ext_matrix_int2x2 GLM_EXT_matrix_int2x2
+/// @ingroup ext
+///
+/// Include <glm/ext/matrix_int2x2.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_EXT_matrix_int2x2 extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup ext_matrix_int2x2
+	/// @{
+
+	/// Signed integer 2x2 matrix.
+	///
+	/// @see ext_matrix_int2x2
+	typedef mat<2, 2, int, defaultp>	imat2x2;
+
+	/// Signed integer 2x2 matrix.
+	///
+	/// @see ext_matrix_int2x2
+	typedef mat<2, 2, int, defaultp>	imat2;
+
+	/// @}
+}//namespace glm

+ 70 - 0
glm/ext/matrix_int2x2_sized.hpp

@@ -0,0 +1,70 @@
+/// @ref ext_matrix_int2x2_sized
+/// @file glm/ext/matrix_int2x2_sized.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup ext_matrix_int2x2_sized GLM_EXT_matrix_int2x2_sized
+/// @ingroup ext
+///
+/// Include <glm/ext/matrix_int2x2.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../ext/scalar_int_sized.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_EXT_matrix_int2x2_sized extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup ext_matrix_int2x2_sized
+	/// @{
+
+	/// 8 bit signed integer 2x2 matrix.
+	///
+	/// @see ext_matrix_int2x2_sized
+	typedef mat<2, 2, int8, defaultp>				i8mat2x2;
+
+	/// 16 bit signed integer 2x2 matrix.
+	///
+	/// @see ext_matrix_int2x2_sized
+	typedef mat<2, 2, int16, defaultp>				i16mat2x2;
+
+	/// 32 bit signed integer 2x2 matrix.
+	///
+	/// @see ext_matrix_int2x2_sized
+	typedef mat<2, 2, int32, defaultp>				i32mat2x2;
+
+	/// 64 bit signed integer 2x2 matrix.
+	///
+	/// @see ext_matrix_int2x2_sized
+	typedef mat<2, 2, int64, defaultp>				i64mat2x2;
+
+
+	/// 8 bit signed integer 2x2 matrix.
+	///
+	/// @see ext_matrix_int2x2_sized
+	typedef mat<2, 2, int8, defaultp>				i8mat2;
+
+	/// 16 bit signed integer 2x2 matrix.
+	///
+	/// @see ext_matrix_int2x2_sized
+	typedef mat<2, 2, int16, defaultp>				i16mat2;
+
+	/// 32 bit signed integer 2x2 matrix.
+	///
+	/// @see ext_matrix_int2x2_sized
+	typedef mat<2, 2, int32, defaultp>				i32mat2;
+
+	/// 64 bit signed integer 2x2 matrix.
+	///
+	/// @see ext_matrix_int2x2_sized
+	typedef mat<2, 2, int64, defaultp>				i64mat2;
+
+	/// @}
+}//namespace glm

+ 33 - 0
glm/ext/matrix_int2x3.hpp

@@ -0,0 +1,33 @@
+/// @ref ext_matrix_int2x3
+/// @file glm/ext/matrix_int2x3.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup ext_matrix_int2x3 GLM_EXT_matrix_int2x3
+/// @ingroup ext
+///
+/// Include <glm/ext/matrix_int2x3.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x3.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_EXT_matrix_int2x3 extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup ext_matrix_int2x3
+	/// @{
+
+	/// Signed integer 2x3 matrix.
+	///
+	/// @see ext_matrix_int2x3
+	typedef mat<2, 3, int, defaultp>	imat2x3;
+
+	/// @}
+}//namespace glm

+ 38 - 0
glm/ext/matrix_int2x3_sized.hpp

@@ -0,0 +1,38 @@
+/// @ref ext_matrix_int2x3
+/// @file glm/ext/matrix_int2x3.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup ext_matrix_int2x3 GLM_EXT_matrix_int2x3
+/// @ingroup ext
+///
+/// Include <glm/ext/matrix_int2x3.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x3.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_EXT_matrix_int2x3 extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup ext_matrix_int2x2
+	/// @{
+
+	/// Signed integer 2x2 matrix.
+	///
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				imat2;
+
+	/// Signed integer 2x2 matrix.
+	///
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				imat2x2;
+
+	/// @}
+}//namespace glm

+ 33 - 0
glm/ext/matrix_int2x4.hpp

@@ -0,0 +1,33 @@
+/// @ref ext_matrix_int2x4
+/// @file glm/ext/matrix_int2x4.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup ext_matrix_int2x4 GLM_EXT_matrix_int2x4
+/// @ingroup ext
+///
+/// Include <glm/ext/matrix_int2x4.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_EXT_matrix_int2x4 extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup ext_matrix_int2x4
+	/// @{
+
+	/// Signed integer 2x4 matrix.
+	///
+	/// @see ext_matrix_int2x4
+	typedef mat<2, 4, int, defaultp>	imat2x4;
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_int2x4_sized.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 33 - 0
glm/ext/matrix_int3x2.hpp

@@ -0,0 +1,33 @@
+/// @ref ext_matrix_int3x2
+/// @file glm/ext/matrix_int3x2.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup ext_matrix_int3x2 GLM_EXT_matrix_int3x2
+/// @ingroup ext
+///
+/// Include <glm/ext/matrix_int3x2.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat3x2.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_EXT_matrix_int3x2 extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup ext_matrix_int3x2
+	/// @{
+
+	/// Signed integer 3x2 matrix.
+	///
+	/// @see ext_matrix_int3x2
+	typedef mat<3, 2, int, defaultp>	imat3x2;
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_int3x2_sized.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 38 - 0
glm/ext/matrix_int3x3.hpp

@@ -0,0 +1,38 @@
+/// @ref ext_matrix_int3x3
+/// @file glm/ext/matrix_int3x3.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup ext_matrix_int3x3 GLM_EXT_matrix_int3x3
+/// @ingroup ext
+///
+/// Include <glm/ext/matrix_int3x3.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat3x3.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_EXT_matrix_int3x3 extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup ext_matrix_int3x3
+	/// @{
+
+	/// Signed integer 3x3 matrix.
+	///
+	/// @see ext_matrix_int3x3
+	typedef mat<3, 3, int, defaultp>	imat3x3;
+
+	/// Signed integer 3x3 matrix.
+	///
+	/// @see ext_matrix_int3x3
+	typedef mat<3, 3, int, defaultp>	imat3;
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_int3x3_sized.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 33 - 0
glm/ext/matrix_int3x4.hpp

@@ -0,0 +1,33 @@
+/// @ref ext_matrix_int3x4
+/// @file glm/ext/matrix_int3x4.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup ext_matrix_int3x4 GLM_EXT_matrix_int3x4
+/// @ingroup ext
+///
+/// Include <glm/ext/matrix_int3x4.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat3x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_EXT_matrix_int3x4 extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup ext_matrix_int3x4
+	/// @{
+
+	/// Signed integer 3x4 matrix.
+	///
+	/// @see ext_matrix_int3x4
+	typedef mat<3, 4, int, defaultp>	imat3x4;
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_int3x4_sized.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 33 - 0
glm/ext/matrix_int4x2.hpp

@@ -0,0 +1,33 @@
+/// @ref ext_matrix_int4x2
+/// @file glm/ext/matrix_int4x2.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup ext_matrix_int4x2 GLM_EXT_matrix_int4x2
+/// @ingroup ext
+///
+/// Include <glm/ext/matrix_int4x2.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat4x2.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_EXT_matrix_int4x2 extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup ext_matrix_int4x2
+	/// @{
+
+	/// Signed integer 4x2 matrix.
+	///
+	/// @see ext_matrix_int4x2
+	typedef mat<4, 2, int, defaultp>	imat4x2;
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_int4x2_sized.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 33 - 0
glm/ext/matrix_int4x3.hpp

@@ -0,0 +1,33 @@
+/// @ref ext_matrix_int4x3
+/// @file glm/ext/matrix_int4x3.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup ext_matrix_int4x3 GLM_EXT_matrix_int4x3
+/// @ingroup ext
+///
+/// Include <glm/ext/matrix_int4x3.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat4x3.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_EXT_matrix_int4x3 extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup ext_matrix_int4x3
+	/// @{
+
+	/// Signed integer 4x3 matrix.
+	///
+	/// @see ext_matrix_int4x3
+	typedef mat<4, 3, int, defaultp>	imat4x3;
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_int4x3_sized.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 38 - 0
glm/ext/matrix_int4x4.hpp

@@ -0,0 +1,38 @@
+/// @ref ext_matrix_int4x4
+/// @file glm/ext/matrix_int4x4.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup ext_matrix_int4x4 GLM_EXT_matrix_int4x4
+/// @ingroup ext
+///
+/// Include <glm/ext/matrix_int4x4.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_EXT_matrix_int4x4 extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup ext_matrix_int4x4
+	/// @{
+
+	/// Signed integer 4x4 matrix.
+	///
+	/// @see ext_matrix_int4x4
+	typedef mat<4, 4, int, defaultp>	imat4x4;
+
+	/// Signed integer 4x4 matrix.
+	///
+	/// @see ext_matrix_int3x3
+	typedef mat<4, 4, int, defaultp>	imat4;
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_int4x4_sized.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_uint2x2.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_uint2x2_sized.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_uint2x3.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_uint2x3_sized.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_uint2x4.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_uint2x4_sized.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_uint3x2.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_uint3x2_sized.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_uint3x3.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_uint3x3_sized.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_uint3x4.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_uint3x4_sized.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_uint4x2.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_uint4x2_sized.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_uint4x3.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_uint4x3_sized.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_uint4x4.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 487 - 0
glm/ext/matrix_uint4x4_sized.hpp

@@ -0,0 +1,487 @@
+/// @ref gtc_matrix_integer
+/// @file glm/gtc/matrix_integer.hpp
+///
+/// @see core (dependence)
+///
+/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
+/// @ingroup gtc
+///
+/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+///
+/// Defines a number of matrices with integer types.
+
+#pragma once
+
+// Dependency:
+#include "../mat2x2.hpp"
+#include "../mat2x3.hpp"
+#include "../mat2x4.hpp"
+#include "../mat3x2.hpp"
+#include "../mat3x3.hpp"
+#include "../mat3x4.hpp"
+#include "../mat4x2.hpp"
+#include "../mat4x3.hpp"
+#include "../mat4x4.hpp"
+
+#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#endif
+
+namespace glm
+{
+	/// @addtogroup gtc_matrix_integer
+	/// @{
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4;
+
+	/// High-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, highp>				highp_imat2x2;
+
+	/// High-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, highp>				highp_imat2x3;
+
+	/// High-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, highp>				highp_imat2x4;
+
+	/// High-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, highp>				highp_imat3x2;
+
+	/// High-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, highp>				highp_imat3x3;
+
+	/// High-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, highp>				highp_imat3x4;
+
+	/// High-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, highp>				highp_imat4x2;
+
+	/// High-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, highp>				highp_imat4x3;
+
+	/// High-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, highp>				highp_imat4x4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4;
+
+
+	/// Medium-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, mediump>			mediump_imat2x2;
+
+	/// Medium-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, mediump>			mediump_imat2x3;
+
+	/// Medium-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, mediump>			mediump_imat2x4;
+
+	/// Medium-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, mediump>			mediump_imat3x2;
+
+	/// Medium-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, mediump>			mediump_imat3x3;
+
+	/// Medium-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, mediump>			mediump_imat3x4;
+
+	/// Medium-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, mediump>			mediump_imat4x2;
+
+	/// Medium-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, mediump>			mediump_imat4x3;
+
+	/// Medium-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, mediump>			mediump_imat4x4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4;
+
+
+	/// Low-qualifier signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, int, lowp>				lowp_imat2x2;
+
+	/// Low-qualifier signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, int, lowp>				lowp_imat2x3;
+
+	/// Low-qualifier signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, int, lowp>				lowp_imat2x4;
+
+	/// Low-qualifier signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, int, lowp>				lowp_imat3x2;
+
+	/// Low-qualifier signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, int, lowp>				lowp_imat3x3;
+
+	/// Low-qualifier signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, int, lowp>				lowp_imat3x4;
+
+	/// Low-qualifier signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, int, lowp>				lowp_imat4x2;
+
+	/// Low-qualifier signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, int, lowp>				lowp_imat4x3;
+
+	/// Low-qualifier signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, int, lowp>				lowp_imat4x4;
+
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4;
+
+	/// High-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, highp>				highp_umat2x2;
+
+	/// High-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, highp>				highp_umat2x3;
+
+	/// High-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, highp>				highp_umat2x4;
+
+	/// High-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, highp>				highp_umat3x2;
+
+	/// High-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, highp>				highp_umat3x3;
+
+	/// High-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, highp>				highp_umat3x4;
+
+	/// High-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, highp>				highp_umat4x2;
+
+	/// High-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, highp>				highp_umat4x3;
+
+	/// High-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, highp>				highp_umat4x4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4;
+
+
+	/// Medium-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, mediump>			mediump_umat2x2;
+
+	/// Medium-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, mediump>			mediump_umat2x3;
+
+	/// Medium-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, mediump>			mediump_umat2x4;
+
+	/// Medium-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, mediump>			mediump_umat3x2;
+
+	/// Medium-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, mediump>			mediump_umat3x3;
+
+	/// Medium-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, mediump>			mediump_umat3x4;
+
+	/// Medium-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, mediump>			mediump_umat4x2;
+
+	/// Medium-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, mediump>			mediump_umat4x3;
+
+	/// Medium-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, mediump>			mediump_umat4x4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4;
+
+
+	/// Low-qualifier unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 2, uint, lowp>				lowp_umat2x2;
+
+	/// Low-qualifier unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 3, uint, lowp>				lowp_umat2x3;
+
+	/// Low-qualifier unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<2, 4, uint, lowp>				lowp_umat2x4;
+
+	/// Low-qualifier unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 2, uint, lowp>				lowp_umat3x2;
+
+	/// Low-qualifier unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 3, uint, lowp>				lowp_umat3x3;
+
+	/// Low-qualifier unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<3, 4, uint, lowp>				lowp_umat3x4;
+
+	/// Low-qualifier unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 2, uint, lowp>				lowp_umat4x2;
+
+	/// Low-qualifier unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 3, uint, lowp>				lowp_umat4x3;
+
+	/// Low-qualifier unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mat<4, 4, uint, lowp>				lowp_umat4x4;
+
+#if(defined(GLM_PRECISION_HIGHP_INT))
+	typedef highp_imat2								imat2;
+	typedef highp_imat3								imat3;
+	typedef highp_imat4								imat4;
+	typedef highp_imat2x2							imat2x2;
+	typedef highp_imat2x3							imat2x3;
+	typedef highp_imat2x4							imat2x4;
+	typedef highp_imat3x2							imat3x2;
+	typedef highp_imat3x3							imat3x3;
+	typedef highp_imat3x4							imat3x4;
+	typedef highp_imat4x2							imat4x2;
+	typedef highp_imat4x3							imat4x3;
+	typedef highp_imat4x4							imat4x4;
+#elif(defined(GLM_PRECISION_LOWP_INT))
+	typedef lowp_imat2								imat2;
+	typedef lowp_imat3								imat3;
+	typedef lowp_imat4								imat4;
+	typedef lowp_imat2x2							imat2x2;
+	typedef lowp_imat2x3							imat2x3;
+	typedef lowp_imat2x4							imat2x4;
+	typedef lowp_imat3x2							imat3x2;
+	typedef lowp_imat3x3							imat3x3;
+	typedef lowp_imat3x4							imat3x4;
+	typedef lowp_imat4x2							imat4x2;
+	typedef lowp_imat4x3							imat4x3;
+	typedef lowp_imat4x4							imat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2							imat2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3							imat3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4							imat4;
+
+	/// Signed integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x2							imat2x2;
+
+	/// Signed integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x3							imat2x3;
+
+	/// Signed integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat2x4							imat2x4;
+
+	/// Signed integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x2							imat3x2;
+
+	/// Signed integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x3							imat3x3;
+
+	/// Signed integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat3x4							imat3x4;
+
+	/// Signed integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x2							imat4x2;
+
+	/// Signed integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x3							imat4x3;
+
+	/// Signed integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_imat4x4							imat4x4;
+#endif//GLM_PRECISION
+
+#if(defined(GLM_PRECISION_HIGHP_UINT))
+	typedef highp_umat2								umat2;
+	typedef highp_umat3								umat3;
+	typedef highp_umat4								umat4;
+	typedef highp_umat2x2							umat2x2;
+	typedef highp_umat2x3							umat2x3;
+	typedef highp_umat2x4							umat2x4;
+	typedef highp_umat3x2							umat3x2;
+	typedef highp_umat3x3							umat3x3;
+	typedef highp_umat3x4							umat3x4;
+	typedef highp_umat4x2							umat4x2;
+	typedef highp_umat4x3							umat4x3;
+	typedef highp_umat4x4							umat4x4;
+#elif(defined(GLM_PRECISION_LOWP_UINT))
+	typedef lowp_umat2								umat2;
+	typedef lowp_umat3								umat3;
+	typedef lowp_umat4								umat4;
+	typedef lowp_umat2x2							umat2x2;
+	typedef lowp_umat2x3							umat2x3;
+	typedef lowp_umat2x4							umat2x4;
+	typedef lowp_umat3x2							umat3x2;
+	typedef lowp_umat3x3							umat3x3;
+	typedef lowp_umat3x4							umat3x4;
+	typedef lowp_umat4x2							umat4x2;
+	typedef lowp_umat4x3							umat4x3;
+	typedef lowp_umat4x4							umat4x4;
+#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2							umat2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3							umat3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4							umat4;
+
+	/// Unsigned integer 2x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x2							umat2x2;
+
+	/// Unsigned integer 2x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x3							umat2x3;
+
+	/// Unsigned integer 2x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat2x4							umat2x4;
+
+	/// Unsigned integer 3x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x2							umat3x2;
+
+	/// Unsigned integer 3x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x3							umat3x3;
+
+	/// Unsigned integer 3x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat3x4							umat3x4;
+
+	/// Unsigned integer 4x2 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x2							umat4x2;
+
+	/// Unsigned integer 4x3 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x3							umat4x3;
+
+	/// Unsigned integer 4x4 matrix.
+	/// @see gtc_matrix_integer
+	typedef mediump_umat4x4							umat4x4;
+#endif//GLM_PRECISION
+
+	/// @}
+}//namespace glm

+ 0 - 34
glm/ext/vector_int1_precision.hpp

@@ -1,34 +0,0 @@
-/// @ref ext_vector_int1_precision
-/// @file glm/ext/vector_int1_precision.hpp
-///
-/// @defgroup ext_vector_int1_precision GLM_EXT_vector_int1_precision
-/// @ingroup ext
-///
-/// Exposes highp_ivec1, mediump_ivec1 and lowp_ivec1 types.
-///
-/// Include <glm/ext/vector_int1_precision.hpp> to use the features of this extension.
-
-#pragma once
-
-#include "../detail/type_vec1.hpp"
-
-#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_EXT_vector_int1_precision extension included")
-#endif
-
-namespace glm
-{
-	/// @addtogroup ext_vector_int1_precision
-	/// @{
-
-	/// 1 component vector of signed integer values.
-	typedef vec<1, int, highp>			highp_ivec1;
-
-	/// 1 component vector of signed integer values.
-	typedef vec<1, int, mediump>		mediump_ivec1;
-
-	/// 1 component vector of signed integer values.
-	typedef vec<1, int, lowp>			lowp_ivec1;
-
-	/// @}
-}//namespace glm

+ 8 - 24
glm/ext/vector_int1_sized.hpp

@@ -25,40 +25,24 @@ namespace glm
 	/// @addtogroup ext_vector_int1_sized
 	/// @addtogroup ext_vector_int1_sized
 	/// @{
 	/// @{
 
 
-	/// Low precision 8 bit signed integer vector of 1 component type.
-	typedef vec<1, int8, lowp>		lowp_i8vec1;
-	/// Medium precision 8 bit signed integer vector of 1 component type.
-	typedef vec<1, int8, mediump>	mediump_i8vec1;
-	/// High precision 8 bit signed integer vector of 1 component type.
-	typedef vec<1, int8, highp>		highp_i8vec1;
 	/// 8 bit signed integer vector of 1 component type.
 	/// 8 bit signed integer vector of 1 component type.
+	///
+	/// @see ext_vector_int1_sized
 	typedef vec<1, int8, defaultp>	i8vec1;
 	typedef vec<1, int8, defaultp>	i8vec1;
 
 
-	/// Low precision 16 bit signed integer vector of 1 component type.
-	typedef vec<1, int16, lowp>		lowp_i16vec1;
-	/// Medium precision 16 bit signed integer vector of 1 component type.
-	typedef vec<1, int16, mediump>	mediump_i16vec1;
-	/// High precision 16 bit signed integer vector of 1 component type.
-	typedef vec<1, int16, highp>	highp_i16vec1;
 	/// 16 bit signed integer vector of 1 component type.
 	/// 16 bit signed integer vector of 1 component type.
+	///
+	/// @see ext_vector_int1_sized
 	typedef vec<1, int16, defaultp>	i16vec1;
 	typedef vec<1, int16, defaultp>	i16vec1;
 
 
-	/// Low precision 32 bit signed integer vector of 1 component type.
-	typedef vec<1, int32, lowp>		lowp_i32vec1;
-	/// Medium precision 32 bit signed integer vector of 1 component type.
-	typedef vec<1, int32, mediump>	mediump_i32vec1;
-	/// High precision 32 bit signed integer vector of 1 component type.
-	typedef vec<1, int32, highp>	highp_i32vec1;
 	/// 32 bit signed integer vector of 1 component type.
 	/// 32 bit signed integer vector of 1 component type.
+	///
+	/// @see ext_vector_int1_sized
 	typedef vec<1, int32, defaultp>	i32vec1;
 	typedef vec<1, int32, defaultp>	i32vec1;
 
 
-	/// Low precision 64 bit signed integer vector of 1 component type.
-	typedef vec<1, int64, lowp>		lowp_i64vec1;
-	/// Medium precision 64 bit signed integer vector of 1 component type.
-	typedef vec<1, int64, mediump>	mediump_i64vec1;
-	/// High precision 64 bit signed integer vector of 1 component type.
-	typedef vec<1, int64, highp>	highp_i64vec1;
 	/// 64 bit signed integer vector of 1 component type.
 	/// 64 bit signed integer vector of 1 component type.
+	///
+	/// @see ext_vector_int1_sized
 	typedef vec<1, int64, defaultp>	i64vec1;
 	typedef vec<1, int64, defaultp>	i64vec1;
 
 
 	/// @}
 	/// @}

+ 0 - 31
glm/ext/vector_int2_precision.hpp

@@ -1,31 +0,0 @@
-/// @ref core
-/// @file glm/ext/vector_int2_precision.hpp
-
-#pragma once
-#include "../detail/type_vec2.hpp"
-
-namespace glm
-{
-	/// @addtogroup core_vector_precision
-	/// @{
-
-	/// 2 components vector of high qualifier signed integer numbers.
-	///
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
-	typedef vec<2, int, highp>		highp_ivec2;
-
-	/// 2 components vector of medium qualifier signed integer numbers.
-	///
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
-	typedef vec<2, int, mediump>	mediump_ivec2;
-
-	/// 2 components vector of low qualifier signed integer numbers.
-	///
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
-	typedef vec<2, int, lowp>		lowp_ivec2;
-
-	/// @}
-}//namespace glm

+ 8 - 24
glm/ext/vector_int2_sized.hpp

@@ -25,40 +25,24 @@ namespace glm
 	/// @addtogroup ext_vector_int2_sized
 	/// @addtogroup ext_vector_int2_sized
 	/// @{
 	/// @{
 
 
-	/// Low precision 8 bit signed integer vector of 2 components type.
-	typedef vec<2, int8, lowp>			lowp_i8vec2;
-	/// Medium precision 8 bit signed integer vector of 2 components type.
-	typedef vec<2, int8, mediump>		mediump_i8vec2;
-	/// High precision 8 bit signed integer vector of 2 components type.
-	typedef vec<2, int8, highp>			highp_i8vec2;
 	/// 8 bit signed integer vector of 2 components type.
 	/// 8 bit signed integer vector of 2 components type.
+	///
+	/// @see ext_vector_int2_sized
 	typedef vec<2, int8, defaultp>		i8vec2;
 	typedef vec<2, int8, defaultp>		i8vec2;
 
 
-	/// Low precision 16 bit signed integer vector of 2 components type.
-	typedef vec<2, int16, lowp>			lowp_i16vec2;
-	/// Medium precision 16 bit signed integer vector of 2 components type.
-	typedef vec<2, int16, mediump>		mediump_i16vec2;
-	/// High precision 16 bit signed integer vector of 2 components type.
-	typedef vec<2, int16, highp>		highp_i16vec2;
 	/// 16 bit signed integer vector of 2 components type.
 	/// 16 bit signed integer vector of 2 components type.
+	///
+	/// @see ext_vector_int2_sized
 	typedef vec<2, int16, defaultp>		i16vec2;
 	typedef vec<2, int16, defaultp>		i16vec2;
 
 
-	/// Low precision 32 bit signed integer vector of 2 components type.
-	typedef vec<2, int32, lowp>			lowp_i32vec2;
-	/// Medium precision 32 bit signed integer vector of 2 components type.
-	typedef vec<2, int32, mediump>		mediump_i32vec2;
-	/// High precision 32 bit signed integer vector of 2 components type.
-	typedef vec<2, int32, highp>		highp_i32vec2;
 	/// 32 bit signed integer vector of 2 components type.
 	/// 32 bit signed integer vector of 2 components type.
+	///
+	/// @see ext_vector_int2_sized
 	typedef vec<2, int32, defaultp>		i32vec2;
 	typedef vec<2, int32, defaultp>		i32vec2;
 
 
-	/// Low precision 64 bit signed integer vector of 2 components type.
-	typedef vec<2, int64, lowp>			lowp_i64vec2;
-	/// Medium precision 64 bit signed integer vector of 2 components type.
-	typedef vec<2, int64, mediump>		mediump_i64vec2;
-	/// High precision 64 bit signed integer vector of 2 components type.
-	typedef vec<2, int64, highp>		highp_i64vec2;
 	/// 64 bit signed integer vector of 2 components type.
 	/// 64 bit signed integer vector of 2 components type.
+	///
+	/// @see ext_vector_int2_sized
 	typedef vec<2, int64, defaultp>		i64vec2;
 	typedef vec<2, int64, defaultp>		i64vec2;
 
 
 	/// @}
 	/// @}

+ 0 - 31
glm/ext/vector_int3_precision.hpp

@@ -1,31 +0,0 @@
-/// @ref core
-/// @file glm/ext/vector_int3_precision.hpp
-
-#pragma once
-#include "../detail/type_vec3.hpp"
-
-namespace glm
-{
-	/// @addtogroup core_vector_precision
-	/// @{
-
-	/// 3 components vector of high qualifier signed integer numbers.
-	///
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
-	typedef vec<3, int, highp>		highp_ivec3;
-
-	/// 3 components vector of medium qualifier signed integer numbers.
-	///
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
-	typedef vec<3, int, mediump>	mediump_ivec3;
-
-	/// 3 components vector of low qualifier signed integer numbers.
-	///
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
-	typedef vec<3, int, lowp>		lowp_ivec3;
-
-	/// @}
-}//namespace glm

+ 8 - 24
glm/ext/vector_int3_sized.hpp

@@ -25,40 +25,24 @@ namespace glm
 	/// @addtogroup ext_vector_int3_sized
 	/// @addtogroup ext_vector_int3_sized
 	/// @{
 	/// @{
 
 
-	/// Low precision 8 bit signed integer vector of 3 components type.
-	typedef vec<3, int8, lowp>			lowp_i8vec3;
-	/// Medium precision 8 bit signed integer vector of 3 components type.
-	typedef vec<3, int8, mediump>		mediump_i8vec3;
-	/// High precision 8 bit signed integer vector of 3 components type.
-	typedef vec<3, int8, highp>			highp_i8vec3;
 	/// 8 bit signed integer vector of 3 components type.
 	/// 8 bit signed integer vector of 3 components type.
+	///
+	/// @see ext_vector_int3_sized
 	typedef vec<3, int8, defaultp>		i8vec3;
 	typedef vec<3, int8, defaultp>		i8vec3;
 
 
-	/// Low precision 16 bit signed integer vector of 3 components type.
-	typedef vec<3, int16, lowp>			lowp_i16vec3;
-	/// Medium precision 16 bit signed integer vector of 3 components type.
-	typedef vec<3, int16, mediump>		mediump_i16vec3;
-	/// High precision 16 bit signed integer vector of 3 components type.
-	typedef vec<3, int16, highp>		highp_i16vec3;
 	/// 16 bit signed integer vector of 3 components type.
 	/// 16 bit signed integer vector of 3 components type.
+	///
+	/// @see ext_vector_int3_sized
 	typedef vec<3, int16, defaultp>		i16vec3;
 	typedef vec<3, int16, defaultp>		i16vec3;
 
 
-	/// Low precision 32 bit signed integer vector of 3 components type.
-	typedef vec<3, int32, lowp>			lowp_i32vec3;
-	/// Medium precision 32 bit signed integer vector of 3 components type.
-	typedef vec<3, int32, mediump>		mediump_i32vec3;
-	/// High precision 32 bit signed integer vector of 3 components type.
-	typedef vec<3, int32, highp>		highp_i32vec3;
 	/// 32 bit signed integer vector of 3 components type.
 	/// 32 bit signed integer vector of 3 components type.
+	///
+	/// @see ext_vector_int3_sized
 	typedef vec<3, int32, defaultp>		i32vec3;
 	typedef vec<3, int32, defaultp>		i32vec3;
 
 
-	/// Low precision 64 bit signed integer vector of 3 components type.
-	typedef vec<3, int64, lowp>			lowp_i64vec3;
-	/// Medium precision 64 bit signed integer vector of 3 components type.
-	typedef vec<3, int64, mediump>		mediump_i64vec3;
-	/// High precision 64 bit signed integer vector of 3 components type.
-	typedef vec<3, int64, highp>		highp_i64vec3;
 	/// 64 bit signed integer vector of 3 components type.
 	/// 64 bit signed integer vector of 3 components type.
+	///
+	/// @see ext_vector_int3_sized
 	typedef vec<3, int64, defaultp>		i64vec3;
 	typedef vec<3, int64, defaultp>		i64vec3;
 
 
 	/// @}
 	/// @}

+ 0 - 31
glm/ext/vector_int4_precision.hpp

@@ -1,31 +0,0 @@
-/// @ref core
-/// @file glm/ext/vector_int4_precision.hpp
-
-#pragma once
-#include "../detail/type_vec4.hpp"
-
-namespace glm
-{
-	/// @addtogroup core_vector_precision
-	/// @{
-
-	/// 4 components vector of high qualifier signed integer numbers.
-	///
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
-	typedef vec<4, int, highp>		highp_ivec4;
-
-	/// 4 components vector of medium qualifier signed integer numbers.
-	///
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
-	typedef vec<4, int, mediump>	mediump_ivec4;
-
-	/// 4 components vector of low qualifier signed integer numbers.
-	///
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
-	typedef vec<4, int, lowp>		lowp_ivec4;
-
-	/// @}
-}//namespace glm

+ 8 - 24
glm/ext/vector_int4_sized.hpp

@@ -25,40 +25,24 @@ namespace glm
 	/// @addtogroup ext_vector_int4_sized
 	/// @addtogroup ext_vector_int4_sized
 	/// @{
 	/// @{
 
 
-	/// Low precision 8 bit signed integer vector of 4 components type.
-	typedef vec<4, int8, lowp>			lowp_i8vec4;
-	/// Medium precision 8 bit signed integer vector of 4 components type.
-	typedef vec<4, int8, mediump>		mediump_i8vec4;
-	/// High precision 8 bit signed integer vector of 4 components type.
-	typedef vec<4, int8, highp>			highp_i8vec4;
 	/// 8 bit signed integer vector of 4 components type.
 	/// 8 bit signed integer vector of 4 components type.
+	///
+	/// @see ext_vector_int4_sized
 	typedef vec<4, int8, defaultp>		i8vec4;
 	typedef vec<4, int8, defaultp>		i8vec4;
 
 
-	/// Low precision 16 bit signed integer vector of 4 components type.
-	typedef vec<4, int16, lowp>			lowp_i16vec4;
-	/// Medium precision 16 bit signed integer vector of 4 components type.
-	typedef vec<4, int16, mediump>		mediump_i16vec4;
-	/// High precision 16 bit signed integer vector of 4 components type.
-	typedef vec<4, int16, highp>		highp_i16vec4;
 	/// 16 bit signed integer vector of 4 components type.
 	/// 16 bit signed integer vector of 4 components type.
+	///
+	/// @see ext_vector_int4_sized
 	typedef vec<4, int16, defaultp>		i16vec4;
 	typedef vec<4, int16, defaultp>		i16vec4;
 
 
-	/// Low precision 32 bit signed integer vector of 4 components type.
-	typedef vec<4, int32, lowp>			lowp_i32vec4;
-	/// Medium precision 32 bit signed integer vector of 4 components type.
-	typedef vec<4, int32, mediump>		mediump_i32vec4;
-	/// High precision 32 bit signed integer vector of 4 components type.
-	typedef vec<4, int32, highp>		highp_i32vec4;
 	/// 32 bit signed integer vector of 4 components type.
 	/// 32 bit signed integer vector of 4 components type.
+	///
+	/// @see ext_vector_int4_sized
 	typedef vec<4, int32, defaultp>		i32vec4;
 	typedef vec<4, int32, defaultp>		i32vec4;
 
 
-	/// Low precision 64 bit signed integer vector of 4 components type.
-	typedef vec<4, int64, lowp>			lowp_i64vec4;
-	/// Medium precision 64 bit signed integer vector of 4 components type.
-	typedef vec<4, int64, mediump>		mediump_i64vec4;
-	/// High precision 64 bit signed integer vector of 4 components type.
-	typedef vec<4, int64, highp>		highp_i64vec4;
 	/// 64 bit signed integer vector of 4 components type.
 	/// 64 bit signed integer vector of 4 components type.
+	///
+	/// @see ext_vector_int4_sized
 	typedef vec<4, int64, defaultp>		i64vec4;
 	typedef vec<4, int64, defaultp>		i64vec4;
 
 
 	/// @}
 	/// @}

+ 0 - 40
glm/ext/vector_uint1_precision.hpp

@@ -1,40 +0,0 @@
-/// @ref ext_vector_uint1_precision
-/// @file glm/ext/vector_uint1_precision.hpp
-///
-/// @defgroup ext_vector_uint1_precision GLM_EXT_vector_uint1_precision
-/// @ingroup ext
-///
-/// Exposes highp_uvec1, mediump_uvec1 and lowp_uvec1 types.
-///
-/// Include <glm/ext/vector_uint1_precision.hpp> to use the features of this extension.
-
-#pragma once
-
-#include "../detail/type_vec1.hpp"
-
-#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_EXT_vector_uint1_precision extension included")
-#endif
-
-namespace glm
-{
-	/// @addtogroup ext_vector_uint1_precision
-	/// @{
-
-	/// 1 component vector of unsigned integer values.
-	///
-	/// @see ext_vector_uint1_precision
-	typedef vec<1, unsigned int, highp>			highp_uvec1;
-
-	/// 1 component vector of unsigned integer values.
-	///
-	/// @see ext_vector_uint1_precision
-	typedef vec<1, unsigned int, mediump>		mediump_uvec1;
-
-	/// 1 component vector of unsigned integer values.
-	///
-	/// @see ext_vector_uint1_precision
-	typedef vec<1, unsigned int, lowp>			lowp_uvec1;
-
-	/// @}
-}//namespace glm

+ 8 - 24
glm/ext/vector_uint1_sized.hpp

@@ -25,40 +25,24 @@ namespace glm
 	/// @addtogroup ext_vector_uint1_sized
 	/// @addtogroup ext_vector_uint1_sized
 	/// @{
 	/// @{
 
 
-	/// Low precision 8 bit unsigned integer vector of 1 component type.
-	typedef vec<1, uint8, lowp>			lowp_u8vec1;
-	/// Medium precision 8 bit unsigned integer vector of 1 component type.
-	typedef vec<1, uint8, mediump>		mediump_u8vec1;
-	/// High precision 8 bit unsigned integer vector of 1 component type.
-	typedef vec<1, uint8, highp>		highp_u8vec1;
 	/// 8 bit unsigned integer vector of 1 component type.
 	/// 8 bit unsigned integer vector of 1 component type.
+	///
+	/// @see ext_vector_uint1_sized
 	typedef vec<1, uint8, defaultp>		u8vec1;
 	typedef vec<1, uint8, defaultp>		u8vec1;
 
 
-	/// Low precision 16 bit unsigned integer vector of 1 component type.
-	typedef vec<1, uint16, lowp>		lowp_u16vec1;
-	/// Medium precision 16 bit unsigned integer vector of 1 component type.
-	typedef vec<1, uint16, mediump>		mediump_u16vec1;
-	/// High precision 16 bit unsigned integer vector of 1 component type.
-	typedef vec<1, uint16, highp>		highp_u16vec1;
 	/// 16 bit unsigned integer vector of 1 component type.
 	/// 16 bit unsigned integer vector of 1 component type.
+	///
+	/// @see ext_vector_uint1_sized
 	typedef vec<1, uint16, defaultp>	u16vec1;
 	typedef vec<1, uint16, defaultp>	u16vec1;
 
 
-	/// Low precision 32 bit unsigned integer vector of 1 component type.
-	typedef vec<1, uint32, lowp>		lowp_u32vec1;
-	/// Medium precision 32 bit unsigned integer vector of 1 component type.
-	typedef vec<1, uint32, mediump>		mediump_u32vec1;
-	/// High precision 32 bit unsigned integer vector of 1 component type.
-	typedef vec<1, uint32, highp>		highp_u32vec1;
 	/// 32 bit unsigned integer vector of 1 component type.
 	/// 32 bit unsigned integer vector of 1 component type.
+	///
+	/// @see ext_vector_uint1_sized
 	typedef vec<1, uint32, defaultp>	u32vec1;
 	typedef vec<1, uint32, defaultp>	u32vec1;
 
 
-	/// Low precision 64 bit unsigned integer vector of 1 component type.
-	typedef vec<1, uint64, lowp>		lowp_u64vec1;
-	/// Medium precision 64 bit unsigned integer vector of 1 component type.
-	typedef vec<1, uint64, mediump>		mediump_u64vec1;
-	/// High precision 64 bit unsigned integer vector of 1 component type.
-	typedef vec<1, uint64, highp>		highp_u64vec1;
 	/// 64 bit unsigned integer vector of 1 component type.
 	/// 64 bit unsigned integer vector of 1 component type.
+	///
+	/// @see ext_vector_uint1_sized
 	typedef vec<1, uint64, defaultp>	u64vec1;
 	typedef vec<1, uint64, defaultp>	u64vec1;
 
 
 	/// @}
 	/// @}

+ 0 - 31
glm/ext/vector_uint2_precision.hpp

@@ -1,31 +0,0 @@
-/// @ref core
-/// @file glm/ext/vector_uint2_precision.hpp
-
-#pragma once
-#include "../detail/type_vec2.hpp"
-
-namespace glm
-{
-	/// @addtogroup core_vector_precision
-	/// @{
-
-	/// 2 components vector of high qualifier unsigned integer numbers.
-	///
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
-	typedef vec<2, unsigned int, highp>		highp_uvec2;
-
-	/// 2 components vector of medium qualifier unsigned integer numbers.
-	///
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
-	typedef vec<2, unsigned int, mediump>	mediump_uvec2;
-
-	/// 2 components vector of low qualifier unsigned integer numbers.
-	///
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
-	typedef vec<2, unsigned int, lowp>		lowp_uvec2;
-
-	/// @}
-}//namespace glm

+ 8 - 24
glm/ext/vector_uint2_sized.hpp

@@ -25,40 +25,24 @@ namespace glm
 	/// @addtogroup ext_vector_uint2_sized
 	/// @addtogroup ext_vector_uint2_sized
 	/// @{
 	/// @{
 
 
-	/// Low precision 8 bit unsigned integer vector of 2 components type.
-	typedef vec<2, uint8, lowp>			lowp_u8vec2;
-	/// Medium precision 8 bit unsigned integer vector of 2 components type.
-	typedef vec<2, uint8, mediump>		mediump_u8vec2;
-	/// High precision 8 bit unsigned integer vector of 2 components type.
-	typedef vec<2, uint8, highp>		highp_u8vec2;
 	/// 8 bit unsigned integer vector of 2 components type.
 	/// 8 bit unsigned integer vector of 2 components type.
+	///
+	/// @see ext_vector_uint2_sized
 	typedef vec<2, uint8, defaultp>		u8vec2;
 	typedef vec<2, uint8, defaultp>		u8vec2;
 
 
-	/// Low precision 16 bit unsigned integer vector of 2 components type.
-	typedef vec<2, uint16, lowp>		lowp_u16vec2;
-	/// Medium precision 16 bit unsigned integer vector of 2 components type.
-	typedef vec<2, uint16, mediump>		mediump_u16vec2;
-	/// High precision 16 bit unsigned integer vector of 2 components type.
-	typedef vec<2, uint16, highp>		highp_u16vec2;
 	/// 16 bit unsigned integer vector of 2 components type.
 	/// 16 bit unsigned integer vector of 2 components type.
+	///
+	/// @see ext_vector_uint2_sized
 	typedef vec<2, uint16, defaultp>	u16vec2;
 	typedef vec<2, uint16, defaultp>	u16vec2;
 
 
-	/// Low precision 32 bit unsigned integer vector of 2 components type.
-	typedef vec<2, uint32, lowp>		lowp_u32vec2;
-	/// Medium precision 32 bit unsigned integer vector of 2 components type.
-	typedef vec<2, uint32, mediump>		mediump_u32vec2;
-	/// High precision 32 bit unsigned integer vector of 2 components type.
-	typedef vec<2, uint32, highp>		highp_u32vec2;
 	/// 32 bit unsigned integer vector of 2 components type.
 	/// 32 bit unsigned integer vector of 2 components type.
+	///
+	/// @see ext_vector_uint2_sized
 	typedef vec<2, uint32, defaultp>	u32vec2;
 	typedef vec<2, uint32, defaultp>	u32vec2;
 
 
-	/// Low precision 64 bit unsigned integer vector of 2 components type.
-	typedef vec<2, uint64, lowp>		lowp_u64vec2;
-	/// Medium precision 64 bit unsigned integer vector of 2 components type.
-	typedef vec<2, uint64, mediump>		mediump_u64vec2;
-	/// High precision 64 bit unsigned integer vector of 2 components type.
-	typedef vec<2, uint64, highp>		highp_u64vec2;
 	/// 64 bit unsigned integer vector of 2 components type.
 	/// 64 bit unsigned integer vector of 2 components type.
+	///
+	/// @see ext_vector_uint2_sized
 	typedef vec<2, uint64, defaultp>	u64vec2;
 	typedef vec<2, uint64, defaultp>	u64vec2;
 
 
 	/// @}
 	/// @}

+ 0 - 31
glm/ext/vector_uint3_precision.hpp

@@ -1,31 +0,0 @@
-/// @ref core
-/// @file glm/ext/vector_uint3_precision.hpp
-
-#pragma once
-#include "../detail/type_vec3.hpp"
-
-namespace glm
-{
-	/// @addtogroup core_vector_precision
-	/// @{
-
-	/// 3 components vector of high qualifier unsigned integer numbers.
-	///
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
-	typedef vec<3, unsigned int, highp>		highp_uvec3;
-
-	/// 3 components vector of medium qualifier unsigned integer numbers.
-	///
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
-	typedef vec<3, unsigned int, mediump>	mediump_uvec3;
-
-	/// 3 components vector of low qualifier unsigned integer numbers.
-	///
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
-	typedef vec<3, unsigned int, lowp>		lowp_uvec3;
-
-	/// @}
-}//namespace glm

+ 8 - 24
glm/ext/vector_uint3_sized.hpp

@@ -25,40 +25,24 @@ namespace glm
 	/// @addtogroup ext_vector_uint3_sized
 	/// @addtogroup ext_vector_uint3_sized
 	/// @{
 	/// @{
 
 
-	/// Low precision 8 bit unsigned integer vector of 3 components type.
-	typedef vec<3, uint8, lowp>			lowp_u8vec3;
-	/// Medium precision 8 bit unsigned integer vector of 3 components type.
-	typedef vec<3, uint8, mediump>		mediump_u8vec3;
-	/// High precision 8 bit unsigned integer vector of 3 components type.
-	typedef vec<3, uint8, highp>		highp_u8vec3;
 	/// 8 bit unsigned integer vector of 3 components type.
 	/// 8 bit unsigned integer vector of 3 components type.
+	///
+	/// @see ext_vector_uint3_sized
 	typedef vec<3, uint8, defaultp>		u8vec3;
 	typedef vec<3, uint8, defaultp>		u8vec3;
 
 
-	/// Low precision 16 bit unsigned integer vector of 3 components type.
-	typedef vec<3, uint16, lowp>		lowp_u16vec3;
-	/// Medium precision 16 bit unsigned integer vector of 3 components type.
-	typedef vec<3, uint16, mediump>		mediump_u16vec3;
-	/// High precision 16 bit unsigned integer vector of 3 components type.
-	typedef vec<3, uint16, highp>		highp_u16vec3;
 	/// 16 bit unsigned integer vector of 3 components type.
 	/// 16 bit unsigned integer vector of 3 components type.
+	///
+	/// @see ext_vector_uint3_sized
 	typedef vec<3, uint16, defaultp>	u16vec3;
 	typedef vec<3, uint16, defaultp>	u16vec3;
 
 
-	/// Low precision 32 bit unsigned integer vector of 3 components type.
-	typedef vec<3, uint32, lowp>		lowp_u32vec3;
-	/// Medium precision 32 bit unsigned integer vector of 3 components type.
-	typedef vec<3, uint32, mediump>		mediump_u32vec3;
-	/// High precision 32 bit unsigned integer vector of 3 components type.
-	typedef vec<3, uint32, highp>		highp_u32vec3;
 	/// 32 bit unsigned integer vector of 3 components type.
 	/// 32 bit unsigned integer vector of 3 components type.
+	///
+	/// @see ext_vector_uint3_sized
 	typedef vec<3, uint32, defaultp>	u32vec3;
 	typedef vec<3, uint32, defaultp>	u32vec3;
 
 
-	/// Low precision 64 bit unsigned integer vector of 3 components type.
-	typedef vec<3, uint64, lowp>		lowp_u64vec3;
-	/// Medium precision 64 bit unsigned integer vector of 3 components type.
-	typedef vec<3, uint64, mediump>		mediump_u64vec3;
-	/// High precision 64 bit unsigned integer vector of 3 components type.
-	typedef vec<3, uint64, highp>		highp_u64vec3;
 	/// 64 bit unsigned integer vector of 3 components type.
 	/// 64 bit unsigned integer vector of 3 components type.
+	///
+	/// @see ext_vector_uint3_sized
 	typedef vec<3, uint64, defaultp>	u64vec3;
 	typedef vec<3, uint64, defaultp>	u64vec3;
 
 
 	/// @}
 	/// @}

+ 0 - 31
glm/ext/vector_uint4_precision.hpp

@@ -1,31 +0,0 @@
-/// @ref core
-/// @file glm/ext/vector_uint4_precision.hpp
-
-#pragma once
-#include "../detail/type_vec4.hpp"
-
-namespace glm
-{
-	/// @addtogroup core_vector_precision
-	/// @{
-
-	/// 4 components vector of high qualifier unsigned integer numbers.
-	///
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
-	typedef vec<4, unsigned int, highp>		highp_uvec4;
-
-	/// 4 components vector of medium qualifier unsigned integer numbers.
-	///
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
-	typedef vec<4, unsigned int, mediump>	mediump_uvec4;
-
-	/// 4 components vector of low qualifier unsigned integer numbers.
-	///
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>
-	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
-	typedef vec<4, unsigned int, lowp>		lowp_uvec4;
-
-	/// @}
-}//namespace glm

+ 8 - 23
glm/ext/vector_uint4_sized.hpp

@@ -25,40 +25,25 @@ namespace glm
 	/// @addtogroup ext_vector_uint4_sized
 	/// @addtogroup ext_vector_uint4_sized
 	/// @{
 	/// @{
 
 
-	/// Low precision 8 bit unsigned integer vector of 4 components type.
-	typedef vec<4, uint8, lowp>			lowp_u8vec4;
-	/// Medium precision 8 bit unsigned integer vector of 4 components type.
-	typedef vec<4, uint8, mediump>		mediump_u8vec4;
-	/// High precision 8 bit unsigned integer vector of 4 components type.
-	typedef vec<4, uint8, highp>		highp_u8vec4;
 	/// 8 bit unsigned integer vector of 4 components type.
 	/// 8 bit unsigned integer vector of 4 components type.
+	///
+	/// @see ext_vector_uint4_sized
 	typedef vec<4, uint8, defaultp>		u8vec4;
 	typedef vec<4, uint8, defaultp>		u8vec4;
 
 
-	/// Low precision 16 bit unsigned integer vector of 4 components type.
-	typedef vec<4, uint16, lowp>		lowp_u16vec4;
-	/// Medium precision 16 bit unsigned integer vector of 4 components type.
-	typedef vec<4, uint16, mediump>		mediump_u16vec4;
-	/// High precision 16 bit unsigned integer vector of 4 components type.
-	typedef vec<4, uint16, highp>		highp_u16vec4;
 	/// 16 bit unsigned integer vector of 4 components type.
 	/// 16 bit unsigned integer vector of 4 components type.
+	///
+	/// @see ext_vector_uint4_sized
 	typedef vec<4, uint16, defaultp>	u16vec4;
 	typedef vec<4, uint16, defaultp>	u16vec4;
 
 
-	/// Low precision 32 bit unsigned integer vector of 4 components type.
-	typedef vec<4, uint32, lowp>		lowp_u32vec4;
-	/// Medium precision 32 bit unsigned integer vector of 4 components type.
-	typedef vec<4, uint32, mediump>		mediump_u32vec4;
-	/// High precision 32 bit unsigned integer vector of 4 components type.
-	typedef vec<4, uint32, highp>		highp_u32vec4;
 	/// 32 bit unsigned integer vector of 4 components type.
 	/// 32 bit unsigned integer vector of 4 components type.
+	///
+	/// @see ext_vector_uint4_sized
 	typedef vec<4, uint32, defaultp>	u32vec4;
 	typedef vec<4, uint32, defaultp>	u32vec4;
 
 
-	/// Low precision 64 bit unsigned integer vector of 4 components type.
-	typedef vec<4, uint64, lowp>		lowp_u64vec4;
-	/// Medium precision 64 bit unsigned integer vector of 4 components type.
-	typedef vec<4, uint64, mediump>		mediump_u64vec4;
-	/// High precision 64 bit unsigned integer vector of 4 components type.
 	typedef vec<4, uint64, highp>		highp_u64vec4;
 	typedef vec<4, uint64, highp>		highp_u64vec4;
 	/// 64 bit unsigned integer vector of 4 components type.
 	/// 64 bit unsigned integer vector of 4 components type.
+	///
+	/// @see ext_vector_uint4_sized
 	typedef vec<4, uint64, defaultp>	u64vec4;
 	typedef vec<4, uint64, defaultp>	u64vec4;
 
 
 	/// @}
 	/// @}