type_aligned.hpp 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602
  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_HAS_ANONYMOUS_STRUCT
  14. # error "GLM: Aligned types are not supported on this platform"
  15. #endif
  16. #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)
  17. # pragma message("GLM: GLM_GTC_type_aligned extension included")
  18. #endif
  19. #include "../vec2.hpp"
  20. #include "../vec3.hpp"
  21. #include "../vec4.hpp"
  22. #include "../gtc/vec1.hpp"
  23. namespace glm
  24. {
  25. /// @addtogroup gtc_type_aligned
  26. /// @{
  27. // -- *vec1 --
  28. /// 1 component vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  29. typedef vec<1, float, aligned_highp> aligned_highp_vec1;
  30. /// 1 component vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  31. typedef vec<1, float, aligned_mediump> aligned_mediump_vec1;
  32. /// 1 component vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  33. typedef vec<1, float, aligned_lowp> aligned_lowp_vec1;
  34. /// 1 component vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  35. typedef vec<1, double, aligned_highp> aligned_highp_dvec1;
  36. /// 1 component vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  37. typedef vec<1, double, aligned_mediump> aligned_mediump_dvec1;
  38. /// 1 component vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  39. typedef vec<1, double, aligned_lowp> aligned_lowp_dvec1;
  40. /// 1 component vector aligned in memory of signed integer numbers.
  41. typedef vec<1, int, aligned_highp> aligned_highp_ivec1;
  42. /// 1 component vector aligned in memory of signed integer numbers.
  43. typedef vec<1, int, aligned_mediump> aligned_mediump_ivec1;
  44. /// 1 component vector aligned in memory of signed integer numbers.
  45. typedef vec<1, int, aligned_lowp> aligned_lowp_ivec1;
  46. /// 1 component vector aligned in memory of unsigned integer numbers.
  47. typedef vec<1, uint, aligned_highp> aligned_highp_uvec1;
  48. /// 1 component vector aligned in memory of unsigned integer numbers.
  49. typedef vec<1, uint, aligned_mediump> aligned_mediump_uvec1;
  50. /// 1 component vector aligned in memory of unsigned integer numbers.
  51. typedef vec<1, uint, aligned_lowp> aligned_lowp_uvec1;
  52. /// 1 component vector aligned in memory of bool values.
  53. typedef vec<1, bool, aligned_highp> aligned_highp_bvec1;
  54. /// 1 component vector aligned in memory of bool values.
  55. typedef vec<1, bool, aligned_mediump> aligned_mediump_bvec1;
  56. /// 1 component vector aligned in memory of bool values.
  57. typedef vec<1, bool, aligned_lowp> aligned_lowp_bvec1;
  58. /// 1 component vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  59. typedef vec<1, float, packed_highp> packed_highp_vec1;
  60. /// 1 component vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  61. typedef vec<1, float, packed_mediump> packed_mediump_vec1;
  62. /// 1 component vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  63. typedef vec<1, float, packed_lowp> packed_lowp_vec1;
  64. /// 1 component vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  65. typedef vec<1, double, packed_highp> packed_highp_dvec1;
  66. /// 1 component vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  67. typedef vec<1, double, packed_mediump> packed_mediump_dvec1;
  68. /// 1 component vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  69. typedef vec<1, double, packed_lowp> packed_lowp_dvec1;
  70. /// 1 component vector tightly packed in memory of signed integer numbers.
  71. typedef vec<1, int, packed_highp> packed_highp_ivec1;
  72. /// 1 component vector tightly packed in memory of signed integer numbers.
  73. typedef vec<1, int, packed_mediump> packed_mediump_ivec1;
  74. /// 1 component vector tightly packed in memory of signed integer numbers.
  75. typedef vec<1, int, packed_lowp> packed_lowp_ivec1;
  76. /// 1 component vector tightly packed in memory of unsigned integer numbers.
  77. typedef vec<1, uint, packed_highp> packed_highp_uvec1;
  78. /// 1 component vector tightly packed in memory of unsigned integer numbers.
  79. typedef vec<1, uint, packed_mediump> packed_mediump_uvec1;
  80. /// 1 component vector tightly packed in memory of unsigned integer numbers.
  81. typedef vec<1, uint, packed_lowp> packed_lowp_uvec1;
  82. /// 1 component vector tightly packed in memory of bool values.
  83. typedef vec<1, bool, packed_highp> packed_highp_bvec1;
  84. /// 1 component vector tightly packed in memory of bool values.
  85. typedef vec<1, bool, packed_mediump> packed_mediump_bvec1;
  86. /// 1 component vector tightly packed in memory of bool values.
  87. typedef vec<1, bool, packed_lowp> packed_lowp_bvec1;
  88. // -- *vec2 --
  89. /// 2 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  90. typedef vec<2, float, aligned_highp> aligned_highp_vec2;
  91. /// 2 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  92. typedef vec<2, float, aligned_mediump> aligned_mediump_vec2;
  93. /// 2 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  94. typedef vec<2, float, aligned_lowp> aligned_lowp_vec2;
  95. /// 2 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  96. typedef vec<2, double, aligned_highp> aligned_highp_dvec2;
  97. /// 2 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  98. typedef vec<2, double, aligned_mediump> aligned_mediump_dvec2;
  99. /// 2 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  100. typedef vec<2, double, aligned_lowp> aligned_lowp_dvec2;
  101. /// 2 components vector aligned in memory of signed integer numbers.
  102. typedef vec<2, int, aligned_highp> aligned_highp_ivec2;
  103. /// 2 components vector aligned in memory of signed integer numbers.
  104. typedef vec<2, int, aligned_mediump> aligned_mediump_ivec2;
  105. /// 2 components vector aligned in memory of signed integer numbers.
  106. typedef vec<2, int, aligned_lowp> aligned_lowp_ivec2;
  107. /// 2 components vector aligned in memory of unsigned integer numbers.
  108. typedef vec<2, uint, aligned_highp> aligned_highp_uvec2;
  109. /// 2 components vector aligned in memory of unsigned integer numbers.
  110. typedef vec<2, uint, aligned_mediump> aligned_mediump_uvec2;
  111. /// 2 components vector aligned in memory of unsigned integer numbers.
  112. typedef vec<2, uint, aligned_lowp> aligned_lowp_uvec2;
  113. /// 2 components vector aligned in memory of bool values.
  114. typedef vec<2, bool, aligned_highp> aligned_highp_bvec2;
  115. /// 2 components vector aligned in memory of bool values.
  116. typedef vec<2, bool, aligned_mediump> aligned_mediump_bvec2;
  117. /// 2 components vector aligned in memory of bool values.
  118. typedef vec<2, bool, aligned_lowp> aligned_lowp_bvec2;
  119. /// 2 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  120. typedef vec<2, float, packed_highp> packed_highp_vec2;
  121. /// 2 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  122. typedef vec<2, float, packed_mediump> packed_mediump_vec2;
  123. /// 2 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  124. typedef vec<2, float, packed_lowp> packed_lowp_vec2;
  125. /// 2 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  126. typedef vec<2, double, packed_highp> packed_highp_dvec2;
  127. /// 2 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  128. typedef vec<2, double, packed_mediump> packed_mediump_dvec2;
  129. /// 2 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  130. typedef vec<2, double, packed_lowp> packed_lowp_dvec2;
  131. /// 2 components vector tightly packed in memory of signed integer numbers.
  132. typedef vec<2, int, packed_highp> packed_highp_ivec2;
  133. /// 2 components vector tightly packed in memory of signed integer numbers.
  134. typedef vec<2, int, packed_mediump> packed_mediump_ivec2;
  135. /// 2 components vector tightly packed in memory of signed integer numbers.
  136. typedef vec<2, int, packed_lowp> packed_lowp_ivec2;
  137. /// 2 components vector tightly packed in memory of unsigned integer numbers.
  138. typedef vec<2, uint, packed_highp> packed_highp_uvec2;
  139. /// 2 components vector tightly packed in memory of unsigned integer numbers.
  140. typedef vec<2, uint, packed_mediump> packed_mediump_uvec2;
  141. /// 2 components vector tightly packed in memory of unsigned integer numbers.
  142. typedef vec<2, uint, packed_lowp> packed_lowp_uvec2;
  143. /// 2 components vector tightly packed in memory of bool values.
  144. typedef vec<2, bool, packed_highp> packed_highp_bvec2;
  145. /// 2 components vector tightly packed in memory of bool values.
  146. typedef vec<2, bool, packed_mediump> packed_mediump_bvec2;
  147. /// 2 components vector tightly packed in memory of bool values.
  148. typedef vec<2, bool, packed_lowp> packed_lowp_bvec2;
  149. // -- *vec3 --
  150. /// 3 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  151. typedef vec<3, float, aligned_highp> aligned_highp_vec3;
  152. /// 3 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  153. typedef vec<3, float, aligned_mediump> aligned_mediump_vec3;
  154. /// 3 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  155. typedef vec<3, float, aligned_lowp> aligned_lowp_vec3;
  156. /// 3 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  157. typedef vec<3, double, aligned_highp> aligned_highp_dvec3;
  158. /// 3 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  159. typedef vec<3, double, aligned_mediump> aligned_mediump_dvec3;
  160. /// 3 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  161. typedef vec<3, double, aligned_lowp> aligned_lowp_dvec3;
  162. /// 3 components vector aligned in memory of signed integer numbers.
  163. typedef vec<3, int, aligned_highp> aligned_highp_ivec3;
  164. /// 3 components vector aligned in memory of signed integer numbers.
  165. typedef vec<3, int, aligned_mediump> aligned_mediump_ivec3;
  166. /// 3 components vector aligned in memory of signed integer numbers.
  167. typedef vec<3, int, aligned_lowp> aligned_lowp_ivec3;
  168. /// 3 components vector aligned in memory of unsigned integer numbers.
  169. typedef vec<3, uint, aligned_highp> aligned_highp_uvec3;
  170. /// 3 components vector aligned in memory of unsigned integer numbers.
  171. typedef vec<3, uint, aligned_mediump> aligned_mediump_uvec3;
  172. /// 3 components vector aligned in memory of unsigned integer numbers.
  173. typedef vec<3, uint, aligned_lowp> aligned_lowp_uvec3;
  174. /// 3 components vector aligned in memory of bool values.
  175. typedef vec<3, bool, aligned_highp> aligned_highp_bvec3;
  176. /// 3 components vector aligned in memory of bool values.
  177. typedef vec<3, bool, aligned_mediump> aligned_mediump_bvec3;
  178. /// 3 components vector aligned in memory of bool values.
  179. typedef vec<3, bool, aligned_lowp> aligned_lowp_bvec3;
  180. /// 3 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  181. typedef vec<3, float, packed_highp> packed_highp_vec3;
  182. /// 3 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  183. typedef vec<3, float, packed_mediump> packed_mediump_vec3;
  184. /// 3 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  185. typedef vec<3, float, packed_lowp> packed_lowp_vec3;
  186. /// 3 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  187. typedef vec<3, double, packed_highp> packed_highp_dvec3;
  188. /// 3 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  189. typedef vec<3, double, packed_mediump> packed_mediump_dvec3;
  190. /// 3 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  191. typedef vec<3, double, packed_lowp> packed_lowp_dvec3;
  192. /// 3 components vector tightly packed in memory of signed integer numbers.
  193. typedef vec<3, int, packed_highp> packed_highp_ivec3;
  194. /// 3 components vector tightly packed in memory of signed integer numbers.
  195. typedef vec<3, int, packed_mediump> packed_mediump_ivec3;
  196. /// 3 components vector tightly packed in memory of signed integer numbers.
  197. typedef vec<3, int, packed_lowp> packed_lowp_ivec3;
  198. /// 3 components vector tightly packed in memory of unsigned integer numbers.
  199. typedef vec<3, uint, packed_highp> packed_highp_uvec3;
  200. /// 3 components vector tightly packed in memory of unsigned integer numbers.
  201. typedef vec<3, uint, packed_mediump> packed_mediump_uvec3;
  202. /// 3 components vector tightly packed in memory of unsigned integer numbers.
  203. typedef vec<3, uint, packed_lowp> packed_lowp_uvec3;
  204. /// 3 components vector tightly packed in memory of bool values.
  205. typedef vec<3, bool, packed_highp> packed_highp_bvec3;
  206. /// 3 components vector tightly packed in memory of bool values.
  207. typedef vec<3, bool, packed_mediump> packed_mediump_bvec3;
  208. /// 3 components vector tightly packed in memory of bool values.
  209. typedef vec<3, bool, packed_lowp> packed_lowp_bvec3;
  210. // -- *vec4 --
  211. /// 4 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  212. typedef vec<4, float, aligned_highp> aligned_highp_vec4;
  213. /// 4 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  214. typedef vec<4, float, aligned_mediump> aligned_mediump_vec4;
  215. /// 4 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  216. typedef vec<4, float, aligned_lowp> aligned_lowp_vec4;
  217. /// 4 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  218. typedef vec<4, double, aligned_highp> aligned_highp_dvec4;
  219. /// 4 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  220. typedef vec<4, double, aligned_mediump> aligned_mediump_dvec4;
  221. /// 4 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  222. typedef vec<4, double, aligned_lowp> aligned_lowp_dvec4;
  223. /// 4 components vector aligned in memory of signed integer numbers.
  224. typedef vec<4, int, aligned_highp> aligned_highp_ivec4;
  225. /// 4 components vector aligned in memory of signed integer numbers.
  226. typedef vec<4, int, aligned_mediump> aligned_mediump_ivec4;
  227. /// 4 components vector aligned in memory of signed integer numbers.
  228. typedef vec<4, int, aligned_lowp> aligned_lowp_ivec4;
  229. /// 4 components vector aligned in memory of unsigned integer numbers.
  230. typedef vec<4, uint, aligned_highp> aligned_highp_uvec4;
  231. /// 4 components vector aligned in memory of unsigned integer numbers.
  232. typedef vec<4, uint, aligned_mediump> aligned_mediump_uvec4;
  233. /// 4 components vector aligned in memory of unsigned integer numbers.
  234. typedef vec<4, uint, aligned_lowp> aligned_lowp_uvec4;
  235. /// 4 components vector aligned in memory of bool values.
  236. typedef vec<4, bool, aligned_highp> aligned_highp_bvec4;
  237. /// 4 components vector aligned in memory of bool values.
  238. typedef vec<4, bool, aligned_mediump> aligned_mediump_bvec4;
  239. /// 4 components vector aligned in memory of bool values.
  240. typedef vec<4, bool, aligned_lowp> aligned_lowp_bvec4;
  241. /// 4 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
  242. typedef vec<4, float, packed_highp> packed_highp_vec4;
  243. /// 4 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  244. typedef vec<4, float, packed_mediump> packed_mediump_vec4;
  245. /// 4 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
  246. typedef vec<4, float, packed_lowp> packed_lowp_vec4;
  247. /// 4 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
  248. typedef vec<4, double, packed_highp> packed_highp_dvec4;
  249. /// 4 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
  250. typedef vec<4, double, packed_mediump> packed_mediump_dvec4;
  251. /// 4 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
  252. typedef vec<4, double, packed_lowp> packed_lowp_dvec4;
  253. /// 4 components vector tightly packed in memory of signed integer numbers.
  254. typedef vec<4, int, packed_highp> packed_highp_ivec4;
  255. /// 4 components vector tightly packed in memory of signed integer numbers.
  256. typedef vec<4, int, packed_mediump> packed_mediump_ivec4;
  257. /// 4 components vector tightly packed in memory of signed integer numbers.
  258. typedef vec<4, int, packed_lowp> packed_lowp_ivec4;
  259. /// 4 components vector tightly packed in memory of unsigned integer numbers.
  260. typedef vec<4, uint, packed_highp> packed_highp_uvec4;
  261. /// 4 components vector tightly packed in memory of unsigned integer numbers.
  262. typedef vec<4, uint, packed_mediump> packed_mediump_uvec4;
  263. /// 4 components vector tightly packed in memory of unsigned integer numbers.
  264. typedef vec<4, uint, packed_lowp> packed_lowp_uvec4;
  265. /// 4 components vector tightly packed in memory of bool values.
  266. typedef vec<4, bool, packed_highp> packed_highp_bvec4;
  267. /// 4 components vector tightly packed in memory of bool values.
  268. typedef vec<4, bool, packed_mediump> packed_mediump_bvec4;
  269. /// 4 components vector tightly packed in memory of bool values.
  270. typedef vec<4, bool, packed_lowp> packed_lowp_bvec4;
  271. // -- default --
  272. #if(defined(GLM_PRECISION_LOWP_FLOAT))
  273. typedef aligned_lowp_vec1 aligned_vec1;
  274. typedef aligned_lowp_vec2 aligned_vec2;
  275. typedef aligned_lowp_vec3 aligned_vec3;
  276. typedef aligned_lowp_vec4 aligned_vec4;
  277. typedef packed_lowp_vec1 packed_vec1;
  278. typedef packed_lowp_vec2 packed_vec2;
  279. typedef packed_lowp_vec3 packed_vec3;
  280. typedef packed_lowp_vec4 packed_vec4;
  281. #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
  282. typedef aligned_mediump_vec1 aligned_vec1;
  283. typedef aligned_mediump_vec2 aligned_vec2;
  284. typedef aligned_mediump_vec3 aligned_vec3;
  285. typedef aligned_mediump_vec4 aligned_vec4;
  286. typedef packed_mediump_vec1 packed_vec1;
  287. typedef packed_mediump_vec2 packed_vec2;
  288. typedef packed_mediump_vec3 packed_vec3;
  289. typedef packed_mediump_vec4 packed_vec4;
  290. #else //defined(GLM_PRECISION_HIGHP_FLOAT)
  291. /// 1 component vector aligned in memory of single-precision floating-point numbers.
  292. typedef aligned_highp_vec1 aligned_vec1;
  293. /// 2 components vector aligned in memory of single-precision floating-point numbers.
  294. typedef aligned_highp_vec2 aligned_vec2;
  295. /// 3 components vector aligned in memory of single-precision floating-point numbers.
  296. typedef aligned_highp_vec3 aligned_vec3;
  297. /// 4 components vector aligned in memory of single-precision floating-point numbers.
  298. typedef aligned_highp_vec4 aligned_vec4;
  299. /// 1 component vector tightly packed in memory of single-precision floating-point numbers.
  300. typedef packed_highp_vec1 packed_vec1;
  301. /// 2 components vector tightly packed in memory of single-precision floating-point numbers.
  302. typedef packed_highp_vec2 packed_vec2;
  303. /// 3 components vector tightly packed in memory of single-precision floating-point numbers.
  304. typedef packed_highp_vec3 packed_vec3;
  305. /// 4 components vector tightly packed in memory of single-precision floating-point numbers.
  306. typedef packed_highp_vec4 packed_vec4;
  307. #endif//GLM_PRECISION
  308. #if(defined(GLM_PRECISION_LOWP_DOUBLE))
  309. typedef aligned_lowp_dvec1 aligned_dvec1;
  310. typedef aligned_lowp_dvec2 aligned_dvec2;
  311. typedef aligned_lowp_dvec3 aligned_dvec3;
  312. typedef aligned_lowp_dvec4 aligned_dvec4;
  313. typedef packed_lowp_dvec1 packed_dvec1;
  314. typedef packed_lowp_dvec2 packed_dvec2;
  315. typedef packed_lowp_dvec3 packed_dvec3;
  316. typedef packed_lowp_dvec4 packed_dvec4;
  317. #elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE))
  318. typedef aligned_mediump_dvec1 aligned_dvec1;
  319. typedef aligned_mediump_dvec2 aligned_dvec2;
  320. typedef aligned_mediump_dvec3 aligned_dvec3;
  321. typedef aligned_mediump_dvec4 aligned_dvec4;
  322. typedef packed_mediump_dvec1 packed_dvec1;
  323. typedef packed_mediump_dvec2 packed_dvec2;
  324. typedef packed_mediump_dvec3 packed_dvec3;
  325. typedef packed_mediump_dvec4 packed_dvec4;
  326. #else //defined(GLM_PRECISION_HIGHP_DOUBLE)
  327. /// 1 component vector aligned in memory of double-precision floating-point numbers.
  328. typedef aligned_highp_dvec1 aligned_dvec1;
  329. /// 2 components vector aligned in memory of double-precision floating-point numbers.
  330. typedef aligned_highp_dvec2 aligned_dvec2;
  331. /// 3 components vector aligned in memory of double-precision floating-point numbers.
  332. typedef aligned_highp_dvec3 aligned_dvec3;
  333. /// 4 components vector aligned in memory of double-precision floating-point numbers.
  334. typedef aligned_highp_dvec4 aligned_dvec4;
  335. /// 1 component vector tightly packed in memory of double-precision floating-point numbers.
  336. typedef packed_highp_dvec1 packed_dvec1;
  337. /// 2 components vector tightly packed in memory of double-precision floating-point numbers.
  338. typedef packed_highp_dvec2 packed_dvec2;
  339. /// 3 components vector tightly packed in memory of double-precision floating-point numbers.
  340. typedef packed_highp_dvec3 packed_dvec3;
  341. /// 4 components vector tightly packed in memory of double-precision floating-point numbers.
  342. typedef packed_highp_dvec4 packed_dvec4;
  343. #endif//GLM_PRECISION
  344. #if(defined(GLM_PRECISION_LOWP_INT))
  345. typedef aligned_lowp_ivec1 aligned_ivec1;
  346. typedef aligned_lowp_ivec2 aligned_ivec2;
  347. typedef aligned_lowp_ivec3 aligned_ivec3;
  348. typedef aligned_lowp_ivec4 aligned_ivec4;
  349. #elif(defined(GLM_PRECISION_MEDIUMP_INT))
  350. typedef aligned_mediump_ivec1 aligned_ivec1;
  351. typedef aligned_mediump_ivec2 aligned_ivec2;
  352. typedef aligned_mediump_ivec3 aligned_ivec3;
  353. typedef aligned_mediump_ivec4 aligned_ivec4;
  354. #else //defined(GLM_PRECISION_HIGHP_INT)
  355. /// 1 component vector aligned in memory of signed integer numbers.
  356. typedef aligned_highp_ivec1 aligned_ivec1;
  357. /// 2 components vector aligned in memory of signed integer numbers.
  358. typedef aligned_highp_ivec2 aligned_ivec2;
  359. /// 3 components vector aligned in memory of signed integer numbers.
  360. typedef aligned_highp_ivec3 aligned_ivec3;
  361. /// 4 components vector aligned in memory of signed integer numbers.
  362. typedef aligned_highp_ivec4 aligned_ivec4;
  363. /// 1 component vector tightly packed in memory of signed integer numbers.
  364. typedef packed_highp_ivec1 packed_ivec1;
  365. /// 2 components vector tightly packed in memory of signed integer numbers.
  366. typedef packed_highp_ivec2 packed_ivec2;
  367. /// 3 components vector tightly packed in memory of signed integer numbers.
  368. typedef packed_highp_ivec3 packed_ivec3;
  369. /// 4 components vector tightly packed in memory of signed integer numbers.
  370. typedef packed_highp_ivec4 packed_ivec4;
  371. #endif//GLM_PRECISION
  372. // -- Unsigned integer definition --
  373. #if(defined(GLM_PRECISION_LOWP_UINT))
  374. typedef aligned_lowp_uvec1 aligned_uvec1;
  375. typedef aligned_lowp_uvec2 aligned_uvec2;
  376. typedef aligned_lowp_uvec3 aligned_uvec3;
  377. typedef aligned_lowp_uvec4 aligned_uvec4;
  378. #elif(defined(GLM_PRECISION_MEDIUMP_UINT))
  379. typedef aligned_mediump_uvec1 aligned_uvec1;
  380. typedef aligned_mediump_uvec2 aligned_uvec2;
  381. typedef aligned_mediump_uvec3 aligned_uvec3;
  382. typedef aligned_mediump_uvec4 aligned_uvec4;
  383. #else //defined(GLM_PRECISION_HIGHP_UINT)
  384. /// 1 component vector aligned in memory of unsigned integer numbers.
  385. typedef aligned_highp_uvec1 aligned_uvec1;
  386. /// 2 components vector aligned in memory of unsigned integer numbers.
  387. typedef aligned_highp_uvec2 aligned_uvec2;
  388. /// 3 components vector aligned in memory of unsigned integer numbers.
  389. typedef aligned_highp_uvec3 aligned_uvec3;
  390. /// 4 components vector aligned in memory of unsigned integer numbers.
  391. typedef aligned_highp_uvec4 aligned_uvec4;
  392. /// 1 component vector tightly packed in memory of unsigned integer numbers.
  393. typedef packed_highp_uvec1 packed_uvec1;
  394. /// 2 components vector tightly packed in memory of unsigned integer numbers.
  395. typedef packed_highp_uvec2 packed_uvec2;
  396. /// 3 components vector tightly packed in memory of unsigned integer numbers.
  397. typedef packed_highp_uvec3 packed_uvec3;
  398. /// 4 components vector tightly packed in memory of unsigned integer numbers.
  399. typedef packed_highp_uvec4 packed_uvec4;
  400. #endif//GLM_PRECISION
  401. #if(defined(GLM_PRECISION_LOWP_BOOL))
  402. typedef aligned_lowp_bvec1 aligned_bvec1;
  403. typedef aligned_lowp_bvec2 aligned_bvec2;
  404. typedef aligned_lowp_bvec3 aligned_bvec3;
  405. typedef aligned_lowp_bvec4 aligned_bvec4;
  406. #elif(defined(GLM_PRECISION_MEDIUMP_BOOL))
  407. typedef aligned_mediump_bvec1 aligned_bvec1;
  408. typedef aligned_mediump_bvec2 aligned_bvec2;
  409. typedef aligned_mediump_bvec3 aligned_bvec3;
  410. typedef aligned_mediump_bvec4 aligned_bvec4;
  411. #else //defined(GLM_PRECISION_HIGHP_BOOL)
  412. /// 1 component vector aligned in memory of bool values.
  413. typedef aligned_highp_bvec1 aligned_bvec1;
  414. /// 2 components vector aligned in memory of bool values.
  415. typedef aligned_highp_bvec2 aligned_bvec2;
  416. /// 3 components vector aligned in memory of bool values.
  417. typedef aligned_highp_bvec3 aligned_bvec3;
  418. /// 4 components vector aligned in memory of bool values.
  419. typedef aligned_highp_bvec4 aligned_bvec4;
  420. /// 1 components vector tightly packed in memory of bool values.
  421. typedef packed_highp_bvec1 packed_bvec1;
  422. /// 2 components vector tightly packed in memory of bool values.
  423. typedef packed_highp_bvec2 packed_bvec2;
  424. /// 3 components vector tightly packed in memory of bool values.
  425. typedef packed_highp_bvec3 packed_bvec3;
  426. /// 4 components vector tightly packed in memory of bool values.
  427. typedef packed_highp_bvec4 packed_bvec4;
  428. #endif//GLM_PRECISION
  429. /// @}
  430. }//namespace glm