Browse Source

Added matrix integer extensions and tests

Christophe Riccio 5 years ago
parent
commit
9e7a486c0e
37 changed files with 1083 additions and 7453 deletions
  1. 1 1
      glm/ext/matrix_int2x2_sized.hpp
  2. 23 12
      glm/ext/matrix_int2x3_sized.hpp
  3. 27 465
      glm/ext/matrix_int2x4_sized.hpp
  4. 27 465
      glm/ext/matrix_int3x2_sized.hpp
  5. 48 465
      glm/ext/matrix_int3x3_sized.hpp
  6. 27 465
      glm/ext/matrix_int3x4_sized.hpp
  7. 27 465
      glm/ext/matrix_int4x2_sized.hpp
  8. 27 465
      glm/ext/matrix_int4x3_sized.hpp
  9. 48 465
      glm/ext/matrix_int4x4_sized.hpp
  10. 48 465
      glm/ext/matrix_uint2x2_sized.hpp
  11. 27 465
      glm/ext/matrix_uint2x3_sized.hpp
  12. 27 465
      glm/ext/matrix_uint2x4_sized.hpp
  13. 27 465
      glm/ext/matrix_uint3x2_sized.hpp
  14. 48 465
      glm/ext/matrix_uint3x3_sized.hpp
  15. 27 465
      glm/ext/matrix_uint3x4_sized.hpp
  16. 27 465
      glm/ext/matrix_uint4x2_sized.hpp
  17. 27 465
      glm/ext/matrix_uint4x3_sized.hpp
  18. 48 465
      glm/ext/matrix_uint4x4_sized.hpp
  19. 18 0
      test/ext/CMakeLists.txt
  20. 28 0
      test/ext/ext_matrix_int2x2_sized.cpp
  21. 28 0
      test/ext/ext_matrix_int2x3_sized.cpp
  22. 28 0
      test/ext/ext_matrix_int2x4_sized.cpp
  23. 28 0
      test/ext/ext_matrix_int3x2_sized.cpp
  24. 28 0
      test/ext/ext_matrix_int3x3_sized.cpp
  25. 28 0
      test/ext/ext_matrix_int3x4_sized.cpp
  26. 28 0
      test/ext/ext_matrix_int4x2_sized.cpp
  27. 28 0
      test/ext/ext_matrix_int4x3_sized.cpp
  28. 28 0
      test/ext/ext_matrix_int4x4_sized.cpp
  29. 28 0
      test/ext/ext_matrix_uint2x2_sized.cpp
  30. 28 0
      test/ext/ext_matrix_uint2x3_sized.cpp
  31. 28 0
      test/ext/ext_matrix_uint2x4_sized.cpp
  32. 28 0
      test/ext/ext_matrix_uint3x2_sized.cpp
  33. 28 0
      test/ext/ext_matrix_uint3x3_sized.cpp
  34. 28 0
      test/ext/ext_matrix_uint3x4_sized.cpp
  35. 28 0
      test/ext/ext_matrix_uint4x2_sized.cpp
  36. 28 0
      test/ext/ext_matrix_uint4x3_sized.cpp
  37. 28 0
      test/ext/ext_matrix_uint4x4_sized.cpp

+ 1 - 1
glm/ext/matrix_int2x2_sized.hpp

@@ -6,7 +6,7 @@
 /// @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.
+/// Include <glm/ext/matrix_int2x2_sized.hpp> to use the features of this extension.
 ///
 /// Defines a number of matrices with integer types.
 

+ 23 - 12
glm/ext/matrix_int2x3_sized.hpp

@@ -1,12 +1,12 @@
-/// @ref ext_matrix_int2x3
-/// @file glm/ext/matrix_int2x3.hpp
+/// @ref ext_matrix_int2x3_sized
+/// @file glm/ext/matrix_int2x3_sized.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup ext_matrix_int2x3 GLM_EXT_matrix_int2x3
+/// @defgroup ext_matrix_int2x3_sized GLM_EXT_matrix_int2x3_sized
 /// @ingroup ext
 ///
-/// Include <glm/ext/matrix_int2x3.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_int2x3_sized.hpp> to use the features of this extension.
 ///
 /// Defines a number of matrices with integer types.
 
@@ -14,25 +14,36 @@
 
 // Dependency:
 #include "../mat2x3.hpp"
+#include "../ext/scalar_int_sized.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_EXT_matrix_int2x3 extension included")
+#	pragma message("GLM: GLM_EXT_matrix_int2x3_sized extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup ext_matrix_int2x2
+	/// @addtogroup ext_matrix_int2x3_sized
 	/// @{
 
-	/// Signed integer 2x2 matrix.
+	/// 8 bit signed integer 2x3 matrix.
 	///
-	/// @see gtc_matrix_integer
-	typedef mat<2, 2, int, highp>				imat2;
+	/// @see ext_matrix_int2x3_sized
+	typedef mat<2, 3, int8, defaultp>				i8mat2x3;
 
-	/// Signed integer 2x2 matrix.
+	/// 16 bit signed integer 2x3 matrix.
 	///
-	/// @see gtc_matrix_integer
-	typedef mat<2, 2, int, highp>				imat2x2;
+	/// @see ext_matrix_int2x3_sized
+	typedef mat<2, 3, int16, defaultp>				i16mat2x3;
+
+	/// 32 bit signed integer 2x3 matrix.
+	///
+	/// @see ext_matrix_int2x3_sized
+	typedef mat<2, 3, int32, defaultp>				i32mat2x3;
+
+	/// 64 bit signed integer 2x3 matrix.
+	///
+	/// @see ext_matrix_int2x3_sized
+	typedef mat<2, 3, int64, defaultp>				i64mat2x3;
 
 	/// @}
 }//namespace glm

+ 27 - 465
glm/ext/matrix_int2x4_sized.hpp

@@ -1,487 +1,49 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_int2x4_sized
+/// @file glm/ext/matrix_int2x4_sized.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_int2x4_sized GLM_EXT_matrix_int2x4_sized
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_int2x4_sized.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"
+#include "../ext/scalar_int_sized.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_int2x4_sized extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_int2x4_sized
 	/// @{
 
-	/// 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
+	/// 8 bit signed integer 2x4 matrix.
+	///
+	/// @see ext_matrix_int2x4_sized
+	typedef mat<2, 4, int8, defaultp>				i8mat2x4;
+
+	/// 16 bit signed integer 2x4 matrix.
+	///
+	/// @see ext_matrix_int2x4_sized
+	typedef mat<2, 4, int16, defaultp>				i16mat2x4;
+
+	/// 32 bit signed integer 2x4 matrix.
+	///
+	/// @see ext_matrix_int2x4_sized
+	typedef mat<2, 4, int32, defaultp>				i32mat2x4;
+
+	/// 64 bit signed integer 2x4 matrix.
+	///
+	/// @see ext_matrix_int2x4_sized
+	typedef mat<2, 4, int64, defaultp>				i64mat2x4;
 
 	/// @}
 }//namespace glm

