44 template <
typename T, precision P>
struct tquat;
49 typedef tquat<float, lowp> lowp_quat;
54 typedef tquat<float, mediump> mediump_quat;
59 typedef tquat<float, highp> highp_quat;
61 #if(defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
62 typedef highp_quat quat;
63 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
64 typedef mediump_quat quat;
65 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && defined(GLM_PRECISION_LOWP_FLOAT))
66 typedef lowp_quat quat;
67 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
68 typedef highp_quat quat;
75 typedef lowp_quat lowp_fquat;
80 typedef mediump_quat mediump_fquat;
85 typedef highp_quat highp_fquat;
96 typedef tquat<double, lowp> lowp_dquat;
101 typedef tquat<double, mediump> mediump_dquat;
106 typedef tquat<double, highp> highp_dquat;
108 #if(defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
109 typedef highp_dquat dquat;
110 #elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
111 typedef mediump_dquat dquat;
112 #elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && defined(GLM_PRECISION_LOWP_DOUBLE))
113 typedef lowp_dquat dquat;
114 #elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
115 typedef highp_dquat dquat;
274 typedef detail::int8
int8;
278 typedef detail::int16
int16;
282 typedef detail::int32
int32;
286 typedef detail::int64
int64;
289 #if GLM_HAS_EXTENDED_INTEGER_TYPE
295 typedef detail::int8
int8_t;
314 typedef detail::int8
i8;
318 typedef detail::int16
i16;
322 typedef detail::int32
i32;
326 typedef detail::int64
i64;
332 typedef tvec1<i8, lowp> lowp_i8vec1;
336 typedef tvec2<i8, lowp> lowp_i8vec2;
340 typedef tvec3<i8, lowp> lowp_i8vec3;
344 typedef tvec4<i8, lowp> lowp_i8vec4;
349 typedef tvec1<i8, mediump> mediump_i8vec1;
353 typedef tvec2<i8, mediump> mediump_i8vec2;
357 typedef tvec3<i8, mediump> mediump_i8vec3;
361 typedef tvec4<i8, mediump> mediump_i8vec4;
366 typedef tvec1<i8, highp> highp_i8vec1;
370 typedef tvec2<i8, highp> highp_i8vec2;
374 typedef tvec3<i8, highp> highp_i8vec3;
378 typedef tvec4<i8, highp> highp_i8vec4;
380 #if(defined(GLM_PRECISION_LOWP_INT))
381 typedef lowp_i8vec1
i8vec1;
382 typedef lowp_i8vec2
i8vec2;
383 typedef lowp_i8vec3
i8vec3;
384 typedef lowp_i8vec4
i8vec4;
385 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
386 typedef mediump_i8vec1
i8vec1;
387 typedef mediump_i8vec2
i8vec2;
388 typedef mediump_i8vec3
i8vec3;
389 typedef mediump_i8vec4
i8vec4;
391 typedef highp_i8vec1
i8vec1;
411 typedef tvec1<i16, lowp> lowp_i16vec1;
415 typedef tvec2<i16, lowp> lowp_i16vec2;
419 typedef tvec3<i16, lowp> lowp_i16vec3;
423 typedef tvec4<i16, lowp> lowp_i16vec4;
428 typedef tvec1<i16, mediump> mediump_i16vec1;
432 typedef tvec2<i16, mediump> mediump_i16vec2;
436 typedef tvec3<i16, mediump> mediump_i16vec3;
440 typedef tvec4<i16, mediump> mediump_i16vec4;
445 typedef tvec1<i16, highp> highp_i16vec1;
449 typedef tvec2<i16, highp> highp_i16vec2;
453 typedef tvec3<i16, highp> highp_i16vec3;
457 typedef tvec4<i16, highp> highp_i16vec4;
460 #if(defined(GLM_PRECISION_LOWP_INT))
465 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
466 typedef mediump_i16vec1
i16vec1;
467 typedef mediump_i16vec2
i16vec2;
468 typedef mediump_i16vec3
i16vec3;
469 typedef mediump_i16vec4
i16vec4;
491 typedef tvec1<i32, lowp> lowp_i32vec1;
495 typedef tvec2<i32, lowp> lowp_i32vec2;
499 typedef tvec3<i32, lowp> lowp_i32vec3;
503 typedef tvec4<i32, lowp> lowp_i32vec4;
508 typedef tvec1<i32, mediump> mediump_i32vec1;
512 typedef tvec2<i32, mediump> mediump_i32vec2;
516 typedef tvec3<i32, mediump> mediump_i32vec3;
520 typedef tvec4<i32, mediump> mediump_i32vec4;
525 typedef tvec1<i32, highp> highp_i32vec1;
529 typedef tvec2<i32, highp> highp_i32vec2;
533 typedef tvec3<i32, highp> highp_i32vec3;
537 typedef tvec4<i32, highp> highp_i32vec4;
539 #if(defined(GLM_PRECISION_LOWP_INT))
544 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
545 typedef mediump_i32vec1
i32vec1;
546 typedef mediump_i32vec2
i32vec2;
547 typedef mediump_i32vec3
i32vec3;
548 typedef mediump_i32vec4
i32vec4;
570 typedef tvec1<i32, lowp> lowp_i32vec1;
574 typedef tvec2<i32, lowp> lowp_i32vec2;
578 typedef tvec3<i32, lowp> lowp_i32vec3;
582 typedef tvec4<i32, lowp> lowp_i32vec4;
587 typedef tvec1<i32, mediump> mediump_i32vec1;
591 typedef tvec2<i32, mediump> mediump_i32vec2;
595 typedef tvec3<i32, mediump> mediump_i32vec3;
599 typedef tvec4<i32, mediump> mediump_i32vec4;
604 typedef tvec1<i32, highp> highp_i32vec1;
608 typedef tvec2<i32, highp> highp_i32vec2;
612 typedef tvec3<i32, highp> highp_i32vec3;
616 typedef tvec4<i32, highp> highp_i32vec4;
618 #if(defined(GLM_PRECISION_LOWP_INT))
623 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
624 typedef mediump_i32vec1
i32vec1;
625 typedef mediump_i32vec2
i32vec2;
626 typedef mediump_i32vec3
i32vec3;
627 typedef mediump_i32vec4
i32vec4;
650 typedef tvec1<i64, lowp> lowp_i64vec1;
654 typedef tvec2<i64, lowp> lowp_i64vec2;
658 typedef tvec3<i64, lowp> lowp_i64vec3;
662 typedef tvec4<i64, lowp> lowp_i64vec4;
667 typedef tvec1<i64, mediump> mediump_i64vec1;
671 typedef tvec2<i64, mediump> mediump_i64vec2;
675 typedef tvec3<i64, mediump> mediump_i64vec3;
679 typedef tvec4<i64, mediump> mediump_i64vec4;
684 typedef tvec1<i64, highp> highp_i64vec1;
688 typedef tvec2<i64, highp> highp_i64vec2;
692 typedef tvec3<i64, highp> highp_i64vec3;
696 typedef tvec4<i64, highp> highp_i64vec4;
698 #if(defined(GLM_PRECISION_LOWP_INT))
703 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
704 typedef mediump_i64vec1
i64vec1;
705 typedef mediump_i64vec2
i64vec2;
706 typedef mediump_i64vec3
i64vec3;
707 typedef mediump_i64vec4
i64vec4;
884 typedef detail::uint8
uint8;
888 typedef detail::uint16
uint16;
892 typedef detail::uint32
uint32;
896 typedef detail::uint64
uint64;
898 #if GLM_HAS_EXTENDED_INTEGER_TYPE
923 typedef detail::uint8
u8;
927 typedef detail::uint16
u16;
931 typedef detail::uint32
u32;
935 typedef detail::uint64
u64;
941 typedef tvec1<u8, lowp> lowp_u8vec1;
945 typedef tvec2<u8, lowp> lowp_u8vec2;
949 typedef tvec3<u8, lowp> lowp_u8vec3;
953 typedef tvec4<u8, lowp> lowp_u8vec4;
958 typedef tvec1<u8, mediump> mediump_u8vec1;
962 typedef tvec2<u8, mediump> mediump_u8vec2;
966 typedef tvec3<u8, mediump> mediump_u8vec3;
970 typedef tvec4<u8, mediump> mediump_u8vec4;
975 typedef tvec1<u8, highp> highp_u8vec1;
979 typedef tvec2<u8, highp> highp_u8vec2;
983 typedef tvec3<u8, highp> highp_u8vec3;
987 typedef tvec4<u8, highp> highp_u8vec4;
989 #if(defined(GLM_PRECISION_LOWP_INT))
990 typedef lowp_u8vec1
u8vec1;
991 typedef lowp_u8vec2
u8vec2;
992 typedef lowp_u8vec3
u8vec3;
993 typedef lowp_u8vec4
u8vec4;
994 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
995 typedef mediump_u8vec1
u8vec1;
996 typedef mediump_u8vec2
u8vec2;
997 typedef mediump_u8vec3
u8vec3;
998 typedef mediump_u8vec4
u8vec4;
1000 typedef highp_u8vec1
u8vec1;
1020 typedef tvec1<u16, lowp> lowp_u16vec1;
1024 typedef tvec2<u16, lowp> lowp_u16vec2;
1028 typedef tvec3<u16, lowp> lowp_u16vec3;
1032 typedef tvec4<u16, lowp> lowp_u16vec4;
1037 typedef tvec1<u16, mediump> mediump_u16vec1;
1041 typedef tvec2<u16, mediump> mediump_u16vec2;
1045 typedef tvec3<u16, mediump> mediump_u16vec3;
1049 typedef tvec4<u16, mediump> mediump_u16vec4;
1054 typedef tvec1<u16, highp> highp_u16vec1;
1058 typedef tvec2<u16, highp> highp_u16vec2;
1062 typedef tvec3<u16, highp> highp_u16vec3;
1066 typedef tvec4<u16, highp> highp_u16vec4;
1069 #if(defined(GLM_PRECISION_LOWP_INT))
1074 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
1075 typedef mediump_u16vec1
u16vec1;
1076 typedef mediump_u16vec2
u16vec2;
1077 typedef mediump_u16vec3
u16vec3;
1078 typedef mediump_u16vec4
u16vec4;
1080 typedef highp_u16vec1
u16vec1;
1100 typedef tvec1<u32, lowp> lowp_u32vec1;
1104 typedef tvec2<u32, lowp> lowp_u32vec2;
1108 typedef tvec3<u32, lowp> lowp_u32vec3;
1112 typedef tvec4<u32, lowp> lowp_u32vec4;
1117 typedef tvec1<u32, mediump> mediump_u32vec1;
1121 typedef tvec2<u32, mediump> mediump_u32vec2;
1125 typedef tvec3<u32, mediump> mediump_u32vec3;
1129 typedef tvec4<u32, mediump> mediump_u32vec4;
1134 typedef tvec1<u32, highp> highp_u32vec1;
1138 typedef tvec2<u32, highp> highp_u32vec2;
1142 typedef tvec3<u32, highp> highp_u32vec3;
1146 typedef tvec4<u32, highp> highp_u32vec4;
1148 #if(defined(GLM_PRECISION_LOWP_INT))
1153 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
1154 typedef mediump_u32vec1
u32vec1;
1155 typedef mediump_u32vec2
u32vec2;
1156 typedef mediump_u32vec3
u32vec3;
1157 typedef mediump_u32vec4
u32vec4;
1159 typedef highp_u32vec1
u32vec1;
1179 typedef tvec1<u32, lowp> lowp_u32vec1;
1183 typedef tvec2<u32, lowp> lowp_u32vec2;
1187 typedef tvec3<u32, lowp> lowp_u32vec3;
1191 typedef tvec4<u32, lowp> lowp_u32vec4;
1196 typedef tvec1<u32, mediump> mediump_u32vec1;
1200 typedef tvec2<u32, mediump> mediump_u32vec2;
1204 typedef tvec3<u32, mediump> mediump_u32vec3;
1208 typedef tvec4<u32, mediump> mediump_u32vec4;
1213 typedef tvec1<u32, highp> highp_u32vec1;
1217 typedef tvec2<u32, highp> highp_u32vec2;
1221 typedef tvec3<u32, highp> highp_u32vec3;
1225 typedef tvec4<u32, highp> highp_u32vec4;
1227 #if(defined(GLM_PRECISION_LOWP_INT))
1232 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
1233 typedef mediump_u32vec1
u32vec1;
1234 typedef mediump_u32vec2
u32vec2;
1235 typedef mediump_u32vec3
u32vec3;
1236 typedef mediump_u32vec4
u32vec4;
1238 typedef highp_u32vec1
u32vec1;
1244 typedef highp_u32vec2
u32vec2;
1248 typedef highp_u32vec3
u32vec3;
1252 typedef highp_u32vec4
u32vec4;
1259 typedef tvec1<u64, lowp> lowp_u64vec1;
1263 typedef tvec2<u64, lowp> lowp_u64vec2;
1267 typedef tvec3<u64, lowp> lowp_u64vec3;
1271 typedef tvec4<u64, lowp> lowp_u64vec4;
1276 typedef tvec1<u64, mediump> mediump_u64vec1;
1280 typedef tvec2<u64, mediump> mediump_u64vec2;
1284 typedef tvec3<u64, mediump> mediump_u64vec3;
1288 typedef tvec4<u64, mediump> mediump_u64vec4;
1293 typedef tvec1<u64, highp> highp_u64vec1;
1297 typedef tvec2<u64, highp> highp_u64vec2;
1301 typedef tvec3<u64, highp> highp_u64vec3;
1305 typedef tvec4<u64, highp> highp_u64vec4;
1307 #if(defined(GLM_PRECISION_LOWP_UINT))
1312 #elif(defined(GLM_PRECISION_MEDIUMP_UINT))
1313 typedef mediump_u64vec1
u64vec1;
1314 typedef mediump_u64vec2
u64vec2;
1315 typedef mediump_u64vec3
u64vec3;
1316 typedef mediump_u64vec4
u64vec4;
1318 typedef highp_u64vec1
u64vec1;
1341 typedef detail::float32 lowp_float32;
1345 typedef detail::float64 lowp_float64;
1349 typedef detail::float32 lowp_float32_t;
1353 typedef detail::float64 lowp_float64_t;
1365 typedef detail::float32 lowp_float32;
1369 typedef detail::float64 lowp_float64;
1373 typedef detail::float32 lowp_float32_t;
1377 typedef detail::float64 lowp_float64_t;
1390 typedef detail::float32 lowp_float32;
1394 typedef detail::float64 lowp_float64;
1398 typedef detail::float32 lowp_float32_t;
1402 typedef detail::float64 lowp_float64_t;
1415 typedef detail::float32 mediump_float32;
1419 typedef detail::float64 mediump_float64;
1423 typedef detail::float32 mediump_float32_t;
1427 typedef detail::float64 mediump_float64_t;
1440 typedef detail::float32 highp_float32;
1444 typedef detail::float64 highp_float64;
1448 typedef detail::float32 highp_float32_t;
1452 typedef detail::float64 highp_float64_t;
1463 #if(defined(GLM_PRECISION_LOWP_FLOAT))
1482 typedef lowp_f32
f32;
1486 typedef lowp_f64
f64;
1488 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
1492 typedef mediump_float32 float32;
1496 typedef mediump_float64 float64;
1508 typedef mediump_float32
f32;
1512 typedef mediump_float64
f64;
1514 #else//(defined(GLM_PRECISION_HIGHP_FLOAT))
1518 typedef highp_float32 float32;
1522 typedef highp_float64 float64;
1544 typedef tvec1<float, lowp> lowp_vec1;
1560 typedef tvec1<float, lowp> lowp_fvec1;
1564 typedef tvec2<float, lowp> lowp_fvec2;
1568 typedef tvec3<float, lowp> lowp_fvec3;
1572 typedef tvec4<float, lowp> lowp_fvec4;
1577 typedef tvec1<float, mediump> mediump_vec1;
1593 typedef tvec1<float, mediump> mediump_fvec1;
1597 typedef tvec2<float, mediump> mediump_fvec2;
1601 typedef tvec3<float, mediump> mediump_fvec3;
1605 typedef tvec4<float, mediump> mediump_fvec4;
1610 typedef tvec1<float, highp> highp_vec1;
1626 typedef tvec1<float, highp> highp_fvec1;
1630 typedef tvec2<float, highp> highp_fvec2;
1634 typedef tvec3<float, highp> highp_fvec3;
1638 typedef tvec4<float, highp> highp_fvec4;
1643 typedef tvec1<f32, lowp> lowp_f32vec1;
1647 typedef tvec2<f32, lowp> lowp_f32vec2;
1651 typedef tvec3<f32, lowp> lowp_f32vec3;
1655 typedef tvec4<f32, lowp> lowp_f32vec4;
1659 typedef tvec1<f32, mediump> mediump_f32vec1;
1663 typedef tvec2<f32, mediump> mediump_f32vec2;
1667 typedef tvec3<f32, mediump> mediump_f32vec3;
1671 typedef tvec4<f32, mediump> mediump_f32vec4;
1675 typedef tvec1<f32, highp> highp_f32vec1;
1679 typedef tvec2<f32, highp> highp_f32vec2;
1683 typedef tvec3<f32, highp> highp_f32vec3;
1687 typedef tvec4<f32, highp> highp_f32vec4;
1692 typedef tvec1<f64, lowp> lowp_f64vec1;
1696 typedef tvec2<f64, lowp> lowp_f64vec2;
1700 typedef tvec3<f64, lowp> lowp_f64vec3;
1704 typedef tvec4<f64, lowp> lowp_f64vec4;
1708 typedef tvec1<f64, mediump> mediump_f64vec1;
1712 typedef tvec2<f64, mediump> mediump_f64vec2;
1716 typedef tvec3<f64, mediump> mediump_f64vec3;
1720 typedef tvec4<f64, mediump> mediump_f64vec4;
1724 typedef tvec1<f64, highp> highp_f64vec1;
1728 typedef tvec2<f64, highp> highp_f64vec2;
1732 typedef tvec3<f64, highp> highp_f64vec3;
1736 typedef tvec4<f64, highp> highp_f64vec4;
1748 typedef tmat2x2<f32, lowp> lowp_fmat2x2;
1752 typedef tmat2x3<f32, lowp> lowp_fmat2x3;
1756 typedef tmat2x4<f32, lowp> lowp_fmat2x4;
1760 typedef tmat3x2<f32, lowp> lowp_fmat3x2;
1764 typedef tmat3x3<f32, lowp> lowp_fmat3x3;
1768 typedef tmat3x4<f32, lowp> lowp_fmat3x4;
1772 typedef tmat4x2<f32, lowp> lowp_fmat4x2;
1776 typedef tmat4x3<f32, lowp> lowp_fmat4x3;
1780 typedef tmat4x4<f32, lowp> lowp_fmat4x4;
1788 typedef lowp_fmat2x2 lowp_fmat2;
1792 typedef lowp_fmat3x3 lowp_fmat3;
1796 typedef lowp_fmat4x4 lowp_fmat4;
1805 typedef tmat2x2<f32, mediump> mediump_fmat2x2;
1809 typedef tmat2x3<f32, mediump> mediump_fmat2x3;
1813 typedef tmat2x4<f32, mediump> mediump_fmat2x4;
1817 typedef tmat3x2<f32, mediump> mediump_fmat3x2;
1821 typedef tmat3x3<f32, mediump> mediump_fmat3x3;
1825 typedef tmat3x4<f32, mediump> mediump_fmat3x4;
1829 typedef tmat4x2<f32, mediump> mediump_fmat4x2;
1833 typedef tmat4x3<f32, mediump> mediump_fmat4x3;
1837 typedef tmat4x4<f32, mediump> mediump_fmat4x4;
1845 typedef mediump_fmat2x2 mediump_fmat2;
1849 typedef mediump_fmat3x3 mediump_fmat3;
1853 typedef mediump_fmat4x4 mediump_fmat4;
1862 typedef tmat2x2<f32, highp> highp_fmat2x2;
1866 typedef tmat2x3<f32, highp> highp_fmat2x3;
1870 typedef tmat2x4<f32, highp> highp_fmat2x4;
1874 typedef tmat3x2<f32, highp> highp_fmat3x2;
1878 typedef tmat3x3<f32, highp> highp_fmat3x3;
1882 typedef tmat3x4<f32, highp> highp_fmat3x4;
1886 typedef tmat4x2<f32, highp> highp_fmat4x2;
1890 typedef tmat4x3<f32, highp> highp_fmat4x3;
1894 typedef tmat4x4<f32, highp> highp_fmat4x4;
1902 typedef highp_fmat2x2 highp_fmat2;
1906 typedef highp_fmat3x3 highp_fmat3;
1910 typedef highp_fmat4x4 highp_fmat4;
1919 typedef tmat2x2<f32, lowp> lowp_f32mat2x2;
1923 typedef tmat2x3<f32, lowp> lowp_f32mat2x3;
1927 typedef tmat2x4<f32, lowp> lowp_f32mat2x4;
1931 typedef tmat3x2<f32, lowp> lowp_f32mat3x2;
1935 typedef tmat3x3<f32, lowp> lowp_f32mat3x3;
1939 typedef tmat3x4<f32, lowp> lowp_f32mat3x4;
1943 typedef tmat4x2<f32, lowp> lowp_f32mat4x2;
1947 typedef tmat4x3<f32, lowp> lowp_f32mat4x3;
1951 typedef tmat4x4<f32, lowp> lowp_f32mat4x4;
1959 typedef lowp_f32mat2x2 lowp_f32mat2;
1963 typedef lowp_f32mat3x3 lowp_f32mat3;
1967 typedef lowp_f32mat4x4 lowp_f32mat4;
1976 typedef tmat2x2<f32, mediump> mediump_f32mat2x2;
1980 typedef tmat2x3<f32, mediump> mediump_f32mat2x3;
1984 typedef tmat2x4<f32, mediump> mediump_f32mat2x4;
1988 typedef tmat3x2<f32, mediump> mediump_f32mat3x2;
1992 typedef tmat3x3<f32, mediump> mediump_f32mat3x3;
1996 typedef tmat3x4<f32, mediump> mediump_f32mat3x4;
2000 typedef tmat4x2<f32, mediump> mediump_f32mat4x2;
2004 typedef tmat4x3<f32, mediump> mediump_f32mat4x3;
2008 typedef tmat4x4<f32, mediump> mediump_f32mat4x4;
2016 typedef mediump_f32mat2x2 mediump_f32mat2;
2020 typedef mediump_f32mat3x3 mediump_f32mat3;
2024 typedef mediump_f32mat4x4 mediump_f32mat4;
2033 typedef tmat2x2<f32, highp> highp_f32mat2x2;
2037 typedef tmat2x3<f32, highp> highp_f32mat2x3;
2041 typedef tmat2x4<f32, highp> highp_f32mat2x4;
2045 typedef tmat3x2<f32, highp> highp_f32mat3x2;
2049 typedef tmat3x3<f32, highp> highp_f32mat3x3;
2053 typedef tmat3x4<f32, highp> highp_f32mat3x4;
2057 typedef tmat4x2<f32, highp> highp_f32mat4x2;
2061 typedef tmat4x3<f32, highp> highp_f32mat4x3;
2065 typedef tmat4x4<f32, highp> highp_f32mat4x4;
2073 typedef highp_f32mat2x2 highp_f32mat2;
2077 typedef highp_f32mat3x3 highp_f32mat3;
2081 typedef highp_f32mat4x4 highp_f32mat4;
2090 typedef tmat2x2<f64, lowp> lowp_f64mat2x2;
2094 typedef tmat2x3<f64, lowp> lowp_f64mat2x3;
2098 typedef tmat2x4<f64, lowp> lowp_f64mat2x4;
2102 typedef tmat3x2<f64, lowp> lowp_f64mat3x2;
2106 typedef tmat3x3<f64, lowp> lowp_f64mat3x3;
2110 typedef tmat3x4<f64, lowp> lowp_f64mat3x4;
2114 typedef tmat4x2<f64, lowp> lowp_f64mat4x2;
2118 typedef tmat4x3<f64, lowp> lowp_f64mat4x3;
2122 typedef tmat4x4<f64, lowp> lowp_f64mat4x4;
2130 typedef lowp_f64mat2x2 lowp_f64mat2;
2134 typedef lowp_f64mat3x3 lowp_f64mat3;
2138 typedef lowp_f64mat4x4 lowp_f64mat4;
2147 typedef tmat2x2<f64, mediump> mediump_f64mat2x2;
2151 typedef tmat2x3<f64, mediump> mediump_f64mat2x3;
2155 typedef tmat2x4<f64, mediump> mediump_f64mat2x4;
2159 typedef tmat3x2<f64, mediump> mediump_f64mat3x2;
2163 typedef tmat3x3<f64, mediump> mediump_f64mat3x3;
2167 typedef tmat3x4<f64, mediump> mediump_f64mat3x4;
2171 typedef tmat4x2<f64, mediump> mediump_f64mat4x2;
2175 typedef tmat4x3<f64, mediump> mediump_f64mat4x3;
2179 typedef tmat4x4<f64, mediump> mediump_f64mat4x4;
2187 typedef mediump_f64mat2x2 mediump_f64mat2;
2191 typedef mediump_f64mat3x3 mediump_f64mat3;
2195 typedef mediump_f64mat4x4 mediump_f64mat4;
2203 typedef tmat2x2<f64, highp> highp_f64mat2x2;
2207 typedef tmat2x3<f64, highp> highp_f64mat2x3;
2211 typedef tmat2x4<f64, highp> highp_f64mat2x4;
2215 typedef tmat3x2<f64, highp> highp_f64mat3x2;
2219 typedef tmat3x3<f64, highp> highp_f64mat3x3;
2223 typedef tmat3x4<f64, highp> highp_f64mat3x4;
2227 typedef tmat4x2<f64, highp> highp_f64mat4x2;
2231 typedef tmat4x3<f64, highp> highp_f64mat4x3;
2235 typedef tmat4x4<f64, highp> highp_f64mat4x4;
2243 typedef highp_f64mat2x2 highp_f64mat2;
2247 typedef highp_f64mat3x3 highp_f64mat3;
2251 typedef highp_f64mat4x4 highp_f64mat4;
2258 typedef tquat<f32, lowp> lowp_f32quat;
2262 typedef tquat<f64, lowp> lowp_f64quat;
2266 typedef tquat<f32, mediump> mediump_f32quat;
2270 typedef tquat<f64, mediump> mediump_f64quat;
2274 typedef tquat<f32, highp> highp_f32quat;
2278 typedef tquat<f64, highp> highp_f64quat;
2281 #if(defined(GLM_PRECISION_LOWP_FLOAT))
2282 typedef lowp_f32vec1
fvec1;
2283 typedef lowp_f32vec2
fvec2;
2284 typedef lowp_f32vec3
fvec3;
2285 typedef lowp_f32vec4
fvec4;
2286 typedef lowp_f32mat2
fmat2;
2287 typedef lowp_f32mat3
fmat3;
2288 typedef lowp_f32mat4
fmat4;
2289 typedef lowp_f32mat2x2
fmat2x2;
2290 typedef lowp_f32mat3x2
fmat3x2;
2291 typedef lowp_f32mat4x2
fmat4x2;
2292 typedef lowp_f32mat2x3
fmat2x3;
2293 typedef lowp_f32mat3x3
fmat3x3;
2294 typedef lowp_f32mat4x3
fmat4x3;
2295 typedef lowp_f32mat2x4
fmat2x4;
2296 typedef lowp_f32mat3x4
fmat3x4;
2297 typedef lowp_f32mat4x4
fmat4x4;
2298 typedef lowp_f32quat fquat;
2317 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
2318 typedef mediump_f32vec1
fvec1;
2319 typedef mediump_f32vec2
fvec2;
2320 typedef mediump_f32vec3
fvec3;
2321 typedef mediump_f32vec4
fvec4;
2322 typedef mediump_f32mat2
fmat2;
2323 typedef mediump_f32mat3
fmat3;
2324 typedef mediump_f32mat4
fmat4;
2325 typedef mediump_f32mat2x2
fmat2x2;
2326 typedef mediump_f32mat3x2
fmat3x2;
2327 typedef mediump_f32mat4x2
fmat4x2;
2328 typedef mediump_f32mat2x3
fmat2x3;
2329 typedef mediump_f32mat3x3
fmat3x3;
2330 typedef mediump_f32mat4x3
fmat4x3;
2331 typedef mediump_f32mat2x4
fmat2x4;
2332 typedef mediump_f32mat3x4
fmat3x4;
2333 typedef mediump_f32mat4x4
fmat4x4;
2334 typedef mediump_f32quat fquat;
2336 typedef mediump_f32vec1
f32vec1;
2337 typedef mediump_f32vec2
f32vec2;
2338 typedef mediump_f32vec3
f32vec3;
2339 typedef mediump_f32vec4
f32vec4;
2340 typedef mediump_f32mat2
f32mat2;
2341 typedef mediump_f32mat3
f32mat3;
2342 typedef mediump_f32mat4
f32mat4;
2352 typedef mediump_f32quat
f32quat;
2353 #else//if(defined(GLM_PRECISION_HIGHP_FLOAT))
2354 typedef highp_f32vec1
fvec1;
2420 typedef highp_fquat fquat;
2493 #if(defined(GLM_PRECISION_LOWP_DOUBLE))
2511 #elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE))
2512 typedef mediump_f64vec1
f64vec1;
2513 typedef mediump_f64vec2
f64vec2;
2514 typedef mediump_f64vec3
f64vec3;
2515 typedef mediump_f64vec4
f64vec4;
2516 typedef mediump_f64mat2
f64mat2;
2517 typedef mediump_f64mat3
f64mat3;
2518 typedef mediump_f64mat4
f64mat4;
2528 typedef mediump_f64quat
f64quat;
2530 typedef highp_f64vec1
f64vec1;
tvec2< float, highp > highp_vec2
2 components vector of high single-precision floating-point numbers.
detail::int8 int8_t
8 bit signed integer type.
detail::uint32 lowp_uint32
Low precision 32 bit unsigned integer type.
detail::int64 lowp_int64_t
Low precision 64 bit signed integer type.
detail::int16 lowp_int16
Low precision 16 bit signed integer type.
highp_u16vec1 u16vec1
Default precision 16 bit unsigned integer scalar type.
detail::uint32 u32
32 bit unsigned integer type.
tvec3< float, mediump > mediump_vec3
3 components vector of medium single-precision floating-point numbers.
detail::uint16 lowp_uint16
Low precision 16 bit unsigned integer type.
highp_f32vec3 fvec3
Default single-precision floating-point vector of 3 components.
highp_f32mat3x3 fmat3x3
Default single-precision floating-point 3x3 matrix.
highp_i64vec4 i64vec4
Default precision 64 bit signed integer vector of 4 components type.
f32mat3x3 f32mat3
Default single-precision floating-point 3x3 matrix.
detail::uint8 mediump_u8
Medium precision 8 bit unsigned integer type.
detail::int64 highp_i64
High precision 64 bit signed integer type.
highp_u32vec2 u32vec2
Default precision 32 bit unsigned integer vector of 2 components 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_i64vec2 i64vec2
Default precision 64 bit signed integer vector of 2 components type.
detail::int32 int32_t
32 bit signed integer type.
highp_i16vec4 i16vec4
Default precision 16 bit signed integer vector of 4 components type.
detail::int32 mediump_i32
Medium precision 32 bit signed integer type.
detail::int8 lowp_int8
Low precision 8 bit signed integer type.
tvec2< float, mediump > mediump_vec2
2 components vector of medium single-precision floating-point numbers.
detail::uint64 u64
64 bit unsigned integer type.
detail::uint8 lowp_u8
Low precision 8 bit unsigned integer type.
detail::int8 i8
8 bit signed integer type.
detail::uint8 mediump_uint8
Medium precision 8 bit unsigned integer type.
f64mat4x4 f64mat4
Default double-precision floating-point 4x4 matrix.
detail::uint32 lowp_uint32_t
Low precision 32 bit unsigned integer type.
detail::int64 mediump_i64
Medium precision 64 bit signed integer type.
detail::int32 int32
32 bit signed integer type.
highp_i64vec3 i64vec3
Default precision 64 bit signed integer vector of 3 components type.
detail::int32 highp_i32
High precision 32 bit signed integer type.
detail::uint32 lowp_u32
Low precision 32 bit unsigned integer type.
detail::int16 highp_i16
High precision 16 bit signed integer type.
detail::int8 highp_i8
High precision 8 bit signed integer type.
highp_u32vec3 u32vec3
Default precision 32 bit unsigned integer vector of 3 components type.
fmat4x4 fmat4
Default single-precision floating-point 4x4 matrix.
detail::uint32 mediump_u32
Medium precision 32 bit unsigned integer type.
highp_f32vec2 fvec2
Default single-precision floating-point vector of 2 components.
detail::int8 mediump_int8
Medium precision 8 bit signed integer type.
detail::uint32 highp_u32
Medium precision 32 bit unsigned integer type.
tvec3< float, highp > highp_vec3
3 components vector of high single-precision floating-point numbers.
detail::uint64 mediump_uint64_t
Medium precision 64 bit unsigned integer type.
highp_i32vec1 i32vec1
Default precision 32 bit signed integer scalar type.
detail::uint8 highp_u8
Medium precision 8 bit unsigned integer type.
highp_u16vec3 u16vec3
Default precision 16 bit unsigned integer vector of 3 components type.
tvec4< float, highp > highp_vec4
4 components vector of high single-precision floating-point numbers.
highp_i16vec2 i16vec2
Default precision 16 bit signed integer vector of 2 components type.
f32mat2x2 f32mat2
Default single-precision floating-point 2x2 matrix.
highp_i32vec4 i32vec4
Default precision 32 bit signed integer vector of 4 components type.
tvec4< float, mediump > mediump_vec4
4 components vector of medium single-precision floating-point numbers.
detail::uint8 uint8
8 bit unsigned integer type.
detail::int64 lowp_int64
Low precision 64 bit signed integer type.
highp_f32mat2x4 f32mat2x4
Default single-precision floating-point 2x4 matrix.
highp_f32mat3x2 f32mat3x2
Default single-precision floating-point 3x2 matrix.
highp_f64vec4 f64vec4
Default double-precision floating-point vector of 4 components.
f64mat2x2 f64mat2
Default double-precision floating-point 2x2 matrix.
detail::int32 lowp_i32
Low precision 32 bit signed integer type.
detail::uint64 mediump_uint64
Medium precision 64 bit unsigned integer type.
highp_f32vec2 f32vec2
Default single-precision floating-point vector of 2 components.
detail::uint16 u16
16 bit unsigned integer type.
highp_float64_t f64
Default 64 bit double-precision floating-point scalar.
f64mat3x3 f64mat3
Default double-precision floating-point 3x3 matrix.
highp_f64vec1 f64vec1
Default double-precision floating-point vector of 1 components.
highp_f32vec4 fvec4
Default single-precision floating-point vector of 4 components.
detail::int8 mediump_i8
Medium precision 8 bit signed integer type.
highp_f32mat4x4 f32mat4x4
Default single-precision floating-point 4x4 matrix.
highp_f64mat2x2 f64mat2x2
Default double-precision floating-point 2x2 matrix.
highp_float64_t float64_t
Default 64 bit double-precision floating-point scalar.
highp_u8vec1 u8vec1
Default precision 8 bit unsigned integer scalar type.
highp_f32mat4x2 fmat4x2
Default single-precision floating-point 4x2 matrix.
highp_u8vec2 u8vec2
Default precision 8 bit unsigned integer vector of 2 components type.
detail::int8 int8
8 bit signed integer type.
highp_u64vec1 u64vec1
Default precision 64 bit unsigned integer scalar type.
detail::uint8 highp_uint8
Medium precision 8 bit unsigned integer type.
detail::uint16 mediump_u16
Medium precision 16 bit unsigned integer type.
highp_f64mat3x3 f64mat3x3
Default double-precision floating-point 3x3 matrix.
detail::uint32 mediump_uint32
Medium precision 32 bit unsigned integer type.
detail::int16 int16
16 bit signed integer type.
highp_f32mat4x2 f32mat4x2
Default single-precision floating-point 4x2 matrix.
detail::int16 highp_int16
High precision 16 bit signed integer type.
float float32
Default 32 bit single-precision floating-point scalar.
detail::int32 highp_int32
High precision 32 bit signed integer type.
detail::int8 mediump_int8_t
Medium precision 8 bit signed integer type.
highp_f32quat f32quat
Default single-precision floating-point quaternion.
detail::uint16 uint16
16 bit unsigned integer type.
highp_i8vec4 i8vec4
Default precision 8 bit signed integer vector of 4 components type.
detail::int8 highp_int8
High precision 8 bit signed integer type.
highp_f64mat2x4 f64mat2x4
Default double-precision floating-point 2x4 matrix.
highp_u16vec4 u16vec4
Default precision 16 bit unsigned integer vector of 4 components type.
highp_u64vec2 u64vec2
Default precision 64 bit unsigned integer vector of 2 components type.
detail::uint64 highp_uint64_t
Medium precision 64 bit unsigned integer type.
highp_float32_t f32
Default 32 bit single-precision floating-point scalar.
detail::int8 lowp_i8
Low precision 8 bit signed integer type.
highp_f32vec1 f32vec1
Default single-precision floating-point vector of 1 components.
detail::uint32 uint32_t
32 bit unsigned integer type.
detail::uint8 u8
8 bit unsigned integer type.
detail::uint16 lowp_u16
Low precision 16 bit unsigned integer type.
highp_f32mat2x4 fmat2x4
Default single-precision floating-point 2x4 matrix.
highp_f32vec1 fvec1
Default single-precision floating-point vector of 1 components.
detail::int16 lowp_i16
Low precision 16 bit signed integer type.
detail::uint8 lowp_uint8_t
Low precision 8 bit unsigned integer type.
highp_i32vec2 i32vec2
Default precision 32 bit signed integer vector of 2 components type.
detail::uint16 mediump_uint16
Medium precision 16 bit unsigned integer type.
highp_f64quat f64quat
Default double-precision floating-point quaternion.
detail::int8 highp_int8_t
High precision 8 bit signed integer type.
detail::uint8 highp_uint8_t
Medium precision 8 bit unsigned integer type.
highp_i8vec1 i8vec1
Default precision 8 bit signed integer scalar type.
highp_i16vec1 i16vec1
Default precision 16 bit signed integer scalar type.
OpenGL Mathematics (glm.g-truc.net)
detail::int64 mediump_int64_t
Medium precision 64 bit signed integer type.
highp_f32mat2x2 fmat2x2
Default single-precision floating-point 2x2 matrix.
detail::int8 lowp_int8_t
Low precision 8 bit signed integer type.
detail::uint16 highp_uint16
Medium precision 16 bit unsigned integer type.
double float64
Default 64 bit double-precision floating-point scalar.
OpenGL Mathematics (glm.g-truc.net)
detail::uint64 lowp_uint64
Low precision 64 bit unsigned integer type.
highp_f32mat2x3 fmat2x3
Default single-precision floating-point 2x3 matrix.
highp_float32_t float32_t
Default 32 bit single-precision floating-point scalar.
highp_i8vec3 i8vec3
Default precision 8 bit signed integer vector of 3 components type.
highp_f32mat3x2 fmat3x2
Default single-precision floating-point 3x2 matrix.
detail::int16 mediump_i16
Medium precision 16 bit signed integer type.
detail::uint16 mediump_uint16_t
Medium precision 16 bit unsigned integer type.
highp_u32vec4 u32vec4
Default precision 32 bit unsigned integer vector of 4 components type.
highp_f64mat3x4 f64mat3x4
Default double-precision floating-point 3x4 matrix.
detail::uint16 lowp_uint16_t
Low precision 16 bit unsigned integer type.
detail::int16 mediump_int16
Medium precision 16 bit signed integer type.
highp_f32mat3x4 fmat3x4
Default single-precision floating-point 3x4 matrix.
highp_f32mat4x3 fmat4x3
Default single-precision floating-point 4x3 matrix.
highp_u8vec3 u8vec3
Default precision 8 bit unsigned integer vector of 3 components type.
highp_f64vec3 f64vec3
Default double-precision floating-point vector of 3 components.
tvec2< float, lowp > lowp_vec2
2 components vector of low single-precision floating-point numbers.
highp_u64vec4 u64vec4
Default precision 64 bit unsigned integer vector of 4 components type.
detail::int16 mediump_int16_t
Medium precision 16 bit signed integer type.
detail::uint32 uint32
32 bit unsigned integer type.
detail::int16 lowp_int16_t
Low precision 16 bit signed integer type.
highp_f64mat4x3 f64mat4x3
Default double-precision floating-point 4x3 matrix.
detail::uint32 mediump_uint32_t
Medium precision 32 bit unsigned integer type.
detail::int32 mediump_int32_t
Medium precision 32 bit signed integer type.
detail::uint8 uint8_t
8 bit unsigned integer type.
highp_f64mat3x2 f64mat3x2
Default double-precision floating-point 3x2 matrix.
highp_f32mat2x2 f32mat2x2
Default single-precision floating-point 2x2 matrix.
highp_f32mat3x3 f32mat3x3
Default single-precision floating-point 3x3 matrix.
detail::uint16 highp_uint16_t
Medium precision 16 bit unsigned integer type.
highp_i8vec2 i8vec2
Default precision 8 bit signed integer vector of 2 components type.
detail::int16 highp_int16_t
High precision 16 bit signed integer type.
detail::int32 lowp_int32
Low precision 32 bit signed integer type.
detail::uint64 highp_u64
Medium precision 64 bit unsigned integer type.
highp_f64mat4x2 f64mat4x2
Default double-precision floating-point 4x2 matrix.
detail::int32 mediump_int32
Medium precision 32 bit signed integer type.
detail::int64 int64_t
64 bit signed integer type.
tvec3< float, lowp > lowp_vec3
3 components vector of low single-precision floating-point numbers.
f32mat4x4 f32mat4
Default single-precision floating-point 4x4 matrix.
detail::uint64 lowp_u64
Low precision 64 bit unsigned integer type.
detail::uint64 uint64
64 bit unsigned integer type.
detail::uint64 mediump_u64
Medium precision 64 bit unsigned integer type.
detail::int64 int64
64 bit signed integer type.
detail::uint64 lowp_uint64_t
Low precision 64 bit unsigned integer type.
detail::uint32 highp_uint32_t
Medium precision 32 bit unsigned integer type.
highp_i16vec3 i16vec3
Default precision 16 bit signed integer vector of 3 components type.
highp_f32mat4x4 fmat4x4
Default single-precision floating-point 4x4 matrix.
detail::int32 highp_int32_t
32 bit signed integer type.
detail::uint16 uint16_t
16 bit unsigned integer type.
highp_f32vec3 f32vec3
Default single-precision floating-point vector of 3 components.
highp_f64mat4x4 f64mat4x4
Default double-precision floating-point 4x4 matrix.
highp_f64mat2x3 f64mat2x3
Default double-precision floating-point 2x3 matrix.
detail::uint32 highp_uint32
Medium precision 32 bit unsigned integer type.
detail::uint16 highp_u16
Medium precision 16 bit unsigned integer type.
highp_f32mat2x3 f32mat2x3
Default single-precision floating-point 2x3 matrix.
fmat2x2 fmat2
Default single-precision floating-point 2x2 matrix.
detail::uint8 mediump_uint8_t
Medium precision 8 bit unsigned integer type.
detail::int32 i32
32 bit signed integer type.
highp_f32vec4 f32vec4
Default single-precision floating-point vector of 4 components.
highp_i32vec3 i32vec3
Default precision 32 bit signed integer vector of 3 components type.
highp_u16vec2 u16vec2
Default precision 16 bit unsigned integer vector of 2 components type.
detail::uint8 lowp_uint8
Low precision 8 bit unsigned integer type.
highp_i64vec1 i64vec1
Default precision 64 bit signed integer scalar type.
detail::int16 i16
16 bit signed integer type.
highp_f32mat3x4 f32mat3x4
Default single-precision floating-point 3x4 matrix.
detail::uint64 uint64_t
64 bit unsigned integer type.
OpenGL Mathematics (glm.g-truc.net)
detail::int64 highp_int64
High precision 64 bit signed integer type.
highp_u32vec1 u32vec1
Default precision 32 bit unsigned integer scalar type.
detail::int16 int16_t
16 bit signed integer type.
highp_f32mat4x3 f32mat4x3
Default single-precision floating-point 4x3 matrix.
fmat3x3 fmat3
Default single-precision floating-point 3x3 matrix.
detail::int64 mediump_int64
Medium precision 64 bit signed integer type.
detail::int32 lowp_int32_t
Low precision 32 bit signed integer type.
tvec4< float, lowp > lowp_vec4
4 components vector of low single-precision floating-point numbers.
highp_f64vec2 f64vec2
Default double-precision floating-point vector of 2 components.
detail::uint64 highp_uint64
Medium precision 64 bit unsigned integer type.
detail::int64 i64
64 bit signed integer type.
highp_u64vec3 u64vec3
Default precision 64 bit unsigned integer vector of 3 components type.
OpenGL Mathematics (glm.g-truc.net)
detail::int64 lowp_i64
Low precision 64 bit signed integer type.