1 /////////////////////////////////////////////////////////////////////////////////// 2 /// OpenGL Mathematics (glm.g-truc.net) 3 /// 4 /// Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 5 /// Permission is hereby granted, free of charge, to any person obtaining a copy 6 /// of this software and associated documentation files (the "Software"), to deal 7 /// in the Software without restriction, including without limitation the rights 8 /// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 /// copies of the Software, and to permit persons to whom the Software is 10 /// furnished to do so, subject to the following conditions: 11 /// 12 /// The above copyright notice and this permission notice shall be included in 13 /// all copies or substantial portions of the Software. 14 /// 15 /// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 /// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 /// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 /// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 /// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 /// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 /// THE SOFTWARE. 22 /// 23 /// @ref core 24 /// @file glm/core/type_mat.hpp 25 /// @date 2010-01-26 / 2011-06-15 26 /// @author Christophe Riccio 27 /////////////////////////////////////////////////////////////////////////////////// 28 29 #ifndef glm_core_type_mat 30 #define glm_core_type_mat 31 32 #include "precision.hpp" 33 34 namespace glm{ 35 namespace detail 36 { 37 template <typename T, precision P> struct tvec2; 38 template <typename T, precision P> struct tvec3; 39 template <typename T, precision P> struct tvec4; 40 template <typename T, precision P> struct tmat2x2; 41 template <typename T, precision P> struct tmat2x3; 42 template <typename T, precision P> struct tmat2x4; 43 template <typename T, precision P> struct tmat3x2; 44 template <typename T, precision P> struct tmat3x3; 45 template <typename T, precision P> struct tmat3x4; 46 template <typename T, precision P> struct tmat4x2; 47 template <typename T, precision P> struct tmat4x3; 48 template <typename T, precision P> struct tmat4x4; 49 50 template <typename T, precision P, template <class, precision> class colType, template <class, precision> class rowType> 51 struct outerProduct_trait{}; 52 53 template <template <class, precision> class matType, typename T, precision P> 54 struct compute_inverse{}; 55 }//namespace detail 56 57 /// @addtogroup core_precision 58 /// @{ 59 60 /// 2 columns of 2 components matrix of low precision floating-point numbers. 61 /// There is no guarantee on the actual precision. 62 /// 63 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 64 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 65 typedef detail::tmat2x2<float, lowp> lowp_mat2; 66 67 /// 2 columns of 2 components matrix of medium precision floating-point numbers. 68 /// There is no guarantee on the actual precision. 69 /// 70 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 71 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 72 typedef detail::tmat2x2<float, mediump> mediump_mat2; 73 74 /// 2 columns of 2 components matrix of high precision floating-point numbers. 75 /// There is no guarantee on the actual precision. 76 /// 77 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 78 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 79 typedef detail::tmat2x2<float, highp> highp_mat2; 80 81 /// 2 columns of 2 components matrix of low precision floating-point numbers. 82 /// There is no guarantee on the actual precision. 83 /// 84 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 85 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 86 typedef detail::tmat2x2<float, lowp> lowp_mat2x2; 87 88 /// 2 columns of 2 components matrix of medium precision floating-point numbers. 89 /// There is no guarantee on the actual precision. 90 /// 91 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 92 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 93 typedef detail::tmat2x2<float, mediump> mediump_mat2x2; 94 95 /// 2 columns of 2 components matrix of high precision floating-point numbers. 96 /// There is no guarantee on the actual precision. 97 /// 98 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 99 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 100 typedef detail::tmat2x2<float, highp> highp_mat2x2; 101 102 /// @} 103 104 /// @addtogroup core_precision 105 /// @{ 106 107 /// 2 columns of 3 components matrix of low precision floating-point numbers. 108 /// There is no guarantee on the actual precision. 109 /// 110 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 111 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 112 typedef detail::tmat2x3<float, lowp> lowp_mat2x3; 113 114 /// 2 columns of 3 components matrix of medium precision floating-point numbers. 115 /// There is no guarantee on the actual precision. 116 /// 117 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 118 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 119 typedef detail::tmat2x3<float, mediump> mediump_mat2x3; 120 121 /// 2 columns of 3 components matrix of high precision floating-point numbers. 122 /// There is no guarantee on the actual precision. 123 /// 124 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 125 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 126 typedef detail::tmat2x3<float, highp> highp_mat2x3; 127 128 /// @} 129 130 /// @addtogroup core_precision 131 /// @{ 132 133 /// 2 columns of 4 components matrix of low precision floating-point numbers. 134 /// There is no guarantee on the actual precision. 135 /// 136 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 137 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 138 typedef detail::tmat2x4<float, lowp> lowp_mat2x4; 139 140 /// 2 columns of 4 components matrix of medium precision floating-point numbers. 141 /// There is no guarantee on the actual precision. 142 /// 143 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 144 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 145 typedef detail::tmat2x4<float, mediump> mediump_mat2x4; 146 147 /// 2 columns of 4 components matrix of high precision floating-point numbers. 148 /// There is no guarantee on the actual precision. 149 /// 150 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 151 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 152 typedef detail::tmat2x4<float, highp> highp_mat2x4; 153 154 /// @} 155 156 /// @addtogroup core_precision 157 /// @{ 158 159 /// 3 columns of 2 components matrix of low precision floating-point numbers. 160 /// There is no guarantee on the actual precision. 161 /// 162 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 163 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 164 typedef detail::tmat3x2<float, lowp> lowp_mat3x2; 165 166 /// 3 columns of 2 components matrix of medium precision floating-point numbers. 167 /// There is no guarantee on the actual precision. 168 /// 169 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 170 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 171 typedef detail::tmat3x2<float, mediump> mediump_mat3x2; 172 173 /// 3 columns of 2 components matrix of high precision floating-point numbers. 174 /// There is no guarantee on the actual precision. 175 /// 176 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 177 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 178 typedef detail::tmat3x2<float, highp> highp_mat3x2; 179 180 /// @} 181 182 /// @addtogroup core_precision 183 /// @{ 184 185 /// 3 columns of 3 components matrix of low precision floating-point numbers. 186 /// There is no guarantee on the actual precision. 187 /// 188 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 189 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 190 typedef detail::tmat3x3<float, lowp> lowp_mat3; 191 192 /// 3 columns of 3 components matrix of medium precision floating-point numbers. 193 /// There is no guarantee on the actual precision. 194 /// 195 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 196 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 197 typedef detail::tmat3x3<float, mediump> mediump_mat3; 198 199 /// 3 columns of 3 components matrix of high precision floating-point numbers. 200 /// There is no guarantee on the actual precision. 201 /// 202 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 203 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 204 typedef detail::tmat3x3<float, highp> highp_mat3; 205 206 /// 3 columns of 3 components matrix of low precision floating-point numbers. 207 /// There is no guarantee on the actual precision. 208 /// 209 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 210 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 211 typedef detail::tmat3x3<float, lowp> lowp_mat3x3; 212 213 /// 3 columns of 3 components matrix of medium precision floating-point numbers. 214 /// There is no guarantee on the actual precision. 215 /// 216 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 217 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 218 typedef detail::tmat3x3<float, mediump> mediump_mat3x3; 219 220 /// 3 columns of 3 components matrix of high precision floating-point numbers. 221 /// There is no guarantee on the actual precision. 222 /// 223 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 224 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 225 typedef detail::tmat3x3<float, highp> highp_mat3x3; 226 227 /// @} 228 229 /// @addtogroup core_precision 230 /// @{ 231 232 /// 3 columns of 4 components matrix of low precision floating-point numbers. 233 /// There is no guarantee on the actual precision. 234 /// 235 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 236 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 237 typedef detail::tmat3x4<float, lowp> lowp_mat3x4; 238 239 /// 3 columns of 4 components matrix of medium precision floating-point numbers. 240 /// There is no guarantee on the actual precision. 241 /// 242 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 243 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 244 typedef detail::tmat3x4<float, mediump> mediump_mat3x4; 245 246 /// 3 columns of 4 components matrix of high precision floating-point numbers. 247 /// There is no guarantee on the actual precision. 248 /// 249 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 250 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 251 typedef detail::tmat3x4<float, highp> highp_mat3x4; 252 253 /// @} 254 255 /// @addtogroup core_precision 256 /// @{ 257 258 /// 4 columns of 2 components matrix of low precision floating-point numbers. 259 /// There is no guarantee on the actual precision. 260 /// 261 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 262 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 263 typedef detail::tmat4x2<float, lowp> lowp_mat4x2; 264 265 /// 4 columns of 2 components matrix of medium precision floating-point numbers. 266 /// There is no guarantee on the actual precision. 267 /// 268 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 269 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 270 typedef detail::tmat4x2<float, mediump> mediump_mat4x2; 271 272 /// 4 columns of 2 components matrix of high precision floating-point numbers. 273 /// There is no guarantee on the actual precision. 274 /// 275 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 276 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 277 typedef detail::tmat4x2<float, highp> highp_mat4x2; 278 279 /// @} 280 281 /// @addtogroup core_precision 282 /// @{ 283 284 /// 4 columns of 3 components matrix of low precision floating-point numbers. 285 /// There is no guarantee on the actual precision. 286 /// 287 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 288 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 289 typedef detail::tmat4x3<float, lowp> lowp_mat4x3; 290 291 /// 4 columns of 3 components matrix of medium precision floating-point numbers. 292 /// There is no guarantee on the actual precision. 293 /// 294 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 295 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 296 typedef detail::tmat4x3<float, mediump> mediump_mat4x3; 297 298 /// 4 columns of 3 components matrix of high precision floating-point numbers. 299 /// There is no guarantee on the actual precision. 300 /// 301 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 302 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 303 typedef detail::tmat4x3<float, highp> highp_mat4x3; 304 305 /// @} 306 307 308 /// @addtogroup core_precision 309 /// @{ 310 311 /// 4 columns of 4 components matrix of low precision floating-point numbers. 312 /// There is no guarantee on the actual precision. 313 /// 314 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 315 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 316 typedef detail::tmat4x4<float, lowp> lowp_mat4; 317 318 /// 4 columns of 4 components matrix of medium precision floating-point numbers. 319 /// There is no guarantee on the actual precision. 320 /// 321 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 322 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 323 typedef detail::tmat4x4<float, mediump> mediump_mat4; 324 325 /// 4 columns of 4 components matrix of high precision floating-point numbers. 326 /// There is no guarantee on the actual precision. 327 /// 328 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 329 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 330 typedef detail::tmat4x4<float, highp> highp_mat4; 331 332 /// 4 columns of 4 components matrix of low precision floating-point numbers. 333 /// There is no guarantee on the actual precision. 334 /// 335 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 336 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 337 typedef detail::tmat4x4<float, lowp> lowp_mat4x4; 338 339 /// 4 columns of 4 components matrix of medium precision floating-point numbers. 340 /// There is no guarantee on the actual precision. 341 /// 342 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 343 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 344 typedef detail::tmat4x4<float, mediump> mediump_mat4x4; 345 346 /// 4 columns of 4 components matrix of high precision floating-point numbers. 347 /// There is no guarantee on the actual precision. 348 /// 349 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 350 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 351 typedef detail::tmat4x4<float, highp> highp_mat4x4; 352 353 /// @} 354 355 /// @addtogroup core_types 356 /// @{ 357 358 ////////////////////////// 359 // Float definition 360 361 #if(defined(GLM_PRECISION_LOWP_FLOAT)) 362 typedef lowp_mat2x2 mat2x2; 363 typedef lowp_mat2x3 mat2x3; 364 typedef lowp_mat2x4 mat2x4; 365 typedef lowp_mat3x2 mat3x2; 366 typedef lowp_mat3x3 mat3x3; 367 typedef lowp_mat3x4 mat3x4; 368 typedef lowp_mat4x2 mat4x2; 369 typedef lowp_mat4x3 mat4x3; 370 typedef lowp_mat4x4 mat4x4; 371 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT)) 372 typedef mediump_mat2x2 mat2x2; 373 typedef mediump_mat2x3 mat2x3; 374 typedef mediump_mat2x4 mat2x4; 375 typedef mediump_mat3x2 mat3x2; 376 typedef mediump_mat3x3 mat3x3; 377 typedef mediump_mat3x4 mat3x4; 378 typedef mediump_mat4x2 mat4x2; 379 typedef mediump_mat4x3 mat4x3; 380 typedef mediump_mat4x4 mat4x4; 381 #else 382 //! 2 columns of 2 components matrix of floating-point numbers. 383 /// 384 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 385 typedef highp_mat2x2 mat2x2; 386 387 //! 2 columns of 3 components matrix of floating-point numbers. 388 /// 389 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 390 typedef highp_mat2x3 mat2x3; 391 392 //! 2 columns of 4 components matrix of floating-point numbers. 393 /// 394 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 395 typedef highp_mat2x4 mat2x4; 396 397 //! 3 columns of 2 components matrix of floating-point numbers. 398 /// 399 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 400 typedef highp_mat3x2 mat3x2; 401 402 //! 3 columns of 3 components matrix of floating-point numbers. 403 /// 404 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 405 typedef highp_mat3x3 mat3x3; 406 407 //! 3 columns of 4 components matrix of floating-point numbers. 408 /// 409 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 410 typedef highp_mat3x4 mat3x4; 411 412 //! 4 columns of 2 components matrix of floating-point numbers. 413 /// 414 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 415 typedef highp_mat4x2 mat4x2; 416 417 //! 4 columns of 3 components matrix of floating-point numbers. 418 /// 419 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 420 typedef highp_mat4x3 mat4x3; 421 422 //! 4 columns of 4 components matrix of floating-point numbers. 423 /// 424 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 425 typedef highp_mat4x4 mat4x4; 426 427 #endif//GLM_PRECISION 428 429 //! 2 columns of 2 components matrix of floating-point numbers. 430 /// 431 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 432 typedef mat2x2 mat2; 433 434 //! 3 columns of 3 components matrix of floating-point numbers. 435 /// 436 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 437 typedef mat3x3 mat3; 438 439 //! 4 columns of 4 components matrix of floating-point numbers. 440 /// 441 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 442 typedef mat4x4 mat4; 443 444 ////////////////////////// 445 // Double definition 446 447 /// @addtogroup core_precision 448 /// @{ 449 450 /// 2 columns of 2 components matrix of low precision floating-point numbers. 451 /// 452 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 453 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 454 typedef detail::tmat2x2<double, lowp> lowp_dmat2; 455 456 /// 2 columns of 2 components matrix of medium precision floating-point numbers. 457 /// 458 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 459 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 460 typedef detail::tmat2x2<double, mediump> mediump_dmat2; 461 462 /// 2 columns of 2 components matrix of high precision floating-point numbers. 463 /// 464 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 465 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 466 typedef detail::tmat2x2<double, highp> highp_dmat2; 467 468 /// 2 columns of 2 components matrix of low precision floating-point numbers. 469 /// 470 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 471 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 472 typedef detail::tmat2x2<double, lowp> lowp_dmat2x2; 473 474 /// 2 columns of 2 components matrix of medium precision floating-point numbers. 475 /// 476 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 477 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 478 typedef detail::tmat2x2<double, mediump> mediump_dmat2x2; 479 480 /// 2 columns of 2 components matrix of high precision floating-point numbers. 481 /// 482 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 483 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 484 typedef detail::tmat2x2<double, highp> highp_dmat2x2; 485 486 /// @} 487 488 /// @addtogroup core_precision 489 /// @{ 490 491 /// 2 columns of 3 components matrix of low precision floating-point numbers. 492 /// 493 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 494 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 495 typedef detail::tmat2x3<double, lowp> lowp_dmat2x3; 496 497 /// 2 columns of 3 components matrix of medium precision floating-point numbers. 498 /// 499 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 500 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 501 typedef detail::tmat2x3<double, mediump> mediump_dmat2x3; 502 503 /// 2 columns of 3 components matrix of high precision floating-point numbers. 504 /// 505 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 506 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 507 typedef detail::tmat2x3<double, highp> highp_dmat2x3; 508 509 /// @} 510 511 /// @addtogroup core_precision 512 /// @{ 513 514 /// 2 columns of 4 components matrix of low precision floating-point numbers. 515 /// 516 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 517 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 518 typedef detail::tmat2x4<double, lowp> lowp_dmat2x4; 519 520 /// 2 columns of 4 components matrix of medium precision floating-point numbers. 521 /// 522 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 523 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 524 typedef detail::tmat2x4<double, mediump> mediump_dmat2x4; 525 526 /// 2 columns of 4 components matrix of high precision floating-point numbers. 527 /// 528 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 529 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 530 typedef detail::tmat2x4<double, highp> highp_dmat2x4; 531 532 /// @} 533 534 /// @addtogroup core_precision 535 /// @{ 536 537 /// 3 columns of 2 components matrix of low precision floating-point numbers. 538 /// 539 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 540 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 541 typedef detail::tmat3x2<double, lowp> lowp_dmat3x2; 542 543 /// 3 columns of 2 components matrix of medium precision floating-point numbers. 544 /// 545 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 546 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 547 typedef detail::tmat3x2<double, mediump> mediump_dmat3x2; 548 549 /// 3 columns of 2 components matrix of high precision floating-point numbers. 550 /// 551 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 552 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 553 typedef detail::tmat3x2<double, highp> highp_dmat3x2; 554 555 /// @} 556 557 /// @addtogroup core_precision 558 /// @{ 559 560 /// 3 columns of 3 components matrix of low precision floating-point numbers. 561 /// 562 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 563 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 564 typedef detail::tmat3x3<float, lowp> lowp_dmat3; 565 566 /// 3 columns of 3 components matrix of medium precision floating-point numbers. 567 /// 568 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 569 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 570 typedef detail::tmat3x3<double, mediump> mediump_dmat3; 571 572 /// 3 columns of 3 components matrix of high precision floating-point numbers. 573 /// 574 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 575 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 576 typedef detail::tmat3x3<double, highp> highp_dmat3; 577 578 /// 3 columns of 3 components matrix of low precision floating-point numbers. 579 /// 580 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 581 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 582 typedef detail::tmat3x3<double, lowp> lowp_dmat3x3; 583 584 /// 3 columns of 3 components matrix of medium precision floating-point numbers. 585 /// 586 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 587 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 588 typedef detail::tmat3x3<double, mediump> mediump_dmat3x3; 589 590 /// 3 columns of 3 components matrix of high precision floating-point numbers. 591 /// 592 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 593 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 594 typedef detail::tmat3x3<double, highp> highp_dmat3x3; 595 596 /// @} 597 598 /// @addtogroup core_precision 599 /// @{ 600 601 /// 3 columns of 4 components matrix of low precision floating-point numbers. 602 /// 603 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 604 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 605 typedef detail::tmat3x4<double, lowp> lowp_dmat3x4; 606 607 /// 3 columns of 4 components matrix of medium precision floating-point numbers. 608 /// 609 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 610 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 611 typedef detail::tmat3x4<double, mediump> mediump_dmat3x4; 612 613 /// 3 columns of 4 components matrix of high precision floating-point numbers. 614 /// 615 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 616 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 617 typedef detail::tmat3x4<double, highp> highp_dmat3x4; 618 619 /// @} 620 621 /// @addtogroup core_precision 622 /// @{ 623 624 /// 4 columns of 2 components matrix of low precision floating-point numbers. 625 /// 626 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 627 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 628 typedef detail::tmat4x2<double, lowp> lowp_dmat4x2; 629 630 /// 4 columns of 2 components matrix of medium precision floating-point numbers. 631 /// 632 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 633 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 634 typedef detail::tmat4x2<double, mediump> mediump_dmat4x2; 635 636 /// 4 columns of 2 components matrix of high precision floating-point numbers. 637 /// 638 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 639 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 640 typedef detail::tmat4x2<double, highp> highp_dmat4x2; 641 642 /// @} 643 644 /// @addtogroup core_precision 645 /// @{ 646 647 /// 4 columns of 3 components matrix of low precision floating-point numbers. 648 /// 649 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 650 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 651 typedef detail::tmat4x3<double, lowp> lowp_dmat4x3; 652 653 /// 4 columns of 3 components matrix of medium precision floating-point numbers. 654 /// 655 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 656 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 657 typedef detail::tmat4x3<double, mediump> mediump_dmat4x3; 658 659 /// 4 columns of 3 components matrix of high precision floating-point numbers. 660 /// 661 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 662 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 663 typedef detail::tmat4x3<double, highp> highp_dmat4x3; 664 665 /// @} 666 667 /// @addtogroup core_precision 668 /// @{ 669 670 /// 4 columns of 4 components matrix of low precision floating-point numbers. 671 /// 672 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 673 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 674 typedef detail::tmat4x4<double, lowp> lowp_dmat4; 675 676 /// 4 columns of 4 components matrix of medium precision floating-point numbers. 677 /// 678 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 679 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 680 typedef detail::tmat4x4<double, mediump> mediump_dmat4; 681 682 /// 4 columns of 4 components matrix of high precision floating-point numbers. 683 /// 684 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 685 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 686 typedef detail::tmat4x4<double, highp> highp_dmat4; 687 688 /// 4 columns of 4 components matrix of low precision floating-point numbers. 689 /// 690 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 691 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 692 typedef detail::tmat4x4<double, lowp> lowp_dmat4x4; 693 694 /// 4 columns of 4 components matrix of medium precision floating-point numbers. 695 /// 696 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 697 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 698 typedef detail::tmat4x4<double, mediump> mediump_dmat4x4; 699 700 /// 4 columns of 4 components matrix of high precision floating-point numbers. 701 /// 702 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 703 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a> 704 typedef detail::tmat4x4<double, highp> highp_dmat4x4; 705 706 /// @} 707 708 #if(defined(GLM_PRECISION_LOWP_DOUBLE)) 709 typedef lowp_dmat2x2 dmat2x2; 710 typedef lowp_dmat2x3 dmat2x3; 711 typedef lowp_dmat2x4 dmat2x4; 712 typedef lowp_dmat3x2 dmat3x2; 713 typedef lowp_dmat3x3 dmat3x3; 714 typedef lowp_dmat3x4 dmat3x4; 715 typedef lowp_dmat4x2 dmat4x2; 716 typedef lowp_dmat4x3 dmat4x3; 717 typedef lowp_dmat4x4 dmat4x4; 718 #elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE)) 719 typedef mediump_dmat2x2 dmat2x2; 720 typedef mediump_dmat2x3 dmat2x3; 721 typedef mediump_dmat2x4 dmat2x4; 722 typedef mediump_dmat3x2 dmat3x2; 723 typedef mediump_dmat3x3 dmat3x3; 724 typedef mediump_dmat3x4 dmat3x4; 725 typedef mediump_dmat4x2 dmat4x2; 726 typedef mediump_dmat4x3 dmat4x3; 727 typedef mediump_dmat4x4 dmat4x4; 728 #else //defined(GLM_PRECISION_HIGHP_DOUBLE) 729 730 //! 2 * 2 matrix of double-precision floating-point numbers. 731 /// 732 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 733 typedef highp_dmat2x2 dmat2; 734 735 //! 3 * 3 matrix of double-precision floating-point numbers. 736 /// 737 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 738 typedef highp_dmat3x3 dmat3; 739 740 //! 4 * 4 matrix of double-precision floating-point numbers. 741 /// 742 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 743 typedef highp_dmat4x4 dmat4; 744 745 //! 2 * 2 matrix of double-precision floating-point numbers. 746 /// 747 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 748 typedef highp_dmat2x2 dmat2x2; 749 750 //! 2 * 3 matrix of double-precision floating-point numbers. 751 /// 752 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 753 typedef highp_dmat2x3 dmat2x3; 754 755 //! 2 * 4 matrix of double-precision floating-point numbers. 756 /// 757 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 758 typedef highp_dmat2x4 dmat2x4; 759 760 //! 3 * 2 matrix of double-precision floating-point numbers. 761 /// 762 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 763 typedef highp_dmat3x2 dmat3x2; 764 765 /// 3 * 3 matrix of double-precision floating-point numbers. 766 /// 767 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 768 typedef highp_dmat3x3 dmat3x3; 769 770 /// 3 * 4 matrix of double-precision floating-point numbers. 771 /// 772 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 773 typedef highp_dmat3x4 dmat3x4; 774 775 /// 4 * 2 matrix of double-precision floating-point numbers. 776 /// 777 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 778 typedef highp_dmat4x2 dmat4x2; 779 780 /// 4 * 3 matrix of double-precision floating-point numbers. 781 /// 782 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 783 typedef highp_dmat4x3 dmat4x3; 784 785 /// 4 * 4 matrix of double-precision floating-point numbers. 786 /// 787 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a> 788 typedef highp_dmat4x4 dmat4x4; 789 790 #endif//GLM_PRECISION 791 792 /// @} 793 }//namespace glm 794 795 #endif//glm_core_type_mat 796