+ 27 - 465
glm/ext/matrix_int3x2_sized.hpp

@@ -1,487 +1,49 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_int3x2_sized
+/// @file glm/ext/matrix_int3x2_sized.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_int3x2_sized GLM_EXT_matrix_int3x2_sized
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_int3x2_sized.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"
+#include "../ext/scalar_int_sized.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_int3x2_sized extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_int3x2_sized
 	/// @{
 
-	/// 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
+	/// 8 bit signed integer 3x2 matrix.
+	///
+	/// @see ext_matrix_int3x2_sized
+	typedef mat<3, 2, int8, defaultp>				i8mat3x2;
+
+	/// 16 bit signed integer 3x2 matrix.
+	///
+	/// @see ext_matrix_int3x2_sized
+	typedef mat<3, 2, int16, defaultp>				i16mat3x2;
+
+	/// 32 bit signed integer 3x2 matrix.
+	///
+	/// @see ext_matrix_int3x2_sized
+	typedef mat<3, 2, int32, defaultp>				i32mat3x2;
+
+	/// 64 bit signed integer 3x2 matrix.
+	///
+	/// @see ext_matrix_int3x2_sized
+	typedef mat<3, 2, int64, defaultp>				i64mat3x2;
 
 	/// @}
 }//namespace glm

+ 48 - 465
glm/ext/matrix_int3x3_sized.hpp

@@ -1,487 +1,70 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_int3x3_sized
+/// @file glm/ext/matrix_int3x3_sized.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_int3x3_sized GLM_EXT_matrix_int3x3_sized
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_int3x3_sized.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"
+#include "../ext/scalar_int_sized.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_int3x3_sized extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_int3x3_sized
 	/// @{
 
-	/// 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
+	/// 8 bit signed integer 3x3 matrix.
+	///
+	/// @see ext_matrix_int3x3_sized
+	typedef mat<3, 3, int8, defaultp>				i8mat3x3;
+
+	/// 16 bit signed integer 3x3 matrix.
+	///
+	/// @see ext_matrix_int3x3_sized
+	typedef mat<3, 3, int16, defaultp>				i16mat3x3;
+
+	/// 32 bit signed integer 3x3 matrix.
+	///
+	/// @see ext_matrix_int3x3_sized
+	typedef mat<3, 3, int32, defaultp>				i32mat3x3;
+
+	/// 64 bit signed integer 3x3 matrix.
+	///
+	/// @see ext_matrix_int3x3_sized
+	typedef mat<3, 3, int64, defaultp>				i64mat3x3;
+
+
+	/// 8 bit signed integer 3x3 matrix.
+	///
+	/// @see ext_matrix_int3x3_sized
+	typedef mat<3, 3, int8, defaultp>				i8mat3;
+
+	/// 16 bit signed integer 3x3 matrix.
+	///
+	/// @see ext_matrix_int3x3_sized
+	typedef mat<3, 3, int16, defaultp>				i16mat3;
+
+	/// 32 bit signed integer 3x3 matrix.
+	///
+	/// @see ext_matrix_int3x3_sized
+	typedef mat<3, 3, int32, defaultp>				i32mat3;
+
+	/// 64 bit signed integer 3x3 matrix.
+	///
+	/// @see ext_matrix_int3x3_sized
+	typedef mat<3, 3, int64, defaultp>				i64mat3;
 
 	/// @}
 }//namespace glm

+ 27 - 465
glm/ext/matrix_int3x4_sized.hpp

@@ -1,487 +1,49 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_int3x4_sized
+/// @file glm/ext/matrix_int3x2_sized.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_int3x4_sized GLM_EXT_matrix_int3x4_sized
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_int3x4_sized.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"
+#include "../ext/scalar_int_sized.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_int3x4_sized extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_int3x4_sized
 	/// @{
 
-	/// 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
+	/// 8 bit signed integer 3x4 matrix.
+	///
+	/// @see ext_matrix_int3x4_sized
+	typedef mat<3, 4, int8, defaultp>				i8mat3x4;
+
+	/// 16 bit signed integer 3x4 matrix.
+	///
+	/// @see ext_matrix_int3x4_sized
+	typedef mat<3, 4, int16, defaultp>				i16mat3x4;
+
+	/// 32 bit signed integer 3x4 matrix.
+	///
+	/// @see ext_matrix_int3x4_sized
+	typedef mat<3, 4, int32, defaultp>				i32mat3x4;
+
+	/// 64 bit signed integer 3x4 matrix.
+	///
+	/// @see ext_matrix_int3x4_sized
+	typedef mat<3, 4, int64, defaultp>				i64mat3x4;
 
 	/// @}
 }//namespace glm

+ 27 - 465
glm/ext/matrix_int4x2_sized.hpp

@@ -1,487 +1,49 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_int4x2_sized
+/// @file glm/ext/matrix_int4x2_sized.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_int4x2_sized GLM_EXT_matrix_int4x2_sized
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_int4x2_sized.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"
+#include "../ext/scalar_int_sized.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_int4x2_sized extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_int4x2_sized
 	/// @{
 
-	/// 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
+	/// 8 bit signed integer 4x2 matrix.
+	///
+	/// @see ext_matrix_int4x2_sized
+	typedef mat<4, 2, int8, defaultp>				i8mat4x2;
+
+	/// 16 bit signed integer 4x2 matrix.
+	///
+	/// @see ext_matrix_int4x2_sized
+	typedef mat<4, 2, int16, defaultp>				i16mat4x2;
+
+	/// 32 bit signed integer 4x2 matrix.
+	///
+	/// @see ext_matrix_int4x2_sized
+	typedef mat<4, 2, int32, defaultp>				i32mat4x2;
+
+	/// 64 bit signed integer 4x2 matrix.
+	///
+	/// @see ext_matrix_int4x2_sized
+	typedef mat<4, 2, int64, defaultp>				i64mat4x2;
 
 	/// @}
 }//namespace glm

+ 27 - 465
glm/ext/matrix_int4x3_sized.hpp

@@ -1,487 +1,49 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_int4x3_sized
+/// @file glm/ext/matrix_int4x3_sized.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_int4x3_sized GLM_EXT_matrix_int4x3_sized
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_int4x3_sized.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"
+#include "../ext/scalar_int_sized.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_int4x3_sized extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_int4x3_sized
 	/// @{
 
-	/// 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
+	/// 8 bit signed integer 4x3 matrix.
+	///
+	/// @see ext_matrix_int4x3_sized
+	typedef mat<4, 3, int8, defaultp>				i8mat4x3;
+
+	/// 16 bit signed integer 4x3 matrix.
+	///
+	/// @see ext_matrix_int4x3_sized
+	typedef mat<4, 3, int16, defaultp>				i16mat4x3;
+
+	/// 32 bit signed integer 4x3 matrix.
+	///
+	/// @see ext_matrix_int4x3_sized
+	typedef mat<4, 3, int32, defaultp>				i32mat4x3;
+
+	/// 64 bit signed integer 4x3 matrix.
+	///
+	/// @see ext_matrix_int4x3_sized
+	typedef mat<4, 3, int64, defaultp>				i64mat4x3;
 
 	/// @}
 }//namespace glm

