Browse Source

Fixed half based types, missing non square matrices types

Christophe Riccio 14 years ago
parent
commit
bf11a54bc8
2 changed files with 58 additions and 4 deletions
  1. 43 4
      glm/gtc/half_float.hpp
  2. 15 0
      glm/gtc/half_float.inl

+ 43 - 4
glm/gtc/half_float.hpp

@@ -27,7 +27,8 @@ namespace detail
 		enum ctor{null};
 		enum ctor{null};
 		typedef thalf value_type;
 		typedef thalf value_type;
 		typedef std::size_t size_type;
 		typedef std::size_t size_type;
-		static size_type value_size();
+        GLM_FUNC_DECL size_type length() const;
+		static GLM_FUNC_DECL size_type value_size();
 
 
 		typedef tvec2<thalf> type;
 		typedef tvec2<thalf> type;
 		typedef tvec2<bool> bool_type;
 		typedef tvec2<bool> bool_type;
@@ -119,7 +120,8 @@ namespace detail
 		enum ctor{null};
 		enum ctor{null};
 		typedef thalf value_type;
 		typedef thalf value_type;
 		typedef std::size_t size_type;
 		typedef std::size_t size_type;
-		static size_type value_size();
+        GLM_FUNC_DECL size_type length() const;
+		static GLM_FUNC_DECL size_type value_size();
 
 
 		typedef tvec3<thalf> type;
 		typedef tvec3<thalf> type;
 		typedef tvec3<bool> bool_type;
 		typedef tvec3<bool> bool_type;
@@ -215,7 +217,8 @@ namespace detail
 		enum ctor{null};
 		enum ctor{null};
 		typedef thalf value_type;
 		typedef thalf value_type;
 		typedef std::size_t size_type;
 		typedef std::size_t size_type;
-		static size_type value_size();
+        GLM_FUNC_DECL size_type length() const;
+		static GLM_FUNC_DECL size_type value_size();
 
 
 		typedef tvec4<thalf> type;
 		typedef tvec4<thalf> type;
 		typedef tvec4<bool> bool_type;
 		typedef tvec4<bool> bool_type;
@@ -343,7 +346,7 @@ namespace half_float ///< GLM_GTC_half_float extension: Add support for half pre
 	/// 2 * 2 matrix of half-precision floating-point numbers.
 	/// 2 * 2 matrix of half-precision floating-point numbers.
 	/// From GLM_GTC_half_float extension.
 	/// From GLM_GTC_half_float extension.
 	typedef detail::tmat2x2<detail::thalf>	hmat2;
 	typedef detail::tmat2x2<detail::thalf>	hmat2;
-
+    
 	/// 3 * 3 matrix of half-precision floating-point numbers.
 	/// 3 * 3 matrix of half-precision floating-point numbers.
 	/// From GLM_GTC_half_float extension.
 	/// From GLM_GTC_half_float extension.
 	typedef detail::tmat3x3<detail::thalf>	hmat3;
 	typedef detail::tmat3x3<detail::thalf>	hmat3;
@@ -352,6 +355,42 @@ namespace half_float ///< GLM_GTC_half_float extension: Add support for half pre
 	/// From GLM_GTC_half_float extension.
 	/// From GLM_GTC_half_float extension.
 	typedef detail::tmat4x4<detail::thalf>	hmat4;
 	typedef detail::tmat4x4<detail::thalf>	hmat4;
 
 
+	/// 2 * 2 matrix of half-precision floating-point numbers.
+	/// From GLM_GTC_half_float extension.
+	typedef detail::tmat2x2<detail::thalf>	hmat2x2;
+    
+	/// 2 * 3 matrix of half-precision floating-point numbers.
+	/// From GLM_GTC_half_float extension.
+	typedef detail::tmat2x3<detail::thalf>	hmat2x3;
+    
+	/// 2 * 4 matrix of half-precision floating-point numbers.
+	/// From GLM_GTC_half_float extension.
+	typedef detail::tmat2x4<detail::thalf>	hmat2x4;
+
+	/// 3 * 2 matrix of half-precision floating-point numbers.
+	/// From GLM_GTC_half_float extension.
+	typedef detail::tmat3x2<detail::thalf>	hmat3x2;
+    
+	/// 3 * 3 matrix of half-precision floating-point numbers.
+	/// From GLM_GTC_half_float extension.
+	typedef detail::tmat3x3<detail::thalf>	hmat3x3;
+    
+	/// 3 * 4 matrix of half-precision floating-point numbers.
+	/// From GLM_GTC_half_float extension.
+	typedef detail::tmat3x4<detail::thalf>	hmat3x4;
+
+	/// 4 * 2 matrix of half-precision floating-point numbers.
+	/// From GLM_GTC_half_float extension.
+	typedef detail::tmat4x2<detail::thalf>	hmat4x2;    
+
+	/// 4 * 3 matrix of half-precision floating-point numbers.
+	/// From GLM_GTC_half_float extension.
+	typedef detail::tmat4x3<detail::thalf>	hmat4x3;
+    
+	/// 4 * 4 matrix of half-precision floating-point numbers.
+	/// From GLM_GTC_half_float extension.
+	typedef detail::tmat4x4<detail::thalf>	hmat4x4;
+    
 	/// @}
 	/// @}
 
 
 }// namespace half_float
 }// namespace half_float

+ 15 - 0
glm/gtc/half_float.inl

@@ -15,6 +15,11 @@ namespace detail{
 //////////////////////////////////////
 //////////////////////////////////////
 // hvec2
 // hvec2
 
 
+GLM_FUNC_QUALIFIER tvec2<thalf>::size_type tvec2<thalf>::length() const
+{
+    return 2;
+}
+
 GLM_FUNC_QUALIFIER tvec2<thalf>::size_type tvec2<thalf>::value_size()
 GLM_FUNC_QUALIFIER tvec2<thalf>::size_type tvec2<thalf>::value_size()
 {
 {
 	return 2;
 	return 2;
@@ -283,6 +288,11 @@ GLM_FUNC_QUALIFIER tref2<thalf> tvec2<thalf>::swizzle(comp x, comp y)
 //////////////////////////////////////
 //////////////////////////////////////
 // hvec3
 // hvec3
 
 
+GLM_FUNC_QUALIFIER tvec3<thalf>::size_type tvec3<thalf>::length() const
+{
+    return 3;
+}
+
 GLM_FUNC_QUALIFIER tvec3<thalf>::size_type tvec3<thalf>::value_size()
 GLM_FUNC_QUALIFIER tvec3<thalf>::size_type tvec3<thalf>::value_size()
 {
 {
 	return 3;
 	return 3;
@@ -595,6 +605,11 @@ GLM_FUNC_QUALIFIER tref3<thalf> tvec3<thalf>::swizzle(comp x, comp y, comp z)
 //////////////////////////////////////
 //////////////////////////////////////
 // hvec4
 // hvec4
 
 
+GLM_FUNC_QUALIFIER tvec4<thalf>::size_type tvec4<thalf>::length() const
+{
+    return 4;
+}
+
 GLM_FUNC_QUALIFIER tvec4<thalf>::size_type tvec4<thalf>::value_size()
 GLM_FUNC_QUALIFIER tvec4<thalf>::size_type tvec4<thalf>::value_size()
 {
 {
 	return 4;
 	return 4;