Home | History | Annotate | Download | only in glm
      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/fwd.hpp
     25 /// @date 2013-03-30 / 2013-03-31
     26 /// @author Christophe Riccio
     27 ///////////////////////////////////////////////////////////////////////////////////
     28 
     29 #ifndef GLM_FWD_INCLUDED
     30 #define GLM_FWD_INCLUDED
     31 
     32 #include "detail/type_int.hpp"
     33 #include "detail/type_float.hpp"
     34 #include "detail/type_vec.hpp"
     35 #include "detail/type_mat.hpp"
     36 
     37 //////////////////////
     38 // GLM_GTC_quaternion
     39 namespace glm{
     40 namespace detail
     41 {
     42 	template <typename T, precision P> struct tquat;
     43 }//namespace detail
     44 
     45 
     46 	/// Quaternion of low single-precision floating-point numbers.
     47 	///
     48 	/// @see gtc_quaternion
     49 	typedef detail::tquat<float, lowp>		lowp_quat;
     50 
     51 	/// Quaternion of medium single-precision floating-point numbers.
     52 	///
     53 	/// @see gtc_quaternion
     54 	typedef detail::tquat<float, mediump>	mediump_quat;
     55 
     56 	/// Quaternion of high single-precision floating-point numbers.
     57 	///
     58 	/// @see gtc_quaternion
     59 	typedef detail::tquat<float, highp>		highp_quat;
     60 
     61 #if(defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
     62 	typedef highp_quat			quat;
     63 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
     64 	typedef mediump_quat		quat;
     65 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && defined(GLM_PRECISION_LOWP_FLOAT))
     66 	typedef lowp_quat			quat;
     67 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
     68 	/// Quaternion of default single-precision floating-point numbers.
     69 	typedef highp_quat			quat;
     70 #endif
     71 
     72 	/// Quaternion of low single-precision floating-point numbers.
     73 	///
     74 	/// @see gtc_quaternion
     75 	typedef lowp_quat			lowp_fquat;
     76 
     77 	/// Quaternion of medium single-precision floating-point numbers.
     78 	///
     79 	/// @see gtc_quaternion
     80 	typedef mediump_quat		mediump_fquat;
     81 
     82 	/// Quaternion of high single-precision floating-point numbers.
     83 	///
     84 	/// @see gtc_quaternion
     85 	typedef highp_quat			highp_fquat;
     86 
     87 	/// Quaternion of default single-precision floating-point numbers.
     88 	///
     89 	/// @see gtc_quaternion
     90 	typedef quat				fquat;
     91 
     92 
     93 	/// Quaternion of low double-precision floating-point numbers.
     94 	///
     95 	/// @see gtc_quaternion
     96 	typedef detail::tquat<double, lowp>		lowp_dquat;
     97 
     98 	/// Quaternion of medium double-precision floating-point numbers.
     99 	///
    100 	/// @see gtc_quaternion
    101 	typedef detail::tquat<double, mediump>	mediump_dquat;
    102 
    103 	/// Quaternion of high double-precision floating-point numbers.
    104 	///
    105 	/// @see gtc_quaternion
    106 	typedef detail::tquat<double, highp>	highp_dquat;
    107 
    108 #if(defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
    109 	typedef highp_dquat			dquat;
    110 #elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
    111 	typedef mediump_dquat		dquat;
    112 #elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && defined(GLM_PRECISION_LOWP_DOUBLE))
    113 	typedef lowp_dquat			dquat;
    114 #elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
    115 	/// Quaternion of default double-precision floating-point numbers.
    116 	///
    117 	/// @see gtc_quaternion
    118 	typedef highp_dquat			dquat;
    119 #endif
    120 
    121 }//namespace glm
    122 
    123 //////////////////////
    124 // GLM_GTC_precision
    125 namespace glm
    126 {
    127 	/// @addtogroup gtc_type_precision
    128 	/// @{
    129 
    130 	/// Low precision 8 bit signed integer type.
    131 	/// @see gtc_type_precision
    132 	typedef detail::int8 lowp_int8;
    133 
    134 	/// Low precision 16 bit signed integer type.
    135 	/// @see gtc_type_precision
    136 	typedef detail::int16 lowp_int16;
    137 
    138 	/// Low precision 32 bit signed integer type.
    139 	/// @see gtc_type_precision
    140 	typedef detail::int32 lowp_int32;
    141 
    142 	/// Low precision 64 bit signed integer type.
    143 	/// @see gtc_type_precision
    144 	typedef detail::int64 lowp_int64;
    145 
    146 	/// Low precision 8 bit signed integer type.
    147 	/// @see gtc_type_precision
    148 	typedef detail::int8 lowp_int8_t;
    149 
    150 	/// Low precision 16 bit signed integer type.
    151 	/// @see gtc_type_precision
    152 	typedef detail::int16 lowp_int16_t;
    153 
    154 	/// Low precision 32 bit signed integer type.
    155 	/// @see gtc_type_precision
    156 	typedef detail::int32 lowp_int32_t;
    157 
    158 	/// Low precision 64 bit signed integer type.
    159 	/// @see gtc_type_precision
    160 	typedef detail::int64 lowp_int64_t;
    161 
    162 	/// Low precision 8 bit signed integer type.
    163 	/// @see gtc_type_precision
    164 	typedef detail::int8 lowp_i8;
    165 
    166 	/// Low precision 16 bit signed integer type.
    167 	/// @see gtc_type_precision
    168 	typedef detail::int16 lowp_i16;
    169 
    170 	/// Low precision 32 bit signed integer type.
    171 	/// @see gtc_type_precision
    172 	typedef detail::int32 lowp_i32;
    173 
    174 	/// Low precision 64 bit signed integer type.
    175 	/// @see gtc_type_precision
    176 	typedef detail::int64 lowp_i64;
    177 
    178 	/// Medium precision 8 bit signed integer type.
    179 	/// @see gtc_type_precision
    180 	typedef detail::int8 mediump_int8;
    181 
    182 	/// Medium precision 16 bit signed integer type.
    183 	/// @see gtc_type_precision
    184 	typedef detail::int16 mediump_int16;
    185 
    186 	/// Medium precision 32 bit signed integer type.
    187 	/// @see gtc_type_precision
    188 	typedef detail::int32 mediump_int32;
    189 
    190 	/// Medium precision 64 bit signed integer type.
    191 	/// @see gtc_type_precision
    192 	typedef detail::int64 mediump_int64;
    193 
    194 	/// Medium precision 8 bit signed integer type.
    195 	/// @see gtc_type_precision
    196 	typedef detail::int8 mediump_int8_t;
    197 
    198 	/// Medium precision 16 bit signed integer type.
    199 	/// @see gtc_type_precision
    200 	typedef detail::int16 mediump_int16_t;
    201 
    202 	/// Medium precision 32 bit signed integer type.
    203 	/// @see gtc_type_precision
    204 	typedef detail::int32 mediump_int32_t;
    205 
    206 	/// Medium precision 64 bit signed integer type.
    207 	/// @see gtc_type_precision
    208 	typedef detail::int64 mediump_int64_t;
    209 
    210 	/// Medium precision 8 bit signed integer type.
    211 	/// @see gtc_type_precision
    212 	typedef detail::int8 mediump_i8;
    213 
    214 	/// Medium precision 16 bit signed integer type.
    215 	/// @see gtc_type_precision
    216 	typedef detail::int16 mediump_i16;
    217 
    218 	/// Medium precision 32 bit signed integer type.
    219 	/// @see gtc_type_precision
    220 	typedef detail::int32 mediump_i32;
    221 
    222 	/// Medium precision 64 bit signed integer type.
    223 	/// @see gtc_type_precision
    224 	typedef detail::int64 mediump_i64;
    225 
    226 	/// High precision 8 bit signed integer type.
    227 	/// @see gtc_type_precision
    228 	typedef detail::int8 highp_int8;
    229 
    230 	/// High precision 16 bit signed integer type.
    231 	/// @see gtc_type_precision
    232 	typedef detail::int16 highp_int16;
    233 
    234 	/// High precision 32 bit signed integer type.
    235 	/// @see gtc_type_precision
    236 	typedef detail::int32 highp_int32;
    237 
    238 	/// High precision 64 bit signed integer type.
    239 	/// @see gtc_type_precision
    240 	typedef detail::int64 highp_int64;
    241 
    242 	/// High precision 8 bit signed integer type.
    243 	/// @see gtc_type_precision
    244 	typedef detail::int8 highp_int8_t;
    245 
    246 	/// High precision 16 bit signed integer type.
    247 	/// @see gtc_type_precision
    248 	typedef detail::int16 highp_int16_t;
    249 
    250 	/// 32 bit signed integer type.
    251 	/// @see gtc_type_precision
    252 	typedef detail::int32 highp_int32_t;
    253 
    254 	/// High precision 64 bit signed integer type.
    255 	/// @see gtc_type_precision
    256 	typedef detail::int64 highp_int64_t;
    257 
    258 	/// High precision 8 bit signed integer type.
    259 	/// @see gtc_type_precision
    260 	typedef detail::int8 highp_i8;
    261 
    262 	/// High precision 16 bit signed integer type.
    263 	/// @see gtc_type_precision
    264 	typedef detail::int16 highp_i16;
    265 
    266 	/// High precision 32 bit signed integer type.
    267 	/// @see gtc_type_precision
    268 	typedef detail::int32 highp_i32;
    269 
    270 	/// High precision 64 bit signed integer type.
    271 	/// @see gtc_type_precision
    272 	typedef detail::int64 highp_i64;
    273 
    274 
    275 	/// 8 bit signed integer type.
    276 	/// @see gtc_type_precision
    277 	typedef detail::int8 int8;
    278 
    279 	/// 16 bit signed integer type.
    280 	/// @see gtc_type_precision
    281 	typedef detail::int16 int16;
    282 
    283 	/// 32 bit signed integer type.
    284 	/// @see gtc_type_precision
    285 	typedef detail::int32 int32;
    286 
    287 	/// 64 bit signed integer type.
    288 	/// @see gtc_type_precision
    289 	typedef detail::int64 int64;
    290 
    291 	/// 8 bit signed integer type.
    292 	/// @see gtc_type_precision
    293 	typedef detail::int8 int8_t;
    294 
    295 	/// 16 bit signed integer type.
    296 	/// @see gtc_type_precision
    297 	typedef detail::int16 int16_t;
    298 
    299 	/// 32 bit signed integer type.
    300 	/// @see gtc_type_precision
    301 	typedef detail::int32 int32_t;
    302 
    303 	/// 64 bit signed integer type.
    304 	/// @see gtc_type_precision
    305 	typedef detail::int64 int64_t;
    306 
    307 	/// 8 bit signed integer type.
    308 	/// @see gtc_type_precision
    309 	typedef detail::int8 i8;
    310 
    311 	/// 16 bit signed integer type.
    312 	/// @see gtc_type_precision
    313 	typedef detail::int16 i16;
    314 
    315 	/// 32 bit signed integer type.
    316 	/// @see gtc_type_precision
    317 	typedef detail::int32 i32;
    318 
    319 	/// 64 bit signed integer type.
    320 	/// @see gtc_type_precision
    321 	typedef detail::int64 i64;
    322 
    323 
    324 
    325 	/// Low precision 8 bit signed integer scalar type.
    326 	/// @see gtc_type_precision
    327 	typedef detail::tvec1<i8, lowp> lowp_i8vec1;
    328 
    329 	/// Low precision 8 bit signed integer vector of 2 components type.
    330 	/// @see gtc_type_precision
    331 	typedef detail::tvec2<i8, lowp> lowp_i8vec2;
    332 
    333 	/// Low precision 8 bit signed integer vector of 3 components type.
    334 	/// @see gtc_type_precision
    335 	typedef detail::tvec3<i8, lowp> lowp_i8vec3;
    336 
    337 	/// Low precision 8 bit signed integer vector of 4 components type.
    338 	/// @see gtc_type_precision
    339 	typedef detail::tvec4<i8, lowp> lowp_i8vec4;
    340 
    341 
    342 	/// Medium precision 8 bit signed integer scalar type.
    343 	/// @see gtc_type_precision
    344 	typedef detail::tvec1<i8, mediump> mediump_i8vec1;
    345 
    346 	/// Medium precision 8 bit signed integer vector of 2 components type.
    347 	/// @see gtc_type_precision
    348 	typedef detail::tvec2<i8, mediump> mediump_i8vec2;
    349 
    350 	/// Medium precision 8 bit signed integer vector of 3 components type.
    351 	/// @see gtc_type_precision
    352 	typedef detail::tvec3<i8, mediump> mediump_i8vec3;
    353 
    354 	/// Medium precision 8 bit signed integer vector of 4 components type.
    355 	/// @see gtc_type_precision
    356 	typedef detail::tvec4<i8, mediump> mediump_i8vec4;
    357 
    358 
    359 	/// High precision 8 bit signed integer scalar type.
    360 	/// @see gtc_type_precision
    361 	typedef detail::tvec1<i8, highp> highp_i8vec1;
    362 
    363 	/// High precision 8 bit signed integer vector of 2 components type.
    364 	/// @see gtc_type_precision
    365 	typedef detail::tvec2<i8, highp> highp_i8vec2;
    366 
    367 	/// High precision 8 bit signed integer vector of 3 components type.
    368 	/// @see gtc_type_precision
    369 	typedef detail::tvec3<i8, highp> highp_i8vec3;
    370 
    371 	/// High precision 8 bit signed integer vector of 4 components type.
    372 	/// @see gtc_type_precision
    373 	typedef detail::tvec4<i8, highp> highp_i8vec4;
    374 
    375 #if(defined(GLM_PRECISION_LOWP_INT))
    376 	typedef lowp_i8vec1				i8vec1;
    377 	typedef lowp_i8vec2				i8vec2;
    378 	typedef lowp_i8vec3				i8vec3;
    379 	typedef lowp_i8vec4				i8vec4;
    380 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
    381 	typedef mediump_i8vec1			i8vec1;
    382 	typedef mediump_i8vec2			i8vec2;
    383 	typedef mediump_i8vec3			i8vec3;
    384 	typedef mediump_i8vec4			i8vec4;
    385 #else
    386 	/// Default precision 8 bit signed integer scalar type.
    387 	/// @see gtc_type_precision
    388 	typedef highp_i8vec1			i8vec1;
    389 
    390 	/// Default precision 8 bit signed integer vector of 2 components type.
    391 	/// @see gtc_type_precision
    392 	typedef highp_i8vec2			i8vec2;
    393 
    394 	/// Default precision 8 bit signed integer vector of 3 components type.
    395 	/// @see gtc_type_precision
    396 	typedef highp_i8vec3			i8vec3;
    397 
    398 	/// Default precision 8 bit signed integer vector of 4 components type.
    399 	/// @see gtc_type_precision
    400 	typedef highp_i8vec4			i8vec4;
    401 #endif
    402 
    403 
    404 	/// Low precision 16 bit signed integer scalar type.
    405 	/// @see gtc_type_precision
    406 	typedef detail::tvec1<i16, lowp>		lowp_i16vec1;
    407 
    408 	/// Low precision 16 bit signed integer vector of 2 components type.
    409 	/// @see gtc_type_precision
    410 	typedef detail::tvec2<i16, lowp>		lowp_i16vec2;
    411 
    412 	/// Low precision 16 bit signed integer vector of 3 components type.
    413 	/// @see gtc_type_precision
    414 	typedef detail::tvec3<i16, lowp>		lowp_i16vec3;
    415 
    416 	/// Low precision 16 bit signed integer vector of 4 components type.
    417 	/// @see gtc_type_precision
    418 	typedef detail::tvec4<i16, lowp>		lowp_i16vec4;
    419 
    420 
    421 	/// Medium precision 16 bit signed integer scalar type.
    422 	/// @see gtc_type_precision
    423 	typedef detail::tvec1<i16, mediump>		mediump_i16vec1;
    424 
    425 	/// Medium precision 16 bit signed integer vector of 2 components type.
    426 	/// @see gtc_type_precision
    427 	typedef detail::tvec2<i16, mediump>		mediump_i16vec2;
    428 
    429 	/// Medium precision 16 bit signed integer vector of 3 components type.
    430 	/// @see gtc_type_precision
    431 	typedef detail::tvec3<i16, mediump>		mediump_i16vec3;
    432 
    433 	/// Medium precision 16 bit signed integer vector of 4 components type.
    434 	/// @see gtc_type_precision
    435 	typedef detail::tvec4<i16, mediump>		mediump_i16vec4;
    436 
    437 
    438 	/// High precision 16 bit signed integer scalar type.
    439 	/// @see gtc_type_precision
    440 	typedef detail::tvec1<i16, highp>		highp_i16vec1;
    441 
    442 	/// High precision 16 bit signed integer vector of 2 components type.
    443 	/// @see gtc_type_precision
    444 	typedef detail::tvec2<i16, highp>		highp_i16vec2;
    445 
    446 	/// High precision 16 bit signed integer vector of 3 components type.
    447 	/// @see gtc_type_precision
    448 	typedef detail::tvec3<i16, highp>		highp_i16vec3;
    449 
    450 	/// High precision 16 bit signed integer vector of 4 components type.
    451 	/// @see gtc_type_precision
    452 	typedef detail::tvec4<i16, highp>		highp_i16vec4;
    453 
    454 
    455 #if(defined(GLM_PRECISION_LOWP_INT))
    456 	typedef lowp_i16vec1			i16vec1;
    457 	typedef lowp_i16vec2			i16vec2;
    458 	typedef lowp_i16vec3			i16vec3;
    459 	typedef lowp_i16vec4			i16vec4;
    460 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
    461 	typedef mediump_i16vec1			i16vec1;
    462 	typedef mediump_i16vec2			i16vec2;
    463 	typedef mediump_i16vec3			i16vec3;
    464 	typedef mediump_i16vec4			i16vec4;
    465 #else
    466 	/// Default precision 16 bit signed integer scalar type.
    467 	/// @see gtc_type_precision
    468 	typedef highp_i16vec1			i16vec1;
    469 
    470 	/// Default precision 16 bit signed integer vector of 2 components type.
    471 	/// @see gtc_type_precision
    472 	typedef highp_i16vec2			i16vec2;
    473 
    474 	/// Default precision 16 bit signed integer vector of 3 components type.
    475 	/// @see gtc_type_precision
    476 	typedef highp_i16vec3			i16vec3;
    477 
    478 	/// Default precision 16 bit signed integer vector of 4 components type.
    479 	/// @see gtc_type_precision
    480 	typedef highp_i16vec4			i16vec4;
    481 #endif
    482 
    483 
    484 	/// Low precision 32 bit signed integer scalar type.
    485 	/// @see gtc_type_precision
    486 	typedef detail::tvec1<i32, lowp>		lowp_i32vec1;
    487 
    488 	/// Low precision 32 bit signed integer vector of 2 components type.
    489 	/// @see gtc_type_precision
    490 	typedef detail::tvec2<i32, lowp>		lowp_i32vec2;
    491 
    492 	/// Low precision 32 bit signed integer vector of 3 components type.
    493 	/// @see gtc_type_precision
    494 	typedef detail::tvec3<i32, lowp>		lowp_i32vec3;
    495 
    496 	/// Low precision 32 bit signed integer vector of 4 components type.
    497 	/// @see gtc_type_precision
    498 	typedef detail::tvec4<i32, lowp>		lowp_i32vec4;
    499 
    500 
    501 	/// Medium precision 32 bit signed integer scalar type.
    502 	/// @see gtc_type_precision
    503 	typedef detail::tvec1<i32, mediump>		mediump_i32vec1;
    504 
    505 	/// Medium precision 32 bit signed integer vector of 2 components type.
    506 	/// @see gtc_type_precision
    507 	typedef detail::tvec2<i32, mediump>		mediump_i32vec2;
    508 
    509 	/// Medium precision 32 bit signed integer vector of 3 components type.
    510 	/// @see gtc_type_precision
    511 	typedef detail::tvec3<i32, mediump>		mediump_i32vec3;
    512 
    513 	/// Medium precision 32 bit signed integer vector of 4 components type.
    514 	/// @see gtc_type_precision
    515 	typedef detail::tvec4<i32, mediump>		mediump_i32vec4;
    516 
    517 
    518 	/// High precision 32 bit signed integer scalar type.
    519 	/// @see gtc_type_precision
    520 	typedef detail::tvec1<i32, highp>		highp_i32vec1;
    521 
    522 	/// High precision 32 bit signed integer vector of 2 components type.
    523 	/// @see gtc_type_precision
    524 	typedef detail::tvec2<i32, highp>		highp_i32vec2;
    525 
    526 	/// High precision 32 bit signed integer vector of 3 components type.
    527 	/// @see gtc_type_precision
    528 	typedef detail::tvec3<i32, highp>		highp_i32vec3;
    529 
    530 	/// High precision 32 bit signed integer vector of 4 components type.
    531 	/// @see gtc_type_precision
    532 	typedef detail::tvec4<i32, highp>		highp_i32vec4;
    533 
    534 #if(defined(GLM_PRECISION_LOWP_INT))
    535 	typedef lowp_i32vec1			i32vec1;
    536 	typedef lowp_i32vec2			i32vec2;
    537 	typedef lowp_i32vec3			i32vec3;
    538 	typedef lowp_i32vec4			i32vec4;
    539 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
    540 	typedef mediump_i32vec1			i32vec1;
    541 	typedef mediump_i32vec2			i32vec2;
    542 	typedef mediump_i32vec3			i32vec3;
    543 	typedef mediump_i32vec4			i32vec4;
    544 #else
    545 	/// Default precision 32 bit signed integer scalar type.
    546 	/// @see gtc_type_precision
    547 	typedef highp_i32vec1			i32vec1;
    548 
    549 	/// Default precision 32 bit signed integer vector of 2 components type.
    550 	/// @see gtc_type_precision
    551 	typedef highp_i32vec2			i32vec2;
    552 
    553 	/// Default precision 32 bit signed integer vector of 3 components type.
    554 	/// @see gtc_type_precision
    555 	typedef highp_i32vec3			i32vec3;
    556 
    557 	/// Default precision 32 bit signed integer vector of 4 components type.
    558 	/// @see gtc_type_precision
    559 	typedef highp_i32vec4			i32vec4;
    560 #endif
    561 
    562 
    563 	/// Low precision 32 bit signed integer scalar type.
    564 	/// @see gtc_type_precision
    565 	typedef detail::tvec1<i32, lowp>		lowp_i32vec1;
    566 
    567 	/// Low precision 32 bit signed integer vector of 2 components type.
    568 	/// @see gtc_type_precision
    569 	typedef detail::tvec2<i32, lowp>		lowp_i32vec2;
    570 
    571 	/// Low precision 32 bit signed integer vector of 3 components type.
    572 	/// @see gtc_type_precision
    573 	typedef detail::tvec3<i32, lowp>		lowp_i32vec3;
    574 
    575 	/// Low precision 32 bit signed integer vector of 4 components type.
    576 	/// @see gtc_type_precision
    577 	typedef detail::tvec4<i32, lowp>		lowp_i32vec4;
    578 
    579 
    580 	/// Medium precision 32 bit signed integer scalar type.
    581 	/// @see gtc_type_precision
    582 	typedef detail::tvec1<i32, mediump>		mediump_i32vec1;
    583 
    584 	/// Medium precision 32 bit signed integer vector of 2 components type.
    585 	/// @see gtc_type_precision
    586 	typedef detail::tvec2<i32, mediump>		mediump_i32vec2;
    587 
    588 	/// Medium precision 32 bit signed integer vector of 3 components type.
    589 	/// @see gtc_type_precision
    590 	typedef detail::tvec3<i32, mediump>		mediump_i32vec3;
    591 
    592 	/// Medium precision 32 bit signed integer vector of 4 components type.
    593 	/// @see gtc_type_precision
    594 	typedef detail::tvec4<i32, mediump>		mediump_i32vec4;
    595 
    596 
    597 	/// High precision 32 bit signed integer scalar type.
    598 	/// @see gtc_type_precision
    599 	typedef detail::tvec1<i32, highp>		highp_i32vec1;
    600 
    601 	/// High precision 32 bit signed integer vector of 2 components type.
    602 	/// @see gtc_type_precision
    603 	typedef detail::tvec2<i32, highp>		highp_i32vec2;
    604 
    605 	/// High precision 32 bit signed integer vector of 3 components type.
    606 	/// @see gtc_type_precision
    607 	typedef detail::tvec3<i32, highp>		highp_i32vec3;
    608 
    609 	/// High precision 32 bit signed integer vector of 4 components type.
    610 	/// @see gtc_type_precision
    611 	typedef detail::tvec4<i32, highp>		highp_i32vec4;
    612 
    613 #if(defined(GLM_PRECISION_LOWP_INT))
    614 	typedef lowp_i32vec1			i32vec1;
    615 	typedef lowp_i32vec2			i32vec2;
    616 	typedef lowp_i32vec3			i32vec3;
    617 	typedef lowp_i32vec4			i32vec4;
    618 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
    619 	typedef mediump_i32vec1			i32vec1;
    620 	typedef mediump_i32vec2			i32vec2;
    621 	typedef mediump_i32vec3			i32vec3;
    622 	typedef mediump_i32vec4			i32vec4;
    623 #else
    624 	/// Default precision 32 bit signed integer scalar type.
    625 	/// @see gtc_type_precision
    626 	typedef highp_i32vec1			i32vec1;
    627 
    628 	/// Default precision 32 bit signed integer vector of 2 components type.
    629 	/// @see gtc_type_precision
    630 	typedef highp_i32vec2			i32vec2;
    631 
    632 	/// Default precision 32 bit signed integer vector of 3 components type.
    633 	/// @see gtc_type_precision
    634 	typedef highp_i32vec3			i32vec3;
    635 
    636 	/// Default precision 32 bit signed integer vector of 4 components type.
    637 	/// @see gtc_type_precision
    638 	typedef highp_i32vec4			i32vec4;
    639 #endif
    640 
    641 
    642 
    643 	/// Low precision 64 bit signed integer scalar type.
    644 	/// @see gtc_type_precision
    645 	typedef detail::tvec1<i64, lowp>		lowp_i64vec1;
    646 
    647 	/// Low precision 64 bit signed integer vector of 2 components type.
    648 	/// @see gtc_type_precision
    649 	typedef detail::tvec2<i64, lowp>		lowp_i64vec2;
    650 
    651 	/// Low precision 64 bit signed integer vector of 3 components type.
    652 	/// @see gtc_type_precision
    653 	typedef detail::tvec3<i64, lowp>		lowp_i64vec3;
    654 
    655 	/// Low precision 64 bit signed integer vector of 4 components type.
    656 	/// @see gtc_type_precision
    657 	typedef detail::tvec4<i64, lowp>		lowp_i64vec4;
    658 
    659 
    660 	/// Medium precision 64 bit signed integer scalar type.
    661 	/// @see gtc_type_precision
    662 	typedef detail::tvec1<i64, mediump>		mediump_i64vec1;
    663 
    664 	/// Medium precision 64 bit signed integer vector of 2 components type.
    665 	/// @see gtc_type_precision
    666 	typedef detail::tvec2<i64, mediump>		mediump_i64vec2;
    667 
    668 	/// Medium precision 64 bit signed integer vector of 3 components type.
    669 	/// @see gtc_type_precision
    670 	typedef detail::tvec3<i64, mediump>		mediump_i64vec3;
    671 
    672 	/// Medium precision 64 bit signed integer vector of 4 components type.
    673 	/// @see gtc_type_precision
    674 	typedef detail::tvec4<i64, mediump>		mediump_i64vec4;
    675 
    676 
    677 	/// High precision 64 bit signed integer scalar type.
    678 	/// @see gtc_type_precision
    679 	typedef detail::tvec1<i64, highp>		highp_i64vec1;
    680 
    681 	/// High precision 64 bit signed integer vector of 2 components type.
    682 	/// @see gtc_type_precision
    683 	typedef detail::tvec2<i64, highp>		highp_i64vec2;
    684 
    685 	/// High precision 64 bit signed integer vector of 3 components type.
    686 	/// @see gtc_type_precision
    687 	typedef detail::tvec3<i64, highp>		highp_i64vec3;
    688 
    689 	/// High precision 64 bit signed integer vector of 4 components type.
    690 	/// @see gtc_type_precision
    691 	typedef detail::tvec4<i64, highp>		highp_i64vec4;
    692 
    693 #if(defined(GLM_PRECISION_LOWP_INT))
    694 	typedef lowp_i64vec1			i64vec1;
    695 	typedef lowp_i64vec2			i64vec2;
    696 	typedef lowp_i64vec3			i64vec3;
    697 	typedef lowp_i64vec4			i64vec4;
    698 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
    699 	typedef mediump_i64vec1			i64vec1;
    700 	typedef mediump_i64vec2			i64vec2;
    701 	typedef mediump_i64vec3			i64vec3;
    702 	typedef mediump_i64vec4			i64vec4;
    703 #else
    704 	/// Default precision 64 bit signed integer scalar type.
    705 	/// @see gtc_type_precision
    706 	typedef highp_i64vec1			i64vec1;
    707 
    708 	/// Default precision 64 bit signed integer vector of 2 components type.
    709 	/// @see gtc_type_precision
    710 	typedef highp_i64vec2			i64vec2;
    711 
    712 	/// Default precision 64 bit signed integer vector of 3 components type.
    713 	/// @see gtc_type_precision
    714 	typedef highp_i64vec3			i64vec3;
    715 
    716 	/// Default precision 64 bit signed integer vector of 4 components type.
    717 	/// @see gtc_type_precision
    718 	typedef highp_i64vec4			i64vec4;
    719 #endif
    720 
    721 
    722 	/////////////////////////////
    723 	// Unsigned int vector types
    724 
    725 	/// Low precision 8 bit unsigned integer type.
    726 	/// @see gtc_type_precision
    727 	typedef detail::uint8 lowp_uint8;
    728 
    729 	/// Low precision 16 bit unsigned integer type.
    730 	/// @see gtc_type_precision
    731 	typedef detail::uint16 lowp_uint16;
    732 
    733 	/// Low precision 32 bit unsigned integer type.
    734 	/// @see gtc_type_precision
    735 	typedef detail::uint32 lowp_uint32;
    736 
    737 	/// Low precision 64 bit unsigned integer type.
    738 	/// @see gtc_type_precision
    739 	typedef detail::uint64 lowp_uint64;
    740 
    741 
    742 	/// Low precision 8 bit unsigned integer type.
    743 	/// @see gtc_type_precision
    744 	typedef detail::uint8 lowp_uint8_t;
    745 
    746 	/// Low precision 16 bit unsigned integer type.
    747 	/// @see gtc_type_precision
    748 	typedef detail::uint16 lowp_uint16_t;
    749 
    750 	/// Low precision 32 bit unsigned integer type.
    751 	/// @see gtc_type_precision
    752 	typedef detail::uint32 lowp_uint32_t;
    753 
    754 	/// Low precision 64 bit unsigned integer type.
    755 	/// @see gtc_type_precision
    756 	typedef detail::uint64 lowp_uint64_t;
    757 
    758 
    759 	/// Low precision 8 bit unsigned integer type.
    760 	/// @see gtc_type_precision
    761 	typedef detail::uint8 lowp_u8;
    762 
    763 	/// Low precision 16 bit unsigned integer type.
    764 	/// @see gtc_type_precision
    765 	typedef detail::uint16 lowp_u16;
    766 
    767 	/// Low precision 32 bit unsigned integer type.
    768 	/// @see gtc_type_precision
    769 	typedef detail::uint32 lowp_u32;
    770 
    771 	/// Low precision 64 bit unsigned integer type.
    772 	/// @see gtc_type_precision
    773 	typedef detail::uint64 lowp_u64;
    774 
    775 
    776 
    777 	/// Medium precision 8 bit unsigned integer type.
    778 	/// @see gtc_type_precision
    779 	typedef detail::uint8 mediump_uint8;
    780 
    781 	/// Medium precision 16 bit unsigned integer type.
    782 	/// @see gtc_type_precision
    783 	typedef detail::uint16 mediump_uint16;
    784 
    785 	/// Medium precision 32 bit unsigned integer type.
    786 	/// @see gtc_type_precision
    787 	typedef detail::uint32 mediump_uint32;
    788 
    789 	/// Medium precision 64 bit unsigned integer type.
    790 	/// @see gtc_type_precision
    791 	typedef detail::uint64 mediump_uint64;
    792 
    793 	/// Medium precision 8 bit unsigned integer type.
    794 	/// @see gtc_type_precision
    795 	typedef detail::uint8 mediump_uint8_t;
    796 
    797 	/// Medium precision 16 bit unsigned integer type.
    798 	/// @see gtc_type_precision
    799 	typedef detail::uint16 mediump_uint16_t;
    800 
    801 	/// Medium precision 32 bit unsigned integer type.
    802 	/// @see gtc_type_precision
    803 	typedef detail::uint32 mediump_uint32_t;
    804 
    805 	/// Medium precision 64 bit unsigned integer type.
    806 	/// @see gtc_type_precision
    807 	typedef detail::uint64 mediump_uint64_t;
    808 
    809 	/// Medium precision 8 bit unsigned integer type.
    810 	/// @see gtc_type_precision
    811 	typedef detail::uint8 mediump_u8;
    812 
    813 	/// Medium precision 16 bit unsigned integer type.
    814 	/// @see gtc_type_precision
    815 	typedef detail::uint16 mediump_u16;
    816 
    817 	/// Medium precision 32 bit unsigned integer type.
    818 	/// @see gtc_type_precision
    819 	typedef detail::uint32 mediump_u32;
    820 
    821 	/// Medium precision 64 bit unsigned integer type.
    822 	/// @see gtc_type_precision
    823 	typedef detail::uint64 mediump_u64;
    824 
    825 
    826 
    827 	/// Medium precision 8 bit unsigned integer type.
    828 	/// @see gtc_type_precision
    829 	typedef detail::uint8 highp_uint8;
    830 
    831 	/// Medium precision 16 bit unsigned integer type.
    832 	/// @see gtc_type_precision
    833 	typedef detail::uint16 highp_uint16;
    834 
    835 	/// Medium precision 32 bit unsigned integer type.
    836 	/// @see gtc_type_precision
    837 	typedef detail::uint32 highp_uint32;
    838 
    839 	/// Medium precision 64 bit unsigned integer type.
    840 	/// @see gtc_type_precision
    841 	typedef detail::uint64 highp_uint64;
    842 
    843 	/// Medium precision 8 bit unsigned integer type.
    844 	/// @see gtc_type_precision
    845 	typedef detail::uint8 highp_uint8_t;
    846 
    847 	/// Medium precision 16 bit unsigned integer type.
    848 	/// @see gtc_type_precision
    849 	typedef detail::uint16 highp_uint16_t;
    850 
    851 	/// Medium precision 32 bit unsigned integer type.
    852 	/// @see gtc_type_precision
    853 	typedef detail::uint32 highp_uint32_t;
    854 
    855 	/// Medium precision 64 bit unsigned integer type.
    856 	/// @see gtc_type_precision
    857 	typedef detail::uint64 highp_uint64_t;
    858 
    859 	/// Medium precision 8 bit unsigned integer type.
    860 	/// @see gtc_type_precision
    861 	typedef detail::uint8 highp_u8;
    862 
    863 	/// Medium precision 16 bit unsigned integer type.
    864 	/// @see gtc_type_precision
    865 	typedef detail::uint16 highp_u16;
    866 
    867 	/// Medium precision 32 bit unsigned integer type.
    868 	/// @see gtc_type_precision
    869 	typedef detail::uint32 highp_u32;
    870 
    871 	/// Medium precision 64 bit unsigned integer type.
    872 	/// @see gtc_type_precision
    873 	typedef detail::uint64 highp_u64;
    874 
    875 
    876 
    877 	/// 8 bit unsigned integer type.
    878 	/// @see gtc_type_precision
    879 	typedef detail::uint8 uint8;
    880 
    881 	/// 16 bit unsigned integer type.
    882 	/// @see gtc_type_precision
    883 	typedef detail::uint16 uint16;
    884 
    885 	/// 32 bit unsigned integer type.
    886 	/// @see gtc_type_precision
    887 	typedef detail::uint32 uint32;
    888 
    889 	/// 64 bit unsigned integer type.
    890 	/// @see gtc_type_precision
    891 	typedef detail::uint64 uint64;
    892 
    893 	/// 8 bit unsigned integer type.
    894 	/// @see gtc_type_precision
    895 	typedef detail::uint8 uint8_t;
    896 
    897 	/// 16 bit unsigned integer type.
    898 	/// @see gtc_type_precision
    899 	typedef detail::uint16 uint16_t;
    900 
    901 	/// 32 bit unsigned integer type.
    902 	/// @see gtc_type_precision
    903 	typedef detail::uint32 uint32_t;
    904 
    905 	/// 64 bit unsigned integer type.
    906 	/// @see gtc_type_precision
    907 	typedef detail::uint64 uint64_t;
    908 
    909 	/// 8 bit unsigned integer type.
    910 	/// @see gtc_type_precision
    911 	typedef detail::uint8 u8;
    912 
    913 	/// 16 bit unsigned integer type.
    914 	/// @see gtc_type_precision
    915 	typedef detail::uint16 u16;
    916 
    917 	/// 32 bit unsigned integer type.
    918 	/// @see gtc_type_precision
    919 	typedef detail::uint32 u32;
    920 
    921 	/// 64 bit unsigned integer type.
    922 	/// @see gtc_type_precision
    923 	typedef detail::uint64 u64;
    924 
    925 
    926 
    927 
    928 	/// Low precision 8 bit unsigned integer scalar type.
    929 	/// @see gtc_type_precision
    930 	typedef detail::tvec1<u8, lowp> lowp_u8vec1;
    931 
    932 	/// Low precision 8 bit unsigned integer vector of 2 components type.
    933 	/// @see gtc_type_precision
    934 	typedef detail::tvec2<u8, lowp> lowp_u8vec2;
    935 
    936 	/// Low precision 8 bit unsigned integer vector of 3 components type.
    937 	/// @see gtc_type_precision
    938 	typedef detail::tvec3<u8, lowp> lowp_u8vec3;
    939 
    940 	/// Low precision 8 bit unsigned integer vector of 4 components type.
    941 	/// @see gtc_type_precision
    942 	typedef detail::tvec4<u8, lowp> lowp_u8vec4;
    943 
    944 
    945 	/// Medium precision 8 bit unsigned integer scalar type.
    946 	/// @see gtc_type_precision
    947 	typedef detail::tvec1<u8, mediump> mediump_u8vec1;
    948 
    949 	/// Medium precision 8 bit unsigned integer vector of 2 components type.
    950 	/// @see gtc_type_precision
    951 	typedef detail::tvec2<u8, mediump> mediump_u8vec2;
    952 
    953 	/// Medium precision 8 bit unsigned integer vector of 3 components type.
    954 	/// @see gtc_type_precision
    955 	typedef detail::tvec3<u8, mediump> mediump_u8vec3;
    956 
    957 	/// Medium precision 8 bit unsigned integer vector of 4 components type.
    958 	/// @see gtc_type_precision
    959 	typedef detail::tvec4<u8, mediump> mediump_u8vec4;
    960 
    961 
    962 	/// High precision 8 bit unsigned integer scalar type.
    963 	/// @see gtc_type_precision
    964 	typedef detail::tvec1<u8, highp> highp_u8vec1;
    965 
    966 	/// High precision 8 bit unsigned integer vector of 2 components type.
    967 	/// @see gtc_type_precision
    968 	typedef detail::tvec2<u8, highp> highp_u8vec2;
    969 
    970 	/// High precision 8 bit unsigned integer vector of 3 components type.
    971 	/// @see gtc_type_precision
    972 	typedef detail::tvec3<u8, highp> highp_u8vec3;
    973 
    974 	/// High precision 8 bit unsigned integer vector of 4 components type.
    975 	/// @see gtc_type_precision
    976 	typedef detail::tvec4<u8, highp> highp_u8vec4;
    977 
    978 #if(defined(GLM_PRECISION_LOWP_INT))
    979 	typedef lowp_u8vec1				u8vec1;
    980 	typedef lowp_u8vec2				u8vec2;
    981 	typedef lowp_u8vec3				u8vec3;
    982 	typedef lowp_u8vec4				u8vec4;
    983 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
    984 	typedef mediump_u8vec1			u8vec1;
    985 	typedef mediump_u8vec2			u8vec2;
    986 	typedef mediump_u8vec3			u8vec3;
    987 	typedef mediump_u8vec4			u8vec4;
    988 #else
    989 	/// Default precision 8 bit unsigned integer scalar type.
    990 	/// @see gtc_type_precision
    991 	typedef highp_u8vec1			u8vec1;
    992 
    993 	/// Default precision 8 bit unsigned integer vector of 2 components type.
    994 	/// @see gtc_type_precision
    995 	typedef highp_u8vec2			u8vec2;
    996 
    997 	/// Default precision 8 bit unsigned integer vector of 3 components type.
    998 	/// @see gtc_type_precision
    999 	typedef highp_u8vec3			u8vec3;
   1000 
   1001 	/// Default precision 8 bit unsigned integer vector of 4 components type.
   1002 	/// @see gtc_type_precision
   1003 	typedef highp_u8vec4			u8vec4;
   1004 #endif
   1005 
   1006 
   1007 	/// Low precision 16 bit unsigned integer scalar type.
   1008 	/// @see gtc_type_precision
   1009 	typedef detail::tvec1<u16, lowp>		lowp_u16vec1;
   1010 
   1011 	/// Low precision 16 bit unsigned integer vector of 2 components type.
   1012 	/// @see gtc_type_precision
   1013 	typedef detail::tvec2<u16, lowp>		lowp_u16vec2;
   1014 
   1015 	/// Low precision 16 bit unsigned integer vector of 3 components type.
   1016 	/// @see gtc_type_precision
   1017 	typedef detail::tvec3<u16, lowp>		lowp_u16vec3;
   1018 
   1019 	/// Low precision 16 bit unsigned integer vector of 4 components type.
   1020 	/// @see gtc_type_precision
   1021 	typedef detail::tvec4<u16, lowp>		lowp_u16vec4;
   1022 
   1023 
   1024 	/// Medium precision 16 bit unsigned integer scalar type.
   1025 	/// @see gtc_type_precision
   1026 	typedef detail::tvec1<u16, mediump>		mediump_u16vec1;
   1027 
   1028 	/// Medium precision 16 bit unsigned integer vector of 2 components type.
   1029 	/// @see gtc_type_precision
   1030 	typedef detail::tvec2<u16, mediump>		mediump_u16vec2;
   1031 
   1032 	/// Medium precision 16 bit unsigned integer vector of 3 components type.
   1033 	/// @see gtc_type_precision
   1034 	typedef detail::tvec3<u16, mediump>		mediump_u16vec3;
   1035 
   1036 	/// Medium precision 16 bit unsigned integer vector of 4 components type.
   1037 	/// @see gtc_type_precision
   1038 	typedef detail::tvec4<u16, mediump>		mediump_u16vec4;
   1039 
   1040 
   1041 	/// High precision 16 bit unsigned integer scalar type.
   1042 	/// @see gtc_type_precision
   1043 	typedef detail::tvec1<u16, highp>		highp_u16vec1;
   1044 
   1045 	/// High precision 16 bit unsigned integer vector of 2 components type.
   1046 	/// @see gtc_type_precision
   1047 	typedef detail::tvec2<u16, highp>		highp_u16vec2;
   1048 
   1049 	/// High precision 16 bit unsigned integer vector of 3 components type.
   1050 	/// @see gtc_type_precision
   1051 	typedef detail::tvec3<u16, highp>		highp_u16vec3;
   1052 
   1053 	/// High precision 16 bit unsigned integer vector of 4 components type.
   1054 	/// @see gtc_type_precision
   1055 	typedef detail::tvec4<u16, highp>		highp_u16vec4;
   1056 
   1057 
   1058 #if(defined(GLM_PRECISION_LOWP_INT))
   1059 	typedef lowp_u16vec1			u16vec1;
   1060 	typedef lowp_u16vec2			u16vec2;
   1061 	typedef lowp_u16vec3			u16vec3;
   1062 	typedef lowp_u16vec4			u16vec4;
   1063 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
   1064 	typedef mediump_u16vec1			u16vec1;
   1065 	typedef mediump_u16vec2			u16vec2;
   1066 	typedef mediump_u16vec3			u16vec3;
   1067 	typedef mediump_u16vec4			u16vec4;
   1068 #else
   1069 	/// Default precision 16 bit unsigned integer scalar type.
   1070 	/// @see gtc_type_precision
   1071 	typedef highp_u16vec1			u16vec1;
   1072 
   1073 	/// Default precision 16 bit unsigned integer vector of 2 components type.
   1074 	/// @see gtc_type_precision
   1075 	typedef highp_u16vec2			u16vec2;
   1076 
   1077 	/// Default precision 16 bit unsigned integer vector of 3 components type.
   1078 	/// @see gtc_type_precision
   1079 	typedef highp_u16vec3			u16vec3;
   1080 
   1081 	/// Default precision 16 bit unsigned integer vector of 4 components type.
   1082 	/// @see gtc_type_precision
   1083 	typedef highp_u16vec4			u16vec4;
   1084 #endif
   1085 
   1086 
   1087 	/// Low precision 32 bit unsigned integer scalar type.
   1088 	/// @see gtc_type_precision
   1089 	typedef detail::tvec1<u32, lowp>		lowp_u32vec1;
   1090 
   1091 	/// Low precision 32 bit unsigned integer vector of 2 components type.
   1092 	/// @see gtc_type_precision
   1093 	typedef detail::tvec2<u32, lowp>		lowp_u32vec2;
   1094 
   1095 	/// Low precision 32 bit unsigned integer vector of 3 components type.
   1096 	/// @see gtc_type_precision
   1097 	typedef detail::tvec3<u32, lowp>		lowp_u32vec3;
   1098 
   1099 	/// Low precision 32 bit unsigned integer vector of 4 components type.
   1100 	/// @see gtc_type_precision
   1101 	typedef detail::tvec4<u32, lowp>		lowp_u32vec4;
   1102 
   1103 
   1104 	/// Medium precision 32 bit unsigned integer scalar type.
   1105 	/// @see gtc_type_precision
   1106 	typedef detail::tvec1<u32, mediump>		mediump_u32vec1;
   1107 
   1108 	/// Medium precision 32 bit unsigned integer vector of 2 components type.
   1109 	/// @see gtc_type_precision
   1110 	typedef detail::tvec2<u32, mediump>		mediump_u32vec2;
   1111 
   1112 	/// Medium precision 32 bit unsigned integer vector of 3 components type.
   1113 	/// @see gtc_type_precision
   1114 	typedef detail::tvec3<u32, mediump>		mediump_u32vec3;
   1115 
   1116 	/// Medium precision 32 bit unsigned integer vector of 4 components type.
   1117 	/// @see gtc_type_precision
   1118 	typedef detail::tvec4<u32, mediump>		mediump_u32vec4;
   1119 
   1120 
   1121 	/// High precision 32 bit unsigned integer scalar type.
   1122 	/// @see gtc_type_precision
   1123 	typedef detail::tvec1<u32, highp>		highp_u32vec1;
   1124 
   1125 	/// High precision 32 bit unsigned integer vector of 2 components type.
   1126 	/// @see gtc_type_precision
   1127 	typedef detail::tvec2<u32, highp>		highp_u32vec2;
   1128 
   1129 	/// High precision 32 bit unsigned integer vector of 3 components type.
   1130 	/// @see gtc_type_precision
   1131 	typedef detail::tvec3<u32, highp>		highp_u32vec3;
   1132 
   1133 	/// High precision 32 bit unsigned integer vector of 4 components type.
   1134 	/// @see gtc_type_precision
   1135 	typedef detail::tvec4<u32, highp>		highp_u32vec4;
   1136 
   1137 #if(defined(GLM_PRECISION_LOWP_INT))
   1138 	typedef lowp_u32vec1			u32vec1;
   1139 	typedef lowp_u32vec2			u32vec2;
   1140 	typedef lowp_u32vec3			u32vec3;
   1141 	typedef lowp_u32vec4			u32vec4;
   1142 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
   1143 	typedef mediump_u32vec1			u32vec1;
   1144 	typedef mediump_u32vec2			u32vec2;
   1145 	typedef mediump_u32vec3			u32vec3;
   1146 	typedef mediump_u32vec4			u32vec4;
   1147 #else
   1148 	/// Default precision 32 bit unsigned integer scalar type.
   1149 	/// @see gtc_type_precision
   1150 	typedef highp_u32vec1			u32vec1;
   1151 
   1152 	/// Default precision 32 bit unsigned integer vector of 2 components type.
   1153 	/// @see gtc_type_precision
   1154 	typedef highp_u32vec2			u32vec2;
   1155 
   1156 	/// Default precision 32 bit unsigned integer vector of 3 components type.
   1157 	/// @see gtc_type_precision
   1158 	typedef highp_u32vec3			u32vec3;
   1159 
   1160 	/// Default precision 32 bit unsigned integer vector of 4 components type.
   1161 	/// @see gtc_type_precision
   1162 	typedef highp_u32vec4			u32vec4;
   1163 #endif
   1164 
   1165 
   1166 	/// Low precision 32 bit unsigned integer scalar type.
   1167 	/// @see gtc_type_precision
   1168 	typedef detail::tvec1<u32, lowp>		lowp_u32vec1;
   1169 
   1170 	/// Low precision 32 bit unsigned integer vector of 2 components type.
   1171 	/// @see gtc_type_precision
   1172 	typedef detail::tvec2<u32, lowp>		lowp_u32vec2;
   1173 
   1174 	/// Low precision 32 bit unsigned integer vector of 3 components type.
   1175 	/// @see gtc_type_precision
   1176 	typedef detail::tvec3<u32, lowp>		lowp_u32vec3;
   1177 
   1178 	/// Low precision 32 bit unsigned integer vector of 4 components type.
   1179 	/// @see gtc_type_precision
   1180 	typedef detail::tvec4<u32, lowp>		lowp_u32vec4;
   1181 
   1182 
   1183 	/// Medium precision 32 bit unsigned integer scalar type.
   1184 	/// @see gtc_type_precision
   1185 	typedef detail::tvec1<u32, mediump>		mediump_u32vec1;
   1186 
   1187 	/// Medium precision 32 bit unsigned integer vector of 2 components type.
   1188 	/// @see gtc_type_precision
   1189 	typedef detail::tvec2<u32, mediump>		mediump_u32vec2;
   1190 
   1191 	/// Medium precision 32 bit unsigned integer vector of 3 components type.
   1192 	/// @see gtc_type_precision
   1193 	typedef detail::tvec3<u32, mediump>		mediump_u32vec3;
   1194 
   1195 	/// Medium precision 32 bit unsigned integer vector of 4 components type.
   1196 	/// @see gtc_type_precision
   1197 	typedef detail::tvec4<u32, mediump>		mediump_u32vec4;
   1198 
   1199 
   1200 	/// High precision 32 bit unsigned integer scalar type.
   1201 	/// @see gtc_type_precision
   1202 	typedef detail::tvec1<u32, highp>		highp_u32vec1;
   1203 
   1204 	/// High precision 32 bit unsigned integer vector of 2 components type.
   1205 	/// @see gtc_type_precision
   1206 	typedef detail::tvec2<u32, highp>		highp_u32vec2;
   1207 
   1208 	/// High precision 32 bit unsigned integer vector of 3 components type.
   1209 	/// @see gtc_type_precision
   1210 	typedef detail::tvec3<u32, highp>		highp_u32vec3;
   1211 
   1212 	/// High precision 32 bit unsigned integer vector of 4 components type.
   1213 	/// @see gtc_type_precision
   1214 	typedef detail::tvec4<u32, highp>		highp_u32vec4;
   1215 
   1216 #if(defined(GLM_PRECISION_LOWP_INT))
   1217 	typedef lowp_u32vec1			u32vec1;
   1218 	typedef lowp_u32vec2			u32vec2;
   1219 	typedef lowp_u32vec3			u32vec3;
   1220 	typedef lowp_u32vec4			u32vec4;
   1221 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
   1222 	typedef mediump_u32vec1			u32vec1;
   1223 	typedef mediump_u32vec2			u32vec2;
   1224 	typedef mediump_u32vec3			u32vec3;
   1225 	typedef mediump_u32vec4			u32vec4;
   1226 #else
   1227 	/// Default precision 32 bit unsigned integer scalar type.
   1228 	/// @see gtc_type_precision
   1229 	typedef highp_u32vec1			u32vec1;
   1230 
   1231 	/// Default precision 32 bit unsigned integer vector of 2 components type.
   1232 	/// @see gtc_type_precision
   1233 	typedef highp_u32vec2			u32vec2;
   1234 
   1235 	/// Default precision 32 bit unsigned integer vector of 3 components type.
   1236 	/// @see gtc_type_precision
   1237 	typedef highp_u32vec3			u32vec3;
   1238 
   1239 	/// Default precision 32 bit unsigned integer vector of 4 components type.
   1240 	/// @see gtc_type_precision
   1241 	typedef highp_u32vec4			u32vec4;
   1242 #endif
   1243 
   1244 
   1245 
   1246 	/// Low precision 64 bit unsigned integer scalar type.
   1247 	/// @see gtc_type_precision
   1248 	typedef detail::tvec1<u64, lowp>		lowp_u64vec1;
   1249 
   1250 	/// Low precision 64 bit unsigned integer vector of 2 components type.
   1251 	/// @see gtc_type_precision
   1252 	typedef detail::tvec2<u64, lowp>		lowp_u64vec2;
   1253 
   1254 	/// Low precision 64 bit unsigned integer vector of 3 components type.
   1255 	/// @see gtc_type_precision
   1256 	typedef detail::tvec3<u64, lowp>		lowp_u64vec3;
   1257 
   1258 	/// Low precision 64 bit unsigned integer vector of 4 components type.
   1259 	/// @see gtc_type_precision
   1260 	typedef detail::tvec4<u64, lowp>		lowp_u64vec4;
   1261 
   1262 
   1263 	/// Medium precision 64 bit unsigned integer scalar type.
   1264 	/// @see gtc_type_precision
   1265 	typedef detail::tvec1<u64, mediump>		mediump_u64vec1;
   1266 
   1267 	/// Medium precision 64 bit unsigned integer vector of 2 components type.
   1268 	/// @see gtc_type_precision
   1269 	typedef detail::tvec2<u64, mediump>		mediump_u64vec2;
   1270 
   1271 	/// Medium precision 64 bit unsigned integer vector of 3 components type.
   1272 	/// @see gtc_type_precision
   1273 	typedef detail::tvec3<u64, mediump>		mediump_u64vec3;
   1274 
   1275 	/// Medium precision 64 bit unsigned integer vector of 4 components type.
   1276 	/// @see gtc_type_precision
   1277 	typedef detail::tvec4<u64, mediump>		mediump_u64vec4;
   1278 
   1279 
   1280 	/// High precision 64 bit unsigned integer scalar type.
   1281 	/// @see gtc_type_precision
   1282 	typedef detail::tvec1<u64, highp>		highp_u64vec1;
   1283 
   1284 	/// High precision 64 bit unsigned integer vector of 2 components type.
   1285 	/// @see gtc_type_precision
   1286 	typedef detail::tvec2<u64, highp>		highp_u64vec2;
   1287 
   1288 	/// High precision 64 bit unsigned integer vector of 3 components type.
   1289 	/// @see gtc_type_precision
   1290 	typedef detail::tvec3<u64, highp>		highp_u64vec3;
   1291 
   1292 	/// High precision 64 bit unsigned integer vector of 4 components type.
   1293 	/// @see gtc_type_precision
   1294 	typedef detail::tvec4<u64, highp>		highp_u64vec4;
   1295 
   1296 #if(defined(GLM_PRECISION_LOWP_UINT))
   1297 	typedef lowp_u64vec1			u64vec1;
   1298 	typedef lowp_u64vec2			u64vec2;
   1299 	typedef lowp_u64vec3			u64vec3;
   1300 	typedef lowp_u64vec4			u64vec4;
   1301 #elif(defined(GLM_PRECISION_MEDIUMP_UINT))
   1302 	typedef mediump_u64vec1			u64vec1;
   1303 	typedef mediump_u64vec2			u64vec2;
   1304 	typedef mediump_u64vec3			u64vec3;
   1305 	typedef mediump_u64vec4			u64vec4;
   1306 #else
   1307 	/// Default precision 64 bit unsigned integer scalar type.
   1308 	/// @see gtc_type_precision
   1309 	typedef highp_u64vec1			u64vec1;
   1310 
   1311 	/// Default precision 64 bit unsigned integer vector of 2 components type.
   1312 	/// @see gtc_type_precision
   1313 	typedef highp_u64vec2			u64vec2;
   1314 
   1315 	/// Default precision 64 bit unsigned integer vector of 3 components type.
   1316 	/// @see gtc_type_precision
   1317 	typedef highp_u64vec3			u64vec3;
   1318 
   1319 	/// Default precision 64 bit unsigned integer vector of 4 components type.
   1320 	/// @see gtc_type_precision
   1321 	typedef highp_u64vec4			u64vec4;
   1322 #endif
   1323 
   1324 
   1325 	//////////////////////
   1326 	// Float vector types
   1327 
   1328 	/// Low 32 bit single-precision floating-point scalar.
   1329 	/// @see gtc_type_precision
   1330 	typedef detail::float32 lowp_float32;
   1331 
   1332 	/// Low 64 bit double-precision floating-point scalar.
   1333 	/// @see gtc_type_precision
   1334 	typedef detail::float64 lowp_float64;
   1335 
   1336 	/// Low 32 bit single-precision floating-point scalar.
   1337 	/// @see gtc_type_precision
   1338 	typedef detail::float32 lowp_float32_t;
   1339 
   1340 	/// Low 64 bit double-precision floating-point scalar.
   1341 	/// @see gtc_type_precision
   1342 	typedef detail::float64 lowp_float64_t;
   1343 
   1344 	/// Low 32 bit single-precision floating-point scalar.
   1345 	/// @see gtc_type_precision
   1346 	typedef float32 lowp_f32;
   1347 
   1348 	/// Low 64 bit double-precision floating-point scalar.
   1349 	/// @see gtc_type_precision
   1350 	typedef float64 lowp_f64;
   1351 
   1352 	/// Low 32 bit single-precision floating-point scalar.
   1353 	/// @see gtc_type_precision
   1354 	typedef detail::float32 lowp_float32;
   1355 
   1356 	/// Low 64 bit double-precision floating-point scalar.
   1357 	/// @see gtc_type_precision
   1358 	typedef detail::float64 lowp_float64;
   1359 
   1360 	/// Low 32 bit single-precision floating-point scalar.
   1361 	/// @see gtc_type_precision
   1362 	typedef detail::float32 lowp_float32_t;
   1363 
   1364 	/// Low 64 bit double-precision floating-point scalar.
   1365 	/// @see gtc_type_precision
   1366 	typedef detail::float64 lowp_float64_t;
   1367 
   1368 	/// Low 32 bit single-precision floating-point scalar.
   1369 	/// @see gtc_type_precision
   1370 	typedef float32 lowp_f32;
   1371 
   1372 	/// Low 64 bit double-precision floating-point scalar.
   1373 	/// @see gtc_type_precision
   1374 	typedef float64 lowp_f64;
   1375 
   1376 
   1377 	/// Low 32 bit single-precision floating-point scalar.
   1378 	/// @see gtc_type_precision
   1379 	typedef detail::float32 lowp_float32;
   1380 
   1381 	/// Low 64 bit double-precision floating-point scalar.
   1382 	/// @see gtc_type_precision
   1383 	typedef detail::float64 lowp_float64;
   1384 
   1385 	/// Low 32 bit single-precision floating-point scalar.
   1386 	/// @see gtc_type_precision
   1387 	typedef detail::float32 lowp_float32_t;
   1388 
   1389 	/// Low 64 bit double-precision floating-point scalar.
   1390 	/// @see gtc_type_precision
   1391 	typedef detail::float64 lowp_float64_t;
   1392 
   1393 	/// Low 32 bit single-precision floating-point scalar.
   1394 	/// @see gtc_type_precision
   1395 	typedef float32 lowp_f32;
   1396 
   1397 	/// Low 64 bit double-precision floating-point scalar.
   1398 	/// @see gtc_type_precision
   1399 	typedef float64 lowp_f64;
   1400 
   1401 
   1402 	/// Medium 32 bit single-precision floating-point scalar.
   1403 	/// @see gtc_type_precision
   1404 	typedef detail::float32 mediump_float32;
   1405 
   1406 	/// Medium 64 bit double-precision floating-point scalar.
   1407 	/// @see gtc_type_precision
   1408 	typedef detail::float64 mediump_float64;
   1409 
   1410 	/// Medium 32 bit single-precision floating-point scalar.
   1411 	/// @see gtc_type_precision
   1412 	typedef detail::float32 mediump_float32_t;
   1413 
   1414 	/// Medium 64 bit double-precision floating-point scalar.
   1415 	/// @see gtc_type_precision
   1416 	typedef detail::float64 mediump_float64_t;
   1417 
   1418 	/// Medium 32 bit single-precision floating-point scalar.
   1419 	/// @see gtc_type_precision
   1420 	typedef float32 mediump_f32;
   1421 
   1422 	/// Medium 64 bit double-precision floating-point scalar.
   1423 	/// @see gtc_type_precision
   1424 	typedef float64 mediump_f64;
   1425 
   1426 
   1427 	/// High 32 bit single-precision floating-point scalar.
   1428 	/// @see gtc_type_precision
   1429 	typedef detail::float32 highp_float32;
   1430 
   1431 	/// High 64 bit double-precision floating-point scalar.
   1432 	/// @see gtc_type_precision
   1433 	typedef detail::float64 highp_float64;
   1434 
   1435 	/// High 32 bit single-precision floating-point scalar.
   1436 	/// @see gtc_type_precision
   1437 	typedef detail::float32 highp_float32_t;
   1438 
   1439 	/// High 64 bit double-precision floating-point scalar.
   1440 	/// @see gtc_type_precision
   1441 	typedef detail::float64 highp_float64_t;
   1442 
   1443 	/// High 32 bit single-precision floating-point scalar.
   1444 	/// @see gtc_type_precision
   1445 	typedef float32 highp_f32;
   1446 
   1447 	/// High 64 bit double-precision floating-point scalar.
   1448 	/// @see gtc_type_precision
   1449 	typedef float64 highp_f64;
   1450 
   1451 
   1452 #if(defined(GLM_PRECISION_LOWP_FLOAT))
   1453 	/// Default 32 bit single-precision floating-point scalar.
   1454 	/// @see gtc_type_precision
   1455 	typedef lowp_float32 float32;
   1456 
   1457 	/// Default 64 bit double-precision floating-point scalar.
   1458 	/// @see gtc_type_precision
   1459 	typedef lowp_float64 float64;
   1460 
   1461 	/// Default 32 bit single-precision floating-point scalar.
   1462 	/// @see gtc_type_precision
   1463 	typedef lowp_float32_t float32_t;
   1464 
   1465 	/// Default 64 bit double-precision floating-point scalar.
   1466 	/// @see gtc_type_precision
   1467 	typedef lowp_float64_t float64_t;
   1468 
   1469 	/// Default 32 bit single-precision floating-point scalar.
   1470 	/// @see gtc_type_precision
   1471 	typedef lowp_f32 f32;
   1472 
   1473 	/// Default 64 bit double-precision floating-point scalar.
   1474 	/// @see gtc_type_precision
   1475 	typedef lowp_f64 f64;
   1476 
   1477 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
   1478 
   1479 	/// Default 32 bit single-precision floating-point scalar.
   1480 	/// @see gtc_type_precision
   1481 	typedef mediump_float32 float32;
   1482 
   1483 	/// Default 64 bit double-precision floating-point scalar.
   1484 	/// @see gtc_type_precision
   1485 	typedef mediump_float64 float64;
   1486 
   1487 	/// Default 32 bit single-precision floating-point scalar.
   1488 	/// @see gtc_type_precision
   1489 	typedef mediump_float32 float32_t;
   1490 
   1491 	/// Default 64 bit double-precision floating-point scalar.
   1492 	/// @see gtc_type_precision
   1493 	typedef mediump_float64 float64_t;
   1494 
   1495 	/// Default 32 bit single-precision floating-point scalar.
   1496 	/// @see gtc_type_precision
   1497 	typedef mediump_float32 f32;
   1498 
   1499 	/// Default 64 bit double-precision floating-point scalar.
   1500 	/// @see gtc_type_precision
   1501 	typedef mediump_float64 f64;
   1502 
   1503 #else//(defined(GLM_PRECISION_HIGHP_FLOAT))
   1504 
   1505 	/// Default 32 bit single-precision floating-point scalar.
   1506 	/// @see gtc_type_precision
   1507 	typedef highp_float32 float32;
   1508 
   1509 	/// Default 64 bit double-precision floating-point scalar.
   1510 	/// @see gtc_type_precision
   1511 	typedef highp_float64 float64;
   1512 
   1513 	/// Default 32 bit single-precision floating-point scalar.
   1514 	/// @see gtc_type_precision
   1515 	typedef highp_float32_t float32_t;
   1516 
   1517 	/// Default 64 bit double-precision floating-point scalar.
   1518 	/// @see gtc_type_precision
   1519 	typedef highp_float64_t float64_t;
   1520 
   1521 	/// Default 32 bit single-precision floating-point scalar.
   1522 	/// @see gtc_type_precision
   1523 	typedef highp_float32_t f32;
   1524 
   1525 	/// Default 64 bit double-precision floating-point scalar.
   1526 	/// @see gtc_type_precision
   1527 	typedef highp_float64_t f64;
   1528 #endif
   1529 
   1530 
   1531 	/// Low single-precision floating-point vector of 1 component.
   1532 	/// @see gtc_type_precision
   1533 	typedef detail::tvec1<float, lowp> lowp_vec1;
   1534 
   1535 	/// Low single-precision floating-point vector of 2 components.
   1536 	/// @see gtc_type_precision
   1537 	typedef detail::tvec2<float, lowp> lowp_vec2;
   1538 
   1539 	/// Low single-precision floating-point vector of 3 components.
   1540 	/// @see gtc_type_precision
   1541 	typedef detail::tvec3<float, lowp> lowp_vec3;
   1542 
   1543 	/// Low single-precision floating-point vector of 4 components.
   1544 	/// @see gtc_type_precision
   1545 	typedef detail::tvec4<float, lowp> lowp_vec4;
   1546 
   1547 	/// Low single-precision floating-point vector of 1 component.
   1548 	/// @see gtc_type_precision
   1549 	typedef detail::tvec1<float, lowp> lowp_fvec1;
   1550 
   1551 	/// Low single-precision floating-point vector of 2 components.
   1552 	/// @see gtc_type_precision
   1553 	typedef detail::tvec2<float, lowp> lowp_fvec2;
   1554 
   1555 	/// Low single-precision floating-point vector of 3 components.
   1556 	/// @see gtc_type_precision
   1557 	typedef detail::tvec3<float, lowp> lowp_fvec3;
   1558 
   1559 	/// Low single-precision floating-point vector of 4 components.
   1560 	/// @see gtc_type_precision
   1561 	typedef detail::tvec4<float, lowp> lowp_fvec4;
   1562 
   1563 
   1564 
   1565 	/// Medium single-precision floating-point vector of 1 component.
   1566 	/// @see gtc_type_precision
   1567 	typedef detail::tvec1<float, mediump> mediump_vec1;
   1568 
   1569 	/// Medium Single-precision floating-point vector of 2 components.
   1570 	/// @see gtc_type_precision
   1571 	typedef detail::tvec2<float, mediump> mediump_vec2;
   1572 
   1573 	/// Medium Single-precision floating-point vector of 3 components.
   1574 	/// @see gtc_type_precision
   1575 	typedef detail::tvec3<float, mediump> mediump_vec3;
   1576 
   1577 	/// Medium Single-precision floating-point vector of 4 components.
   1578 	/// @see gtc_type_precision
   1579 	typedef detail::tvec4<float, mediump> mediump_vec4;
   1580 
   1581 	/// Medium single-precision floating-point vector of 1 component.
   1582 	/// @see gtc_type_precision
   1583 	typedef detail::tvec1<float, mediump> mediump_fvec1;
   1584 
   1585 	/// Medium Single-precision floating-point vector of 2 components.
   1586 	/// @see gtc_type_precision
   1587 	typedef detail::tvec2<float, mediump> mediump_fvec2;
   1588 
   1589 	/// Medium Single-precision floating-point vector of 3 components.
   1590 	/// @see gtc_type_precision
   1591 	typedef detail::tvec3<float, mediump> mediump_fvec3;
   1592 
   1593 	/// Medium Single-precision floating-point vector of 4 components.
   1594 	/// @see gtc_type_precision
   1595 	typedef detail::tvec4<float, mediump> mediump_fvec4;
   1596 
   1597 
   1598 
   1599 	/// High single-precision floating-point vector of 1 component.
   1600 	/// @see gtc_type_precision
   1601 	typedef detail::tvec1<float, highp> highp_vec1;
   1602 
   1603 	/// High Single-precision floating-point vector of 2 components.
   1604 	/// @see gtc_type_precision
   1605 	typedef detail::tvec2<float, highp> highp_vec2;
   1606 
   1607 	/// High Single-precision floating-point vector of 3 components.
   1608 	/// @see gtc_type_precision
   1609 	typedef detail::tvec3<float, highp> highp_vec3;
   1610 
   1611 	/// High Single-precision floating-point vector of 4 components.
   1612 	/// @see gtc_type_precision
   1613 	typedef detail::tvec4<float, highp> highp_vec4;
   1614 
   1615 	/// High single-precision floating-point vector of 1 component.
   1616 	/// @see gtc_type_precision
   1617 	typedef detail::tvec1<float, highp> highp_fvec1;
   1618 
   1619 	/// High Single-precision floating-point vector of 2 components.
   1620 	/// @see gtc_type_precision
   1621 	typedef detail::tvec2<float, highp> highp_fvec2;
   1622 
   1623 	/// High Single-precision floating-point vector of 3 components.
   1624 	/// @see gtc_type_precision
   1625 	typedef detail::tvec3<float, highp> highp_fvec3;
   1626 
   1627 	/// High Single-precision floating-point vector of 4 components.
   1628 	/// @see gtc_type_precision
   1629 	typedef detail::tvec4<float, highp> highp_fvec4;
   1630 
   1631 
   1632 	/// Low single-precision floating-point vector of 1 component.
   1633 	/// @see gtc_type_precision
   1634 	typedef detail::tvec1<f32, lowp> lowp_f32vec1;
   1635 
   1636 	/// Low single-precision floating-point vector of 2 components.
   1637 	/// @see gtc_type_precision
   1638 	typedef detail::tvec2<f32, lowp> lowp_f32vec2;
   1639 
   1640 	/// Low single-precision floating-point vector of 3 components.
   1641 	/// @see gtc_type_precision
   1642 	typedef detail::tvec3<f32, lowp> lowp_f32vec3;
   1643 
   1644 	/// Low single-precision floating-point vector of 4 components.
   1645 	/// @see gtc_type_precision
   1646 	typedef detail::tvec4<f32, lowp> lowp_f32vec4;
   1647 
   1648 	/// Medium single-precision floating-point vector of 1 component.
   1649 	/// @see gtc_type_precision
   1650 	typedef detail::tvec1<f32, mediump> mediump_f32vec1;
   1651 
   1652 	/// Medium single-precision floating-point vector of 2 components.
   1653 	/// @see gtc_type_precision
   1654 	typedef detail::tvec2<f32, mediump> mediump_f32vec2;
   1655 
   1656 	/// Medium single-precision floating-point vector of 3 components.
   1657 	/// @see gtc_type_precision
   1658 	typedef detail::tvec3<f32, mediump> mediump_f32vec3;
   1659 
   1660 	/// Medium single-precision floating-point vector of 4 components.
   1661 	/// @see gtc_type_precision
   1662 	typedef detail::tvec4<f32, mediump> mediump_f32vec4;
   1663 
   1664 	/// High single-precision floating-point vector of 1 component.
   1665 	/// @see gtc_type_precision
   1666 	typedef detail::tvec1<f32, highp> highp_f32vec1;
   1667 
   1668 	/// High single-precision floating-point vector of 2 components.
   1669 	/// @see gtc_type_precision
   1670 	typedef detail::tvec2<f32, highp> highp_f32vec2;
   1671 
   1672 	/// High single-precision floating-point vector of 3 components.
   1673 	/// @see gtc_type_precision
   1674 	typedef detail::tvec3<f32, highp> highp_f32vec3;
   1675 
   1676 	/// High single-precision floating-point vector of 4 components.
   1677 	/// @see gtc_type_precision
   1678 	typedef detail::tvec4<f32, highp> highp_f32vec4;
   1679 
   1680 
   1681 	/// Low double-precision floating-point vector of 1 component.
   1682 	/// @see gtc_type_precision
   1683 	typedef detail::tvec1<f64, lowp> lowp_f64vec1;
   1684 
   1685 	/// Low double-precision floating-point vector of 2 components.
   1686 	/// @see gtc_type_precision
   1687 	typedef detail::tvec2<f64, lowp> lowp_f64vec2;
   1688 
   1689 	/// Low double-precision floating-point vector of 3 components.
   1690 	/// @see gtc_type_precision
   1691 	typedef detail::tvec3<f64, lowp> lowp_f64vec3;
   1692 
   1693 	/// Low double-precision floating-point vector of 4 components.
   1694 	/// @see gtc_type_precision
   1695 	typedef detail::tvec4<f64, lowp> lowp_f64vec4;
   1696 
   1697 	/// Medium double-precision floating-point vector of 1 component.
   1698 	/// @see gtc_type_precision
   1699 	typedef detail::tvec1<f64, mediump> mediump_f64vec1;
   1700 
   1701 	/// Medium double-precision floating-point vector of 2 components.
   1702 	/// @see gtc_type_precision
   1703 	typedef detail::tvec2<f64, mediump> mediump_f64vec2;
   1704 
   1705 	/// Medium double-precision floating-point vector of 3 components.
   1706 	/// @see gtc_type_precision
   1707 	typedef detail::tvec3<f64, mediump> mediump_f64vec3;
   1708 
   1709 	/// Medium double-precision floating-point vector of 4 components.
   1710 	/// @see gtc_type_precision
   1711 	typedef detail::tvec4<f64, mediump> mediump_f64vec4;
   1712 
   1713 	/// High double-precision floating-point vector of 1 component.
   1714 	/// @see gtc_type_precision
   1715 	typedef detail::tvec1<f64, highp> highp_f64vec1;
   1716 
   1717 	/// High double-precision floating-point vector of 2 components.
   1718 	/// @see gtc_type_precision
   1719 	typedef detail::tvec2<f64, highp> highp_f64vec2;
   1720 
   1721 	/// High double-precision floating-point vector of 3 components.
   1722 	/// @see gtc_type_precision
   1723 	typedef detail::tvec3<f64, highp> highp_f64vec3;
   1724 
   1725 	/// High double-precision floating-point vector of 4 components.
   1726 	/// @see gtc_type_precision
   1727 	typedef detail::tvec4<f64, highp> highp_f64vec4;
   1728 
   1729 
   1730 	//////////////////////
   1731 	// Float matrix types
   1732 
   1733 	/// Low single-precision floating-point 1x1 matrix.
   1734 	/// @see gtc_type_precision
   1735 	//typedef lowp_f32 lowp_fmat1x1;
   1736 
   1737 	/// Low single-precision floating-point 2x2 matrix.
   1738 	/// @see gtc_type_precision
   1739 	typedef detail::tmat2x2<f32, lowp> lowp_fmat2x2;
   1740 
   1741 	/// Low single-precision floating-point 2x3 matrix.
   1742 	/// @see gtc_type_precision
   1743 	typedef detail::tmat2x3<f32, lowp> lowp_fmat2x3;
   1744 
   1745 	/// Low single-precision floating-point 2x4 matrix.
   1746 	/// @see gtc_type_precision
   1747 	typedef detail::tmat2x4<f32, lowp> lowp_fmat2x4;
   1748 
   1749 	/// Low single-precision floating-point 3x2 matrix.
   1750 	/// @see gtc_type_precision
   1751 	typedef detail::tmat3x2<f32, lowp> lowp_fmat3x2;
   1752 
   1753 	/// Low single-precision floating-point 3x3 matrix.
   1754 	/// @see gtc_type_precision
   1755 	typedef detail::tmat3x3<f32, lowp> lowp_fmat3x3;
   1756 
   1757 	/// Low single-precision floating-point 3x4 matrix.
   1758 	/// @see gtc_type_precision
   1759 	typedef detail::tmat3x4<f32, lowp> lowp_fmat3x4;
   1760 
   1761 	/// Low single-precision floating-point 4x2 matrix.
   1762 	/// @see gtc_type_precision
   1763 	typedef detail::tmat4x2<f32, lowp> lowp_fmat4x2;
   1764 
   1765 	/// Low single-precision floating-point 4x3 matrix.
   1766 	/// @see gtc_type_precision
   1767 	typedef detail::tmat4x3<f32, lowp> lowp_fmat4x3;
   1768 
   1769 	/// Low single-precision floating-point 4x4 matrix.
   1770 	/// @see gtc_type_precision
   1771 	typedef detail::tmat4x4<f32, lowp> lowp_fmat4x4;
   1772 
   1773 	/// Low single-precision floating-point 1x1 matrix.
   1774 	/// @see gtc_type_precision
   1775 	//typedef lowp_fmat1x1 lowp_fmat1;
   1776 
   1777 	/// Low single-precision floating-point 2x2 matrix.
   1778 	/// @see gtc_type_precision
   1779 	typedef lowp_fmat2x2 lowp_fmat2;
   1780 
   1781 	/// Low single-precision floating-point 3x3 matrix.
   1782 	/// @see gtc_type_precision
   1783 	typedef lowp_fmat3x3 lowp_fmat3;
   1784 
   1785 	/// Low single-precision floating-point 4x4 matrix.
   1786 	/// @see gtc_type_precision
   1787 	typedef lowp_fmat4x4 lowp_fmat4;
   1788 
   1789 
   1790 	/// Medium single-precision floating-point 1x1 matrix.
   1791 	/// @see gtc_type_precision
   1792 	//typedef mediump_f32 mediump_fmat1x1;
   1793 
   1794 	/// Medium single-precision floating-point 2x2 matrix.
   1795 	/// @see gtc_type_precision
   1796 	typedef detail::tmat2x2<f32, mediump> mediump_fmat2x2;
   1797 
   1798 	/// Medium single-precision floating-point 2x3 matrix.
   1799 	/// @see gtc_type_precision
   1800 	typedef detail::tmat2x3<f32, mediump> mediump_fmat2x3;
   1801 
   1802 	/// Medium single-precision floating-point 2x4 matrix.
   1803 	/// @see gtc_type_precision
   1804 	typedef detail::tmat2x4<f32, mediump> mediump_fmat2x4;
   1805 
   1806 	/// Medium single-precision floating-point 3x2 matrix.
   1807 	/// @see gtc_type_precision
   1808 	typedef detail::tmat3x2<f32, mediump> mediump_fmat3x2;
   1809 
   1810 	/// Medium single-precision floating-point 3x3 matrix.
   1811 	/// @see gtc_type_precision
   1812 	typedef detail::tmat3x3<f32, mediump> mediump_fmat3x3;
   1813 
   1814 	/// Medium single-precision floating-point 3x4 matrix.
   1815 	/// @see gtc_type_precision
   1816 	typedef detail::tmat3x4<f32, mediump> mediump_fmat3x4;
   1817 
   1818 	/// Medium single-precision floating-point 4x2 matrix.
   1819 	/// @see gtc_type_precision
   1820 	typedef detail::tmat4x2<f32, mediump> mediump_fmat4x2;
   1821 
   1822 	/// Medium single-precision floating-point 4x3 matrix.
   1823 	/// @see gtc_type_precision
   1824 	typedef detail::tmat4x3<f32, mediump> mediump_fmat4x3;
   1825 
   1826 	/// Medium single-precision floating-point 4x4 matrix.
   1827 	/// @see gtc_type_precision
   1828 	typedef detail::tmat4x4<f32, mediump> mediump_fmat4x4;
   1829 
   1830 	/// Medium single-precision floating-point 1x1 matrix.
   1831 	/// @see gtc_type_precision
   1832 	//typedef mediump_fmat1x1 mediump_fmat1;
   1833 
   1834 	/// Medium single-precision floating-point 2x2 matrix.
   1835 	/// @see gtc_type_precision
   1836 	typedef mediump_fmat2x2 mediump_fmat2;
   1837 
   1838 	/// Medium single-precision floating-point 3x3 matrix.
   1839 	/// @see gtc_type_precision
   1840 	typedef mediump_fmat3x3 mediump_fmat3;
   1841 
   1842 	/// Medium single-precision floating-point 4x4 matrix.
   1843 	/// @see gtc_type_precision
   1844 	typedef mediump_fmat4x4 mediump_fmat4;
   1845 
   1846 
   1847 
   1848 	/// High single-precision floating-point 1x1 matrix.
   1849 	/// @see gtc_type_precision
   1850 	//typedef highp_f32 highp_fmat1x1;
   1851 
   1852 	/// High single-precision floating-point 2x2 matrix.
   1853 	/// @see gtc_type_precision
   1854 	typedef detail::tmat2x2<f32, highp> highp_fmat2x2;
   1855 
   1856 	/// High single-precision floating-point 2x3 matrix.
   1857 	/// @see gtc_type_precision
   1858 	typedef detail::tmat2x3<f32, highp> highp_fmat2x3;
   1859 
   1860 	/// High single-precision floating-point 2x4 matrix.
   1861 	/// @see gtc_type_precision
   1862 	typedef detail::tmat2x4<f32, highp> highp_fmat2x4;
   1863 
   1864 	/// High single-precision floating-point 3x2 matrix.
   1865 	/// @see gtc_type_precision
   1866 	typedef detail::tmat3x2<f32, highp> highp_fmat3x2;
   1867 
   1868 	/// High single-precision floating-point 3x3 matrix.
   1869 	/// @see gtc_type_precision
   1870 	typedef detail::tmat3x3<f32, highp> highp_fmat3x3;
   1871 
   1872 	/// High single-precision floating-point 3x4 matrix.
   1873 	/// @see gtc_type_precision
   1874 	typedef detail::tmat3x4<f32, highp> highp_fmat3x4;
   1875 
   1876 	/// High single-precision floating-point 4x2 matrix.
   1877 	/// @see gtc_type_precision
   1878 	typedef detail::tmat4x2<f32, highp> highp_fmat4x2;
   1879 
   1880 	/// High single-precision floating-point 4x3 matrix.
   1881 	/// @see gtc_type_precision
   1882 	typedef detail::tmat4x3<f32, highp> highp_fmat4x3;
   1883 
   1884 	/// High single-precision floating-point 4x4 matrix.
   1885 	/// @see gtc_type_precision
   1886 	typedef detail::tmat4x4<f32, highp> highp_fmat4x4;
   1887 
   1888 	/// High single-precision floating-point 1x1 matrix.
   1889 	/// @see gtc_type_precision
   1890 	//typedef highp_fmat1x1 highp_fmat1;
   1891 
   1892 	/// High single-precision floating-point 2x2 matrix.
   1893 	/// @see gtc_type_precision
   1894 	typedef highp_fmat2x2 highp_fmat2;
   1895 
   1896 	/// High single-precision floating-point 3x3 matrix.
   1897 	/// @see gtc_type_precision
   1898 	typedef highp_fmat3x3 highp_fmat3;
   1899 
   1900 	/// High single-precision floating-point 4x4 matrix.
   1901 	/// @see gtc_type_precision
   1902 	typedef highp_fmat4x4 highp_fmat4;
   1903 
   1904 
   1905 	/// Low single-precision floating-point 1x1 matrix.
   1906 	/// @see gtc_type_precision
   1907 	//typedef f32 lowp_f32mat1x1;
   1908 
   1909 	/// Low single-precision floating-point 2x2 matrix.
   1910 	/// @see gtc_type_precision
   1911 	typedef detail::tmat2x2<f32, lowp> lowp_f32mat2x2;
   1912 
   1913 	/// Low single-precision floating-point 2x3 matrix.
   1914 	/// @see gtc_type_precision
   1915 	typedef detail::tmat2x3<f32, lowp> lowp_f32mat2x3;
   1916 
   1917 	/// Low single-precision floating-point 2x4 matrix.
   1918 	/// @see gtc_type_precision
   1919 	typedef detail::tmat2x4<f32, lowp> lowp_f32mat2x4;
   1920 
   1921 	/// Low single-precision floating-point 3x2 matrix.
   1922 	/// @see gtc_type_precision
   1923 	typedef detail::tmat3x2<f32, lowp> lowp_f32mat3x2;
   1924 
   1925 	/// Low single-precision floating-point 3x3 matrix.
   1926 	/// @see gtc_type_precision
   1927 	typedef detail::tmat3x3<f32, lowp> lowp_f32mat3x3;
   1928 
   1929 	/// Low single-precision floating-point 3x4 matrix.
   1930 	/// @see gtc_type_precision
   1931 	typedef detail::tmat3x4<f32, lowp> lowp_f32mat3x4;
   1932 
   1933 	/// Low single-precision floating-point 4x2 matrix.
   1934 	/// @see gtc_type_precision
   1935 	typedef detail::tmat4x2<f32, lowp> lowp_f32mat4x2;
   1936 
   1937 	/// Low single-precision floating-point 4x3 matrix.
   1938 	/// @see gtc_type_precision
   1939 	typedef detail::tmat4x3<f32, lowp> lowp_f32mat4x3;
   1940 
   1941 	/// Low single-precision floating-point 4x4 matrix.
   1942 	/// @see gtc_type_precision
   1943 	typedef detail::tmat4x4<f32, lowp> lowp_f32mat4x4;
   1944 
   1945 	/// Low single-precision floating-point 1x1 matrix.
   1946 	/// @see gtc_type_precision
   1947 	//typedef detail::tmat1x1<f32, lowp> lowp_f32mat1;
   1948 
   1949 	/// Low single-precision floating-point 2x2 matrix.
   1950 	/// @see gtc_type_precision
   1951 	typedef lowp_f32mat2x2 lowp_f32mat2;
   1952 
   1953 	/// Low single-precision floating-point 3x3 matrix.
   1954 	/// @see gtc_type_precision
   1955 	typedef lowp_f32mat3x3 lowp_f32mat3;
   1956 
   1957 	/// Low single-precision floating-point 4x4 matrix.
   1958 	/// @see gtc_type_precision
   1959 	typedef lowp_f32mat4x4 lowp_f32mat4;
   1960 
   1961 
   1962 
   1963 	/// High single-precision floating-point 1x1 matrix.
   1964 	/// @see gtc_type_precision
   1965 	//typedef f32 mediump_f32mat1x1;
   1966 
   1967 	/// Low single-precision floating-point 2x2 matrix.
   1968 	/// @see gtc_type_precision
   1969 	typedef detail::tmat2x2<f32, mediump> mediump_f32mat2x2;
   1970 
   1971 	/// Medium single-precision floating-point 2x3 matrix.
   1972 	/// @see gtc_type_precision
   1973 	typedef detail::tmat2x3<f32, mediump> mediump_f32mat2x3;
   1974 
   1975 	/// Medium single-precision floating-point 2x4 matrix.
   1976 	/// @see gtc_type_precision
   1977 	typedef detail::tmat2x4<f32, mediump> mediump_f32mat2x4;
   1978 
   1979 	/// Medium single-precision floating-point 3x2 matrix.
   1980 	/// @see gtc_type_precision
   1981 	typedef detail::tmat3x2<f32, mediump> mediump_f32mat3x2;
   1982 
   1983 	/// Medium single-precision floating-point 3x3 matrix.
   1984 	/// @see gtc_type_precision
   1985 	typedef detail::tmat3x3<f32, mediump> mediump_f32mat3x3;
   1986 
   1987 	/// Medium single-precision floating-point 3x4 matrix.
   1988 	/// @see gtc_type_precision
   1989 	typedef detail::tmat3x4<f32, mediump> mediump_f32mat3x4;
   1990 
   1991 	/// Medium single-precision floating-point 4x2 matrix.
   1992 	/// @see gtc_type_precision
   1993 	typedef detail::tmat4x2<f32, mediump> mediump_f32mat4x2;
   1994 
   1995 	/// Medium single-precision floating-point 4x3 matrix.
   1996 	/// @see gtc_type_precision
   1997 	typedef detail::tmat4x3<f32, mediump> mediump_f32mat4x3;
   1998 
   1999 	/// Medium single-precision floating-point 4x4 matrix.
   2000 	/// @see gtc_type_precision
   2001 	typedef detail::tmat4x4<f32, mediump> mediump_f32mat4x4;
   2002 
   2003 	/// Medium single-precision floating-point 1x1 matrix.
   2004 	/// @see gtc_type_precision
   2005 	//typedef detail::tmat1x1<f32, mediump> f32mat1;
   2006 
   2007 	/// Medium single-precision floating-point 2x2 matrix.
   2008 	/// @see gtc_type_precision
   2009 	typedef mediump_f32mat2x2 mediump_f32mat2;
   2010 
   2011 	/// Medium single-precision floating-point 3x3 matrix.
   2012 	/// @see gtc_type_precision
   2013 	typedef mediump_f32mat3x3 mediump_f32mat3;
   2014 
   2015 	/// Medium single-precision floating-point 4x4 matrix.
   2016 	/// @see gtc_type_precision
   2017 	typedef mediump_f32mat4x4 mediump_f32mat4;
   2018 
   2019 
   2020 
   2021 
   2022 	/// High single-precision floating-point 1x1 matrix.
   2023 	/// @see gtc_type_precision
   2024 	//typedef f32 highp_f32mat1x1;
   2025 
   2026 	/// High single-precision floating-point 2x2 matrix.
   2027 	/// @see gtc_type_precision
   2028 	typedef detail::tmat2x2<f32, highp> highp_f32mat2x2;
   2029 
   2030 	/// High single-precision floating-point 2x3 matrix.
   2031 	/// @see gtc_type_precision
   2032 	typedef detail::tmat2x3<f32, highp> highp_f32mat2x3;
   2033 
   2034 	/// High single-precision floating-point 2x4 matrix.
   2035 	/// @see gtc_type_precision
   2036 	typedef detail::tmat2x4<f32, highp> highp_f32mat2x4;
   2037 
   2038 	/// High single-precision floating-point 3x2 matrix.
   2039 	/// @see gtc_type_precision
   2040 	typedef detail::tmat3x2<f32, highp> highp_f32mat3x2;
   2041 
   2042 	/// High single-precision floating-point 3x3 matrix.
   2043 	/// @see gtc_type_precision
   2044 	typedef detail::tmat3x3<f32, highp> highp_f32mat3x3;
   2045 
   2046 	/// High single-precision floating-point 3x4 matrix.
   2047 	/// @see gtc_type_precision
   2048 	typedef detail::tmat3x4<f32, highp> highp_f32mat3x4;
   2049 
   2050 	/// High single-precision floating-point 4x2 matrix.
   2051 	/// @see gtc_type_precision
   2052 	typedef detail::tmat4x2<f32, highp> highp_f32mat4x2;
   2053 
   2054 	/// High single-precision floating-point 4x3 matrix.
   2055 	/// @see gtc_type_precision
   2056 	typedef detail::tmat4x3<f32, highp> highp_f32mat4x3;
   2057 
   2058 	/// High single-precision floating-point 4x4 matrix.
   2059 	/// @see gtc_type_precision
   2060 	typedef detail::tmat4x4<f32, highp> highp_f32mat4x4;
   2061 
   2062 	/// High single-precision floating-point 1x1 matrix.
   2063 	/// @see gtc_type_precision
   2064 	//typedef detail::tmat1x1<f32, highp> f32mat1;
   2065 
   2066 	/// High single-precision floating-point 2x2 matrix.
   2067 	/// @see gtc_type_precision
   2068 	typedef highp_f32mat2x2 highp_f32mat2;
   2069 
   2070 	/// High single-precision floating-point 3x3 matrix.
   2071 	/// @see gtc_type_precision
   2072 	typedef highp_f32mat3x3 highp_f32mat3;
   2073 
   2074 	/// High single-precision floating-point 4x4 matrix.
   2075 	/// @see gtc_type_precision
   2076 	typedef highp_f32mat4x4 highp_f32mat4;
   2077 
   2078 
   2079 
   2080 	/// Low double-precision floating-point 1x1 matrix.
   2081 	/// @see gtc_type_precision
   2082 	//typedef f64 lowp_f64mat1x1;
   2083 
   2084 	/// Low double-precision floating-point 2x2 matrix.
   2085 	/// @see gtc_type_precision
   2086 	typedef detail::tmat2x2<f64, lowp> lowp_f64mat2x2;
   2087 
   2088 	/// Low double-precision floating-point 2x3 matrix.
   2089 	/// @see gtc_type_precision
   2090 	typedef detail::tmat2x3<f64, lowp> lowp_f64mat2x3;
   2091 
   2092 	/// Low double-precision floating-point 2x4 matrix.
   2093 	/// @see gtc_type_precision
   2094 	typedef detail::tmat2x4<f64, lowp> lowp_f64mat2x4;
   2095 
   2096 	/// Low double-precision floating-point 3x2 matrix.
   2097 	/// @see gtc_type_precision
   2098 	typedef detail::tmat3x2<f64, lowp> lowp_f64mat3x2;
   2099 
   2100 	/// Low double-precision floating-point 3x3 matrix.
   2101 	/// @see gtc_type_precision
   2102 	typedef detail::tmat3x3<f64, lowp> lowp_f64mat3x3;
   2103 
   2104 	/// Low double-precision floating-point 3x4 matrix.
   2105 	/// @see gtc_type_precision
   2106 	typedef detail::tmat3x4<f64, lowp> lowp_f64mat3x4;
   2107 
   2108 	/// Low double-precision floating-point 4x2 matrix.
   2109 	/// @see gtc_type_precision
   2110 	typedef detail::tmat4x2<f64, lowp> lowp_f64mat4x2;
   2111 
   2112 	/// Low double-precision floating-point 4x3 matrix.
   2113 	/// @see gtc_type_precision
   2114 	typedef detail::tmat4x3<f64, lowp> lowp_f64mat4x3;
   2115 
   2116 	/// Low double-precision floating-point 4x4 matrix.
   2117 	/// @see gtc_type_precision
   2118 	typedef detail::tmat4x4<f64, lowp> lowp_f64mat4x4;
   2119 
   2120 	/// Low double-precision floating-point 1x1 matrix.
   2121 	/// @see gtc_type_precision
   2122 	//typedef lowp_f64mat1x1 lowp_f64mat1;
   2123 
   2124 	/// Low double-precision floating-point 2x2 matrix.
   2125 	/// @see gtc_type_precision
   2126 	typedef lowp_f64mat2x2 lowp_f64mat2;
   2127 
   2128 	/// Low double-precision floating-point 3x3 matrix.
   2129 	/// @see gtc_type_precision
   2130 	typedef lowp_f64mat3x3 lowp_f64mat3;
   2131 
   2132 	/// Low double-precision floating-point 4x4 matrix.
   2133 	/// @see gtc_type_precision
   2134 	typedef lowp_f64mat4x4 lowp_f64mat4;
   2135 
   2136 
   2137 
   2138 	/// Medium double-precision floating-point 1x1 matrix.
   2139 	/// @see gtc_type_precision
   2140 	//typedef f64 Highp_f64mat1x1;
   2141 
   2142 	/// Medium double-precision floating-point 2x2 matrix.
   2143 	/// @see gtc_type_precision
   2144 	typedef detail::tmat2x2<f64, mediump> mediump_f64mat2x2;
   2145 
   2146 	/// Medium double-precision floating-point 2x3 matrix.
   2147 	/// @see gtc_type_precision
   2148 	typedef detail::tmat2x3<f64, mediump> mediump_f64mat2x3;
   2149 
   2150 	/// Medium double-precision floating-point 2x4 matrix.
   2151 	/// @see gtc_type_precision
   2152 	typedef detail::tmat2x4<f64, mediump> mediump_f64mat2x4;
   2153 
   2154 	/// Medium double-precision floating-point 3x2 matrix.
   2155 	/// @see gtc_type_precision
   2156 	typedef detail::tmat3x2<f64, mediump> mediump_f64mat3x2;
   2157 
   2158 	/// Medium double-precision floating-point 3x3 matrix.
   2159 	/// @see gtc_type_precision
   2160 	typedef detail::tmat3x3<f64, mediump> mediump_f64mat3x3;
   2161 
   2162 	/// Medium double-precision floating-point 3x4 matrix.
   2163 	/// @see gtc_type_precision
   2164 	typedef detail::tmat3x4<f64, mediump> mediump_f64mat3x4;
   2165 
   2166 	/// Medium double-precision floating-point 4x2 matrix.
   2167 	/// @see gtc_type_precision
   2168 	typedef detail::tmat4x2<f64, mediump> mediump_f64mat4x2;
   2169 
   2170 	/// Medium double-precision floating-point 4x3 matrix.
   2171 	/// @see gtc_type_precision
   2172 	typedef detail::tmat4x3<f64, mediump> mediump_f64mat4x3;
   2173 
   2174 	/// Medium double-precision floating-point 4x4 matrix.
   2175 	/// @see gtc_type_precision
   2176 	typedef detail::tmat4x4<f64, mediump> mediump_f64mat4x4;
   2177 
   2178 	/// Medium double-precision floating-point 1x1 matrix.
   2179 	/// @see gtc_type_precision
   2180 	//typedef mediump_f64mat1x1 mediump_f64mat1;
   2181 
   2182 	/// Medium double-precision floating-point 2x2 matrix.
   2183 	/// @see gtc_type_precision
   2184 	typedef mediump_f64mat2x2 mediump_f64mat2;
   2185 
   2186 	/// Medium double-precision floating-point 3x3 matrix.
   2187 	/// @see gtc_type_precision
   2188 	typedef mediump_f64mat3x3 mediump_f64mat3;
   2189 
   2190 	/// Medium double-precision floating-point 4x4 matrix.
   2191 	/// @see gtc_type_precision
   2192 	typedef mediump_f64mat4x4 mediump_f64mat4;
   2193 
   2194 	/// High double-precision floating-point 1x1 matrix.
   2195 	/// @see gtc_type_precision
   2196 	//typedef f64 highp_f64mat1x1;
   2197 
   2198 	/// High double-precision floating-point 2x2 matrix.
   2199 	/// @see gtc_type_precision
   2200 	typedef detail::tmat2x2<f64, highp> highp_f64mat2x2;
   2201 
   2202 	/// High double-precision floating-point 2x3 matrix.
   2203 	/// @see gtc_type_precision
   2204 	typedef detail::tmat2x3<f64, highp> highp_f64mat2x3;
   2205 
   2206 	/// High double-precision floating-point 2x4 matrix.
   2207 	/// @see gtc_type_precision
   2208 	typedef detail::tmat2x4<f64, highp> highp_f64mat2x4;
   2209 
   2210 	/// High double-precision floating-point 3x2 matrix.
   2211 	/// @see gtc_type_precision
   2212 	typedef detail::tmat3x2<f64, highp> highp_f64mat3x2;
   2213 
   2214 	/// High double-precision floating-point 3x3 matrix.
   2215 	/// @see gtc_type_precision
   2216 	typedef detail::tmat3x3<f64, highp> highp_f64mat3x3;
   2217 
   2218 	/// High double-precision floating-point 3x4 matrix.
   2219 	/// @see gtc_type_precision
   2220 	typedef detail::tmat3x4<f64, highp> highp_f64mat3x4;
   2221 
   2222 	/// High double-precision floating-point 4x2 matrix.
   2223 	/// @see gtc_type_precision
   2224 	typedef detail::tmat4x2<f64, highp> highp_f64mat4x2;
   2225 
   2226 	/// High double-precision floating-point 4x3 matrix.
   2227 	/// @see gtc_type_precision
   2228 	typedef detail::tmat4x3<f64, highp> highp_f64mat4x3;
   2229 
   2230 	/// High double-precision floating-point 4x4 matrix.
   2231 	/// @see gtc_type_precision
   2232 	typedef detail::tmat4x4<f64, highp> highp_f64mat4x4;
   2233 
   2234 	/// High double-precision floating-point 1x1 matrix.
   2235 	/// @see gtc_type_precision
   2236 	//typedef highp_f64mat1x1 highp_f64mat1;
   2237 
   2238 	/// High double-precision floating-point 2x2 matrix.
   2239 	/// @see gtc_type_precision
   2240 	typedef highp_f64mat2x2 highp_f64mat2;
   2241 
   2242 	/// High double-precision floating-point 3x3 matrix.
   2243 	/// @see gtc_type_precision
   2244 	typedef highp_f64mat3x3 highp_f64mat3;
   2245 
   2246 	/// High double-precision floating-point 4x4 matrix.
   2247 	/// @see gtc_type_precision
   2248 	typedef highp_f64mat4x4 highp_f64mat4;
   2249 
   2250 	//////////////////////////
   2251 	// Quaternion types
   2252 
   2253 	/// Low single-precision floating-point quaternion.
   2254 	/// @see gtc_type_precision
   2255 	typedef detail::tquat<f32, lowp> lowp_f32quat;
   2256 
   2257 	/// Low double-precision floating-point quaternion.
   2258 	/// @see gtc_type_precision
   2259 	typedef detail::tquat<f64, lowp> lowp_f64quat;
   2260 
   2261 	/// Medium single-precision floating-point quaternion.
   2262 	/// @see gtc_type_precision
   2263 	typedef detail::tquat<f32, mediump> mediump_f32quat;
   2264 
   2265 	/// Medium double-precision floating-point quaternion.
   2266 	/// @see gtc_type_precision
   2267 	typedef detail::tquat<f64, mediump> mediump_f64quat;
   2268 
   2269 	/// High single-precision floating-point quaternion.
   2270 	/// @see gtc_type_precision
   2271 	typedef detail::tquat<f32, highp> highp_f32quat;
   2272 
   2273 	/// High double-precision floating-point quaternion.
   2274 	/// @see gtc_type_precision
   2275 	typedef detail::tquat<f64, highp> highp_f64quat;
   2276 
   2277 
   2278 #if(defined(GLM_PRECISION_LOWP_FLOAT))
   2279 	typedef lowp_f32vec1			fvec1;
   2280 	typedef lowp_f32vec2			fvec2;
   2281 	typedef lowp_f32vec3			fvec3;
   2282 	typedef lowp_f32vec4			fvec4;
   2283 	typedef lowp_f32mat2			fmat2;
   2284 	typedef lowp_f32mat3			fmat3;
   2285 	typedef lowp_f32mat4			fmat4;
   2286 	typedef lowp_f32mat2x2			fmat2x2;
   2287 	typedef lowp_f32mat3x2			fmat3x2;
   2288 	typedef lowp_f32mat4x2			fmat4x2;
   2289 	typedef lowp_f32mat2x3			fmat2x3;
   2290 	typedef lowp_f32mat3x3			fmat3x3;
   2291 	typedef lowp_f32mat4x3			fmat4x3;
   2292 	typedef lowp_f32mat2x4			fmat2x4;
   2293 	typedef lowp_f32mat3x4			fmat3x4;
   2294 	typedef lowp_f32mat4x4			fmat4x4;
   2295 	typedef lowp_f32quat			fquat;
   2296 
   2297 	typedef lowp_f32vec1			f32vec1;
   2298 	typedef lowp_f32vec2			f32vec2;
   2299 	typedef lowp_f32vec3			f32vec3;
   2300 	typedef lowp_f32vec4			f32vec4;
   2301 	typedef lowp_f32mat2			f32mat2;
   2302 	typedef lowp_f32mat3			f32mat3;
   2303 	typedef lowp_f32mat4			f32mat4;
   2304 	typedef lowp_f32mat2x2			f32mat2x2;
   2305 	typedef lowp_f32mat3x2			f32mat3x2;
   2306 	typedef lowp_f32mat4x2			f32mat4x2;
   2307 	typedef lowp_f32mat2x3			f32mat2x3;
   2308 	typedef lowp_f32mat3x3			f32mat3x3;
   2309 	typedef lowp_f32mat4x3			f32mat4x3;
   2310 	typedef lowp_f32mat2x4			f32mat2x4;
   2311 	typedef lowp_f32mat3x4			f32mat3x4;
   2312 	typedef lowp_f32mat4x4			f32mat4x4;
   2313 	typedef lowp_f32quat			f32quat;
   2314 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
   2315 	typedef mediump_f32vec1			fvec1;
   2316 	typedef mediump_f32vec2			fvec2;
   2317 	typedef mediump_f32vec3			fvec3;
   2318 	typedef mediump_f32vec4			fvec4;
   2319 	typedef mediump_f32mat2			fmat2;
   2320 	typedef mediump_f32mat3			fmat3;
   2321 	typedef mediump_f32mat4			fmat4;
   2322 	typedef mediump_f32mat2x2		fmat2x2;
   2323 	typedef mediump_f32mat3x2		fmat3x2;
   2324 	typedef mediump_f32mat4x2		fmat4x2;
   2325 	typedef mediump_f32mat2x3		fmat2x3;
   2326 	typedef mediump_f32mat3x3		fmat3x3;
   2327 	typedef mediump_f32mat4x3		fmat4x3;
   2328 	typedef mediump_f32mat2x4		fmat2x4;
   2329 	typedef mediump_f32mat3x4		fmat3x4;
   2330 	typedef mediump_f32mat4x4		fmat4x4;
   2331 	typedef mediump_f32quat			fquat;
   2332 
   2333 	typedef mediump_f32vec1			f32vec1;
   2334 	typedef mediump_f32vec2			f32vec2;
   2335 	typedef mediump_f32vec3			f32vec3;
   2336 	typedef mediump_f32vec4			f32vec4;
   2337 	typedef mediump_f32mat2			f32mat2;
   2338 	typedef mediump_f32mat3			f32mat3;
   2339 	typedef mediump_f32mat4			f32mat4;
   2340 	typedef mediump_f32mat2x2		f32mat2x2;
   2341 	typedef mediump_f32mat3x2		f32mat3x2;
   2342 	typedef mediump_f32mat4x2		f32mat4x2;
   2343 	typedef mediump_f32mat2x3		f32mat2x3;
   2344 	typedef mediump_f32mat3x3		f32mat3x3;
   2345 	typedef mediump_f32mat4x3		f32mat4x3;
   2346 	typedef mediump_f32mat2x4		f32mat2x4;
   2347 	typedef mediump_f32mat3x4		f32mat3x4;
   2348 	typedef mediump_f32mat4x4		f32mat4x4;
   2349 	typedef mediump_f32quat			f32quat;
   2350 #else//if(defined(GLM_PRECISION_HIGHP_FLOAT))
   2351 	/// Default single-precision floating-point vector of 1 components.
   2352 	/// @see gtc_type_precision
   2353 	typedef highp_f32vec1			fvec1;
   2354 
   2355 	/// Default single-precision floating-point vector of 2 components.
   2356 	/// @see gtc_type_precision
   2357 	typedef highp_f32vec2			fvec2;
   2358 
   2359 	/// Default single-precision floating-point vector of 3 components.
   2360 	/// @see gtc_type_precision
   2361 	typedef highp_f32vec3			fvec3;
   2362 
   2363 	/// Default single-precision floating-point vector of 4 components.
   2364 	/// @see gtc_type_precision
   2365 	typedef highp_f32vec4			fvec4;
   2366 
   2367 	/// Default single-precision floating-point 2x2 matrix.
   2368 	/// @see gtc_type_precision
   2369 	typedef highp_f32mat2x2			fmat2x2;
   2370 
   2371 	/// Default single-precision floating-point 2x3 matrix.
   2372 	/// @see gtc_type_precision
   2373 	typedef highp_f32mat2x3			fmat2x3;
   2374 
   2375 	/// Default single-precision floating-point 2x4 matrix.
   2376 	/// @see gtc_type_precision
   2377 	typedef highp_f32mat2x4			fmat2x4;
   2378 
   2379 	/// Default single-precision floating-point 3x2 matrix.
   2380 	/// @see gtc_type_precision
   2381 	typedef highp_f32mat3x2			fmat3x2;
   2382 
   2383 	/// Default single-precision floating-point 3x3 matrix.
   2384 	/// @see gtc_type_precision
   2385 	typedef highp_f32mat3x3			fmat3x3;
   2386 
   2387 	/// Default single-precision floating-point 3x4 matrix.
   2388 	/// @see gtc_type_precision
   2389 	typedef highp_f32mat3x4			fmat3x4;
   2390 
   2391 	/// Default single-precision floating-point 4x2 matrix.
   2392 	/// @see gtc_type_precision
   2393 	typedef highp_f32mat4x2			fmat4x2;
   2394 
   2395 	/// Default single-precision floating-point 4x3 matrix.
   2396 	/// @see gtc_type_precision
   2397 	typedef highp_f32mat4x3			fmat4x3;
   2398 
   2399 	/// Default single-precision floating-point 4x4 matrix.
   2400 	/// @see gtc_type_precision
   2401 	typedef highp_f32mat4x4			fmat4x4;
   2402 
   2403 	/// Default single-precision floating-point 2x2 matrix.
   2404 	/// @see gtc_type_precision
   2405 	typedef fmat2x2					fmat2;
   2406 
   2407 	/// Default single-precision floating-point 3x3 matrix.
   2408 	/// @see gtc_type_precision
   2409 	typedef fmat3x3					fmat3;
   2410 
   2411 	/// Default single-precision floating-point 4x4 matrix.
   2412 	/// @see gtc_type_precision
   2413 	typedef fmat4x4					fmat4;
   2414 
   2415 	/// Default single-precision floating-point quaternion.
   2416 	/// @see gtc_type_precision
   2417 	typedef highp_fquat				fquat;
   2418 
   2419 
   2420 
   2421 	/// Default single-precision floating-point vector of 1 components.
   2422 	/// @see gtc_type_precision
   2423 	typedef highp_f32vec1			f32vec1;
   2424 
   2425 	/// Default single-precision floating-point vector of 2 components.
   2426 	/// @see gtc_type_precision
   2427 	typedef highp_f32vec2			f32vec2;
   2428 
   2429 	/// Default single-precision floating-point vector of 3 components.
   2430 	/// @see gtc_type_precision
   2431 	typedef highp_f32vec3			f32vec3;
   2432 
   2433 	/// Default single-precision floating-point vector of 4 components.
   2434 	/// @see gtc_type_precision
   2435 	typedef highp_f32vec4			f32vec4;
   2436 
   2437 	/// Default single-precision floating-point 2x2 matrix.
   2438 	/// @see gtc_type_precision
   2439 	typedef highp_f32mat2x2			f32mat2x2;
   2440 
   2441 	/// Default single-precision floating-point 2x3 matrix.
   2442 	/// @see gtc_type_precision
   2443 	typedef highp_f32mat2x3			f32mat2x3;
   2444 
   2445 	/// Default single-precision floating-point 2x4 matrix.
   2446 	/// @see gtc_type_precision
   2447 	typedef highp_f32mat2x4			f32mat2x4;
   2448 
   2449 	/// Default single-precision floating-point 3x2 matrix.
   2450 	/// @see gtc_type_precision
   2451 	typedef highp_f32mat3x2			f32mat3x2;
   2452 
   2453 	/// Default single-precision floating-point 3x3 matrix.
   2454 	/// @see gtc_type_precision
   2455 	typedef highp_f32mat3x3			f32mat3x3;
   2456 
   2457 	/// Default single-precision floating-point 3x4 matrix.
   2458 	/// @see gtc_type_precision
   2459 	typedef highp_f32mat3x4			f32mat3x4;
   2460 
   2461 	/// Default single-precision floating-point 4x2 matrix.
   2462 	/// @see gtc_type_precision
   2463 	typedef highp_f32mat4x2			f32mat4x2;
   2464 
   2465 	/// Default single-precision floating-point 4x3 matrix.
   2466 	/// @see gtc_type_precision
   2467 	typedef highp_f32mat4x3			f32mat4x3;
   2468 
   2469 	/// Default single-precision floating-point 4x4 matrix.
   2470 	/// @see gtc_type_precision
   2471 	typedef highp_f32mat4x4			f32mat4x4;
   2472 
   2473 	/// Default single-precision floating-point 2x2 matrix.
   2474 	/// @see gtc_type_precision
   2475 	typedef f32mat2x2				f32mat2;
   2476 
   2477 	/// Default single-precision floating-point 3x3 matrix.
   2478 	/// @see gtc_type_precision
   2479 	typedef f32mat3x3				f32mat3;
   2480 
   2481 	/// Default single-precision floating-point 4x4 matrix.
   2482 	/// @see gtc_type_precision
   2483 	typedef f32mat4x4				f32mat4;
   2484 
   2485 	/// Default single-precision floating-point quaternion.
   2486 	/// @see gtc_type_precision
   2487 	typedef highp_f32quat			f32quat;
   2488 #endif
   2489 
   2490 
   2491 #if(defined(GLM_PRECISION_LOWP_DOUBLE))
   2492 	typedef lowp_f64vec1			f64vec1;
   2493 	typedef lowp_f64vec2			f64vec2;
   2494 	typedef lowp_f64vec3			f64vec3;
   2495 	typedef lowp_f64vec4			f64vec4;
   2496 	typedef lowp_f64mat2			f64mat2;
   2497 	typedef lowp_f64mat3			f64mat3;
   2498 	typedef lowp_f64mat4			f64mat4;
   2499 	typedef lowp_f64mat2x2			f64mat2x2;
   2500 	typedef lowp_f64mat3x2			f64mat3x2;
   2501 	typedef lowp_f64mat4x2			f64mat4x2;
   2502 	typedef lowp_f64mat2x3			f64mat2x3;
   2503 	typedef lowp_f64mat3x3			f64mat3x3;
   2504 	typedef lowp_f64mat4x3			f64mat4x3;
   2505 	typedef lowp_f64mat2x4			f64mat2x4;
   2506 	typedef lowp_f64mat3x4			f64mat3x4;
   2507 	typedef lowp_f64mat4x4			f64mat4x4;
   2508 	typedef lowp_f64quat			f64quat;
   2509 #elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE))
   2510 	typedef mediump_f64vec1			f64vec1;
   2511 	typedef mediump_f64vec2			f64vec2;
   2512 	typedef mediump_f64vec3			f64vec3;
   2513 	typedef mediump_f64vec4			f64vec4;
   2514 	typedef mediump_f64mat2			f64mat2;
   2515 	typedef mediump_f64mat3			f64mat3;
   2516 	typedef mediump_f64mat4			f64mat4;
   2517 	typedef mediump_f64mat2x2		f64mat2x2;
   2518 	typedef mediump_f64mat3x2		f64mat3x2;
   2519 	typedef mediump_f64mat4x2		f64mat4x2;
   2520 	typedef mediump_f64mat2x3		f64mat2x3;
   2521 	typedef mediump_f64mat3x3		f64mat3x3;
   2522 	typedef mediump_f64mat4x3		f64mat4x3;
   2523 	typedef mediump_f64mat2x4		f64mat2x4;
   2524 	typedef mediump_f64mat3x4		f64mat3x4;
   2525 	typedef mediump_f64mat4x4		f64mat4x4;
   2526 	typedef mediump_f64quat			f64quat;
   2527 #else
   2528 	/// Default double-precision floating-point vector of 1 components.
   2529 	/// @see gtc_type_precision
   2530 	typedef highp_f64vec1			f64vec1;
   2531 
   2532 	/// Default double-precision floating-point vector of 2 components.
   2533 	/// @see gtc_type_precision
   2534 	typedef highp_f64vec2			f64vec2;
   2535 
   2536 	/// Default double-precision floating-point vector of 3 components.
   2537 	/// @see gtc_type_precision
   2538 	typedef highp_f64vec3			f64vec3;
   2539 
   2540 	/// Default double-precision floating-point vector of 4 components.
   2541 	/// @see gtc_type_precision
   2542 	typedef highp_f64vec4			f64vec4;
   2543 
   2544 	/// Default double-precision floating-point 2x2 matrix.
   2545 	/// @see gtc_type_precision
   2546 	typedef highp_f64mat2x2			f64mat2x2;
   2547 
   2548 	/// Default double-precision floating-point 2x3 matrix.
   2549 	/// @see gtc_type_precision
   2550 	typedef highp_f64mat2x3			f64mat2x3;
   2551 
   2552 	/// Default double-precision floating-point 2x4 matrix.
   2553 	/// @see gtc_type_precision
   2554 	typedef highp_f64mat2x4			f64mat2x4;
   2555 
   2556 	/// Default double-precision floating-point 3x2 matrix.
   2557 	/// @see gtc_type_precision
   2558 	typedef highp_f64mat3x2			f64mat3x2;
   2559 
   2560 	/// Default double-precision floating-point 3x3 matrix.
   2561 	/// @see gtc_type_precision
   2562 	typedef highp_f64mat3x3			f64mat3x3;
   2563 
   2564 	/// Default double-precision floating-point 3x4 matrix.
   2565 	/// @see gtc_type_precision
   2566 	typedef highp_f64mat3x4			f64mat3x4;
   2567 
   2568 	/// Default double-precision floating-point 4x2 matrix.
   2569 	/// @see gtc_type_precision
   2570 	typedef highp_f64mat4x2			f64mat4x2;
   2571 
   2572 	/// Default double-precision floating-point 4x3 matrix.
   2573 	/// @see gtc_type_precision
   2574 	typedef highp_f64mat4x3			f64mat4x3;
   2575 
   2576 	/// Default double-precision floating-point 4x4 matrix.
   2577 	/// @see gtc_type_precision
   2578 	typedef highp_f64mat4x4			f64mat4x4;
   2579 
   2580 	/// Default double-precision floating-point 2x2 matrix.
   2581 	/// @see gtc_type_precision
   2582 	typedef f64mat2x2				f64mat2;
   2583 
   2584 	/// Default double-precision floating-point 3x3 matrix.
   2585 	/// @see gtc_type_precision
   2586 	typedef f64mat3x3				f64mat3;
   2587 
   2588 	/// Default double-precision floating-point 4x4 matrix.
   2589 	/// @see gtc_type_precision
   2590 	typedef f64mat4x4				f64mat4;
   2591 
   2592 	/// Default double-precision floating-point quaternion.
   2593 	/// @see gtc_type_precision
   2594 	typedef highp_f64quat			f64quat;
   2595 #endif
   2596 }//namespace glm
   2597 
   2598 #endif//GLM_FWD_INCLUDED
   2599