+ 48 - 465
glm/ext/matrix_int4x4_sized.hpp

@@ -1,487 +1,70 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_int4x4_sized
+/// @file glm/ext/matrix_int4x4_sized.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_int4x4_sized GLM_EXT_matrix_int4x4_sized
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_int4x4_sized.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"
+#include "../ext/scalar_int_sized.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_int4x4_sized extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_int4x4_sized
 	/// @{
 
-	/// 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
+	/// 8 bit signed integer 4x4 matrix.
+	///
+	/// @see ext_matrix_int4x4_sized
+	typedef mat<4, 4, int8, defaultp>				i8mat4x4;
+
+	/// 16 bit signed integer 4x4 matrix.
+	///
+	/// @see ext_matrix_int4x4_sized
+	typedef mat<4, 4, int16, defaultp>				i16mat4x4;
+
+	/// 32 bit signed integer 4x4 matrix.
+	///
+	/// @see ext_matrix_int4x4_sized
+	typedef mat<4, 4, int32, defaultp>				i32mat4x4;
+
+	/// 64 bit signed integer 4x4 matrix.
+	///
+	/// @see ext_matrix_int4x4_sized
+	typedef mat<4, 4, int64, defaultp>				i64mat4x4;
+
+
+	/// 8 bit signed integer 4x4 matrix.
+	///
+	/// @see ext_matrix_int4x4_sized
+	typedef mat<4, 4, int8, defaultp>				i8mat4;
+
+	/// 16 bit signed integer 4x4 matrix.
+	///
+	/// @see ext_matrix_int4x4_sized
+	typedef mat<4, 4, int16, defaultp>				i16mat4;
+
+	/// 32 bit signed integer 4x4 matrix.
+	///
+	/// @see ext_matrix_int4x4_sized
+	typedef mat<4, 4, int32, defaultp>				i32mat4;
+
+	/// 64 bit signed integer 4x4 matrix.
+	///
+	/// @see ext_matrix_int4x4_sized
+	typedef mat<4, 4, int64, defaultp>				i64mat4;
 
 	/// @}
 }//namespace glm

+ 48 - 465
glm/ext/matrix_uint2x2_sized.hpp

@@ -1,12 +1,12 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_uint2x2_sized
+/// @file glm/ext/matrix_uint2x2_sized.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_uint2x2_sized GLM_EXT_matrix_uint2x2_sized
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_uint2x2_sized.hpp> to use the features of this extension.
 ///
 /// Defines a number of matrices with integer types.
 
@@ -14,474 +14,57 @@
 
 // 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"
+#include "../ext/scalar_uint_sized.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_uint2x2_sized extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_uint2x2_sized
 	/// @{
 
-	/// 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
+	/// 8 bit unsigned integer 2x2 matrix.
+	///
+	/// @see ext_matrix_uint2x2_sized
+	typedef mat<2, 2, uint8, defaultp>				u8mat2x2;
+
+	/// 16 bit unsigned integer 2x2 matrix.
+	///
+	/// @see ext_matrix_uint2x2_sized
+	typedef mat<2, 2, uint16, defaultp>				u16mat2x2;
+
+	/// 32 bit unsigned integer 2x2 matrix.
+	///
+	/// @see ext_matrix_uint2x2_sized
+	typedef mat<2, 2, uint32, defaultp>				u32mat2x2;
+
+	/// 64 bit unsigned integer 2x2 matrix.
+	///
+	/// @see ext_matrix_uint2x2_sized
+	typedef mat<2, 2, uint64, defaultp>				u64mat2x2;
+
+
+	/// 8 bit unsigned integer 2x2 matrix.
+	///
+	/// @see ext_matrix_uint2x2_sized
+	typedef mat<2, 2, uint8, defaultp>				u8mat2;
+
+	/// 16 bit unsigned integer 2x2 matrix.
+	///
+	/// @see ext_matrix_uint2x2_sized
+	typedef mat<2, 2, uint16, defaultp>				u16mat2;
+
+	/// 32 bit unsigned integer 2x2 matrix.
+	///
+	/// @see ext_matrix_uint2x2_sized
+	typedef mat<2, 2, uint32, defaultp>				u32mat2;
+
+	/// 64 bit unsigned integer 2x2 matrix.
+	///
+	/// @see ext_matrix_uint2x2_sized
+	typedef mat<2, 2, uint64, defaultp>				u64mat2;
 
 	/// @}
 }//namespace glm

+ 27 - 465
glm/ext/matrix_uint2x3_sized.hpp

@@ -1,487 +1,49 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_uint2x3_sized
+/// @file glm/ext/matrix_uint2x3_sized.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_uint2x3_sized GLM_EXT_matrix_uint2x3_sized
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_uint2x3_sized.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"
+#include "../ext/scalar_uint_sized.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_uint2x3_sized extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_uint2x3_sized
 	/// @{
 
-	/// 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
+	/// 8 bit unsigned integer 2x3 matrix.
+	///
+	/// @see ext_matrix_uint2x3_sized
+	typedef mat<2, 3, uint8, defaultp>				u8mat2x3;
+
+	/// 16 bit unsigned integer 2x3 matrix.
+	///
+	/// @see ext_matrix_uint2x3_sized
+	typedef mat<2, 3, uint16, defaultp>				u16mat2x3;
+
+	/// 32 bit unsigned integer 2x3 matrix.
+	///
+	/// @see ext_matrix_uint2x3_sized
+	typedef mat<2, 3, uint32, defaultp>				u32mat2x3;
+
+	/// 64 bit unsigned integer 2x3 matrix.
+	///
+	/// @see ext_matrix_uint2x3_sized
+	typedef mat<2, 3, uint64, defaultp>				u64mat2x3;
 
 	/// @}
 }//namespace glm

+ 27 - 465
glm/ext/matrix_uint2x4_sized.hpp

@@ -1,487 +1,49 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_uint2x4_sized
+/// @file glm/ext/matrixu_uint2x4_sized.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_uint2x4_sized GLM_EXT_matrix_uint2x4_sized
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_uint2x4_sized.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"
+#include "../ext/scalar_uint_sized.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_uint2x4_sized extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_uint2x4_sized
 	/// @{
 
-	/// 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
+	/// 8 bit unsigned integer 2x4 matrix.
+	///
+	/// @see ext_matrix_uint2x4_sized
+	typedef mat<2, 4, uint8, defaultp>				u8mat2x4;
+
+	/// 16 bit unsigned integer 2x4 matrix.
+	///
+	/// @see ext_matrix_uint2x4_sized
+	typedef mat<2, 4, uint16, defaultp>				u16mat2x4;
+
+	/// 32 bit unsigned integer 2x4 matrix.
+	///
+	/// @see ext_matrix_uint2x4_sized
+	typedef mat<2, 4, uint32, defaultp>				u32mat2x4;
+
+	/// 64 bit unsigned integer 2x4 matrix.
+	///
+	/// @see ext_matrix_uint2x4_sized
+	typedef mat<2, 4, uint64, defaultp>				u64mat2x4;
 
 	/// @}
 }//namespace glm

