type_aligned.hpp 66 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315
  1. /// @ref gtc_type_aligned
  2. /// @file glm/gtc/type_aligned.hpp
  3. ///
  4. /// @see core (dependence)
  5. ///
  6. /// @defgroup gtc_type_aligned GLM_GTC_type_aligned
  7. /// @ingroup gtc
  8. ///
  9. /// Include <glm/gtc/type_aligned.hpp> to use the features of this extension.
  10. ///
  11. /// Aligned types allowing SIMD optimizations of vectors and matrices types
  12. #pragma once
  13. #if (GLM_CONFIG_ALIGNED_GENTYPES == GLM_DISABLE)
  14. # error "GLM: Aligned gentypes require to enable C++ language extensions. Define GLM_FORCE_ALIGNED_GENTYPES before including GLM headers to use aligned types."
  15. #endif
  16. #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
  17. # pragma message("GLM: GLM_GTC_type_aligned extension included")
  18. #endif
  19. #include "../mat4x4.hpp"
  20. #include "../mat4x3.hpp"
  21. #include "../mat4x2.hpp"
  22. #include "../mat3x4.hpp"
  23. #include "../mat3x3.hpp"
  24. #include "../mat3x2.hpp"
  25. #include "../mat2x4.hpp"
  26. #include "../mat2x3.hpp"
  27. #include "../mat2x2.hpp"
  28. #include "../gtc/vec1.hpp"
  29. #include "../vec2.hpp"
  30. #include "../vec3.hpp"
  31. #include "../vec4.hpp"
  32. namespace glm
  33. {
  34. /// @addtogroup gtc_type_aligned
  35. /// @{
  36. // -- *vec1 --
  37. /// 1 component vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  38. typedef vec<1, float, aligned_highp> aligned_highp_vec1;
  39. /// 1 component vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  40. typedef vec<1, float, aligned_mediump> aligned_mediump_vec1;
  41. /// 1 component vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  42. typedef vec<1, float, aligned_lowp> aligned_lowp_vec1;
  43. /// 1 component vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  44. typedef vec<1, double, aligned_highp> aligned_highp_dvec1;
  45. /// 1 component vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  46. typedef vec<1, double, aligned_mediump> aligned_mediump_dvec1;
  47. /// 1 component vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  48. typedef vec<1, double, aligned_lowp> aligned_lowp_dvec1;
  49. /// 1 component vector aligned in memory of signed integer numbers.
  50. typedef vec<1, int, aligned_highp> aligned_highp_ivec1;
  51. /// 1 component vector aligned in memory of signed integer numbers.
  52. typedef vec<1, int, aligned_mediump> aligned_mediump_ivec1;
  53. /// 1 component vector aligned in memory of signed integer numbers.
  54. typedef vec<1, int, aligned_lowp> aligned_lowp_ivec1;
  55. /// 1 component vector aligned in memory of unsigned integer numbers.
  56. typedef vec<1, uint, aligned_highp> aligned_highp_uvec1;
  57. /// 1 component vector aligned in memory of unsigned integer numbers.
  58. typedef vec<1, uint, aligned_mediump> aligned_mediump_uvec1;
  59. /// 1 component vector aligned in memory of unsigned integer numbers.
  60. typedef vec<1, uint, aligned_lowp> aligned_lowp_uvec1;
  61. /// 1 component vector aligned in memory of bool values.
  62. typedef vec<1, bool, aligned_highp> aligned_highp_bvec1;
  63. /// 1 component vector aligned in memory of bool values.
  64. typedef vec<1, bool, aligned_mediump> aligned_mediump_bvec1;
  65. /// 1 component vector aligned in memory of bool values.
  66. typedef vec<1, bool, aligned_lowp> aligned_lowp_bvec1;
  67. /// 1 component vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  68. typedef vec<1, float, packed_highp> packed_highp_vec1;
  69. /// 1 component vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  70. typedef vec<1, float, packed_mediump> packed_mediump_vec1;
  71. /// 1 component vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  72. typedef vec<1, float, packed_lowp> packed_lowp_vec1;
  73. /// 1 component vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  74. typedef vec<1, double, packed_highp> packed_highp_dvec1;
  75. /// 1 component vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  76. typedef vec<1, double, packed_mediump> packed_mediump_dvec1;
  77. /// 1 component vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  78. typedef vec<1, double, packed_lowp> packed_lowp_dvec1;
  79. /// 1 component vector tightly packed in memory of signed integer numbers.
  80. typedef vec<1, int, packed_highp> packed_highp_ivec1;
  81. /// 1 component vector tightly packed in memory of signed integer numbers.
  82. typedef vec<1, int, packed_mediump> packed_mediump_ivec1;
  83. /// 1 component vector tightly packed in memory of signed integer numbers.
  84. typedef vec<1, int, packed_lowp> packed_lowp_ivec1;
  85. /// 1 component vector tightly packed in memory of unsigned integer numbers.
  86. typedef vec<1, uint, packed_highp> packed_highp_uvec1;
  87. /// 1 component vector tightly packed in memory of unsigned integer numbers.
  88. typedef vec<1, uint, packed_mediump> packed_mediump_uvec1;
  89. /// 1 component vector tightly packed in memory of unsigned integer numbers.
  90. typedef vec<1, uint, packed_lowp> packed_lowp_uvec1;
  91. /// 1 component vector tightly packed in memory of bool values.
  92. typedef vec<1, bool, packed_highp> packed_highp_bvec1;
  93. /// 1 component vector tightly packed in memory of bool values.
  94. typedef vec<1, bool, packed_mediump> packed_mediump_bvec1;
  95. /// 1 component vector tightly packed in memory of bool values.
  96. typedef vec<1, bool, packed_lowp> packed_lowp_bvec1;
  97. // -- *vec2 --
  98. /// 2 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  99. typedef vec<2, float, aligned_highp> aligned_highp_vec2;
  100. /// 2 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  101. typedef vec<2, float, aligned_mediump> aligned_mediump_vec2;
  102. /// 2 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  103. typedef vec<2, float, aligned_lowp> aligned_lowp_vec2;
  104. /// 2 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  105. typedef vec<2, double, aligned_highp> aligned_highp_dvec2;
  106. /// 2 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  107. typedef vec<2, double, aligned_mediump> aligned_mediump_dvec2;
  108. /// 2 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  109. typedef vec<2, double, aligned_lowp> aligned_lowp_dvec2;
  110. /// 2 components vector aligned in memory of signed integer numbers.
  111. typedef vec<2, int, aligned_highp> aligned_highp_ivec2;
  112. /// 2 components vector aligned in memory of signed integer numbers.
  113. typedef vec<2, int, aligned_mediump> aligned_mediump_ivec2;
  114. /// 2 components vector aligned in memory of signed integer numbers.
  115. typedef vec<2, int, aligned_lowp> aligned_lowp_ivec2;
  116. /// 2 components vector aligned in memory of unsigned integer numbers.
  117. typedef vec<2, uint, aligned_highp> aligned_highp_uvec2;
  118. /// 2 components vector aligned in memory of unsigned integer numbers.
  119. typedef vec<2, uint, aligned_mediump> aligned_mediump_uvec2;
  120. /// 2 components vector aligned in memory of unsigned integer numbers.
  121. typedef vec<2, uint, aligned_lowp> aligned_lowp_uvec2;
  122. /// 2 components vector aligned in memory of bool values.
  123. typedef vec<2, bool, aligned_highp> aligned_highp_bvec2;
  124. /// 2 components vector aligned in memory of bool values.
  125. typedef vec<2, bool, aligned_mediump> aligned_mediump_bvec2;
  126. /// 2 components vector aligned in memory of bool values.
  127. typedef vec<2, bool, aligned_lowp> aligned_lowp_bvec2;
  128. /// 2 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  129. typedef vec<2, float, packed_highp> packed_highp_vec2;
  130. /// 2 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  131. typedef vec<2, float, packed_mediump> packed_mediump_vec2;
  132. /// 2 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  133. typedef vec<2, float, packed_lowp> packed_lowp_vec2;
  134. /// 2 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  135. typedef vec<2, double, packed_highp> packed_highp_dvec2;
  136. /// 2 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  137. typedef vec<2, double, packed_mediump> packed_mediump_dvec2;
  138. /// 2 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  139. typedef vec<2, double, packed_lowp> packed_lowp_dvec2;
  140. /// 2 components vector tightly packed in memory of signed integer numbers.
  141. typedef vec<2, int, packed_highp> packed_highp_ivec2;
  142. /// 2 components vector tightly packed in memory of signed integer numbers.
  143. typedef vec<2, int, packed_mediump> packed_mediump_ivec2;
  144. /// 2 components vector tightly packed in memory of signed integer numbers.
  145. typedef vec<2, int, packed_lowp> packed_lowp_ivec2;
  146. /// 2 components vector tightly packed in memory of unsigned integer numbers.
  147. typedef vec<2, uint, packed_highp> packed_highp_uvec2;
  148. /// 2 components vector tightly packed in memory of unsigned integer numbers.
  149. typedef vec<2, uint, packed_mediump> packed_mediump_uvec2;
  150. /// 2 components vector tightly packed in memory of unsigned integer numbers.
  151. typedef vec<2, uint, packed_lowp> packed_lowp_uvec2;
  152. /// 2 components vector tightly packed in memory of bool values.
  153. typedef vec<2, bool, packed_highp> packed_highp_bvec2;
  154. /// 2 components vector tightly packed in memory of bool values.
  155. typedef vec<2, bool, packed_mediump> packed_mediump_bvec2;
  156. /// 2 components vector tightly packed in memory of bool values.
  157. typedef vec<2, bool, packed_lowp> packed_lowp_bvec2;
  158. // -- *vec3 --
  159. /// 3 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  160. typedef vec<3, float, aligned_highp> aligned_highp_vec3;
  161. /// 3 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  162. typedef vec<3, float, aligned_mediump> aligned_mediump_vec3;
  163. /// 3 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  164. typedef vec<3, float, aligned_lowp> aligned_lowp_vec3;
  165. /// 3 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  166. typedef vec<3, double, aligned_highp> aligned_highp_dvec3;
  167. /// 3 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  168. typedef vec<3, double, aligned_mediump> aligned_mediump_dvec3;
  169. /// 3 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  170. typedef vec<3, double, aligned_lowp> aligned_lowp_dvec3;
  171. /// 3 components vector aligned in memory of signed integer numbers.
  172. typedef vec<3, int, aligned_highp> aligned_highp_ivec3;
  173. /// 3 components vector aligned in memory of signed integer numbers.
  174. typedef vec<3, int, aligned_mediump> aligned_mediump_ivec3;
  175. /// 3 components vector aligned in memory of signed integer numbers.
  176. typedef vec<3, int, aligned_lowp> aligned_lowp_ivec3;
  177. /// 3 components vector aligned in memory of unsigned integer numbers.
  178. typedef vec<3, uint, aligned_highp> aligned_highp_uvec3;
  179. /// 3 components vector aligned in memory of unsigned integer numbers.
  180. typedef vec<3, uint, aligned_mediump> aligned_mediump_uvec3;
  181. /// 3 components vector aligned in memory of unsigned integer numbers.
  182. typedef vec<3, uint, aligned_lowp> aligned_lowp_uvec3;
  183. /// 3 components vector aligned in memory of bool values.
  184. typedef vec<3, bool, aligned_highp> aligned_highp_bvec3;
  185. /// 3 components vector aligned in memory of bool values.
  186. typedef vec<3, bool, aligned_mediump> aligned_mediump_bvec3;
  187. /// 3 components vector aligned in memory of bool values.
  188. typedef vec<3, bool, aligned_lowp> aligned_lowp_bvec3;
  189. /// 3 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  190. typedef vec<3, float, packed_highp> packed_highp_vec3;
  191. /// 3 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  192. typedef vec<3, float, packed_mediump> packed_mediump_vec3;
  193. /// 3 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  194. typedef vec<3, float, packed_lowp> packed_lowp_vec3;
  195. /// 3 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  196. typedef vec<3, double, packed_highp> packed_highp_dvec3;
  197. /// 3 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  198. typedef vec<3, double, packed_mediump> packed_mediump_dvec3;
  199. /// 3 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  200. typedef vec<3, double, packed_lowp> packed_lowp_dvec3;
  201. /// 3 components vector tightly packed in memory of signed integer numbers.
  202. typedef vec<3, int, packed_highp> packed_highp_ivec3;
  203. /// 3 components vector tightly packed in memory of signed integer numbers.
  204. typedef vec<3, int, packed_mediump> packed_mediump_ivec3;
  205. /// 3 components vector tightly packed in memory of signed integer numbers.
  206. typedef vec<3, int, packed_lowp> packed_lowp_ivec3;
  207. /// 3 components vector tightly packed in memory of unsigned integer numbers.
  208. typedef vec<3, uint, packed_highp> packed_highp_uvec3;
  209. /// 3 components vector tightly packed in memory of unsigned integer numbers.
  210. typedef vec<3, uint, packed_mediump> packed_mediump_uvec3;
  211. /// 3 components vector tightly packed in memory of unsigned integer numbers.
  212. typedef vec<3, uint, packed_lowp> packed_lowp_uvec3;
  213. /// 3 components vector tightly packed in memory of bool values.
  214. typedef vec<3, bool, packed_highp> packed_highp_bvec3;
  215. /// 3 components vector tightly packed in memory of bool values.
  216. typedef vec<3, bool, packed_mediump> packed_mediump_bvec3;
  217. /// 3 components vector tightly packed in memory of bool values.
  218. typedef vec<3, bool, packed_lowp> packed_lowp_bvec3;
  219. // -- *vec4 --
  220. /// 4 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  221. typedef vec<4, float, aligned_highp> aligned_highp_vec4;
  222. /// 4 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  223. typedef vec<4, float, aligned_mediump> aligned_mediump_vec4;
  224. /// 4 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  225. typedef vec<4, float, aligned_lowp> aligned_lowp_vec4;
  226. /// 4 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  227. typedef vec<4, double, aligned_highp> aligned_highp_dvec4;
  228. /// 4 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  229. typedef vec<4, double, aligned_mediump> aligned_mediump_dvec4;
  230. /// 4 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  231. typedef vec<4, double, aligned_lowp> aligned_lowp_dvec4;
  232. /// 4 components vector aligned in memory of signed integer numbers.
  233. typedef vec<4, int, aligned_highp> aligned_highp_ivec4;
  234. /// 4 components vector aligned in memory of signed integer numbers.
  235. typedef vec<4, int, aligned_mediump> aligned_mediump_ivec4;
  236. /// 4 components vector aligned in memory of signed integer numbers.
  237. typedef vec<4, int, aligned_lowp> aligned_lowp_ivec4;
  238. /// 4 components vector aligned in memory of unsigned integer numbers.
  239. typedef vec<4, uint, aligned_highp> aligned_highp_uvec4;
  240. /// 4 components vector aligned in memory of unsigned integer numbers.
  241. typedef vec<4, uint, aligned_mediump> aligned_mediump_uvec4;
  242. /// 4 components vector aligned in memory of unsigned integer numbers.
  243. typedef vec<4, uint, aligned_lowp> aligned_lowp_uvec4;
  244. /// 4 components vector aligned in memory of bool values.
  245. typedef vec<4, bool, aligned_highp> aligned_highp_bvec4;
  246. /// 4 components vector aligned in memory of bool values.
  247. typedef vec<4, bool, aligned_mediump> aligned_mediump_bvec4;
  248. /// 4 components vector aligned in memory of bool values.
  249. typedef vec<4, bool, aligned_lowp> aligned_lowp_bvec4;
  250. /// 4 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  251. typedef vec<4, float, packed_highp> packed_highp_vec4;
  252. /// 4 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  253. typedef vec<4, float, packed_mediump> packed_mediump_vec4;
  254. /// 4 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  255. typedef vec<4, float, packed_lowp> packed_lowp_vec4;
  256. /// 4 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  257. typedef vec<4, double, packed_highp> packed_highp_dvec4;
  258. /// 4 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  259. typedef vec<4, double, packed_mediump> packed_mediump_dvec4;
  260. /// 4 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  261. typedef vec<4, double, packed_lowp> packed_lowp_dvec4;
  262. /// 4 components vector tightly packed in memory of signed integer numbers.
  263. typedef vec<4, int, packed_highp> packed_highp_ivec4;
  264. /// 4 components vector tightly packed in memory of signed integer numbers.
  265. typedef vec<4, int, packed_mediump> packed_mediump_ivec4;
  266. /// 4 components vector tightly packed in memory of signed integer numbers.
  267. typedef vec<4, int, packed_lowp> packed_lowp_ivec4;
  268. /// 4 components vector tightly packed in memory of unsigned integer numbers.
  269. typedef vec<4, uint, packed_highp> packed_highp_uvec4;
  270. /// 4 components vector tightly packed in memory of unsigned integer numbers.
  271. typedef vec<4, uint, packed_mediump> packed_mediump_uvec4;
  272. /// 4 components vector tightly packed in memory of unsigned integer numbers.
  273. typedef vec<4, uint, packed_lowp> packed_lowp_uvec4;
  274. /// 4 components vector tightly packed in memory of bool values.
  275. typedef vec<4, bool, packed_highp> packed_highp_bvec4;
  276. /// 4 components vector tightly packed in memory of bool values.
  277. typedef vec<4, bool, packed_mediump> packed_mediump_bvec4;
  278. /// 4 components vector tightly packed in memory of bool values.
  279. typedef vec<4, bool, packed_lowp> packed_lowp_bvec4;
  280. // -- *mat2 --
  281. /// 2 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  282. typedef mat<2, 2, float, aligned_highp> aligned_highp_mat2;
  283. /// 2 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  284. typedef mat<2, 2, float, aligned_mediump> aligned_mediump_mat2;
  285. /// 2 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  286. typedef mat<2, 2, float, aligned_lowp> aligned_lowp_mat2;
  287. /// 2 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  288. typedef mat<2, 2, double, aligned_highp> aligned_highp_dmat2;
  289. /// 2 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  290. typedef mat<2, 2, double, aligned_mediump> aligned_mediump_dmat2;
  291. /// 2 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  292. typedef mat<2, 2, double, aligned_lowp> aligned_lowp_dmat2;
  293. /// 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  294. typedef mat<2, 2, float, packed_highp> packed_highp_mat2;
  295. /// 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  296. typedef mat<2, 2, float, packed_mediump> packed_mediump_mat2;
  297. /// 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  298. typedef mat<2, 2, float, packed_lowp> packed_lowp_mat2;
  299. /// 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  300. typedef mat<2, 2, double, packed_highp> packed_highp_dmat2;
  301. /// 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  302. typedef mat<2, 2, double, packed_mediump> packed_mediump_dmat2;
  303. /// 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  304. typedef mat<2, 2, double, packed_lowp> packed_lowp_dmat2;
  305. // -- *mat3 --
  306. /// 3 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  307. typedef mat<3, 3, float, aligned_highp> aligned_highp_mat3;
  308. /// 3 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  309. typedef mat<3, 3, float, aligned_mediump> aligned_mediump_mat3;
  310. /// 3 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  311. typedef mat<3, 3, float, aligned_lowp> aligned_lowp_mat3;
  312. /// 3 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  313. typedef mat<3, 3, double, aligned_highp> aligned_highp_dmat3;
  314. /// 3 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  315. typedef mat<3, 3, double, aligned_mediump> aligned_mediump_dmat3;
  316. /// 3 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  317. typedef mat<3, 3, double, aligned_lowp> aligned_lowp_dmat3;
  318. /// 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  319. typedef mat<3, 3, float, packed_highp> packed_highp_mat3;
  320. /// 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  321. typedef mat<3, 3, float, packed_mediump> packed_mediump_mat3;
  322. /// 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  323. typedef mat<3, 3, float, packed_lowp> packed_lowp_mat3;
  324. /// 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  325. typedef mat<3, 3, double, packed_highp> packed_highp_dmat3;
  326. /// 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  327. typedef mat<3, 3, double, packed_mediump> packed_mediump_dmat3;
  328. /// 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  329. typedef mat<3, 3, double, packed_lowp> packed_lowp_dmat3;
  330. // -- *mat4 --
  331. /// 4 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  332. typedef mat<4, 4, float, aligned_highp> aligned_highp_mat4;
  333. /// 4 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  334. typedef mat<4, 4, float, aligned_mediump> aligned_mediump_mat4;
  335. /// 4 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  336. typedef mat<4, 4, float, aligned_lowp> aligned_lowp_mat4;
  337. /// 4 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  338. typedef mat<4, 4, double, aligned_highp> aligned_highp_dmat4;
  339. /// 4 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  340. typedef mat<4, 4, double, aligned_mediump> aligned_mediump_dmat4;
  341. /// 4 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  342. typedef mat<4, 4, double, aligned_lowp> aligned_lowp_dmat4;
  343. /// 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  344. typedef mat<4, 4, float, packed_highp> packed_highp_mat4;
  345. /// 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  346. typedef mat<4, 4, float, packed_mediump> packed_mediump_mat4;
  347. /// 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  348. typedef mat<4, 4, float, packed_lowp> packed_lowp_mat4;
  349. /// 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  350. typedef mat<4, 4, double, packed_highp> packed_highp_dmat4;
  351. /// 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  352. typedef mat<4, 4, double, packed_mediump> packed_mediump_dmat4;
  353. /// 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  354. typedef mat<4, 4, double, packed_lowp> packed_lowp_dmat4;
  355. // -- *mat2x2 --
  356. /// 2 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  357. typedef mat<2, 2, float, aligned_highp> aligned_highp_mat2x2;
  358. /// 2 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  359. typedef mat<2, 2, float, aligned_mediump> aligned_mediump_mat2x2;
  360. /// 2 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  361. typedef mat<2, 2, float, aligned_lowp> aligned_lowp_mat2x2;
  362. /// 2 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  363. typedef mat<2, 2, double, aligned_highp> aligned_highp_dmat2x2;
  364. /// 2 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  365. typedef mat<2, 2, double, aligned_mediump> aligned_mediump_dmat2x2;
  366. /// 2 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  367. typedef mat<2, 2, double, aligned_lowp> aligned_lowp_dmat2x2;
  368. /// 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  369. typedef mat<2, 2, float, packed_highp> packed_highp_mat2x2;
  370. /// 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  371. typedef mat<2, 2, float, packed_mediump> packed_mediump_mat2x2;
  372. /// 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  373. typedef mat<2, 2, float, packed_lowp> packed_lowp_mat2x2;
  374. /// 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  375. typedef mat<2, 2, double, packed_highp> packed_highp_dmat2x2;
  376. /// 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  377. typedef mat<2, 2, double, packed_mediump> packed_mediump_dmat2x2;
  378. /// 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  379. typedef mat<2, 2, double, packed_lowp> packed_lowp_dmat2x2;
  380. // -- *mat2x3 --
  381. /// 2 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  382. typedef mat<2, 3, float, aligned_highp> aligned_highp_mat2x3;
  383. /// 2 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  384. typedef mat<2, 3, float, aligned_mediump> aligned_mediump_mat2x3;
  385. /// 2 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  386. typedef mat<2, 3, float, aligned_lowp> aligned_lowp_mat2x3;
  387. /// 2 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  388. typedef mat<2, 3, double, aligned_highp> aligned_highp_dmat2x3;
  389. /// 2 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  390. typedef mat<2, 3, double, aligned_mediump> aligned_mediump_dmat2x3;
  391. /// 2 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  392. typedef mat<2, 3, double, aligned_lowp> aligned_lowp_dmat2x3;
  393. /// 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  394. typedef mat<2, 3, float, packed_highp> packed_highp_mat2x3;
  395. /// 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  396. typedef mat<2, 3, float, packed_mediump> packed_mediump_mat2x3;
  397. /// 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  398. typedef mat<2, 3, float, packed_lowp> packed_lowp_mat2x3;
  399. /// 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  400. typedef mat<2, 3, double, packed_highp> packed_highp_dmat2x3;
  401. /// 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  402. typedef mat<2, 3, double, packed_mediump> packed_mediump_dmat2x3;
  403. /// 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  404. typedef mat<2, 3, double, packed_lowp> packed_lowp_dmat2x3;
  405. // -- *mat2x4 --
  406. /// 2 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  407. typedef mat<2, 4, float, aligned_highp> aligned_highp_mat2x4;
  408. /// 2 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  409. typedef mat<2, 4, float, aligned_mediump> aligned_mediump_mat2x4;
  410. /// 2 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  411. typedef mat<2, 4, float, aligned_lowp> aligned_lowp_mat2x4;
  412. /// 2 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  413. typedef mat<2, 4, double, aligned_highp> aligned_highp_dmat2x4;
  414. /// 2 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  415. typedef mat<2, 4, double, aligned_mediump> aligned_mediump_dmat2x4;
  416. /// 2 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  417. typedef mat<2, 4, double, aligned_lowp> aligned_lowp_dmat2x4;
  418. /// 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  419. typedef mat<2, 4, float, packed_highp> packed_highp_mat2x4;
  420. /// 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  421. typedef mat<2, 4, float, packed_mediump> packed_mediump_mat2x4;
  422. /// 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  423. typedef mat<2, 4, float, packed_lowp> packed_lowp_mat2x4;
  424. /// 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  425. typedef mat<2, 4, double, packed_highp> packed_highp_dmat2x4;
  426. /// 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  427. typedef mat<2, 4, double, packed_mediump> packed_mediump_dmat2x4;
  428. /// 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  429. typedef mat<2, 4, double, packed_lowp> packed_lowp_dmat2x4;
  430. // -- *mat3x2 --
  431. /// 3 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  432. typedef mat<3, 2, float, aligned_highp> aligned_highp_mat3x2;
  433. /// 3 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  434. typedef mat<3, 2, float, aligned_mediump> aligned_mediump_mat3x2;
  435. /// 3 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  436. typedef mat<3, 2, float, aligned_lowp> aligned_lowp_mat3x2;
  437. /// 3 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  438. typedef mat<3, 2, double, aligned_highp> aligned_highp_dmat3x2;
  439. /// 3 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  440. typedef mat<3, 2, double, aligned_mediump> aligned_mediump_dmat3x2;
  441. /// 3 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  442. typedef mat<3, 2, double, aligned_lowp> aligned_lowp_dmat3x2;
  443. /// 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  444. typedef mat<3, 2, float, packed_highp> packed_highp_mat3x2;
  445. /// 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  446. typedef mat<3, 2, float, packed_mediump> packed_mediump_mat3x2;
  447. /// 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  448. typedef mat<3, 2, float, packed_lowp> packed_lowp_mat3x2;
  449. /// 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  450. typedef mat<3, 2, double, packed_highp> packed_highp_dmat3x2;
  451. /// 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  452. typedef mat<3, 2, double, packed_mediump> packed_mediump_dmat3x2;
  453. /// 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  454. typedef mat<3, 2, double, packed_lowp> packed_lowp_dmat3x2;
  455. // -- *mat3x3 --
  456. /// 3 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  457. typedef mat<3, 3, float, aligned_highp> aligned_highp_mat3x3;
  458. /// 3 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  459. typedef mat<3, 3, float, aligned_mediump> aligned_mediump_mat3x3;
  460. /// 3 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  461. typedef mat<3, 3, float, aligned_lowp> aligned_lowp_mat3x3;
  462. /// 3 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  463. typedef mat<3, 3, double, aligned_highp> aligned_highp_dmat3x3;
  464. /// 3 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  465. typedef mat<3, 3, double, aligned_mediump> aligned_mediump_dmat3x3;
  466. /// 3 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  467. typedef mat<3, 3, double, aligned_lowp> aligned_lowp_dmat3x3;
  468. /// 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  469. typedef mat<3, 3, float, packed_highp> packed_highp_mat3x3;
  470. /// 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  471. typedef mat<3, 3, float, packed_mediump> packed_mediump_mat3x3;
  472. /// 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  473. typedef mat<3, 3, float, packed_lowp> packed_lowp_mat3x3;
  474. /// 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  475. typedef mat<3, 3, double, packed_highp> packed_highp_dmat3x3;
  476. /// 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  477. typedef mat<3, 3, double, packed_mediump> packed_mediump_dmat3x3;
  478. /// 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  479. typedef mat<3, 3, double, packed_lowp> packed_lowp_dmat3x3;
  480. // -- *mat3x4 --
  481. /// 3 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  482. typedef mat<3, 4, float, aligned_highp> aligned_highp_mat3x4;
  483. /// 3 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  484. typedef mat<3, 4, float, aligned_mediump> aligned_mediump_mat3x4;
  485. /// 3 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  486. typedef mat<3, 4, float, aligned_lowp> aligned_lowp_mat3x4;
  487. /// 3 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  488. typedef mat<3, 4, double, aligned_highp> aligned_highp_dmat3x4;
  489. /// 3 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  490. typedef mat<3, 4, double, aligned_mediump> aligned_mediump_dmat3x4;
  491. /// 3 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  492. typedef mat<3, 4, double, aligned_lowp> aligned_lowp_dmat3x4;
  493. /// 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  494. typedef mat<3, 4, float, packed_highp> packed_highp_mat3x4;
  495. /// 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  496. typedef mat<3, 4, float, packed_mediump> packed_mediump_mat3x4;
  497. /// 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  498. typedef mat<3, 4, float, packed_lowp> packed_lowp_mat3x4;
  499. /// 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  500. typedef mat<3, 4, double, packed_highp> packed_highp_dmat3x4;
  501. /// 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  502. typedef mat<3, 4, double, packed_mediump> packed_mediump_dmat3x4;
  503. /// 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  504. typedef mat<3, 4, double, packed_lowp> packed_lowp_dmat3x4;
  505. // -- *mat4x2 --
  506. /// 4 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  507. typedef mat<4, 2, float, aligned_highp> aligned_highp_mat4x2;
  508. /// 4 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  509. typedef mat<4, 2, float, aligned_mediump> aligned_mediump_mat4x2;
  510. /// 4 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  511. typedef mat<4, 2, float, aligned_lowp> aligned_lowp_mat4x2;
  512. /// 4 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  513. typedef mat<4, 2, double, aligned_highp> aligned_highp_dmat4x2;
  514. /// 4 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  515. typedef mat<4, 2, double, aligned_mediump> aligned_mediump_dmat4x2;
  516. /// 4 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  517. typedef mat<4, 2, double, aligned_lowp> aligned_lowp_dmat4x2;
  518. /// 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  519. typedef mat<4, 2, float, packed_highp> packed_highp_mat4x2;
  520. /// 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  521. typedef mat<4, 2, float, packed_mediump> packed_mediump_mat4x2;
  522. /// 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  523. typedef mat<4, 2, float, packed_lowp> packed_lowp_mat4x2;
  524. /// 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  525. typedef mat<4, 2, double, packed_highp> packed_highp_dmat4x2;
  526. /// 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  527. typedef mat<4, 2, double, packed_mediump> packed_mediump_dmat4x2;
  528. /// 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  529. typedef mat<4, 2, double, packed_lowp> packed_lowp_dmat4x2;
  530. // -- *mat4x3 --
  531. /// 4 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  532. typedef mat<4, 3, float, aligned_highp> aligned_highp_mat4x3;
  533. /// 4 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  534. typedef mat<4, 3, float, aligned_mediump> aligned_mediump_mat4x3;
  535. /// 4 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  536. typedef mat<4, 3, float, aligned_lowp> aligned_lowp_mat4x3;
  537. /// 4 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  538. typedef mat<4, 3, double, aligned_highp> aligned_highp_dmat4x3;
  539. /// 4 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  540. typedef mat<4, 3, double, aligned_mediump> aligned_mediump_dmat4x3;
  541. /// 4 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  542. typedef mat<4, 3, double, aligned_lowp> aligned_lowp_dmat4x3;
  543. /// 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  544. typedef mat<4, 3, float, packed_highp> packed_highp_mat4x3;
  545. /// 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  546. typedef mat<4, 3, float, packed_mediump> packed_mediump_mat4x3;
  547. /// 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  548. typedef mat<4, 3, float, packed_lowp> packed_lowp_mat4x3;
  549. /// 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  550. typedef mat<4, 3, double, packed_highp> packed_highp_dmat4x3;
  551. /// 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  552. typedef mat<4, 3, double, packed_mediump> packed_mediump_dmat4x3;
  553. /// 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  554. typedef mat<4, 3, double, packed_lowp> packed_lowp_dmat4x3;
  555. // -- *mat4x4 --
  556. /// 4 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  557. typedef mat<4, 4, float, aligned_highp> aligned_highp_mat4x4;
  558. /// 4 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  559. typedef mat<4, 4, float, aligned_mediump> aligned_mediump_mat4x4;
  560. /// 4 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  561. typedef mat<4, 4, float, aligned_lowp> aligned_lowp_mat4x4;
  562. /// 4 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  563. typedef mat<4, 4, double, aligned_highp> aligned_highp_dmat4x4;
  564. /// 4 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  565. typedef mat<4, 4, double, aligned_mediump> aligned_mediump_dmat4x4;
  566. /// 4 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  567. typedef mat<4, 4, double, aligned_lowp> aligned_lowp_dmat4x4;
  568. /// 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  569. typedef mat<4, 4, float, packed_highp> packed_highp_mat4x4;
  570. /// 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  571. typedef mat<4, 4, float, packed_mediump> packed_mediump_mat4x4;
  572. /// 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  573. typedef mat<4, 4, float, packed_lowp> packed_lowp_mat4x4;
  574. /// 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  575. typedef mat<4, 4, double, packed_highp> packed_highp_dmat4x4;
  576. /// 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  577. typedef mat<4, 4, double, packed_mediump> packed_mediump_dmat4x4;
  578. /// 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  579. typedef mat<4, 4, double, packed_lowp> packed_lowp_dmat4x4;
  580. // -- default --
  581. #if(defined(GLM_PRECISION_LOWP_FLOAT))
  582. typedef aligned_lowp_vec1 aligned_vec1;
  583. typedef aligned_lowp_vec2 aligned_vec2;
  584. typedef aligned_lowp_vec3 aligned_vec3;
  585. typedef aligned_lowp_vec4 aligned_vec4;
  586. typedef packed_lowp_vec1 packed_vec1;
  587. typedef packed_lowp_vec2 packed_vec2;
  588. typedef packed_lowp_vec3 packed_vec3;
  589. typedef packed_lowp_vec4 packed_vec4;
  590. typedef aligned_lowp_mat2 aligned_mat2;
  591. typedef aligned_lowp_mat3 aligned_mat3;
  592. typedef aligned_lowp_mat4 aligned_mat4;
  593. typedef packed_lowp_mat2 packed_mat2;
  594. typedef packed_lowp_mat3 packed_mat3;
  595. typedef packed_lowp_mat4 packed_mat4;
  596. typedef aligned_lowp_mat2x2 aligned_mat2x2;
  597. typedef aligned_lowp_mat2x3 aligned_mat2x3;
  598. typedef aligned_lowp_mat2x4 aligned_mat2x4;
  599. typedef aligned_lowp_mat3x2 aligned_mat3x2;
  600. typedef aligned_lowp_mat3x3 aligned_mat3x3;
  601. typedef aligned_lowp_mat3x4 aligned_mat3x4;
  602. typedef aligned_lowp_mat4x2 aligned_mat4x2;
  603. typedef aligned_lowp_mat4x3 aligned_mat4x3;
  604. typedef aligned_lowp_mat4x4 aligned_mat4x4;
  605. typedef packed_lowp_mat2x2 packed_mat2x2;
  606. typedef packed_lowp_mat2x3 packed_mat2x3;
  607. typedef packed_lowp_mat2x4 packed_mat2x4;
  608. typedef packed_lowp_mat3x2 packed_mat3x2;
  609. typedef packed_lowp_mat3x3 packed_mat3x3;
  610. typedef packed_lowp_mat3x4 packed_mat3x4;
  611. typedef packed_lowp_mat4x2 packed_mat4x2;
  612. typedef packed_lowp_mat4x3 packed_mat4x3;
  613. typedef packed_lowp_mat4x4 packed_mat4x4;
  614. #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
  615. typedef aligned_mediump_vec1 aligned_vec1;
  616. typedef aligned_mediump_vec2 aligned_vec2;
  617. typedef aligned_mediump_vec3 aligned_vec3;
  618. typedef aligned_mediump_vec4 aligned_vec4;
  619. typedef packed_mediump_vec1 packed_vec1;
  620. typedef packed_mediump_vec2 packed_vec2;
  621. typedef packed_mediump_vec3 packed_vec3;
  622. typedef packed_mediump_vec4 packed_vec4;
  623. typedef aligned_mediump_mat2 aligned_mat2;
  624. typedef aligned_mediump_mat3 aligned_mat3;
  625. typedef aligned_mediump_mat4 aligned_mat4;
  626. typedef packed_mediump_mat2 packed_mat2;
  627. typedef packed_mediump_mat3 packed_mat3;
  628. typedef packed_mediump_mat4 packed_mat4;
  629. typedef aligned_mediump_mat2x2 aligned_mat2x2;
  630. typedef aligned_mediump_mat2x3 aligned_mat2x3;
  631. typedef aligned_mediump_mat2x4 aligned_mat2x4;
  632. typedef aligned_mediump_mat3x2 aligned_mat3x2;
  633. typedef aligned_mediump_mat3x3 aligned_mat3x3;
  634. typedef aligned_mediump_mat3x4 aligned_mat3x4;
  635. typedef aligned_mediump_mat4x2 aligned_mat4x2;
  636. typedef aligned_mediump_mat4x3 aligned_mat4x3;
  637. typedef aligned_mediump_mat4x4 aligned_mat4x4;
  638. typedef packed_mediump_mat2x2 packed_mat2x2;
  639. typedef packed_mediump_mat2x3 packed_mat2x3;
  640. typedef packed_mediump_mat2x4 packed_mat2x4;
  641. typedef packed_mediump_mat3x2 packed_mat3x2;
  642. typedef packed_mediump_mat3x3 packed_mat3x3;
  643. typedef packed_mediump_mat3x4 packed_mat3x4;
  644. typedef packed_mediump_mat4x2 packed_mat4x2;
  645. typedef packed_mediump_mat4x3 packed_mat4x3;
  646. typedef packed_mediump_mat4x4 packed_mat4x4;
  647. #else //defined(GLM_PRECISION_HIGHP_FLOAT)
  648. /// 1 component vector aligned in memory of single-precision floating-point numbers.
  649. typedef aligned_highp_vec1 aligned_vec1;
  650. /// 2 components vector aligned in memory of single-precision floating-point numbers.
  651. typedef aligned_highp_vec2 aligned_vec2;
  652. /// 3 components vector aligned in memory of single-precision floating-point numbers.
  653. typedef aligned_highp_vec3 aligned_vec3;
  654. /// 4 components vector aligned in memory of single-precision floating-point numbers.
  655. typedef aligned_highp_vec4 aligned_vec4;
  656. /// 1 component vector tightly packed in memory of single-precision floating-point numbers.
  657. typedef packed_highp_vec1 packed_vec1;
  658. /// 2 components vector tightly packed in memory of single-precision floating-point numbers.
  659. typedef packed_highp_vec2 packed_vec2;
  660. /// 3 components vector tightly packed in memory of single-precision floating-point numbers.
  661. typedef packed_highp_vec3 packed_vec3;
  662. /// 4 components vector tightly packed in memory of single-precision floating-point numbers.
  663. typedef packed_highp_vec4 packed_vec4;
  664. /// 2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
  665. typedef aligned_highp_mat2 aligned_mat2;
  666. /// 3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
  667. typedef aligned_highp_mat3 aligned_mat3;
  668. /// 4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
  669. typedef aligned_highp_mat4 aligned_mat4;
  670. /// 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
  671. typedef packed_highp_mat2 packed_mat2;
  672. /// 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
  673. typedef packed_highp_mat3 packed_mat3;
  674. /// 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
  675. typedef packed_highp_mat4 packed_mat4;
  676. /// 2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
  677. typedef aligned_highp_mat2x2 aligned_mat2x2;
  678. /// 2 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
  679. typedef aligned_highp_mat2x3 aligned_mat2x3;
  680. /// 2 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
  681. typedef aligned_highp_mat2x4 aligned_mat2x4;
  682. /// 3 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
  683. typedef aligned_highp_mat3x2 aligned_mat3x2;
  684. /// 3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
  685. typedef aligned_highp_mat3x3 aligned_mat3x3;
  686. /// 3 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
  687. typedef aligned_highp_mat3x4 aligned_mat3x4;
  688. /// 4 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
  689. typedef aligned_highp_mat4x2 aligned_mat4x2;
  690. /// 4 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
  691. typedef aligned_highp_mat4x3 aligned_mat4x3;
  692. /// 4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
  693. typedef aligned_highp_mat4x4 aligned_mat4x4;
  694. /// 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
  695. typedef packed_highp_mat2x2 packed_mat2x2;
  696. /// 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
  697. typedef packed_highp_mat2x3 packed_mat2x3;
  698. /// 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
  699. typedef packed_highp_mat2x4 packed_mat2x4;
  700. /// 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
  701. typedef packed_highp_mat3x2 packed_mat3x2;
  702. /// 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
  703. typedef packed_highp_mat3x3 packed_mat3x3;
  704. /// 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
  705. typedef packed_highp_mat3x4 packed_mat3x4;
  706. /// 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
  707. typedef packed_highp_mat4x2 packed_mat4x2;
  708. /// 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
  709. typedef packed_highp_mat4x3 packed_mat4x3;
  710. /// 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
  711. typedef packed_highp_mat4x4 packed_mat4x4;
  712. #endif//GLM_PRECISION
  713. #if(defined(GLM_PRECISION_LOWP_DOUBLE))
  714. typedef aligned_lowp_dvec1 aligned_dvec1;
  715. typedef aligned_lowp_dvec2 aligned_dvec2;
  716. typedef aligned_lowp_dvec3 aligned_dvec3;
  717. typedef aligned_lowp_dvec4 aligned_dvec4;
  718. typedef packed_lowp_dvec1 packed_dvec1;
  719. typedef packed_lowp_dvec2 packed_dvec2;
  720. typedef packed_lowp_dvec3 packed_dvec3;
  721. typedef packed_lowp_dvec4 packed_dvec4;
  722. typedef aligned_lowp_dmat2 aligned_dmat2;
  723. typedef aligned_lowp_dmat3 aligned_dmat3;
  724. typedef aligned_lowp_dmat4 aligned_dmat4;
  725. typedef packed_lowp_dmat2 packed_dmat2;
  726. typedef packed_lowp_dmat3 packed_dmat3;
  727. typedef packed_lowp_dmat4 packed_dmat4;
  728. typedef aligned_lowp_dmat2x2 aligned_dmat2x2;
  729. typedef aligned_lowp_dmat2x3 aligned_dmat2x3;
  730. typedef aligned_lowp_dmat2x4 aligned_dmat2x4;
  731. typedef aligned_lowp_dmat3x2 aligned_dmat3x2;
  732. typedef aligned_lowp_dmat3x3 aligned_dmat3x3;
  733. typedef aligned_lowp_dmat3x4 aligned_dmat3x4;
  734. typedef aligned_lowp_dmat4x2 aligned_dmat4x2;
  735. typedef aligned_lowp_dmat4x3 aligned_dmat4x3;
  736. typedef aligned_lowp_dmat4x4 aligned_dmat4x4;
  737. typedef packed_lowp_dmat2x2 packed_dmat2x2;
  738. typedef packed_lowp_dmat2x3 packed_dmat2x3;
  739. typedef packed_lowp_dmat2x4 packed_dmat2x4;
  740. typedef packed_lowp_dmat3x2 packed_dmat3x2;
  741. typedef packed_lowp_dmat3x3 packed_dmat3x3;
  742. typedef packed_lowp_dmat3x4 packed_dmat3x4;
  743. typedef packed_lowp_dmat4x2 packed_dmat4x2;
  744. typedef packed_lowp_dmat4x3 packed_dmat4x3;
  745. typedef packed_lowp_dmat4x4 packed_dmat4x4;
  746. #elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE))
  747. typedef aligned_mediump_dvec1 aligned_dvec1;
  748. typedef aligned_mediump_dvec2 aligned_dvec2;
  749. typedef aligned_mediump_dvec3 aligned_dvec3;
  750. typedef aligned_mediump_dvec4 aligned_dvec4;
  751. typedef packed_mediump_dvec1 packed_dvec1;
  752. typedef packed_mediump_dvec2 packed_dvec2;
  753. typedef packed_mediump_dvec3 packed_dvec3;
  754. typedef packed_mediump_dvec4 packed_dvec4;
  755. typedef aligned_mediump_dmat2 aligned_dmat2;
  756. typedef aligned_mediump_dmat3 aligned_dmat3;
  757. typedef aligned_mediump_dmat4 aligned_dmat4;
  758. typedef packed_mediump_dmat2 packed_dmat2;
  759. typedef packed_mediump_dmat3 packed_dmat3;
  760. typedef packed_mediump_dmat4 packed_dmat4;
  761. typedef aligned_mediump_dmat2x2 aligned_dmat2x2;
  762. typedef aligned_mediump_dmat2x3 aligned_dmat2x3;
  763. typedef aligned_mediump_dmat2x4 aligned_dmat2x4;
  764. typedef aligned_mediump_dmat3x2 aligned_dmat3x2;
  765. typedef aligned_mediump_dmat3x3 aligned_dmat3x3;
  766. typedef aligned_mediump_dmat3x4 aligned_dmat3x4;
  767. typedef aligned_mediump_dmat4x2 aligned_dmat4x2;
  768. typedef aligned_mediump_dmat4x3 aligned_dmat4x3;
  769. typedef aligned_mediump_dmat4x4 aligned_dmat4x4;
  770. typedef packed_mediump_dmat2x2 packed_dmat2x2;
  771. typedef packed_mediump_dmat2x3 packed_dmat2x3;
  772. typedef packed_mediump_dmat2x4 packed_dmat2x4;
  773. typedef packed_mediump_dmat3x2 packed_dmat3x2;
  774. typedef packed_mediump_dmat3x3 packed_dmat3x3;
  775. typedef packed_mediump_dmat3x4 packed_dmat3x4;
  776. typedef packed_mediump_dmat4x2 packed_dmat4x2;
  777. typedef packed_mediump_dmat4x3 packed_dmat4x3;
  778. typedef packed_mediump_dmat4x4 packed_dmat4x4;
  779. #else //defined(GLM_PRECISION_HIGHP_DOUBLE)
  780. /// 1 component vector aligned in memory of double-precision floating-point numbers.
  781. typedef aligned_highp_dvec1 aligned_dvec1;
  782. /// 2 components vector aligned in memory of double-precision floating-point numbers.
  783. typedef aligned_highp_dvec2 aligned_dvec2;
  784. /// 3 components vector aligned in memory of double-precision floating-point numbers.
  785. typedef aligned_highp_dvec3 aligned_dvec3;
  786. /// 4 components vector aligned in memory of double-precision floating-point numbers.
  787. typedef aligned_highp_dvec4 aligned_dvec4;
  788. /// 1 component vector tightly packed in memory of double-precision floating-point numbers.
  789. typedef packed_highp_dvec1 packed_dvec1;
  790. /// 2 components vector tightly packed in memory of double-precision floating-point numbers.
  791. typedef packed_highp_dvec2 packed_dvec2;
  792. /// 3 components vector tightly packed in memory of double-precision floating-point numbers.
  793. typedef packed_highp_dvec3 packed_dvec3;
  794. /// 4 components vector tightly packed in memory of double-precision floating-point numbers.
  795. typedef packed_highp_dvec4 packed_dvec4;
  796. /// 2 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
  797. typedef aligned_highp_dmat2 aligned_dmat2;
  798. /// 3 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
  799. typedef aligned_highp_dmat3 aligned_dmat3;
  800. /// 4 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
  801. typedef aligned_highp_dmat4 aligned_dmat4;
  802. /// 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
  803. typedef packed_highp_dmat2 packed_dmat2;
  804. /// 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
  805. typedef packed_highp_dmat3 packed_dmat3;
  806. /// 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
  807. typedef packed_highp_dmat4 packed_dmat4;
  808. /// 2 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
  809. typedef aligned_highp_dmat2x2 aligned_dmat2x2;
  810. /// 2 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
  811. typedef aligned_highp_dmat2x3 aligned_dmat2x3;
  812. /// 2 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
  813. typedef aligned_highp_dmat2x4 aligned_dmat2x4;
  814. /// 3 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
  815. typedef aligned_highp_dmat3x2 aligned_dmat3x2;
  816. /// 3 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
  817. typedef aligned_highp_dmat3x3 aligned_dmat3x3;
  818. /// 3 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
  819. typedef aligned_highp_dmat3x4 aligned_dmat3x4;
  820. /// 4 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
  821. typedef aligned_highp_dmat4x2 aligned_dmat4x2;
  822. /// 4 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
  823. typedef aligned_highp_dmat4x3 aligned_dmat4x3;
  824. /// 4 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
  825. typedef aligned_highp_dmat4x4 aligned_dmat4x4;
  826. /// 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
  827. typedef packed_highp_dmat2x2 packed_dmat2x2;
  828. /// 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
  829. typedef packed_highp_dmat2x3 packed_dmat2x3;
  830. /// 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
  831. typedef packed_highp_dmat2x4 packed_dmat2x4;
  832. /// 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
  833. typedef packed_highp_dmat3x2 packed_dmat3x2;
  834. /// 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
  835. typedef packed_highp_dmat3x3 packed_dmat3x3;
  836. /// 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
  837. typedef packed_highp_dmat3x4 packed_dmat3x4;
  838. /// 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
  839. typedef packed_highp_dmat4x2 packed_dmat4x2;
  840. /// 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
  841. typedef packed_highp_dmat4x3 packed_dmat4x3;
  842. /// 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
  843. typedef packed_highp_dmat4x4 packed_dmat4x4;
  844. #endif//GLM_PRECISION
  845. #if(defined(GLM_PRECISION_LOWP_INT))
  846. typedef aligned_lowp_ivec1 aligned_ivec1;
  847. typedef aligned_lowp_ivec2 aligned_ivec2;
  848. typedef aligned_lowp_ivec3 aligned_ivec3;
  849. typedef aligned_lowp_ivec4 aligned_ivec4;
  850. #elif(defined(GLM_PRECISION_MEDIUMP_INT))
  851. typedef aligned_mediump_ivec1 aligned_ivec1;
  852. typedef aligned_mediump_ivec2 aligned_ivec2;
  853. typedef aligned_mediump_ivec3 aligned_ivec3;
  854. typedef aligned_mediump_ivec4 aligned_ivec4;
  855. #else //defined(GLM_PRECISION_HIGHP_INT)
  856. /// 1 component vector aligned in memory of signed integer numbers.
  857. typedef aligned_highp_ivec1 aligned_ivec1;
  858. /// 2 components vector aligned in memory of signed integer numbers.
  859. typedef aligned_highp_ivec2 aligned_ivec2;
  860. /// 3 components vector aligned in memory of signed integer numbers.
  861. typedef aligned_highp_ivec3 aligned_ivec3;
  862. /// 4 components vector aligned in memory of signed integer numbers.
  863. typedef aligned_highp_ivec4 aligned_ivec4;
  864. /// 1 component vector tightly packed in memory of signed integer numbers.
  865. typedef packed_highp_ivec1 packed_ivec1;
  866. /// 2 components vector tightly packed in memory of signed integer numbers.
  867. typedef packed_highp_ivec2 packed_ivec2;
  868. /// 3 components vector tightly packed in memory of signed integer numbers.
  869. typedef packed_highp_ivec3 packed_ivec3;
  870. /// 4 components vector tightly packed in memory of signed integer numbers.
  871. typedef packed_highp_ivec4 packed_ivec4;
  872. #endif//GLM_PRECISION
  873. // -- Unsigned integer definition --
  874. #if(defined(GLM_PRECISION_LOWP_UINT))
  875. typedef aligned_lowp_uvec1 aligned_uvec1;
  876. typedef aligned_lowp_uvec2 aligned_uvec2;
  877. typedef aligned_lowp_uvec3 aligned_uvec3;
  878. typedef aligned_lowp_uvec4 aligned_uvec4;
  879. #elif(defined(GLM_PRECISION_MEDIUMP_UINT))
  880. typedef aligned_mediump_uvec1 aligned_uvec1;
  881. typedef aligned_mediump_uvec2 aligned_uvec2;
  882. typedef aligned_mediump_uvec3 aligned_uvec3;
  883. typedef aligned_mediump_uvec4 aligned_uvec4;
  884. #else //defined(GLM_PRECISION_HIGHP_UINT)
  885. /// 1 component vector aligned in memory of unsigned integer numbers.
  886. typedef aligned_highp_uvec1 aligned_uvec1;
  887. /// 2 components vector aligned in memory of unsigned integer numbers.
  888. typedef aligned_highp_uvec2 aligned_uvec2;
  889. /// 3 components vector aligned in memory of unsigned integer numbers.
  890. typedef aligned_highp_uvec3 aligned_uvec3;
  891. /// 4 components vector aligned in memory of unsigned integer numbers.
  892. typedef aligned_highp_uvec4 aligned_uvec4;
  893. /// 1 component vector tightly packed in memory of unsigned integer numbers.
  894. typedef packed_highp_uvec1 packed_uvec1;
  895. /// 2 components vector tightly packed in memory of unsigned integer numbers.
  896. typedef packed_highp_uvec2 packed_uvec2;
  897. /// 3 components vector tightly packed in memory of unsigned integer numbers.
  898. typedef packed_highp_uvec3 packed_uvec3;
  899. /// 4 components vector tightly packed in memory of unsigned integer numbers.
  900. typedef packed_highp_uvec4 packed_uvec4;
  901. #endif//GLM_PRECISION
  902. #if(defined(GLM_PRECISION_LOWP_BOOL))
  903. typedef aligned_lowp_bvec1 aligned_bvec1;
  904. typedef aligned_lowp_bvec2 aligned_bvec2;
  905. typedef aligned_lowp_bvec3 aligned_bvec3;
  906. typedef aligned_lowp_bvec4 aligned_bvec4;
  907. #elif(defined(GLM_PRECISION_MEDIUMP_BOOL))
  908. typedef aligned_mediump_bvec1 aligned_bvec1;
  909. typedef aligned_mediump_bvec2 aligned_bvec2;
  910. typedef aligned_mediump_bvec3 aligned_bvec3;
  911. typedef aligned_mediump_bvec4 aligned_bvec4;
  912. #else //defined(GLM_PRECISION_HIGHP_BOOL)
  913. /// 1 component vector aligned in memory of bool values.
  914. typedef aligned_highp_bvec1 aligned_bvec1;
  915. /// 2 components vector aligned in memory of bool values.
  916. typedef aligned_highp_bvec2 aligned_bvec2;
  917. /// 3 components vector aligned in memory of bool values.
  918. typedef aligned_highp_bvec3 aligned_bvec3;
  919. /// 4 components vector aligned in memory of bool values.
  920. typedef aligned_highp_bvec4 aligned_bvec4;
  921. /// 1 components vector tightly packed in memory of bool values.
  922. typedef packed_highp_bvec1 packed_bvec1;
  923. /// 2 components vector tightly packed in memory of bool values.
  924. typedef packed_highp_bvec2 packed_bvec2;
  925. /// 3 components vector tightly packed in memory of bool values.
  926. typedef packed_highp_bvec3 packed_bvec3;
  927. /// 4 components vector tightly packed in memory of bool values.
  928. typedef packed_highp_bvec4 packed_bvec4;
  929. #endif//GLM_PRECISION
  930. /// @}
  931. }//namespace glm