17 template<
typename T, qualifier Q>
struct tquat;
22 typedef tquat<float, lowp> lowp_quat;
27 typedef tquat<float, mediump> mediump_quat;
32 typedef tquat<float, highp> highp_quat;
34 #if(defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
35 typedef highp_quat quat;
36 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
37 typedef mediump_quat quat;
38 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && defined(GLM_PRECISION_LOWP_FLOAT))
39 typedef lowp_quat quat;
40 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
41 typedef highp_quat quat;
48 typedef lowp_quat lowp_fquat;
53 typedef mediump_quat mediump_fquat;
58 typedef highp_quat highp_fquat;
69 typedef tquat<double, lowp> lowp_dquat;
74 typedef tquat<double, mediump> mediump_dquat;
79 typedef tquat<double, highp> highp_dquat;
81 #if(defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
82 typedef highp_dquat dquat;
83 #elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
84 typedef mediump_dquat dquat;
85 #elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && defined(GLM_PRECISION_LOWP_DOUBLE))
86 typedef lowp_dquat dquat;
87 #elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
88 typedef highp_dquat dquat;
247 typedef detail::int8
int8;
251 typedef detail::int16
int16;
255 typedef detail::int32
int32;
259 typedef detail::int64
int64;
262 #if GLM_HAS_EXTENDED_INTEGER_TYPE
268 typedef detail::int8
int8_t;
287 typedef detail::int8
i8;
291 typedef detail::int16
i16;
295 typedef detail::int32
i32;
299 typedef detail::int64
i64;
305 typedef vec<1, i8, lowp> lowp_i8vec1;
309 typedef vec<2, i8, lowp> lowp_i8vec2;
313 typedef vec<3, i8, lowp> lowp_i8vec3;
317 typedef vec<4, i8, lowp> lowp_i8vec4;
322 typedef vec<1, i8, mediump> mediump_i8vec1;
326 typedef vec<2, i8, mediump> mediump_i8vec2;
330 typedef vec<3, i8, mediump> mediump_i8vec3;
334 typedef vec<4, i8, mediump> mediump_i8vec4;
339 typedef vec<1, i8, highp> highp_i8vec1;
343 typedef vec<2, i8, highp> highp_i8vec2;
347 typedef vec<3, i8, highp> highp_i8vec3;
351 typedef vec<4, i8, highp> highp_i8vec4;
353 #if(defined(GLM_PRECISION_LOWP_INT))
354 typedef lowp_i8vec1
i8vec1;
355 typedef lowp_i8vec2
i8vec2;
356 typedef lowp_i8vec3
i8vec3;
357 typedef lowp_i8vec4
i8vec4;
358 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
359 typedef mediump_i8vec1
i8vec1;
360 typedef mediump_i8vec2
i8vec2;
361 typedef mediump_i8vec3
i8vec3;
362 typedef mediump_i8vec4
i8vec4;
364 typedef highp_i8vec1
i8vec1;
384 typedef vec<1, i16, lowp> lowp_i16vec1;
388 typedef vec<2, i16, lowp> lowp_i16vec2;
392 typedef vec<3, i16, lowp> lowp_i16vec3;
396 typedef vec<4, i16, lowp> lowp_i16vec4;
401 typedef vec<1, i16, mediump> mediump_i16vec1;
405 typedef vec<2, i16, mediump> mediump_i16vec2;
409 typedef vec<3, i16, mediump> mediump_i16vec3;
413 typedef vec<4, i16, mediump> mediump_i16vec4;
418 typedef vec<1, i16, highp> highp_i16vec1;
422 typedef vec<2, i16, highp> highp_i16vec2;
426 typedef vec<3, i16, highp> highp_i16vec3;
430 typedef vec<4, i16, highp> highp_i16vec4;
433 #if(defined(GLM_PRECISION_LOWP_INT))
438 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
439 typedef mediump_i16vec1
i16vec1;
440 typedef mediump_i16vec2
i16vec2;
441 typedef mediump_i16vec3
i16vec3;
442 typedef mediump_i16vec4
i16vec4;
464 typedef vec<1, i32, lowp> lowp_i32vec1;
468 typedef vec<2, i32, lowp> lowp_i32vec2;
472 typedef vec<3, i32, lowp> lowp_i32vec3;
476 typedef vec<4, i32, lowp> lowp_i32vec4;
481 typedef vec<1, i32, mediump> mediump_i32vec1;
485 typedef vec<2, i32, mediump> mediump_i32vec2;
489 typedef vec<3, i32, mediump> mediump_i32vec3;
493 typedef vec<4, i32, mediump> mediump_i32vec4;
498 typedef vec<1, i32, highp> highp_i32vec1;
502 typedef vec<2, i32, highp> highp_i32vec2;
506 typedef vec<3, i32, highp> highp_i32vec3;
510 typedef vec<4, i32, highp> highp_i32vec4;
512 #if(defined(GLM_PRECISION_LOWP_INT))
517 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
518 typedef mediump_i32vec1
i32vec1;
519 typedef mediump_i32vec2
i32vec2;
520 typedef mediump_i32vec3
i32vec3;
521 typedef mediump_i32vec4
i32vec4;
543 typedef vec<1, i32, lowp> lowp_i32vec1;
547 typedef vec<2, i32, lowp> lowp_i32vec2;
551 typedef vec<3, i32, lowp> lowp_i32vec3;
555 typedef vec<4, i32, lowp> lowp_i32vec4;
560 typedef vec<1, i32, mediump> mediump_i32vec1;
564 typedef vec<2, i32, mediump> mediump_i32vec2;
568 typedef vec<3, i32, mediump> mediump_i32vec3;
572 typedef vec<4, i32, mediump> mediump_i32vec4;
577 typedef vec<1, i32, highp> highp_i32vec1;
581 typedef vec<2, i32, highp> highp_i32vec2;
585 typedef vec<3, i32, highp> highp_i32vec3;
589 typedef vec<4, i32, highp> highp_i32vec4;
591 #if(defined(GLM_PRECISION_LOWP_INT))
596 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
597 typedef mediump_i32vec1
i32vec1;
598 typedef mediump_i32vec2
i32vec2;
599 typedef mediump_i32vec3
i32vec3;
600 typedef mediump_i32vec4
i32vec4;
623 typedef vec<1, i64, lowp> lowp_i64vec1;
627 typedef vec<2, i64, lowp> lowp_i64vec2;
631 typedef vec<3, i64, lowp> lowp_i64vec3;
635 typedef vec<4, i64, lowp> lowp_i64vec4;
640 typedef vec<1, i64, mediump> mediump_i64vec1;
644 typedef vec<2, i64, mediump> mediump_i64vec2;
648 typedef vec<3, i64, mediump> mediump_i64vec3;
652 typedef vec<4, i64, mediump> mediump_i64vec4;
657 typedef vec<1, i64, highp> highp_i64vec1;
661 typedef vec<2, i64, highp> highp_i64vec2;
665 typedef vec<3, i64, highp> highp_i64vec3;
669 typedef vec<4, i64, highp> highp_i64vec4;
671 #if(defined(GLM_PRECISION_LOWP_INT))
676 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
677 typedef mediump_i64vec1
i64vec1;
678 typedef mediump_i64vec2
i64vec2;
679 typedef mediump_i64vec3
i64vec3;
680 typedef mediump_i64vec4
i64vec4;
857 typedef detail::uint8
uint8;
861 typedef detail::uint16
uint16;
865 typedef detail::uint32
uint32;
869 typedef detail::uint64
uint64;
871 #if GLM_HAS_EXTENDED_INTEGER_TYPE
896 typedef detail::uint8
u8;
900 typedef detail::uint16
u16;
904 typedef detail::uint32
u32;
908 typedef detail::uint64
u64;
914 typedef vec<1, u8, lowp> lowp_u8vec1;
918 typedef vec<2, u8, lowp> lowp_u8vec2;
922 typedef vec<3, u8, lowp> lowp_u8vec3;
926 typedef vec<4, u8, lowp> lowp_u8vec4;
931 typedef vec<1, u8, mediump> mediump_u8vec1;
935 typedef vec<2, u8, mediump> mediump_u8vec2;
939 typedef vec<3, u8, mediump> mediump_u8vec3;
943 typedef vec<4, u8, mediump> mediump_u8vec4;
948 typedef vec<1, u8, highp> highp_u8vec1;
952 typedef vec<2, u8, highp> highp_u8vec2;
956 typedef vec<3, u8, highp> highp_u8vec3;
960 typedef vec<4, u8, highp> highp_u8vec4;
962 #if(defined(GLM_PRECISION_LOWP_INT))
963 typedef lowp_u8vec1
u8vec1;
964 typedef lowp_u8vec2
u8vec2;
965 typedef lowp_u8vec3
u8vec3;
966 typedef lowp_u8vec4
u8vec4;
967 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
968 typedef mediump_u8vec1
u8vec1;
969 typedef mediump_u8vec2
u8vec2;
970 typedef mediump_u8vec3
u8vec3;
971 typedef mediump_u8vec4
u8vec4;
973 typedef highp_u8vec1
u8vec1;
993 typedef vec<1, u16, lowp> lowp_u16vec1;
997 typedef vec<2, u16, lowp> lowp_u16vec2;
1001 typedef vec<3, u16, lowp> lowp_u16vec3;
1005 typedef vec<4, u16, lowp> lowp_u16vec4;
1010 typedef vec<1, u16, mediump> mediump_u16vec1;
1014 typedef vec<2, u16, mediump> mediump_u16vec2;
1018 typedef vec<3, u16, mediump> mediump_u16vec3;
1022 typedef vec<4, u16, mediump> mediump_u16vec4;
1027 typedef vec<1, u16, highp> highp_u16vec1;
1031 typedef vec<2, u16, highp> highp_u16vec2;
1035 typedef vec<3, u16, highp> highp_u16vec3;
1039 typedef vec<4, u16, highp> highp_u16vec4;
1042 #if(defined(GLM_PRECISION_LOWP_INT))
1047 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
1048 typedef mediump_u16vec1
u16vec1;
1049 typedef mediump_u16vec2
u16vec2;
1050 typedef mediump_u16vec3
u16vec3;
1051 typedef mediump_u16vec4
u16vec4;
1053 typedef highp_u16vec1
u16vec1;
1073 typedef vec<1, u32, lowp> lowp_u32vec1;
1077 typedef vec<2, u32, lowp> lowp_u32vec2;
1081 typedef vec<3, u32, lowp> lowp_u32vec3;
1085 typedef vec<4, u32, lowp> lowp_u32vec4;
1090 typedef vec<1, u32, mediump> mediump_u32vec1;
1094 typedef vec<2, u32, mediump> mediump_u32vec2;
1098 typedef vec<3, u32, mediump> mediump_u32vec3;
1102 typedef vec<4, u32, mediump> mediump_u32vec4;
1107 typedef vec<1, u32, highp> highp_u32vec1;
1111 typedef vec<2, u32, highp> highp_u32vec2;
1115 typedef vec<3, u32, highp> highp_u32vec3;
1119 typedef vec<4, u32, highp> highp_u32vec4;
1121 #if(defined(GLM_PRECISION_LOWP_INT))
1126 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
1127 typedef mediump_u32vec1
u32vec1;
1128 typedef mediump_u32vec2
u32vec2;
1129 typedef mediump_u32vec3
u32vec3;
1130 typedef mediump_u32vec4
u32vec4;
1132 typedef highp_u32vec1
u32vec1;
1152 typedef vec<1, u32, lowp> lowp_u32vec1;
1156 typedef vec<2, u32, lowp> lowp_u32vec2;
1160 typedef vec<3, u32, lowp> lowp_u32vec3;
1164 typedef vec<4, u32, lowp> lowp_u32vec4;
1169 typedef vec<1, u32, mediump> mediump_u32vec1;
1173 typedef vec<2, u32, mediump> mediump_u32vec2;
1177 typedef vec<3, u32, mediump> mediump_u32vec3;
1181 typedef vec<4, u32, mediump> mediump_u32vec4;
1186 typedef vec<1, u32, highp> highp_u32vec1;
1190 typedef vec<2, u32, highp> highp_u32vec2;
1194 typedef vec<3, u32, highp> highp_u32vec3;
1198 typedef vec<4, u32, highp> highp_u32vec4;
1200 #if(defined(GLM_PRECISION_LOWP_INT))
1205 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
1206 typedef mediump_u32vec1
u32vec1;
1207 typedef mediump_u32vec2
u32vec2;
1208 typedef mediump_u32vec3
u32vec3;
1209 typedef mediump_u32vec4
u32vec4;
1211 typedef highp_u32vec1
u32vec1;
1217 typedef highp_u32vec2
u32vec2;
1221 typedef highp_u32vec3
u32vec3;
1225 typedef highp_u32vec4
u32vec4;
1232 typedef vec<1, u64, lowp> lowp_u64vec1;
1236 typedef vec<2, u64, lowp> lowp_u64vec2;
1240 typedef vec<3, u64, lowp> lowp_u64vec3;
1244 typedef vec<4, u64, lowp> lowp_u64vec4;
1249 typedef vec<1, u64, mediump> mediump_u64vec1;
1253 typedef vec<2, u64, mediump> mediump_u64vec2;
1257 typedef vec<3, u64, mediump> mediump_u64vec3;
1261 typedef vec<4, u64, mediump> mediump_u64vec4;
1266 typedef vec<1, u64, highp> highp_u64vec1;
1270 typedef vec<2, u64, highp> highp_u64vec2;
1274 typedef vec<3, u64, highp> highp_u64vec3;
1278 typedef vec<4, u64, highp> highp_u64vec4;
1280 #if(defined(GLM_PRECISION_LOWP_UINT))
1285 #elif(defined(GLM_PRECISION_MEDIUMP_UINT))
1286 typedef mediump_u64vec1
u64vec1;
1287 typedef mediump_u64vec2
u64vec2;
1288 typedef mediump_u64vec3
u64vec3;
1289 typedef mediump_u64vec4
u64vec4;
1291 typedef highp_u64vec1
u64vec1;
1314 typedef detail::float32 lowp_float32;
1318 typedef detail::float64 lowp_float64;
1322 typedef detail::float32 lowp_float32_t;
1326 typedef detail::float64 lowp_float64_t;
1338 typedef detail::float32 lowp_float32;
1342 typedef detail::float64 lowp_float64;
1346 typedef detail::float32 lowp_float32_t;
1350 typedef detail::float64 lowp_float64_t;
1363 typedef detail::float32 lowp_float32;
1367 typedef detail::float64 lowp_float64;
1371 typedef detail::float32 lowp_float32_t;
1375 typedef detail::float64 lowp_float64_t;
1388 typedef detail::float32 mediump_float32;
1392 typedef detail::float64 mediump_float64;
1396 typedef detail::float32 mediump_float32_t;
1400 typedef detail::float64 mediump_float64_t;
1413 typedef detail::float32 highp_float32;
1417 typedef detail::float64 highp_float64;
1421 typedef detail::float32 highp_float32_t;
1425 typedef detail::float64 highp_float64_t;
1436 #if(defined(GLM_PRECISION_LOWP_FLOAT))
1455 typedef lowp_f32
f32;
1459 typedef lowp_f64
f64;
1461 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
1465 typedef mediump_float32 float32;
1469 typedef mediump_float64 float64;
1481 typedef mediump_float32
f32;
1485 typedef mediump_float64
f64;
1487 #else//(defined(GLM_PRECISION_HIGHP_FLOAT))
1491 typedef highp_float32 float32;
1495 typedef highp_float64 float64;
1517 typedef vec<1, float, lowp> lowp_vec1;
1533 typedef vec<1, float, lowp> lowp_fvec1;
1537 typedef vec<2, float, lowp> lowp_fvec2;
1541 typedef vec<3, float, lowp> lowp_fvec3;
1545 typedef vec<4, float, lowp> lowp_fvec4;
1550 typedef vec<1, float, mediump> mediump_vec1;
1566 typedef vec<1, float, mediump> mediump_fvec1;
1570 typedef vec<2, float, mediump> mediump_fvec2;
1574 typedef vec<3, float, mediump> mediump_fvec3;
1578 typedef vec<4, float, mediump> mediump_fvec4;
1583 typedef vec<1, float, highp> highp_vec1;
1599 typedef vec<1, float, highp> highp_fvec1;
1603 typedef vec<2, float, highp> highp_fvec2;
1607 typedef vec<3, float, highp> highp_fvec3;
1611 typedef vec<4, float, highp> highp_fvec4;
1616 typedef vec<1, f32, lowp> lowp_f32vec1;
1620 typedef vec<2, f32, lowp> lowp_f32vec2;
1624 typedef vec<3, f32, lowp> lowp_f32vec3;
1628 typedef vec<4, f32, lowp> lowp_f32vec4;
1632 typedef vec<1, f32, mediump> mediump_f32vec1;
1636 typedef vec<2, f32, mediump> mediump_f32vec2;
1640 typedef vec<3, f32, mediump> mediump_f32vec3;
1644 typedef vec<4, f32, mediump> mediump_f32vec4;
1648 typedef vec<1, f32, highp> highp_f32vec1;
1652 typedef vec<2, f32, highp> highp_f32vec2;
1656 typedef vec<3, f32, highp> highp_f32vec3;
1660 typedef vec<4, f32, highp> highp_f32vec4;
1665 typedef vec<1, f64, lowp> lowp_f64vec1;
1669 typedef vec<2, f64, lowp> lowp_f64vec2;
1673 typedef vec<3, f64, lowp> lowp_f64vec3;
1677 typedef vec<4, f64, lowp> lowp_f64vec4;
1681 typedef vec<1, f64, mediump> mediump_f64vec1;
1685 typedef vec<2, f64, mediump> mediump_f64vec2;
1689 typedef vec<3, f64, mediump> mediump_f64vec3;
1693 typedef vec<4, f64, mediump> mediump_f64vec4;
1697 typedef vec<1, f64, highp> highp_f64vec1;
1701 typedef vec<2, f64, highp> highp_f64vec2;
1705 typedef vec<3, f64, highp> highp_f64vec3;
1709 typedef vec<4, f64, highp> highp_f64vec4;
1721 typedef mat<2, 2, f32, lowp> lowp_fmat2x2;
1725 typedef mat<2, 3, f32, lowp> lowp_fmat2x3;
1729 typedef mat<2, 4, f32, lowp> lowp_fmat2x4;
1733 typedef mat<3, 2, f32, lowp> lowp_fmat3x2;
1737 typedef mat<3, 3, f32, lowp> lowp_fmat3x3;
1741 typedef mat<3, 4, f32, lowp> lowp_fmat3x4;
1745 typedef mat<4, 2, f32, lowp> lowp_fmat4x2;
1749 typedef mat<4, 3, f32, lowp> lowp_fmat4x3;
1753 typedef mat<4, 4, f32, lowp> lowp_fmat4x4;
1761 typedef lowp_fmat2x2 lowp_fmat2;
1765 typedef lowp_fmat3x3 lowp_fmat3;
1769 typedef lowp_fmat4x4 lowp_fmat4;
1778 typedef mat<2, 2, f32, mediump> mediump_fmat2x2;
1782 typedef mat<2, 3, f32, mediump> mediump_fmat2x3;
1786 typedef mat<2, 4, f32, mediump> mediump_fmat2x4;
1790 typedef mat<3, 2, f32, mediump> mediump_fmat3x2;
1794 typedef mat<3, 3, f32, mediump> mediump_fmat3x3;
1798 typedef mat<3, 4, f32, mediump> mediump_fmat3x4;
1802 typedef mat<4, 2, f32, mediump> mediump_fmat4x2;
1806 typedef mat<4, 3, f32, mediump> mediump_fmat4x3;
1810 typedef mat<4, 4, f32, mediump> mediump_fmat4x4;
1818 typedef mediump_fmat2x2 mediump_fmat2;
1822 typedef mediump_fmat3x3 mediump_fmat3;
1826 typedef mediump_fmat4x4 mediump_fmat4;
1835 typedef mat<2, 2, f32, highp> highp_fmat2x2;
1839 typedef mat<2, 3, f32, highp> highp_fmat2x3;
1843 typedef mat<2, 4, f32, highp> highp_fmat2x4;
1847 typedef mat<3, 2, f32, highp> highp_fmat3x2;
1851 typedef mat<3, 3, f32, highp> highp_fmat3x3;
1855 typedef mat<3, 4, f32, highp> highp_fmat3x4;
1859 typedef mat<4, 2, f32, highp> highp_fmat4x2;
1863 typedef mat<4, 3, f32, highp> highp_fmat4x3;
1867 typedef mat<4, 4, f32, highp> highp_fmat4x4;
1875 typedef highp_fmat2x2 highp_fmat2;
1879 typedef highp_fmat3x3 highp_fmat3;
1883 typedef highp_fmat4x4 highp_fmat4;
1892 typedef mat<2, 2, f32, lowp> lowp_f32mat2x2;
1896 typedef mat<2, 3, f32, lowp> lowp_f32mat2x3;
1900 typedef mat<2, 4, f32, lowp> lowp_f32mat2x4;
1904 typedef mat<3, 2, f32, lowp> lowp_f32mat3x2;
1908 typedef mat<3, 3, f32, lowp> lowp_f32mat3x3;
1912 typedef mat<3, 4, f32, lowp> lowp_f32mat3x4;
1916 typedef mat<4, 2, f32, lowp> lowp_f32mat4x2;
1920 typedef mat<4, 3, f32, lowp> lowp_f32mat4x3;
1924 typedef mat<4, 4, f32, lowp> lowp_f32mat4x4;
1932 typedef lowp_f32mat2x2 lowp_f32mat2;
1936 typedef lowp_f32mat3x3 lowp_f32mat3;
1940 typedef lowp_f32mat4x4 lowp_f32mat4;
1949 typedef mat<2, 2, f32, mediump> mediump_f32mat2x2;
1953 typedef mat<2, 3, f32, mediump> mediump_f32mat2x3;
1957 typedef mat<2, 4, f32, mediump> mediump_f32mat2x4;
1961 typedef mat<3, 2, f32, mediump> mediump_f32mat3x2;
1965 typedef mat<3, 3, f32, mediump> mediump_f32mat3x3;
1969 typedef mat<3, 4, f32, mediump> mediump_f32mat3x4;
1973 typedef mat<4, 2, f32, mediump> mediump_f32mat4x2;
1977 typedef mat<4, 3, f32, mediump> mediump_f32mat4x3;
1981 typedef mat<4, 4, f32, mediump> mediump_f32mat4x4;
1989 typedef mediump_f32mat2x2 mediump_f32mat2;
1993 typedef mediump_f32mat3x3 mediump_f32mat3;
1997 typedef mediump_f32mat4x4 mediump_f32mat4;
2006 typedef mat<2, 2, f32, highp> highp_f32mat2x2;
2010 typedef mat<2, 3, f32, highp> highp_f32mat2x3;
2014 typedef mat<2, 4, f32, highp> highp_f32mat2x4;
2018 typedef mat<3, 2, f32, highp> highp_f32mat3x2;
2022 typedef mat<3, 3, f32, highp> highp_f32mat3x3;
2026 typedef mat<3, 4, f32, highp> highp_f32mat3x4;
2030 typedef mat<4, 2, f32, highp> highp_f32mat4x2;
2034 typedef mat<4, 3, f32, highp> highp_f32mat4x3;
2038 typedef mat<4, 4, f32, highp> highp_f32mat4x4;
2046 typedef highp_f32mat2x2 highp_f32mat2;
2050 typedef highp_f32mat3x3 highp_f32mat3;
2054 typedef highp_f32mat4x4 highp_f32mat4;
2063 typedef mat<2, 2, f64, lowp> lowp_f64mat2x2;
2067 typedef mat<2, 3, f64, lowp> lowp_f64mat2x3;
2071 typedef mat<2, 4, f64, lowp> lowp_f64mat2x4;
2075 typedef mat<3, 2, f64, lowp> lowp_f64mat3x2;
2079 typedef mat<3, 3, f64, lowp> lowp_f64mat3x3;
2083 typedef mat<3, 4, f64, lowp> lowp_f64mat3x4;
2087 typedef mat<4, 2, f64, lowp> lowp_f64mat4x2;
2091 typedef mat<4, 3, f64, lowp> lowp_f64mat4x3;
2095 typedef mat<4, 4, f64, lowp> lowp_f64mat4x4;
2103 typedef lowp_f64mat2x2 lowp_f64mat2;
2107 typedef lowp_f64mat3x3 lowp_f64mat3;
2111 typedef lowp_f64mat4x4 lowp_f64mat4;
2120 typedef mat<2, 2, f64, mediump> mediump_f64mat2x2;
2124 typedef mat<2, 3, f64, mediump> mediump_f64mat2x3;
2128 typedef mat<2, 4, f64, mediump> mediump_f64mat2x4;
2132 typedef mat<3, 2, f64, mediump> mediump_f64mat3x2;
2136 typedef mat<3, 3, f64, mediump> mediump_f64mat3x3;
2140 typedef mat<3, 4, f64, mediump> mediump_f64mat3x4;
2144 typedef mat<4, 2, f64, mediump> mediump_f64mat4x2;
2148 typedef mat<4, 3, f64, mediump> mediump_f64mat4x3;
2152 typedef mat<4, 4, f64, mediump> mediump_f64mat4x4;
2160 typedef mediump_f64mat2x2 mediump_f64mat2;
2164 typedef mediump_f64mat3x3 mediump_f64mat3;
2168 typedef mediump_f64mat4x4 mediump_f64mat4;
2176 typedef mat<2, 2, f64, highp> highp_f64mat2x2;
2180 typedef mat<2, 3, f64, highp> highp_f64mat2x3;
2184 typedef mat<2, 4, f64, highp> highp_f64mat2x4;
2188 typedef mat<3, 2, f64, highp> highp_f64mat3x2;
2192 typedef mat<3, 3, f64, highp> highp_f64mat3x3;
2196 typedef mat<3, 4, f64, highp> highp_f64mat3x4;
2200 typedef mat<4, 2, f64, highp> highp_f64mat4x2;
2204 typedef mat<4, 3, f64, highp> highp_f64mat4x3;
2208 typedef mat<4, 4, f64, highp> highp_f64mat4x4;
2216 typedef highp_f64mat2x2 highp_f64mat2;
2220 typedef highp_f64mat3x3 highp_f64mat3;
2224 typedef highp_f64mat4x4 highp_f64mat4;
2231 typedef tquat<f32, lowp> lowp_f32quat;
2235 typedef tquat<f64, lowp> lowp_f64quat;
2239 typedef tquat<f32, mediump> mediump_f32quat;
2243 typedef tquat<f64, mediump> mediump_f64quat;
2247 typedef tquat<f32, highp> highp_f32quat;
2251 typedef tquat<f64, highp> highp_f64quat;
2254 #if(defined(GLM_PRECISION_LOWP_FLOAT))
2255 typedef lowp_f32vec1
fvec1;
2256 typedef lowp_f32vec2
fvec2;
2257 typedef lowp_f32vec3
fvec3;
2258 typedef lowp_f32vec4
fvec4;
2259 typedef lowp_f32mat2
fmat2;
2260 typedef lowp_f32mat3
fmat3;
2261 typedef lowp_f32mat4
fmat4;
2262 typedef lowp_f32mat2x2
fmat2x2;
2263 typedef lowp_f32mat3x2
fmat3x2;
2264 typedef lowp_f32mat4x2
fmat4x2;
2265 typedef lowp_f32mat2x3
fmat2x3;
2266 typedef lowp_f32mat3x3
fmat3x3;
2267 typedef lowp_f32mat4x3
fmat4x3;
2268 typedef lowp_f32mat2x4
fmat2x4;
2269 typedef lowp_f32mat3x4
fmat3x4;
2270 typedef lowp_f32mat4x4
fmat4x4;
2271 typedef lowp_f32quat fquat;
2290 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
2291 typedef mediump_f32vec1
fvec1;
2292 typedef mediump_f32vec2
fvec2;
2293 typedef mediump_f32vec3
fvec3;
2294 typedef mediump_f32vec4
fvec4;
2295 typedef mediump_f32mat2
fmat2;
2296 typedef mediump_f32mat3
fmat3;
2297 typedef mediump_f32mat4
fmat4;
2298 typedef mediump_f32mat2x2
fmat2x2;
2299 typedef mediump_f32mat3x2
fmat3x2;
2300 typedef mediump_f32mat4x2
fmat4x2;
2301 typedef mediump_f32mat2x3
fmat2x3;
2302 typedef mediump_f32mat3x3
fmat3x3;
2303 typedef mediump_f32mat4x3
fmat4x3;
2304 typedef mediump_f32mat2x4
fmat2x4;
2305 typedef mediump_f32mat3x4
fmat3x4;
2306 typedef mediump_f32mat4x4
fmat4x4;
2307 typedef mediump_f32quat fquat;
2309 typedef mediump_f32vec1
f32vec1;
2310 typedef mediump_f32vec2
f32vec2;
2311 typedef mediump_f32vec3
f32vec3;
2312 typedef mediump_f32vec4
f32vec4;
2313 typedef mediump_f32mat2
f32mat2;
2314 typedef mediump_f32mat3
f32mat3;
2315 typedef mediump_f32mat4
f32mat4;
2325 typedef mediump_f32quat
f32quat;
2326 #else//if(defined(GLM_PRECISION_HIGHP_FLOAT))
2327 typedef highp_f32vec1
fvec1;
2393 typedef highp_fquat fquat;
2466 #if(defined(GLM_PRECISION_LOWP_DOUBLE))
2484 #elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE))
2485 typedef mediump_f64vec1
f64vec1;
2486 typedef mediump_f64vec2
f64vec2;
2487 typedef mediump_f64vec3
f64vec3;
2488 typedef mediump_f64vec4
f64vec4;
2489 typedef mediump_f64mat2
f64mat2;
2490 typedef mediump_f64mat3
f64mat3;
2491 typedef mediump_f64mat4
f64mat4;
2501 typedef mediump_f64quat
f64quat;
2503 typedef highp_f64vec1
f64vec1;
highp_f32vec3 f32vec3
Default single-qualifier floating-point vector of 3 components.
highp_f64vec2 f64vec2
Default double-qualifier floating-point vector of 2 components.
detail::int32 highp_i32
High qualifier 32 bit signed integer type.
detail::uint32 lowp_uint32
Low qualifier 32 bit unsigned integer type.
detail::uint16 mediump_u16
Medium qualifier 16 bit unsigned integer type.
detail::uint64 mediump_u64
Medium qualifier 64 bit unsigned integer type.
detail::uint8 lowp_uint8
Low qualifier 8 bit unsigned integer type.
detail::int8 mediump_int8
Medium qualifier 8 bit signed integer type.
vec< 4, float, mediump > mediump_vec4
4 components vector of medium single-qualifier floating-point numbers.
detail::uint32 highp_u32
Medium qualifier 32 bit unsigned integer type.
detail::uint16 lowp_uint16
Low qualifier 16 bit unsigned integer type.
highp_f64vec1 f64vec1
Default double-qualifier floating-point vector of 1 components.
detail::int16 int16
16 bit signed integer type.
highp_f32mat4x3 f32mat4x3
Default single-qualifier floating-point 4x3 matrix.
detail::uint32 highp_uint32
Medium qualifier 32 bit unsigned integer type.
float float32
Default 32 bit single-qualifier floating-point scalar.
highp_f64mat2x3 f64mat2x3
Default double-qualifier floating-point 2x3 matrix.
highp_f64mat3x4 f64mat3x4
Default double-qualifier floating-point 3x4 matrix.
highp_u16vec3 u16vec3
Default qualifier 16 bit unsigned integer vector of 3 components type.
detail::int64 highp_i64
High qualifier 64 bit signed integer type.
detail::int64 highp_int64_t
High qualifier 64 bit signed integer type.
detail::uint8 mediump_uint8_t
Medium qualifier 8 bit unsigned integer type.
detail::uint8 lowp_u8
Low qualifier 8 bit unsigned integer type.
detail::int32 mediump_i32
Medium qualifier 32 bit signed integer type.
detail::uint8 uint8_t
8 bit unsigned integer type.
highp_f32mat3x2 fmat3x2
Default single-qualifier floating-point 3x2 matrix.
highp_f32vec1 f32vec1
Default single-qualifier floating-point vector of 1 components.
highp_f32vec4 fvec4
Default single-qualifier floating-point vector of 4 components.
detail::int8 highp_i8
High qualifier 8 bit signed integer type.
detail::int64 int64_t
64 bit signed integer type.
highp_i32vec3 i32vec3
Default qualifier 32 bit signed integer vector of 3 components type.
detail::uint32 lowp_uint32_t
Low qualifier 32 bit unsigned integer type.
detail::uint64 uint64
64 bit unsigned integer type.
detail::int64 int64
64 bit signed integer type.
detail::int64 mediump_int64
Medium qualifier 64 bit signed integer type.
detail::uint32 lowp_u32
Low qualifier 32 bit unsigned integer type.
highp_i8vec4 i8vec4
Default qualifier 8 bit signed integer vector of 4 components type.
detail::int16 highp_int16
High qualifier 16 bit signed integer type.
highp_f32mat4x2 fmat4x2
Default single-qualifier floating-point 4x2 matrix.
highp_f64mat2x4 f64mat2x4
Default double-qualifier floating-point 2x4 matrix.
detail::uint32 mediump_u32
Medium qualifier 32 bit unsigned integer type.
detail::int8 int8
8 bit signed integer type.
vec< 4, float, highp > highp_vec4
4 components vector of high single-qualifier floating-point numbers.
detail::uint64 mediump_uint64_t
Medium qualifier 64 bit unsigned integer type.
highp_u16vec2 u16vec2
Default qualifier 16 bit unsigned integer vector of 2 components type.
highp_f32mat3x3 f32mat3x3
Default single-qualifier floating-point 3x3 matrix.
highp_u32vec3 u32vec3
Default qualifier 32 bit unsigned integer vector of 3 components type.
f64mat4x4 f64mat4
Default double-qualifier floating-point 4x4 matrix.
detail::uint8 highp_u8
Medium qualifier 8 bit unsigned integer type.
f64mat3x3 f64mat3
Default double-qualifier floating-point 3x3 matrix.
highp_u64vec4 u64vec4
Default qualifier 64 bit unsigned integer vector of 4 components type.
highp_u32vec1 u32vec1
Default qualifier 32 bit unsigned integer scalar type.
detail::int64 lowp_int64
Low qualifier 64 bit signed integer type.
highp_u16vec4 u16vec4
Default qualifier 16 bit unsigned integer vector of 4 components type.
highp_f64mat3x2 f64mat3x2
Default double-qualifier floating-point 3x2 matrix.
detail::int16 mediump_int16
Medium qualifier 16 bit signed integer type.
detail::uint8 uint8
8 bit unsigned integer type.
highp_u8vec1 u8vec1
Default qualifier 8 bit unsigned integer scalar type.
highp_u32vec4 u32vec4
Default qualifier 32 bit unsigned integer vector of 4 components type.
detail::int64 mediump_i64
Medium qualifier 64 bit signed integer type.
f64mat2x2 f64mat2
Default double-qualifier floating-point 2x2 matrix.
detail::int8 mediump_i8
Medium qualifier 8 bit signed integer type.
detail::int16 mediump_int16_t
Medium qualifier 16 bit signed integer type.
detail::int8 lowp_i8
Low qualifier 8 bit signed integer type.
highp_f32mat3x4 fmat3x4
Default single-qualifier floating-point 3x4 matrix.
detail::uint16 lowp_u16
Low qualifier 16 bit unsigned integer type.
highp_u64vec3 u64vec3
Default qualifier 64 bit unsigned integer vector of 3 components type.
detail::int64 lowp_i64
Low qualifier 64 bit signed integer type.
detail::uint64 lowp_uint64
Low qualifier 64 bit unsigned integer type.
highp_i8vec3 i8vec3
Default qualifier 8 bit signed integer vector of 3 components type.
highp_f32vec2 fvec2
Default single-qualifier floating-point vector of 2 components.
highp_f32vec3 fvec3
Default single-qualifier floating-point vector of 3 components.
detail::uint16 mediump_uint16_t
Medium qualifier 16 bit unsigned integer type.
vec< 2, float, lowp > lowp_vec2
2 components vector of low single-qualifier floating-point numbers.
highp_i16vec2 i16vec2
Default qualifier 16 bit signed integer vector of 2 components type.
detail::uint16 lowp_uint16_t
Low qualifier 16 bit unsigned integer type.
highp_f32mat2x3 f32mat2x3
Default single-qualifier floating-point 2x3 matrix.
detail::int32 highp_int32
High qualifier 32 bit signed integer type.
detail::uint32 mediump_uint32
Medium qualifier 32 bit unsigned integer type.
highp_i8vec1 i8vec1
Default qualifier 8 bit signed integer scalar type.
vec< 3, float, lowp > lowp_vec3
3 components vector of low single-qualifier floating-point numbers.
highp_float32_t float32_t
Default 32 bit single-qualifier floating-point scalar.
detail::uint32 uint32_t
32 bit unsigned integer type.
highp_f64mat3x3 f64mat3x3
Default double-qualifier floating-point 3x3 matrix.
detail::int32 int32
32 bit signed integer type.
detail::uint64 uint64_t
64 bit unsigned integer type.
detail::int32 lowp_i32
Low qualifier 32 bit signed integer type.
detail::int16 highp_i16
High qualifier 16 bit signed integer type.
highp_f32mat3x3 fmat3x3
Default single-qualifier floating-point 3x3 matrix.
vec< 3, float, highp > highp_vec3
3 components vector of high single-qualifier floating-point numbers.
detail::uint64 lowp_u64
Low qualifier 64 bit unsigned integer type.
highp_u16vec1 u16vec1
Default qualifier 16 bit unsigned integer scalar type.
highp_u64vec2 u64vec2
Default qualifier 64 bit unsigned integer vector of 2 components type.
highp_f64quat f64quat
Default double-qualifier floating-point quaternion.
highp_u8vec4 u8vec4
Default qualifier 8 bit unsigned integer vector of 4 components type.
fmat2x2 fmat2
Default single-qualifier floating-point 2x2 matrix.
highp_f32vec4 f32vec4
Default single-qualifier floating-point vector of 4 components.
highp_f32mat2x4 fmat2x4
Default single-qualifier floating-point 2x4 matrix.
highp_f64mat4x2 f64mat4x2
Default double-qualifier floating-point 4x2 matrix.
highp_f32mat2x2 fmat2x2
Default single-qualifier floating-point 2x2 matrix.
detail::uint16 uint16_t
16 bit unsigned integer type.
detail::uint8 highp_uint8_t
Medium qualifier 8 bit unsigned integer type.
vec< 2, float, mediump > mediump_vec2
2 components vector of medium single-qualifier floating-point numbers.
highp_f32quat f32quat
Default single-qualifier floating-point quaternion.
highp_f64mat2x2 f64mat2x2
Default double-qualifier floating-point 2x2 matrix.
double float64
Default 64 bit double-qualifier floating-point scalar.
highp_i32vec1 i32vec1
Default qualifier 32 bit signed integer scalar type.
detail::int16 mediump_i16
Medium qualifier 16 bit signed integer type.
detail::int8 highp_int8
High qualifier 8 bit signed integer type.
vec< 4, float, lowp > lowp_vec4
4 components vector of low single-qualifier floating-point numbers.
detail::int64 lowp_int64_t
Low qualifier 64 bit signed integer type.
highp_i64vec1 i64vec1
Default qualifier 64 bit signed integer scalar type.
detail::uint8 highp_uint8
Medium qualifier 8 bit unsigned integer type.
highp_f64mat4x3 f64mat4x3
Default double-qualifier floating-point 4x3 matrix.
highp_f32vec2 f32vec2
Default single-qualifier floating-point vector of 2 components.
vec< 3, float, mediump > mediump_vec3
3 components vector of medium single-qualifier floating-point numbers.
highp_i16vec1 i16vec1
Default qualifier 16 bit signed integer scalar type.
highp_i64vec3 i64vec3
Default qualifier 64 bit signed integer vector of 3 components type.
highp_i32vec4 i32vec4
Default qualifier 32 bit signed integer vector of 4 components type.
highp_f32mat2x2 f32mat2x2
Default single-qualifier floating-point 2x2 matrix.
highp_f32mat2x3 fmat2x3
Default single-qualifier floating-point 2x3 matrix.
detail::uint64 mediump_uint64
Medium qualifier 64 bit unsigned integer type.
detail::uint16 uint16
16 bit unsigned integer type.
highp_f32mat4x4 fmat4x4
Default single-qualifier floating-point 4x4 matrix.
detail::int16 lowp_int16_t
Low qualifier 16 bit signed integer type.
highp_f32mat4x2 f32mat4x2
Default single-qualifier floating-point 4x2 matrix.
detail::int32 mediump_int32_t
Medium qualifier 32 bit signed integer type.
detail::int32 lowp_int32_t
Low qualifier 32 bit signed integer type.
detail::uint64 highp_uint64_t
Medium qualifier 64 bit unsigned integer type.
f32mat2x2 f32mat2
Default single-qualifier floating-point 2x2 matrix.
highp_float32_t f32
Default 32 bit single-qualifier floating-point scalar.
highp_f64vec3 f64vec3
Default double-qualifier floating-point vector of 3 components.
detail::uint8 u8
8 bit unsigned integer type.
detail::int8 lowp_int8_t
Low qualifier 8 bit signed integer type.
detail::uint16 highp_uint16_t
Medium qualifier 16 bit unsigned integer type.
detail::int8 i8
8 bit signed integer type.
highp_i8vec2 i8vec2
Default qualifier 8 bit signed integer vector of 2 components type.
detail::uint64 highp_u64
Medium qualifier 64 bit unsigned integer type.
fmat3x3 fmat3
Default single-qualifier floating-point 3x3 matrix.
detail::int16 int16_t
16 bit signed integer type.
detail::int16 lowp_int16
Low qualifier 16 bit signed integer type.
detail::uint64 lowp_uint64_t
Low qualifier 64 bit unsigned integer type.
highp_u64vec1 u64vec1
Default qualifier 64 bit unsigned integer scalar type.
highp_f64vec4 f64vec4
Default double-qualifier floating-point vector of 4 components.
highp_i16vec4 i16vec4
Default qualifier 16 bit signed integer vector of 4 components type.
highp_i16vec3 i16vec3
Default qualifier 16 bit signed integer vector of 3 components type.
detail::int32 highp_int32_t
32 bit signed integer type.
highp_f64mat4x4 f64mat4x4
Default double-qualifier floating-point 4x4 matrix.
detail::int32 lowp_int32
Low qualifier 32 bit signed integer type.
detail::int32 mediump_int32
Medium qualifier 32 bit signed integer type.
highp_i64vec2 i64vec2
Default qualifier 64 bit signed integer vector of 2 components type.
detail::uint8 mediump_u8
Medium qualifier 8 bit unsigned integer type.
detail::int8 mediump_int8_t
Medium qualifier 8 bit signed integer type.
detail::uint16 highp_uint16
Medium qualifier 16 bit unsigned integer type.
detail::uint32 highp_uint32_t
Medium qualifier 32 bit unsigned integer type.
highp_u8vec2 u8vec2
Default qualifier 8 bit unsigned integer vector of 2 components type.
detail::int8 int8_t
8 bit signed integer type.
vec< 2, float, highp > highp_vec2
2 components vector of high single-qualifier floating-point numbers.
highp_i64vec4 i64vec4
Default qualifier 64 bit signed integer vector of 4 components type.
highp_f32vec1 fvec1
Default single-qualifier floating-point vector of 1 components.
detail::uint32 u32
32 bit unsigned integer type.
detail::uint16 highp_u16
Medium qualifier 16 bit unsigned integer type.
detail::uint32 uint32
32 bit unsigned integer type.
detail::uint64 u64
64 bit unsigned integer type.
fmat4x4 fmat4
Default single-qualifier floating-point 4x4 matrix.
highp_f32mat4x4 f32mat4x4
Default single-qualifier floating-point 4x4 matrix.
detail::int32 i32
32 bit signed integer type.
highp_f32mat3x4 f32mat3x4
Default single-qualifier floating-point 3x4 matrix.
detail::int16 i16
16 bit signed integer type.
detail::int16 lowp_i16
Low qualifier 16 bit signed integer type.
detail::uint8 lowp_uint8_t
Low qualifier 8 bit unsigned integer type.
highp_u32vec2 u32vec2
Default qualifier 32 bit unsigned integer vector of 2 components type.
detail::uint16 mediump_uint16
Medium qualifier 16 bit unsigned integer type.
detail::int64 highp_int64
High qualifier 64 bit signed integer type.
highp_f32mat2x4 f32mat2x4
Default single-qualifier floating-point 2x4 matrix.
f32mat3x3 f32mat3
Default single-qualifier floating-point 3x3 matrix.
detail::int32 int32_t
32 bit signed integer type.
detail::int16 highp_int16_t
High qualifier 16 bit signed integer type.
detail::int8 lowp_int8
Low qualifier 8 bit signed integer type.
detail::int8 highp_int8_t
High qualifier 8 bit signed integer type.
highp_i32vec2 i32vec2
Default qualifier 32 bit signed integer vector of 2 components type.
highp_f32mat4x3 fmat4x3
Default single-qualifier floating-point 4x3 matrix.
highp_f32mat3x2 f32mat3x2
Default single-qualifier floating-point 3x2 matrix.
detail::uint64 highp_uint64
Medium qualifier 64 bit unsigned integer type.
detail::int64 i64
64 bit signed integer type.
f32mat4x4 f32mat4
Default single-qualifier floating-point 4x4 matrix.
detail::int64 mediump_int64_t
Medium qualifier 64 bit signed integer type.
detail::uint16 u16
16 bit unsigned integer type.
highp_float64_t f64
Default 64 bit double-qualifier floating-point scalar.
detail::uint32 mediump_uint32_t
Medium qualifier 32 bit unsigned integer type.
detail::uint8 mediump_uint8
Medium qualifier 8 bit unsigned integer type.
highp_float64_t float64_t
Default 64 bit double-qualifier floating-point scalar.
highp_u8vec3 u8vec3
Default qualifier 8 bit unsigned integer vector of 3 components type.