+ 27 - 465
glm/ext/matrix_uint3x2_sized.hpp

@@ -1,487 +1,49 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_uint3x2_sized
+/// @file glm/ext/matrix_uint3x2_sized.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_uint3x2_sized GLM_EXT_matrix_uint3x2_sized
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_uint3x2_sized.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"
+#include "../ext/scalar_uint_sized.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_uint3x2_sized extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_uint3x2_sized
 	/// @{
 
-	/// 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
+	/// 8 bit signed integer 3x2 matrix.
+	///
+	/// @see ext_matrix_uint3x2_sized
+	typedef mat<3, 2, uint8, defaultp>				u8mat3x2;
+
+	/// 16 bit signed integer 3x2 matrix.
+	///
+	/// @see ext_matrix_uint3x2_sized
+	typedef mat<3, 2, uint16, defaultp>				u16mat3x2;
+
+	/// 32 bit signed integer 3x2 matrix.
+	///
+	/// @see ext_matrix_uint3x2_sized
+	typedef mat<3, 2, uint32, defaultp>				u32mat3x2;
+
+	/// 64 bit signed integer 3x2 matrix.
+	///
+	/// @see ext_matrix_uint3x2_sized
+	typedef mat<3, 2, uint64, defaultp>				u64mat3x2;
 
 	/// @}
 }//namespace glm

+ 48 - 465
glm/ext/matrix_uint3x3_sized.hpp

@@ -1,487 +1,70 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_uint3x3_sized
+/// @file glm/ext/matrix_uint3x3_sized.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_uint3x3_sized GLM_EXT_matrix_uint3x3_sized
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_uint3x3_sized.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"
+#include "../ext/scalar_uint_sized.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_uint3x3_sized extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_uint3x3_sized
 	/// @{
 
-	/// 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
+	/// 8 bit unsigned integer 3x3 matrix.
+	///
+	/// @see ext_matrix_uint3x3_sized
+	typedef mat<3, 3, uint8, defaultp>				u8mat3x3;
+
+	/// 16 bit unsigned integer 3x3 matrix.
+	///
+	/// @see ext_matrix_uint3x3_sized
+	typedef mat<3, 3, uint16, defaultp>				u16mat3x3;
+
+	/// 32 bit unsigned integer 3x3 matrix.
+	///
+	/// @see ext_matrix_uint3x3_sized
+	typedef mat<3, 3, uint32, defaultp>				u32mat3x3;
+
+	/// 64 bit unsigned integer 3x3 matrix.
+	///
+	/// @see ext_matrix_uint3x3_sized
+	typedef mat<3, 3, uint64, defaultp>				u64mat3x3;
+
+
+	/// 8 bit unsigned integer 3x3 matrix.
+	///
+	/// @see ext_matrix_uint3x3_sized
+	typedef mat<3, 3, uint8, defaultp>				u8mat3;
+
+	/// 16 bit unsigned integer 3x3 matrix.
+	///
+	/// @see ext_matrix_uint3x3_sized
+	typedef mat<3, 3, uint16, defaultp>				u16mat3;
+
+	/// 32 bit unsigned integer 3x3 matrix.
+	///
+	/// @see ext_matrix_uint3x3_sized
+	typedef mat<3, 3, uint32, defaultp>				u32mat3;
+
+	/// 64 bit unsigned integer 3x3 matrix.
+	///
+	/// @see ext_matrix_uint3x3_sized
+	typedef mat<3, 3, uint64, defaultp>				u64mat3;
 
 	/// @}
 }//namespace glm

+ 27 - 465
glm/ext/matrix_uint3x4_sized.hpp

@@ -1,487 +1,49 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_uint3x4_sized
+/// @file glm/ext/matrix_uint3x2_sized.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_uint3x4_sized GLM_EXT_matrix_uint3x4_sized
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_uint3x4_sized.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"
+#include "../ext/scalar_uint_sized.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_uint3x4_sized extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_uint3x4_sized
 	/// @{
 
-	/// 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
+	/// 8 bit unsigned integer 3x4 matrix.
+	///
+	/// @see ext_matrix_uint3x4_sized
+	typedef mat<3, 4, uint8, defaultp>				u8mat3x4;
+
+	/// 16 bit unsigned integer 3x4 matrix.
+	///
+	/// @see ext_matrix_uint3x4_sized
+	typedef mat<3, 4, uint16, defaultp>				u16mat3x4;
+
+	/// 32 bit unsigned integer 3x4 matrix.
+	///
+	/// @see ext_matrix_uint3x4_sized
+	typedef mat<3, 4, uint32, defaultp>				u32mat3x4;
+
+	/// 64 bit unsigned integer 3x4 matrix.
+	///
+	/// @see ext_matrix_uint3x4_sized
+	typedef mat<3, 4, uint64, defaultp>				u64mat3x4;
 
 	/// @}
 }//namespace glm

+ 27 - 465
glm/ext/matrix_uint4x2_sized.hpp

@@ -1,487 +1,49 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_uint4x2_sized
+/// @file glm/ext/matrix_uint4x2_sized.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_uint4x2_sized GLM_EXT_matrix_uint4x2_sized
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_uint4x2_sized.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"
+#include "../ext/scalar_uint_sized.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_uint4x2_sized extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_uint4x2_sized
 	/// @{
 
-	/// 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
+	/// 8 bit unsigned integer 4x2 matrix.
+	///
+	/// @see ext_matrix_uint4x2_sized
+	typedef mat<4, 2, uint8, defaultp>				u8mat4x2;
+
+	/// 16 bit unsigned integer 4x2 matrix.
+	///
+	/// @see ext_matrix_uint4x2_sized
+	typedef mat<4, 2, uint16, defaultp>				u16mat4x2;
+
+	/// 32 bit unsigned integer 4x2 matrix.
+	///
+	/// @see ext_matrix_uint4x2_sized
+	typedef mat<4, 2, uint32, defaultp>				u32mat4x2;
+
+	/// 64 bit unsigned integer 4x2 matrix.
+	///
+	/// @see ext_matrix_uint4x2_sized
+	typedef mat<4, 2, uint64, defaultp>				u64mat4x2;
 
 	/// @}
 }//namespace glm

+ 27 - 465
glm/ext/matrix_uint4x3_sized.hpp

@@ -1,487 +1,49 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_uint4x3_sized
+/// @file glm/ext/matrix_uint4x3_sized.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_uint4x3_sized GLM_EXT_matrix_uint4x3_sized
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_uint4x3_sized.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"
+#include "../ext/scalar_uint_sized.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_uint4x3_sized extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_uint4x3_sized
 	/// @{
 
