Browse Source

Added integer matrix extensions and fixed build

Christophe Riccio 5 years ago
parent
commit
e8d758f746

+ 1 - 1
glm/ext/matrix_int4x4.hpp

@@ -31,7 +31,7 @@ namespace glm
 
 	/// Signed integer 4x4 matrix.
 	///
-	/// @see ext_matrix_int3x3
+	/// @see ext_matrix_int4x4
 	typedef mat<4, 4, int, defaultp>	imat4;
 
 	/// @}

+ 13 - 462
glm/ext/matrix_uint2x2.hpp

@@ -1,12 +1,12 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_uint2x2
+/// @file glm/ext/matrix_uint2x2.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_uint2x2 GLM_EXT_matrix_uint2x2
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_uint2x2.hpp> to use the features of this extension.
 ///
 /// Defines a number of matrices with integer types.
 
@@ -14,474 +14,25 @@
 
 // Dependency:
 #include "../mat2x2.hpp"
-#include "../mat2x3.hpp"
-#include "../mat2x4.hpp"
-#include "../mat3x2.hpp"
-#include "../mat3x3.hpp"
-#include "../mat3x4.hpp"
-#include "../mat4x2.hpp"
-#include "../mat4x3.hpp"
-#include "../mat4x4.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_uint2x2 extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_uint2x2
 	/// @{
 
-	/// 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;
+	///
+	/// @see ext_matrix_uint2x2
+	typedef mat<2, 2, uint, defaultp>	umat2x2;
 
 	/// 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
+	///
+	/// @see ext_matrix_uint2x2
+	typedef mat<2, 2, uint, defaultp>	umat2;
 
 	/// @}
 }//namespace glm

+ 10 - 464
glm/ext/matrix_uint2x3.hpp

@@ -1,487 +1,33 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_uint2x3
+/// @file glm/ext/matrix_uint2x3.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_int2x3 GLM_EXT_matrix_uint2x3
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_uint2x3.hpp> to use the features of this extension.
 ///
 /// Defines a number of matrices with integer types.
 
 #pragma once
 
 // Dependency:
-#include "../mat2x2.hpp"
 #include "../mat2x3.hpp"
-#include "../mat2x4.hpp"
-#include "../mat3x2.hpp"
-#include "../mat3x3.hpp"
-#include "../mat3x4.hpp"
-#include "../mat4x2.hpp"
-#include "../mat4x3.hpp"
-#include "../mat4x4.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_uint2x3 extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_uint2x3
 	/// @{
 
-	/// 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
+	///
+	/// @see ext_matrix_uint2x3
+	typedef mat<2, 3, uint, defaultp>	umat2x3;
 
 	/// @}
 }//namespace glm

+ 10 - 464
glm/ext/matrix_uint2x4.hpp

@@ -1,487 +1,33 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_uint2x4
+/// @file glm/ext/matrix_uint2x4.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_uint2x4 GLM_EXT_matrix_int2x4
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_uint2x4.hpp> to use the features of this extension.
 ///
 /// Defines a number of matrices with integer types.
 
 #pragma once
 
 // Dependency:
-#include "../mat2x2.hpp"
-#include "../mat2x3.hpp"
 #include "../mat2x4.hpp"
-#include "../mat3x2.hpp"
-#include "../mat3x3.hpp"
-#include "../mat3x4.hpp"
-#include "../mat4x2.hpp"
-#include "../mat4x3.hpp"
-#include "../mat4x4.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_uint2x4 extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_uint2x4
 	/// @{
 
-	/// 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
+	///
+	/// @see ext_matrix_uint2x4
+	typedef mat<2, 4, uint, defaultp>	umat2x4;
 
 	/// @}
 }//namespace glm

+ 10 - 464
glm/ext/matrix_uint3x2.hpp

