type_mat.hpp 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765
  1. /// @ref core
  2. /// @file glm/detail/type_mat.hpp
  3. #pragma once
  4. #include "precision.hpp"
  5. namespace glm{
  6. namespace detail
  7. {
  8. template <int Columns, int Rows, typename T, precision P, template <int, class, precision> class colType, template <int, class, precision> class rowType>
  9. struct outerProduct_trait{};
  10. }//namespace detail
  11. template <int D, typename T, precision P> struct vec;
  12. template <typename T, precision P> struct tmat2x2;
  13. template <typename T, precision P> struct tmat2x3;
  14. template <typename T, precision P> struct tmat2x4;
  15. template <typename T, precision P> struct tmat3x2;
  16. template <typename T, precision P> struct tmat3x3;
  17. template <typename T, precision P> struct tmat3x4;
  18. template <typename T, precision P> struct tmat4x2;
  19. template <typename T, precision P> struct tmat4x3;
  20. template <typename T, precision P> struct tmat4x4;
  21. template <typename T, precision P, template <typename, precision> class matType>
  22. GLM_FUNC_DECL matType<T, P> inverse(matType<T, P> const & m);
  23. /// @addtogroup core_precision
  24. /// @{
  25. /// 2 columns of 2 components matrix of low precision floating-point numbers.
  26. /// There is no guarantee on the actual precision.
  27. ///
  28. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  29. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  30. typedef tmat2x2<float, lowp> lowp_mat2;
  31. /// 2 columns of 2 components matrix of medium precision floating-point numbers.
  32. /// There is no guarantee on the actual precision.
  33. ///
  34. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  35. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  36. typedef tmat2x2<float, mediump> mediump_mat2;
  37. /// 2 columns of 2 components matrix of high precision floating-point numbers.
  38. /// There is no guarantee on the actual precision.
  39. ///
  40. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  41. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  42. typedef tmat2x2<float, highp> highp_mat2;
  43. /// 2 columns of 2 components matrix of low precision floating-point numbers.
  44. /// There is no guarantee on the actual precision.
  45. ///
  46. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  47. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  48. typedef tmat2x2<float, lowp> lowp_mat2x2;
  49. /// 2 columns of 2 components matrix of medium precision floating-point numbers.
  50. /// There is no guarantee on the actual precision.
  51. ///
  52. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  53. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  54. typedef tmat2x2<float, mediump> mediump_mat2x2;
  55. /// 2 columns of 2 components matrix of high precision floating-point numbers.
  56. /// There is no guarantee on the actual precision.
  57. ///
  58. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  59. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  60. typedef tmat2x2<float, highp> highp_mat2x2;
  61. /// @}
  62. /// @addtogroup core_precision
  63. /// @{
  64. /// 2 columns of 3 components matrix of low precision floating-point numbers.
  65. /// There is no guarantee on the actual precision.
  66. ///
  67. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  68. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  69. typedef tmat2x3<float, lowp> lowp_mat2x3;
  70. /// 2 columns of 3 components matrix of medium precision floating-point numbers.
  71. /// There is no guarantee on the actual precision.
  72. ///
  73. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  74. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  75. typedef tmat2x3<float, mediump> mediump_mat2x3;
  76. /// 2 columns of 3 components matrix of high precision floating-point numbers.
  77. /// There is no guarantee on the actual precision.
  78. ///
  79. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  80. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  81. typedef tmat2x3<float, highp> highp_mat2x3;
  82. /// @}
  83. /// @addtogroup core_precision
  84. /// @{
  85. /// 2 columns of 4 components matrix of low precision floating-point numbers.
  86. /// There is no guarantee on the actual precision.
  87. ///
  88. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  89. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  90. typedef tmat2x4<float, lowp> lowp_mat2x4;
  91. /// 2 columns of 4 components matrix of medium precision floating-point numbers.
  92. /// There is no guarantee on the actual precision.
  93. ///
  94. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  95. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  96. typedef tmat2x4<float, mediump> mediump_mat2x4;
  97. /// 2 columns of 4 components matrix of high precision floating-point numbers.
  98. /// There is no guarantee on the actual precision.
  99. ///
  100. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  101. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  102. typedef tmat2x4<float, highp> highp_mat2x4;
  103. /// @}
  104. /// @addtogroup core_precision
  105. /// @{
  106. /// 3 columns of 2 components matrix of low precision floating-point numbers.
  107. /// There is no guarantee on the actual precision.
  108. ///
  109. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  110. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  111. typedef tmat3x2<float, lowp> lowp_mat3x2;
  112. /// 3 columns of 2 components matrix of medium precision floating-point numbers.
  113. /// There is no guarantee on the actual precision.
  114. ///
  115. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  116. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  117. typedef tmat3x2<float, mediump> mediump_mat3x2;
  118. /// 3 columns of 2 components matrix of high precision floating-point numbers.
  119. /// There is no guarantee on the actual precision.
  120. ///
  121. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  122. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  123. typedef tmat3x2<float, highp> highp_mat3x2;
  124. /// @}
  125. /// @addtogroup core_precision
  126. /// @{
  127. /// 3 columns of 3 components matrix of low precision floating-point numbers.
  128. /// There is no guarantee on the actual precision.
  129. ///
  130. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  131. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  132. typedef tmat3x3<float, lowp> lowp_mat3;
  133. /// 3 columns of 3 components matrix of medium precision floating-point numbers.
  134. /// There is no guarantee on the actual precision.
  135. ///
  136. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  137. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  138. typedef tmat3x3<float, mediump> mediump_mat3;
  139. /// 3 columns of 3 components matrix of high precision floating-point numbers.
  140. /// There is no guarantee on the actual precision.
  141. ///
  142. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  143. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  144. typedef tmat3x3<float, highp> highp_mat3;
  145. /// 3 columns of 3 components matrix of low precision floating-point numbers.
  146. /// There is no guarantee on the actual precision.
  147. ///
  148. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  149. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  150. typedef tmat3x3<float, lowp> lowp_mat3x3;
  151. /// 3 columns of 3 components matrix of medium precision floating-point numbers.
  152. /// There is no guarantee on the actual precision.
  153. ///
  154. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  155. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  156. typedef tmat3x3<float, mediump> mediump_mat3x3;
  157. /// 3 columns of 3 components matrix of high precision floating-point numbers.
  158. /// There is no guarantee on the actual precision.
  159. ///
  160. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  161. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  162. typedef tmat3x3<float, highp> highp_mat3x3;
  163. /// @}
  164. /// @addtogroup core_precision
  165. /// @{
  166. /// 3 columns of 4 components matrix of low precision floating-point numbers.
  167. /// There is no guarantee on the actual precision.
  168. ///
  169. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  170. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  171. typedef tmat3x4<float, lowp> lowp_mat3x4;
  172. /// 3 columns of 4 components matrix of medium precision floating-point numbers.
  173. /// There is no guarantee on the actual precision.
  174. ///
  175. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  176. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  177. typedef tmat3x4<float, mediump> mediump_mat3x4;
  178. /// 3 columns of 4 components matrix of high precision floating-point numbers.
  179. /// There is no guarantee on the actual precision.
  180. ///
  181. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  182. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  183. typedef tmat3x4<float, highp> highp_mat3x4;
  184. /// @}
  185. /// @addtogroup core_precision
  186. /// @{
  187. /// 4 columns of 2 components matrix of low precision floating-point numbers.
  188. /// There is no guarantee on the actual precision.
  189. ///
  190. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  191. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  192. typedef tmat4x2<float, lowp> lowp_mat4x2;
  193. /// 4 columns of 2 components matrix of medium precision floating-point numbers.
  194. /// There is no guarantee on the actual precision.
  195. ///
  196. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  197. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  198. typedef tmat4x2<float, mediump> mediump_mat4x2;
  199. /// 4 columns of 2 components matrix of high precision floating-point numbers.
  200. /// There is no guarantee on the actual precision.
  201. ///
  202. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  203. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  204. typedef tmat4x2<float, highp> highp_mat4x2;
  205. /// @}
  206. /// @addtogroup core_precision
  207. /// @{
  208. /// 4 columns of 3 components matrix of low precision floating-point numbers.
  209. /// There is no guarantee on the actual precision.
  210. ///
  211. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  212. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  213. typedef tmat4x3<float, lowp> lowp_mat4x3;
  214. /// 4 columns of 3 components matrix of medium precision floating-point numbers.
  215. /// There is no guarantee on the actual precision.
  216. ///
  217. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  218. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  219. typedef tmat4x3<float, mediump> mediump_mat4x3;
  220. /// 4 columns of 3 components matrix of high precision floating-point numbers.
  221. /// There is no guarantee on the actual precision.
  222. ///
  223. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  224. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  225. typedef tmat4x3<float, highp> highp_mat4x3;
  226. /// @}
  227. /// @addtogroup core_precision
  228. /// @{
  229. /// 4 columns of 4 components matrix of low precision floating-point numbers.
  230. /// There is no guarantee on the actual precision.
  231. ///
  232. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  233. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  234. typedef tmat4x4<float, lowp> lowp_mat4;
  235. /// 4 columns of 4 components matrix of medium precision floating-point numbers.
  236. /// There is no guarantee on the actual precision.
  237. ///
  238. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  239. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  240. typedef tmat4x4<float, mediump> mediump_mat4;
  241. /// 4 columns of 4 components matrix of high precision floating-point numbers.
  242. /// There is no guarantee on the actual precision.
  243. ///
  244. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  245. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  246. typedef tmat4x4<float, highp> highp_mat4;
  247. /// 4 columns of 4 components matrix of low precision floating-point numbers.
  248. /// There is no guarantee on the actual precision.
  249. ///
  250. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  251. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  252. typedef tmat4x4<float, lowp> lowp_mat4x4;
  253. /// 4 columns of 4 components matrix of medium precision floating-point numbers.
  254. /// There is no guarantee on the actual precision.
  255. ///
  256. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  257. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  258. typedef tmat4x4<float, mediump> mediump_mat4x4;
  259. /// 4 columns of 4 components matrix of high precision floating-point numbers.
  260. /// There is no guarantee on the actual precision.
  261. ///
  262. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  263. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  264. typedef tmat4x4<float, highp> highp_mat4x4;
  265. /// @}
  266. /// @addtogroup core_types
  267. /// @{
  268. //////////////////////////
  269. // Float definition
  270. #if(defined(GLM_PRECISION_LOWP_FLOAT))
  271. typedef lowp_mat2x2 mat2x2;
  272. typedef lowp_mat2x3 mat2x3;
  273. typedef lowp_mat2x4 mat2x4;
  274. typedef lowp_mat3x2 mat3x2;
  275. typedef lowp_mat3x3 mat3x3;
  276. typedef lowp_mat3x4 mat3x4;
  277. typedef lowp_mat4x2 mat4x2;
  278. typedef lowp_mat4x3 mat4x3;
  279. typedef lowp_mat4x4 mat4x4;
  280. #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
  281. typedef mediump_mat2x2 mat2x2;
  282. typedef mediump_mat2x3 mat2x3;
  283. typedef mediump_mat2x4 mat2x4;
  284. typedef mediump_mat3x2 mat3x2;
  285. typedef mediump_mat3x3 mat3x3;
  286. typedef mediump_mat3x4 mat3x4;
  287. typedef mediump_mat4x2 mat4x2;
  288. typedef mediump_mat4x3 mat4x3;
  289. typedef mediump_mat4x4 mat4x4;
  290. #else
  291. //! 2 columns of 2 components matrix of floating-point numbers.
  292. ///
  293. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  294. typedef highp_mat2x2 mat2x2;
  295. //! 2 columns of 3 components matrix of floating-point numbers.
  296. ///
  297. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  298. typedef highp_mat2x3 mat2x3;
  299. //! 2 columns of 4 components matrix of floating-point numbers.
  300. ///
  301. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  302. typedef highp_mat2x4 mat2x4;
  303. //! 3 columns of 2 components matrix of floating-point numbers.
  304. ///
  305. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  306. typedef highp_mat3x2 mat3x2;
  307. //! 3 columns of 3 components matrix of floating-point numbers.
  308. ///
  309. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  310. typedef highp_mat3x3 mat3x3;
  311. //! 3 columns of 4 components matrix of floating-point numbers.
  312. ///
  313. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  314. typedef highp_mat3x4 mat3x4;
  315. //! 4 columns of 2 components matrix of floating-point numbers.
  316. ///
  317. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  318. typedef highp_mat4x2 mat4x2;
  319. //! 4 columns of 3 components matrix of floating-point numbers.
  320. ///
  321. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  322. typedef highp_mat4x3 mat4x3;
  323. //! 4 columns of 4 components matrix of floating-point numbers.
  324. ///
  325. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  326. typedef highp_mat4x4 mat4x4;
  327. #endif//GLM_PRECISION
  328. //! 2 columns of 2 components matrix of floating-point numbers.
  329. ///
  330. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  331. typedef mat2x2 mat2;
  332. //! 3 columns of 3 components matrix of floating-point numbers.
  333. ///
  334. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  335. typedef mat3x3 mat3;
  336. //! 4 columns of 4 components matrix of floating-point numbers.
  337. ///
  338. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  339. typedef mat4x4 mat4;
  340. //////////////////////////
  341. // Double definition
  342. /// @addtogroup core_precision
  343. /// @{
  344. /// 2 columns of 2 components matrix of low precision floating-point numbers.
  345. ///
  346. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  347. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  348. typedef tmat2x2<double, lowp> lowp_dmat2;
  349. /// 2 columns of 2 components matrix of medium precision floating-point numbers.
  350. ///
  351. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  352. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  353. typedef tmat2x2<double, mediump> mediump_dmat2;
  354. /// 2 columns of 2 components matrix of high precision floating-point numbers.
  355. ///
  356. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  357. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  358. typedef tmat2x2<double, highp> highp_dmat2;
  359. /// 2 columns of 2 components matrix of low precision floating-point numbers.
  360. ///
  361. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  362. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  363. typedef tmat2x2<double, lowp> lowp_dmat2x2;
  364. /// 2 columns of 2 components matrix of medium precision floating-point numbers.
  365. ///
  366. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  367. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  368. typedef tmat2x2<double, mediump> mediump_dmat2x2;
  369. /// 2 columns of 2 components matrix of high precision floating-point numbers.
  370. ///
  371. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  372. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  373. typedef tmat2x2<double, highp> highp_dmat2x2;
  374. /// @}
  375. /// @addtogroup core_precision
  376. /// @{
  377. /// 2 columns of 3 components matrix of low precision floating-point numbers.
  378. ///
  379. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  380. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  381. typedef tmat2x3<double, lowp> lowp_dmat2x3;
  382. /// 2 columns of 3 components matrix of medium precision floating-point numbers.
  383. ///
  384. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  385. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  386. typedef tmat2x3<double, mediump> mediump_dmat2x3;
  387. /// 2 columns of 3 components matrix of high precision floating-point numbers.
  388. ///
  389. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  390. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  391. typedef tmat2x3<double, highp> highp_dmat2x3;
  392. /// @}
  393. /// @addtogroup core_precision
  394. /// @{
  395. /// 2 columns of 4 components matrix of low precision floating-point numbers.
  396. ///
  397. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  398. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  399. typedef tmat2x4<double, lowp> lowp_dmat2x4;
  400. /// 2 columns of 4 components matrix of medium precision floating-point numbers.
  401. ///
  402. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  403. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  404. typedef tmat2x4<double, mediump> mediump_dmat2x4;
  405. /// 2 columns of 4 components matrix of high precision floating-point numbers.
  406. ///
  407. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  408. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  409. typedef tmat2x4<double, highp> highp_dmat2x4;
  410. /// @}
  411. /// @addtogroup core_precision
  412. /// @{
  413. /// 3 columns of 2 components matrix of low precision floating-point numbers.
  414. ///
  415. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  416. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  417. typedef tmat3x2<double, lowp> lowp_dmat3x2;
  418. /// 3 columns of 2 components matrix of medium precision floating-point numbers.
  419. ///
  420. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  421. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  422. typedef tmat3x2<double, mediump> mediump_dmat3x2;
  423. /// 3 columns of 2 components matrix of high precision floating-point numbers.
  424. ///
  425. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  426. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  427. typedef tmat3x2<double, highp> highp_dmat3x2;
  428. /// @}
  429. /// @addtogroup core_precision
  430. /// @{
  431. /// 3 columns of 3 components matrix of low precision floating-point numbers.
  432. ///
  433. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  434. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  435. typedef tmat3x3<float, lowp> lowp_dmat3;
  436. /// 3 columns of 3 components matrix of medium precision floating-point numbers.
  437. ///
  438. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  439. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  440. typedef tmat3x3<double, mediump> mediump_dmat3;
  441. /// 3 columns of 3 components matrix of high precision floating-point numbers.
  442. ///
  443. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  444. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  445. typedef tmat3x3<double, highp> highp_dmat3;
  446. /// 3 columns of 3 components matrix of low precision floating-point numbers.
  447. ///
  448. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  449. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  450. typedef tmat3x3<double, lowp> lowp_dmat3x3;
  451. /// 3 columns of 3 components matrix of medium precision floating-point numbers.
  452. ///
  453. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  454. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  455. typedef tmat3x3<double, mediump> mediump_dmat3x3;
  456. /// 3 columns of 3 components matrix of high precision floating-point numbers.
  457. ///
  458. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  459. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  460. typedef tmat3x3<double, highp> highp_dmat3x3;
  461. /// @}
  462. /// @addtogroup core_precision
  463. /// @{
  464. /// 3 columns of 4 components matrix of low precision floating-point numbers.
  465. ///
  466. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  467. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  468. typedef tmat3x4<double, lowp> lowp_dmat3x4;
  469. /// 3 columns of 4 components matrix of medium precision floating-point numbers.
  470. ///
  471. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  472. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  473. typedef tmat3x4<double, mediump> mediump_dmat3x4;
  474. /// 3 columns of 4 components matrix of high precision floating-point numbers.
  475. ///
  476. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  477. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  478. typedef tmat3x4<double, highp> highp_dmat3x4;
  479. /// @}
  480. /// @addtogroup core_precision
  481. /// @{
  482. /// 4 columns of 2 components matrix of low precision floating-point numbers.
  483. ///
  484. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  485. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  486. typedef tmat4x2<double, lowp> lowp_dmat4x2;
  487. /// 4 columns of 2 components matrix of medium precision floating-point numbers.
  488. ///
  489. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  490. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  491. typedef tmat4x2<double, mediump> mediump_dmat4x2;
  492. /// 4 columns of 2 components matrix of high precision floating-point numbers.
  493. ///
  494. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  495. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  496. typedef tmat4x2<double, highp> highp_dmat4x2;
  497. /// @}
  498. /// @addtogroup core_precision
  499. /// @{
  500. /// 4 columns of 3 components matrix of low precision floating-point numbers.
  501. ///
  502. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  503. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  504. typedef tmat4x3<double, lowp> lowp_dmat4x3;
  505. /// 4 columns of 3 components matrix of medium precision floating-point numbers.
  506. ///
  507. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  508. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  509. typedef tmat4x3<double, mediump> mediump_dmat4x3;
  510. /// 4 columns of 3 components matrix of high precision floating-point numbers.
  511. ///
  512. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  513. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  514. typedef tmat4x3<double, highp> highp_dmat4x3;
  515. /// @}
  516. /// @addtogroup core_precision
  517. /// @{
  518. /// 4 columns of 4 components matrix of low precision floating-point numbers.
  519. ///
  520. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  521. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  522. typedef tmat4x4<double, lowp> lowp_dmat4;
  523. /// 4 columns of 4 components matrix of medium precision floating-point numbers.
  524. ///
  525. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  526. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  527. typedef tmat4x4<double, mediump> mediump_dmat4;
  528. /// 4 columns of 4 components matrix of high precision floating-point numbers.
  529. ///
  530. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  531. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  532. typedef tmat4x4<double, highp> highp_dmat4;
  533. /// 4 columns of 4 components matrix of low precision floating-point numbers.
  534. ///
  535. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  536. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  537. typedef tmat4x4<double, lowp> lowp_dmat4x4;
  538. /// 4 columns of 4 components matrix of medium precision floating-point numbers.
  539. ///
  540. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  541. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  542. typedef tmat4x4<double, mediump> mediump_dmat4x4;
  543. /// 4 columns of 4 components matrix of high precision floating-point numbers.
  544. ///
  545. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  546. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
  547. typedef tmat4x4<double, highp> highp_dmat4x4;
  548. /// @}
  549. #if(defined(GLM_PRECISION_LOWP_DOUBLE))
  550. typedef lowp_dmat2x2 dmat2x2;
  551. typedef lowp_dmat2x3 dmat2x3;
  552. typedef lowp_dmat2x4 dmat2x4;
  553. typedef lowp_dmat3x2 dmat3x2;
  554. typedef lowp_dmat3x3 dmat3x3;
  555. typedef lowp_dmat3x4 dmat3x4;
  556. typedef lowp_dmat4x2 dmat4x2;
  557. typedef lowp_dmat4x3 dmat4x3;
  558. typedef lowp_dmat4x4 dmat4x4;
  559. #elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE))
  560. typedef mediump_dmat2x2 dmat2x2;
  561. typedef mediump_dmat2x3 dmat2x3;
  562. typedef mediump_dmat2x4 dmat2x4;
  563. typedef mediump_dmat3x2 dmat3x2;
  564. typedef mediump_dmat3x3 dmat3x3;
  565. typedef mediump_dmat3x4 dmat3x4;
  566. typedef mediump_dmat4x2 dmat4x2;
  567. typedef mediump_dmat4x3 dmat4x3;
  568. typedef mediump_dmat4x4 dmat4x4;
  569. #else //defined(GLM_PRECISION_HIGHP_DOUBLE)
  570. //! 2 * 2 matrix of double-precision floating-point numbers.
  571. ///
  572. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  573. typedef highp_dmat2x2 dmat2;
  574. //! 3 * 3 matrix of double-precision floating-point numbers.
  575. ///
  576. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  577. typedef highp_dmat3x3 dmat3;
  578. //! 4 * 4 matrix of double-precision floating-point numbers.
  579. ///
  580. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  581. typedef highp_dmat4x4 dmat4;
  582. //! 2 * 2 matrix of double-precision floating-point numbers.
  583. ///
  584. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  585. typedef highp_dmat2x2 dmat2x2;
  586. //! 2 * 3 matrix of double-precision floating-point numbers.
  587. ///
  588. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  589. typedef highp_dmat2x3 dmat2x3;
  590. //! 2 * 4 matrix of double-precision floating-point numbers.
  591. ///
  592. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  593. typedef highp_dmat2x4 dmat2x4;
  594. //! 3 * 2 matrix of double-precision floating-point numbers.
  595. ///
  596. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  597. typedef highp_dmat3x2 dmat3x2;
  598. /// 3 * 3 matrix of double-precision floating-point numbers.
  599. ///
  600. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  601. typedef highp_dmat3x3 dmat3x3;
  602. /// 3 * 4 matrix of double-precision floating-point numbers.
  603. ///
  604. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  605. typedef highp_dmat3x4 dmat3x4;
  606. /// 4 * 2 matrix of double-precision floating-point numbers.
  607. ///
  608. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  609. typedef highp_dmat4x2 dmat4x2;
  610. /// 4 * 3 matrix of double-precision floating-point numbers.
  611. ///
  612. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  613. typedef highp_dmat4x3 dmat4x3;
  614. /// 4 * 4 matrix of double-precision floating-point numbers.
  615. ///
  616. /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
  617. typedef highp_dmat4x4 dmat4x4;
  618. #endif//GLM_PRECISION
  619. /// @}
  620. }//namespace glm