-	/// 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
+	/// 8 bit unsigned integer 4x3 matrix.
+	///
+	/// @see ext_matrix_uint4x3_sized
+	typedef mat<4, 3, uint8, defaultp>				u8mat4x3;
+
+	/// 16 bit unsigned integer 4x3 matrix.
+	///
+	/// @see ext_matrix_uint4x3_sized
+	typedef mat<4, 3, uint16, defaultp>				u16mat4x3;
+
+	/// 32 bit unsigned integer 4x3 matrix.
+	///
+	/// @see ext_matrix_uint4x3_sized
+	typedef mat<4, 3, uint32, defaultp>				u32mat4x3;
+
+	/// 64 bit unsigned integer 4x3 matrix.
+	///
+	/// @see ext_matrix_uint4x3_sized
+	typedef mat<4, 3, uint64, defaultp>				u64mat4x3;
 
 	/// @}
 }//namespace glm

+ 48 - 465
glm/ext/matrix_uint4x4_sized.hpp

@@ -1,487 +1,70 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_uint4x4_sized
+/// @file glm/ext/matrix_uint4x4_sized.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_uint4x4_sized GLM_EXT_matrix_uint4x4_sized
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_uint4x4_sized.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"
+#include "../ext/scalar_uint_sized.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_uint4x4_sized extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_uint4x4_sized
 	/// @{
 
-	/// 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
+	/// 8 bit unsigned integer 4x4 matrix.
+	///
+	/// @see ext_matrix_uint4x4_sized
+	typedef mat<4, 4, uint8, defaultp>				u8mat4x4;
+
+	/// 16 bit unsigned integer 4x4 matrix.
+	///
+	/// @see ext_matrix_uint4x4_sized
+	typedef mat<4, 4, uint16, defaultp>				u16mat4x4;
+
+	/// 32 bit unsigned integer 4x4 matrix.
+	///
+	/// @see ext_matrix_uint4x4_sized
+	typedef mat<4, 4, uint32, defaultp>				u32mat4x4;
+
+	/// 64 bit unsigned integer 4x4 matrix.
+	///
+	/// @see ext_matrix_uint4x4_sized
+	typedef mat<4, 4, uint64, defaultp>				u64mat4x4;
+
+
+	/// 8 bit unsigned integer 4x4 matrix.
+	///
+	/// @see ext_matrix_uint4x4_sized
+	typedef mat<4, 4, uint8, defaultp>				u8mat4;
+
+	/// 16 bit unsigned integer 4x4 matrix.
+	///
+	/// @see ext_matrix_uint4x4_sized
+	typedef mat<4, 4, uint16, defaultp>				u16mat4;
+
+	/// 32 bit unsigned integer 4x4 matrix.
+	///
+	/// @see ext_matrix_uint4x4_sized
+	typedef mat<4, 4, uint32, defaultp>				u32mat4;
+
+	/// 64 bit unsigned integer 4x4 matrix.
+	///
+	/// @see ext_matrix_uint4x4_sized
+	typedef mat<4, 4, uint64, defaultp>				u64mat4;
 
 	/// @}
 }//namespace glm

+ 18 - 0
test/ext/CMakeLists.txt

@@ -1,6 +1,24 @@
 glmCreateTestGTC(ext_matrix_relational)
 glmCreateTestGTC(ext_matrix_transform)
 glmCreateTestGTC(ext_matrix_common)
+glmCreateTestGTC(ext_matrix_int2x2_sized)
+glmCreateTestGTC(ext_matrix_int2x3_sized)
+glmCreateTestGTC(ext_matrix_int2x4_sized)
+glmCreateTestGTC(ext_matrix_int3x2_sized)
+glmCreateTestGTC(ext_matrix_int3x3_sized)
+glmCreateTestGTC(ext_matrix_int3x4_sized)
+glmCreateTestGTC(ext_matrix_int4x2_sized)
+glmCreateTestGTC(ext_matrix_int4x3_sized)
+glmCreateTestGTC(ext_matrix_int4x4_sized)
+glmCreateTestGTC(ext_matrix_uint2x2_sized)
+glmCreateTestGTC(ext_matrix_uint2x3_sized)
+glmCreateTestGTC(ext_matrix_uint2x4_sized)
+glmCreateTestGTC(ext_matrix_uint3x2_sized)
+glmCreateTestGTC(ext_matrix_uint3x3_sized)
+glmCreateTestGTC(ext_matrix_uint3x4_sized)
+glmCreateTestGTC(ext_matrix_uint4x2_sized)
+glmCreateTestGTC(ext_matrix_uint4x3_sized)
+glmCreateTestGTC(ext_matrix_uint4x4_sized)
 glmCreateTestGTC(ext_quaternion_common)
 glmCreateTestGTC(ext_quaternion_exponential)
 glmCreateTestGTC(ext_quaternion_geometric)

+ 28 - 0
test/ext/ext_matrix_int2x2_sized.cpp

@@ -0,0 +1,28 @@
+#include <glm/ext/matrix_int2x2_sized.hpp>
+
+#if GLM_HAS_STATIC_ASSERT
+	static_assert(sizeof(glm::i8mat2x2) == 4, "int8 size isn't 1 byte on this platform");
+	static_assert(sizeof(glm::i16mat2x2) == 8, "int16 size isn't 2 bytes on this platform");
+	static_assert(sizeof(glm::i32mat2x2) == 16, "int32 size isn't 4 bytes on this platform");
+	static_assert(sizeof(glm::i64mat2x2) == 32, "int64 size isn't 8 bytes on this platform");
+#endif
+
+static int test_comp()
+{
+	int Error = 0;
+
+	Error += sizeof(glm::i8mat2x2) < sizeof(glm::i16mat2x2) ? 0 : 1;
+	Error += sizeof(glm::i16mat2x2) < sizeof(glm::i32mat2x2) ? 0 : 1;
+	Error += sizeof(glm::i32mat2x2) < sizeof(glm::i64mat2x2) ? 0 : 1;
+
+	return Error;
+}
+
+int main()
+{
+	int Error = 0;
+
+	Error += test_comp();
+
+	return Error;
+}

+ 28 - 0
test/ext/ext_matrix_int2x3_sized.cpp

@@ -0,0 +1,28 @@
+#include <glm/ext/matrix_int2x3_sized.hpp>
+
+#if GLM_HAS_STATIC_ASSERT
+static_assert(sizeof(glm::i8mat2x3) == 6, "int8 size isn't 1 byte on this platform");
+static_assert(sizeof(glm::i16mat2x3) == 12, "int16 size isn't 2 bytes on this platform");
+static_assert(sizeof(glm::i32mat2x3) == 24, "int32 size isn't 4 bytes on this platform");
+static_assert(sizeof(glm::i64mat2x3) == 48, "int64 size isn't 8 bytes on this platform");
+#endif
+
+static int test_comp()
+{
+	int Error = 0;
+
+	Error += sizeof(glm::i8mat2x3) < sizeof(glm::i16mat2x3) ? 0 : 1;
+	Error += sizeof(glm::i16mat2x3) < sizeof(glm::i32mat2x3) ? 0 : 1;
+	Error += sizeof(glm::i32mat2x3) < sizeof(glm::i64mat2x3) ? 0 : 1;
+
+	return Error;
+}
+
+int main()
+{
+	int Error = 0;
+
+	Error += test_comp();
+
+	return Error;
+}