@@ -1,487 +1,33 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_uint3x2
+/// @file glm/ext/matrix_uint3x2.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_int3x2 GLM_EXT_matrix_uint3x2
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_uint3x2.hpp> to use the features of this extension.
 ///
 /// Defines a number of matrices with integer types.
 
 #pragma once
 
 // Dependency:
-#include "../mat2x2.hpp"
-#include "../mat2x3.hpp"
-#include "../mat2x4.hpp"
 #include "../mat3x2.hpp"
-#include "../mat3x3.hpp"
-#include "../mat3x4.hpp"
-#include "../mat4x2.hpp"
-#include "../mat4x3.hpp"
-#include "../mat4x4.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_uint3x2 extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_uint3x2
 	/// @{
 
-	/// 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
+	///
+	/// @see ext_matrix_uint3x2
+	typedef mat<3, 2, uint, defaultp>	umat3x2;
 
 	/// @}
 }//namespace glm

+ 13 - 462
glm/ext/matrix_uint3x3.hpp

@@ -1,487 +1,38 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_uint3x3
+/// @file glm/ext/matrix_uint3x3.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_uint3x3 GLM_EXT_matrix_uint3x3
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_uint3x3.hpp> to use the features of this extension.
 ///
 /// Defines a number of matrices with integer types.
 
 #pragma once
 
 // Dependency:
-#include "../mat2x2.hpp"
-#include "../mat2x3.hpp"
-#include "../mat2x4.hpp"
-#include "../mat3x2.hpp"
 #include "../mat3x3.hpp"
-#include "../mat3x4.hpp"
-#include "../mat4x2.hpp"
-#include "../mat4x3.hpp"
-#include "../mat4x4.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_uint3x3 extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_uint3x3
 	/// @{
 
-	/// 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;
+	///
+	/// @see ext_matrix_uint3x3
+	typedef mat<3, 3, uint, defaultp>	umat3x3;
 
 	/// 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
+	///
+	/// @see ext_matrix_uint3x3
+	typedef mat<3, 3, uint, defaultp>	umat3;
 
 	/// @}
 }//namespace glm

+ 10 - 464
glm/ext/matrix_uint3x4.hpp

@@ -1,487 +1,33 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_uint3x4
+/// @file glm/ext/matrix_uint3x4.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_uint3x4 GLM_EXT_matrix_uint3x4
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_uint3x4.hpp> to use the features of this extension.
 ///
 /// Defines a number of matrices with integer types.
 
 #pragma once
 
 // Dependency:
-#include "../mat2x2.hpp"
-#include "../mat2x3.hpp"
-#include "../mat2x4.hpp"
-#include "../mat3x2.hpp"
-#include "../mat3x3.hpp"
 #include "../mat3x4.hpp"
-#include "../mat4x2.hpp"
-#include "../mat4x3.hpp"
-#include "../mat4x4.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_uint3x4 extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_uint3x4
 	/// @{
 
-	/// 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
+	///
+	/// @see ext_matrix_uint3x4
+	typedef mat<3, 4, uint, defaultp>	umat3x4;
 
 	/// @}
 }//namespace glm

+ 10 - 464
glm/ext/matrix_uint4x2.hpp

@@ -1,487 +1,33 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_uint4x2
+/// @file glm/ext/matrix_uint4x2.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_uint4x2 GLM_EXT_matrix_uint4x2
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_uint4x2.hpp> to use the features of this extension.
 ///
 /// Defines a number of matrices with integer types.
 
 #pragma once
 
 // Dependency:
-#include "../mat2x2.hpp"
-#include "../mat2x3.hpp"
-#include "../mat2x4.hpp"
-#include "../mat3x2.hpp"
-#include "../mat3x3.hpp"
-#include "../mat3x4.hpp"
 #include "../mat4x2.hpp"
-#include "../mat4x3.hpp"
-#include "../mat4x4.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_uint4x2 extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_uint4x2
 	/// @{
 
-	/// 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
+	///
+	/// @see ext_matrix_uint4x2
+	typedef mat<4, 2, uint, defaultp>	umat4x2;
 
 	/// @}
 }//namespace glm

