type_aligned.hpp 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982
  1. /// @ref gtx_type_aligned
  2. /// @file glm/gtx/type_aligned.hpp
  3. ///
  4. /// @see core (dependence)
  5. /// @see gtc_quaternion (dependence)
  6. ///
  7. /// @defgroup gtx_type_aligned GLM_GTX_type_aligned
  8. /// @ingroup gtx
  9. ///
  10. /// Include <glm/gtx/type_aligned.hpp> to use the features of this extension.
  11. ///
  12. /// Defines aligned types.
  13. #pragma once
  14. // Dependency:
  15. #include "../gtc/type_precision.hpp"
  16. #include "../gtc/quaternion.hpp"
  17. #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
  18. # ifndef GLM_ENABLE_EXPERIMENTAL
  19. # pragma message("GLM: GLM_GTX_type_aligned is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
  20. # else
  21. # pragma message("GLM: GLM_GTX_type_aligned extension included")
  22. # endif
  23. #endif
  24. namespace glm
  25. {
  26. ///////////////////////////
  27. // Signed int vector types
  28. /// @addtogroup gtx_type_aligned
  29. /// @{
  30. /// Low qualifier 8 bit signed integer aligned scalar type.
  31. /// @see gtx_type_aligned
  32. GLM_ALIGNED_TYPEDEF(lowp_int8, aligned_lowp_int8, 1);
  33. /// Low qualifier 16 bit signed integer aligned scalar type.
  34. /// @see gtx_type_aligned
  35. GLM_ALIGNED_TYPEDEF(lowp_int16, aligned_lowp_int16, 2);
  36. /// Low qualifier 32 bit signed integer aligned scalar type.
  37. /// @see gtx_type_aligned
  38. GLM_ALIGNED_TYPEDEF(lowp_int32, aligned_lowp_int32, 4);
  39. /// Low qualifier 64 bit signed integer aligned scalar type.
  40. /// @see gtx_type_aligned
  41. GLM_ALIGNED_TYPEDEF(lowp_int64, aligned_lowp_int64, 8);
  42. /// Low qualifier 8 bit signed integer aligned scalar type.
  43. /// @see gtx_type_aligned
  44. GLM_ALIGNED_TYPEDEF(lowp_int8_t, aligned_lowp_int8_t, 1);
  45. /// Low qualifier 16 bit signed integer aligned scalar type.
  46. /// @see gtx_type_aligned
  47. GLM_ALIGNED_TYPEDEF(lowp_int16_t, aligned_lowp_int16_t, 2);
  48. /// Low qualifier 32 bit signed integer aligned scalar type.
  49. /// @see gtx_type_aligned
  50. GLM_ALIGNED_TYPEDEF(lowp_int32_t, aligned_lowp_int32_t, 4);
  51. /// Low qualifier 64 bit signed integer aligned scalar type.
  52. /// @see gtx_type_aligned
  53. GLM_ALIGNED_TYPEDEF(lowp_int64_t, aligned_lowp_int64_t, 8);
  54. /// Low qualifier 8 bit signed integer aligned scalar type.
  55. /// @see gtx_type_aligned
  56. GLM_ALIGNED_TYPEDEF(lowp_i8, aligned_lowp_i8, 1);
  57. /// Low qualifier 16 bit signed integer aligned scalar type.
  58. /// @see gtx_type_aligned
  59. GLM_ALIGNED_TYPEDEF(lowp_i16, aligned_lowp_i16, 2);
  60. /// Low qualifier 32 bit signed integer aligned scalar type.
  61. /// @see gtx_type_aligned
  62. GLM_ALIGNED_TYPEDEF(lowp_i32, aligned_lowp_i32, 4);
  63. /// Low qualifier 64 bit signed integer aligned scalar type.
  64. /// @see gtx_type_aligned
  65. GLM_ALIGNED_TYPEDEF(lowp_i64, aligned_lowp_i64, 8);
  66. /// Medium qualifier 8 bit signed integer aligned scalar type.
  67. /// @see gtx_type_aligned
  68. GLM_ALIGNED_TYPEDEF(mediump_int8, aligned_mediump_int8, 1);
  69. /// Medium qualifier 16 bit signed integer aligned scalar type.
  70. /// @see gtx_type_aligned
  71. GLM_ALIGNED_TYPEDEF(mediump_int16, aligned_mediump_int16, 2);
  72. /// Medium qualifier 32 bit signed integer aligned scalar type.
  73. /// @see gtx_type_aligned
  74. GLM_ALIGNED_TYPEDEF(mediump_int32, aligned_mediump_int32, 4);
  75. /// Medium qualifier 64 bit signed integer aligned scalar type.
  76. /// @see gtx_type_aligned
  77. GLM_ALIGNED_TYPEDEF(mediump_int64, aligned_mediump_int64, 8);
  78. /// Medium qualifier 8 bit signed integer aligned scalar type.
  79. /// @see gtx_type_aligned
  80. GLM_ALIGNED_TYPEDEF(mediump_int8_t, aligned_mediump_int8_t, 1);
  81. /// Medium qualifier 16 bit signed integer aligned scalar type.
  82. /// @see gtx_type_aligned
  83. GLM_ALIGNED_TYPEDEF(mediump_int16_t, aligned_mediump_int16_t, 2);
  84. /// Medium qualifier 32 bit signed integer aligned scalar type.
  85. /// @see gtx_type_aligned
  86. GLM_ALIGNED_TYPEDEF(mediump_int32_t, aligned_mediump_int32_t, 4);
  87. /// Medium qualifier 64 bit signed integer aligned scalar type.
  88. /// @see gtx_type_aligned
  89. GLM_ALIGNED_TYPEDEF(mediump_int64_t, aligned_mediump_int64_t, 8);
  90. /// Medium qualifier 8 bit signed integer aligned scalar type.
  91. /// @see gtx_type_aligned
  92. GLM_ALIGNED_TYPEDEF(mediump_i8, aligned_mediump_i8, 1);
  93. /// Medium qualifier 16 bit signed integer aligned scalar type.
  94. /// @see gtx_type_aligned
  95. GLM_ALIGNED_TYPEDEF(mediump_i16, aligned_mediump_i16, 2);
  96. /// Medium qualifier 32 bit signed integer aligned scalar type.
  97. /// @see gtx_type_aligned
  98. GLM_ALIGNED_TYPEDEF(mediump_i32, aligned_mediump_i32, 4);
  99. /// Medium qualifier 64 bit signed integer aligned scalar type.
  100. /// @see gtx_type_aligned
  101. GLM_ALIGNED_TYPEDEF(mediump_i64, aligned_mediump_i64, 8);
  102. /// High qualifier 8 bit signed integer aligned scalar type.
  103. /// @see gtx_type_aligned
  104. GLM_ALIGNED_TYPEDEF(highp_int8, aligned_highp_int8, 1);
  105. /// High qualifier 16 bit signed integer aligned scalar type.
  106. /// @see gtx_type_aligned
  107. GLM_ALIGNED_TYPEDEF(highp_int16, aligned_highp_int16, 2);
  108. /// High qualifier 32 bit signed integer aligned scalar type.
  109. /// @see gtx_type_aligned
  110. GLM_ALIGNED_TYPEDEF(highp_int32, aligned_highp_int32, 4);
  111. /// High qualifier 64 bit signed integer aligned scalar type.
  112. /// @see gtx_type_aligned
  113. GLM_ALIGNED_TYPEDEF(highp_int64, aligned_highp_int64, 8);
  114. /// High qualifier 8 bit signed integer aligned scalar type.
  115. /// @see gtx_type_aligned
  116. GLM_ALIGNED_TYPEDEF(highp_int8_t, aligned_highp_int8_t, 1);
  117. /// High qualifier 16 bit signed integer aligned scalar type.
  118. /// @see gtx_type_aligned
  119. GLM_ALIGNED_TYPEDEF(highp_int16_t, aligned_highp_int16_t, 2);
  120. /// High qualifier 32 bit signed integer aligned scalar type.
  121. /// @see gtx_type_aligned
  122. GLM_ALIGNED_TYPEDEF(highp_int32_t, aligned_highp_int32_t, 4);
  123. /// High qualifier 64 bit signed integer aligned scalar type.
  124. /// @see gtx_type_aligned
  125. GLM_ALIGNED_TYPEDEF(highp_int64_t, aligned_highp_int64_t, 8);
  126. /// High qualifier 8 bit signed integer aligned scalar type.
  127. /// @see gtx_type_aligned
  128. GLM_ALIGNED_TYPEDEF(highp_i8, aligned_highp_i8, 1);
  129. /// High qualifier 16 bit signed integer aligned scalar type.
  130. /// @see gtx_type_aligned
  131. GLM_ALIGNED_TYPEDEF(highp_i16, aligned_highp_i16, 2);
  132. /// High qualifier 32 bit signed integer aligned scalar type.
  133. /// @see gtx_type_aligned
  134. GLM_ALIGNED_TYPEDEF(highp_i32, aligned_highp_i32, 4);
  135. /// High qualifier 64 bit signed integer aligned scalar type.
  136. /// @see gtx_type_aligned
  137. GLM_ALIGNED_TYPEDEF(highp_i64, aligned_highp_i64, 8);
  138. /// Default qualifier 8 bit signed integer aligned scalar type.
  139. /// @see gtx_type_aligned
  140. GLM_ALIGNED_TYPEDEF(int8, aligned_int8, 1);
  141. /// Default qualifier 16 bit signed integer aligned scalar type.
  142. /// @see gtx_type_aligned
  143. GLM_ALIGNED_TYPEDEF(int16, aligned_int16, 2);
  144. /// Default qualifier 32 bit signed integer aligned scalar type.
  145. /// @see gtx_type_aligned
  146. GLM_ALIGNED_TYPEDEF(int32, aligned_int32, 4);
  147. /// Default qualifier 64 bit signed integer aligned scalar type.
  148. /// @see gtx_type_aligned
  149. GLM_ALIGNED_TYPEDEF(int64, aligned_int64, 8);
  150. /// Default qualifier 8 bit signed integer aligned scalar type.
  151. /// @see gtx_type_aligned
  152. GLM_ALIGNED_TYPEDEF(int8_t, aligned_int8_t, 1);
  153. /// Default qualifier 16 bit signed integer aligned scalar type.
  154. /// @see gtx_type_aligned
  155. GLM_ALIGNED_TYPEDEF(int16_t, aligned_int16_t, 2);
  156. /// Default qualifier 32 bit signed integer aligned scalar type.
  157. /// @see gtx_type_aligned
  158. GLM_ALIGNED_TYPEDEF(int32_t, aligned_int32_t, 4);
  159. /// Default qualifier 64 bit signed integer aligned scalar type.
  160. /// @see gtx_type_aligned
  161. GLM_ALIGNED_TYPEDEF(int64_t, aligned_int64_t, 8);
  162. /// Default qualifier 8 bit signed integer aligned scalar type.
  163. /// @see gtx_type_aligned
  164. GLM_ALIGNED_TYPEDEF(i8, aligned_i8, 1);
  165. /// Default qualifier 16 bit signed integer aligned scalar type.
  166. /// @see gtx_type_aligned
  167. GLM_ALIGNED_TYPEDEF(i16, aligned_i16, 2);
  168. /// Default qualifier 32 bit signed integer aligned scalar type.
  169. /// @see gtx_type_aligned
  170. GLM_ALIGNED_TYPEDEF(i32, aligned_i32, 4);
  171. /// Default qualifier 64 bit signed integer aligned scalar type.
  172. /// @see gtx_type_aligned
  173. GLM_ALIGNED_TYPEDEF(i64, aligned_i64, 8);
  174. /// Default qualifier 32 bit signed integer aligned scalar type.
  175. /// @see gtx_type_aligned
  176. GLM_ALIGNED_TYPEDEF(ivec1, aligned_ivec1, 4);
  177. /// Default qualifier 32 bit signed integer aligned vector of 2 components type.
  178. /// @see gtx_type_aligned
  179. GLM_ALIGNED_TYPEDEF(ivec2, aligned_ivec2, 8);
  180. /// Default qualifier 32 bit signed integer aligned vector of 3 components type.
  181. /// @see gtx_type_aligned
  182. GLM_ALIGNED_TYPEDEF(ivec3, aligned_ivec3, 16);
  183. /// Default qualifier 32 bit signed integer aligned vector of 4 components type.
  184. /// @see gtx_type_aligned
  185. GLM_ALIGNED_TYPEDEF(ivec4, aligned_ivec4, 16);
  186. /// Default qualifier 8 bit signed integer aligned scalar type.
  187. /// @see gtx_type_aligned
  188. GLM_ALIGNED_TYPEDEF(i8vec1, aligned_i8vec1, 1);
  189. /// Default qualifier 8 bit signed integer aligned vector of 2 components type.
  190. /// @see gtx_type_aligned
  191. GLM_ALIGNED_TYPEDEF(i8vec2, aligned_i8vec2, 2);
  192. /// Default qualifier 8 bit signed integer aligned vector of 3 components type.
  193. /// @see gtx_type_aligned
  194. GLM_ALIGNED_TYPEDEF(i8vec3, aligned_i8vec3, 4);
  195. /// Default qualifier 8 bit signed integer aligned vector of 4 components type.
  196. /// @see gtx_type_aligned
  197. GLM_ALIGNED_TYPEDEF(i8vec4, aligned_i8vec4, 4);
  198. /// Default qualifier 16 bit signed integer aligned scalar type.
  199. /// @see gtx_type_aligned
  200. GLM_ALIGNED_TYPEDEF(i16vec1, aligned_i16vec1, 2);
  201. /// Default qualifier 16 bit signed integer aligned vector of 2 components type.
  202. /// @see gtx_type_aligned
  203. GLM_ALIGNED_TYPEDEF(i16vec2, aligned_i16vec2, 4);
  204. /// Default qualifier 16 bit signed integer aligned vector of 3 components type.
  205. /// @see gtx_type_aligned
  206. GLM_ALIGNED_TYPEDEF(i16vec3, aligned_i16vec3, 8);
  207. /// Default qualifier 16 bit signed integer aligned vector of 4 components type.
  208. /// @see gtx_type_aligned
  209. GLM_ALIGNED_TYPEDEF(i16vec4, aligned_i16vec4, 8);
  210. /// Default qualifier 32 bit signed integer aligned scalar type.
  211. /// @see gtx_type_aligned
  212. GLM_ALIGNED_TYPEDEF(i32vec1, aligned_i32vec1, 4);
  213. /// Default qualifier 32 bit signed integer aligned vector of 2 components type.
  214. /// @see gtx_type_aligned
  215. GLM_ALIGNED_TYPEDEF(i32vec2, aligned_i32vec2, 8);
  216. /// Default qualifier 32 bit signed integer aligned vector of 3 components type.
  217. /// @see gtx_type_aligned
  218. GLM_ALIGNED_TYPEDEF(i32vec3, aligned_i32vec3, 16);
  219. /// Default qualifier 32 bit signed integer aligned vector of 4 components type.
  220. /// @see gtx_type_aligned
  221. GLM_ALIGNED_TYPEDEF(i32vec4, aligned_i32vec4, 16);
  222. /// Default qualifier 64 bit signed integer aligned scalar type.
  223. /// @see gtx_type_aligned
  224. GLM_ALIGNED_TYPEDEF(i64vec1, aligned_i64vec1, 8);
  225. /// Default qualifier 64 bit signed integer aligned vector of 2 components type.
  226. /// @see gtx_type_aligned
  227. GLM_ALIGNED_TYPEDEF(i64vec2, aligned_i64vec2, 16);
  228. /// Default qualifier 64 bit signed integer aligned vector of 3 components type.
  229. /// @see gtx_type_aligned
  230. GLM_ALIGNED_TYPEDEF(i64vec3, aligned_i64vec3, 32);
  231. /// Default qualifier 64 bit signed integer aligned vector of 4 components type.
  232. /// @see gtx_type_aligned
  233. GLM_ALIGNED_TYPEDEF(i64vec4, aligned_i64vec4, 32);
  234. /////////////////////////////
  235. // Unsigned int vector types
  236. /// Low qualifier 8 bit unsigned integer aligned scalar type.
  237. /// @see gtx_type_aligned
  238. GLM_ALIGNED_TYPEDEF(lowp_uint8, aligned_lowp_uint8, 1);
  239. /// Low qualifier 16 bit unsigned integer aligned scalar type.
  240. /// @see gtx_type_aligned
  241. GLM_ALIGNED_TYPEDEF(lowp_uint16, aligned_lowp_uint16, 2);
  242. /// Low qualifier 32 bit unsigned integer aligned scalar type.
  243. /// @see gtx_type_aligned
  244. GLM_ALIGNED_TYPEDEF(lowp_uint32, aligned_lowp_uint32, 4);
  245. /// Low qualifier 64 bit unsigned integer aligned scalar type.
  246. /// @see gtx_type_aligned
  247. GLM_ALIGNED_TYPEDEF(lowp_uint64, aligned_lowp_uint64, 8);
  248. /// Low qualifier 8 bit unsigned integer aligned scalar type.
  249. /// @see gtx_type_aligned
  250. GLM_ALIGNED_TYPEDEF(lowp_uint8_t, aligned_lowp_uint8_t, 1);
  251. /// Low qualifier 16 bit unsigned integer aligned scalar type.
  252. /// @see gtx_type_aligned
  253. GLM_ALIGNED_TYPEDEF(lowp_uint16_t, aligned_lowp_uint16_t, 2);
  254. /// Low qualifier 32 bit unsigned integer aligned scalar type.
  255. /// @see gtx_type_aligned
  256. GLM_ALIGNED_TYPEDEF(lowp_uint32_t, aligned_lowp_uint32_t, 4);
  257. /// Low qualifier 64 bit unsigned integer aligned scalar type.
  258. /// @see gtx_type_aligned
  259. GLM_ALIGNED_TYPEDEF(lowp_uint64_t, aligned_lowp_uint64_t, 8);
  260. /// Low qualifier 8 bit unsigned integer aligned scalar type.
  261. /// @see gtx_type_aligned
  262. GLM_ALIGNED_TYPEDEF(lowp_u8, aligned_lowp_u8, 1);
  263. /// Low qualifier 16 bit unsigned integer aligned scalar type.
  264. /// @see gtx_type_aligned
  265. GLM_ALIGNED_TYPEDEF(lowp_u16, aligned_lowp_u16, 2);
  266. /// Low qualifier 32 bit unsigned integer aligned scalar type.
  267. /// @see gtx_type_aligned
  268. GLM_ALIGNED_TYPEDEF(lowp_u32, aligned_lowp_u32, 4);
  269. /// Low qualifier 64 bit unsigned integer aligned scalar type.
  270. /// @see gtx_type_aligned
  271. GLM_ALIGNED_TYPEDEF(lowp_u64, aligned_lowp_u64, 8);
  272. /// Medium qualifier 8 bit unsigned integer aligned scalar type.
  273. /// @see gtx_type_aligned
  274. GLM_ALIGNED_TYPEDEF(mediump_uint8, aligned_mediump_uint8, 1);
  275. /// Medium qualifier 16 bit unsigned integer aligned scalar type.
  276. /// @see gtx_type_aligned
  277. GLM_ALIGNED_TYPEDEF(mediump_uint16, aligned_mediump_uint16, 2);
  278. /// Medium qualifier 32 bit unsigned integer aligned scalar type.
  279. /// @see gtx_type_aligned
  280. GLM_ALIGNED_TYPEDEF(mediump_uint32, aligned_mediump_uint32, 4);
  281. /// Medium qualifier 64 bit unsigned integer aligned scalar type.
  282. /// @see gtx_type_aligned
  283. GLM_ALIGNED_TYPEDEF(mediump_uint64, aligned_mediump_uint64, 8);
  284. /// Medium qualifier 8 bit unsigned integer aligned scalar type.
  285. /// @see gtx_type_aligned
  286. GLM_ALIGNED_TYPEDEF(mediump_uint8_t, aligned_mediump_uint8_t, 1);
  287. /// Medium qualifier 16 bit unsigned integer aligned scalar type.
  288. /// @see gtx_type_aligned
  289. GLM_ALIGNED_TYPEDEF(mediump_uint16_t, aligned_mediump_uint16_t, 2);
  290. /// Medium qualifier 32 bit unsigned integer aligned scalar type.
  291. /// @see gtx_type_aligned
  292. GLM_ALIGNED_TYPEDEF(mediump_uint32_t, aligned_mediump_uint32_t, 4);
  293. /// Medium qualifier 64 bit unsigned integer aligned scalar type.
  294. /// @see gtx_type_aligned
  295. GLM_ALIGNED_TYPEDEF(mediump_uint64_t, aligned_mediump_uint64_t, 8);
  296. /// Medium qualifier 8 bit unsigned integer aligned scalar type.
  297. /// @see gtx_type_aligned
  298. GLM_ALIGNED_TYPEDEF(mediump_u8, aligned_mediump_u8, 1);
  299. /// Medium qualifier 16 bit unsigned integer aligned scalar type.
  300. /// @see gtx_type_aligned
  301. GLM_ALIGNED_TYPEDEF(mediump_u16, aligned_mediump_u16, 2);
  302. /// Medium qualifier 32 bit unsigned integer aligned scalar type.
  303. /// @see gtx_type_aligned
  304. GLM_ALIGNED_TYPEDEF(mediump_u32, aligned_mediump_u32, 4);
  305. /// Medium qualifier 64 bit unsigned integer aligned scalar type.
  306. /// @see gtx_type_aligned
  307. GLM_ALIGNED_TYPEDEF(mediump_u64, aligned_mediump_u64, 8);
  308. /// High qualifier 8 bit unsigned integer aligned scalar type.
  309. /// @see gtx_type_aligned
  310. GLM_ALIGNED_TYPEDEF(highp_uint8, aligned_highp_uint8, 1);
  311. /// High qualifier 16 bit unsigned integer aligned scalar type.
  312. /// @see gtx_type_aligned
  313. GLM_ALIGNED_TYPEDEF(highp_uint16, aligned_highp_uint16, 2);
  314. /// High qualifier 32 bit unsigned integer aligned scalar type.
  315. /// @see gtx_type_aligned
  316. GLM_ALIGNED_TYPEDEF(highp_uint32, aligned_highp_uint32, 4);
  317. /// High qualifier 64 bit unsigned integer aligned scalar type.
  318. /// @see gtx_type_aligned
  319. GLM_ALIGNED_TYPEDEF(highp_uint64, aligned_highp_uint64, 8);
  320. /// High qualifier 8 bit unsigned integer aligned scalar type.
  321. /// @see gtx_type_aligned
  322. GLM_ALIGNED_TYPEDEF(highp_uint8_t, aligned_highp_uint8_t, 1);
  323. /// High qualifier 16 bit unsigned integer aligned scalar type.
  324. /// @see gtx_type_aligned
  325. GLM_ALIGNED_TYPEDEF(highp_uint16_t, aligned_highp_uint16_t, 2);
  326. /// High qualifier 32 bit unsigned integer aligned scalar type.
  327. /// @see gtx_type_aligned
  328. GLM_ALIGNED_TYPEDEF(highp_uint32_t, aligned_highp_uint32_t, 4);
  329. /// High qualifier 64 bit unsigned integer aligned scalar type.
  330. /// @see gtx_type_aligned
  331. GLM_ALIGNED_TYPEDEF(highp_uint64_t, aligned_highp_uint64_t, 8);
  332. /// High qualifier 8 bit unsigned integer aligned scalar type.
  333. /// @see gtx_type_aligned
  334. GLM_ALIGNED_TYPEDEF(highp_u8, aligned_highp_u8, 1);
  335. /// High qualifier 16 bit unsigned integer aligned scalar type.
  336. /// @see gtx_type_aligned
  337. GLM_ALIGNED_TYPEDEF(highp_u16, aligned_highp_u16, 2);
  338. /// High qualifier 32 bit unsigned integer aligned scalar type.
  339. /// @see gtx_type_aligned
  340. GLM_ALIGNED_TYPEDEF(highp_u32, aligned_highp_u32, 4);
  341. /// High qualifier 64 bit unsigned integer aligned scalar type.
  342. /// @see gtx_type_aligned
  343. GLM_ALIGNED_TYPEDEF(highp_u64, aligned_highp_u64, 8);
  344. /// Default qualifier 8 bit unsigned integer aligned scalar type.
  345. /// @see gtx_type_aligned
  346. GLM_ALIGNED_TYPEDEF(uint8, aligned_uint8, 1);
  347. /// Default qualifier 16 bit unsigned integer aligned scalar type.
  348. /// @see gtx_type_aligned
  349. GLM_ALIGNED_TYPEDEF(uint16, aligned_uint16, 2);
  350. /// Default qualifier 32 bit unsigned integer aligned scalar type.
  351. /// @see gtx_type_aligned
  352. GLM_ALIGNED_TYPEDEF(uint32, aligned_uint32, 4);
  353. /// Default qualifier 64 bit unsigned integer aligned scalar type.
  354. /// @see gtx_type_aligned
  355. GLM_ALIGNED_TYPEDEF(uint64, aligned_uint64, 8);
  356. /// Default qualifier 8 bit unsigned integer aligned scalar type.
  357. /// @see gtx_type_aligned
  358. GLM_ALIGNED_TYPEDEF(uint8_t, aligned_uint8_t, 1);
  359. /// Default qualifier 16 bit unsigned integer aligned scalar type.
  360. /// @see gtx_type_aligned
  361. GLM_ALIGNED_TYPEDEF(uint16_t, aligned_uint16_t, 2);
  362. /// Default qualifier 32 bit unsigned integer aligned scalar type.
  363. /// @see gtx_type_aligned
  364. GLM_ALIGNED_TYPEDEF(uint32_t, aligned_uint32_t, 4);
  365. /// Default qualifier 64 bit unsigned integer aligned scalar type.
  366. /// @see gtx_type_aligned
  367. GLM_ALIGNED_TYPEDEF(uint64_t, aligned_uint64_t, 8);
  368. /// Default qualifier 8 bit unsigned integer aligned scalar type.
  369. /// @see gtx_type_aligned
  370. GLM_ALIGNED_TYPEDEF(u8, aligned_u8, 1);
  371. /// Default qualifier 16 bit unsigned integer aligned scalar type.
  372. /// @see gtx_type_aligned
  373. GLM_ALIGNED_TYPEDEF(u16, aligned_u16, 2);
  374. /// Default qualifier 32 bit unsigned integer aligned scalar type.
  375. /// @see gtx_type_aligned
  376. GLM_ALIGNED_TYPEDEF(u32, aligned_u32, 4);
  377. /// Default qualifier 64 bit unsigned integer aligned scalar type.
  378. /// @see gtx_type_aligned
  379. GLM_ALIGNED_TYPEDEF(u64, aligned_u64, 8);
  380. /// Default qualifier 32 bit unsigned integer aligned scalar type.
  381. /// @see gtx_type_aligned
  382. GLM_ALIGNED_TYPEDEF(uvec1, aligned_uvec1, 4);
  383. /// Default qualifier 32 bit unsigned integer aligned vector of 2 components type.
  384. /// @see gtx_type_aligned
  385. GLM_ALIGNED_TYPEDEF(uvec2, aligned_uvec2, 8);
  386. /// Default qualifier 32 bit unsigned integer aligned vector of 3 components type.
  387. /// @see gtx_type_aligned
  388. GLM_ALIGNED_TYPEDEF(uvec3, aligned_uvec3, 16);
  389. /// Default qualifier 32 bit unsigned integer aligned vector of 4 components type.
  390. /// @see gtx_type_aligned
  391. GLM_ALIGNED_TYPEDEF(uvec4, aligned_uvec4, 16);
  392. /// Default qualifier 8 bit unsigned integer aligned scalar type.
  393. /// @see gtx_type_aligned
  394. GLM_ALIGNED_TYPEDEF(u8vec1, aligned_u8vec1, 1);
  395. /// Default qualifier 8 bit unsigned integer aligned vector of 2 components type.
  396. /// @see gtx_type_aligned
  397. GLM_ALIGNED_TYPEDEF(u8vec2, aligned_u8vec2, 2);
  398. /// Default qualifier 8 bit unsigned integer aligned vector of 3 components type.
  399. /// @see gtx_type_aligned
  400. GLM_ALIGNED_TYPEDEF(u8vec3, aligned_u8vec3, 4);
  401. /// Default qualifier 8 bit unsigned integer aligned vector of 4 components type.
  402. /// @see gtx_type_aligned
  403. GLM_ALIGNED_TYPEDEF(u8vec4, aligned_u8vec4, 4);
  404. /// Default qualifier 16 bit unsigned integer aligned scalar type.
  405. /// @see gtx_type_aligned
  406. GLM_ALIGNED_TYPEDEF(u16vec1, aligned_u16vec1, 2);
  407. /// Default qualifier 16 bit unsigned integer aligned vector of 2 components type.
  408. /// @see gtx_type_aligned
  409. GLM_ALIGNED_TYPEDEF(u16vec2, aligned_u16vec2, 4);
  410. /// Default qualifier 16 bit unsigned integer aligned vector of 3 components type.
  411. /// @see gtx_type_aligned
  412. GLM_ALIGNED_TYPEDEF(u16vec3, aligned_u16vec3, 8);
  413. /// Default qualifier 16 bit unsigned integer aligned vector of 4 components type.
  414. /// @see gtx_type_aligned
  415. GLM_ALIGNED_TYPEDEF(u16vec4, aligned_u16vec4, 8);
  416. /// Default qualifier 32 bit unsigned integer aligned scalar type.
  417. /// @see gtx_type_aligned
  418. GLM_ALIGNED_TYPEDEF(u32vec1, aligned_u32vec1, 4);
  419. /// Default qualifier 32 bit unsigned integer aligned vector of 2 components type.
  420. /// @see gtx_type_aligned
  421. GLM_ALIGNED_TYPEDEF(u32vec2, aligned_u32vec2, 8);
  422. /// Default qualifier 32 bit unsigned integer aligned vector of 3 components type.
  423. /// @see gtx_type_aligned
  424. GLM_ALIGNED_TYPEDEF(u32vec3, aligned_u32vec3, 16);
  425. /// Default qualifier 32 bit unsigned integer aligned vector of 4 components type.
  426. /// @see gtx_type_aligned
  427. GLM_ALIGNED_TYPEDEF(u32vec4, aligned_u32vec4, 16);
  428. /// Default qualifier 64 bit unsigned integer aligned scalar type.
  429. /// @see gtx_type_aligned
  430. GLM_ALIGNED_TYPEDEF(u64vec1, aligned_u64vec1, 8);
  431. /// Default qualifier 64 bit unsigned integer aligned vector of 2 components type.
  432. /// @see gtx_type_aligned
  433. GLM_ALIGNED_TYPEDEF(u64vec2, aligned_u64vec2, 16);
  434. /// Default qualifier 64 bit unsigned integer aligned vector of 3 components type.
  435. /// @see gtx_type_aligned
  436. GLM_ALIGNED_TYPEDEF(u64vec3, aligned_u64vec3, 32);
  437. /// Default qualifier 64 bit unsigned integer aligned vector of 4 components type.
  438. /// @see gtx_type_aligned
  439. GLM_ALIGNED_TYPEDEF(u64vec4, aligned_u64vec4, 32);
  440. //////////////////////
  441. // Float vector types
  442. /// 32 bit single-qualifier floating-point aligned scalar.
  443. /// @see gtx_type_aligned
  444. GLM_ALIGNED_TYPEDEF(float32, aligned_float32, 4);
  445. /// 32 bit single-qualifier floating-point aligned scalar.
  446. /// @see gtx_type_aligned
  447. GLM_ALIGNED_TYPEDEF(float32_t, aligned_float32_t, 4);
  448. /// 32 bit single-qualifier floating-point aligned scalar.
  449. /// @see gtx_type_aligned
  450. GLM_ALIGNED_TYPEDEF(float32, aligned_f32, 4);
  451. # ifndef GLM_FORCE_SINGLE_ONLY
  452. /// 64 bit double-qualifier floating-point aligned scalar.
  453. /// @see gtx_type_aligned
  454. GLM_ALIGNED_TYPEDEF(float64, aligned_float64, 8);
  455. /// 64 bit double-qualifier floating-point aligned scalar.
  456. /// @see gtx_type_aligned
  457. GLM_ALIGNED_TYPEDEF(float64_t, aligned_float64_t, 8);
  458. /// 64 bit double-qualifier floating-point aligned scalar.
  459. /// @see gtx_type_aligned
  460. GLM_ALIGNED_TYPEDEF(float64, aligned_f64, 8);
  461. # endif//GLM_FORCE_SINGLE_ONLY
  462. /// Single-qualifier floating-point aligned vector of 1 component.
  463. /// @see gtx_type_aligned
  464. GLM_ALIGNED_TYPEDEF(vec1, aligned_vec1, 4);
  465. /// Single-qualifier floating-point aligned vector of 2 components.
  466. /// @see gtx_type_aligned
  467. GLM_ALIGNED_TYPEDEF(vec2, aligned_vec2, 8);
  468. /// Single-qualifier floating-point aligned vector of 3 components.
  469. /// @see gtx_type_aligned
  470. GLM_ALIGNED_TYPEDEF(vec3, aligned_vec3, 16);
  471. /// Single-qualifier floating-point aligned vector of 4 components.
  472. /// @see gtx_type_aligned
  473. GLM_ALIGNED_TYPEDEF(vec4, aligned_vec4, 16);
  474. /// Single-qualifier floating-point aligned vector of 1 component.
  475. /// @see gtx_type_aligned
  476. GLM_ALIGNED_TYPEDEF(fvec1, aligned_fvec1, 4);
  477. /// Single-qualifier floating-point aligned vector of 2 components.
  478. /// @see gtx_type_aligned
  479. GLM_ALIGNED_TYPEDEF(fvec2, aligned_fvec2, 8);
  480. /// Single-qualifier floating-point aligned vector of 3 components.
  481. /// @see gtx_type_aligned
  482. GLM_ALIGNED_TYPEDEF(fvec3, aligned_fvec3, 16);
  483. /// Single-qualifier floating-point aligned vector of 4 components.
  484. /// @see gtx_type_aligned
  485. GLM_ALIGNED_TYPEDEF(fvec4, aligned_fvec4, 16);
  486. /// Single-qualifier floating-point aligned vector of 1 component.
  487. /// @see gtx_type_aligned
  488. GLM_ALIGNED_TYPEDEF(f32vec1, aligned_f32vec1, 4);
  489. /// Single-qualifier floating-point aligned vector of 2 components.
  490. /// @see gtx_type_aligned
  491. GLM_ALIGNED_TYPEDEF(f32vec2, aligned_f32vec2, 8);
  492. /// Single-qualifier floating-point aligned vector of 3 components.
  493. /// @see gtx_type_aligned
  494. GLM_ALIGNED_TYPEDEF(f32vec3, aligned_f32vec3, 16);
  495. /// Single-qualifier floating-point aligned vector of 4 components.
  496. /// @see gtx_type_aligned
  497. GLM_ALIGNED_TYPEDEF(f32vec4, aligned_f32vec4, 16);
  498. /// Double-qualifier floating-point aligned vector of 1 component.
  499. /// @see gtx_type_aligned
  500. GLM_ALIGNED_TYPEDEF(dvec1, aligned_dvec1, 8);
  501. /// Double-qualifier floating-point aligned vector of 2 components.
  502. /// @see gtx_type_aligned
  503. GLM_ALIGNED_TYPEDEF(dvec2, aligned_dvec2, 16);
  504. /// Double-qualifier floating-point aligned vector of 3 components.
  505. /// @see gtx_type_aligned
  506. GLM_ALIGNED_TYPEDEF(dvec3, aligned_dvec3, 32);
  507. /// Double-qualifier floating-point aligned vector of 4 components.
  508. /// @see gtx_type_aligned
  509. GLM_ALIGNED_TYPEDEF(dvec4, aligned_dvec4, 32);
  510. # ifndef GLM_FORCE_SINGLE_ONLY
  511. /// Double-qualifier floating-point aligned vector of 1 component.
  512. /// @see gtx_type_aligned
  513. GLM_ALIGNED_TYPEDEF(f64vec1, aligned_f64vec1, 8);
  514. /// Double-qualifier floating-point aligned vector of 2 components.
  515. /// @see gtx_type_aligned
  516. GLM_ALIGNED_TYPEDEF(f64vec2, aligned_f64vec2, 16);
  517. /// Double-qualifier floating-point aligned vector of 3 components.
  518. /// @see gtx_type_aligned
  519. GLM_ALIGNED_TYPEDEF(f64vec3, aligned_f64vec3, 32);
  520. /// Double-qualifier floating-point aligned vector of 4 components.
  521. /// @see gtx_type_aligned
  522. GLM_ALIGNED_TYPEDEF(f64vec4, aligned_f64vec4, 32);
  523. # endif//GLM_FORCE_SINGLE_ONLY
  524. //////////////////////
  525. // Float matrix types
  526. /// Single-qualifier floating-point aligned 1x1 matrix.
  527. /// @see gtx_type_aligned
  528. //typedef detail::tmat1<f32> mat1;
  529. /// Single-qualifier floating-point aligned 2x2 matrix.
  530. /// @see gtx_type_aligned
  531. GLM_ALIGNED_TYPEDEF(mat2, aligned_mat2, 16);
  532. /// Single-qualifier floating-point aligned 3x3 matrix.
  533. /// @see gtx_type_aligned
  534. GLM_ALIGNED_TYPEDEF(mat3, aligned_mat3, 16);
  535. /// Single-qualifier floating-point aligned 4x4 matrix.
  536. /// @see gtx_type_aligned
  537. GLM_ALIGNED_TYPEDEF(mat4, aligned_mat4, 16);
  538. /// Single-qualifier floating-point aligned 1x1 matrix.
  539. /// @see gtx_type_aligned
  540. //typedef detail::tmat1x1<f32> mat1;
  541. /// Single-qualifier floating-point aligned 2x2 matrix.
  542. /// @see gtx_type_aligned
  543. GLM_ALIGNED_TYPEDEF(mat2x2, aligned_mat2x2, 16);
  544. /// Single-qualifier floating-point aligned 3x3 matrix.
  545. /// @see gtx_type_aligned
  546. GLM_ALIGNED_TYPEDEF(mat3x3, aligned_mat3x3, 16);
  547. /// Single-qualifier floating-point aligned 4x4 matrix.
  548. /// @see gtx_type_aligned
  549. GLM_ALIGNED_TYPEDEF(mat4x4, aligned_mat4x4, 16);
  550. /// Single-qualifier floating-point aligned 1x1 matrix.
  551. /// @see gtx_type_aligned
  552. //typedef detail::tmat1x1<f32> fmat1;
  553. /// Single-qualifier floating-point aligned 2x2 matrix.
  554. /// @see gtx_type_aligned
  555. GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2, 16);
  556. /// Single-qualifier floating-point aligned 3x3 matrix.
  557. /// @see gtx_type_aligned
  558. GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3, 16);
  559. /// Single-qualifier floating-point aligned 4x4 matrix.
  560. /// @see gtx_type_aligned
  561. GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4, 16);
  562. /// Single-qualifier floating-point aligned 1x1 matrix.
  563. /// @see gtx_type_aligned
  564. //typedef f32 fmat1x1;
  565. /// Single-qualifier floating-point aligned 2x2 matrix.
  566. /// @see gtx_type_aligned
  567. GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2x2, 16);
  568. /// Single-qualifier floating-point aligned 2x3 matrix.
  569. /// @see gtx_type_aligned
  570. GLM_ALIGNED_TYPEDEF(fmat2x3, aligned_fmat2x3, 16);
  571. /// Single-qualifier floating-point aligned 2x4 matrix.
  572. /// @see gtx_type_aligned
  573. GLM_ALIGNED_TYPEDEF(fmat2x4, aligned_fmat2x4, 16);
  574. /// Single-qualifier floating-point aligned 3x2 matrix.
  575. /// @see gtx_type_aligned
  576. GLM_ALIGNED_TYPEDEF(fmat3x2, aligned_fmat3x2, 16);
  577. /// Single-qualifier floating-point aligned 3x3 matrix.
  578. /// @see gtx_type_aligned
  579. GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3x3, 16);
  580. /// Single-qualifier floating-point aligned 3x4 matrix.
  581. /// @see gtx_type_aligned
  582. GLM_ALIGNED_TYPEDEF(fmat3x4, aligned_fmat3x4, 16);
  583. /// Single-qualifier floating-point aligned 4x2 matrix.
  584. /// @see gtx_type_aligned
  585. GLM_ALIGNED_TYPEDEF(fmat4x2, aligned_fmat4x2, 16);
  586. /// Single-qualifier floating-point aligned 4x3 matrix.
  587. /// @see gtx_type_aligned
  588. GLM_ALIGNED_TYPEDEF(fmat4x3, aligned_fmat4x3, 16);
  589. /// Single-qualifier floating-point aligned 4x4 matrix.
  590. /// @see gtx_type_aligned
  591. GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4x4, 16);
  592. /// Single-qualifier floating-point aligned 1x1 matrix.
  593. /// @see gtx_type_aligned
  594. //typedef detail::tmat1x1<f32, defaultp> f32mat1;
  595. /// Single-qualifier floating-point aligned 2x2 matrix.
  596. /// @see gtx_type_aligned
  597. GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2, 16);
  598. /// Single-qualifier floating-point aligned 3x3 matrix.
  599. /// @see gtx_type_aligned
  600. GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3, 16);
  601. /// Single-qualifier floating-point aligned 4x4 matrix.
  602. /// @see gtx_type_aligned
  603. GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4, 16);
  604. /// Single-qualifier floating-point aligned 1x1 matrix.
  605. /// @see gtx_type_aligned
  606. //typedef f32 f32mat1x1;
  607. /// Single-qualifier floating-point aligned 2x2 matrix.
  608. /// @see gtx_type_aligned
  609. GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2x2, 16);
  610. /// Single-qualifier floating-point aligned 2x3 matrix.
  611. /// @see gtx_type_aligned
  612. GLM_ALIGNED_TYPEDEF(f32mat2x3, aligned_f32mat2x3, 16);
  613. /// Single-qualifier floating-point aligned 2x4 matrix.
  614. /// @see gtx_type_aligned
  615. GLM_ALIGNED_TYPEDEF(f32mat2x4, aligned_f32mat2x4, 16);
  616. /// Single-qualifier floating-point aligned 3x2 matrix.
  617. /// @see gtx_type_aligned
  618. GLM_ALIGNED_TYPEDEF(f32mat3x2, aligned_f32mat3x2, 16);
  619. /// Single-qualifier floating-point aligned 3x3 matrix.
  620. /// @see gtx_type_aligned
  621. GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3x3, 16);
  622. /// Single-qualifier floating-point aligned 3x4 matrix.
  623. /// @see gtx_type_aligned
  624. GLM_ALIGNED_TYPEDEF(f32mat3x4, aligned_f32mat3x4, 16);
  625. /// Single-qualifier floating-point aligned 4x2 matrix.
  626. /// @see gtx_type_aligned
  627. GLM_ALIGNED_TYPEDEF(f32mat4x2, aligned_f32mat4x2, 16);
  628. /// Single-qualifier floating-point aligned 4x3 matrix.
  629. /// @see gtx_type_aligned
  630. GLM_ALIGNED_TYPEDEF(f32mat4x3, aligned_f32mat4x3, 16);
  631. /// Single-qualifier floating-point aligned 4x4 matrix.
  632. /// @see gtx_type_aligned
  633. GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4x4, 16);
  634. # ifndef GLM_FORCE_SINGLE_ONLY
  635. /// Double-qualifier floating-point aligned 1x1 matrix.
  636. /// @see gtx_type_aligned
  637. //typedef detail::tmat1x1<f64, defaultp> f64mat1;
  638. /// Double-qualifier floating-point aligned 2x2 matrix.
  639. /// @see gtx_type_aligned
  640. GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2, 32);
  641. /// Double-qualifier floating-point aligned 3x3 matrix.
  642. /// @see gtx_type_aligned
  643. GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3, 32);
  644. /// Double-qualifier floating-point aligned 4x4 matrix.
  645. /// @see gtx_type_aligned
  646. GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4, 32);
  647. /// Double-qualifier floating-point aligned 1x1 matrix.
  648. /// @see gtx_type_aligned
  649. //typedef f64 f64mat1x1;
  650. /// Double-qualifier floating-point aligned 2x2 matrix.
  651. /// @see gtx_type_aligned
  652. GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2x2, 32);
  653. /// Double-qualifier floating-point aligned 2x3 matrix.
  654. /// @see gtx_type_aligned
  655. GLM_ALIGNED_TYPEDEF(f64mat2x3, aligned_f64mat2x3, 32);
  656. /// Double-qualifier floating-point aligned 2x4 matrix.
  657. /// @see gtx_type_aligned
  658. GLM_ALIGNED_TYPEDEF(f64mat2x4, aligned_f64mat2x4, 32);
  659. /// Double-qualifier floating-point aligned 3x2 matrix.
  660. /// @see gtx_type_aligned
  661. GLM_ALIGNED_TYPEDEF(f64mat3x2, aligned_f64mat3x2, 32);
  662. /// Double-qualifier floating-point aligned 3x3 matrix.
  663. /// @see gtx_type_aligned
  664. GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3x3, 32);
  665. /// Double-qualifier floating-point aligned 3x4 matrix.
  666. /// @see gtx_type_aligned
  667. GLM_ALIGNED_TYPEDEF(f64mat3x4, aligned_f64mat3x4, 32);
  668. /// Double-qualifier floating-point aligned 4x2 matrix.
  669. /// @see gtx_type_aligned
  670. GLM_ALIGNED_TYPEDEF(f64mat4x2, aligned_f64mat4x2, 32);
  671. /// Double-qualifier floating-point aligned 4x3 matrix.
  672. /// @see gtx_type_aligned
  673. GLM_ALIGNED_TYPEDEF(f64mat4x3, aligned_f64mat4x3, 32);
  674. /// Double-qualifier floating-point aligned 4x4 matrix.
  675. /// @see gtx_type_aligned
  676. GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4x4, 32);
  677. # endif//GLM_FORCE_SINGLE_ONLY
  678. //////////////////////////
  679. // Quaternion types
  680. /// Single-qualifier floating-point aligned quaternion.
  681. /// @see gtx_type_aligned
  682. GLM_ALIGNED_TYPEDEF(quat, aligned_quat, 16);
  683. /// Single-qualifier floating-point aligned quaternion.
  684. /// @see gtx_type_aligned
  685. GLM_ALIGNED_TYPEDEF(quat, aligned_fquat, 16);
  686. /// Double-qualifier floating-point aligned quaternion.
  687. /// @see gtx_type_aligned
  688. GLM_ALIGNED_TYPEDEF(dquat, aligned_dquat, 32);
  689. /// Single-qualifier floating-point aligned quaternion.
  690. /// @see gtx_type_aligned
  691. GLM_ALIGNED_TYPEDEF(f32quat, aligned_f32quat, 16);
  692. # ifndef GLM_FORCE_SINGLE_ONLY
  693. /// Double-qualifier floating-point aligned quaternion.
  694. /// @see gtx_type_aligned
  695. GLM_ALIGNED_TYPEDEF(f64quat, aligned_f64quat, 32);
  696. # endif//GLM_FORCE_SINGLE_ONLY
  697. /// @}
  698. }//namespace glm
  699. #include "type_aligned.inl"