00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #pragma once
00030
00031 #include "precision.hpp"
00032
00033 namespace glm{
00034 namespace detail
00035 {
00036 template <typename T, precision P> struct tvec2;
00037 template <typename T, precision P> struct tvec3;
00038 template <typename T, precision P> struct tvec4;
00039 template <typename T, precision P> struct tmat2x2;
00040 template <typename T, precision P> struct tmat2x3;
00041 template <typename T, precision P> struct tmat2x4;
00042 template <typename T, precision P> struct tmat3x2;
00043 template <typename T, precision P> struct tmat3x3;
00044 template <typename T, precision P> struct tmat3x4;
00045 template <typename T, precision P> struct tmat4x2;
00046 template <typename T, precision P> struct tmat4x3;
00047 template <typename T, precision P> struct tmat4x4;
00048
00049 template <typename T, precision P, template <class, precision> class colType, template <class, precision> class rowType>
00050 struct outerProduct_trait{};
00051
00052 template <template <class, precision> class matType, typename T, precision P>
00053 struct compute_inverse{};
00054 }
00055
00058
00064 typedef detail::tmat2x2<float, lowp> lowp_mat2;
00065
00071 typedef detail::tmat2x2<float, mediump> mediump_mat2;
00072
00078 typedef detail::tmat2x2<float, highp> highp_mat2;
00079
00085 typedef detail::tmat2x2<float, lowp> lowp_mat2x2;
00086
00092 typedef detail::tmat2x2<float, mediump> mediump_mat2x2;
00093
00099 typedef detail::tmat2x2<float, highp> highp_mat2x2;
00100
00102
00105
00111 typedef detail::tmat2x3<float, lowp> lowp_mat2x3;
00112
00118 typedef detail::tmat2x3<float, mediump> mediump_mat2x3;
00119
00125 typedef detail::tmat2x3<float, highp> highp_mat2x3;
00126
00128
00131
00137 typedef detail::tmat2x4<float, lowp> lowp_mat2x4;
00138
00144 typedef detail::tmat2x4<float, mediump> mediump_mat2x4;
00145
00151 typedef detail::tmat2x4<float, highp> highp_mat2x4;
00152
00154
00157
00163 typedef detail::tmat3x2<float, lowp> lowp_mat3x2;
00164
00170 typedef detail::tmat3x2<float, mediump> mediump_mat3x2;
00171
00177 typedef detail::tmat3x2<float, highp> highp_mat3x2;
00178
00180
00183
00189 typedef detail::tmat3x3<float, lowp> lowp_mat3;
00190
00196 typedef detail::tmat3x3<float, mediump> mediump_mat3;
00197
00203 typedef detail::tmat3x3<float, highp> highp_mat3;
00204
00210 typedef detail::tmat3x3<float, lowp> lowp_mat3x3;
00211
00217 typedef detail::tmat3x3<float, mediump> mediump_mat3x3;
00218
00224 typedef detail::tmat3x3<float, highp> highp_mat3x3;
00225
00227
00230
00236 typedef detail::tmat3x4<float, lowp> lowp_mat3x4;
00237
00243 typedef detail::tmat3x4<float, mediump> mediump_mat3x4;
00244
00250 typedef detail::tmat3x4<float, highp> highp_mat3x4;
00251
00253
00256
00262 typedef detail::tmat4x2<float, lowp> lowp_mat4x2;
00263
00269 typedef detail::tmat4x2<float, mediump> mediump_mat4x2;
00270
00276 typedef detail::tmat4x2<float, highp> highp_mat4x2;
00277
00279
00282
00288 typedef detail::tmat4x3<float, lowp> lowp_mat4x3;
00289
00295 typedef detail::tmat4x3<float, mediump> mediump_mat4x3;
00296
00302 typedef detail::tmat4x3<float, highp> highp_mat4x3;
00303
00305
00306
00309
00315 typedef detail::tmat4x4<float, lowp> lowp_mat4;
00316
00322 typedef detail::tmat4x4<float, mediump> mediump_mat4;
00323
00329 typedef detail::tmat4x4<float, highp> highp_mat4;
00330
00336 typedef detail::tmat4x4<float, lowp> lowp_mat4x4;
00337
00343 typedef detail::tmat4x4<float, mediump> mediump_mat4x4;
00344
00350 typedef detail::tmat4x4<float, highp> highp_mat4x4;
00351
00353
00356
00358
00359
00360 #if(defined(GLM_PRECISION_LOWP_FLOAT))
00361 typedef lowp_mat2x2 mat2x2;
00362 typedef lowp_mat2x3 mat2x3;
00363 typedef lowp_mat2x4 mat2x4;
00364 typedef lowp_mat3x2 mat3x2;
00365 typedef lowp_mat3x3 mat3x3;
00366 typedef lowp_mat3x4 mat3x4;
00367 typedef lowp_mat4x2 mat4x2;
00368 typedef lowp_mat4x3 mat4x3;
00369 typedef lowp_mat4x4 mat4x4;
00370 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
00371 typedef mediump_mat2x2 mat2x2;
00372 typedef mediump_mat2x3 mat2x3;
00373 typedef mediump_mat2x4 mat2x4;
00374 typedef mediump_mat3x2 mat3x2;
00375 typedef mediump_mat3x3 mat3x3;
00376 typedef mediump_mat3x4 mat3x4;
00377 typedef mediump_mat4x2 mat4x2;
00378 typedef mediump_mat4x3 mat4x3;
00379 typedef mediump_mat4x4 mat4x4;
00380 #else
00381
00382
00383
00384 typedef highp_mat2x2 mat2x2;
00385
00389 typedef highp_mat2x3 mat2x3;
00390
00394 typedef highp_mat2x4 mat2x4;
00395
00399 typedef highp_mat3x2 mat3x2;
00400
00404 typedef highp_mat3x3 mat3x3;
00405
00409 typedef highp_mat3x4 mat3x4;
00410
00414 typedef highp_mat4x2 mat4x2;
00415
00419 typedef highp_mat4x3 mat4x3;
00420
00424 typedef highp_mat4x4 mat4x4;
00425
00426 #endif//GLM_PRECISION
00427
00431 typedef mat2x2 mat2;
00432
00436 typedef mat3x3 mat3;
00437
00441 typedef mat4x4 mat4;
00442
00444
00445
00448
00453 typedef detail::tmat2x2<double, lowp> lowp_dmat2;
00454
00459 typedef detail::tmat2x2<double, mediump> mediump_dmat2;
00460
00465 typedef detail::tmat2x2<double, highp> highp_dmat2;
00466
00471 typedef detail::tmat2x2<double, lowp> lowp_dmat2x2;
00472
00477 typedef detail::tmat2x2<double, mediump> mediump_dmat2x2;
00478
00483 typedef detail::tmat2x2<double, highp> highp_dmat2x2;
00484
00486
00489
00494 typedef detail::tmat2x3<double, lowp> lowp_dmat2x3;
00495
00500 typedef detail::tmat2x3<double, mediump> mediump_dmat2x3;
00501
00506 typedef detail::tmat2x3<double, highp> highp_dmat2x3;
00507
00509
00512
00517 typedef detail::tmat2x4<double, lowp> lowp_dmat2x4;
00518
00523 typedef detail::tmat2x4<double, mediump> mediump_dmat2x4;
00524
00529 typedef detail::tmat2x4<double, highp> highp_dmat2x4;
00530
00532
00535
00540 typedef detail::tmat3x2<double, lowp> lowp_dmat3x2;
00541
00546 typedef detail::tmat3x2<double, mediump> mediump_dmat3x2;
00547
00552 typedef detail::tmat3x2<double, highp> highp_dmat3x2;
00553
00555
00558
00563 typedef detail::tmat3x3<float, lowp> lowp_dmat3;
00564
00569 typedef detail::tmat3x3<double, mediump> mediump_dmat3;
00570
00575 typedef detail::tmat3x3<double, highp> highp_dmat3;
00576
00581 typedef detail::tmat3x3<double, lowp> lowp_dmat3x3;
00582
00587 typedef detail::tmat3x3<double, mediump> mediump_dmat3x3;
00588
00593 typedef detail::tmat3x3<double, highp> highp_dmat3x3;
00594
00596
00599
00604 typedef detail::tmat3x4<double, lowp> lowp_dmat3x4;
00605
00610 typedef detail::tmat3x4<double, mediump> mediump_dmat3x4;
00611
00616 typedef detail::tmat3x4<double, highp> highp_dmat3x4;
00617
00619
00622
00627 typedef detail::tmat4x2<double, lowp> lowp_dmat4x2;
00628
00633 typedef detail::tmat4x2<double, mediump> mediump_dmat4x2;
00634
00639 typedef detail::tmat4x2<double, highp> highp_dmat4x2;
00640
00642
00645
00650 typedef detail::tmat4x3<double, lowp> lowp_dmat4x3;
00651
00656 typedef detail::tmat4x3<double, mediump> mediump_dmat4x3;
00657
00662 typedef detail::tmat4x3<double, highp> highp_dmat4x3;
00663
00665
00668
00673 typedef detail::tmat4x4<double, lowp> lowp_dmat4;
00674
00679 typedef detail::tmat4x4<double, mediump> mediump_dmat4;
00680
00685 typedef detail::tmat4x4<double, highp> highp_dmat4;
00686
00691 typedef detail::tmat4x4<double, lowp> lowp_dmat4x4;
00692
00697 typedef detail::tmat4x4<double, mediump> mediump_dmat4x4;
00698
00703 typedef detail::tmat4x4<double, highp> highp_dmat4x4;
00704
00706
00707 #if(defined(GLM_PRECISION_LOWP_DOUBLE))
00708 typedef lowp_dmat2x2 dmat2x2;
00709 typedef lowp_dmat2x3 dmat2x3;
00710 typedef lowp_dmat2x4 dmat2x4;
00711 typedef lowp_dmat3x2 dmat3x2;
00712 typedef lowp_dmat3x3 dmat3x3;
00713 typedef lowp_dmat3x4 dmat3x4;
00714 typedef lowp_dmat4x2 dmat4x2;
00715 typedef lowp_dmat4x3 dmat4x3;
00716 typedef lowp_dmat4x4 dmat4x4;
00717 #elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE))
00718 typedef mediump_dmat2x2 dmat2x2;
00719 typedef mediump_dmat2x3 dmat2x3;
00720 typedef mediump_dmat2x4 dmat2x4;
00721 typedef mediump_dmat3x2 dmat3x2;
00722 typedef mediump_dmat3x3 dmat3x3;
00723 typedef mediump_dmat3x4 dmat3x4;
00724 typedef mediump_dmat4x2 dmat4x2;
00725 typedef mediump_dmat4x3 dmat4x3;
00726 typedef mediump_dmat4x4 dmat4x4;
00727 #else //defined(GLM_PRECISION_HIGHP_DOUBLE)
00728
00732 typedef highp_dmat2x2 dmat2;
00733
00737 typedef highp_dmat3x3 dmat3;
00738
00742 typedef highp_dmat4x4 dmat4;
00743
00747 typedef highp_dmat2x2 dmat2x2;
00748
00752 typedef highp_dmat2x3 dmat2x3;
00753
00757 typedef highp_dmat2x4 dmat2x4;
00758
00762 typedef highp_dmat3x2 dmat3x2;
00763
00767 typedef highp_dmat3x3 dmat3x3;
00768
00772 typedef highp_dmat3x4 dmat3x4;
00773
00777 typedef highp_dmat4x2 dmat4x2;
00778
00782 typedef highp_dmat4x3 dmat4x3;
00783
00787 typedef highp_dmat4x4 dmat4x4;
00788
00789 #endif//GLM_PRECISION
00790
00792 }