+ 10 - 464
glm/ext/matrix_uint4x3.hpp

@@ -1,487 +1,33 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_uint4x3
+/// @file glm/ext/matrix_uint4x3.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_uint4x3 GLM_EXT_matrix_uint4x3
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_uint4x3.hpp> to use the features of this extension.
 ///
 /// Defines a number of matrices with integer types.
 
 #pragma once
 
 // Dependency:
-#include "../mat2x2.hpp"
-#include "../mat2x3.hpp"
-#include "../mat2x4.hpp"
-#include "../mat3x2.hpp"
-#include "../mat3x3.hpp"
-#include "../mat3x4.hpp"
-#include "../mat4x2.hpp"
 #include "../mat4x3.hpp"
-#include "../mat4x4.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_uint4x3 extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_uint4x3
 	/// @{
 
-	/// 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
+	///
+	/// @see ext_matrix_uint4x3
+	typedef mat<4, 3, uint, defaultp>	umat4x3;
 
 	/// @}
 }//namespace glm

+ 13 - 462
glm/ext/matrix_uint4x4.hpp

@@ -1,487 +1,38 @@
-/// @ref gtc_matrix_integer
-/// @file glm/gtc/matrix_integer.hpp
+/// @ref ext_matrix_uint4x4
+/// @file glm/ext/matrix_uint4x4.hpp
 ///
 /// @see core (dependence)
 ///
-/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer
-/// @ingroup gtc
+/// @defgroup ext_matrix_uint4x4 GLM_EXT_matrix_uint4x4
+/// @ingroup ext
 ///
-/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
+/// Include <glm/ext/matrix_uint4x4.hpp> to use the features of this extension.
 ///
 /// Defines a number of matrices with integer types.
 
 #pragma once
 
 // Dependency:
-#include "../mat2x2.hpp"
-#include "../mat2x3.hpp"
-#include "../mat2x4.hpp"
-#include "../mat3x2.hpp"
-#include "../mat3x3.hpp"
-#include "../mat3x4.hpp"
-#include "../mat4x2.hpp"
-#include "../mat4x3.hpp"
 #include "../mat4x4.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-#	pragma message("GLM: GLM_GTC_matrix_integer extension included")
+#	pragma message("GLM: GLM_EXT_matrix_uint4x4 extension included")
 #endif
 
 namespace glm
 {
-	/// @addtogroup gtc_matrix_integer
+	/// @addtogroup ext_matrix_uint4x4
 	/// @{
 
-	/// 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;
+	///
+	/// @see ext_matrix_uint4x4
+	typedef mat<4, 4, uint, defaultp>	umat4x4;
 
 	/// Unsigned integer 4x4 matrix.
-	/// @see gtc_matrix_integer
-	typedef mediump_umat4x4							umat4x4;
-#endif//GLM_PRECISION
+	///
+	/// @see ext_matrix_uint4x4
+	typedef mat<4, 4, uint, defaultp>	umat4;
 
 	/// @}
 }//namespace glm

+ 22 - 0
glm/ext/scalar_common.hpp

@@ -28,24 +28,32 @@ namespace glm
 	/// Returns the minimum component-wise values of 3 inputs
 	///
 	/// @tparam T A floating-point scalar type.
+	///
+	/// @see ext_scalar_common
 	template<typename T>
 	GLM_FUNC_DECL T min(T a, T b, T c);
 
 	/// Returns the minimum component-wise values of 4 inputs
 	///
 	/// @tparam T A floating-point scalar type.
+	///
+	/// @see ext_scalar_common
 	template<typename T>
 	GLM_FUNC_DECL T min(T a, T b, T c, T d);
 
 	/// Returns the maximum component-wise values of 3 inputs
 	///
 	/// @tparam T A floating-point scalar type.
+	///
+	/// @see ext_scalar_common
 	template<typename T>
 	GLM_FUNC_DECL T max(T a, T b, T c);
 
 	/// Returns the maximum component-wise values of 4 inputs
 	///
 	/// @tparam T A floating-point scalar type.