+ 28 - 0
test/ext/ext_matrix_int2x4_sized.cpp

@@ -0,0 +1,28 @@
+#include <glm/ext/matrix_int2x4_sized.hpp>
+
+#if GLM_HAS_STATIC_ASSERT
+static_assert(sizeof(glm::i8mat2x4) == 8, "int8 size isn't 1 byte on this platform");
+static_assert(sizeof(glm::i16mat2x4) == 16, "int16 size isn't 2 bytes on this platform");
+static_assert(sizeof(glm::i32mat2x4) == 32, "int32 size isn't 4 bytes on this platform");
+static_assert(sizeof(glm::i64mat2x4) == 64, "int64 size isn't 8 bytes on this platform");
+#endif
+
+static int test_comp()
+{
+	int Error = 0;
+
+	Error += sizeof(glm::i8mat2x4) < sizeof(glm::i16mat2x4) ? 0 : 1;
+	Error += sizeof(glm::i16mat2x4) < sizeof(glm::i32mat2x4) ? 0 : 1;
+	Error += sizeof(glm::i32mat2x4) < sizeof(glm::i64mat2x4) ? 0 : 1;
+
+	return Error;
+}
+
+int main()
+{
+	int Error = 0;
+
+	Error += test_comp();
+
+	return Error;
+}

+ 28 - 0
test/ext/ext_matrix_int3x2_sized.cpp

@@ -0,0 +1,28 @@
+#include <glm/ext/matrix_int3x2_sized.hpp>
+
+#if GLM_HAS_STATIC_ASSERT
+static_assert(sizeof(glm::i8mat3x2) == 6, "int8 size isn't 1 byte on this platform");
+static_assert(sizeof(glm::i16mat3x2) == 12, "int16 size isn't 2 bytes on this platform");
+static_assert(sizeof(glm::i32mat3x2) == 24, "int32 size isn't 4 bytes on this platform");
+static_assert(sizeof(glm::i64mat3x2) == 48, "int64 size isn't 8 bytes on this platform");
+#endif
+
+static int test_comp()
+{
+	int Error = 0;
+
+	Error += sizeof(glm::i8mat3x2) < sizeof(glm::i16mat3x2) ? 0 : 1;
+	Error += sizeof(glm::i16mat3x2) < sizeof(glm::i32mat3x2) ? 0 : 1;
+	Error += sizeof(glm::i32mat3x2) < sizeof(glm::i64mat3x2) ? 0 : 1;
+
+	return Error;
+}
+
+int main()
+{
+	int Error = 0;
+
+	Error += test_comp();
+
+	return Error;
+}

+ 28 - 0
test/ext/ext_matrix_int3x3_sized.cpp

@@ -0,0 +1,28 @@
+#include <glm/ext/matrix_int3x3_sized.hpp>
+
+#if GLM_HAS_STATIC_ASSERT
+static_assert(sizeof(glm::i8mat3x3) == 9, "int8 size isn't 1 byte on this platform");
+static_assert(sizeof(glm::i16mat3x3) == 18, "int16 size isn't 2 bytes on this platform");
+static_assert(sizeof(glm::i32mat3x3) == 36, "int32 size isn't 4 bytes on this platform");
+static_assert(sizeof(glm::i64mat3x3) == 72, "int64 size isn't 8 bytes on this platform");
+#endif
+
+static int test_comp()
+{
+	int Error = 0;
+
+	Error += sizeof(glm::i8mat3x3) < sizeof(glm::i16mat3x3) ? 0 : 1;
+	Error += sizeof(glm::i16mat3x3) < sizeof(glm::i32mat3x3) ? 0 : 1;
+	Error += sizeof(glm::i32mat3x3) < sizeof(glm::i64mat3x3) ? 0 : 1;
+
+	return Error;
+}
+
+int main()
+{
+	int Error = 0;
+
+	Error += test_comp();
+
+	return Error;
+}

+ 28 - 0
test/ext/ext_matrix_int3x4_sized.cpp

@@ -0,0 +1,28 @@
+#include <glm/ext/matrix_int3x4_sized.hpp>
+
+#if GLM_HAS_STATIC_ASSERT
+static_assert(sizeof(glm::i8mat3x4) == 12, "int8 size isn't 1 byte on this platform");
+static_assert(sizeof(glm::i16mat3x4) == 24, "int16 size isn't 2 bytes on this platform");
+static_assert(sizeof(glm::i32mat3x4) == 48, "int32 size isn't 4 bytes on this platform");
+static_assert(sizeof(glm::i64mat3x4) == 96, "int64 size isn't 8 bytes on this platform");
+#endif
+
+static int test_comp()
+{
+	int Error = 0;
+
+	Error += sizeof(glm::i8mat3x4) < sizeof(glm::i16mat3x4) ? 0 : 1;
+	Error += sizeof(glm::i16mat3x4) < sizeof(glm::i32mat3x4) ? 0 : 1;
+	Error += sizeof(glm::i32mat3x4) < sizeof(glm::i64mat3x4) ? 0 : 1;
+
+	return Error;
+}
+
+int main()
+{
+	int Error = 0;
+
+	Error += test_comp();
+
+	return Error;
+}

+ 28 - 0
test/ext/ext_matrix_int4x2_sized.cpp

@@ -0,0 +1,28 @@
+#include <glm/ext/matrix_int4x2_sized.hpp>
+
+#if GLM_HAS_STATIC_ASSERT
+static_assert(sizeof(glm::i8mat4x2) == 8, "int8 size isn't 1 byte on this platform");
+static_assert(sizeof(glm::i16mat4x2) == 16, "int16 size isn't 2 bytes on this platform");
+static_assert(sizeof(glm::i32mat4x2) == 32, "int32 size isn't 4 bytes on this platform");
+static_assert(sizeof(glm::i64mat4x2) == 64, "int64 size isn't 8 bytes on this platform");
+#endif
+
+static int test_comp()
+{
+	int Error = 0;
+
+	Error += sizeof(glm::i8mat4x2) < sizeof(glm::i16mat4x2) ? 0 : 1;
+	Error += sizeof(glm::i16mat4x2) < sizeof(glm::i32mat4x2) ? 0 : 1;
+	Error += sizeof(glm::i32mat4x2) < sizeof(glm::i64mat4x2) ? 0 : 1;
+
+	return Error;
+}
+
+int main()
+{
+	int Error = 0;
+
+	Error += test_comp();
+
+	return Error;
+}

+ 28 - 0
test/ext/ext_matrix_int4x3_sized.cpp

