15 template <
typename T, precision P>
struct tquat;
20 typedef tquat<float, lowp> lowp_quat;
25 typedef tquat<float, mediump> mediump_quat;
30 typedef tquat<float, highp> highp_quat;
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 typedef highp_quat quat;
46 typedef lowp_quat lowp_fquat;
51 typedef mediump_quat mediump_fquat;
56 typedef highp_quat highp_fquat;
67 typedef tquat<double, lowp> lowp_dquat;
72 typedef tquat<double, mediump> mediump_dquat;
77 typedef tquat<double, highp> highp_dquat;
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 typedef highp_dquat dquat;
245 typedef detail::int8
int8;
249 typedef detail::int16
int16;
253 typedef detail::int32
int32;
257 typedef detail::int64
int64;
260 #if GLM_HAS_EXTENDED_INTEGER_TYPE
266 typedef detail::int8
int8_t;
285 typedef detail::int8
i8;
289 typedef detail::int16
i16;
293 typedef detail::int32
i32;
297 typedef detail::int64
i64;
303 typedef tvec1<i8, lowp> lowp_i8vec1;
307 typedef tvec2<i8, lowp> lowp_i8vec2;
311 typedef tvec3<i8, lowp> lowp_i8vec3;
315 typedef tvec4<i8, lowp> lowp_i8vec4;
320 typedef tvec1<i8, mediump> mediump_i8vec1;
324 typedef tvec2<i8, mediump> mediump_i8vec2;
328 typedef tvec3<i8, mediump> mediump_i8vec3;
332 typedef tvec4<i8, mediump> mediump_i8vec4;
337 typedef tvec1<i8, highp> highp_i8vec1;
341 typedef tvec2<i8, highp> highp_i8vec2;
345 typedef tvec3<i8, highp> highp_i8vec3;
349 typedef tvec4<i8, highp> highp_i8vec4;
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;
362 typedef highp_i8vec1
i8vec1;
382 typedef tvec1<i16, lowp> lowp_i16vec1;
386 typedef tvec2<i16, lowp> lowp_i16vec2;
390 typedef tvec3<i16, lowp> lowp_i16vec3;
394 typedef tvec4<i16, lowp> lowp_i16vec4;
399 typedef tvec1<i16, mediump> mediump_i16vec1;
403 typedef tvec2<i16, mediump> mediump_i16vec2;
407 typedef tvec3<i16, mediump> mediump_i16vec3;
411 typedef tvec4<i16, mediump> mediump_i16vec4;
416 typedef tvec1<i16, highp> highp_i16vec1;
420 typedef tvec2<i16, highp> highp_i16vec2;
424 typedef tvec3<i16, highp> highp_i16vec3;
428 typedef tvec4<i16, highp> highp_i16vec4;
431 #if(defined(GLM_PRECISION_LOWP_INT))
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;
462 typedef tvec1<i32, lowp> lowp_i32vec1;
466 typedef tvec2<i32, lowp> lowp_i32vec2;
470 typedef tvec3<i32, lowp> lowp_i32vec3;
474 typedef tvec4<i32, lowp> lowp_i32vec4;
479 typedef tvec1<i32, mediump> mediump_i32vec1;
483 typedef tvec2<i32, mediump> mediump_i32vec2;
487 typedef tvec3<i32, mediump> mediump_i32vec3;
491 typedef tvec4<i32, mediump> mediump_i32vec4;
496 typedef tvec1<i32, highp> highp_i32vec1;
500 typedef tvec2<i32, highp> highp_i32vec2;
504 typedef tvec3<i32, highp> highp_i32vec3;
508 typedef tvec4<i32, highp> highp_i32vec4;
510 #if(defined(GLM_PRECISION_LOWP_INT))
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;
541 typedef tvec1<i32, lowp> lowp_i32vec1;
545 typedef tvec2<i32, lowp> lowp_i32vec2;
549 typedef tvec3<i32, lowp> lowp_i32vec3;
553 typedef tvec4<i32, lowp> lowp_i32vec4;
558 typedef tvec1<i32, mediump> mediump_i32vec1;
562 typedef tvec2<i32, mediump> mediump_i32vec2;
566 typedef tvec3<i32, mediump> mediump_i32vec3;
570 typedef tvec4<i32, mediump> mediump_i32vec4;
575 typedef tvec1<i32, highp> highp_i32vec1;
579 typedef tvec2<i32, highp> highp_i32vec2;
583 typedef tvec3<i32, highp> highp_i32vec3;
587 typedef tvec4<i32, highp> highp_i32vec4;
589 #if(defined(GLM_PRECISION_LOWP_INT))
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;
621 typedef tvec1<i64, lowp> lowp_i64vec1;
625 typedef tvec2<i64, lowp> lowp_i64vec2;
629 typedef tvec3<i64, lowp> lowp_i64vec3;
633 typedef tvec4<i64, lowp> lowp_i64vec4;
638 typedef tvec1<i64, mediump> mediump_i64vec1;
642 typedef tvec2<i64, mediump> mediump_i64vec2;
646 typedef tvec3<i64, mediump> mediump_i64vec3;
650 typedef tvec4<i64, mediump> mediump_i64vec4;
655 typedef tvec1<i64, highp> highp_i64vec1;
659 typedef tvec2<i64, highp> highp_i64vec2;
663 typedef tvec3<i64, highp> highp_i64vec3;
667 typedef tvec4<i64, highp> highp_i64vec4;
669 #if(defined(GLM_PRECISION_LOWP_INT))
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;
855 typedef detail::uint8
uint8;
859 typedef detail::uint16
uint16;
863 typedef detail::uint32
uint32;
867 typedef detail::uint64
uint64;
869 #if GLM_HAS_EXTENDED_INTEGER_TYPE
894 typedef detail::uint8
u8;
898 typedef detail::uint16
u16;
902 typedef detail::uint32
u32;
906 typedef detail::uint64
u64;
912 typedef tvec1<u8, lowp> lowp_u8vec1;
916 typedef tvec2<u8, lowp> lowp_u8vec2;
920 typedef tvec3<u8, lowp> lowp_u8vec3;
924 typedef tvec4<u8, lowp> lowp_u8vec4;
929 typedef tvec1<u8, mediump> mediump_u8vec1;
933 typedef tvec2<u8, mediump> mediump_u8vec2;
937 typedef tvec3<u8, mediump> mediump_u8vec3;
941 typedef tvec4<u8, mediump> mediump_u8vec4;
946 typedef tvec1<u8, highp> highp_u8vec1;
950 typedef tvec2<u8, highp> highp_u8vec2;
954 typedef tvec3<u8, highp> highp_u8vec3;
958 typedef tvec4<u8, highp> highp_u8vec4;
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;
971 typedef highp_u8vec1
u8vec1;
991 typedef tvec1<u16, lowp> lowp_u16vec1;
995 typedef tvec2<u16, lowp> lowp_u16vec2;
999 typedef tvec3<u16, lowp> lowp_u16vec3;
1003 typedef tvec4<u16, lowp> lowp_u16vec4;
1008 typedef tvec1<u16, mediump> mediump_u16vec1;
1012 typedef tvec2<u16, mediump> mediump_u16vec2;
1016 typedef tvec3<u16, mediump> mediump_u16vec3;
1020 typedef tvec4<u16, mediump> mediump_u16vec4;
1025 typedef tvec1<u16, highp> highp_u16vec1;
1029 typedef tvec2<u16, highp> highp_u16vec2;
1033 typedef tvec3<u16, highp> highp_u16vec3;
1037 typedef tvec4<u16, highp> highp_u16vec4;
1040 #if(defined(GLM_PRECISION_LOWP_INT))
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;
1051 typedef highp_u16vec1
u16vec1;
1071 typedef tvec1<u32, lowp> lowp_u32vec1;
1075 typedef tvec2<u32, lowp> lowp_u32vec2;
1079 typedef tvec3<u32, lowp> lowp_u32vec3;
1083 typedef tvec4<u32, lowp> lowp_u32vec4;
1088 typedef tvec1<u32, mediump> mediump_u32vec1;
1092 typedef tvec2<u32, mediump> mediump_u32vec2;
1096 typedef tvec3<u32, mediump> mediump_u32vec3;
1100 typedef tvec4<u32, mediump> mediump_u32vec4;
1105 typedef tvec1<u32, highp> highp_u32vec1;
1109 typedef tvec2<u32, highp> highp_u32vec2;
1113 typedef tvec3<u32, highp> highp_u32vec3;
1117 typedef tvec4<u32, highp> highp_u32vec4;
1119 #if(defined(GLM_PRECISION_LOWP_INT))
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;
1130 typedef highp_u32vec1
u32vec1;
1150 typedef tvec1<u32, lowp> lowp_u32vec1;
1154 typedef tvec2<u32, lowp> lowp_u32vec2;
1158 typedef tvec3<u32, lowp> lowp_u32vec3;
1162 typedef tvec4<u32, lowp> lowp_u32vec4;
1167 typedef tvec1<u32, mediump> mediump_u32vec1;
1171 typedef tvec2<u32, mediump> mediump_u32vec2;
1175 typedef tvec3<u32, mediump> mediump_u32vec3;
1179 typedef tvec4<u32, mediump> mediump_u32vec4;
1184 typedef tvec1<u32, highp> highp_u32vec1;
1188 typedef tvec2<u32, highp> highp_u32vec2;
1192 typedef tvec3<u32, highp> highp_u32vec3;
1196 typedef tvec4<u32, highp> highp_u32vec4;
1198 #if(defined(GLM_PRECISION_LOWP_INT))
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;
1209 typedef highp_u32vec1
u32vec1;
1215 typedef highp_u32vec2
u32vec2;
1219 typedef highp_u32vec3
u32vec3;
1223 typedef highp_u32vec4
u32vec4;
1230 typedef tvec1<u64, lowp> lowp_u64vec1;
1234 typedef tvec2<u64, lowp> lowp_u64vec2;
1238 typedef tvec3<u64, lowp> lowp_u64vec3;
1242 typedef tvec4<u64, lowp> lowp_u64vec4;
1247 typedef tvec1<u64, mediump> mediump_u64vec1;
1251 typedef tvec2<u64, mediump> mediump_u64vec2;
1255 typedef tvec3<u64, mediump> mediump_u64vec3;
1259 typedef tvec4<u64, mediump> mediump_u64vec4;
1264 typedef tvec1<u64, highp> highp_u64vec1;
1268 typedef tvec2<u64, highp> highp_u64vec2;
1272 typedef tvec3<u64, highp> highp_u64vec3;
1276 typedef tvec4<u64, highp> highp_u64vec4;
1278 #if(defined(GLM_PRECISION_LOWP_UINT))
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;
1289 typedef highp_u64vec1
u64vec1;
1312 typedef detail::float32 lowp_float32;
1316 typedef detail::float64 lowp_float64;
1320 typedef detail::float32 lowp_float32_t;
1324 typedef detail::float64 lowp_float64_t;
1336 typedef detail::float32 lowp_float32;
1340 typedef detail::float64 lowp_float64;
1344 typedef detail::float32 lowp_float32_t;
1348 typedef detail::float64 lowp_float64_t;
1361 typedef detail::float32 lowp_float32;
1365 typedef detail::float64 lowp_float64;
1369 typedef detail::float32 lowp_float32_t;
1373 typedef detail::float64 lowp_float64_t;
1386 typedef detail::float32 mediump_float32;
1390 typedef detail::float64 mediump_float64;
1394 typedef detail::float32 mediump_float32_t;
1398 typedef detail::float64 mediump_float64_t;
1411 typedef detail::float32 highp_float32;
1415 typedef detail::float64 highp_float64;
1419 typedef detail::float32 highp_float32_t;
1423 typedef detail::float64 highp_float64_t;
1434 #if(defined(GLM_PRECISION_LOWP_FLOAT))
1453 typedef lowp_f32
f32;
1457 typedef lowp_f64
f64;
1459 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
1463 typedef mediump_float32 float32;
1467 typedef mediump_float64 float64;
1479 typedef mediump_float32
f32;
1483 typedef mediump_float64
f64;
1485 #else//(defined(GLM_PRECISION_HIGHP_FLOAT))
1489 typedef highp_float32 float32;
1493 typedef highp_float64 float64;
1515 typedef tvec1<float, lowp> lowp_vec1;
1531 typedef tvec1<float, lowp> lowp_fvec1;
1535 typedef tvec2<float, lowp> lowp_fvec2;
1539 typedef tvec3<float, lowp> lowp_fvec3;
1543 typedef tvec4<float, lowp> lowp_fvec4;
1548 typedef tvec1<float, mediump> mediump_vec1;
1564 typedef tvec1<float, mediump> mediump_fvec1;
1568 typedef tvec2<float, mediump> mediump_fvec2;
1572 typedef tvec3<float, mediump> mediump_fvec3;
1576 typedef tvec4<float, mediump> mediump_fvec4;
1581 typedef tvec1<float, highp> highp_vec1;
1597 typedef tvec1<float, highp> highp_fvec1;
1601 typedef tvec2<float, highp> highp_fvec2;
1605 typedef tvec3<float, highp> highp_fvec3;
1609 typedef tvec4<float, highp> highp_fvec4;
1614 typedef tvec1<f32, lowp> lowp_f32vec1;
1618 typedef tvec2<f32, lowp> lowp_f32vec2;
1622 typedef tvec3<f32, lowp> lowp_f32vec3;
1626 typedef tvec4<f32, lowp> lowp_f32vec4;
1630 typedef tvec1<f32, mediump> mediump_f32vec1;
1634 typedef tvec2<f32, mediump> mediump_f32vec2;
1638 typedef tvec3<f32, mediump> mediump_f32vec3;
1642 typedef tvec4<f32, mediump> mediump_f32vec4;
1646 typedef tvec1<f32, highp> highp_f32vec1;
1650 typedef tvec2<f32, highp> highp_f32vec2;
1654 typedef tvec3<f32, highp> highp_f32vec3;
1658 typedef tvec4<f32, highp> highp_f32vec4;
1663 typedef tvec1<f64, lowp> lowp_f64vec1;
1667 typedef tvec2<f64, lowp> lowp_f64vec2;
1671 typedef tvec3<f64, lowp> lowp_f64vec3;
1675 typedef tvec4<f64, lowp> lowp_f64vec4;
1679 typedef tvec1<f64, mediump> mediump_f64vec1;
1683 typedef tvec2<f64, mediump> mediump_f64vec2;
1687 typedef tvec3<f64, mediump> mediump_f64vec3;
1691 typedef tvec4<f64, mediump> mediump_f64vec4;
1695 typedef tvec1<f64, highp> highp_f64vec1;
1699 typedef tvec2<f64, highp> highp_f64vec2;
1703 typedef tvec3<f64, highp> highp_f64vec3;
1707 typedef tvec4<f64, highp> highp_f64vec4;
1719 typedef tmat2x2<f32, lowp> lowp_fmat2x2;
1723 typedef tmat2x3<f32, lowp> lowp_fmat2x3;
1727 typedef tmat2x4<f32, lowp> lowp_fmat2x4;
1731 typedef tmat3x2<f32, lowp> lowp_fmat3x2;
1735 typedef tmat3x3<f32, lowp> lowp_fmat3x3;
1739 typedef tmat3x4<f32, lowp> lowp_fmat3x4;
1743 typedef tmat4x2<f32, lowp> lowp_fmat4x2;
1747 typedef tmat4x3<f32, lowp> lowp_fmat4x3;
1751 typedef tmat4x4<f32, lowp> lowp_fmat4x4;
1759 typedef lowp_fmat2x2 lowp_fmat2;
1763 typedef lowp_fmat3x3 lowp_fmat3;
1767 typedef lowp_fmat4x4 lowp_fmat4;
1776 typedef tmat2x2<f32, mediump> mediump_fmat2x2;
1780 typedef tmat2x3<f32, mediump> mediump_fmat2x3;
1784 typedef tmat2x4<f32, mediump> mediump_fmat2x4;
1788 typedef tmat3x2<f32, mediump> mediump_fmat3x2;
1792 typedef tmat3x3<f32, mediump> mediump_fmat3x3;
1796 typedef tmat3x4<f32, mediump> mediump_fmat3x4;
1800 typedef tmat4x2<f32, mediump> mediump_fmat4x2;
1804 typedef tmat4x3<f32, mediump> mediump_fmat4x3;
1808 typedef tmat4x4<f32, mediump> mediump_fmat4x4;
1816 typedef mediump_fmat2x2 mediump_fmat2;
1820 typedef mediump_fmat3x3 mediump_fmat3;
1824 typedef mediump_fmat4x4 mediump_fmat4;
1833 typedef tmat2x2<f32, highp> highp_fmat2x2;
1837 typedef tmat2x3<f32, highp> highp_fmat2x3;
1841 typedef tmat2x4<f32, highp> highp_fmat2x4;
1845 typedef tmat3x2<f32, highp> highp_fmat3x2;
1849 typedef tmat3x3<f32, highp> highp_fmat3x3;
1853 typedef tmat3x4<f32, highp> highp_fmat3x4;
1857 typedef tmat4x2<f32, highp> highp_fmat4x2;
1861 typedef tmat4x3<f32, highp> highp_fmat4x3;
1865 typedef tmat4x4<f32, highp> highp_fmat4x4;
1873 typedef highp_fmat2x2 highp_fmat2;
1877 typedef highp_fmat3x3 highp_fmat3;
1881 typedef highp_fmat4x4 highp_fmat4;
1890 typedef tmat2x2<f32, lowp> lowp_f32mat2x2;
1894 typedef tmat2x3<f32, lowp> lowp_f32mat2x3;
1898 typedef tmat2x4<f32, lowp> lowp_f32mat2x4;
1902 typedef tmat3x2<f32, lowp> lowp_f32mat3x2;
1906 typedef tmat3x3<f32, lowp> lowp_f32mat3x3;
1910 typedef tmat3x4<f32, lowp> lowp_f32mat3x4;
1914 typedef tmat4x2<f32, lowp> lowp_f32mat4x2;
1918 typedef tmat4x3<f32, lowp> lowp_f32mat4x3;
1922 typedef tmat4x4<f32, lowp> lowp_f32mat4x4;
1930 typedef lowp_f32mat2x2 lowp_f32mat2;
1934 typedef lowp_f32mat3x3 lowp_f32mat3;
1938 typedef lowp_f32mat4x4 lowp_f32mat4;
1947 typedef tmat2x2<f32, mediump> mediump_f32mat2x2;
1951 typedef tmat2x3<f32, mediump> mediump_f32mat2x3;
1955 typedef tmat2x4<f32, mediump> mediump_f32mat2x4;
1959 typedef tmat3x2<f32, mediump> mediump_f32mat3x2;
1963 typedef tmat3x3<f32, mediump> mediump_f32mat3x3;
1967 typedef tmat3x4<f32, mediump> mediump_f32mat3x4;
1971 typedef tmat4x2<f32, mediump> mediump_f32mat4x2;
1975 typedef tmat4x3<f32, mediump> mediump_f32mat4x3;
1979 typedef tmat4x4<f32, mediump> mediump_f32mat4x4;
1987 typedef mediump_f32mat2x2 mediump_f32mat2;
1991 typedef mediump_f32mat3x3 mediump_f32mat3;
1995 typedef mediump_f32mat4x4 mediump_f32mat4;
2004 typedef tmat2x2<f32, highp> highp_f32mat2x2;
2008 typedef tmat2x3<f32, highp> highp_f32mat2x3;
2012 typedef tmat2x4<f32, highp> highp_f32mat2x4;
2016 typedef tmat3x2<f32, highp> highp_f32mat3x2;
2020 typedef tmat3x3<f32, highp> highp_f32mat3x3;
2024 typedef tmat3x4<f32, highp> highp_f32mat3x4;
2028 typedef tmat4x2<f32, highp> highp_f32mat4x2;
2032 typedef tmat4x3<f32, highp> highp_f32mat4x3;
2036 typedef tmat4x4<f32, highp> highp_f32mat4x4;
2044 typedef highp_f32mat2x2 highp_f32mat2;
2048 typedef highp_f32mat3x3 highp_f32mat3;
2052 typedef highp_f32mat4x4 highp_f32mat4;
2061 typedef tmat2x2<f64, lowp> lowp_f64mat2x2;
2065 typedef tmat2x3<f64, lowp> lowp_f64mat2x3;
2069 typedef tmat2x4<f64, lowp> lowp_f64mat2x4;
2073 typedef tmat3x2<f64, lowp> lowp_f64mat3x2;
2077 typedef tmat3x3<f64, lowp> lowp_f64mat3x3;
2081 typedef tmat3x4<f64, lowp> lowp_f64mat3x4;
2085 typedef tmat4x2<f64, lowp> lowp_f64mat4x2;
2089 typedef tmat4x3<f64, lowp> lowp_f64mat4x3;
2093 typedef tmat4x4<f64, lowp> lowp_f64mat4x4;
2101 typedef lowp_f64mat2x2 lowp_f64mat2;
2105 typedef lowp_f64mat3x3 lowp_f64mat3;
2109 typedef lowp_f64mat4x4 lowp_f64mat4;
2118 typedef tmat2x2<f64, mediump> mediump_f64mat2x2;
2122 typedef tmat2x3<f64, mediump> mediump_f64mat2x3;
2126 typedef tmat2x4<f64, mediump> mediump_f64mat2x4;
2130 typedef tmat3x2<f64, mediump> mediump_f64mat3x2;
2134 typedef tmat3x3<f64, mediump> mediump_f64mat3x3;
2138 typedef tmat3x4<f64, mediump> mediump_f64mat3x4;
2142 typedef tmat4x2<f64, mediump> mediump_f64mat4x2;
2146 typedef tmat4x3<f64, mediump> mediump_f64mat4x3;
2150 typedef tmat4x4<f64, mediump> mediump_f64mat4x4;
2158 typedef mediump_f64mat2x2 mediump_f64mat2;
2162 typedef mediump_f64mat3x3 mediump_f64mat3;
2166 typedef mediump_f64mat4x4 mediump_f64mat4;
2174 typedef tmat2x2<f64, highp> highp_f64mat2x2;
2178 typedef tmat2x3<f64, highp> highp_f64mat2x3;
2182 typedef tmat2x4<f64, highp> highp_f64mat2x4;
2186 typedef tmat3x2<f64, highp> highp_f64mat3x2;
2190 typedef tmat3x3<f64, highp> highp_f64mat3x3;
2194 typedef tmat3x4<f64, highp> highp_f64mat3x4;
2198 typedef tmat4x2<f64, highp> highp_f64mat4x2;
2202 typedef tmat4x3<f64, highp> highp_f64mat4x3;
2206 typedef tmat4x4<f64, highp> highp_f64mat4x4;
2214 typedef highp_f64mat2x2 highp_f64mat2;
2218 typedef highp_f64mat3x3 highp_f64mat3;
2222 typedef highp_f64mat4x4 highp_f64mat4;
2229 typedef tquat<f32, lowp> lowp_f32quat;
2233 typedef tquat<f64, lowp> lowp_f64quat;
2237 typedef tquat<f32, mediump> mediump_f32quat;
2241 typedef tquat<f64, mediump> mediump_f64quat;
2245 typedef tquat<f32, highp> highp_f32quat;
2249 typedef tquat<f64, highp> highp_f64quat;
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;
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;
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;
2323 typedef mediump_f32quat
f32quat;
2324 #else//if(defined(GLM_PRECISION_HIGHP_FLOAT))
2325 typedef highp_f32vec1
fvec1;
2391 typedef highp_fquat fquat;
2464 #if(defined(GLM_PRECISION_LOWP_DOUBLE))
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;
2499 typedef mediump_f64quat
f64quat;
2501 typedef highp_f64vec1
f64vec1;
detail::int8 lowp_int8_t
Low precision 8 bit signed integer type.
f32mat4x4 f32mat4
Default single-precision floating-point 4x4 matrix.
highp_i16vec1 i16vec1
Default precision 16 bit signed integer scalar type.
float float32
Default 32 bit single-precision floating-point scalar.
highp_f32vec1 f32vec1
Default single-precision floating-point vector of 1 components.
highp_f32mat2x4 f32mat2x4
Default single-precision floating-point 2x4 matrix.
detail::uint8 lowp_uint8
Low precision 8 bit unsigned integer type.
highp_f64vec4 f64vec4
Default double-precision floating-point vector of 4 components.
highp_u32vec1 u32vec1
Default precision 32 bit unsigned integer scalar type.
detail::int8 mediump_int8
Medium precision 8 bit signed integer type.
detail::int8 mediump_i8
Medium precision 8 bit signed integer type.
detail::uint8 highp_u8
Medium precision 8 bit unsigned integer type.
detail::int8 mediump_int8_t
Medium precision 8 bit signed integer type.
detail::uint64 highp_uint64_t
Medium precision 64 bit unsigned integer type.
detail::uint16 highp_uint16
Medium precision 16 bit unsigned integer type.
detail::uint32 highp_uint32_t
Medium precision 32 bit unsigned integer type.
detail::int32 mediump_i32
Medium precision 32 bit signed integer type.
detail::int8 highp_i8
High precision 8 bit signed integer type.
highp_i64vec2 i64vec2
Default precision 64 bit signed integer vector of 2 components type.
highp_u32vec3 u32vec3
Default precision 32 bit unsigned integer vector of 3 components type.
detail::uint16 lowp_uint16
Low precision 16 bit unsigned integer type.
highp_u8vec3 u8vec3
Default precision 8 bit unsigned integer vector of 3 components type.
highp_f32mat3x3 f32mat3x3
Default single-precision floating-point 3x3 matrix.
tvec3< float, lowp > lowp_vec3
3 components vector of low single-precision floating-point numbers.
detail::int64 mediump_i64
Medium precision 64 bit signed integer type.
highp_u16vec4 u16vec4
Default precision 16 bit unsigned integer vector of 4 components type.
detail::uint64 highp_u64
Medium precision 64 bit unsigned integer type.
highp_float64_t f64
Default 64 bit double-precision floating-point scalar.
highp_f64vec1 f64vec1
Default double-precision floating-point vector of 1 components.
highp_u64vec4 u64vec4
Default precision 64 bit unsigned integer vector of 4 components type.
detail::int8 lowp_int8
Low precision 8 bit signed integer type.
detail::int16 lowp_int16
Low precision 16 bit signed integer type.
highp_i16vec4 i16vec4
Default precision 16 bit signed integer vector of 4 components type.
detail::int16 i16
16 bit signed integer type.
highp_f64mat3x2 f64mat3x2
Default double-precision floating-point 3x2 matrix.
fmat3x3 fmat3
Default single-precision floating-point 3x3 matrix.
detail::int8 int8
8 bit signed integer type.
detail::int32 lowp_i32
Low precision 32 bit signed integer type.
detail::uint8 uint8_t
8 bit unsigned integer type.
detail::int32 lowp_int32_t
Low precision 32 bit signed integer type.
tvec2< float, highp > highp_vec2
2 components vector of high single-precision floating-point numbers.
detail::uint8 highp_uint8
Medium precision 8 bit unsigned integer type.
detail::int32 highp_i32
High precision 32 bit signed integer type.
detail::uint8 mediump_uint8
Medium precision 8 bit unsigned integer type.
detail::uint8 mediump_u8
Medium precision 8 bit unsigned integer type.
highp_f32mat2x3 fmat2x3
Default single-precision floating-point 2x3 matrix.
highp_f32mat4x2 f32mat4x2
Default single-precision floating-point 4x2 matrix.
detail::uint16 highp_u16
Medium precision 16 bit unsigned integer type.
detail::uint32 highp_u32
Medium precision 32 bit unsigned integer type.
detail::int64 int64
64 bit signed integer type.
detail::uint32 u32
32 bit unsigned integer type.
highp_f64mat4x4 f64mat4x4
Default double-precision floating-point 4x4 matrix.
double float64
Default 64 bit double-precision floating-point scalar.
detail::int8 highp_int8
High precision 8 bit signed integer type.
highp_f64mat2x3 f64mat2x3
Default double-precision floating-point 2x3 matrix.
highp_u16vec3 u16vec3
Default precision 16 bit unsigned integer vector of 3 components type.
highp_i16vec2 i16vec2
Default precision 16 bit signed integer vector of 2 components type.
f32mat2x2 f32mat2
Default single-precision floating-point 2x2 matrix.
detail::uint32 lowp_uint32
Low precision 32 bit unsigned integer type.
detail::int16 mediump_int16_t
Medium precision 16 bit signed integer type.
detail::int8 int8_t
8 bit signed integer type.
detail::uint64 mediump_uint64
Medium precision 64 bit unsigned integer type.
detail::uint16 uint16
16 bit unsigned integer type.
highp_f32mat4x3 fmat4x3
Default single-precision floating-point 4x3 matrix.
detail::uint16 u16
16 bit unsigned integer type.
highp_f32vec4 fvec4
Default single-precision floating-point vector of 4 components.
highp_u32vec2 u32vec2
Default precision 32 bit unsigned integer vector of 2 components type.
highp_f32mat2x2 f32mat2x2
Default single-precision floating-point 2x2 matrix.
f64mat4x4 f64mat4
Default double-precision floating-point 4x4 matrix.
detail::int32 mediump_int32
Medium precision 32 bit signed integer type.
detail::int16 highp_i16
High precision 16 bit signed integer type.
highp_f32mat3x2 f32mat3x2
Default single-precision floating-point 3x2 matrix.
detail::uint8 highp_uint8_t
Medium precision 8 bit unsigned integer type.
highp_f64mat4x2 f64mat4x2
Default double-precision floating-point 4x2 matrix.
highp_f64mat3x4 f64mat3x4
Default double-precision floating-point 3x4 matrix.
highp_f32mat4x4 fmat4x4
Default single-precision floating-point 4x4 matrix.
highp_float32_t float32_t
Default 32 bit single-precision floating-point scalar.
detail::uint64 highp_uint64
Medium precision 64 bit unsigned integer type.
highp_u64vec1 u64vec1
Default precision 64 bit unsigned integer scalar type.
detail::int64 lowp_i64
Low precision 64 bit signed integer type.
highp_f64vec3 f64vec3
Default double-precision floating-point vector of 3 components.
detail::int16 int16
16 bit signed integer type.
detail::int32 lowp_int32
Low precision 32 bit signed integer type.
detail::uint64 lowp_uint64_t
Low precision 64 bit unsigned integer type.
highp_i32vec1 i32vec1
Default precision 32 bit signed integer scalar type.
tvec3< float, highp > highp_vec3
3 components vector of high single-precision floating-point numbers.
detail::uint32 lowp_u32
Low precision 32 bit unsigned integer type.
highp_u8vec2 u8vec2
Default precision 8 bit unsigned integer vector of 2 components type.
highp_i16vec3 i16vec3
Default precision 16 bit signed integer vector of 3 components type.
highp_f32vec2 f32vec2
Default single-precision floating-point vector of 2 components.
detail::uint8 lowp_uint8_t
Low precision 8 bit unsigned integer type.
highp_i64vec4 i64vec4
Default precision 64 bit signed integer vector of 4 components type.
highp_f32vec2 fvec2
Default single-precision floating-point vector of 2 components.
fmat4x4 fmat4
Default single-precision floating-point 4x4 matrix.
highp_f32vec4 f32vec4
Default single-precision floating-point vector of 4 components.
detail::uint64 lowp_u64
Low precision 64 bit unsigned integer type.
detail::int8 i8
8 bit signed integer type.
highp_f32mat2x2 fmat2x2
Default single-precision floating-point 2x2 matrix.
highp_i64vec3 i64vec3
Default precision 64 bit signed integer vector of 3 components type.
tvec4< float, lowp > lowp_vec4
4 components vector of low single-precision floating-point numbers.
tvec2< float, lowp > lowp_vec2
2 components vector of low single-precision floating-point numbers.
detail::int16 lowp_i16
Low precision 16 bit signed integer type.
detail::uint64 lowp_uint64
Low precision 64 bit unsigned integer type.
detail::int64 highp_int64
High precision 64 bit signed integer type.
detail::uint8 u8
8 bit unsigned integer type.
detail::uint32 mediump_u32
Medium precision 32 bit unsigned integer type.
f64mat2x2 f64mat2
Default double-precision floating-point 2x2 matrix.
highp_f64mat2x2 f64mat2x2
Default double-precision floating-point 2x2 matrix.
detail::int64 lowp_int64_t
Low precision 64 bit signed integer type.
detail::uint16 lowp_u16
Low precision 16 bit unsigned integer type.
highp_u16vec2 u16vec2
Default precision 16 bit unsigned integer vector of 2 components type.
detail::uint32 mediump_uint32_t
Medium precision 32 bit unsigned integer type.
highp_u16vec1 u16vec1
Default precision 16 bit unsigned integer scalar type.
highp_f64quat f64quat
Default double-precision floating-point quaternion.
detail::uint16 lowp_uint16_t
Low precision 16 bit unsigned integer type.
detail::int64 highp_i64
High precision 64 bit signed integer type.
detail::int16 mediump_i16
Medium precision 16 bit signed integer type.
highp_u64vec2 u64vec2
Default precision 64 bit unsigned integer vector of 2 components type.
detail::int32 highp_int32
High precision 32 bit signed integer type.
highp_f32mat2x3 f32mat2x3
Default single-precision floating-point 2x3 matrix.
highp_u32vec4 u32vec4
Default precision 32 bit unsigned integer vector of 4 components type.
detail::uint8 uint8
8 bit unsigned integer type.
detail::int32 mediump_int32_t
Medium precision 32 bit signed integer type.
detail::uint32 uint32
32 bit unsigned integer type.
detail::int32 int32_t
32 bit signed integer type.
fmat2x2 fmat2
Default single-precision floating-point 2x2 matrix.
detail::uint16 mediump_u16
Medium precision 16 bit unsigned integer type.
detail::uint16 highp_uint16_t
Medium precision 16 bit unsigned integer type.
tvec3< float, mediump > mediump_vec3
3 components vector of medium single-precision floating-point numbers.
detail::uint32 mediump_uint32
Medium precision 32 bit unsigned integer type.
detail::uint64 uint64_t
64 bit unsigned integer type.
highp_i8vec2 i8vec2
Default precision 8 bit signed integer vector of 2 components type.
highp_f32mat4x3 f32mat4x3
Default single-precision floating-point 4x3 matrix.
highp_f64mat4x3 f64mat4x3
Default double-precision floating-point 4x3 matrix.
detail::uint64 uint64
64 bit unsigned integer type.
highp_f32mat2x4 fmat2x4
Default single-precision floating-point 2x4 matrix.
detail::uint8 mediump_uint8_t
Medium precision 8 bit unsigned integer type.
highp_f32mat3x4 fmat3x4
Default single-precision floating-point 3x4 matrix.
highp_i32vec2 i32vec2
Default precision 32 bit signed integer vector of 2 components type.
highp_float64_t float64_t
Default 64 bit double-precision floating-point scalar.
highp_i8vec3 i8vec3
Default precision 8 bit signed integer vector of 3 components type.
detail::int64 mediump_int64_t
Medium precision 64 bit signed integer type.
highp_f32mat4x4 f32mat4x4
Default single-precision floating-point 4x4 matrix.
highp_i8vec1 i8vec1
Default precision 8 bit signed integer scalar type.
highp_i32vec4 i32vec4
Default precision 32 bit signed integer vector of 4 components type.
detail::int8 lowp_i8
Low precision 8 bit signed integer type.
highp_f32vec3 f32vec3
Default single-precision floating-point vector of 3 components.
highp_f32vec1 fvec1
Default single-precision floating-point vector of 1 components.
detail::int32 highp_int32_t
32 bit signed integer type.
detail::int64 mediump_int64
Medium precision 64 bit signed integer type.
detail::uint64 mediump_u64
Medium precision 64 bit unsigned integer type.
highp_u64vec3 u64vec3
Default precision 64 bit unsigned integer vector of 3 components type.
highp_f32mat3x3 fmat3x3
Default single-precision floating-point 3x3 matrix.
highp_i8vec4 i8vec4
Default precision 8 bit signed integer vector of 4 components type.
highp_f32vec3 fvec3
Default single-precision floating-point vector of 3 components.
detail::uint8 lowp_u8
Low precision 8 bit unsigned integer type.
detail::uint32 highp_uint32
Medium precision 32 bit unsigned integer type.
highp_f32mat4x2 fmat4x2
Default single-precision floating-point 4x2 matrix.
detail::uint16 mediump_uint16_t
Medium precision 16 bit unsigned integer type.
detail::uint32 uint32_t
32 bit unsigned integer type.
detail::uint64 mediump_uint64_t
Medium precision 64 bit unsigned integer type.
tvec4< float, highp > highp_vec4
4 components vector of high single-precision floating-point numbers.
highp_i32vec3 i32vec3
Default precision 32 bit signed integer vector of 3 components type.
highp_f32mat3x4 f32mat3x4
Default single-precision floating-point 3x4 matrix.
tvec2< float, mediump > mediump_vec2
2 components vector of medium single-precision floating-point numbers.
detail::int32 int32
32 bit signed integer type.
highp_u8vec4 u8vec4
Default precision 8 bit unsigned integer vector of 4 components type.
detail::int64 highp_int64_t
High precision 64 bit signed integer type.
highp_i64vec1 i64vec1
Default precision 64 bit signed integer scalar type.
detail::uint16 mediump_uint16
Medium precision 16 bit unsigned integer type.
detail::uint64 u64
64 bit unsigned integer type.
detail::int64 lowp_int64
Low precision 64 bit signed integer type.
detail::int16 lowp_int16_t
Low precision 16 bit signed integer type.
tvec4< float, mediump > mediump_vec4
4 components vector of medium single-precision floating-point numbers.
detail::int16 mediump_int16
Medium precision 16 bit signed integer type.
detail::int16 int16_t
16 bit signed integer type.
detail::int64 int64_t
64 bit signed integer type.
detail::int32 i32
32 bit signed integer type.
detail::uint32 lowp_uint32_t
Low precision 32 bit unsigned integer type.
detail::int16 highp_int16
High precision 16 bit signed integer type.
detail::uint16 uint16_t
16 bit unsigned integer type.
highp_f32quat f32quat
Default single-precision floating-point quaternion.
f64mat3x3 f64mat3
Default double-precision floating-point 3x3 matrix.
highp_f64vec2 f64vec2
Default double-precision floating-point vector of 2 components.
detail::int64 i64
64 bit signed integer type.
highp_f64mat2x4 f64mat2x4
Default double-precision floating-point 2x4 matrix.
highp_f64mat3x3 f64mat3x3
Default double-precision floating-point 3x3 matrix.
detail::int16 highp_int16_t
High precision 16 bit signed integer type.
highp_f32mat3x2 fmat3x2
Default single-precision floating-point 3x2 matrix.
highp_u8vec1 u8vec1
Default precision 8 bit unsigned integer scalar type.
highp_float32_t f32
Default 32 bit single-precision floating-point scalar.
detail::int8 highp_int8_t
High precision 8 bit signed integer type.
f32mat3x3 f32mat3
Default single-precision floating-point 3x3 matrix.