fwd.hpp 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233
  1. #pragma once
  2. #include "detail/qualifier.hpp"
  3. namespace glm
  4. {
  5. #if GLM_HAS_EXTENDED_INTEGER_TYPE
  6. typedef std::int8_t int8;
  7. typedef std::int16_t int16;
  8. typedef std::int32_t int32;
  9. typedef std::int64_t int64;
  10. typedef std::uint8_t uint8;
  11. typedef std::uint16_t uint16;
  12. typedef std::uint32_t uint32;
  13. typedef std::uint64_t uint64;
  14. #else
  15. typedef signed char int8;
  16. typedef signed short int16;
  17. typedef signed int int32;
  18. typedef detail::int64 int64;
  19. typedef unsigned char uint8;
  20. typedef unsigned short uint16;
  21. typedef unsigned int uint32;
  22. typedef detail::uint64 uint64;
  23. #endif
  24. // Scalar int
  25. typedef int8 lowp_i8;
  26. typedef int8 mediump_i8;
  27. typedef int8 highp_i8;
  28. typedef int8 i8;
  29. typedef int8 lowp_int8;
  30. typedef int8 mediump_int8;
  31. typedef int8 highp_int8;
  32. typedef int8 lowp_int8_t;
  33. typedef int8 mediump_int8_t;
  34. typedef int8 highp_int8_t;
  35. typedef int8 int8_t;
  36. typedef int16 lowp_i16;
  37. typedef int16 mediump_i16;
  38. typedef int16 highp_i16;
  39. typedef int16 i16;
  40. typedef int16 lowp_int16;
  41. typedef int16 mediump_int16;
  42. typedef int16 highp_int16;
  43. typedef int16 lowp_int16_t;
  44. typedef int16 mediump_int16_t;
  45. typedef int16 highp_int16_t;
  46. typedef int16 int16_t;
  47. typedef int32 lowp_i32;
  48. typedef int32 mediump_i32;
  49. typedef int32 highp_i32;
  50. typedef int32 i32;
  51. typedef int32 lowp_int32;
  52. typedef int32 mediump_int32;
  53. typedef int32 highp_int32;
  54. typedef int32 lowp_int32_t;
  55. typedef int32 mediump_int32_t;
  56. typedef int32 highp_int32_t;
  57. typedef int32 int32_t;
  58. typedef int64 lowp_i64;
  59. typedef int64 mediump_i64;
  60. typedef int64 highp_i64;
  61. typedef int64 i64;
  62. typedef int64 lowp_int64;
  63. typedef int64 mediump_int64;
  64. typedef int64 highp_int64;
  65. typedef int64 lowp_int64_t;
  66. typedef int64 mediump_int64_t;
  67. typedef int64 highp_int64_t;
  68. typedef int64 int64_t;
  69. // Scalar uint
  70. typedef unsigned int uint;
  71. typedef uint8 lowp_u8;
  72. typedef uint8 mediump_u8;
  73. typedef uint8 highp_u8;
  74. typedef uint8 u8;
  75. typedef uint8 lowp_uint8;
  76. typedef uint8 mediump_uint8;
  77. typedef uint8 highp_uint8;
  78. typedef uint8 lowp_uint8_t;
  79. typedef uint8 mediump_uint8_t;
  80. typedef uint8 highp_uint8_t;
  81. typedef uint8 uint8_t;
  82. typedef uint16 lowp_u16;
  83. typedef uint16 mediump_u16;
  84. typedef uint16 highp_u16;
  85. typedef uint16 u16;
  86. typedef uint16 lowp_uint16;
  87. typedef uint16 mediump_uint16;
  88. typedef uint16 highp_uint16;
  89. typedef uint16 lowp_uint16_t;
  90. typedef uint16 mediump_uint16_t;
  91. typedef uint16 highp_uint16_t;
  92. typedef uint16 uint16_t;
  93. typedef uint32 lowp_u32;
  94. typedef uint32 mediump_u32;
  95. typedef uint32 highp_u32;
  96. typedef uint32 u32;
  97. typedef uint32 lowp_uint32;
  98. typedef uint32 mediump_uint32;
  99. typedef uint32 highp_uint32;
  100. typedef uint32 lowp_uint32_t;
  101. typedef uint32 mediump_uint32_t;
  102. typedef uint32 highp_uint32_t;
  103. typedef uint32 uint32_t;
  104. typedef uint64 lowp_u64;
  105. typedef uint64 mediump_u64;
  106. typedef uint64 highp_u64;
  107. typedef uint64 u64;
  108. typedef uint64 lowp_uint64;
  109. typedef uint64 mediump_uint64;
  110. typedef uint64 highp_uint64;
  111. typedef uint64 lowp_uint64_t;
  112. typedef uint64 mediump_uint64_t;
  113. typedef uint64 highp_uint64_t;
  114. typedef uint64 uint64_t;
  115. // Scalar float
  116. typedef float lowp_f32;
  117. typedef float mediump_f32;
  118. typedef float highp_f32;
  119. typedef float f32;
  120. typedef float lowp_float32;
  121. typedef float mediump_float32;
  122. typedef float highp_float32;
  123. typedef float float32;
  124. typedef float lowp_float32_t;
  125. typedef float mediump_float32_t;
  126. typedef float highp_float32_t;
  127. typedef float float32_t;
  128. typedef double lowp_f64;
  129. typedef double mediump_f64;
  130. typedef double highp_f64;
  131. typedef double f64;
  132. typedef double lowp_float64;
  133. typedef double mediump_float64;
  134. typedef double highp_float64;
  135. typedef double float64;
  136. typedef double lowp_float64_t;
  137. typedef double mediump_float64_t;
  138. typedef double highp_float64_t;
  139. typedef double float64_t;
  140. // Vector bool
  141. typedef vec<1, bool, lowp> lowp_bvec1;
  142. typedef vec<2, bool, lowp> lowp_bvec2;
  143. typedef vec<3, bool, lowp> lowp_bvec3;
  144. typedef vec<4, bool, lowp> lowp_bvec4;
  145. typedef vec<1, bool, mediump> mediump_bvec1;
  146. typedef vec<2, bool, mediump> mediump_bvec2;
  147. typedef vec<3, bool, mediump> mediump_bvec3;
  148. typedef vec<4, bool, mediump> mediump_bvec4;
  149. typedef vec<1, bool, highp> highp_bvec1;
  150. typedef vec<2, bool, highp> highp_bvec2;
  151. typedef vec<3, bool, highp> highp_bvec3;
  152. typedef vec<4, bool, highp> highp_bvec4;
  153. typedef vec<1, bool, defaultp> bvec1;
  154. typedef vec<2, bool, defaultp> bvec2;
  155. typedef vec<3, bool, defaultp> bvec3;
  156. typedef vec<4, bool, defaultp> bvec4;
  157. // Vector int
  158. typedef vec<1, int, lowp> lowp_ivec1;
  159. typedef vec<2, int, lowp> lowp_ivec2;
  160. typedef vec<3, int, lowp> lowp_ivec3;
  161. typedef vec<4, int, lowp> lowp_ivec4;
  162. typedef vec<1, int, mediump> mediump_ivec1;
  163. typedef vec<2, int, mediump> mediump_ivec2;
  164. typedef vec<3, int, mediump> mediump_ivec3;
  165. typedef vec<4, int, mediump> mediump_ivec4;
  166. typedef vec<1, int, highp> highp_ivec1;
  167. typedef vec<2, int, highp> highp_ivec2;
  168. typedef vec<3, int, highp> highp_ivec3;
  169. typedef vec<4, int, highp> highp_ivec4;
  170. typedef vec<1, int, defaultp> ivec1;
  171. typedef vec<2, int, defaultp> ivec2;
  172. typedef vec<3, int, defaultp> ivec3;
  173. typedef vec<4, int, defaultp> ivec4;
  174. typedef vec<1, i8, lowp> lowp_i8vec1;
  175. typedef vec<2, i8, lowp> lowp_i8vec2;
  176. typedef vec<3, i8, lowp> lowp_i8vec3;
  177. typedef vec<4, i8, lowp> lowp_i8vec4;
  178. typedef vec<1, i8, mediump> mediump_i8vec1;
  179. typedef vec<2, i8, mediump> mediump_i8vec2;
  180. typedef vec<3, i8, mediump> mediump_i8vec3;
  181. typedef vec<4, i8, mediump> mediump_i8vec4;
  182. typedef vec<1, i8, highp> highp_i8vec1;
  183. typedef vec<2, i8, highp> highp_i8vec2;
  184. typedef vec<3, i8, highp> highp_i8vec3;
  185. typedef vec<4, i8, highp> highp_i8vec4;
  186. typedef vec<1, i8, defaultp> i8vec1;
  187. typedef vec<2, i8, defaultp> i8vec2;
  188. typedef vec<3, i8, defaultp> i8vec3;
  189. typedef vec<4, i8, defaultp> i8vec4;
  190. typedef vec<1, i16, lowp> lowp_i16vec1;
  191. typedef vec<2, i16, lowp> lowp_i16vec2;
  192. typedef vec<3, i16, lowp> lowp_i16vec3;
  193. typedef vec<4, i16, lowp> lowp_i16vec4;
  194. typedef vec<1, i16, mediump> mediump_i16vec1;
  195. typedef vec<2, i16, mediump> mediump_i16vec2;
  196. typedef vec<3, i16, mediump> mediump_i16vec3;
  197. typedef vec<4, i16, mediump> mediump_i16vec4;
  198. typedef vec<1, i16, highp> highp_i16vec1;
  199. typedef vec<2, i16, highp> highp_i16vec2;
  200. typedef vec<3, i16, highp> highp_i16vec3;
  201. typedef vec<4, i16, highp> highp_i16vec4;
  202. typedef vec<1, i16, defaultp> i16vec1;
  203. typedef vec<2, i16, defaultp> i16vec2;
  204. typedef vec<3, i16, defaultp> i16vec3;
  205. typedef vec<4, i16, defaultp> i16vec4;
  206. typedef vec<1, i32, lowp> lowp_i32vec1;
  207. typedef vec<2, i32, lowp> lowp_i32vec2;
  208. typedef vec<3, i32, lowp> lowp_i32vec3;
  209. typedef vec<4, i32, lowp> lowp_i32vec4;
  210. typedef vec<1, i32, mediump> mediump_i32vec1;
  211. typedef vec<2, i32, mediump> mediump_i32vec2;
  212. typedef vec<3, i32, mediump> mediump_i32vec3;
  213. typedef vec<4, i32, mediump> mediump_i32vec4;
  214. typedef vec<1, i32, highp> highp_i32vec1;
  215. typedef vec<2, i32, highp> highp_i32vec2;
  216. typedef vec<3, i32, highp> highp_i32vec3;
  217. typedef vec<4, i32, highp> highp_i32vec4;
  218. typedef vec<1, i32, defaultp> i32vec1;
  219. typedef vec<2, i32, defaultp> i32vec2;
  220. typedef vec<3, i32, defaultp> i32vec3;
  221. typedef vec<4, i32, defaultp> i32vec4;
  222. typedef vec<1, i64, lowp> lowp_i64vec1;
  223. typedef vec<2, i64, lowp> lowp_i64vec2;
  224. typedef vec<3, i64, lowp> lowp_i64vec3;
  225. typedef vec<4, i64, lowp> lowp_i64vec4;
  226. typedef vec<1, i64, mediump> mediump_i64vec1;
  227. typedef vec<2, i64, mediump> mediump_i64vec2;
  228. typedef vec<3, i64, mediump> mediump_i64vec3;
  229. typedef vec<4, i64, mediump> mediump_i64vec4;
  230. typedef vec<1, i64, highp> highp_i64vec1;
  231. typedef vec<2, i64, highp> highp_i64vec2;
  232. typedef vec<3, i64, highp> highp_i64vec3;
  233. typedef vec<4, i64, highp> highp_i64vec4;
  234. typedef vec<1, i64, defaultp> i64vec1;
  235. typedef vec<2, i64, defaultp> i64vec2;
  236. typedef vec<3, i64, defaultp> i64vec3;
  237. typedef vec<4, i64, defaultp> i64vec4;
  238. // Vector uint
  239. typedef vec<1, uint, lowp> lowp_uvec1;
  240. typedef vec<2, uint, lowp> lowp_uvec2;
  241. typedef vec<3, uint, lowp> lowp_uvec3;
  242. typedef vec<4, uint, lowp> lowp_uvec4;
  243. typedef vec<1, uint, mediump> mediump_uvec1;
  244. typedef vec<2, uint, mediump> mediump_uvec2;
  245. typedef vec<3, uint, mediump> mediump_uvec3;
  246. typedef vec<4, uint, mediump> mediump_uvec4;
  247. typedef vec<1, uint, highp> highp_uvec1;
  248. typedef vec<2, uint, highp> highp_uvec2;
  249. typedef vec<3, uint, highp> highp_uvec3;
  250. typedef vec<4, uint, highp> highp_uvec4;
  251. typedef vec<1, uint, defaultp> uvec1;
  252. typedef vec<2, uint, defaultp> uvec2;
  253. typedef vec<3, uint, defaultp> uvec3;
  254. typedef vec<4, uint, defaultp> uvec4;
  255. typedef vec<1, u8, lowp> lowp_u8vec1;
  256. typedef vec<2, u8, lowp> lowp_u8vec2;
  257. typedef vec<3, u8, lowp> lowp_u8vec3;
  258. typedef vec<4, u8, lowp> lowp_u8vec4;
  259. typedef vec<1, u8, mediump> mediump_u8vec1;
  260. typedef vec<2, u8, mediump> mediump_u8vec2;
  261. typedef vec<3, u8, mediump> mediump_u8vec3;
  262. typedef vec<4, u8, mediump> mediump_u8vec4;
  263. typedef vec<1, u8, highp> highp_u8vec1;
  264. typedef vec<2, u8, highp> highp_u8vec2;
  265. typedef vec<3, u8, highp> highp_u8vec3;
  266. typedef vec<4, u8, highp> highp_u8vec4;
  267. typedef vec<1, u8, defaultp> u8vec1;
  268. typedef vec<2, u8, defaultp> u8vec2;
  269. typedef vec<3, u8, defaultp> u8vec3;
  270. typedef vec<4, u8, defaultp> u8vec4;
  271. typedef vec<1, u16, lowp> lowp_u16vec1;
  272. typedef vec<2, u16, lowp> lowp_u16vec2;
  273. typedef vec<3, u16, lowp> lowp_u16vec3;
  274. typedef vec<4, u16, lowp> lowp_u16vec4;
  275. typedef vec<1, u16, mediump> mediump_u16vec1;
  276. typedef vec<2, u16, mediump> mediump_u16vec2;
  277. typedef vec<3, u16, mediump> mediump_u16vec3;
  278. typedef vec<4, u16, mediump> mediump_u16vec4;
  279. typedef vec<1, u16, highp> highp_u16vec1;
  280. typedef vec<2, u16, highp> highp_u16vec2;
  281. typedef vec<3, u16, highp> highp_u16vec3;
  282. typedef vec<4, u16, highp> highp_u16vec4;
  283. typedef vec<1, u16, defaultp> u16vec1;
  284. typedef vec<2, u16, defaultp> u16vec2;
  285. typedef vec<3, u16, defaultp> u16vec3;
  286. typedef vec<4, u16, defaultp> u16vec4;
  287. typedef vec<1, u32, lowp> lowp_u32vec1;
  288. typedef vec<2, u32, lowp> lowp_u32vec2;
  289. typedef vec<3, u32, lowp> lowp_u32vec3;
  290. typedef vec<4, u32, lowp> lowp_u32vec4;
  291. typedef vec<1, u32, mediump> mediump_u32vec1;
  292. typedef vec<2, u32, mediump> mediump_u32vec2;
  293. typedef vec<3, u32, mediump> mediump_u32vec3;
  294. typedef vec<4, u32, mediump> mediump_u32vec4;
  295. typedef vec<1, u32, highp> highp_u32vec1;
  296. typedef vec<2, u32, highp> highp_u32vec2;
  297. typedef vec<3, u32, highp> highp_u32vec3;
  298. typedef vec<4, u32, highp> highp_u32vec4;
  299. typedef vec<1, u32, defaultp> u32vec1;
  300. typedef vec<2, u32, defaultp> u32vec2;
  301. typedef vec<3, u32, defaultp> u32vec3;
  302. typedef vec<4, u32, defaultp> u32vec4;
  303. typedef vec<1, u64, lowp> lowp_u64vec1;
  304. typedef vec<2, u64, lowp> lowp_u64vec2;
  305. typedef vec<3, u64, lowp> lowp_u64vec3;
  306. typedef vec<4, u64, lowp> lowp_u64vec4;
  307. typedef vec<1, u64, mediump> mediump_u64vec1;
  308. typedef vec<2, u64, mediump> mediump_u64vec2;
  309. typedef vec<3, u64, mediump> mediump_u64vec3;
  310. typedef vec<4, u64, mediump> mediump_u64vec4;
  311. typedef vec<1, u64, highp> highp_u64vec1;
  312. typedef vec<2, u64, highp> highp_u64vec2;
  313. typedef vec<3, u64, highp> highp_u64vec3;
  314. typedef vec<4, u64, highp> highp_u64vec4;
  315. typedef vec<1, u64, defaultp> u64vec1;
  316. typedef vec<2, u64, defaultp> u64vec2;
  317. typedef vec<3, u64, defaultp> u64vec3;
  318. typedef vec<4, u64, defaultp> u64vec4;
  319. // Vector float
  320. typedef vec<1, float, lowp> lowp_vec1;
  321. typedef vec<2, float, lowp> lowp_vec2;
  322. typedef vec<3, float, lowp> lowp_vec3;
  323. typedef vec<4, float, lowp> lowp_vec4;
  324. typedef vec<1, float, mediump> mediump_vec1;
  325. typedef vec<2, float, mediump> mediump_vec2;
  326. typedef vec<3, float, mediump> mediump_vec3;
  327. typedef vec<4, float, mediump> mediump_vec4;
  328. typedef vec<1, float, highp> highp_vec1;
  329. typedef vec<2, float, highp> highp_vec2;
  330. typedef vec<3, float, highp> highp_vec3;
  331. typedef vec<4, float, highp> highp_vec4;
  332. typedef vec<1, float, defaultp> vec1;
  333. typedef vec<2, float, defaultp> vec2;
  334. typedef vec<3, float, defaultp> vec3;
  335. typedef vec<4, float, defaultp> vec4;
  336. typedef vec<1, float, lowp> lowp_fvec1;
  337. typedef vec<2, float, lowp> lowp_fvec2;
  338. typedef vec<3, float, lowp> lowp_fvec3;
  339. typedef vec<4, float, lowp> lowp_fvec4;
  340. typedef vec<1, float, mediump> mediump_fvec1;
  341. typedef vec<2, float, mediump> mediump_fvec2;
  342. typedef vec<3, float, mediump> mediump_fvec3;
  343. typedef vec<4, float, mediump> mediump_fvec4;
  344. typedef vec<1, float, highp> highp_fvec1;
  345. typedef vec<2, float, highp> highp_fvec2;
  346. typedef vec<3, float, highp> highp_fvec3;
  347. typedef vec<4, float, highp> highp_fvec4;
  348. typedef vec<1, f32, defaultp> fvec1;
  349. typedef vec<2, f32, defaultp> fvec2;
  350. typedef vec<3, f32, defaultp> fvec3;
  351. typedef vec<4, f32, defaultp> fvec4;
  352. typedef vec<1, f32, lowp> lowp_f32vec1;
  353. typedef vec<2, f32, lowp> lowp_f32vec2;
  354. typedef vec<3, f32, lowp> lowp_f32vec3;
  355. typedef vec<4, f32, lowp> lowp_f32vec4;
  356. typedef vec<1, f32, mediump> mediump_f32vec1;
  357. typedef vec<2, f32, mediump> mediump_f32vec2;
  358. typedef vec<3, f32, mediump> mediump_f32vec3;
  359. typedef vec<4, f32, mediump> mediump_f32vec4;
  360. typedef vec<1, f32, highp> highp_f32vec1;
  361. typedef vec<2, f32, highp> highp_f32vec2;
  362. typedef vec<3, f32, highp> highp_f32vec3;
  363. typedef vec<4, f32, highp> highp_f32vec4;
  364. typedef vec<1, f32, defaultp> f32vec1;
  365. typedef vec<2, f32, defaultp> f32vec2;
  366. typedef vec<3, f32, defaultp> f32vec3;
  367. typedef vec<4, f32, defaultp> f32vec4;
  368. typedef vec<1, f64, lowp> lowp_dvec1;
  369. typedef vec<2, f64, lowp> lowp_dvec2;
  370. typedef vec<3, f64, lowp> lowp_dvec3;
  371. typedef vec<4, f64, lowp> lowp_dvec4;
  372. typedef vec<1, f64, mediump> mediump_dvec1;
  373. typedef vec<2, f64, mediump> mediump_dvec2;
  374. typedef vec<3, f64, mediump> mediump_dvec3;
  375. typedef vec<4, f64, mediump> mediump_dvec4;
  376. typedef vec<1, f64, highp> highp_dvec1;
  377. typedef vec<2, f64, highp> highp_dvec2;
  378. typedef vec<3, f64, highp> highp_dvec3;
  379. typedef vec<4, f64, highp> highp_dvec4;
  380. typedef vec<1, f64, defaultp> dvec1;
  381. typedef vec<2, f64, defaultp> dvec2;
  382. typedef vec<3, f64, defaultp> dvec3;
  383. typedef vec<4, f64, defaultp> dvec4;
  384. typedef vec<1, f64, lowp> lowp_f64vec1;
  385. typedef vec<2, f64, lowp> lowp_f64vec2;
  386. typedef vec<3, f64, lowp> lowp_f64vec3;
  387. typedef vec<4, f64, lowp> lowp_f64vec4;
  388. typedef vec<1, f64, mediump> mediump_f64vec1;
  389. typedef vec<2, f64, mediump> mediump_f64vec2;
  390. typedef vec<3, f64, mediump> mediump_f64vec3;
  391. typedef vec<4, f64, mediump> mediump_f64vec4;
  392. typedef vec<1, f64, highp> highp_f64vec1;
  393. typedef vec<2, f64, highp> highp_f64vec2;
  394. typedef vec<3, f64, highp> highp_f64vec3;
  395. typedef vec<4, f64, highp> highp_f64vec4;
  396. typedef vec<1, f64, defaultp> f64vec1;
  397. typedef vec<2, f64, defaultp> f64vec2;
  398. typedef vec<3, f64, defaultp> f64vec3;
  399. typedef vec<4, f64, defaultp> f64vec4;
  400. // Matrix NxN
  401. typedef mat<2, 2, f32, lowp> lowp_mat2;
  402. typedef mat<3, 3, f32, lowp> lowp_mat3;
  403. typedef mat<4, 4, f32, lowp> lowp_mat4;
  404. typedef mat<2, 2, f32, mediump> mediump_mat2;
  405. typedef mat<3, 3, f32, mediump> mediump_mat3;
  406. typedef mat<4, 4, f32, mediump> mediump_mat4;
  407. typedef mat<2, 2, f32, highp> highp_mat2;
  408. typedef mat<3, 3, f32, highp> highp_mat3;
  409. typedef mat<4, 4, f32, highp> highp_mat4;
  410. typedef mat<2, 2, f32, defaultp> mat2;
  411. typedef mat<3, 3, f32, defaultp> mat3;
  412. typedef mat<4, 4, f32, defaultp> mat4;
  413. typedef mat<2, 2, f32, lowp> lowp_fmat2;
  414. typedef mat<3, 3, f32, lowp> lowp_fmat3;
  415. typedef mat<4, 4, f32, lowp> lowp_fmat4;
  416. typedef mat<2, 2, f32, mediump> mediump_fmat2;
  417. typedef mat<3, 3, f32, mediump> mediump_fmat3;
  418. typedef mat<4, 4, f32, mediump> mediump_fmat4;
  419. typedef mat<2, 2, f32, highp> highp_fmat2;
  420. typedef mat<3, 3, f32, highp> highp_fmat3;
  421. typedef mat<4, 4, f32, highp> highp_fmat4;
  422. typedef mat<2, 2, f32, defaultp> fmat2;
  423. typedef mat<3, 3, f32, defaultp> fmat3;
  424. typedef mat<4, 4, f32, defaultp> fmat4;
  425. typedef mat<2, 2, f32, lowp> lowp_f32mat2;
  426. typedef mat<3, 3, f32, lowp> lowp_f32mat3;
  427. typedef mat<4, 4, f32, lowp> lowp_f32mat4;
  428. typedef mat<2, 2, f32, mediump> mediump_f32mat2;
  429. typedef mat<3, 3, f32, mediump> mediump_f32mat3;
  430. typedef mat<4, 4, f32, mediump> mediump_f32mat4;
  431. typedef mat<2, 2, f32, highp> highp_f32mat2;
  432. typedef mat<3, 3, f32, highp> highp_f32mat3;
  433. typedef mat<4, 4, f32, highp> highp_f32mat4;
  434. typedef mat<2, 2, f32, defaultp> f32mat2;
  435. typedef mat<3, 3, f32, defaultp> f32mat3;
  436. typedef mat<4, 4, f32, defaultp> f32mat4;
  437. typedef mat<2, 2, f64, lowp> lowp_dmat2;
  438. typedef mat<3, 3, f64, lowp> lowp_dmat3;
  439. typedef mat<4, 4, f64, lowp> lowp_dmat4;
  440. typedef mat<2, 2, f64, mediump> mediump_dmat2;
  441. typedef mat<3, 3, f64, mediump> mediump_dmat3;
  442. typedef mat<4, 4, f64, mediump> mediump_dmat4;
  443. typedef mat<2, 2, f64, highp> highp_dmat2;
  444. typedef mat<3, 3, f64, highp> highp_dmat3;
  445. typedef mat<4, 4, f64, highp> highp_dmat4;
  446. typedef mat<2, 2, f64, defaultp> dmat2;
  447. typedef mat<3, 3, f64, defaultp> dmat3;
  448. typedef mat<4, 4, f64, defaultp> dmat4;
  449. typedef mat<2, 2, f64, lowp> lowp_f64mat2;
  450. typedef mat<3, 3, f64, lowp> lowp_f64mat3;
  451. typedef mat<4, 4, f64, lowp> lowp_f64mat4;
  452. typedef mat<2, 2, f64, mediump> mediump_f64mat2;
  453. typedef mat<3, 3, f64, mediump> mediump_f64mat3;
  454. typedef mat<4, 4, f64, mediump> mediump_f64mat4;
  455. typedef mat<2, 2, f64, highp> highp_f64mat2;
  456. typedef mat<3, 3, f64, highp> highp_f64mat3;
  457. typedef mat<4, 4, f64, highp> highp_f64mat4;
  458. typedef mat<2, 2, f64, defaultp> f64mat2;
  459. typedef mat<3, 3, f64, defaultp> f64mat3;
  460. typedef mat<4, 4, f64, defaultp> f64mat4;
  461. // Matrix MxN
  462. typedef mat<2, 2, f32, lowp> lowp_mat2x2;
  463. typedef mat<2, 3, f32, lowp> lowp_mat2x3;
  464. typedef mat<2, 4, f32, lowp> lowp_mat2x4;
  465. typedef mat<3, 2, f32, lowp> lowp_mat3x2;
  466. typedef mat<3, 3, f32, lowp> lowp_mat3x3;
  467. typedef mat<3, 4, f32, lowp> lowp_mat3x4;
  468. typedef mat<4, 2, f32, lowp> lowp_mat4x2;
  469. typedef mat<4, 3, f32, lowp> lowp_mat4x3;
  470. typedef mat<4, 4, f32, lowp> lowp_mat4x4;
  471. typedef mat<2, 2, f32, mediump> mediump_mat2x2;
  472. typedef mat<2, 3, f32, mediump> mediump_mat2x3;
  473. typedef mat<2, 4, f32, mediump> mediump_mat2x4;
  474. typedef mat<3, 2, f32, mediump> mediump_mat3x2;
  475. typedef mat<3, 3, f32, mediump> mediump_mat3x3;
  476. typedef mat<3, 4, f32, mediump> mediump_mat3x4;
  477. typedef mat<4, 2, f32, mediump> mediump_mat4x2;
  478. typedef mat<4, 3, f32, mediump> mediump_mat4x3;
  479. typedef mat<4, 4, f32, mediump> mediump_mat4x4;
  480. typedef mat<2, 2, f32, highp> highp_mat2x2;
  481. typedef mat<2, 3, f32, highp> highp_mat2x3;
  482. typedef mat<2, 4, f32, highp> highp_mat2x4;
  483. typedef mat<3, 2, f32, highp> highp_mat3x2;
  484. typedef mat<3, 3, f32, highp> highp_mat3x3;
  485. typedef mat<3, 4, f32, highp> highp_mat3x4;
  486. typedef mat<4, 2, f32, highp> highp_mat4x2;
  487. typedef mat<4, 3, f32, highp> highp_mat4x3;
  488. typedef mat<4, 4, f32, highp> highp_mat4x4;
  489. typedef mat<2, 2, f32, defaultp> mat2x2;
  490. typedef mat<3, 2, f32, defaultp> mat3x2;
  491. typedef mat<4, 2, f32, defaultp> mat4x2;
  492. typedef mat<2, 3, f32, defaultp> mat2x3;
  493. typedef mat<3, 3, f32, defaultp> mat3x3;
  494. typedef mat<4, 3, f32, defaultp> mat4x3;
  495. typedef mat<2, 4, f32, defaultp> mat2x4;
  496. typedef mat<3, 4, f32, defaultp> mat3x4;
  497. typedef mat<4, 4, f32, defaultp> mat4x4;
  498. typedef mat<2, 2, f32, lowp> lowp_fmat2x2;
  499. typedef mat<2, 3, f32, lowp> lowp_fmat2x3;
  500. typedef mat<2, 4, f32, lowp> lowp_fmat2x4;
  501. typedef mat<3, 2, f32, lowp> lowp_fmat3x2;
  502. typedef mat<3, 3, f32, lowp> lowp_fmat3x3;
  503. typedef mat<3, 4, f32, lowp> lowp_fmat3x4;
  504. typedef mat<4, 2, f32, lowp> lowp_fmat4x2;
  505. typedef mat<4, 3, f32, lowp> lowp_fmat4x3;
  506. typedef mat<4, 4, f32, lowp> lowp_fmat4x4;
  507. typedef mat<2, 2, f32, mediump> mediump_fmat2x2;
  508. typedef mat<2, 3, f32, mediump> mediump_fmat2x3;
  509. typedef mat<2, 4, f32, mediump> mediump_fmat2x4;
  510. typedef mat<3, 2, f32, mediump> mediump_fmat3x2;
  511. typedef mat<3, 3, f32, mediump> mediump_fmat3x3;
  512. typedef mat<3, 4, f32, mediump> mediump_fmat3x4;
  513. typedef mat<4, 2, f32, mediump> mediump_fmat4x2;
  514. typedef mat<4, 3, f32, mediump> mediump_fmat4x3;
  515. typedef mat<4, 4, f32, mediump> mediump_fmat4x4;
  516. typedef mat<2, 2, f32, highp> highp_fmat2x2;
  517. typedef mat<2, 3, f32, highp> highp_fmat2x3;
  518. typedef mat<2, 4, f32, highp> highp_fmat2x4;
  519. typedef mat<3, 2, f32, highp> highp_fmat3x2;
  520. typedef mat<3, 3, f32, highp> highp_fmat3x3;
  521. typedef mat<3, 4, f32, highp> highp_fmat3x4;
  522. typedef mat<4, 2, f32, highp> highp_fmat4x2;
  523. typedef mat<4, 3, f32, highp> highp_fmat4x3;
  524. typedef mat<4, 4, f32, highp> highp_fmat4x4;
  525. typedef mat<2, 2, f32, defaultp> fmat2x2;
  526. typedef mat<3, 2, f32, defaultp> fmat3x2;
  527. typedef mat<4, 2, f32, defaultp> fmat4x2;
  528. typedef mat<2, 3, f32, defaultp> fmat2x3;
  529. typedef mat<3, 3, f32, defaultp> fmat3x3;
  530. typedef mat<4, 3, f32, defaultp> fmat4x3;
  531. typedef mat<2, 4, f32, defaultp> fmat2x4;
  532. typedef mat<3, 4, f32, defaultp> fmat3x4;
  533. typedef mat<4, 4, f32, defaultp> fmat4x4;
  534. typedef mat<2, 2, f32, lowp> lowp_f32mat2x2;
  535. typedef mat<2, 3, f32, lowp> lowp_f32mat2x3;
  536. typedef mat<2, 4, f32, lowp> lowp_f32mat2x4;
  537. typedef mat<3, 2, f32, lowp> lowp_f32mat3x2;
  538. typedef mat<3, 3, f32, lowp> lowp_f32mat3x3;
  539. typedef mat<3, 4, f32, lowp> lowp_f32mat3x4;
  540. typedef mat<4, 2, f32, lowp> lowp_f32mat4x2;
  541. typedef mat<4, 3, f32, lowp> lowp_f32mat4x3;
  542. typedef mat<4, 4, f32, lowp> lowp_f32mat4x4;
  543. typedef mat<2, 2, f32, mediump> mediump_f32mat2x2;
  544. typedef mat<2, 3, f32, mediump> mediump_f32mat2x3;
  545. typedef mat<2, 4, f32, mediump> mediump_f32mat2x4;
  546. typedef mat<3, 2, f32, mediump> mediump_f32mat3x2;
  547. typedef mat<3, 3, f32, mediump> mediump_f32mat3x3;
  548. typedef mat<3, 4, f32, mediump> mediump_f32mat3x4;
  549. typedef mat<4, 2, f32, mediump> mediump_f32mat4x2;
  550. typedef mat<4, 3, f32, mediump> mediump_f32mat4x3;
  551. typedef mat<4, 4, f32, mediump> mediump_f32mat4x4;
  552. typedef mat<2, 2, f32, highp> highp_f32mat2x2;
  553. typedef mat<2, 3, f32, highp> highp_f32mat2x3;
  554. typedef mat<2, 4, f32, highp> highp_f32mat2x4;
  555. typedef mat<3, 2, f32, highp> highp_f32mat3x2;
  556. typedef mat<3, 3, f32, highp> highp_f32mat3x3;
  557. typedef mat<3, 4, f32, highp> highp_f32mat3x4;
  558. typedef mat<4, 2, f32, highp> highp_f32mat4x2;
  559. typedef mat<4, 3, f32, highp> highp_f32mat4x3;
  560. typedef mat<4, 4, f32, highp> highp_f32mat4x4;
  561. typedef mat<2, 2, f32, defaultp> f32mat2x2;
  562. typedef mat<3, 2, f32, defaultp> f32mat3x2;
  563. typedef mat<4, 2, f32, defaultp> f32mat4x2;
  564. typedef mat<2, 3, f32, defaultp> f32mat2x3;
  565. typedef mat<3, 3, f32, defaultp> f32mat3x3;
  566. typedef mat<4, 3, f32, defaultp> f32mat4x3;
  567. typedef mat<2, 4, f32, defaultp> f32mat2x4;
  568. typedef mat<3, 4, f32, defaultp> f32mat3x4;
  569. typedef mat<4, 4, f32, defaultp> f32mat4x4;
  570. typedef mat<2, 2, double, lowp> lowp_dmat2x2;
  571. typedef mat<2, 3, double, lowp> lowp_dmat2x3;
  572. typedef mat<2, 4, double, lowp> lowp_dmat2x4;
  573. typedef mat<3, 2, double, lowp> lowp_dmat3x2;
  574. typedef mat<3, 3, double, lowp> lowp_dmat3x3;
  575. typedef mat<3, 4, double, lowp> lowp_dmat3x4;
  576. typedef mat<4, 2, double, lowp> lowp_dmat4x2;
  577. typedef mat<4, 3, double, lowp> lowp_dmat4x3;
  578. typedef mat<4, 4, double, lowp> lowp_dmat4x4;
  579. typedef mat<2, 2, double, mediump> mediump_dmat2x2;
  580. typedef mat<2, 3, double, mediump> mediump_dmat2x3;
  581. typedef mat<2, 4, double, mediump> mediump_dmat2x4;
  582. typedef mat<3, 2, double, mediump> mediump_dmat3x2;
  583. typedef mat<3, 3, double, mediump> mediump_dmat3x3;
  584. typedef mat<3, 4, double, mediump> mediump_dmat3x4;
  585. typedef mat<4, 2, double, mediump> mediump_dmat4x2;
  586. typedef mat<4, 3, double, mediump> mediump_dmat4x3;
  587. typedef mat<4, 4, double, mediump> mediump_dmat4x4;
  588. typedef mat<2, 2, double, highp> highp_dmat2x2;
  589. typedef mat<2, 3, double, highp> highp_dmat2x3;
  590. typedef mat<2, 4, double, highp> highp_dmat2x4;
  591. typedef mat<3, 2, double, highp> highp_dmat3x2;
  592. typedef mat<3, 3, double, highp> highp_dmat3x3;
  593. typedef mat<3, 4, double, highp> highp_dmat3x4;
  594. typedef mat<4, 2, double, highp> highp_dmat4x2;
  595. typedef mat<4, 3, double, highp> highp_dmat4x3;
  596. typedef mat<4, 4, double, highp> highp_dmat4x4;
  597. typedef mat<2, 2, double, defaultp> dmat2x2;
  598. typedef mat<3, 2, double, defaultp> dmat3x2;
  599. typedef mat<4, 2, double, defaultp> dmat4x2;
  600. typedef mat<2, 3, double, defaultp> dmat2x3;
  601. typedef mat<3, 3, double, defaultp> dmat3x3;
  602. typedef mat<4, 3, double, defaultp> dmat4x3;
  603. typedef mat<2, 4, double, defaultp> dmat2x4;
  604. typedef mat<3, 4, double, defaultp> dmat3x4;
  605. typedef mat<4, 4, double, defaultp> dmat4x4;
  606. typedef mat<2, 2, f64, lowp> lowp_f64mat2x2;
  607. typedef mat<2, 3, f64, lowp> lowp_f64mat2x3;
  608. typedef mat<2, 4, f64, lowp> lowp_f64mat2x4;
  609. typedef mat<3, 2, f64, lowp> lowp_f64mat3x2;
  610. typedef mat<3, 3, f64, lowp> lowp_f64mat3x3;
  611. typedef mat<3, 4, f64, lowp> lowp_f64mat3x4;
  612. typedef mat<4, 2, f64, lowp> lowp_f64mat4x2;
  613. typedef mat<4, 3, f64, lowp> lowp_f64mat4x3;
  614. typedef mat<4, 4, f64, lowp> lowp_f64mat4x4;
  615. typedef mat<2, 2, f64, mediump> mediump_f64mat2x2;
  616. typedef mat<2, 3, f64, mediump> mediump_f64mat2x3;
  617. typedef mat<2, 4, f64, mediump> mediump_f64mat2x4;
  618. typedef mat<3, 2, f64, mediump> mediump_f64mat3x2;
  619. typedef mat<3, 3, f64, mediump> mediump_f64mat3x3;
  620. typedef mat<3, 4, f64, mediump> mediump_f64mat3x4;
  621. typedef mat<4, 2, f64, mediump> mediump_f64mat4x2;
  622. typedef mat<4, 3, f64, mediump> mediump_f64mat4x3;
  623. typedef mat<4, 4, f64, mediump> mediump_f64mat4x4;
  624. typedef mat<2, 2, f64, highp> highp_f64mat2x2;
  625. typedef mat<2, 3, f64, highp> highp_f64mat2x3;
  626. typedef mat<2, 4, f64, highp> highp_f64mat2x4;
  627. typedef mat<3, 2, f64, highp> highp_f64mat3x2;
  628. typedef mat<3, 3, f64, highp> highp_f64mat3x3;
  629. typedef mat<3, 4, f64, highp> highp_f64mat3x4;
  630. typedef mat<4, 2, f64, highp> highp_f64mat4x2;
  631. typedef mat<4, 3, f64, highp> highp_f64mat4x3;
  632. typedef mat<4, 4, f64, highp> highp_f64mat4x4;
  633. typedef mat<2, 2, f64, defaultp> f64mat2x2;
  634. typedef mat<3, 2, f64, defaultp> f64mat3x2;
  635. typedef mat<4, 2, f64, defaultp> f64mat4x2;
  636. typedef mat<2, 3, f64, defaultp> f64mat2x3;
  637. typedef mat<3, 3, f64, defaultp> f64mat3x3;
  638. typedef mat<4, 3, f64, defaultp> f64mat4x3;
  639. typedef mat<2, 4, f64, defaultp> f64mat2x4;
  640. typedef mat<3, 4, f64, defaultp> f64mat3x4;
  641. typedef mat<4, 4, f64, defaultp> f64mat4x4;
  642. // Signed integer matrix MxN
  643. typedef mat<2, 2, int, lowp> lowp_imat2x2;
  644. typedef mat<2, 3, int, lowp> lowp_imat2x3;
  645. typedef mat<2, 4, int, lowp> lowp_imat2x4;
  646. typedef mat<3, 2, int, lowp> lowp_imat3x2;
  647. typedef mat<3, 3, int, lowp> lowp_imat3x3;
  648. typedef mat<3, 4, int, lowp> lowp_imat3x4;
  649. typedef mat<4, 2, int, lowp> lowp_imat4x2;
  650. typedef mat<4, 3, int, lowp> lowp_imat4x3;
  651. typedef mat<4, 4, int, lowp> lowp_imat4x4;
  652. typedef mat<2, 2, int, mediump> mediump_imat2x2;
  653. typedef mat<2, 3, int, mediump> mediump_imat2x3;
  654. typedef mat<2, 4, int, mediump> mediump_imat2x4;
  655. typedef mat<3, 2, int, mediump> mediump_imat3x2;
  656. typedef mat<3, 3, int, mediump> mediump_imat3x3;
  657. typedef mat<3, 4, int, mediump> mediump_imat3x4;
  658. typedef mat<4, 2, int, mediump> mediump_imat4x2;
  659. typedef mat<4, 3, int, mediump> mediump_imat4x3;
  660. typedef mat<4, 4, int, mediump> mediump_imat4x4;
  661. typedef mat<2, 2, int, highp> highp_imat2x2;
  662. typedef mat<2, 3, int, highp> highp_imat2x3;
  663. typedef mat<2, 4, int, highp> highp_imat2x4;
  664. typedef mat<3, 2, int, highp> highp_imat3x2;
  665. typedef mat<3, 3, int, highp> highp_imat3x3;
  666. typedef mat<3, 4, int, highp> highp_imat3x4;
  667. typedef mat<4, 2, int, highp> highp_imat4x2;
  668. typedef mat<4, 3, int, highp> highp_imat4x3;
  669. typedef mat<4, 4, int, highp> highp_imat4x4;
  670. typedef mat<2, 2, int, defaultp> imat2x2;
  671. typedef mat<3, 2, int, defaultp> imat3x2;
  672. typedef mat<4, 2, int, defaultp> imat4x2;
  673. typedef mat<2, 3, int, defaultp> imat2x3;
  674. typedef mat<3, 3, int, defaultp> imat3x3;
  675. typedef mat<4, 3, int, defaultp> imat4x3;
  676. typedef mat<2, 4, int, defaultp> imat2x4;
  677. typedef mat<3, 4, int, defaultp> imat3x4;
  678. typedef mat<4, 4, int, defaultp> imat4x4;
  679. typedef mat<2, 2, int8, lowp> lowp_i8mat2x2;
  680. typedef mat<2, 3, int8, lowp> lowp_i8mat2x3;
  681. typedef mat<2, 4, int8, lowp> lowp_i8mat2x4;
  682. typedef mat<3, 2, int8, lowp> lowp_i8mat3x2;
  683. typedef mat<3, 3, int8, lowp> lowp_i8mat3x3;
  684. typedef mat<3, 4, int8, lowp> lowp_i8mat3x4;
  685. typedef mat<4, 2, int8, lowp> lowp_i8mat4x2;
  686. typedef mat<4, 3, int8, lowp> lowp_i8mat4x3;
  687. typedef mat<4, 4, int8, lowp> lowp_i8mat4x4;
  688. typedef mat<2, 2, int8, mediump> mediump_i8mat2x2;
  689. typedef mat<2, 3, int8, mediump> mediump_i8mat2x3;
  690. typedef mat<2, 4, int8, mediump> mediump_i8mat2x4;
  691. typedef mat<3, 2, int8, mediump> mediump_i8mat3x2;
  692. typedef mat<3, 3, int8, mediump> mediump_i8mat3x3;
  693. typedef mat<3, 4, int8, mediump> mediump_i8mat3x4;
  694. typedef mat<4, 2, int8, mediump> mediump_i8mat4x2;
  695. typedef mat<4, 3, int8, mediump> mediump_i8mat4x3;
  696. typedef mat<4, 4, int8, mediump> mediump_i8mat4x4;
  697. typedef mat<2, 2, int8, highp> highp_i8mat2x2;
  698. typedef mat<2, 3, int8, highp> highp_i8mat2x3;
  699. typedef mat<2, 4, int8, highp> highp_i8mat2x4;
  700. typedef mat<3, 2, int8, highp> highp_i8mat3x2;
  701. typedef mat<3, 3, int8, highp> highp_i8mat3x3;
  702. typedef mat<3, 4, int8, highp> highp_i8mat3x4;
  703. typedef mat<4, 2, int8, highp> highp_i8mat4x2;
  704. typedef mat<4, 3, int8, highp> highp_i8mat4x3;
  705. typedef mat<4, 4, int8, highp> highp_i8mat4x4;
  706. typedef mat<2, 2, int8, defaultp> i8mat2x2;
  707. typedef mat<3, 2, int8, defaultp> i8mat3x2;
  708. typedef mat<4, 2, int8, defaultp> i8mat4x2;
  709. typedef mat<2, 3, int8, defaultp> i8mat2x3;
  710. typedef mat<3, 3, int8, defaultp> i8mat3x3;
  711. typedef mat<4, 3, int8, defaultp> i8mat4x3;
  712. typedef mat<2, 4, int8, defaultp> i8mat2x4;
  713. typedef mat<3, 4, int8, defaultp> i8mat3x4;
  714. typedef mat<4, 4, int8, defaultp> i8mat4x4;
  715. typedef mat<2, 2, int16, lowp> lowp_i16mat2x2;
  716. typedef mat<2, 3, int16, lowp> lowp_i16mat2x3;
  717. typedef mat<2, 4, int16, lowp> lowp_i16mat2x4;
  718. typedef mat<3, 2, int16, lowp> lowp_i16mat3x2;
  719. typedef mat<3, 3, int16, lowp> lowp_i16mat3x3;
  720. typedef mat<3, 4, int16, lowp> lowp_i16mat3x4;
  721. typedef mat<4, 2, int16, lowp> lowp_i16mat4x2;
  722. typedef mat<4, 3, int16, lowp> lowp_i16mat4x3;
  723. typedef mat<4, 4, int16, lowp> lowp_i16mat4x4;
  724. typedef mat<2, 2, int16, mediump> mediump_i16mat2x2;
  725. typedef mat<2, 3, int16, mediump> mediump_i16mat2x3;
  726. typedef mat<2, 4, int16, mediump> mediump_i16mat2x4;
  727. typedef mat<3, 2, int16, mediump> mediump_i16mat3x2;
  728. typedef mat<3, 3, int16, mediump> mediump_i16mat3x3;
  729. typedef mat<3, 4, int16, mediump> mediump_i16mat3x4;
  730. typedef mat<4, 2, int16, mediump> mediump_i16mat4x2;
  731. typedef mat<4, 3, int16, mediump> mediump_i16mat4x3;
  732. typedef mat<4, 4, int16, mediump> mediump_i16mat4x4;
  733. typedef mat<2, 2, int16, highp> highp_i16mat2x2;
  734. typedef mat<2, 3, int16, highp> highp_i16mat2x3;
  735. typedef mat<2, 4, int16, highp> highp_i16mat2x4;
  736. typedef mat<3, 2, int16, highp> highp_i16mat3x2;
  737. typedef mat<3, 3, int16, highp> highp_i16mat3x3;
  738. typedef mat<3, 4, int16, highp> highp_i16mat3x4;
  739. typedef mat<4, 2, int16, highp> highp_i16mat4x2;
  740. typedef mat<4, 3, int16, highp> highp_i16mat4x3;
  741. typedef mat<4, 4, int16, highp> highp_i16mat4x4;
  742. typedef mat<2, 2, int16, defaultp> i16mat2x2;
  743. typedef mat<3, 2, int16, defaultp> i16mat3x2;
  744. typedef mat<4, 2, int16, defaultp> i16mat4x2;
  745. typedef mat<2, 3, int16, defaultp> i16mat2x3;
  746. typedef mat<3, 3, int16, defaultp> i16mat3x3;
  747. typedef mat<4, 3, int16, defaultp> i16mat4x3;
  748. typedef mat<2, 4, int16, defaultp> i16mat2x4;
  749. typedef mat<3, 4, int16, defaultp> i16mat3x4;
  750. typedef mat<4, 4, int16, defaultp> i16mat4x4;
  751. typedef mat<2, 2, int32, lowp> lowp_i32mat2x2;
  752. typedef mat<2, 3, int32, lowp> lowp_i32mat2x3;
  753. typedef mat<2, 4, int32, lowp> lowp_i32mat2x4;
  754. typedef mat<3, 2, int32, lowp> lowp_i32mat3x2;
  755. typedef mat<3, 3, int32, lowp> lowp_i32mat3x3;
  756. typedef mat<3, 4, int32, lowp> lowp_i32mat3x4;
  757. typedef mat<4, 2, int32, lowp> lowp_i32mat4x2;
  758. typedef mat<4, 3, int32, lowp> lowp_i32mat4x3;
  759. typedef mat<4, 4, int32, lowp> lowp_i32mat4x4;
  760. typedef mat<2, 2, int32, mediump> mediump_i32mat2x2;
  761. typedef mat<2, 3, int32, mediump> mediump_i32mat2x3;
  762. typedef mat<2, 4, int32, mediump> mediump_i32mat2x4;
  763. typedef mat<3, 2, int32, mediump> mediump_i32mat3x2;
  764. typedef mat<3, 3, int32, mediump> mediump_i32mat3x3;
  765. typedef mat<3, 4, int32, mediump> mediump_i32mat3x4;
  766. typedef mat<4, 2, int32, mediump> mediump_i32mat4x2;
  767. typedef mat<4, 3, int32, mediump> mediump_i32mat4x3;
  768. typedef mat<4, 4, int32, mediump> mediump_i32mat4x4;
  769. typedef mat<2, 2, int32, highp> highp_i32mat2x2;
  770. typedef mat<2, 3, int32, highp> highp_i32mat2x3;
  771. typedef mat<2, 4, int32, highp> highp_i32mat2x4;
  772. typedef mat<3, 2, int32, highp> highp_i32mat3x2;
  773. typedef mat<3, 3, int32, highp> highp_i32mat3x3;
  774. typedef mat<3, 4, int32, highp> highp_i32mat3x4;
  775. typedef mat<4, 2, int32, highp> highp_i32mat4x2;
  776. typedef mat<4, 3, int32, highp> highp_i32mat4x3;
  777. typedef mat<4, 4, int32, highp> highp_i32mat4x4;
  778. typedef mat<2, 2, int32, defaultp> i32mat2x2;
  779. typedef mat<3, 2, int32, defaultp> i32mat3x2;
  780. typedef mat<4, 2, int32, defaultp> i32mat4x2;
  781. typedef mat<2, 3, int32, defaultp> i32mat2x3;
  782. typedef mat<3, 3, int32, defaultp> i32mat3x3;
  783. typedef mat<4, 3, int32, defaultp> i32mat4x3;
  784. typedef mat<2, 4, int32, defaultp> i32mat2x4;
  785. typedef mat<3, 4, int32, defaultp> i32mat3x4;
  786. typedef mat<4, 4, int32, defaultp> i32mat4x4;
  787. typedef mat<2, 2, int64, lowp> lowp_i64mat2x2;
  788. typedef mat<2, 3, int64, lowp> lowp_i64mat2x3;
  789. typedef mat<2, 4, int64, lowp> lowp_i64mat2x4;
  790. typedef mat<3, 2, int64, lowp> lowp_i64mat3x2;
  791. typedef mat<3, 3, int64, lowp> lowp_i64mat3x3;
  792. typedef mat<3, 4, int64, lowp> lowp_i64mat3x4;
  793. typedef mat<4, 2, int64, lowp> lowp_i64mat4x2;
  794. typedef mat<4, 3, int64, lowp> lowp_i64mat4x3;
  795. typedef mat<4, 4, int64, lowp> lowp_i64mat4x4;
  796. typedef mat<2, 2, int64, mediump> mediump_i64mat2x2;
  797. typedef mat<2, 3, int64, mediump> mediump_i64mat2x3;
  798. typedef mat<2, 4, int64, mediump> mediump_i64mat2x4;
  799. typedef mat<3, 2, int64, mediump> mediump_i64mat3x2;
  800. typedef mat<3, 3, int64, mediump> mediump_i64mat3x3;
  801. typedef mat<3, 4, int64, mediump> mediump_i64mat3x4;
  802. typedef mat<4, 2, int64, mediump> mediump_i64mat4x2;
  803. typedef mat<4, 3, int64, mediump> mediump_i64mat4x3;
  804. typedef mat<4, 4, int64, mediump> mediump_i64mat4x4;
  805. typedef mat<2, 2, int64, highp> highp_i64mat2x2;
  806. typedef mat<2, 3, int64, highp> highp_i64mat2x3;
  807. typedef mat<2, 4, int64, highp> highp_i64mat2x4;
  808. typedef mat<3, 2, int64, highp> highp_i64mat3x2;
  809. typedef mat<3, 3, int64, highp> highp_i64mat3x3;
  810. typedef mat<3, 4, int64, highp> highp_i64mat3x4;
  811. typedef mat<4, 2, int64, highp> highp_i64mat4x2;
  812. typedef mat<4, 3, int64, highp> highp_i64mat4x3;
  813. typedef mat<4, 4, int64, highp> highp_i64mat4x4;
  814. typedef mat<2, 2, int64, defaultp> i64mat2x2;
  815. typedef mat<3, 2, int64, defaultp> i64mat3x2;
  816. typedef mat<4, 2, int64, defaultp> i64mat4x2;
  817. typedef mat<2, 3, int64, defaultp> i64mat2x3;
  818. typedef mat<3, 3, int64, defaultp> i64mat3x3;
  819. typedef mat<4, 3, int64, defaultp> i64mat4x3;
  820. typedef mat<2, 4, int64, defaultp> i64mat2x4;
  821. typedef mat<3, 4, int64, defaultp> i64mat3x4;
  822. typedef mat<4, 4, int64, defaultp> i64mat4x4;
  823. // Unsigned integer matrix MxN
  824. typedef mat<2, 2, uint, lowp> lowp_umat2x2;
  825. typedef mat<2, 3, uint, lowp> lowp_umat2x3;
  826. typedef mat<2, 4, uint, lowp> lowp_umat2x4;
  827. typedef mat<3, 2, uint, lowp> lowp_umat3x2;
  828. typedef mat<3, 3, uint, lowp> lowp_umat3x3;
  829. typedef mat<3, 4, uint, lowp> lowp_umat3x4;
  830. typedef mat<4, 2, uint, lowp> lowp_umat4x2;
  831. typedef mat<4, 3, uint, lowp> lowp_umat4x3;
  832. typedef mat<4, 4, uint, lowp> lowp_umat4x4;
  833. typedef mat<2, 2, uint, mediump> mediump_umat2x2;
  834. typedef mat<2, 3, uint, mediump> mediump_umat2x3;
  835. typedef mat<2, 4, uint, mediump> mediump_umat2x4;
  836. typedef mat<3, 2, uint, mediump> mediump_umat3x2;
  837. typedef mat<3, 3, uint, mediump> mediump_umat3x3;
  838. typedef mat<3, 4, uint, mediump> mediump_umat3x4;
  839. typedef mat<4, 2, uint, mediump> mediump_umat4x2;
  840. typedef mat<4, 3, uint, mediump> mediump_umat4x3;
  841. typedef mat<4, 4, uint, mediump> mediump_umat4x4;
  842. typedef mat<2, 2, uint, highp> highp_umat2x2;
  843. typedef mat<2, 3, uint, highp> highp_umat2x3;
  844. typedef mat<2, 4, uint, highp> highp_umat2x4;
  845. typedef mat<3, 2, uint, highp> highp_umat3x2;
  846. typedef mat<3, 3, uint, highp> highp_umat3x3;
  847. typedef mat<3, 4, uint, highp> highp_umat3x4;
  848. typedef mat<4, 2, uint, highp> highp_umat4x2;
  849. typedef mat<4, 3, uint, highp> highp_umat4x3;
  850. typedef mat<4, 4, uint, highp> highp_umat4x4;
  851. typedef mat<2, 2, uint, defaultp> umat2x2;
  852. typedef mat<3, 2, uint, defaultp> umat3x2;
  853. typedef mat<4, 2, uint, defaultp> umat4x2;
  854. typedef mat<2, 3, uint, defaultp> umat2x3;
  855. typedef mat<3, 3, uint, defaultp> umat3x3;
  856. typedef mat<4, 3, uint, defaultp> umat4x3;
  857. typedef mat<2, 4, uint, defaultp> umat2x4;
  858. typedef mat<3, 4, uint, defaultp> umat3x4;
  859. typedef mat<4, 4, uint, defaultp> umat4x4;
  860. typedef mat<2, 2, uint8, lowp> lowp_u8mat2x2;
  861. typedef mat<2, 3, uint8, lowp> lowp_u8mat2x3;
  862. typedef mat<2, 4, uint8, lowp> lowp_u8mat2x4;
  863. typedef mat<3, 2, uint8, lowp> lowp_u8mat3x2;
  864. typedef mat<3, 3, uint8, lowp> lowp_u8mat3x3;
  865. typedef mat<3, 4, uint8, lowp> lowp_u8mat3x4;
  866. typedef mat<4, 2, uint8, lowp> lowp_u8mat4x2;
  867. typedef mat<4, 3, uint8, lowp> lowp_u8mat4x3;
  868. typedef mat<4, 4, uint8, lowp> lowp_u8mat4x4;
  869. typedef mat<2, 2, uint8, mediump> mediump_u8mat2x2;
  870. typedef mat<2, 3, uint8, mediump> mediump_u8mat2x3;
  871. typedef mat<2, 4, uint8, mediump> mediump_u8mat2x4;
  872. typedef mat<3, 2, uint8, mediump> mediump_u8mat3x2;
  873. typedef mat<3, 3, uint8, mediump> mediump_u8mat3x3;
  874. typedef mat<3, 4, uint8, mediump> mediump_u8mat3x4;
  875. typedef mat<4, 2, uint8, mediump> mediump_u8mat4x2;
  876. typedef mat<4, 3, uint8, mediump> mediump_u8mat4x3;
  877. typedef mat<4, 4, uint8, mediump> mediump_u8mat4x4;
  878. typedef mat<2, 2, uint8, highp> highp_u8mat2x2;
  879. typedef mat<2, 3, uint8, highp> highp_u8mat2x3;
  880. typedef mat<2, 4, uint8, highp> highp_u8mat2x4;
  881. typedef mat<3, 2, uint8, highp> highp_u8mat3x2;
  882. typedef mat<3, 3, uint8, highp> highp_u8mat3x3;
  883. typedef mat<3, 4, uint8, highp> highp_u8mat3x4;
  884. typedef mat<4, 2, uint8, highp> highp_u8mat4x2;
  885. typedef mat<4, 3, uint8, highp> highp_u8mat4x3;
  886. typedef mat<4, 4, uint8, highp> highp_u8mat4x4;
  887. typedef mat<2, 2, uint8, defaultp> u8mat2x2;
  888. typedef mat<3, 2, uint8, defaultp> u8mat3x2;
  889. typedef mat<4, 2, uint8, defaultp> u8mat4x2;
  890. typedef mat<2, 3, uint8, defaultp> u8mat2x3;
  891. typedef mat<3, 3, uint8, defaultp> u8mat3x3;
  892. typedef mat<4, 3, uint8, defaultp> u8mat4x3;
  893. typedef mat<2, 4, uint8, defaultp> u8mat2x4;
  894. typedef mat<3, 4, uint8, defaultp> u8mat3x4;
  895. typedef mat<4, 4, uint8, defaultp> u8mat4x4;
  896. typedef mat<2, 2, uint16, lowp> lowp_u16mat2x2;
  897. typedef mat<2, 3, uint16, lowp> lowp_u16mat2x3;
  898. typedef mat<2, 4, uint16, lowp> lowp_u16mat2x4;
  899. typedef mat<3, 2, uint16, lowp> lowp_u16mat3x2;
  900. typedef mat<3, 3, uint16, lowp> lowp_u16mat3x3;
  901. typedef mat<3, 4, uint16, lowp> lowp_u16mat3x4;
  902. typedef mat<4, 2, uint16, lowp> lowp_u16mat4x2;
  903. typedef mat<4, 3, uint16, lowp> lowp_u16mat4x3;
  904. typedef mat<4, 4, uint16, lowp> lowp_u16mat4x4;
  905. typedef mat<2, 2, uint16, mediump> mediump_u16mat2x2;
  906. typedef mat<2, 3, uint16, mediump> mediump_u16mat2x3;
  907. typedef mat<2, 4, uint16, mediump> mediump_u16mat2x4;
  908. typedef mat<3, 2, uint16, mediump> mediump_u16mat3x2;
  909. typedef mat<3, 3, uint16, mediump> mediump_u16mat3x3;
  910. typedef mat<3, 4, uint16, mediump> mediump_u16mat3x4;
  911. typedef mat<4, 2, uint16, mediump> mediump_u16mat4x2;
  912. typedef mat<4, 3, uint16, mediump> mediump_u16mat4x3;
  913. typedef mat<4, 4, uint16, mediump> mediump_u16mat4x4;
  914. typedef mat<2, 2, uint16, highp> highp_u16mat2x2;
  915. typedef mat<2, 3, uint16, highp> highp_u16mat2x3;
  916. typedef mat<2, 4, uint16, highp> highp_u16mat2x4;
  917. typedef mat<3, 2, uint16, highp> highp_u16mat3x2;
  918. typedef mat<3, 3, uint16, highp> highp_u16mat3x3;
  919. typedef mat<3, 4, uint16, highp> highp_u16mat3x4;
  920. typedef mat<4, 2, uint16, highp> highp_u16mat4x2;
  921. typedef mat<4, 3, uint16, highp> highp_u16mat4x3;
  922. typedef mat<4, 4, uint16, highp> highp_u16mat4x4;
  923. typedef mat<2, 2, uint16, defaultp> u16mat2x2;
  924. typedef mat<3, 2, uint16, defaultp> u16mat3x2;
  925. typedef mat<4, 2, uint16, defaultp> u16mat4x2;
  926. typedef mat<2, 3, uint16, defaultp> u16mat2x3;
  927. typedef mat<3, 3, uint16, defaultp> u16mat3x3;
  928. typedef mat<4, 3, uint16, defaultp> u16mat4x3;
  929. typedef mat<2, 4, uint16, defaultp> u16mat2x4;
  930. typedef mat<3, 4, uint16, defaultp> u16mat3x4;
  931. typedef mat<4, 4, uint16, defaultp> u16mat4x4;
  932. typedef mat<2, 2, uint32, lowp> lowp_u32mat2x2;
  933. typedef mat<2, 3, uint32, lowp> lowp_u32mat2x3;
  934. typedef mat<2, 4, uint32, lowp> lowp_u32mat2x4;
  935. typedef mat<3, 2, uint32, lowp> lowp_u32mat3x2;
  936. typedef mat<3, 3, uint32, lowp> lowp_u32mat3x3;
  937. typedef mat<3, 4, uint32, lowp> lowp_u32mat3x4;
  938. typedef mat<4, 2, uint32, lowp> lowp_u32mat4x2;
  939. typedef mat<4, 3, uint32, lowp> lowp_u32mat4x3;
  940. typedef mat<4, 4, uint32, lowp> lowp_u32mat4x4;
  941. typedef mat<2, 2, uint32, mediump> mediump_u32mat2x2;
  942. typedef mat<2, 3, uint32, mediump> mediump_u32mat2x3;
  943. typedef mat<2, 4, uint32, mediump> mediump_u32mat2x4;
  944. typedef mat<3, 2, uint32, mediump> mediump_u32mat3x2;
  945. typedef mat<3, 3, uint32, mediump> mediump_u32mat3x3;
  946. typedef mat<3, 4, uint32, mediump> mediump_u32mat3x4;
  947. typedef mat<4, 2, uint32, mediump> mediump_u32mat4x2;
  948. typedef mat<4, 3, uint32, mediump> mediump_u32mat4x3;
  949. typedef mat<4, 4, uint32, mediump> mediump_u32mat4x4;
  950. typedef mat<2, 2, uint32, highp> highp_u32mat2x2;
  951. typedef mat<2, 3, uint32, highp> highp_u32mat2x3;
  952. typedef mat<2, 4, uint32, highp> highp_u32mat2x4;
  953. typedef mat<3, 2, uint32, highp> highp_u32mat3x2;
  954. typedef mat<3, 3, uint32, highp> highp_u32mat3x3;
  955. typedef mat<3, 4, uint32, highp> highp_u32mat3x4;
  956. typedef mat<4, 2, uint32, highp> highp_u32mat4x2;
  957. typedef mat<4, 3, uint32, highp> highp_u32mat4x3;
  958. typedef mat<4, 4, uint32, highp> highp_u32mat4x4;
  959. typedef mat<2, 2, uint32, defaultp> u32mat2x2;
  960. typedef mat<3, 2, uint32, defaultp> u32mat3x2;
  961. typedef mat<4, 2, uint32, defaultp> u32mat4x2;
  962. typedef mat<2, 3, uint32, defaultp> u32mat2x3;
  963. typedef mat<3, 3, uint32, defaultp> u32mat3x3;
  964. typedef mat<4, 3, uint32, defaultp> u32mat4x3;
  965. typedef mat<2, 4, uint32, defaultp> u32mat2x4;
  966. typedef mat<3, 4, uint32, defaultp> u32mat3x4;
  967. typedef mat<4, 4, uint32, defaultp> u32mat4x4;
  968. typedef mat<2, 2, uint64, lowp> lowp_u64mat2x2;
  969. typedef mat<2, 3, uint64, lowp> lowp_u64mat2x3;
  970. typedef mat<2, 4, uint64, lowp> lowp_u64mat2x4;
  971. typedef mat<3, 2, uint64, lowp> lowp_u64mat3x2;
  972. typedef mat<3, 3, uint64, lowp> lowp_u64mat3x3;
  973. typedef mat<3, 4, uint64, lowp> lowp_u64mat3x4;
  974. typedef mat<4, 2, uint64, lowp> lowp_u64mat4x2;
  975. typedef mat<4, 3, uint64, lowp> lowp_u64mat4x3;
  976. typedef mat<4, 4, uint64, lowp> lowp_u64mat4x4;
  977. typedef mat<2, 2, uint64, mediump> mediump_u64mat2x2;
  978. typedef mat<2, 3, uint64, mediump> mediump_u64mat2x3;
  979. typedef mat<2, 4, uint64, mediump> mediump_u64mat2x4;
  980. typedef mat<3, 2, uint64, mediump> mediump_u64mat3x2;
  981. typedef mat<3, 3, uint64, mediump> mediump_u64mat3x3;
  982. typedef mat<3, 4, uint64, mediump> mediump_u64mat3x4;
  983. typedef mat<4, 2, uint64, mediump> mediump_u64mat4x2;
  984. typedef mat<4, 3, uint64, mediump> mediump_u64mat4x3;
  985. typedef mat<4, 4, uint64, mediump> mediump_u64mat4x4;
  986. typedef mat<2, 2, uint64, highp> highp_u64mat2x2;
  987. typedef mat<2, 3, uint64, highp> highp_u64mat2x3;
  988. typedef mat<2, 4, uint64, highp> highp_u64mat2x4;
  989. typedef mat<3, 2, uint64, highp> highp_u64mat3x2;
  990. typedef mat<3, 3, uint64, highp> highp_u64mat3x3;
  991. typedef mat<3, 4, uint64, highp> highp_u64mat3x4;
  992. typedef mat<4, 2, uint64, highp> highp_u64mat4x2;
  993. typedef mat<4, 3, uint64, highp> highp_u64mat4x3;
  994. typedef mat<4, 4, uint64, highp> highp_u64mat4x4;
  995. typedef mat<2, 2, uint64, defaultp> u64mat2x2;
  996. typedef mat<3, 2, uint64, defaultp> u64mat3x2;
  997. typedef mat<4, 2, uint64, defaultp> u64mat4x2;
  998. typedef mat<2, 3, uint64, defaultp> u64mat2x3;
  999. typedef mat<3, 3, uint64, defaultp> u64mat3x3;
  1000. typedef mat<4, 3, uint64, defaultp> u64mat4x3;
  1001. typedef mat<2, 4, uint64, defaultp> u64mat2x4;
  1002. typedef mat<3, 4, uint64, defaultp> u64mat3x4;
  1003. typedef mat<4, 4, uint64, defaultp> u64mat4x4;
  1004. // Quaternion
  1005. typedef qua<float, lowp> lowp_quat;
  1006. typedef qua<float, mediump> mediump_quat;
  1007. typedef qua<float, highp> highp_quat;
  1008. typedef qua<float, defaultp> quat;
  1009. typedef qua<float, lowp> lowp_fquat;
  1010. typedef qua<float, mediump> mediump_fquat;
  1011. typedef qua<float, highp> highp_fquat;
  1012. typedef qua<float, defaultp> fquat;
  1013. typedef qua<f32, lowp> lowp_f32quat;
  1014. typedef qua<f32, mediump> mediump_f32quat;
  1015. typedef qua<f32, highp> highp_f32quat;
  1016. typedef qua<f32, defaultp> f32quat;
  1017. typedef qua<double, lowp> lowp_dquat;
  1018. typedef qua<double, mediump> mediump_dquat;
  1019. typedef qua<double, highp> highp_dquat;
  1020. typedef qua<double, defaultp> dquat;
  1021. typedef qua<f64, lowp> lowp_f64quat;
  1022. typedef qua<f64, mediump> mediump_f64quat;
  1023. typedef qua<f64, highp> highp_f64quat;
  1024. typedef qua<f64, defaultp> f64quat;
  1025. }//namespace glm