@@ -0,0 +1,28 @@
+#include <glm/ext/matrix_int4x3_sized.hpp>
+
+#if GLM_HAS_STATIC_ASSERT
+static_assert(sizeof(glm::i8mat4x3) == 12, "int8 size isn't 1 byte on this platform");
+static_assert(sizeof(glm::i16mat4x3) == 24, "int16 size isn't 2 bytes on this platform");
+static_assert(sizeof(glm::i32mat4x3) == 48, "int32 size isn't 4 bytes on this platform");
+static_assert(sizeof(glm::i64mat4x3) == 96, "int64 size isn't 8 bytes on this platform");
+#endif
+
+static int test_comp()
+{
+	int Error = 0;
+
+	Error += sizeof(glm::i8mat4x3) < sizeof(glm::i16mat4x3) ? 0 : 1;
+	Error += sizeof(glm::i16mat4x3) < sizeof(glm::i32mat4x3) ? 0 : 1;
+	Error += sizeof(glm::i32mat4x3) < sizeof(glm::i64mat4x3) ? 0 : 1;
+
+	return Error;
+}
+
+int main()
+{
+	int Error = 0;
+
+	Error += test_comp();
+
+	return Error;
+}

+ 28 - 0
test/ext/ext_matrix_int4x4_sized.cpp

@@ -0,0 +1,28 @@
+#include <glm/ext/matrix_int4x4_sized.hpp>
+
+#if GLM_HAS_STATIC_ASSERT
+static_assert(sizeof(glm::i8mat4x4) == 16, "int8 size isn't 1 byte on this platform");
+static_assert(sizeof(glm::i16mat4x4) == 32, "int16 size isn't 2 bytes on this platform");
+static_assert(sizeof(glm::i32mat4x4) == 64, "int32 size isn't 4 bytes on this platform");
+static_assert(sizeof(glm::i64mat4x4) == 128, "int64 size isn't 8 bytes on this platform");
+#endif
+
+static int test_comp()
+{
+	int Error = 0;
+
+	Error += sizeof(glm::i8mat4x4) < sizeof(glm::i16mat4x4) ? 0 : 1;
+	Error += sizeof(glm::i16mat4x4) < sizeof(glm::i32mat4x4) ? 0 : 1;
+	Error += sizeof(glm::i32mat4x4) < sizeof(glm::i64mat4x4) ? 0 : 1;
+
+	return Error;
+}
+
+int main()
+{
+	int Error = 0;
+
+	Error += test_comp();
+
+	return Error;
+}

+ 28 - 0
test/ext/ext_matrix_uint2x2_sized.cpp

@@ -0,0 +1,28 @@
+#include <glm/ext/matrix_uint2x2_sized.hpp>
+
+#if GLM_HAS_STATIC_ASSERT
+	static_assert(sizeof(glm::u8mat2x2) == 4, "uint8 size isn't 1 byte on this platform");
+	static_assert(sizeof(glm::u16mat2x2) == 8, "uint16 size isn't 2 bytes on this platform");
+	static_assert(sizeof(glm::u32mat2x2) == 16, "uint32 size isn't 4 bytes on this platform");
+	static_assert(sizeof(glm::u64mat2x2) == 32, "uint64 size isn't 8 bytes on this platform");
+#endif
+
+static int test_comp()
+{
+	int Error = 0;
+
+	Error += sizeof(glm::u8mat2x2) < sizeof(glm::u16mat2x2) ? 0 : 1;
+	Error += sizeof(glm::u16mat2x2) < sizeof(glm::u32mat2x2) ? 0 : 1;
+	Error += sizeof(glm::u32mat2x2) < sizeof(glm::u64mat2x2) ? 0 : 1;
+
+	return Error;
+}
+
+int main()
+{
+	int Error = 0;
+
+	Error += test_comp();
+
+	return Error;
+}

+ 28 - 0
test/ext/ext_matrix_uint2x3_sized.cpp

@@ -0,0 +1,28 @@
+#include <glm/ext/matrix_uint2x3_sized.hpp>
+
+#if GLM_HAS_STATIC_ASSERT
+static_assert(sizeof(glm::u8mat2x3) == 6, "uint8 size isn't 1 byte on this platform");
+static_assert(sizeof(glm::u16mat2x3) == 12, "uint16 size isn't 2 bytes on this platform");
+static_assert(sizeof(glm::u32mat2x3) == 24, "uint32 size isn't 4 bytes on this platform");
+static_assert(sizeof(glm::u64mat2x3) == 48, "uint64 size isn't 8 bytes on this platform");
+#endif
+
+static int test_comp()
+{
+	int Error = 0;
+
+	Error += sizeof(glm::u8mat2x3) < sizeof(glm::u16mat2x3) ? 0 : 1;
+	Error += sizeof(glm::u16mat2x3) < sizeof(glm::u32mat2x3) ? 0 : 1;
+	Error += sizeof(glm::u32mat2x3) < sizeof(glm::u64mat2x3) ? 0 : 1;
+
+	return Error;
+}
+
+int main()
+{
+	int Error = 0;
+
+	Error += test_comp();
+
+	return Error;
+}

+ 28 - 0
test/ext/ext_matrix_uint2x4_sized.cpp

@@ -0,0 +1,28 @@
+#include <glm/ext/matrix_uint2x4_sized.hpp>
+
+#if GLM_HAS_STATIC_ASSERT
+static_assert(sizeof(glm::u8mat2x4) == 8, "uint8 size isn't 1 byte on this platform");
+static_assert(sizeof(glm::u16mat2x4) == 16, "uint16 size isn't 2 bytes on this platform");
+static_assert(sizeof(glm::u32mat2x4) == 32, "uint32 size isn't 4 bytes on this platform");
+static_assert(sizeof(glm::u64mat2x4) == 64, "uint64 size isn't 8 bytes on this platform");
+#endif
+
+static int test_comp()
+{
+	int Error = 0;
+
+	Error += sizeof(glm::u8mat2x4) < sizeof(glm::u16mat2x4) ? 0 : 1;
+	Error += sizeof(glm::u16mat2x4) < sizeof(glm::u32mat2x4) ? 0 : 1;
+	Error += sizeof(glm::u32mat2x4) < sizeof(glm::u64mat2x4) ? 0 : 1;
+
+	return Error;
+}
+
+int main()
+{
+	int Error = 0;
+
+	Error += test_comp();
+
+	return Error;
+}

+ 28 - 0
test/ext/ext_matrix_uint3x2_sized.cpp

@@ -0,0 +1,28 @@
+#include <glm/ext/matrix_uint3x2_sized.hpp>
+
+#if GLM_HAS_STATIC_ASSERT
+static_assert(sizeof(glm::u8mat3x2) == 6, "uint8 size isn't 1 byte on this platform");
+static_assert(sizeof(glm::u16mat3x2) == 12, "uint16 size isn't 2 bytes on this platform");
+static_assert(sizeof(glm::u32mat3x2) == 24, "uint32 size isn't 4 bytes on this platform");
+static_assert(sizeof(glm::u64mat3x2) == 48, "uint64 size isn't 8 bytes on this platform");
+#endif
+
+static int test_comp()
+{
+	int Error = 0;
+
+	Error += sizeof(glm::u8mat3x2) < sizeof(glm::u16mat3x2) ? 0 : 1;
+	Error += sizeof(glm::u16mat3x2) < sizeof(glm::u32mat3x2) ? 0 : 1;
+	Error += sizeof(glm::u32mat3x2) < sizeof(glm::u64mat3x2) ? 0 : 1;
+
+	return Error;
+}
+
+int main()
+{
+	int Error = 0;
+
+	Error += test_comp();
+
+	return Error;
+}