+	///
+	/// @see ext_scalar_common
 	template<typename T>
 	GLM_FUNC_DECL T max(T a, T b, T c, T d);
 
@@ -54,6 +62,7 @@ namespace glm
 	/// @tparam T A floating-point scalar type.
 	///
 	/// @see <a href="http://en.cppreference.com/w/cpp/numeric/math/fmin">std::fmin documentation</a>
+	/// @see ext_scalar_common
 	template<typename T>
 	GLM_FUNC_DECL T fmin(T a, T b);
 
@@ -62,6 +71,7 @@ namespace glm
 	/// @tparam T A floating-point scalar type.
 	///
 	/// @see <a href="http://en.cppreference.com/w/cpp/numeric/math/fmin">std::fmin documentation</a>
+	/// @see ext_scalar_common
 	template<typename T>
 	GLM_FUNC_DECL T fmin(T a, T b, T c);
 
@@ -70,6 +80,7 @@ namespace glm
 	/// @tparam T A floating-point scalar type.
 	///
 	/// @see <a href="http://en.cppreference.com/w/cpp/numeric/math/fmin">std::fmin documentation</a>
+	/// @see ext_scalar_common
 	template<typename T>
 	GLM_FUNC_DECL T fmin(T a, T b, T c, T d);
 
@@ -78,6 +89,7 @@ namespace glm
 	/// @tparam T A floating-point scalar type.
 	///
 	/// @see <a href="http://en.cppreference.com/w/cpp/numeric/math/fmax">std::fmax documentation</a>
+	/// @see ext_scalar_common
 	template<typename T>
 	GLM_FUNC_DECL T fmax(T a, T b);
 
@@ -86,6 +98,7 @@ namespace glm
 	/// @tparam T A floating-point scalar type.
 	///
 	/// @see <a href="http://en.cppreference.com/w/cpp/numeric/math/fmax">std::fmax documentation</a>
+	/// @see ext_scalar_common
 	template<typename T>
 	GLM_FUNC_DECL T fmax(T a, T b, T C);
 
@@ -94,9 +107,18 @@ namespace glm
 	/// @tparam T A floating-point scalar type.
 	///
 	/// @see <a href="http://en.cppreference.com/w/cpp/numeric/math/fmax">std::fmax documentation</a>
+	/// @see ext_scalar_common
 	template<typename T>
 	GLM_FUNC_DECL T fmax(T a, T b, T C, T D);
 
+	/// Returns min(max(x, minVal), maxVal) for each component in x. If one of the two arguments is NaN, the value of the other argument is returned.
+	///
+	/// @tparam genType Floating-point scalar or vector types.
+	///
+	/// @see ext_scalar_common
+	template<typename genType>
+	GLM_FUNC_DECL genType fclamp(genType x, genType minVal, genType maxVal);
+
 	/// @}
 }//namespace glm
 

+ 8 - 0
glm/ext/scalar_common.inl

@@ -112,4 +112,12 @@ namespace glm
 			return max(a, b, c);
 		return max(a, b, c, d);
 	}
+
+	// fclamp
+	template<typename genType>
+	GLM_FUNC_QUALIFIER genType fclamp(genType x, genType minVal, genType maxVal)
+	{
+		GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'fclamp' only accept floating-point or integer inputs");
+		return fmin(fmax(x, minVal), maxVal);
+	}
 }//namespace glm

+ 20 - 0
glm/ext/vector_common.hpp

@@ -138,6 +138,26 @@ namespace glm
 	template<length_t L, typename T, qualifier Q>
 	GLM_FUNC_DECL vec<L, T, Q> fmax(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c, vec<L, T, Q> const& d);
 
