• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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