+ 28 - 0
test/ext/ext_matrix_uint3x3_sized.cpp

@@ -0,0 +1,28 @@
+#include <glm/ext/matrix_uint3x3_sized.hpp>
+
+#if GLM_HAS_STATIC_ASSERT
+static_assert(sizeof(glm::u8mat3x3) == 9, "uint8 size isn't 1 byte on this platform");
+static_assert(sizeof(glm::u16mat3x3) == 18, "uint16 size isn't 2 bytes on this platform");
+static_assert(sizeof(glm::u32mat3x3) == 36, "uint32 size isn't 4 bytes on this platform");
+static_assert(sizeof(glm::u64mat3x3) == 72, "uint64 size isn't 8 bytes on this platform");
+#endif
+
+static int test_comp()
+{
+	int Error = 0;
+
+	Error += sizeof(glm::u8mat3x3) < sizeof(glm::u16mat3x3) ? 0 : 1;
+	Error += sizeof(glm::u16mat3x3) < sizeof(glm::u32mat3x3) ? 0 : 1;
+	Error += sizeof(glm::u32mat3x3) < sizeof(glm::u64mat3x3) ? 0 : 1;
+
+	return Error;
+}
+
+int main()
+{
+	int Error = 0;
+
+	Error += test_comp();
+
+	return Error;
+}

+ 28 - 0
test/ext/ext_matrix_uint3x4_sized.cpp

@@ -0,0 +1,28 @@
+#include <glm/ext/matrix_uint3x4_sized.hpp>
+
+#if GLM_HAS_STATIC_ASSERT
+static_assert(sizeof(glm::u8mat3x4) == 12, "uint8 size isn't 1 byte on this platform");
+static_assert(sizeof(glm::u16mat3x4) == 24, "uint16 size isn't 2 bytes on this platform");
+static_assert(sizeof(glm::u32mat3x4) == 48, "uint32 size isn't 4 bytes on this platform");
+static_assert(sizeof(glm::u64mat3x4) == 96, "uint64 size isn't 8 bytes on this platform");
+#endif
+
+static int test_comp()
+{
+	int Error = 0;
+
+	Error += sizeof(glm::u8mat3x4) < sizeof(glm::u16mat3x4) ? 0 : 1;
+	Error += sizeof(glm::u16mat3x4) < sizeof(glm::u32mat3x4) ? 0 : 1;
+	Error += sizeof(glm::u32mat3x4) < sizeof(glm::u64mat3x4) ? 0 : 1;
+
+	return Error;
+}
+
+int main()
+{
+	int Error = 0;
+
+	Error += test_comp();
+
+	return Error;
+}

+ 28 - 0
test/ext/ext_matrix_uint4x2_sized.cpp

@@ -0,0 +1,28 @@
+#include <glm/ext/matrix_uint4x2_sized.hpp>
+
+#if GLM_HAS_STATIC_ASSERT
+static_assert(sizeof(glm::u8mat4x2) == 8, "uint8 size isn't 1 byte on this platform");
+static_assert(sizeof(glm::u16mat4x2) == 16, "uint16 size isn't 2 bytes on this platform");
+static_assert(sizeof(glm::u32mat4x2) == 32, "uint32 size isn't 4 bytes on this platform");
+static_assert(sizeof(glm::u64mat4x2) == 64, "uint64 size isn't 8 bytes on this platform");
+#endif
+
+static int test_comp()
+{
+	int Error = 0;
+
+	Error += sizeof(glm::u8mat4x2) < sizeof(glm::u16mat4x2) ? 0 : 1;
+	Error += sizeof(glm::u16mat4x2) < sizeof(glm::u32mat4x2) ? 0 : 1;
+	Error += sizeof(glm::u32mat4x2) < sizeof(glm::u64mat4x2) ? 0 : 1;
+
+	return Error;
+}
+
+int main()
+{
+	int Error = 0;
+
+	Error += test_comp();
+
+	return Error;
+}

+ 28 - 0
test/ext/ext_matrix_uint4x3_sized.cpp

@@ -0,0 +1,28 @@
+#include <glm/ext/matrix_uint4x3_sized.hpp>
+
+#if GLM_HAS_STATIC_ASSERT
+static_assert(sizeof(glm::u8mat4x3) == 12, "uint8 size isn't 1 byte on this platform");
+static_assert(sizeof(glm::u16mat4x3) == 24, "uint16 size isn't 2 bytes on this platform");
+static_assert(sizeof(glm::u32mat4x3) == 48, "uint32 size isn't 4 bytes on this platform");
+static_assert(sizeof(glm::u64mat4x3) == 96, "uint64 size isn't 8 bytes on this platform");
+#endif
+
+static int test_comp()
+{
+	int Error = 0;
+
+	Error += sizeof(glm::u8mat4x3) < sizeof(glm::u16mat4x3) ? 0 : 1;
+	Error += sizeof(glm::u16mat4x3) < sizeof(glm::u32mat4x3) ? 0 : 1;
+	Error += sizeof(glm::u32mat4x3) < sizeof(glm::u64mat4x3) ? 0 : 1;
+
+	return Error;
+}
+
+int main()
+{
+	int Error = 0;
+
+	Error += test_comp();
+
+	return Error;
+}

+ 28 - 0
test/ext/ext_matrix_uint4x4_sized.cpp

@@ -0,0 +1,28 @@
+#include <glm/ext/matrix_uint4x4_sized.hpp>
+
+#if GLM_HAS_STATIC_ASSERT
+static_assert(sizeof(glm::u8mat4x4) == 16, "uint8 size isn't 1 byte on this platform");
+static_assert(sizeof(glm::u16mat4x4) == 32, "uint16 size isn't 2 bytes on this platform");
+static_assert(sizeof(glm::u32mat4x4) == 64, "uint32 size isn't 4 bytes on this platform");
+static_assert(sizeof(glm::u64mat4x4) == 128, "uint64 size isn't 8 bytes on this platform");
+#endif
+
+static int test_comp()
+{
+	int Error = 0;
+
+	Error += sizeof(glm::u8mat4x4) < sizeof(glm::u16mat4x4) ? 0 : 1;
+	Error += sizeof(glm::u16mat4x4) < sizeof(glm::u32mat4x4) ? 0 : 1;
+	Error += sizeof(glm::u32mat4x4) < sizeof(glm::u64mat4x4) ? 0 : 1;
+
+	return Error;
+}
+
+int main()
+{
+	int Error = 0;
+
+	Error += test_comp();
+
+	return Error;
+}