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