+	/// Returns min(max(x, minVal), maxVal) for each component in x. If one of the two arguments is NaN, the value of the other argument is returned.
+	///
+	/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+	/// @tparam T Floating-point scalar types
+	/// @tparam Q Value from qualifier enum
+	///
+	/// @see ext_vector_common
+	template<length_t L, typename T, qualifier Q>
+	GLM_FUNC_DECL vec<L, T, Q> fclamp(vec<L, T, Q> const& x, T minVal, T maxVal);
+
+	/// Returns min(max(x, minVal), maxVal) for each component in x. If one of the two arguments is NaN, the value of the other argument is returned.
+	///
+	/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+	/// @tparam T Floating-point scalar types
+	/// @tparam Q Value from qualifier enum
+	///
+	/// @see ext_vector_common
+	template<length_t L, typename T, qualifier Q>
+	GLM_FUNC_DECL vec<L, T, Q> fclamp(vec<L, T, Q> const& x, vec<L, T, Q> const& minVal, vec<L, T, Q> const& maxVal);
+
 	/// @}
 }//namespace glm
 

+ 12 - 0
glm/ext/vector_common.inl

@@ -85,4 +85,16 @@ namespace glm
 		GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'fmax' only accept floating-point inputs");
 		return fmax(fmax(a, b), fmax(c, d));
 	}
+
+	template<length_t L, typename T, qualifier Q>
+	GLM_FUNC_QUALIFIER vec<L, T, Q> fclamp(vec<L, T, Q> const& x, T minVal, T maxVal)
+	{
+		return fmin(fmax(x, vec<L, T, Q>(minVal)), vec<L, T, Q>(maxVal));
+	}
+
+	template<length_t L, typename T, qualifier Q>
+	GLM_FUNC_QUALIFIER vec<L, T, Q> fclamp(vec<L, T, Q> const& x, vec<L, T, Q> const& minVal, vec<L, T, Q> const& maxVal)
+	{
+		return fmin(fmax(x, minVal), maxVal);
+	}
 }//namespace glm

+ 1 - 46
glm/gtx/extended_min_max.hpp

@@ -14,6 +14,7 @@
 
 // Dependency:
 #include "../glm.hpp"
+#include "../ext/vector_common.hpp"
 
 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
 #	ifndef GLM_ENABLE_EXPERIMENTAL
@@ -130,52 +131,6 @@ namespace glm
 		C<T> const& z,
 		C<T> const& w);
 
-	/// Returns y if y < x; otherwise, it returns x. If one of the two arguments is NaN, the value of the other argument is returned.
-	///
-	/// @tparam genType Floating-point or integer; scalar or vector types.
-	///
-	/// @see gtx_extented_min_max
-	template<typename genType>
-	GLM_FUNC_DECL genType fmin(genType x, genType y);
-
-	/// Returns y if x < y; otherwise, it returns x. If one of the two arguments is NaN, the value of the other argument is returned.
-	///
-	/// @tparam genType Floating-point; scalar or vector types.
-	///
-	/// @see gtx_extented_min_max
-	/// @see <a href="http://en.cppreference.com/w/cpp/numeric/math/fmax">std::fmax documentation</a>
-	template<typename genType>
-	GLM_FUNC_DECL genType fmax(genType x, genType y);
-
-	/// Returns min(max(x, minVal), maxVal) for each component in x. If one of the two arguments is NaN, the value of the other argument is returned.
-	///
-	/// @tparam genType Floating-point scalar or vector types.
-	///
-	/// @see gtx_extented_min_max
-	template<typename genType>
-	GLM_FUNC_DECL genType fclamp(genType x, genType minVal, genType maxVal);
-
-	/// Returns min(max(x, minVal), maxVal) for each component in x. If one of the two arguments is NaN, the value of the other argument is returned.
-	///
-	/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
-	/// @tparam T Floating-point scalar types
-	/// @tparam Q Value from qualifier enum
-	///
-	/// @see gtx_extented_min_max
-	template<length_t L, typename T, qualifier Q>
-	GLM_FUNC_DECL vec<L, T, Q> fclamp(vec<L, T, Q> const& x, T minVal, T maxVal);
-
-	/// Returns min(max(x, minVal), maxVal) for each component in x. If one of the two arguments is NaN, the value of the other argument is returned.
-	///
-	/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
-	/// @tparam T Floating-point scalar types
-	/// @tparam Q Value from qualifier enum
-	///
-	/// @see gtx_extented_min_max
-	template<length_t L, typename T, qualifier Q>
-	GLM_FUNC_DECL vec<L, T, Q> fclamp(vec<L, T, Q> const& x, vec<L, T, Q> const& minVal, vec<L, T, Q> const& maxVal);
-
-
 	/// @}
 }//namespace glm
 

