type_mat.hpp 40 KB

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