1#pragma once
2
3#include "detail/qualifier.hpp"
4
5namespace glm
6{
7#if GLM_HAS_EXTENDED_INTEGER_TYPE
8 typedef std::int8_t int8;
9 typedef std::int16_t int16;
10 typedef std::int32_t int32;
11 typedef std::int64_t int64;
12
13 typedef std::uint8_t uint8;
14 typedef std::uint16_t uint16;
15 typedef std::uint32_t uint32;
16 typedef std::uint64_t uint64;
17#else
18 typedef signed char int8;
19 typedef signed short int16;
20 typedef signed int int32;
21 typedef detail::int64 int64;
22
23 typedef unsigned char uint8;
24 typedef unsigned short uint16;
25 typedef unsigned int uint32;
26 typedef detail::uint64 uint64;
27#endif
28
29 // Scalar int
30
31 typedef int8 lowp_i8;
32 typedef int8 mediump_i8;
33 typedef int8 highp_i8;
34 typedef int8 i8;
35
36 typedef int8 lowp_int8;
37 typedef int8 mediump_int8;
38 typedef int8 highp_int8;
39
40 typedef int8 lowp_int8_t;
41 typedef int8 mediump_int8_t;
42 typedef int8 highp_int8_t;
43 typedef int8 int8_t;
44
45 typedef int16 lowp_i16;
46 typedef int16 mediump_i16;
47 typedef int16 highp_i16;
48 typedef int16 i16;
49
50 typedef int16 lowp_int16;
51 typedef int16 mediump_int16;
52 typedef int16 highp_int16;
53
54 typedef int16 lowp_int16_t;
55 typedef int16 mediump_int16_t;
56 typedef int16 highp_int16_t;
57 typedef int16 int16_t;
58
59 typedef int32 lowp_i32;
60 typedef int32 mediump_i32;
61 typedef int32 highp_i32;
62 typedef int32 i32;
63
64 typedef int32 lowp_int32;
65 typedef int32 mediump_int32;
66 typedef int32 highp_int32;
67
68 typedef int32 lowp_int32_t;
69 typedef int32 mediump_int32_t;
70 typedef int32 highp_int32_t;
71 typedef int32 int32_t;
72
73 typedef int64 lowp_i64;
74 typedef int64 mediump_i64;
75 typedef int64 highp_i64;
76 typedef int64 i64;
77
78 typedef int64 lowp_int64;
79 typedef int64 mediump_int64;
80 typedef int64 highp_int64;
81
82 typedef int64 lowp_int64_t;
83 typedef int64 mediump_int64_t;
84 typedef int64 highp_int64_t;
85 typedef int64 int64_t;
86
87 // Scalar uint
88
89 typedef unsigned int uint;
90
91 typedef uint8 lowp_u8;
92 typedef uint8 mediump_u8;
93 typedef uint8 highp_u8;
94 typedef uint8 u8;
95
96 typedef uint8 lowp_uint8;
97 typedef uint8 mediump_uint8;
98 typedef uint8 highp_uint8;
99
100 typedef uint8 lowp_uint8_t;
101 typedef uint8 mediump_uint8_t;
102 typedef uint8 highp_uint8_t;
103 typedef uint8 uint8_t;
104
105 typedef uint16 lowp_u16;
106 typedef uint16 mediump_u16;
107 typedef uint16 highp_u16;
108 typedef uint16 u16;
109
110 typedef uint16 lowp_uint16;
111 typedef uint16 mediump_uint16;
112 typedef uint16 highp_uint16;
113
114 typedef uint16 lowp_uint16_t;
115 typedef uint16 mediump_uint16_t;
116 typedef uint16 highp_uint16_t;
117 typedef uint16 uint16_t;
118
119 typedef uint32 lowp_u32;
120 typedef uint32 mediump_u32;
121 typedef uint32 highp_u32;
122 typedef uint32 u32;
123
124 typedef uint32 lowp_uint32;
125 typedef uint32 mediump_uint32;
126 typedef uint32 highp_uint32;
127
128 typedef uint32 lowp_uint32_t;
129 typedef uint32 mediump_uint32_t;
130 typedef uint32 highp_uint32_t;
131 typedef uint32 uint32_t;
132
133 typedef uint64 lowp_u64;
134 typedef uint64 mediump_u64;
135 typedef uint64 highp_u64;
136 typedef uint64 u64;
137
138 typedef uint64 lowp_uint64;
139 typedef uint64 mediump_uint64;
140 typedef uint64 highp_uint64;
141
142 typedef uint64 lowp_uint64_t;
143 typedef uint64 mediump_uint64_t;
144 typedef uint64 highp_uint64_t;
145 typedef uint64 uint64_t;
146
147 // Scalar float
148
149 typedef float lowp_f32;
150 typedef float mediump_f32;
151 typedef float highp_f32;
152 typedef float f32;
153
154 typedef float lowp_float32;
155 typedef float mediump_float32;
156 typedef float highp_float32;
157 typedef float float32;
158
159 typedef float lowp_float32_t;
160 typedef float mediump_float32_t;
161 typedef float highp_float32_t;
162 typedef float float32_t;
163
164
165 typedef double lowp_f64;
166 typedef double mediump_f64;
167 typedef double highp_f64;
168 typedef double f64;
169
170 typedef double lowp_float64;
171 typedef double mediump_float64;
172 typedef double highp_float64;
173 typedef double float64;
174
175 typedef double lowp_float64_t;
176 typedef double mediump_float64_t;
177 typedef double highp_float64_t;
178 typedef double float64_t;
179
180 // Vector bool
181
182 typedef vec<1, bool, lowp> lowp_bvec1;
183 typedef vec<2, bool, lowp> lowp_bvec2;
184 typedef vec<3, bool, lowp> lowp_bvec3;
185 typedef vec<4, bool, lowp> lowp_bvec4;
186
187 typedef vec<1, bool, mediump> mediump_bvec1;
188 typedef vec<2, bool, mediump> mediump_bvec2;
189 typedef vec<3, bool, mediump> mediump_bvec3;
190 typedef vec<4, bool, mediump> mediump_bvec4;
191
192 typedef vec<1, bool, highp> highp_bvec1;
193 typedef vec<2, bool, highp> highp_bvec2;
194 typedef vec<3, bool, highp> highp_bvec3;
195 typedef vec<4, bool, highp> highp_bvec4;
196
197 typedef vec<1, bool, defaultp> bvec1;
198 typedef vec<2, bool, defaultp> bvec2;
199 typedef vec<3, bool, defaultp> bvec3;
200 typedef vec<4, bool, defaultp> bvec4;
201
202 // Vector int
203
204 typedef vec<1, int, lowp> lowp_ivec1;
205 typedef vec<2, int, lowp> lowp_ivec2;
206 typedef vec<3, int, lowp> lowp_ivec3;
207 typedef vec<4, int, lowp> lowp_ivec4;
208
209 typedef vec<1, int, mediump> mediump_ivec1;
210 typedef vec<2, int, mediump> mediump_ivec2;
211 typedef vec<3, int, mediump> mediump_ivec3;
212 typedef vec<4, int, mediump> mediump_ivec4;
213
214 typedef vec<1, int, highp> highp_ivec1;
215 typedef vec<2, int, highp> highp_ivec2;
216 typedef vec<3, int, highp> highp_ivec3;
217 typedef vec<4, int, highp> highp_ivec4;
218
219 typedef vec<1, int, defaultp> ivec1;
220 typedef vec<2, int, defaultp> ivec2;
221 typedef vec<3, int, defaultp> ivec3;
222 typedef vec<4, int, defaultp> ivec4;
223
224 typedef vec<1, i8, lowp> lowp_i8vec1;
225 typedef vec<2, i8, lowp> lowp_i8vec2;
226 typedef vec<3, i8, lowp> lowp_i8vec3;
227 typedef vec<4, i8, lowp> lowp_i8vec4;
228
229 typedef vec<1, i8, mediump> mediump_i8vec1;
230 typedef vec<2, i8, mediump> mediump_i8vec2;
231 typedef vec<3, i8, mediump> mediump_i8vec3;
232 typedef vec<4, i8, mediump> mediump_i8vec4;
233
234 typedef vec<1, i8, highp> highp_i8vec1;
235 typedef vec<2, i8, highp> highp_i8vec2;
236 typedef vec<3, i8, highp> highp_i8vec3;
237 typedef vec<4, i8, highp> highp_i8vec4;
238
239 typedef vec<1, i8, defaultp> i8vec1;
240 typedef vec<2, i8, defaultp> i8vec2;
241 typedef vec<3, i8, defaultp> i8vec3;
242 typedef vec<4, i8, defaultp> i8vec4;
243
244 typedef vec<1, i16, lowp> lowp_i16vec1;
245 typedef vec<2, i16, lowp> lowp_i16vec2;
246 typedef vec<3, i16, lowp> lowp_i16vec3;
247 typedef vec<4, i16, lowp> lowp_i16vec4;
248
249 typedef vec<1, i16, mediump> mediump_i16vec1;
250 typedef vec<2, i16, mediump> mediump_i16vec2;
251 typedef vec<3, i16, mediump> mediump_i16vec3;
252 typedef vec<4, i16, mediump> mediump_i16vec4;
253
254 typedef vec<1, i16, highp> highp_i16vec1;
255 typedef vec<2, i16, highp> highp_i16vec2;
256 typedef vec<3, i16, highp> highp_i16vec3;
257 typedef vec<4, i16, highp> highp_i16vec4;
258
259 typedef vec<1, i16, defaultp> i16vec1;
260 typedef vec<2, i16, defaultp> i16vec2;
261 typedef vec<3, i16, defaultp> i16vec3;
262 typedef vec<4, i16, defaultp> i16vec4;
263
264 typedef vec<1, i32, lowp> lowp_i32vec1;
265 typedef vec<2, i32, lowp> lowp_i32vec2;
266 typedef vec<3, i32, lowp> lowp_i32vec3;
267 typedef vec<4, i32, lowp> lowp_i32vec4;
268
269 typedef vec<1, i32, mediump> mediump_i32vec1;
270 typedef vec<2, i32, mediump> mediump_i32vec2;
271 typedef vec<3, i32, mediump> mediump_i32vec3;
272 typedef vec<4, i32, mediump> mediump_i32vec4;
273
274 typedef vec<1, i32, highp> highp_i32vec1;
275 typedef vec<2, i32, highp> highp_i32vec2;
276 typedef vec<3, i32, highp> highp_i32vec3;
277 typedef vec<4, i32, highp> highp_i32vec4;
278
279 typedef vec<1, i32, defaultp> i32vec1;
280 typedef vec<2, i32, defaultp> i32vec2;
281 typedef vec<3, i32, defaultp> i32vec3;
282 typedef vec<4, i32, defaultp> i32vec4;
283
284 typedef vec<1, i64, lowp> lowp_i64vec1;
285 typedef vec<2, i64, lowp> lowp_i64vec2;
286 typedef vec<3, i64, lowp> lowp_i64vec3;
287 typedef vec<4, i64, lowp> lowp_i64vec4;
288
289 typedef vec<1, i64, mediump> mediump_i64vec1;
290 typedef vec<2, i64, mediump> mediump_i64vec2;
291 typedef vec<3, i64, mediump> mediump_i64vec3;
292 typedef vec<4, i64, mediump> mediump_i64vec4;
293
294 typedef vec<1, i64, highp> highp_i64vec1;
295 typedef vec<2, i64, highp> highp_i64vec2;
296 typedef vec<3, i64, highp> highp_i64vec3;
297 typedef vec<4, i64, highp> highp_i64vec4;
298
299 typedef vec<1, i64, defaultp> i64vec1;
300 typedef vec<2, i64, defaultp> i64vec2;
301 typedef vec<3, i64, defaultp> i64vec3;
302 typedef vec<4, i64, defaultp> i64vec4;
303
304 // Vector uint
305
306 typedef vec<1, uint, lowp> lowp_uvec1;
307 typedef vec<2, uint, lowp> lowp_uvec2;
308 typedef vec<3, uint, lowp> lowp_uvec3;
309 typedef vec<4, uint, lowp> lowp_uvec4;
310
311 typedef vec<1, uint, mediump> mediump_uvec1;
312 typedef vec<2, uint, mediump> mediump_uvec2;
313 typedef vec<3, uint, mediump> mediump_uvec3;
314 typedef vec<4, uint, mediump> mediump_uvec4;
315
316 typedef vec<1, uint, highp> highp_uvec1;
317 typedef vec<2, uint, highp> highp_uvec2;
318 typedef vec<3, uint, highp> highp_uvec3;
319 typedef vec<4, uint, highp> highp_uvec4;
320
321 typedef vec<1, uint, defaultp> uvec1;
322 typedef vec<2, uint, defaultp> uvec2;
323 typedef vec<3, uint, defaultp> uvec3;
324 typedef vec<4, uint, defaultp> uvec4;
325
326 typedef vec<1, u8, lowp> lowp_u8vec1;
327 typedef vec<2, u8, lowp> lowp_u8vec2;
328 typedef vec<3, u8, lowp> lowp_u8vec3;
329 typedef vec<4, u8, lowp> lowp_u8vec4;
330
331 typedef vec<1, u8, mediump> mediump_u8vec1;
332 typedef vec<2, u8, mediump> mediump_u8vec2;
333 typedef vec<3, u8, mediump> mediump_u8vec3;
334 typedef vec<4, u8, mediump> mediump_u8vec4;
335
336 typedef vec<1, u8, highp> highp_u8vec1;
337 typedef vec<2, u8, highp> highp_u8vec2;
338 typedef vec<3, u8, highp> highp_u8vec3;
339 typedef vec<4, u8, highp> highp_u8vec4;
340
341 typedef vec<1, u8, defaultp> u8vec1;
342 typedef vec<2, u8, defaultp> u8vec2;
343 typedef vec<3, u8, defaultp> u8vec3;
344 typedef vec<4, u8, defaultp> u8vec4;
345
346 typedef vec<1, u16, lowp> lowp_u16vec1;
347 typedef vec<2, u16, lowp> lowp_u16vec2;
348 typedef vec<3, u16, lowp> lowp_u16vec3;
349 typedef vec<4, u16, lowp> lowp_u16vec4;
350
351 typedef vec<1, u16, mediump> mediump_u16vec1;
352 typedef vec<2, u16, mediump> mediump_u16vec2;
353 typedef vec<3, u16, mediump> mediump_u16vec3;
354 typedef vec<4, u16, mediump> mediump_u16vec4;
355
356 typedef vec<1, u16, highp> highp_u16vec1;
357 typedef vec<2, u16, highp> highp_u16vec2;
358 typedef vec<3, u16, highp> highp_u16vec3;
359 typedef vec<4, u16, highp> highp_u16vec4;
360
361 typedef vec<1, u16, defaultp> u16vec1;
362 typedef vec<2, u16, defaultp> u16vec2;
363 typedef vec<3, u16, defaultp> u16vec3;
364 typedef vec<4, u16, defaultp> u16vec4;
365
366 typedef vec<1, u32, lowp> lowp_u32vec1;
367 typedef vec<2, u32, lowp> lowp_u32vec2;
368 typedef vec<3, u32, lowp> lowp_u32vec3;
369 typedef vec<4, u32, lowp> lowp_u32vec4;
370
371 typedef vec<1, u32, mediump> mediump_u32vec1;
372 typedef vec<2, u32, mediump> mediump_u32vec2;
373 typedef vec<3, u32, mediump> mediump_u32vec3;
374 typedef vec<4, u32, mediump> mediump_u32vec4;
375
376 typedef vec<1, u32, highp> highp_u32vec1;
377 typedef vec<2, u32, highp> highp_u32vec2;
378 typedef vec<3, u32, highp> highp_u32vec3;
379 typedef vec<4, u32, highp> highp_u32vec4;
380
381 typedef vec<1, u32, defaultp> u32vec1;
382 typedef vec<2, u32, defaultp> u32vec2;
383 typedef vec<3, u32, defaultp> u32vec3;
384 typedef vec<4, u32, defaultp> u32vec4;
385
386 typedef vec<1, u64, lowp> lowp_u64vec1;
387 typedef vec<2, u64, lowp> lowp_u64vec2;
388 typedef vec<3, u64, lowp> lowp_u64vec3;
389 typedef vec<4, u64, lowp> lowp_u64vec4;
390
391 typedef vec<1, u64, mediump> mediump_u64vec1;
392 typedef vec<2, u64, mediump> mediump_u64vec2;
393 typedef vec<3, u64, mediump> mediump_u64vec3;
394 typedef vec<4, u64, mediump> mediump_u64vec4;
395
396 typedef vec<1, u64, highp> highp_u64vec1;
397 typedef vec<2, u64, highp> highp_u64vec2;
398 typedef vec<3, u64, highp> highp_u64vec3;
399 typedef vec<4, u64, highp> highp_u64vec4;
400
401 typedef vec<1, u64, defaultp> u64vec1;
402 typedef vec<2, u64, defaultp> u64vec2;
403 typedef vec<3, u64, defaultp> u64vec3;
404 typedef vec<4, u64, defaultp> u64vec4;
405
406 // Vector float
407
408 typedef vec<1, float, lowp> lowp_vec1;
409 typedef vec<2, float, lowp> lowp_vec2;
410 typedef vec<3, float, lowp> lowp_vec3;
411 typedef vec<4, float, lowp> lowp_vec4;
412
413 typedef vec<1, float, mediump> mediump_vec1;
414 typedef vec<2, float, mediump> mediump_vec2;
415 typedef vec<3, float, mediump> mediump_vec3;
416 typedef vec<4, float, mediump> mediump_vec4;
417
418 typedef vec<1, float, highp> highp_vec1;
419 typedef vec<2, float, highp> highp_vec2;
420 typedef vec<3, float, highp> highp_vec3;
421 typedef vec<4, float, highp> highp_vec4;
422
423 typedef vec<1, float, defaultp> vec1;
424 typedef vec<2, float, defaultp> vec2;
425 typedef vec<3, float, defaultp> vec3;
426 typedef vec<4, float, defaultp> vec4;
427
428 typedef vec<1, float, lowp> lowp_fvec1;
429 typedef vec<2, float, lowp> lowp_fvec2;
430 typedef vec<3, float, lowp> lowp_fvec3;
431 typedef vec<4, float, lowp> lowp_fvec4;
432
433 typedef vec<1, float, mediump> mediump_fvec1;
434 typedef vec<2, float, mediump> mediump_fvec2;
435 typedef vec<3, float, mediump> mediump_fvec3;
436 typedef vec<4, float, mediump> mediump_fvec4;
437
438 typedef vec<1, float, highp> highp_fvec1;
439 typedef vec<2, float, highp> highp_fvec2;
440 typedef vec<3, float, highp> highp_fvec3;
441 typedef vec<4, float, highp> highp_fvec4;
442
443 typedef vec<1, f32, defaultp> fvec1;
444 typedef vec<2, f32, defaultp> fvec2;
445 typedef vec<3, f32, defaultp> fvec3;
446 typedef vec<4, f32, defaultp> fvec4;
447
448 typedef vec<1, f32, lowp> lowp_f32vec1;
449 typedef vec<2, f32, lowp> lowp_f32vec2;
450 typedef vec<3, f32, lowp> lowp_f32vec3;
451 typedef vec<4, f32, lowp> lowp_f32vec4;
452
453 typedef vec<1, f32, mediump> mediump_f32vec1;
454 typedef vec<2, f32, mediump> mediump_f32vec2;
455 typedef vec<3, f32, mediump> mediump_f32vec3;
456 typedef vec<4, f32, mediump> mediump_f32vec4;
457
458 typedef vec<1, f32, highp> highp_f32vec1;
459 typedef vec<2, f32, highp> highp_f32vec2;
460 typedef vec<3, f32, highp> highp_f32vec3;
461 typedef vec<4, f32, highp> highp_f32vec4;
462
463 typedef vec<1, f32, defaultp> f32vec1;
464 typedef vec<2, f32, defaultp> f32vec2;
465 typedef vec<3, f32, defaultp> f32vec3;
466 typedef vec<4, f32, defaultp> f32vec4;
467
468 typedef vec<1, f64, lowp> lowp_dvec1;
469 typedef vec<2, f64, lowp> lowp_dvec2;
470 typedef vec<3, f64, lowp> lowp_dvec3;
471 typedef vec<4, f64, lowp> lowp_dvec4;
472
473 typedef vec<1, f64, mediump> mediump_dvec1;
474 typedef vec<2, f64, mediump> mediump_dvec2;
475 typedef vec<3, f64, mediump> mediump_dvec3;
476 typedef vec<4, f64, mediump> mediump_dvec4;
477
478 typedef vec<1, f64, highp> highp_dvec1;
479 typedef vec<2, f64, highp> highp_dvec2;
480 typedef vec<3, f64, highp> highp_dvec3;
481 typedef vec<4, f64, highp> highp_dvec4;
482
483 typedef vec<1, f64, defaultp> dvec1;
484 typedef vec<2, f64, defaultp> dvec2;
485 typedef vec<3, f64, defaultp> dvec3;
486 typedef vec<4, f64, defaultp> dvec4;
487
488 typedef vec<1, f64, lowp> lowp_f64vec1;
489 typedef vec<2, f64, lowp> lowp_f64vec2;
490 typedef vec<3, f64, lowp> lowp_f64vec3;
491 typedef vec<4, f64, lowp> lowp_f64vec4;
492
493 typedef vec<1, f64, mediump> mediump_f64vec1;
494 typedef vec<2, f64, mediump> mediump_f64vec2;
495 typedef vec<3, f64, mediump> mediump_f64vec3;
496 typedef vec<4, f64, mediump> mediump_f64vec4;
497
498 typedef vec<1, f64, highp> highp_f64vec1;
499 typedef vec<2, f64, highp> highp_f64vec2;
500 typedef vec<3, f64, highp> highp_f64vec3;
501 typedef vec<4, f64, highp> highp_f64vec4;
502
503 typedef vec<1, f64, defaultp> f64vec1;
504 typedef vec<2, f64, defaultp> f64vec2;
505 typedef vec<3, f64, defaultp> f64vec3;
506 typedef vec<4, f64, defaultp> f64vec4;
507
508 // Matrix NxN
509
510 typedef mat<2, 2, f32, lowp> lowp_mat2;
511 typedef mat<3, 3, f32, lowp> lowp_mat3;
512 typedef mat<4, 4, f32, lowp> lowp_mat4;
513
514 typedef mat<2, 2, f32, mediump> mediump_mat2;
515 typedef mat<3, 3, f32, mediump> mediump_mat3;
516 typedef mat<4, 4, f32, mediump> mediump_mat4;
517
518 typedef mat<2, 2, f32, highp> highp_mat2;
519 typedef mat<3, 3, f32, highp> highp_mat3;
520 typedef mat<4, 4, f32, highp> highp_mat4;
521
522 typedef mat<2, 2, f32, defaultp> mat2;
523 typedef mat<3, 3, f32, defaultp> mat3;
524 typedef mat<4, 4, f32, defaultp> mat4;
525
526 typedef mat<2, 2, f32, lowp> lowp_fmat2;
527 typedef mat<3, 3, f32, lowp> lowp_fmat3;
528 typedef mat<4, 4, f32, lowp> lowp_fmat4;
529
530 typedef mat<2, 2, f32, mediump> mediump_fmat2;
531 typedef mat<3, 3, f32, mediump> mediump_fmat3;
532 typedef mat<4, 4, f32, mediump> mediump_fmat4;
533
534 typedef mat<2, 2, f32, highp> highp_fmat2;
535 typedef mat<3, 3, f32, highp> highp_fmat3;
536 typedef mat<4, 4, f32, highp> highp_fmat4;
537
538 typedef mat<2, 2, f32, defaultp> fmat2;
539 typedef mat<3, 3, f32, defaultp> fmat3;
540 typedef mat<4, 4, f32, defaultp> fmat4;
541
542 typedef mat<2, 2, f32, lowp> lowp_f32mat2;
543 typedef mat<3, 3, f32, lowp> lowp_f32mat3;
544 typedef mat<4, 4, f32, lowp> lowp_f32mat4;
545
546 typedef mat<2, 2, f32, mediump> mediump_f32mat2;
547 typedef mat<3, 3, f32, mediump> mediump_f32mat3;
548 typedef mat<4, 4, f32, mediump> mediump_f32mat4;
549
550 typedef mat<2, 2, f32, highp> highp_f32mat2;
551 typedef mat<3, 3, f32, highp> highp_f32mat3;
552 typedef mat<4, 4, f32, highp> highp_f32mat4;
553
554 typedef mat<2, 2, f32, defaultp> f32mat2;
555 typedef mat<3, 3, f32, defaultp> f32mat3;
556 typedef mat<4, 4, f32, defaultp> f32mat4;
557
558 typedef mat<2, 2, f64, lowp> lowp_dmat2;
559 typedef mat<3, 3, f64, lowp> lowp_dmat3;
560 typedef mat<4, 4, f64, lowp> lowp_dmat4;
561
562 typedef mat<2, 2, f64, mediump> mediump_dmat2;
563 typedef mat<3, 3, f64, mediump> mediump_dmat3;
564 typedef mat<4, 4, f64, mediump> mediump_dmat4;
565
566 typedef mat<2, 2, f64, highp> highp_dmat2;
567 typedef mat<3, 3, f64, highp> highp_dmat3;
568 typedef mat<4, 4, f64, highp> highp_dmat4;
569
570 typedef mat<2, 2, f64, defaultp> dmat2;
571 typedef mat<3, 3, f64, defaultp> dmat3;
572 typedef mat<4, 4, f64, defaultp> dmat4;
573
574 typedef mat<2, 2, f64, lowp> lowp_f64mat2;
575 typedef mat<3, 3, f64, lowp> lowp_f64mat3;
576 typedef mat<4, 4, f64, lowp> lowp_f64mat4;
577
578 typedef mat<2, 2, f64, mediump> mediump_f64mat2;
579 typedef mat<3, 3, f64, mediump> mediump_f64mat3;
580 typedef mat<4, 4, f64, mediump> mediump_f64mat4;
581
582 typedef mat<2, 2, f64, highp> highp_f64mat2;
583 typedef mat<3, 3, f64, highp> highp_f64mat3;
584 typedef mat<4, 4, f64, highp> highp_f64mat4;
585
586 typedef mat<2, 2, f64, defaultp> f64mat2;
587 typedef mat<3, 3, f64, defaultp> f64mat3;
588 typedef mat<4, 4, f64, defaultp> f64mat4;
589
590 // Matrix MxN
591
592 typedef mat<2, 2, f32, lowp> lowp_mat2x2;
593 typedef mat<2, 3, f32, lowp> lowp_mat2x3;
594 typedef mat<2, 4, f32, lowp> lowp_mat2x4;
595 typedef mat<3, 2, f32, lowp> lowp_mat3x2;
596 typedef mat<3, 3, f32, lowp> lowp_mat3x3;
597 typedef mat<3, 4, f32, lowp> lowp_mat3x4;
598 typedef mat<4, 2, f32, lowp> lowp_mat4x2;
599 typedef mat<4, 3, f32, lowp> lowp_mat4x3;
600 typedef mat<4, 4, f32, lowp> lowp_mat4x4;
601
602 typedef mat<2, 2, f32, mediump> mediump_mat2x2;
603 typedef mat<2, 3, f32, mediump> mediump_mat2x3;
604 typedef mat<2, 4, f32, mediump> mediump_mat2x4;
605 typedef mat<3, 2, f32, mediump> mediump_mat3x2;
606 typedef mat<3, 3, f32, mediump> mediump_mat3x3;
607 typedef mat<3, 4, f32, mediump> mediump_mat3x4;
608 typedef mat<4, 2, f32, mediump> mediump_mat4x2;
609 typedef mat<4, 3, f32, mediump> mediump_mat4x3;
610 typedef mat<4, 4, f32, mediump> mediump_mat4x4;
611
612 typedef mat<2, 2, f32, highp> highp_mat2x2;
613 typedef mat<2, 3, f32, highp> highp_mat2x3;
614 typedef mat<2, 4, f32, highp> highp_mat2x4;
615 typedef mat<3, 2, f32, highp> highp_mat3x2;
616 typedef mat<3, 3, f32, highp> highp_mat3x3;
617 typedef mat<3, 4, f32, highp> highp_mat3x4;
618 typedef mat<4, 2, f32, highp> highp_mat4x2;
619 typedef mat<4, 3, f32, highp> highp_mat4x3;
620 typedef mat<4, 4, f32, highp> highp_mat4x4;
621
622 typedef mat<2, 2, f32, defaultp> mat2x2;
623 typedef mat<3, 2, f32, defaultp> mat3x2;
624 typedef mat<4, 2, f32, defaultp> mat4x2;
625 typedef mat<2, 3, f32, defaultp> mat2x3;
626 typedef mat<3, 3, f32, defaultp> mat3x3;
627 typedef mat<4, 3, f32, defaultp> mat4x3;
628 typedef mat<2, 4, f32, defaultp> mat2x4;
629 typedef mat<3, 4, f32, defaultp> mat3x4;
630 typedef mat<4, 4, f32, defaultp> mat4x4;
631
632 typedef mat<2, 2, f32, lowp> lowp_fmat2x2;
633 typedef mat<2, 3, f32, lowp> lowp_fmat2x3;
634 typedef mat<2, 4, f32, lowp> lowp_fmat2x4;
635 typedef mat<3, 2, f32, lowp> lowp_fmat3x2;
636 typedef mat<3, 3, f32, lowp> lowp_fmat3x3;
637 typedef mat<3, 4, f32, lowp> lowp_fmat3x4;
638 typedef mat<4, 2, f32, lowp> lowp_fmat4x2;
639 typedef mat<4, 3, f32, lowp> lowp_fmat4x3;
640 typedef mat<4, 4, f32, lowp> lowp_fmat4x4;
641
642 typedef mat<2, 2, f32, mediump> mediump_fmat2x2;
643 typedef mat<2, 3, f32, mediump> mediump_fmat2x3;
644 typedef mat<2, 4, f32, mediump> mediump_fmat2x4;
645 typedef mat<3, 2, f32, mediump> mediump_fmat3x2;
646 typedef mat<3, 3, f32, mediump> mediump_fmat3x3;
647 typedef mat<3, 4, f32, mediump> mediump_fmat3x4;
648 typedef mat<4, 2, f32, mediump> mediump_fmat4x2;
649 typedef mat<4, 3, f32, mediump> mediump_fmat4x3;
650 typedef mat<4, 4, f32, mediump> mediump_fmat4x4;
651
652 typedef mat<2, 2, f32, highp> highp_fmat2x2;
653 typedef mat<2, 3, f32, highp> highp_fmat2x3;
654 typedef mat<2, 4, f32, highp> highp_fmat2x4;
655 typedef mat<3, 2, f32, highp> highp_fmat3x2;
656 typedef mat<3, 3, f32, highp> highp_fmat3x3;
657 typedef mat<3, 4, f32, highp> highp_fmat3x4;
658 typedef mat<4, 2, f32, highp> highp_fmat4x2;
659 typedef mat<4, 3, f32, highp> highp_fmat4x3;
660 typedef mat<4, 4, f32, highp> highp_fmat4x4;
661
662 typedef mat<2, 2, f32, defaultp> fmat2x2;
663 typedef mat<3, 2, f32, defaultp> fmat3x2;
664 typedef mat<4, 2, f32, defaultp> fmat4x2;
665 typedef mat<2, 3, f32, defaultp> fmat2x3;
666 typedef mat<3, 3, f32, defaultp> fmat3x3;
667 typedef mat<4, 3, f32, defaultp> fmat4x3;
668 typedef mat<2, 4, f32, defaultp> fmat2x4;
669 typedef mat<3, 4, f32, defaultp> fmat3x4;
670 typedef mat<4, 4, f32, defaultp> fmat4x4;
671
672 typedef mat<2, 2, f32, lowp> lowp_f32mat2x2;
673 typedef mat<2, 3, f32, lowp> lowp_f32mat2x3;
674 typedef mat<2, 4, f32, lowp> lowp_f32mat2x4;
675 typedef mat<3, 2, f32, lowp> lowp_f32mat3x2;
676 typedef mat<3, 3, f32, lowp> lowp_f32mat3x3;
677 typedef mat<3, 4, f32, lowp> lowp_f32mat3x4;
678 typedef mat<4, 2, f32, lowp> lowp_f32mat4x2;
679 typedef mat<4, 3, f32, lowp> lowp_f32mat4x3;
680 typedef mat<4, 4, f32, lowp> lowp_f32mat4x4;
681
682 typedef mat<2, 2, f32, mediump> mediump_f32mat2x2;
683 typedef mat<2, 3, f32, mediump> mediump_f32mat2x3;
684 typedef mat<2, 4, f32, mediump> mediump_f32mat2x4;
685 typedef mat<3, 2, f32, mediump> mediump_f32mat3x2;
686 typedef mat<3, 3, f32, mediump> mediump_f32mat3x3;
687 typedef mat<3, 4, f32, mediump> mediump_f32mat3x4;
688 typedef mat<4, 2, f32, mediump> mediump_f32mat4x2;
689 typedef mat<4, 3, f32, mediump> mediump_f32mat4x3;
690 typedef mat<4, 4, f32, mediump> mediump_f32mat4x4;
691
692 typedef mat<2, 2, f32, highp> highp_f32mat2x2;
693 typedef mat<2, 3, f32, highp> highp_f32mat2x3;
694 typedef mat<2, 4, f32, highp> highp_f32mat2x4;
695 typedef mat<3, 2, f32, highp> highp_f32mat3x2;
696 typedef mat<3, 3, f32, highp> highp_f32mat3x3;
697 typedef mat<3, 4, f32, highp> highp_f32mat3x4;
698 typedef mat<4, 2, f32, highp> highp_f32mat4x2;
699 typedef mat<4, 3, f32, highp> highp_f32mat4x3;
700 typedef mat<4, 4, f32, highp> highp_f32mat4x4;
701
702 typedef mat<2, 2, f32, defaultp> f32mat2x2;
703 typedef mat<3, 2, f32, defaultp> f32mat3x2;
704 typedef mat<4, 2, f32, defaultp> f32mat4x2;
705 typedef mat<2, 3, f32, defaultp> f32mat2x3;
706 typedef mat<3, 3, f32, defaultp> f32mat3x3;
707 typedef mat<4, 3, f32, defaultp> f32mat4x3;
708 typedef mat<2, 4, f32, defaultp> f32mat2x4;
709 typedef mat<3, 4, f32, defaultp> f32mat3x4;
710 typedef mat<4, 4, f32, defaultp> f32mat4x4;
711
712 typedef mat<2, 2, double, lowp> lowp_dmat2x2;
713 typedef mat<2, 3, double, lowp> lowp_dmat2x3;
714 typedef mat<2, 4, double, lowp> lowp_dmat2x4;
715 typedef mat<3, 2, double, lowp> lowp_dmat3x2;
716 typedef mat<3, 3, double, lowp> lowp_dmat3x3;
717 typedef mat<3, 4, double, lowp> lowp_dmat3x4;
718 typedef mat<4, 2, double, lowp> lowp_dmat4x2;
719 typedef mat<4, 3, double, lowp> lowp_dmat4x3;
720 typedef mat<4, 4, double, lowp> lowp_dmat4x4;
721
722 typedef mat<2, 2, double, mediump> mediump_dmat2x2;
723 typedef mat<2, 3, double, mediump> mediump_dmat2x3;
724 typedef mat<2, 4, double, mediump> mediump_dmat2x4;
725 typedef mat<3, 2, double, mediump> mediump_dmat3x2;
726 typedef mat<3, 3, double, mediump> mediump_dmat3x3;
727 typedef mat<3, 4, double, mediump> mediump_dmat3x4;
728 typedef mat<4, 2, double, mediump> mediump_dmat4x2;
729 typedef mat<4, 3, double, mediump> mediump_dmat4x3;
730 typedef mat<4, 4, double, mediump> mediump_dmat4x4;
731
732 typedef mat<2, 2, double, highp> highp_dmat2x2;
733 typedef mat<2, 3, double, highp> highp_dmat2x3;
734 typedef mat<2, 4, double, highp> highp_dmat2x4;
735 typedef mat<3, 2, double, highp> highp_dmat3x2;
736 typedef mat<3, 3, double, highp> highp_dmat3x3;
737 typedef mat<3, 4, double, highp> highp_dmat3x4;
738 typedef mat<4, 2, double, highp> highp_dmat4x2;
739 typedef mat<4, 3, double, highp> highp_dmat4x3;
740 typedef mat<4, 4, double, highp> highp_dmat4x4;
741
742 typedef mat<2, 2, double, defaultp> dmat2x2;
743 typedef mat<3, 2, double, defaultp> dmat3x2;
744 typedef mat<4, 2, double, defaultp> dmat4x2;
745 typedef mat<2, 3, double, defaultp> dmat2x3;
746 typedef mat<3, 3, double, defaultp> dmat3x3;
747 typedef mat<4, 3, double, defaultp> dmat4x3;
748 typedef mat<2, 4, double, defaultp> dmat2x4;
749 typedef mat<3, 4, double, defaultp> dmat3x4;
750 typedef mat<4, 4, double, defaultp> dmat4x4;
751
752 typedef mat<2, 2, f64, lowp> lowp_f64mat2x2;
753 typedef mat<2, 3, f64, lowp> lowp_f64mat2x3;
754 typedef mat<2, 4, f64, lowp> lowp_f64mat2x4;
755 typedef mat<3, 2, f64, lowp> lowp_f64mat3x2;
756 typedef mat<3, 3, f64, lowp> lowp_f64mat3x3;
757 typedef mat<3, 4, f64, lowp> lowp_f64mat3x4;
758 typedef mat<4, 2, f64, lowp> lowp_f64mat4x2;
759 typedef mat<4, 3, f64, lowp> lowp_f64mat4x3;
760 typedef mat<4, 4, f64, lowp> lowp_f64mat4x4;
761
762 typedef mat<2, 2, f64, mediump> mediump_f64mat2x2;
763 typedef mat<2, 3, f64, mediump> mediump_f64mat2x3;
764 typedef mat<2, 4, f64, mediump> mediump_f64mat2x4;
765 typedef mat<3, 2, f64, mediump> mediump_f64mat3x2;
766 typedef mat<3, 3, f64, mediump> mediump_f64mat3x3;
767 typedef mat<3, 4, f64, mediump> mediump_f64mat3x4;
768 typedef mat<4, 2, f64, mediump> mediump_f64mat4x2;
769 typedef mat<4, 3, f64, mediump> mediump_f64mat4x3;
770 typedef mat<4, 4, f64, mediump> mediump_f64mat4x4;
771
772 typedef mat<2, 2, f64, highp> highp_f64mat2x2;
773 typedef mat<2, 3, f64, highp> highp_f64mat2x3;
774 typedef mat<2, 4, f64, highp> highp_f64mat2x4;
775 typedef mat<3, 2, f64, highp> highp_f64mat3x2;
776 typedef mat<3, 3, f64, highp> highp_f64mat3x3;
777 typedef mat<3, 4, f64, highp> highp_f64mat3x4;
778 typedef mat<4, 2, f64, highp> highp_f64mat4x2;
779 typedef mat<4, 3, f64, highp> highp_f64mat4x3;
780 typedef mat<4, 4, f64, highp> highp_f64mat4x4;
781
782 typedef mat<2, 2, f64, defaultp> f64mat2x2;
783 typedef mat<3, 2, f64, defaultp> f64mat3x2;
784 typedef mat<4, 2, f64, defaultp> f64mat4x2;
785 typedef mat<2, 3, f64, defaultp> f64mat2x3;
786 typedef mat<3, 3, f64, defaultp> f64mat3x3;
787 typedef mat<4, 3, f64, defaultp> f64mat4x3;
788 typedef mat<2, 4, f64, defaultp> f64mat2x4;
789 typedef mat<3, 4, f64, defaultp> f64mat3x4;
790 typedef mat<4, 4, f64, defaultp> f64mat4x4;
791
792 // Signed integer matrix MxN
793
794 typedef mat<2, 2, int, lowp> lowp_imat2x2;
795 typedef mat<2, 3, int, lowp> lowp_imat2x3;
796 typedef mat<2, 4, int, lowp> lowp_imat2x4;
797 typedef mat<3, 2, int, lowp> lowp_imat3x2;
798 typedef mat<3, 3, int, lowp> lowp_imat3x3;
799 typedef mat<3, 4, int, lowp> lowp_imat3x4;
800 typedef mat<4, 2, int, lowp> lowp_imat4x2;
801 typedef mat<4, 3, int, lowp> lowp_imat4x3;
802 typedef mat<4, 4, int, lowp> lowp_imat4x4;
803
804 typedef mat<2, 2, int, mediump> mediump_imat2x2;
805 typedef mat<2, 3, int, mediump> mediump_imat2x3;
806 typedef mat<2, 4, int, mediump> mediump_imat2x4;
807 typedef mat<3, 2, int, mediump> mediump_imat3x2;
808 typedef mat<3, 3, int, mediump> mediump_imat3x3;
809 typedef mat<3, 4, int, mediump> mediump_imat3x4;
810 typedef mat<4, 2, int, mediump> mediump_imat4x2;
811 typedef mat<4, 3, int, mediump> mediump_imat4x3;
812 typedef mat<4, 4, int, mediump> mediump_imat4x4;
813
814 typedef mat<2, 2, int, highp> highp_imat2x2;
815 typedef mat<2, 3, int, highp> highp_imat2x3;
816 typedef mat<2, 4, int, highp> highp_imat2x4;
817 typedef mat<3, 2, int, highp> highp_imat3x2;
818 typedef mat<3, 3, int, highp> highp_imat3x3;
819 typedef mat<3, 4, int, highp> highp_imat3x4;
820 typedef mat<4, 2, int, highp> highp_imat4x2;
821 typedef mat<4, 3, int, highp> highp_imat4x3;
822 typedef mat<4, 4, int, highp> highp_imat4x4;
823
824 typedef mat<2, 2, int, defaultp> imat2x2;
825 typedef mat<3, 2, int, defaultp> imat3x2;
826 typedef mat<4, 2, int, defaultp> imat4x2;
827 typedef mat<2, 3, int, defaultp> imat2x3;
828 typedef mat<3, 3, int, defaultp> imat3x3;
829 typedef mat<4, 3, int, defaultp> imat4x3;
830 typedef mat<2, 4, int, defaultp> imat2x4;
831 typedef mat<3, 4, int, defaultp> imat3x4;
832 typedef mat<4, 4, int, defaultp> imat4x4;
833
834
835 typedef mat<2, 2, int8, lowp> lowp_i8mat2x2;
836 typedef mat<2, 3, int8, lowp> lowp_i8mat2x3;
837 typedef mat<2, 4, int8, lowp> lowp_i8mat2x4;
838 typedef mat<3, 2, int8, lowp> lowp_i8mat3x2;
839 typedef mat<3, 3, int8, lowp> lowp_i8mat3x3;
840 typedef mat<3, 4, int8, lowp> lowp_i8mat3x4;
841 typedef mat<4, 2, int8, lowp> lowp_i8mat4x2;
842 typedef mat<4, 3, int8, lowp> lowp_i8mat4x3;
843 typedef mat<4, 4, int8, lowp> lowp_i8mat4x4;
844
845 typedef mat<2, 2, int8, mediump> mediump_i8mat2x2;
846 typedef mat<2, 3, int8, mediump> mediump_i8mat2x3;
847 typedef mat<2, 4, int8, mediump> mediump_i8mat2x4;
848 typedef mat<3, 2, int8, mediump> mediump_i8mat3x2;
849 typedef mat<3, 3, int8, mediump> mediump_i8mat3x3;
850 typedef mat<3, 4, int8, mediump> mediump_i8mat3x4;
851 typedef mat<4, 2, int8, mediump> mediump_i8mat4x2;
852 typedef mat<4, 3, int8, mediump> mediump_i8mat4x3;
853 typedef mat<4, 4, int8, mediump> mediump_i8mat4x4;
854
855 typedef mat<2, 2, int8, highp> highp_i8mat2x2;
856 typedef mat<2, 3, int8, highp> highp_i8mat2x3;
857 typedef mat<2, 4, int8, highp> highp_i8mat2x4;
858 typedef mat<3, 2, int8, highp> highp_i8mat3x2;
859 typedef mat<3, 3, int8, highp> highp_i8mat3x3;
860 typedef mat<3, 4, int8, highp> highp_i8mat3x4;
861 typedef mat<4, 2, int8, highp> highp_i8mat4x2;
862 typedef mat<4, 3, int8, highp> highp_i8mat4x3;
863 typedef mat<4, 4, int8, highp> highp_i8mat4x4;
864
865 typedef mat<2, 2, int8, defaultp> i8mat2x2;
866 typedef mat<3, 2, int8, defaultp> i8mat3x2;
867 typedef mat<4, 2, int8, defaultp> i8mat4x2;
868 typedef mat<2, 3, int8, defaultp> i8mat2x3;
869 typedef mat<3, 3, int8, defaultp> i8mat3x3;
870 typedef mat<4, 3, int8, defaultp> i8mat4x3;
871 typedef mat<2, 4, int8, defaultp> i8mat2x4;
872 typedef mat<3, 4, int8, defaultp> i8mat3x4;
873 typedef mat<4, 4, int8, defaultp> i8mat4x4;
874
875
876 typedef mat<2, 2, int16, lowp> lowp_i16mat2x2;
877 typedef mat<2, 3, int16, lowp> lowp_i16mat2x3;
878 typedef mat<2, 4, int16, lowp> lowp_i16mat2x4;
879 typedef mat<3, 2, int16, lowp> lowp_i16mat3x2;
880 typedef mat<3, 3, int16, lowp> lowp_i16mat3x3;
881 typedef mat<3, 4, int16, lowp> lowp_i16mat3x4;
882 typedef mat<4, 2, int16, lowp> lowp_i16mat4x2;
883 typedef mat<4, 3, int16, lowp> lowp_i16mat4x3;
884 typedef mat<4, 4, int16, lowp> lowp_i16mat4x4;
885
886 typedef mat<2, 2, int16, mediump> mediump_i16mat2x2;
887 typedef mat<2, 3, int16, mediump> mediump_i16mat2x3;
888 typedef mat<2, 4, int16, mediump> mediump_i16mat2x4;
889 typedef mat<3, 2, int16, mediump> mediump_i16mat3x2;
890 typedef mat<3, 3, int16, mediump> mediump_i16mat3x3;
891 typedef mat<3, 4, int16, mediump> mediump_i16mat3x4;
892 typedef mat<4, 2, int16, mediump> mediump_i16mat4x2;
893 typedef mat<4, 3, int16, mediump> mediump_i16mat4x3;
894 typedef mat<4, 4, int16, mediump> mediump_i16mat4x4;
895
896 typedef mat<2, 2, int16, highp> highp_i16mat2x2;
897 typedef mat<2, 3, int16, highp> highp_i16mat2x3;
898 typedef mat<2, 4, int16, highp> highp_i16mat2x4;
899 typedef mat<3, 2, int16, highp> highp_i16mat3x2;
900 typedef mat<3, 3, int16, highp> highp_i16mat3x3;
901 typedef mat<3, 4, int16, highp> highp_i16mat3x4;
902 typedef mat<4, 2, int16, highp> highp_i16mat4x2;
903 typedef mat<4, 3, int16, highp> highp_i16mat4x3;
904 typedef mat<4, 4, int16, highp> highp_i16mat4x4;
905
906 typedef mat<2, 2, int16, defaultp> i16mat2x2;
907 typedef mat<3, 2, int16, defaultp> i16mat3x2;
908 typedef mat<4, 2, int16, defaultp> i16mat4x2;
909 typedef mat<2, 3, int16, defaultp> i16mat2x3;
910 typedef mat<3, 3, int16, defaultp> i16mat3x3;
911 typedef mat<4, 3, int16, defaultp> i16mat4x3;
912 typedef mat<2, 4, int16, defaultp> i16mat2x4;
913 typedef mat<3, 4, int16, defaultp> i16mat3x4;
914 typedef mat<4, 4, int16, defaultp> i16mat4x4;
915
916
917 typedef mat<2, 2, int32, lowp> lowp_i32mat2x2;
918 typedef mat<2, 3, int32, lowp> lowp_i32mat2x3;
919 typedef mat<2, 4, int32, lowp> lowp_i32mat2x4;
920 typedef mat<3, 2, int32, lowp> lowp_i32mat3x2;
921 typedef mat<3, 3, int32, lowp> lowp_i32mat3x3;
922 typedef mat<3, 4, int32, lowp> lowp_i32mat3x4;
923 typedef mat<4, 2, int32, lowp> lowp_i32mat4x2;
924 typedef mat<4, 3, int32, lowp> lowp_i32mat4x3;
925 typedef mat<4, 4, int32, lowp> lowp_i32mat4x4;
926
927 typedef mat<2, 2, int32, mediump> mediump_i32mat2x2;
928 typedef mat<2, 3, int32, mediump> mediump_i32mat2x3;
929 typedef mat<2, 4, int32, mediump> mediump_i32mat2x4;
930 typedef mat<3, 2, int32, mediump> mediump_i32mat3x2;
931 typedef mat<3, 3, int32, mediump> mediump_i32mat3x3;
932 typedef mat<3, 4, int32, mediump> mediump_i32mat3x4;
933 typedef mat<4, 2, int32, mediump> mediump_i32mat4x2;
934 typedef mat<4, 3, int32, mediump> mediump_i32mat4x3;
935 typedef mat<4, 4, int32, mediump> mediump_i32mat4x4;
936
937 typedef mat<2, 2, int32, highp> highp_i32mat2x2;
938 typedef mat<2, 3, int32, highp> highp_i32mat2x3;
939 typedef mat<2, 4, int32, highp> highp_i32mat2x4;
940 typedef mat<3, 2, int32, highp> highp_i32mat3x2;
941 typedef mat<3, 3, int32, highp> highp_i32mat3x3;
942 typedef mat<3, 4, int32, highp> highp_i32mat3x4;
943 typedef mat<4, 2, int32, highp> highp_i32mat4x2;
944 typedef mat<4, 3, int32, highp> highp_i32mat4x3;
945 typedef mat<4, 4, int32, highp> highp_i32mat4x4;
946
947 typedef mat<2, 2, int32, defaultp> i32mat2x2;
948 typedef mat<3, 2, int32, defaultp> i32mat3x2;
949 typedef mat<4, 2, int32, defaultp> i32mat4x2;
950 typedef mat<2, 3, int32, defaultp> i32mat2x3;
951 typedef mat<3, 3, int32, defaultp> i32mat3x3;
952 typedef mat<4, 3, int32, defaultp> i32mat4x3;
953 typedef mat<2, 4, int32, defaultp> i32mat2x4;
954 typedef mat<3, 4, int32, defaultp> i32mat3x4;
955 typedef mat<4, 4, int32, defaultp> i32mat4x4;
956
957
958 typedef mat<2, 2, int64, lowp> lowp_i64mat2x2;
959 typedef mat<2, 3, int64, lowp> lowp_i64mat2x3;
960 typedef mat<2, 4, int64, lowp> lowp_i64mat2x4;
961 typedef mat<3, 2, int64, lowp> lowp_i64mat3x2;
962 typedef mat<3, 3, int64, lowp> lowp_i64mat3x3;
963 typedef mat<3, 4, int64, lowp> lowp_i64mat3x4;
964 typedef mat<4, 2, int64, lowp> lowp_i64mat4x2;
965 typedef mat<4, 3, int64, lowp> lowp_i64mat4x3;
966 typedef mat<4, 4, int64, lowp> lowp_i64mat4x4;
967
968 typedef mat<2, 2, int64, mediump> mediump_i64mat2x2;
969 typedef mat<2, 3, int64, mediump> mediump_i64mat2x3;
970 typedef mat<2, 4, int64, mediump> mediump_i64mat2x4;
971 typedef mat<3, 2, int64, mediump> mediump_i64mat3x2;
972 typedef mat<3, 3, int64, mediump> mediump_i64mat3x3;
973 typedef mat<3, 4, int64, mediump> mediump_i64mat3x4;
974 typedef mat<4, 2, int64, mediump> mediump_i64mat4x2;
975 typedef mat<4, 3, int64, mediump> mediump_i64mat4x3;
976 typedef mat<4, 4, int64, mediump> mediump_i64mat4x4;
977
978 typedef mat<2, 2, int64, highp> highp_i64mat2x2;
979 typedef mat<2, 3, int64, highp> highp_i64mat2x3;
980 typedef mat<2, 4, int64, highp> highp_i64mat2x4;
981 typedef mat<3, 2, int64, highp> highp_i64mat3x2;
982 typedef mat<3, 3, int64, highp> highp_i64mat3x3;
983 typedef mat<3, 4, int64, highp> highp_i64mat3x4;
984 typedef mat<4, 2, int64, highp> highp_i64mat4x2;
985 typedef mat<4, 3, int64, highp> highp_i64mat4x3;
986 typedef mat<4, 4, int64, highp> highp_i64mat4x4;
987
988 typedef mat<2, 2, int64, defaultp> i64mat2x2;
989 typedef mat<3, 2, int64, defaultp> i64mat3x2;
990 typedef mat<4, 2, int64, defaultp> i64mat4x2;
991 typedef mat<2, 3, int64, defaultp> i64mat2x3;
992 typedef mat<3, 3, int64, defaultp> i64mat3x3;
993 typedef mat<4, 3, int64, defaultp> i64mat4x3;
994 typedef mat<2, 4, int64, defaultp> i64mat2x4;
995 typedef mat<3, 4, int64, defaultp> i64mat3x4;
996 typedef mat<4, 4, int64, defaultp> i64mat4x4;
997
998
999 // Unsigned integer matrix MxN
1000
1001 typedef mat<2, 2, uint, lowp> lowp_umat2x2;
1002 typedef mat<2, 3, uint, lowp> lowp_umat2x3;
1003 typedef mat<2, 4, uint, lowp> lowp_umat2x4;
1004 typedef mat<3, 2, uint, lowp> lowp_umat3x2;
1005 typedef mat<3, 3, uint, lowp> lowp_umat3x3;
1006 typedef mat<3, 4, uint, lowp> lowp_umat3x4;
1007 typedef mat<4, 2, uint, lowp> lowp_umat4x2;
1008 typedef mat<4, 3, uint, lowp> lowp_umat4x3;
1009 typedef mat<4, 4, uint, lowp> lowp_umat4x4;
1010
1011 typedef mat<2, 2, uint, mediump> mediump_umat2x2;
1012 typedef mat<2, 3, uint, mediump> mediump_umat2x3;
1013 typedef mat<2, 4, uint, mediump> mediump_umat2x4;
1014 typedef mat<3, 2, uint, mediump> mediump_umat3x2;
1015 typedef mat<3, 3, uint, mediump> mediump_umat3x3;
1016 typedef mat<3, 4, uint, mediump> mediump_umat3x4;
1017 typedef mat<4, 2, uint, mediump> mediump_umat4x2;
1018 typedef mat<4, 3, uint, mediump> mediump_umat4x3;
1019 typedef mat<4, 4, uint, mediump> mediump_umat4x4;
1020
1021 typedef mat<2, 2, uint, highp> highp_umat2x2;
1022 typedef mat<2, 3, uint, highp> highp_umat2x3;
1023 typedef mat<2, 4, uint, highp> highp_umat2x4;
1024 typedef mat<3, 2, uint, highp> highp_umat3x2;
1025 typedef mat<3, 3, uint, highp> highp_umat3x3;
1026 typedef mat<3, 4, uint, highp> highp_umat3x4;
1027 typedef mat<4, 2, uint, highp> highp_umat4x2;
1028 typedef mat<4, 3, uint, highp> highp_umat4x3;
1029 typedef mat<4, 4, uint, highp> highp_umat4x4;
1030
1031 typedef mat<2, 2, uint, defaultp> umat2x2;
1032 typedef mat<3, 2, uint, defaultp> umat3x2;
1033 typedef mat<4, 2, uint, defaultp> umat4x2;
1034 typedef mat<2, 3, uint, defaultp> umat2x3;
1035 typedef mat<3, 3, uint, defaultp> umat3x3;
1036 typedef mat<4, 3, uint, defaultp> umat4x3;
1037 typedef mat<2, 4, uint, defaultp> umat2x4;
1038 typedef mat<3, 4, uint, defaultp> umat3x4;
1039 typedef mat<4, 4, uint, defaultp> umat4x4;
1040
1041
1042 typedef mat<2, 2, uint8, lowp> lowp_u8mat2x2;
1043 typedef mat<2, 3, uint8, lowp> lowp_u8mat2x3;
1044 typedef mat<2, 4, uint8, lowp> lowp_u8mat2x4;
1045 typedef mat<3, 2, uint8, lowp> lowp_u8mat3x2;
1046 typedef mat<3, 3, uint8, lowp> lowp_u8mat3x3;
1047 typedef mat<3, 4, uint8, lowp> lowp_u8mat3x4;
1048 typedef mat<4, 2, uint8, lowp> lowp_u8mat4x2;
1049 typedef mat<4, 3, uint8, lowp> lowp_u8mat4x3;
1050 typedef mat<4, 4, uint8, lowp> lowp_u8mat4x4;
1051
1052 typedef mat<2, 2, uint8, mediump> mediump_u8mat2x2;
1053 typedef mat<2, 3, uint8, mediump> mediump_u8mat2x3;
1054 typedef mat<2, 4, uint8, mediump> mediump_u8mat2x4;
1055 typedef mat<3, 2, uint8, mediump> mediump_u8mat3x2;
1056 typedef mat<3, 3, uint8, mediump> mediump_u8mat3x3;
1057 typedef mat<3, 4, uint8, mediump> mediump_u8mat3x4;
1058 typedef mat<4, 2, uint8, mediump> mediump_u8mat4x2;
1059 typedef mat<4, 3, uint8, mediump> mediump_u8mat4x3;
1060 typedef mat<4, 4, uint8, mediump> mediump_u8mat4x4;
1061
1062 typedef mat<2, 2, uint8, highp> highp_u8mat2x2;
1063 typedef mat<2, 3, uint8, highp> highp_u8mat2x3;
1064 typedef mat<2, 4, uint8, highp> highp_u8mat2x4;
1065 typedef mat<3, 2, uint8, highp> highp_u8mat3x2;
1066 typedef mat<3, 3, uint8, highp> highp_u8mat3x3;
1067 typedef mat<3, 4, uint8, highp> highp_u8mat3x4;
1068 typedef mat<4, 2, uint8, highp> highp_u8mat4x2;
1069 typedef mat<4, 3, uint8, highp> highp_u8mat4x3;
1070 typedef mat<4, 4, uint8, highp> highp_u8mat4x4;
1071
1072 typedef mat<2, 2, uint8, defaultp> u8mat2x2;
1073 typedef mat<3, 2, uint8, defaultp> u8mat3x2;
1074 typedef mat<4, 2, uint8, defaultp> u8mat4x2;
1075 typedef mat<2, 3, uint8, defaultp> u8mat2x3;
1076 typedef mat<3, 3, uint8, defaultp> u8mat3x3;
1077 typedef mat<4, 3, uint8, defaultp> u8mat4x3;
1078 typedef mat<2, 4, uint8, defaultp> u8mat2x4;
1079 typedef mat<3, 4, uint8, defaultp> u8mat3x4;
1080 typedef mat<4, 4, uint8, defaultp> u8mat4x4;
1081
1082
1083 typedef mat<2, 2, uint16, lowp> lowp_u16mat2x2;
1084 typedef mat<2, 3, uint16, lowp> lowp_u16mat2x3;
1085 typedef mat<2, 4, uint16, lowp> lowp_u16mat2x4;
1086 typedef mat<3, 2, uint16, lowp> lowp_u16mat3x2;
1087 typedef mat<3, 3, uint16, lowp> lowp_u16mat3x3;
1088 typedef mat<3, 4, uint16, lowp> lowp_u16mat3x4;
1089 typedef mat<4, 2, uint16, lowp> lowp_u16mat4x2;
1090 typedef mat<4, 3, uint16, lowp> lowp_u16mat4x3;
1091 typedef mat<4, 4, uint16, lowp> lowp_u16mat4x4;
1092
1093 typedef mat<2, 2, uint16, mediump> mediump_u16mat2x2;
1094 typedef mat<2, 3, uint16, mediump> mediump_u16mat2x3;
1095 typedef mat<2, 4, uint16, mediump> mediump_u16mat2x4;
1096 typedef mat<3, 2, uint16, mediump> mediump_u16mat3x2;
1097 typedef mat<3, 3, uint16, mediump> mediump_u16mat3x3;
1098 typedef mat<3, 4, uint16, mediump> mediump_u16mat3x4;
1099 typedef mat<4, 2, uint16, mediump> mediump_u16mat4x2;
1100 typedef mat<4, 3, uint16, mediump> mediump_u16mat4x3;
1101 typedef mat<4, 4, uint16, mediump> mediump_u16mat4x4;
1102
1103 typedef mat<2, 2, uint16, highp> highp_u16mat2x2;
1104 typedef mat<2, 3, uint16, highp> highp_u16mat2x3;
1105 typedef mat<2, 4, uint16, highp> highp_u16mat2x4;
1106 typedef mat<3, 2, uint16, highp> highp_u16mat3x2;
1107 typedef mat<3, 3, uint16, highp> highp_u16mat3x3;
1108 typedef mat<3, 4, uint16, highp> highp_u16mat3x4;
1109 typedef mat<4, 2, uint16, highp> highp_u16mat4x2;
1110 typedef mat<4, 3, uint16, highp> highp_u16mat4x3;
1111 typedef mat<4, 4, uint16, highp> highp_u16mat4x4;
1112
1113 typedef mat<2, 2, uint16, defaultp> u16mat2x2;
1114 typedef mat<3, 2, uint16, defaultp> u16mat3x2;
1115 typedef mat<4, 2, uint16, defaultp> u16mat4x2;
1116 typedef mat<2, 3, uint16, defaultp> u16mat2x3;
1117 typedef mat<3, 3, uint16, defaultp> u16mat3x3;
1118 typedef mat<4, 3, uint16, defaultp> u16mat4x3;
1119 typedef mat<2, 4, uint16, defaultp> u16mat2x4;
1120 typedef mat<3, 4, uint16, defaultp> u16mat3x4;
1121 typedef mat<4, 4, uint16, defaultp> u16mat4x4;
1122
1123
1124 typedef mat<2, 2, uint32, lowp> lowp_u32mat2x2;
1125 typedef mat<2, 3, uint32, lowp> lowp_u32mat2x3;
1126 typedef mat<2, 4, uint32, lowp> lowp_u32mat2x4;
1127 typedef mat<3, 2, uint32, lowp> lowp_u32mat3x2;
1128 typedef mat<3, 3, uint32, lowp> lowp_u32mat3x3;
1129 typedef mat<3, 4, uint32, lowp> lowp_u32mat3x4;
1130 typedef mat<4, 2, uint32, lowp> lowp_u32mat4x2;
1131 typedef mat<4, 3, uint32, lowp> lowp_u32mat4x3;
1132 typedef mat<4, 4, uint32, lowp> lowp_u32mat4x4;
1133
1134 typedef mat<2, 2, uint32, mediump> mediump_u32mat2x2;
1135 typedef mat<2, 3, uint32, mediump> mediump_u32mat2x3;
1136 typedef mat<2, 4, uint32, mediump> mediump_u32mat2x4;
1137 typedef mat<3, 2, uint32, mediump> mediump_u32mat3x2;
1138 typedef mat<3, 3, uint32, mediump> mediump_u32mat3x3;
1139 typedef mat<3, 4, uint32, mediump> mediump_u32mat3x4;
1140 typedef mat<4, 2, uint32, mediump> mediump_u32mat4x2;
1141 typedef mat<4, 3, uint32, mediump> mediump_u32mat4x3;
1142 typedef mat<4, 4, uint32, mediump> mediump_u32mat4x4;
1143
1144 typedef mat<2, 2, uint32, highp> highp_u32mat2x2;
1145 typedef mat<2, 3, uint32, highp> highp_u32mat2x3;
1146 typedef mat<2, 4, uint32, highp> highp_u32mat2x4;
1147 typedef mat<3, 2, uint32, highp> highp_u32mat3x2;
1148 typedef mat<3, 3, uint32, highp> highp_u32mat3x3;
1149 typedef mat<3, 4, uint32, highp> highp_u32mat3x4;
1150 typedef mat<4, 2, uint32, highp> highp_u32mat4x2;
1151 typedef mat<4, 3, uint32, highp> highp_u32mat4x3;
1152 typedef mat<4, 4, uint32, highp> highp_u32mat4x4;
1153
1154 typedef mat<2, 2, uint32, defaultp> u32mat2x2;
1155 typedef mat<3, 2, uint32, defaultp> u32mat3x2;
1156 typedef mat<4, 2, uint32, defaultp> u32mat4x2;
1157 typedef mat<2, 3, uint32, defaultp> u32mat2x3;
1158 typedef mat<3, 3, uint32, defaultp> u32mat3x3;
1159 typedef mat<4, 3, uint32, defaultp> u32mat4x3;
1160 typedef mat<2, 4, uint32, defaultp> u32mat2x4;
1161 typedef mat<3, 4, uint32, defaultp> u32mat3x4;
1162 typedef mat<4, 4, uint32, defaultp> u32mat4x4;
1163
1164
1165 typedef mat<2, 2, uint64, lowp> lowp_u64mat2x2;
1166 typedef mat<2, 3, uint64, lowp> lowp_u64mat2x3;
1167 typedef mat<2, 4, uint64, lowp> lowp_u64mat2x4;
1168 typedef mat<3, 2, uint64, lowp> lowp_u64mat3x2;
1169 typedef mat<3, 3, uint64, lowp> lowp_u64mat3x3;
1170 typedef mat<3, 4, uint64, lowp> lowp_u64mat3x4;
1171 typedef mat<4, 2, uint64, lowp> lowp_u64mat4x2;
1172 typedef mat<4, 3, uint64, lowp> lowp_u64mat4x3;
1173 typedef mat<4, 4, uint64, lowp> lowp_u64mat4x4;
1174
1175 typedef mat<2, 2, uint64, mediump> mediump_u64mat2x2;
1176 typedef mat<2, 3, uint64, mediump> mediump_u64mat2x3;
1177 typedef mat<2, 4, uint64, mediump> mediump_u64mat2x4;
1178 typedef mat<3, 2, uint64, mediump> mediump_u64mat3x2;
1179 typedef mat<3, 3, uint64, mediump> mediump_u64mat3x3;
1180 typedef mat<3, 4, uint64, mediump> mediump_u64mat3x4;
1181 typedef mat<4, 2, uint64, mediump> mediump_u64mat4x2;
1182 typedef mat<4, 3, uint64, mediump> mediump_u64mat4x3;
1183 typedef mat<4, 4, uint64, mediump> mediump_u64mat4x4;
1184
1185 typedef mat<2, 2, uint64, highp> highp_u64mat2x2;
1186 typedef mat<2, 3, uint64, highp> highp_u64mat2x3;
1187 typedef mat<2, 4, uint64, highp> highp_u64mat2x4;
1188 typedef mat<3, 2, uint64, highp> highp_u64mat3x2;
1189 typedef mat<3, 3, uint64, highp> highp_u64mat3x3;
1190 typedef mat<3, 4, uint64, highp> highp_u64mat3x4;
1191 typedef mat<4, 2, uint64, highp> highp_u64mat4x2;
1192 typedef mat<4, 3, uint64, highp> highp_u64mat4x3;
1193 typedef mat<4, 4, uint64, highp> highp_u64mat4x4;
1194
1195 typedef mat<2, 2, uint64, defaultp> u64mat2x2;
1196 typedef mat<3, 2, uint64, defaultp> u64mat3x2;
1197 typedef mat<4, 2, uint64, defaultp> u64mat4x2;
1198 typedef mat<2, 3, uint64, defaultp> u64mat2x3;
1199 typedef mat<3, 3, uint64, defaultp> u64mat3x3;
1200 typedef mat<4, 3, uint64, defaultp> u64mat4x3;
1201 typedef mat<2, 4, uint64, defaultp> u64mat2x4;
1202 typedef mat<3, 4, uint64, defaultp> u64mat3x4;
1203 typedef mat<4, 4, uint64, defaultp> u64mat4x4;
1204
1205 // Quaternion
1206
1207 typedef qua<float, lowp> lowp_quat;
1208 typedef qua<float, mediump> mediump_quat;
1209 typedef qua<float, highp> highp_quat;
1210 typedef qua<float, defaultp> quat;
1211
1212 typedef qua<float, lowp> lowp_fquat;
1213 typedef qua<float, mediump> mediump_fquat;
1214 typedef qua<float, highp> highp_fquat;
1215 typedef qua<float, defaultp> fquat;
1216
1217 typedef qua<f32, lowp> lowp_f32quat;
1218 typedef qua<f32, mediump> mediump_f32quat;
1219 typedef qua<f32, highp> highp_f32quat;
1220 typedef qua<f32, defaultp> f32quat;
1221
1222 typedef qua<double, lowp> lowp_dquat;
1223 typedef qua<double, mediump> mediump_dquat;
1224 typedef qua<double, highp> highp_dquat;
1225 typedef qua<double, defaultp> dquat;
1226
1227 typedef qua<f64, lowp> lowp_f64quat;
1228 typedef qua<f64, mediump> mediump_f64quat;
1229 typedef qua<f64, highp> highp_f64quat;
1230 typedef qua<f64, defaultp> f64quat;
1231}//namespace glm
1232
1233
1234