+ 0 - 80
glm/gtx/extended_min_max.inl

@@ -135,84 +135,4 @@ namespace glm
 	{
 		return glm::max(glm::max(x, y), glm::max(z, w));
 	}
-
-	// fmin
-#	if GLM_HAS_CXX11_STL
-		using std::fmin;
-#	else
-		template<typename genType>
-		GLM_FUNC_QUALIFIER genType fmin(genType x, genType y)
-		{
-			GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'fmin' only accept floating-point input");
-
-			if (isnan(x))
-				return y;
-			if (isnan(y))
-				return x;
-
-			return min(x, y);
-		}
-#	endif
-
-	template<length_t L, typename T, qualifier Q>
-	GLM_FUNC_QUALIFIER vec<L, T, Q> fmin(vec<L, T, Q> const& a, T b)
-	{
-		return detail::functor2<vec, L, T, Q>::call(fmin, a, vec<L, T, Q>(b));
-	}
-
-	template<length_t L, typename T, qualifier Q>
-	GLM_FUNC_QUALIFIER vec<L, T, Q> fmin(vec<L, T, Q> const& a, vec<L, T, Q> const& b)
-	{
-		return detail::functor2<vec, L, T, Q>::call(fmin, a, b);
-	}
-
-	// fmax
-#	if GLM_HAS_CXX11_STL
-		using std::fmax;
-#	else
-		template<typename genType>
-		GLM_FUNC_QUALIFIER genType fmax(genType x, genType y)
-		{
-			GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'fmax' only accept floating-point input");
-
-			if (isnan(x))
-				return y;
-			if (isnan(y))
-				return x;
-
-			return max(x, y);
-		}
-#	endif
-
-	template<length_t L, typename T, qualifier Q>
-	GLM_FUNC_QUALIFIER vec<L, T, Q> fmax(vec<L, T, Q> const& a, T b)
-	{
-		return detail::functor2<vec, L, T, Q>::call(fmax, a, vec<L, T, Q>(b));
-	}
-
-	template<length_t L, typename T, qualifier Q>
-	GLM_FUNC_QUALIFIER vec<L, T, Q> fmax(vec<L, T, Q> const& a, vec<L, T, Q> const& b)
-	{
-		return detail::functor2<vec, L, T, Q>::call(fmax, a, b);
-	}
-
-	// fclamp
-	template<typename genType>
-	GLM_FUNC_QUALIFIER genType fclamp(genType x, genType minVal, genType maxVal)
-	{
-		GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'fclamp' only accept floating-point or integer inputs");
-		return fmin(fmax(x, minVal), maxVal);
-	}
-
-	template<length_t L, typename T, qualifier Q>
-	GLM_FUNC_QUALIFIER vec<L, T, Q> fclamp(vec<L, T, Q> const& x, T minVal, T maxVal)
-	{
-		return fmin(fmax(x, vec<L, T, Q>(minVal)), vec<L, T, Q>(maxVal));
-	}
-
-	template<length_t L, typename T, qualifier Q>
-	GLM_FUNC_QUALIFIER vec<L, T, Q> fclamp(vec<L, T, Q> const& x, vec<L, T, Q> const& minVal, vec<L, T, Q> const& maxVal)
-	{
-		return fmin(fmax(x, minVal), maxVal);
-	}
 }//namespace glm