From 589e7cda6b493e66f7bc29fe51f40eefb98059c2 Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Sun, 31 Mar 2013 11:41:53 +0200 Subject: [PATCH] Added forward declarations (glm/fwd.hpp) for faster compilations, issue #56 --- doc/glm.docx | Bin 766338 -> 766793 bytes glm/core/type.hpp | 850 ------------------------------------------ glm/core/type_mat.hpp | 472 +++++++++++++++++++++++ glm/core/type_vec.hpp | 359 +++++++++++++++++- glm/fwd.hpp | 5 +- glm/glm.hpp | 2 - 6 files changed, 832 insertions(+), 856 deletions(-) delete mode 100644 glm/core/type.hpp diff --git a/doc/glm.docx b/doc/glm.docx index b4838c1a9846520be9e8d4f167dbfaf428935059..d07869fff87ce1aa8f1a8e550e06d64442b399f9 100644 GIT binary patch delta 62417 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 Z4!FND#sB(*7lRGzfmCq(Wq%LE{{x~3$DaTI delta 61981 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 diff --git a/glm/core/type.hpp b/glm/core/type.hpp deleted file mode 100644 index 4249fda2..00000000 --- a/glm/core/type.hpp +++ /dev/null @@ -1,850 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////////// -/// OpenGL Mathematics (glm.g-truc.net) -/// -/// Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) -/// Permission is hereby granted, free of charge, to any person obtaining a copy -/// of this software and associated documentation files (the "Software"), to deal -/// in the Software without restriction, including without limitation the rights -/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -/// copies of the Software, and to permit persons to whom the Software is -/// furnished to do so, subject to the following conditions: -/// -/// The above copyright notice and this permission notice shall be included in -/// all copies or substantial portions of the Software. -/// -/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -/// THE SOFTWARE. -/// -/// @ref core -/// @file glm/core/type.hpp -/// @date 2008-01-08 / 2013-03-31 -/// @author Christophe Riccio -/////////////////////////////////////////////////////////////////////////////////// - -#ifndef glm_core_type -#define glm_core_type - -namespace glm{ -namespace detail -{ - template struct tvec1; - template struct tvec2; - template struct tvec3; - template struct tvec4; - - template struct tmat2x2; - template struct tmat2x3; - template struct tmat2x4; - template struct tmat3x2; - template struct tmat3x3; - template struct tmat3x4; - template struct tmat4x2; - template struct tmat4x3; - template struct tmat4x4; -}//namespace detail - - typedef detail::tvec1 highp_vec1_t; - typedef detail::tvec1 mediump_vec1_t; - typedef detail::tvec1 lowp_vec1_t; - typedef detail::tvec1 highp_ivec1_t; - typedef detail::tvec1 mediump_ivec1_t; - typedef detail::tvec1 lowp_ivec1_t; - typedef detail::tvec1 highp_uvec1_t; - typedef detail::tvec1 mediump_uvec1_t; - typedef detail::tvec1 lowp_uvec1_t; - - /// @addtogroup core_precision - /// @{ - - /// 2 components vector of high precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec2 highp_vec2; - - /// 2 components vector of medium precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec2 mediump_vec2; - - /// 2 components vector of low precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec2 lowp_vec2; - - /// 2 components vector of high precision signed integer numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec2 highp_ivec2; - - /// 2 components vector of medium precision signed integer numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec2 mediump_ivec2; - - /// 2 components vector of low precision signed integer numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec2 lowp_ivec2; - - /// 2 components vector of high precision unsigned integer numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec2 highp_uvec2; - - /// 2 components vector of medium precision unsigned integer numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec2 mediump_uvec2; - - /// 2 components vector of low precision unsigned integer numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec2 lowp_uvec2; - - /// @} - - - /// @addtogroup core_precision - /// @{ - - /// 3 components vector of high precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec3 highp_vec3; - - /// 3 components vector of medium precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec3 mediump_vec3; - - /// 3 components vector of low precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec3 lowp_vec3; - - /// 3 components vector of high precision signed integer numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec3 highp_ivec3; - - /// 3 components vector of medium precision signed integer numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec3 mediump_ivec3; - - /// 3 components vector of low precision signed integer numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec3 lowp_ivec3; - - /// 3 components vector of high precision unsigned integer numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec3 highp_uvec3; - - /// 3 components vector of medium precision unsigned integer numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec3 mediump_uvec3; - - /// 3 components vector of low precision unsigned integer numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec3 lowp_uvec3; - - /// @} - - /// @addtogroup core_precision - /// @{ - - /// 4 components vector of high precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec4 highp_vec4; - - /// 4 components vector of medium precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec4 mediump_vec4; - - /// 4 components vector of low precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec4 lowp_vec4; - - /// 4 components vector of high precision signed integer numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec4 highp_ivec4; - - /// 4 components vector of medium precision signed integer numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec4 mediump_ivec4; - - /// 4 components vector of low precision signed integer numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec4 lowp_ivec4; - - /// 4 components vector of high precision unsigned integer numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec4 highp_uvec4; - - /// 4 components vector of medium precision unsigned integer numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec4 mediump_uvec4; - - /// 4 components vector of low precision unsigned integer numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tvec4 lowp_uvec4; - - /// @} - - /// @addtogroup core_precision - /// @{ - - /// 2 columns of 2 components matrix of low precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat2x2 lowp_mat2; - - /// 2 columns of 2 components matrix of medium precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat2x2 mediump_mat2; - - /// 2 columns of 2 components matrix of high precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat2x2 highp_mat2; - - /// 2 columns of 2 components matrix of low precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat2x2 lowp_mat2x2; - - /// 2 columns of 2 components matrix of medium precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat2x2 mediump_mat2x2; - - /// 2 columns of 2 components matrix of high precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat2x2 highp_mat2x2; - - /// @} - - /// @addtogroup core_precision - /// @{ - - /// 2 columns of 3 components matrix of low precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat2x3 lowp_mat2x3; - - /// 2 columns of 3 components matrix of medium precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat2x3 mediump_mat2x3; - - /// 2 columns of 3 components matrix of high precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat2x3 highp_mat2x3; - - /// @} - - /// @addtogroup core_precision - /// @{ - - /// 2 columns of 4 components matrix of low precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat2x4 lowp_mat2x4; - - /// 2 columns of 4 components matrix of medium precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat2x4 mediump_mat2x4; - - /// 2 columns of 4 components matrix of high precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat2x4 highp_mat2x4; - - /// @} - - /// @addtogroup core_precision - /// @{ - - /// 3 columns of 2 components matrix of low precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat3x2 lowp_mat3x2; - - /// 3 columns of 2 components matrix of medium precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat3x2 mediump_mat3x2; - - /// 3 columns of 2 components matrix of high precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat3x2 highp_mat3x2; - - /// @} - - /// @addtogroup core_precision - /// @{ - - /// 3 columns of 3 components matrix of low precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat3x3 lowp_mat3; - - /// 3 columns of 3 components matrix of medium precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat3x3 mediump_mat3; - - /// 3 columns of 3 components matrix of high precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat3x3 highp_mat3; - - /// 3 columns of 3 components matrix of low precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat3x3 lowp_mat3x3; - - /// 3 columns of 3 components matrix of medium precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat3x3 mediump_mat3x3; - - /// 3 columns of 3 components matrix of high precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat3x3 highp_mat3x3; - - /// @} - - /// @addtogroup core_precision - /// @{ - - /// 3 columns of 4 components matrix of low precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat3x4 lowp_mat3x4; - - /// 3 columns of 4 components matrix of medium precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat3x4 mediump_mat3x4; - - /// 3 columns of 4 components matrix of high precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat3x4 highp_mat3x4; - - /// @} - - /// @addtogroup core_precision - /// @{ - - /// 4 columns of 2 components matrix of low precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat4x2 lowp_mat4x2; - - /// 4 columns of 2 components matrix of medium precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat4x2 mediump_mat4x2; - - /// 4 columns of 2 components matrix of high precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat4x2 highp_mat4x2; - - /// @} - - /// @addtogroup core_precision - /// @{ - - /// 4 columns of 3 components matrix of low precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat4x3 lowp_mat4x3; - - /// 4 columns of 3 components matrix of medium precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat4x3 mediump_mat4x3; - - /// 4 columns of 3 components matrix of high precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat4x3 highp_mat4x3; - - /// @} - - - /// @addtogroup core_precision - /// @{ - - /// 4 columns of 4 components matrix of low precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat4x4 lowp_mat4; - - /// 4 columns of 4 components matrix of medium precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat4x4 mediump_mat4; - - /// 4 columns of 4 components matrix of high precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat4x4 highp_mat4; - - /// 4 columns of 4 components matrix of low precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat4x4 lowp_mat4x4; - - /// 4 columns of 4 components matrix of medium precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat4x4 mediump_mat4x4; - - /// 4 columns of 4 components matrix of high precision floating-point numbers. - /// There is no guarantee on the actual precision. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier - typedef detail::tmat4x4 highp_mat4x4; - - /// @} - - /// @addtogroup core_types - /// @{ - - ////////////////////////// - // Float definition - -#if(defined(GLM_PRECISION_HIGHP_FLOAT)) - typedef highp_vec2 vec2; - typedef highp_vec3 vec3; - typedef highp_vec4 vec4; - typedef highp_mat2x2 mat2x2; - typedef highp_mat2x3 mat2x3; - typedef highp_mat2x4 mat2x4; - typedef highp_mat3x2 mat3x2; - typedef highp_mat3x3 mat3x3; - typedef highp_mat3x4 mat3x4; - typedef highp_mat4x2 mat4x2; - typedef highp_mat4x3 mat4x3; - typedef highp_mat4x4 mat4x4; -#elif(defined(GLM_PRECISION_MEDIUMP_FLOAT)) - typedef mediump_vec2 vec2; - typedef mediump_vec3 vec3; - typedef mediump_vec4 vec4; - typedef mediump_mat2x2 mat2x2; - typedef mediump_mat2x3 mat2x3; - typedef mediump_mat2x4 mat2x4; - typedef mediump_mat3x2 mat3x2; - typedef mediump_mat3x3 mat3x3; - typedef mediump_mat3x4 mat3x4; - typedef mediump_mat4x2 mat4x2; - typedef mediump_mat4x3 mat4x3; - typedef mediump_mat4x4 mat4x4; -#elif(defined(GLM_PRECISION_LOWP_FLOAT)) - typedef lowp_vec2 vec2; - typedef lowp_vec3 vec3; - typedef lowp_vec4 vec4; - typedef lowp_mat2x2 mat2x2; - typedef lowp_mat2x3 mat2x3; - typedef lowp_mat2x4 mat2x4; - typedef lowp_mat3x2 mat3x2; - typedef lowp_mat3x3 mat3x3; - typedef lowp_mat3x4 mat3x4; - typedef lowp_mat4x2 mat4x2; - typedef lowp_mat4x3 mat4x3; - typedef lowp_mat4x4 mat4x4; -#else - /// 2 components vector of floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef mediump_vec2 vec2; - - //! 3 components vector of floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef mediump_vec3 vec3; - - //! 4 components vector of floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef mediump_vec4 vec4; - - //! 2 columns of 2 components matrix of floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef mediump_mat2x2 mat2x2; - - //! 2 columns of 3 components matrix of floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef mediump_mat2x3 mat2x3; - - //! 2 columns of 4 components matrix of floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef mediump_mat2x4 mat2x4; - - //! 3 columns of 2 components matrix of floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef mediump_mat3x2 mat3x2; - - //! 3 columns of 3 components matrix of floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef mediump_mat3x3 mat3x3; - - //! 3 columns of 4 components matrix of floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef mediump_mat3x4 mat3x4; - - //! 4 columns of 2 components matrix of floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef mediump_mat4x2 mat4x2; - - //! 4 columns of 3 components matrix of floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef mediump_mat4x3 mat4x3; - - //! 4 columns of 4 components matrix of floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef mediump_mat4x4 mat4x4; - -#endif//GLM_PRECISION - - //! 2 columns of 2 components matrix of floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef mat2x2 mat2; - - //! 3 columns of 3 components matrix of floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef mat3x3 mat3; - - //! 4 columns of 4 components matrix of floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef mat4x4 mat4; - - ////////////////////////// - // Signed integer definition - -#if(defined(GLM_PRECISION_HIGHP_INT)) - typedef highp_ivec2 ivec2; - typedef highp_ivec3 ivec3; - typedef highp_ivec4 ivec4; -#elif(defined(GLM_PRECISION_MEDIUMP_INT)) - typedef mediump_ivec2 ivec2; - typedef mediump_ivec3 ivec3; - typedef mediump_ivec4 ivec4; -#elif(defined(GLM_PRECISION_LOWP_INT)) - typedef lowp_ivec2 ivec2; - typedef lowp_ivec3 ivec3; - typedef lowp_ivec4 ivec4; -#else - //! 2 components vector of signed integer numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef mediump_ivec2 ivec2; - - //! 3 components vector of signed integer numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef mediump_ivec3 ivec3; - - //! 4 components vector of signed integer numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef mediump_ivec4 ivec4; -#endif//GLM_PRECISION - - ////////////////////////// - // Unsigned integer definition - -#if(defined(GLM_PRECISION_HIGHP_UINT)) - typedef highp_uvec2 uvec2; - typedef highp_uvec3 uvec3; - typedef highp_uvec4 uvec4; -#elif(defined(GLM_PRECISION_MEDIUMP_UINT)) - typedef mediump_uvec2 uvec2; - typedef mediump_uvec3 uvec3; - typedef mediump_uvec4 uvec4; -#elif(defined(GLM_PRECISION_LOWP_UINT)) - typedef lowp_uvec2 uvec2; - typedef lowp_uvec3 uvec3; - typedef lowp_uvec4 uvec4; -#else - /// 2 components vector of unsigned integer numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef mediump_uvec2 uvec2; - - /// 3 components vector of unsigned integer numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef mediump_uvec3 uvec3; - - /// 4 components vector of unsigned integer numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef mediump_uvec4 uvec4; -#endif//GLM_PRECISION - - ////////////////////////// - // Boolean definition - - //! 2 components vector of boolean. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef detail::tvec2 bvec2; - - //! 3 components vector of boolean. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef detail::tvec3 bvec3; - - //! 4 components vector of boolean. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef detail::tvec4 bvec4; - - ////////////////////////// - // Double definition - - //! Vector of 2 double-precision floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef detail::tvec2 dvec2; - - //! Vector of 3 double-precision floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef detail::tvec3 dvec3; - - //! Vector of 4 double-precision floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors - typedef detail::tvec4 dvec4; - - //! 2 * 2 matrix of double-precision floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef detail::tmat2x2 dmat2; - - //! 3 * 3 matrix of double-precision floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef detail::tmat3x3 dmat3; - - //! 4 * 4 matrix of double-precision floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef detail::tmat4x4 dmat4; - - //! 2 * 2 matrix of double-precision floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef detail::tmat2x2 dmat2x2; - - //! 2 * 3 matrix of double-precision floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef detail::tmat2x3 dmat2x3; - - //! 2 * 4 matrix of double-precision floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef detail::tmat2x4 dmat2x4; - - //! 3 * 2 matrix of double-precision floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef detail::tmat3x2 dmat3x2; - - /// 3 * 3 matrix of double-precision floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef detail::tmat3x3 dmat3x3; - - /// 3 * 4 matrix of double-precision floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef detail::tmat3x4 dmat3x4; - - /// 4 * 2 matrix of double-precision floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef detail::tmat4x2 dmat4x2; - - /// 4 * 3 matrix of double-precision floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef detail::tmat4x3 dmat4x3; - - /// 4 * 4 matrix of double-precision floating-point numbers. - /// - /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices - typedef detail::tmat4x4 dmat4x4; - - /// @} -}//namespace glm - -#endif//glm_core_type diff --git a/glm/core/type_mat.hpp b/glm/core/type_mat.hpp index e546cd7d..872e296e 100644 --- a/glm/core/type_mat.hpp +++ b/glm/core/type_mat.hpp @@ -34,6 +34,16 @@ namespace glm{ namespace detail { + template struct tmat2x2; + template struct tmat2x3; + template struct tmat2x4; + template struct tmat3x2; + template struct tmat3x3; + template struct tmat3x4; + template struct tmat4x2; + template struct tmat4x3; + template struct tmat4x4; + template struct is_matrix { @@ -55,6 +65,468 @@ namespace detail }; \ } }//namespace detail + + /// @addtogroup core_precision + /// @{ + + /// 2 columns of 2 components matrix of low precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat2x2 lowp_mat2; + + /// 2 columns of 2 components matrix of medium precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat2x2 mediump_mat2; + + /// 2 columns of 2 components matrix of high precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat2x2 highp_mat2; + + /// 2 columns of 2 components matrix of low precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat2x2 lowp_mat2x2; + + /// 2 columns of 2 components matrix of medium precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat2x2 mediump_mat2x2; + + /// 2 columns of 2 components matrix of high precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat2x2 highp_mat2x2; + + /// @} + + /// @addtogroup core_precision + /// @{ + + /// 2 columns of 3 components matrix of low precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat2x3 lowp_mat2x3; + + /// 2 columns of 3 components matrix of medium precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat2x3 mediump_mat2x3; + + /// 2 columns of 3 components matrix of high precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat2x3 highp_mat2x3; + + /// @} + + /// @addtogroup core_precision + /// @{ + + /// 2 columns of 4 components matrix of low precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat2x4 lowp_mat2x4; + + /// 2 columns of 4 components matrix of medium precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat2x4 mediump_mat2x4; + + /// 2 columns of 4 components matrix of high precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat2x4 highp_mat2x4; + + /// @} + + /// @addtogroup core_precision + /// @{ + + /// 3 columns of 2 components matrix of low precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat3x2 lowp_mat3x2; + + /// 3 columns of 2 components matrix of medium precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat3x2 mediump_mat3x2; + + /// 3 columns of 2 components matrix of high precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat3x2 highp_mat3x2; + + /// @} + + /// @addtogroup core_precision + /// @{ + + /// 3 columns of 3 components matrix of low precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat3x3 lowp_mat3; + + /// 3 columns of 3 components matrix of medium precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat3x3 mediump_mat3; + + /// 3 columns of 3 components matrix of high precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat3x3 highp_mat3; + + /// 3 columns of 3 components matrix of low precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat3x3 lowp_mat3x3; + + /// 3 columns of 3 components matrix of medium precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat3x3 mediump_mat3x3; + + /// 3 columns of 3 components matrix of high precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat3x3 highp_mat3x3; + + /// @} + + /// @addtogroup core_precision + /// @{ + + /// 3 columns of 4 components matrix of low precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat3x4 lowp_mat3x4; + + /// 3 columns of 4 components matrix of medium precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat3x4 mediump_mat3x4; + + /// 3 columns of 4 components matrix of high precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat3x4 highp_mat3x4; + + /// @} + + /// @addtogroup core_precision + /// @{ + + /// 4 columns of 2 components matrix of low precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat4x2 lowp_mat4x2; + + /// 4 columns of 2 components matrix of medium precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat4x2 mediump_mat4x2; + + /// 4 columns of 2 components matrix of high precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat4x2 highp_mat4x2; + + /// @} + + /// @addtogroup core_precision + /// @{ + + /// 4 columns of 3 components matrix of low precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat4x3 lowp_mat4x3; + + /// 4 columns of 3 components matrix of medium precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat4x3 mediump_mat4x3; + + /// 4 columns of 3 components matrix of high precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat4x3 highp_mat4x3; + + /// @} + + + /// @addtogroup core_precision + /// @{ + + /// 4 columns of 4 components matrix of low precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat4x4 lowp_mat4; + + /// 4 columns of 4 components matrix of medium precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat4x4 mediump_mat4; + + /// 4 columns of 4 components matrix of high precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat4x4 highp_mat4; + + /// 4 columns of 4 components matrix of low precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat4x4 lowp_mat4x4; + + /// 4 columns of 4 components matrix of medium precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat4x4 mediump_mat4x4; + + /// 4 columns of 4 components matrix of high precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tmat4x4 highp_mat4x4; + + /// @} + + /// @addtogroup core_types + /// @{ + + ////////////////////////// + // Float definition + +#if(defined(GLM_PRECISION_HIGHP_FLOAT)) + typedef highp_mat2x2 mat2x2; + typedef highp_mat2x3 mat2x3; + typedef highp_mat2x4 mat2x4; + typedef highp_mat3x2 mat3x2; + typedef highp_mat3x3 mat3x3; + typedef highp_mat3x4 mat3x4; + typedef highp_mat4x2 mat4x2; + typedef highp_mat4x3 mat4x3; + typedef highp_mat4x4 mat4x4; +#elif(defined(GLM_PRECISION_MEDIUMP_FLOAT)) + typedef mediump_mat2x2 mat2x2; + typedef mediump_mat2x3 mat2x3; + typedef mediump_mat2x4 mat2x4; + typedef mediump_mat3x2 mat3x2; + typedef mediump_mat3x3 mat3x3; + typedef mediump_mat3x4 mat3x4; + typedef mediump_mat4x2 mat4x2; + typedef mediump_mat4x3 mat4x3; + typedef mediump_mat4x4 mat4x4; +#elif(defined(GLM_PRECISION_LOWP_FLOAT)) + typedef lowp_mat2x2 mat2x2; + typedef lowp_mat2x3 mat2x3; + typedef lowp_mat2x4 mat2x4; + typedef lowp_mat3x2 mat3x2; + typedef lowp_mat3x3 mat3x3; + typedef lowp_mat3x4 mat3x4; + typedef lowp_mat4x2 mat4x2; + typedef lowp_mat4x3 mat4x3; + typedef lowp_mat4x4 mat4x4; +#else + //! 2 columns of 2 components matrix of floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef mediump_mat2x2 mat2x2; + + //! 2 columns of 3 components matrix of floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef mediump_mat2x3 mat2x3; + + //! 2 columns of 4 components matrix of floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef mediump_mat2x4 mat2x4; + + //! 3 columns of 2 components matrix of floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef mediump_mat3x2 mat3x2; + + //! 3 columns of 3 components matrix of floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef mediump_mat3x3 mat3x3; + + //! 3 columns of 4 components matrix of floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef mediump_mat3x4 mat3x4; + + //! 4 columns of 2 components matrix of floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef mediump_mat4x2 mat4x2; + + //! 4 columns of 3 components matrix of floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef mediump_mat4x3 mat4x3; + + //! 4 columns of 4 components matrix of floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef mediump_mat4x4 mat4x4; + +#endif//GLM_PRECISION + + //! 2 columns of 2 components matrix of floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef mat2x2 mat2; + + //! 3 columns of 3 components matrix of floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef mat3x3 mat3; + + //! 4 columns of 4 components matrix of floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef mat4x4 mat4; + + ////////////////////////// + // Double definition + + //! 2 * 2 matrix of double-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef detail::tmat2x2 dmat2; + + //! 3 * 3 matrix of double-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef detail::tmat3x3 dmat3; + + //! 4 * 4 matrix of double-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef detail::tmat4x4 dmat4; + + //! 2 * 2 matrix of double-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef detail::tmat2x2 dmat2x2; + + //! 2 * 3 matrix of double-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef detail::tmat2x3 dmat2x3; + + //! 2 * 4 matrix of double-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef detail::tmat2x4 dmat2x4; + + //! 3 * 2 matrix of double-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef detail::tmat3x2 dmat3x2; + + /// 3 * 3 matrix of double-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef detail::tmat3x3 dmat3x3; + + /// 3 * 4 matrix of double-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef detail::tmat3x4 dmat3x4; + + /// 4 * 2 matrix of double-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef detail::tmat4x2 dmat4x2; + + /// 4 * 3 matrix of double-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef detail::tmat4x3 dmat4x3; + + /// 4 * 4 matrix of double-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices + typedef detail::tmat4x4 dmat4x4; + + /// @} }//namespace glm #endif//glm_core_type_mat diff --git a/glm/core/type_vec.hpp b/glm/core/type_vec.hpp index 9f10cab0..20383296 100644 --- a/glm/core/type_vec.hpp +++ b/glm/core/type_vec.hpp @@ -29,11 +29,14 @@ #ifndef glm_core_type_vec #define glm_core_type_vec -#include "type_gentype.hpp" - namespace glm{ namespace detail { + template struct tvec1; + template struct tvec2; + template struct tvec3; + template struct tvec4; + template struct is_vector { @@ -55,6 +58,358 @@ namespace detail }; \ } }//namespace detail + + typedef detail::tvec1 highp_vec1_t; + typedef detail::tvec1 mediump_vec1_t; + typedef detail::tvec1 lowp_vec1_t; + typedef detail::tvec1 highp_ivec1_t; + typedef detail::tvec1 mediump_ivec1_t; + typedef detail::tvec1 lowp_ivec1_t; + typedef detail::tvec1 highp_uvec1_t; + typedef detail::tvec1 mediump_uvec1_t; + typedef detail::tvec1 lowp_uvec1_t; + + /// @addtogroup core_precision + /// @{ + + /// 2 components vector of high precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec2 highp_vec2; + + /// 2 components vector of medium precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec2 mediump_vec2; + + /// 2 components vector of low precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec2 lowp_vec2; + + /// 2 components vector of high precision signed integer numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec2 highp_ivec2; + + /// 2 components vector of medium precision signed integer numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec2 mediump_ivec2; + + /// 2 components vector of low precision signed integer numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec2 lowp_ivec2; + + /// 2 components vector of high precision unsigned integer numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec2 highp_uvec2; + + /// 2 components vector of medium precision unsigned integer numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec2 mediump_uvec2; + + /// 2 components vector of low precision unsigned integer numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec2 lowp_uvec2; + + /// @} + + + /// @addtogroup core_precision + /// @{ + + /// 3 components vector of high precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec3 highp_vec3; + + /// 3 components vector of medium precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec3 mediump_vec3; + + /// 3 components vector of low precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec3 lowp_vec3; + + /// 3 components vector of high precision signed integer numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec3 highp_ivec3; + + /// 3 components vector of medium precision signed integer numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec3 mediump_ivec3; + + /// 3 components vector of low precision signed integer numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec3 lowp_ivec3; + + /// 3 components vector of high precision unsigned integer numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec3 highp_uvec3; + + /// 3 components vector of medium precision unsigned integer numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec3 mediump_uvec3; + + /// 3 components vector of low precision unsigned integer numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec3 lowp_uvec3; + + /// @} + + /// @addtogroup core_precision + /// @{ + + /// 4 components vector of high precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec4 highp_vec4; + + /// 4 components vector of medium precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec4 mediump_vec4; + + /// 4 components vector of low precision floating-point numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec4 lowp_vec4; + + /// 4 components vector of high precision signed integer numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec4 highp_ivec4; + + /// 4 components vector of medium precision signed integer numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec4 mediump_ivec4; + + /// 4 components vector of low precision signed integer numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec4 lowp_ivec4; + + /// 4 components vector of high precision unsigned integer numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec4 highp_uvec4; + + /// 4 components vector of medium precision unsigned integer numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec4 mediump_uvec4; + + /// 4 components vector of low precision unsigned integer numbers. + /// There is no guarantee on the actual precision. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + /// @see GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier + typedef detail::tvec4 lowp_uvec4; + + /// @} + + /// @addtogroup core_types + /// @{ + + ////////////////////////// + // Float definition + +#if(defined(GLM_PRECISION_HIGHP_FLOAT)) + typedef highp_vec2 vec2; + typedef highp_vec3 vec3; + typedef highp_vec4 vec4; +#elif(defined(GLM_PRECISION_MEDIUMP_FLOAT)) + typedef mediump_vec2 vec2; + typedef mediump_vec3 vec3; + typedef mediump_vec4 vec4; +#elif(defined(GLM_PRECISION_LOWP_FLOAT)) + typedef lowp_vec2 vec2; + typedef lowp_vec3 vec3; + typedef lowp_vec4 vec4; +#else + /// 2 components vector of floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef mediump_vec2 vec2; + + //! 3 components vector of floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef mediump_vec3 vec3; + + //! 4 components vector of floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef mediump_vec4 vec4; +#endif//GLM_PRECISION + + ////////////////////////// + // Signed integer definition + +#if(defined(GLM_PRECISION_HIGHP_INT)) + typedef highp_ivec2 ivec2; + typedef highp_ivec3 ivec3; + typedef highp_ivec4 ivec4; +#elif(defined(GLM_PRECISION_MEDIUMP_INT)) + typedef mediump_ivec2 ivec2; + typedef mediump_ivec3 ivec3; + typedef mediump_ivec4 ivec4; +#elif(defined(GLM_PRECISION_LOWP_INT)) + typedef lowp_ivec2 ivec2; + typedef lowp_ivec3 ivec3; + typedef lowp_ivec4 ivec4; +#else + //! 2 components vector of signed integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef mediump_ivec2 ivec2; + + //! 3 components vector of signed integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef mediump_ivec3 ivec3; + + //! 4 components vector of signed integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef mediump_ivec4 ivec4; +#endif//GLM_PRECISION + + ////////////////////////// + // Unsigned integer definition + +#if(defined(GLM_PRECISION_HIGHP_UINT)) + typedef highp_uvec2 uvec2; + typedef highp_uvec3 uvec3; + typedef highp_uvec4 uvec4; +#elif(defined(GLM_PRECISION_MEDIUMP_UINT)) + typedef mediump_uvec2 uvec2; + typedef mediump_uvec3 uvec3; + typedef mediump_uvec4 uvec4; +#elif(defined(GLM_PRECISION_LOWP_UINT)) + typedef lowp_uvec2 uvec2; + typedef lowp_uvec3 uvec3; + typedef lowp_uvec4 uvec4; +#else + /// 2 components vector of unsigned integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef mediump_uvec2 uvec2; + + /// 3 components vector of unsigned integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef mediump_uvec3 uvec3; + + /// 4 components vector of unsigned integer numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef mediump_uvec4 uvec4; +#endif//GLM_PRECISION + + ////////////////////////// + // Boolean definition + + //! 2 components vector of boolean. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef detail::tvec2 bvec2; + + //! 3 components vector of boolean. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef detail::tvec3 bvec3; + + //! 4 components vector of boolean. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef detail::tvec4 bvec4; + + ////////////////////////// + // Double definition + + //! Vector of 2 double-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef detail::tvec2 dvec2; + + //! Vector of 3 double-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef detail::tvec3 dvec3; + + //! Vector of 4 double-precision floating-point numbers. + /// + /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors + typedef detail::tvec4 dvec4; + + /// @} }//namespace glm #endif//glm_core_type_vec diff --git a/glm/fwd.hpp b/glm/fwd.hpp index c477e463..e24a48fe 100644 --- a/glm/fwd.hpp +++ b/glm/fwd.hpp @@ -22,7 +22,7 @@ /// /// @ref core /// @file glm/fwd.hpp -/// @date 2013-03-30 / 2013-03-30 +/// @date 2013-03-30 / 2013-03-31 /// @author Christophe Riccio /////////////////////////////////////////////////////////////////////////////////// @@ -31,7 +31,8 @@ #include "core/type_int.hpp" #include "core/type_float.hpp" -#include "core/type.hpp" +#include "core/type_vec.hpp" +#include "core/type_mat.hpp" namespace glm { diff --git a/glm/glm.hpp b/glm/glm.hpp index 0a92996e..95285a77 100644 --- a/glm/glm.hpp +++ b/glm/glm.hpp @@ -101,8 +101,6 @@ #include "./core/type_float.hpp" #include "./core/type_int.hpp" -#include "./core/type.hpp" - #include "./core/type_vec1.hpp" #include "./core/type_vec2.hpp" #include "./core/type_vec3.hpp"