diff --git a/doc/about.html b/doc/about.html index 2fc28148..dbecd926 100644 --- a/doc/about.html +++ b/doc/about.html @@ -11,8 +11,8 @@ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); -
GLSL + Optional features = OpenGL Mathematics (GLM) A C++ mathematics library for graphics programming +
+
+
+
+tmat2x3< T > Struct Template Reference
+
+
+Template for 2 columns and 3 rows matrix of floating-point numbers. + More... + + +Detailed Description+template<typename T>
+
+ |
+ |
Template for 2 columns and 4 rows matrix of floating-point numbers. + More...
+ + +Template for 2 columns and 4 rows matrix of floating-point numbers.
+ +Definition at line 35 of file type_mat2x4.hpp.
++ |
Template for 3 columns and 2 rows matrix of floating-point numbers. + More...
+ + +Template for 3 columns and 2 rows matrix of floating-point numbers.
+ +Definition at line 35 of file type_mat3x2.hpp.
++ |
Template for 3 * 3 matrix of floating-point numbers. + More...
+ + +Template for 3 * 3 matrix of floating-point numbers.
+ +Definition at line 35 of file type_mat3x3.hpp.
++ |
Template for 3 columns and 4 rows matrix of floating-point numbers. + More...
+ + +Template for 3 columns and 4 rows matrix of floating-point numbers.
+ +Definition at line 35 of file type_mat3x4.hpp.
++ |
Template for 4 columns and 2 rows matrix of floating-point numbers. + More...
+ + +Template for 4 columns and 2 rows matrix of floating-point numbers.
+ +Definition at line 35 of file type_mat4x2.hpp.
++ |
Template for 4 columns and 3 rows matrix of floating-point numbers. + More...
+ + +Template for 4 columns and 3 rows matrix of floating-point numbers.
+ +Definition at line 35 of file type_mat4x3.hpp.
++ |
Template for 4 * 4 matrix of floating-point numbers. + More...
+ + +Template for 4 * 4 matrix of floating-point numbers.
+ +Definition at line 35 of file type_mat4x4.hpp.
++ |
Template for quaternion. + More...
+ + ++Public Member Functions | |
+ | tquat (tvec3< T > const &eulerAngles) |
Template for quaternion.
+From GLM_GTC_quaternion extension.
+ +Definition at line 36 of file gtc/quaternion.hpp.
++ |
The basic 2D vector type. + More...
+ + ++Public Member Functions | |
+template<typename U > | |
GLM_FUNC_DECL | tvec2 (U const &x) |
+template<typename U > | |
GLM_FUNC_DECL | tvec2 (tvec4< U > const &v) |
+template<typename U > | |
GLM_FUNC_DECL | tvec2 (tvec3< U > const &v) |
+template<typename U > | |
GLM_FUNC_DECL | tvec2 (tvec2< U > const &v) |
+template<typename U , typename V > | |
GLM_FUNC_DECL | tvec2 (U const &x, V const &y) |
The basic 2D vector type.
+ +Definition at line 31 of file type_vec2.hpp.
++ |
Basic 3D vector type. + More...
+ + ++Public Member Functions | |
+template<typename U > | |
GLM_FUNC_DECL | tvec3 (tvec3< U > const &v) |
+template<typename U > | |
GLM_FUNC_DECL | tvec3 (tvec4< U > const &v) |
+template<typename A , typename B > | |
GLM_FUNC_DECL | tvec3 (A const &s, tvec2< B > const &v) |
+template<typename A , typename B > | |
GLM_FUNC_DECL | tvec3 (tvec2< A > const &v, B const &s) |
+template<typename U , typename V , typename W > | |
GLM_FUNC_DECL | tvec3 (U const &x, V const &y, W const &z) |
+template<typename U > | |
GLM_FUNC_DECL | tvec3 (U const &x) |
Basic 3D vector type.
+ +Definition at line 31 of file type_vec3.hpp.
++ |
Basic 4D vector type. + More...
+ + ++Public Member Functions | |
+template<typename A , typename B , typename C > | |
GLM_FUNC_DECL | tvec4 (A const &s1, tref2< B > const &v, C const &s2) |
+template<typename A , typename B > | |
GLM_FUNC_DECL | tvec4 (tref3< A > const &v, B const &s) |
+template<typename U > | |
GLM_FUNC_DECL | tvec4 (U const &x) |
+template<typename A , typename B > | |
GLM_FUNC_DECL | tvec4 (tref2< A > const &v1, tref2< B > const &v2) |
+template<typename A , typename B > | |
GLM_FUNC_DECL | tvec4 (tref2< A > const &v1, tvec2< B > const &v2) |
+template<typename A , typename B , typename C > | |
GLM_FUNC_DECL | tvec4 (tvec2< A > const &v, B const &s1, C const &s2) |
+template<typename A , typename B , typename C > | |
GLM_FUNC_DECL | tvec4 (A const &s1, B const &s2, tref2< C > const &v) |
+template<typename A , typename B , typename C , typename D > | |
GLM_FUNC_DECL | tvec4 (A const &x, B const &y, C const &z, D const &w) |
+template<typename A , typename B , typename C > | |
GLM_FUNC_DECL | tvec4 (A const &s1, tvec2< B > const &v, C const &s2) |
+template<typename A , typename B , typename C > | |
GLM_FUNC_DECL | tvec4 (A const &s1, B const &s2, tvec2< C > const &v) |
+template<typename U > | |
GLM_FUNC_DECL | tvec4 (tvec4< U > const &v) |
+template<typename A , typename B > | |
GLM_FUNC_DECL | tvec4 (tvec2< A > const &v1, tvec2< B > const &v2) |
+template<typename A , typename B > | |
GLM_FUNC_DECL | tvec4 (tvec3< A > const &v, B const &s) |
+template<typename A , typename B , typename C > | |
GLM_FUNC_DECL | tvec4 (tref2< A > const &v, B const &s1, C const &s2) |
+template<typename A , typename B > | |
GLM_FUNC_DECL | tvec4 (A const &s, tvec3< B > const &v) |
+template<typename A , typename B > | |
GLM_FUNC_DECL | tvec4 (tvec2< A > const &v1, tref2< B > const &v2) |
+template<typename A , typename B > | |
GLM_FUNC_DECL | tvec4 (A const &s, tref3< B > const &v) |
Basic 4D vector type.
+ +Definition at line 31 of file type_vec4.hpp.
++ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-07-24 +00005 // Updated : 2008-08-31 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/_detail.hpp +00009 +00010 #ifndef glm_core_detail +00011 #define glm_core_detail +00012 +00013 #include "setup.hpp" +00014 #include <cassert> +00015 +00016 namespace glm{ +00017 namespace detail +00018 { +00019 class thalf; +00020 +00021 #if(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) // C99 detected, 64 bit types available +00022 typedef int64_t sint64; +00023 typedef uint64_t uint64; +00024 #elif(GLM_COMPILER & GLM_COMPILER_VC) +00025 typedef signed __int64 sint64; +00026 typedef unsigned __int64 uint64; +00027 #elif(GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_LLVM_GCC | GLM_COMPILER_CLANG)) +00028 __extension__ typedef signed long long sint64; +00029 __extension__ typedef unsigned long long uint64; +00030 #elif(GLM_COMPILER & GLM_COMPILER_BC) +00031 typedef Int64 sint64; +00032 typedef Uint64 uint64; +00033 #else//unknown compiler +00034 typedef signed long long sint64; +00035 typedef unsigned long long uint64; +00036 #endif//GLM_COMPILER +00037 +00038 template<bool C> +00039 struct If +00040 { +00041 template<typename F, typename T> +00042 static GLM_FUNC_QUALIFIER T apply(F functor, const T& val) +00043 { +00044 return functor(val); +00045 } +00046 }; +00047 +00048 template<> +00049 struct If<false> +00050 { +00051 template<typename F, typename T> +00052 static GLM_FUNC_QUALIFIER T apply(F, const T& val) +00053 { +00054 return val; +00055 } +00056 }; +00057 +00058 //template <typename T> +00059 //struct traits +00060 //{ +00061 // static const bool is_signed = false; +00062 // static const bool is_float = false; +00063 // static const bool is_vector = false; +00064 // static const bool is_matrix = false; +00065 // static const bool is_genType = false; +00066 // static const bool is_genIType = false; +00067 // static const bool is_genUType = false; +00068 //}; +00069 +00070 //template <> +00071 //struct traits<half> +00072 //{ +00073 // static const bool is_float = true; +00074 // static const bool is_genType = true; +00075 //}; +00076 +00077 //template <> +00078 //struct traits<float> +00079 //{ +00080 // static const bool is_float = true; +00081 // static const bool is_genType = true; +00082 //}; +00083 +00084 //template <> +00085 //struct traits<double> +00086 //{ +00087 // static const bool is_float = true; +00088 // static const bool is_genType = true; +00089 //}; +00090 +00091 //template <typename genType> +00092 //struct desc +00093 //{ +00094 // typedef genType type; +00095 // typedef genType * pointer; +00096 // typedef genType const* const_pointer; +00097 // typedef genType const *const const_pointer_const; +00098 // typedef genType *const pointer_const; +00099 // typedef genType & reference; +00100 // typedef genType const& const_reference; +00101 // typedef genType const& param_type; +00102 +00103 // typedef typename genType::value_type value_type; +00104 // typedef typename genType::size_type size_type; +00105 // static const typename size_type value_size; +00106 //}; +00107 +00108 //template <typename genType> +00109 //const typename desc<genType>::size_type desc<genType>::value_size = genType::value_size(); +00110 +00111 union uif32 +00112 { +00113 GLM_FUNC_QUALIFIER uif32() : +00114 i(0) +00115 {} +00116 +00117 GLM_FUNC_QUALIFIER uif32(float f) : +00118 f(f) +00119 {} +00120 +00121 GLM_FUNC_QUALIFIER uif32(unsigned int i) : +00122 i(i) +00123 {} +00124 +00125 float f; +00126 unsigned int i; +00127 }; +00128 +00129 union uif64 +00130 { +00131 GLM_FUNC_QUALIFIER uif64() : +00132 i(0) +00133 {} +00134 +00135 GLM_FUNC_QUALIFIER uif64(double f) : +00136 f(f) +00137 {} +00138 +00139 GLM_FUNC_QUALIFIER uif64(uint64 i) : +00140 i(i) +00141 {} +00142 +00143 double f; +00144 uint64 i; +00145 }; +00146 +00147 typedef uif32 uif; +00148 +00150 // int +00151 +00152 template <typename T> +00153 struct is_int +00154 { +00155 enum is_int_enum +00156 { +00157 _YES = 0, +00158 _NO = 1 +00159 }; +00160 }; +00161 +00162 #define GLM_DETAIL_IS_INT(T) \ +00163 template <> \ +00164 struct is_int<T> \ +00165 { \ +00166 enum is_int_enum \ +00167 { \ +00168 _YES = 1, \ +00169 _NO = 0 \ +00170 }; \ +00171 } +00172 +00174 // uint +00175 +00176 template <typename T> +00177 struct is_uint +00178 { +00179 enum is_uint_enum +00180 { +00181 _YES = 0, +00182 _NO = 1 +00183 }; +00184 }; +00185 +00186 #define GLM_DETAIL_IS_UINT(T) \ +00187 template <> \ +00188 struct is_uint<T> \ +00189 { \ +00190 enum is_uint_enum \ +00191 { \ +00192 _YES = 1, \ +00193 _NO = 0 \ +00194 }; \ +00195 } +00196 +00197 //GLM_DETAIL_IS_UINT(unsigned long long) +00198 +00200 // float +00201 +00202 template <typename T> +00203 struct is_float +00204 { +00205 enum is_float_enum +00206 { +00207 _YES = 0, +00208 _NO = 1 +00209 }; +00210 }; +00211 +00212 #define GLM_DETAIL_IS_FLOAT(T) \ +00213 template <> \ +00214 struct is_float<T> \ +00215 { \ +00216 enum is_float_enum \ +00217 { \ +00218 _YES = 1, \ +00219 _NO = 0 \ +00220 }; \ +00221 } +00222 +00224 // bool +00225 +00226 template <typename T> +00227 struct is_bool +00228 { +00229 enum is_bool_enum +00230 { +00231 _YES = 0, +00232 _NO = 1 +00233 }; +00234 }; +00235 +00236 template <> +00237 struct is_bool<bool> +00238 { +00239 enum is_bool_enum +00240 { +00241 _YES = 1, +00242 _NO = 0 +00243 }; +00244 }; +00245 +00247 // vector +00248 +00249 template <typename T> +00250 struct is_vector +00251 { +00252 enum is_vector_enum +00253 { +00254 _YES = 0, +00255 _NO = 1 +00256 }; +00257 }; +00258 +00259 # define GLM_DETAIL_IS_VECTOR(TYPE) \ +00260 template <typename T> \ +00261 struct is_vector<TYPE<T> > \ +00262 { \ +00263 enum is_vector_enum \ +00264 { \ +00265 _YES = 1, \ +00266 _NO = 0 \ +00267 }; \ +00268 } +00269 +00271 // matrix +00272 +00273 template <typename T> +00274 struct is_matrix +00275 { +00276 enum is_matrix_enum +00277 { +00278 _YES = 0, +00279 _NO = 1 +00280 }; +00281 }; +00282 +00283 #define GLM_DETAIL_IS_MATRIX(T) \ +00284 template <> \ +00285 struct is_matrix \ +00286 { \ +00287 enum is_matrix_enum \ +00288 { \ +00289 _YES = 1, \ +00290 _NO = 0 \ +00291 }; \ +00292 } +00293 +00295 // type +00296 +00297 template <typename T> +00298 struct type +00299 { +00300 enum type_enum +00301 { +00302 is_float = is_float<T>::_YES, +00303 is_int = is_int<T>::_YES, +00304 is_uint = is_uint<T>::_YES, +00305 is_bool = is_bool<T>::_YES +00306 }; +00307 }; +00308 +00310 // type +00311 +00312 typedef signed char int8; +00313 typedef signed short int16; +00314 typedef signed int int32; +00315 typedef detail::sint64 int64; +00316 +00317 typedef unsigned char uint8; +00318 typedef unsigned short uint16; +00319 typedef unsigned int uint32; +00320 typedef detail::uint64 uint64; +00321 +00322 typedef detail::thalf float16; +00323 typedef float float32; +00324 typedef double float64; +00325 +00326 }//namespace detail +00327 }//namespace glm +00328 +00329 #if((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2005)) +00330 # define GLM_DEPRECATED __declspec(deprecated) +00331 # define GLM_ALIGN(x) __declspec(align(x)) +00332 # define GLM_ALIGNED_STRUCT(x) __declspec(align(x)) struct +00333 # define GLM_RESTRICT __declspec(restrict) +00334 # define GLM_RESTRICT_VAR __restrict +00335 #elif((GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_LLVM_GCC)) && (GLM_COMPILER >= GLM_COMPILER_GCC31)) +00336 # define GLM_DEPRECATED __attribute__((__deprecated__)) +00337 # define GLM_ALIGN(x) __attribute__((aligned(x))) +00338 # define GLM_ALIGNED_STRUCT(x) struct __attribute__((aligned(x))) +00339 # if(GLM_COMPILER >= GLM_COMPILER_GCC33) +00340 # define GLM_RESTRICT __restrict__ +00341 # define GLM_RESTRICT_VAR __restrict__ +00342 # else +00343 # define GLM_RESTRICT +00344 # define GLM_RESTRICT_VAR +00345 # endif +00346 # define GLM_RESTRICT __restrict__ +00347 # define GLM_RESTRICT_VAR __restrict__ +00348 #else +00349 # define GLM_DEPRECATED +00350 # define GLM_ALIGN +00351 # define GLM_ALIGNED_STRUCT(x) +00352 # define GLM_RESTRICT +00353 # define GLM_RESTRICT_VAR +00354 #endif//GLM_COMPILER +00355 +00356 #endif//glm_core_detail +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2011-02-21 +00005 // Updated : 2011-02-21 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/_fixes.hpp +00009 +00011 #ifdef max +00012 #undef max +00013 #endif +00014 +00016 #ifdef min +00017 #undef min +00018 #endif +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2006-04-20 +00005 // Updated : 2008-08-22 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/_swizzle.hpp +00009 +00010 #ifndef glm_core_swizzle +00011 #define glm_core_swizzle +00012 +00013 namespace glm +00014 { +00015 enum comp +00016 { +00017 X = 0, +00018 R = 0, +00019 S = 0, +00020 Y = 1, +00021 G = 1, +00022 T = 1, +00023 Z = 2, +00024 B = 2, +00025 P = 2, +00026 W = 3, +00027 A = 3, +00028 Q = 3 +00029 }; +00030 }//namespace glm +00031 +00032 #if(defined(GLM_SWIZZLE_XYZW) || defined(GLM_SWIZZLE)) +00033 +00034 #define xx swizzle(glm::X, glm::X) +00035 #define yx swizzle(glm::Y, glm::X) +00036 #define zx swizzle(glm::Z, glm::X) +00037 #define wx swizzle(glm::W, glm::X) +00038 #define xy swizzle(glm::X, glm::Y) +00039 #define yy swizzle(glm::Y, glm::Y) +00040 #define zy swizzle(glm::Z, glm::Y) +00041 #define wy swizzle(glm::W, glm::Y) +00042 #define xz swizzle(glm::X, glm::Z) +00043 #define yz swizzle(glm::Y, glm::Z) +00044 #define zz swizzle(glm::Z, glm::Z) +00045 #define wz swizzle(glm::W, glm::Z) +00046 #define xw swizzle(glm::X, glm::W) +00047 #define yw swizzle(glm::Y, glm::W) +00048 #define zw swizzle(glm::Z, glm::W) +00049 #define ww swizzle(glm::W, glm::W) +00050 +00051 #endif +00052 +00053 #if(defined(GLM_SWIZZLE_RGBA) || defined(GLM_SWIZZLE)) +00054 +00055 #define rr swizzle(glm::X, glm::X) +00056 #define gr swizzle(glm::Y, glm::X) +00057 #define br swizzle(glm::Z, glm::X) +00058 #define ar swizzle(glm::W, glm::X) +00059 #define rg swizzle(glm::X, glm::Y) +00060 #define gg swizzle(glm::Y, glm::Y) +00061 #define bg swizzle(glm::Z, glm::Y) +00062 #define ag swizzle(glm::W, glm::Y) +00063 #define rb swizzle(glm::X, glm::Z) +00064 #define gb swizzle(glm::Y, glm::Z) +00065 #define bb swizzle(glm::Z, glm::Z) +00066 #define ab swizzle(glm::W, glm::Z) +00067 #define ra swizzle(glm::X, glm::W) +00068 #define ga swizzle(glm::Y, glm::W) +00069 #define ba swizzle(glm::Z, glm::W) +00070 #define aa swizzle(glm::W, glm::W) +00071 +00072 #endif +00073 +00074 #if(defined(GLM_FORCE_SWIZZLE_STPQ) || defined(GLM_SWIZZLE)) +00075 +00076 #define ss swizzle(glm::X, glm::X) +00077 #define ts swizzle(glm::Y, glm::X) +00078 #define ps swizzle(glm::Z, glm::X) +00079 #define qs swizzle(glm::W, glm::X) +00080 #define st swizzle(glm::X, glm::Y) +00081 #define tt swizzle(glm::Y, glm::Y) +00082 #define pt swizzle(glm::Z, glm::Y) +00083 #define qt swizzle(glm::W, glm::Y) +00084 #define sp swizzle(glm::X, glm::Z) +00085 #define tp swizzle(glm::Y, glm::Z) +00086 #define pp swizzle(glm::Z, glm::Z) +00087 #define qp swizzle(glm::W, glm::Z) +00088 #define sq swizzle(glm::X, glm::W) +00089 #define tq swizzle(glm::Y, glm::W) +00090 #define pq swizzle(glm::Z, glm::W) +00091 #define qq swizzle(glm::W, glm::W) +00092 +00093 #endif +00094 +00095 #if(defined(GLM_SWIZZLE_XYZW) || defined(GLM_SWIZZLE)) +00096 +00097 #define xxx swizzle(glm::X, glm::X, glm::X) +00098 #define yxx swizzle(glm::Y, glm::X, glm::X) +00099 #define zxx swizzle(glm::Z, glm::X, glm::X) +00100 #define wxx swizzle(glm::W, glm::X, glm::X) +00101 #define xyx swizzle(glm::X, glm::Y, glm::X) +00102 #define yyx swizzle(glm::Y, glm::Y, glm::X) +00103 #define zyx swizzle(glm::Z, glm::Y, glm::X) +00104 #define wyx swizzle(glm::W, glm::Y, glm::X) +00105 #define xzx swizzle(glm::X, glm::Z, glm::X) +00106 #define yzx swizzle(glm::Y, glm::Z, glm::X) +00107 #define zzx swizzle(glm::Z, glm::Z, glm::X) +00108 #define wzx swizzle(glm::W, glm::Z, glm::X) +00109 #define xwx swizzle(glm::X, glm::W, glm::X) +00110 #define ywx swizzle(glm::Y, glm::W, glm::X) +00111 #define zwx swizzle(glm::Z, glm::W, glm::X) +00112 #define wwx swizzle(glm::W, glm::W, glm::X) +00113 #define xxy swizzle(glm::X, glm::X, glm::Y) +00114 #define yxy swizzle(glm::Y, glm::X, glm::Y) +00115 #define zxy swizzle(glm::Z, glm::X, glm::Y) +00116 #define wxy swizzle(glm::W, glm::X, glm::Y) +00117 #define xyy swizzle(glm::X, glm::Y, glm::Y) +00118 #define yyy swizzle(glm::Y, glm::Y, glm::Y) +00119 #define zyy swizzle(glm::Z, glm::Y, glm::Y) +00120 #define wyy swizzle(glm::W, glm::Y, glm::Y) +00121 #define xzy swizzle(glm::X, glm::Z, glm::Y) +00122 #define yzy swizzle(glm::Y, glm::Z, glm::Y) +00123 #define zzy swizzle(glm::Z, glm::Z, glm::Y) +00124 #define wzy swizzle(glm::W, glm::Z, glm::Y) +00125 #define xwy swizzle(glm::X, glm::W, glm::Y) +00126 #define ywy swizzle(glm::Y, glm::W, glm::Y) +00127 #define zwy swizzle(glm::Z, glm::W, glm::Y) +00128 #define wwy swizzle(glm::W, glm::W, glm::Y) +00129 #define xxz swizzle(glm::X, glm::X, glm::Z) +00130 #define yxz swizzle(glm::Y, glm::X, glm::Z) +00131 #define zxz swizzle(glm::Z, glm::X, glm::Z) +00132 #define wxz swizzle(glm::W, glm::X, glm::Z) +00133 #define xyz swizzle(glm::X, glm::Y, glm::Z) +00134 #define yyz swizzle(glm::Y, glm::Y, glm::Z) +00135 #define zyz swizzle(glm::Z, glm::Y, glm::Z) +00136 #define wyz swizzle(glm::W, glm::Y, glm::Z) +00137 #define xzz swizzle(glm::X, glm::Z, glm::Z) +00138 #define yzz swizzle(glm::Y, glm::Z, glm::Z) +00139 #define zzz swizzle(glm::Z, glm::Z, glm::Z) +00140 #define wzz swizzle(glm::W, glm::Z, glm::Z) +00141 #define xwz swizzle(glm::X, glm::W, glm::Z) +00142 #define ywz swizzle(glm::Y, glm::W, glm::Z) +00143 #define zwz swizzle(glm::Z, glm::W, glm::Z) +00144 #define wwz swizzle(glm::W, glm::W, glm::Z) +00145 #define xxw swizzle(glm::X, glm::X, glm::W) +00146 #define yxw swizzle(glm::Y, glm::X, glm::W) +00147 #define zxw swizzle(glm::Z, glm::X, glm::W) +00148 #define wxw swizzle(glm::W, glm::X, glm::W) +00149 #define xyw swizzle(glm::X, glm::Y, glm::W) +00150 #define yyw swizzle(glm::Y, glm::Y, glm::W) +00151 #define zyw swizzle(glm::Z, glm::Y, glm::W) +00152 #define wyw swizzle(glm::W, glm::Y, glm::W) +00153 #define xzw swizzle(glm::X, glm::Z, glm::W) +00154 #define yzw swizzle(glm::Y, glm::Z, glm::W) +00155 #define zzw swizzle(glm::Z, glm::Z, glm::W) +00156 #define wzw swizzle(glm::W, glm::Z, glm::W) +00157 #define xww swizzle(glm::X, glm::W, glm::W) +00158 #define yww swizzle(glm::Y, glm::W, glm::W) +00159 #define zww swizzle(glm::Z, glm::W, glm::W) +00160 #define www swizzle(glm::W, glm::W, glm::W) +00161 +00162 #endif +00163 +00164 #if(defined(GLM_SWIZZLE_RGBA) || defined(GLM_SWIZZLE)) +00165 +00166 #define rrr swizzle(glm::X, glm::X, glm::X) +00167 #define grr swizzle(glm::Y, glm::X, glm::X) +00168 #define brr swizzle(glm::Z, glm::X, glm::X) +00169 #define arr swizzle(glm::W, glm::X, glm::X) +00170 #define rgr swizzle(glm::X, glm::Y, glm::X) +00171 #define ggr swizzle(glm::Y, glm::Y, glm::X) +00172 #define bgr swizzle(glm::Z, glm::Y, glm::X) +00173 #define agr swizzle(glm::W, glm::Y, glm::X) +00174 #define rbr swizzle(glm::X, glm::Z, glm::X) +00175 #define gbr swizzle(glm::Y, glm::Z, glm::X) +00176 #define bbr swizzle(glm::Z, glm::Z, glm::X) +00177 #define abr swizzle(glm::W, glm::Z, glm::X) +00178 #define rar swizzle(glm::X, glm::W, glm::X) +00179 #define gar swizzle(glm::Y, glm::W, glm::X) +00180 #define bar swizzle(glm::Z, glm::W, glm::X) +00181 #define aar swizzle(glm::W, glm::W, glm::X) +00182 #define rrg swizzle(glm::X, glm::X, glm::Y) +00183 #define grg swizzle(glm::Y, glm::X, glm::Y) +00184 #define brg swizzle(glm::Z, glm::X, glm::Y) +00185 #define arg swizzle(glm::W, glm::X, glm::Y) +00186 #define rgg swizzle(glm::X, glm::Y, glm::Y) +00187 #define ggg swizzle(glm::Y, glm::Y, glm::Y) +00188 #define bgg swizzle(glm::Z, glm::Y, glm::Y) +00189 #define agg swizzle(glm::W, glm::Y, glm::Y) +00190 #define rbg swizzle(glm::X, glm::Z, glm::Y) +00191 #define gbg swizzle(glm::Y, glm::Z, glm::Y) +00192 #define bbg swizzle(glm::Z, glm::Z, glm::Y) +00193 #define abg swizzle(glm::W, glm::Z, glm::Y) +00194 #define rag swizzle(glm::X, glm::W, glm::Y) +00195 #define gag swizzle(glm::Y, glm::W, glm::Y) +00196 #define bag swizzle(glm::Z, glm::W, glm::Y) +00197 #define aag swizzle(glm::W, glm::W, glm::Y) +00198 #define rrb swizzle(glm::X, glm::X, glm::Z) +00199 #define grb swizzle(glm::Y, glm::X, glm::Z) +00200 #define brb swizzle(glm::Z, glm::X, glm::Z) +00201 #define arb swizzle(glm::W, glm::X, glm::Z) +00202 #define rgb swizzle(glm::X, glm::Y, glm::Z) +00203 #define ggb swizzle(glm::Y, glm::Y, glm::Z) +00204 #define bgb swizzle(glm::Z, glm::Y, glm::Z) +00205 #define agb swizzle(glm::W, glm::Y, glm::Z) +00206 #define rbb swizzle(glm::X, glm::Z, glm::Z) +00207 #define gbb swizzle(glm::Y, glm::Z, glm::Z) +00208 #define bbb swizzle(glm::Z, glm::Z, glm::Z) +00209 #define abb swizzle(glm::W, glm::Z, glm::Z) +00210 #define rab swizzle(glm::X, glm::W, glm::Z) +00211 #define gab swizzle(glm::Y, glm::W, glm::Z) +00212 #define bab swizzle(glm::Z, glm::W, glm::Z) +00213 #define aab swizzle(glm::W, glm::W, glm::Z) +00214 #define rra swizzle(glm::X, glm::X, glm::W) +00215 #define gra swizzle(glm::Y, glm::X, glm::W) +00216 #define bra swizzle(glm::Z, glm::X, glm::W) +00217 #define ara swizzle(glm::W, glm::X, glm::W) +00218 #define rga swizzle(glm::X, glm::Y, glm::W) +00219 #define gga swizzle(glm::Y, glm::Y, glm::W) +00220 #define bga swizzle(glm::Z, glm::Y, glm::W) +00221 #define aga swizzle(glm::W, glm::Y, glm::W) +00222 #define rba swizzle(glm::X, glm::Z, glm::W) +00223 #define gba swizzle(glm::Y, glm::Z, glm::W) +00224 #define bba swizzle(glm::Z, glm::Z, glm::W) +00225 #define aba swizzle(glm::W, glm::Z, glm::W) +00226 #define raa swizzle(glm::X, glm::W, glm::W) +00227 #define gaa swizzle(glm::Y, glm::W, glm::W) +00228 #define baa swizzle(glm::Z, glm::W, glm::W) +00229 #define aaa swizzle(glm::W, glm::W, glm::W) +00230 +00231 #endif +00232 +00233 #if(defined(GLM_FORCE_SWIZZLE_STPQ) || defined(GLM_SWIZZLE)) +00234 +00235 #define sss swizzle(glm::X, glm::X, glm::X) +00236 #define tss swizzle(glm::Y, glm::X, glm::X) +00237 #define pss swizzle(glm::Z, glm::X, glm::X) +00238 #define qss swizzle(glm::W, glm::X, glm::X) +00239 #define sts swizzle(glm::X, glm::Y, glm::X) +00240 #define tts swizzle(glm::Y, glm::Y, glm::X) +00241 #define pts swizzle(glm::Z, glm::Y, glm::X) +00242 #define qts swizzle(glm::W, glm::Y, glm::X) +00243 #define sps swizzle(glm::X, glm::Z, glm::X) +00244 #define tps swizzle(glm::Y, glm::Z, glm::X) +00245 #define pps swizzle(glm::Z, glm::Z, glm::X) +00246 #define qps swizzle(glm::W, glm::Z, glm::X) +00247 #define sqs swizzle(glm::X, glm::W, glm::X) +00248 #define tqs swizzle(glm::Y, glm::W, glm::X) +00249 #define pqs swizzle(glm::Z, glm::W, glm::X) +00250 #define qqs swizzle(glm::W, glm::W, glm::X) +00251 #define sst swizzle(glm::X, glm::X, glm::Y) +00252 #define tst swizzle(glm::Y, glm::X, glm::Y) +00253 #define pst swizzle(glm::Z, glm::X, glm::Y) +00254 #define qst swizzle(glm::W, glm::X, glm::Y) +00255 #define stt swizzle(glm::X, glm::Y, glm::Y) +00256 #define ttt swizzle(glm::Y, glm::Y, glm::Y) +00257 #define ptt swizzle(glm::Z, glm::Y, glm::Y) +00258 #define qtt swizzle(glm::W, glm::Y, glm::Y) +00259 #define spt swizzle(glm::X, glm::Z, glm::Y) +00260 #define tpt swizzle(glm::Y, glm::Z, glm::Y) +00261 #define ppt swizzle(glm::Z, glm::Z, glm::Y) +00262 #define qpt swizzle(glm::W, glm::Z, glm::Y) +00263 #define sqt swizzle(glm::X, glm::W, glm::Y) +00264 #define tqt swizzle(glm::Y, glm::W, glm::Y) +00265 #define pqt swizzle(glm::Z, glm::W, glm::Y) +00266 #define qqt swizzle(glm::W, glm::W, glm::Y) +00267 #define ssp swizzle(glm::X, glm::X, glm::Z) +00268 #define tsp swizzle(glm::Y, glm::X, glm::Z) +00269 #define psp swizzle(glm::Z, glm::X, glm::Z) +00270 #define qsp swizzle(glm::W, glm::X, glm::Z) +00271 #define stp swizzle(glm::X, glm::Y, glm::Z) +00272 #define ttp swizzle(glm::Y, glm::Y, glm::Z) +00273 #define ptp swizzle(glm::Z, glm::Y, glm::Z) +00274 #define qtp swizzle(glm::W, glm::Y, glm::Z) +00275 #define spp swizzle(glm::X, glm::Z, glm::Z) +00276 #define tpp swizzle(glm::Y, glm::Z, glm::Z) +00277 #define ppp swizzle(glm::Z, glm::Z, glm::Z) +00278 #define qpp swizzle(glm::W, glm::Z, glm::Z) +00279 #define sqp swizzle(glm::X, glm::W, glm::Z) +00280 #define tqp swizzle(glm::Y, glm::W, glm::Z) +00281 #define pqp swizzle(glm::Z, glm::W, glm::Z) +00282 #define qqp swizzle(glm::W, glm::W, glm::Z) +00283 #define ssq swizzle(glm::X, glm::X, glm::W) +00284 #define tsq swizzle(glm::Y, glm::X, glm::W) +00285 #define psq swizzle(glm::Z, glm::X, glm::W) +00286 #define qsq swizzle(glm::W, glm::X, glm::W) +00287 #define stq swizzle(glm::X, glm::Y, glm::W) +00288 #define ttq swizzle(glm::Y, glm::Y, glm::W) +00289 #define ptq swizzle(glm::Z, glm::Y, glm::W) +00290 #define qtq swizzle(glm::W, glm::Y, glm::W) +00291 #define spq swizzle(glm::X, glm::Z, glm::W) +00292 #define tpq swizzle(glm::Y, glm::Z, glm::W) +00293 #define ppq swizzle(glm::Z, glm::Z, glm::W) +00294 #define qpq swizzle(glm::W, glm::Z, glm::W) +00295 #define sqq swizzle(glm::X, glm::W, glm::W) +00296 #define tqq swizzle(glm::Y, glm::W, glm::W) +00297 #define pqq swizzle(glm::Z, glm::W, glm::W) +00298 #define qqq swizzle(glm::W, glm::W, glm::W) +00299 +00300 #endif +00301 +00302 #if(defined(GLM_SWIZZLE_XYZW) || defined(GLM_SWIZZLE)) +00303 +00304 #define xxxx swizzle(glm::X, glm::X, glm::X, glm::X) +00305 #define yxxx swizzle(glm::Y, glm::X, glm::X, glm::X) +00306 #define zxxx swizzle(glm::Z, glm::X, glm::X, glm::X) +00307 #define wxxx swizzle(glm::W, glm::X, glm::X, glm::X) +00308 #define xyxx swizzle(glm::X, glm::Y, glm::X, glm::X) +00309 #define yyxx swizzle(glm::Y, glm::Y, glm::X, glm::X) +00310 #define zyxx swizzle(glm::Z, glm::Y, glm::X, glm::X) +00311 #define wyxx swizzle(glm::W, glm::Y, glm::X, glm::X) +00312 #define xzxx swizzle(glm::X, glm::Z, glm::X, glm::X) +00313 #define yzxx swizzle(glm::Y, glm::Z, glm::X, glm::X) +00314 #define zzxx swizzle(glm::Z, glm::Z, glm::X, glm::X) +00315 #define wzxx swizzle(glm::W, glm::Z, glm::X, glm::X) +00316 #define xwxx swizzle(glm::X, glm::W, glm::X, glm::X) +00317 #define ywxx swizzle(glm::Y, glm::W, glm::X, glm::X) +00318 #define zwxx swizzle(glm::Z, glm::W, glm::X, glm::X) +00319 #define wwxx swizzle(glm::W, glm::W, glm::X, glm::X) +00320 #define xxyx swizzle(glm::X, glm::X, glm::Y, glm::X) +00321 #define yxyx swizzle(glm::Y, glm::X, glm::Y, glm::X) +00322 #define zxyx swizzle(glm::Z, glm::X, glm::Y, glm::X) +00323 #define wxyx swizzle(glm::W, glm::X, glm::Y, glm::X) +00324 #define xyyx swizzle(glm::X, glm::Y, glm::Y, glm::X) +00325 #define yyyx swizzle(glm::Y, glm::Y, glm::Y, glm::X) +00326 #define zyyx swizzle(glm::Z, glm::Y, glm::Y, glm::X) +00327 #define wyyx swizzle(glm::W, glm::Y, glm::Y, glm::X) +00328 #define xzyx swizzle(glm::X, glm::Z, glm::Y, glm::X) +00329 #define yzyx swizzle(glm::Y, glm::Z, glm::Y, glm::X) +00330 #define zzyx swizzle(glm::Z, glm::Z, glm::Y, glm::X) +00331 #define wzyx swizzle(glm::W, glm::Z, glm::Y, glm::X) +00332 #define xwyx swizzle(glm::X, glm::W, glm::Y, glm::X) +00333 #define ywyx swizzle(glm::Y, glm::W, glm::Y, glm::X) +00334 #define zwyx swizzle(glm::Z, glm::W, glm::Y, glm::X) +00335 #define wwyx swizzle(glm::W, glm::W, glm::Y, glm::X) +00336 #define xxzx swizzle(glm::X, glm::X, glm::Z, glm::X) +00337 #define yxzx swizzle(glm::Y, glm::X, glm::Z, glm::X) +00338 #define zxzx swizzle(glm::Z, glm::X, glm::Z, glm::X) +00339 #define wxzx swizzle(glm::W, glm::X, glm::Z, glm::X) +00340 #define xyzx swizzle(glm::X, glm::Y, glm::Z, glm::X) +00341 #define yyzx swizzle(glm::Y, glm::Y, glm::Z, glm::X) +00342 #define zyzx swizzle(glm::Z, glm::Y, glm::Z, glm::X) +00343 #define wyzx swizzle(glm::W, glm::Y, glm::Z, glm::X) +00344 #define xzzx swizzle(glm::X, glm::Z, glm::Z, glm::X) +00345 #define yzzx swizzle(glm::Y, glm::Z, glm::Z, glm::X) +00346 #define zzzx swizzle(glm::Z, glm::Z, glm::Z, glm::X) +00347 #define wzzx swizzle(glm::W, glm::Z, glm::Z, glm::X) +00348 #define xwzx swizzle(glm::X, glm::W, glm::Z, glm::X) +00349 #define ywzx swizzle(glm::Y, glm::W, glm::Z, glm::X) +00350 #define zwzx swizzle(glm::Z, glm::W, glm::Z, glm::X) +00351 #define wwzx swizzle(glm::W, glm::W, glm::Z, glm::X) +00352 #define xxwx swizzle(glm::X, glm::X, glm::W, glm::X) +00353 #define yxwx swizzle(glm::Y, glm::X, glm::W, glm::X) +00354 #define zxwx swizzle(glm::Z, glm::X, glm::W, glm::X) +00355 #define wxwx swizzle(glm::W, glm::X, glm::W, glm::X) +00356 #define xywx swizzle(glm::X, glm::Y, glm::W, glm::X) +00357 #define yywx swizzle(glm::Y, glm::Y, glm::W, glm::X) +00358 #define zywx swizzle(glm::Z, glm::Y, glm::W, glm::X) +00359 #define wywx swizzle(glm::W, glm::Y, glm::W, glm::X) +00360 #define xzwx swizzle(glm::X, glm::Z, glm::W, glm::X) +00361 #define yzwx swizzle(glm::Y, glm::Z, glm::W, glm::X) +00362 #define zzwx swizzle(glm::Z, glm::Z, glm::W, glm::X) +00363 #define wzwx swizzle(glm::W, glm::Z, glm::W, glm::X) +00364 #define xwwx swizzle(glm::X, glm::W, glm::W, glm::X) +00365 #define ywwx swizzle(glm::Y, glm::W, glm::W, glm::X) +00366 #define zwwx swizzle(glm::Z, glm::W, glm::W, glm::X) +00367 #define wwwx swizzle(glm::W, glm::W, glm::W, glm::X) +00368 #define xxxy swizzle(glm::X, glm::X, glm::X, glm::Y) +00369 #define yxxy swizzle(glm::Y, glm::X, glm::X, glm::Y) +00370 #define zxxy swizzle(glm::Z, glm::X, glm::X, glm::Y) +00371 #define wxxy swizzle(glm::W, glm::X, glm::X, glm::Y) +00372 #define xyxy swizzle(glm::X, glm::Y, glm::X, glm::Y) +00373 #define yyxy swizzle(glm::Y, glm::Y, glm::X, glm::Y) +00374 #define zyxy swizzle(glm::Z, glm::Y, glm::X, glm::Y) +00375 #define wyxy swizzle(glm::W, glm::Y, glm::X, glm::Y) +00376 #define xzxy swizzle(glm::X, glm::Z, glm::X, glm::Y) +00377 #define yzxy swizzle(glm::Y, glm::Z, glm::X, glm::Y) +00378 #define zzxy swizzle(glm::Z, glm::Z, glm::X, glm::Y) +00379 #define wzxy swizzle(glm::W, glm::Z, glm::X, glm::Y) +00380 #define xwxy swizzle(glm::X, glm::W, glm::X, glm::Y) +00381 #define ywxy swizzle(glm::Y, glm::W, glm::X, glm::Y) +00382 #define zwxy swizzle(glm::Z, glm::W, glm::X, glm::Y) +00383 #define wwxy swizzle(glm::W, glm::W, glm::X, glm::Y) +00384 #define xxyy swizzle(glm::X, glm::X, glm::Y, glm::Y) +00385 #define yxyy swizzle(glm::Y, glm::X, glm::Y, glm::Y) +00386 #define zxyy swizzle(glm::Z, glm::X, glm::Y, glm::Y) +00387 #define wxyy swizzle(glm::W, glm::X, glm::Y, glm::Y) +00388 #define xyyy swizzle(glm::X, glm::Y, glm::Y, glm::Y) +00389 #define yyyy swizzle(glm::Y, glm::Y, glm::Y, glm::Y) +00390 #define zyyy swizzle(glm::Z, glm::Y, glm::Y, glm::Y) +00391 #define wyyy swizzle(glm::W, glm::Y, glm::Y, glm::Y) +00392 #define xzyy swizzle(glm::X, glm::Z, glm::Y, glm::Y) +00393 #define yzyy swizzle(glm::Y, glm::Z, glm::Y, glm::Y) +00394 #define zzyy swizzle(glm::Z, glm::Z, glm::Y, glm::Y) +00395 #define wzyy swizzle(glm::W, glm::Z, glm::Y, glm::Y) +00396 #define xwyy swizzle(glm::X, glm::W, glm::Y, glm::Y) +00397 #define ywyy swizzle(glm::Y, glm::W, glm::Y, glm::Y) +00398 #define zwyy swizzle(glm::Z, glm::W, glm::Y, glm::Y) +00399 #define wwyy swizzle(glm::W, glm::W, glm::Y, glm::Y) +00400 #define xxzy swizzle(glm::X, glm::X, glm::Z, glm::Y) +00401 #define yxzy swizzle(glm::Y, glm::X, glm::Z, glm::Y) +00402 #define zxzy swizzle(glm::Z, glm::X, glm::Z, glm::Y) +00403 #define wxzy swizzle(glm::W, glm::X, glm::Z, glm::Y) +00404 #define xyzy swizzle(glm::X, glm::Y, glm::Z, glm::Y) +00405 #define yyzy swizzle(glm::Y, glm::Y, glm::Z, glm::Y) +00406 #define zyzy swizzle(glm::Z, glm::Y, glm::Z, glm::Y) +00407 #define wyzy swizzle(glm::W, glm::Y, glm::Z, glm::Y) +00408 #define xzzy swizzle(glm::X, glm::Z, glm::Z, glm::Y) +00409 #define yzzy swizzle(glm::Y, glm::Z, glm::Z, glm::Y) +00410 #define zzzy swizzle(glm::Z, glm::Z, glm::Z, glm::Y) +00411 #define wzzy swizzle(glm::W, glm::Z, glm::Z, glm::Y) +00412 #define xwzy swizzle(glm::X, glm::W, glm::Z, glm::Y) +00413 #define ywzy swizzle(glm::Y, glm::W, glm::Z, glm::Y) +00414 #define zwzy swizzle(glm::Z, glm::W, glm::Z, glm::Y) +00415 #define wwzy swizzle(glm::W, glm::W, glm::Z, glm::Y) +00416 #define xxwy swizzle(glm::X, glm::X, glm::W, glm::Y) +00417 #define yxwy swizzle(glm::Y, glm::X, glm::W, glm::Y) +00418 #define zxwy swizzle(glm::Z, glm::X, glm::W, glm::Y) +00419 #define wxwy swizzle(glm::W, glm::X, glm::W, glm::Y) +00420 #define xywy swizzle(glm::X, glm::Y, glm::W, glm::Y) +00421 #define yywy swizzle(glm::Y, glm::Y, glm::W, glm::Y) +00422 #define zywy swizzle(glm::Z, glm::Y, glm::W, glm::Y) +00423 #define wywy swizzle(glm::W, glm::Y, glm::W, glm::Y) +00424 #define xzwy swizzle(glm::X, glm::Z, glm::W, glm::Y) +00425 #define yzwy swizzle(glm::Y, glm::Z, glm::W, glm::Y) +00426 #define zzwy swizzle(glm::Z, glm::Z, glm::W, glm::Y) +00427 #define wzwy swizzle(glm::W, glm::Z, glm::W, glm::Y) +00428 #define xwwy swizzle(glm::X, glm::W, glm::W, glm::Y) +00429 #define ywwy swizzle(glm::Y, glm::W, glm::W, glm::Y) +00430 #define zwwy swizzle(glm::Z, glm::W, glm::W, glm::Y) +00431 #define wwwy swizzle(glm::W, glm::W, glm::W, glm::Y) +00432 #define xxxz swizzle(glm::X, glm::X, glm::X, glm::Z) +00433 #define yxxz swizzle(glm::Y, glm::X, glm::X, glm::Z) +00434 #define zxxz swizzle(glm::Z, glm::X, glm::X, glm::Z) +00435 #define wxxz swizzle(glm::W, glm::X, glm::X, glm::Z) +00436 #define xyxz swizzle(glm::X, glm::Y, glm::X, glm::Z) +00437 #define yyxz swizzle(glm::Y, glm::Y, glm::X, glm::Z) +00438 #define zyxz swizzle(glm::Z, glm::Y, glm::X, glm::Z) +00439 #define wyxz swizzle(glm::W, glm::Y, glm::X, glm::Z) +00440 #define xzxz swizzle(glm::X, glm::Z, glm::X, glm::Z) +00441 #define yzxz swizzle(glm::Y, glm::Z, glm::X, glm::Z) +00442 #define zzxz swizzle(glm::Z, glm::Z, glm::X, glm::Z) +00443 #define wzxz swizzle(glm::W, glm::Z, glm::X, glm::Z) +00444 #define xwxz swizzle(glm::X, glm::W, glm::X, glm::Z) +00445 #define ywxz swizzle(glm::Y, glm::W, glm::X, glm::Z) +00446 #define zwxz swizzle(glm::Z, glm::W, glm::X, glm::Z) +00447 #define wwxz swizzle(glm::W, glm::W, glm::X, glm::Z) +00448 #define xxyz swizzle(glm::X, glm::X, glm::Y, glm::Z) +00449 #define yxyz swizzle(glm::Y, glm::X, glm::Y, glm::Z) +00450 #define zxyz swizzle(glm::Z, glm::X, glm::Y, glm::Z) +00451 #define wxyz swizzle(glm::W, glm::X, glm::Y, glm::Z) +00452 #define xyyz swizzle(glm::X, glm::Y, glm::Y, glm::Z) +00453 #define yyyz swizzle(glm::Y, glm::Y, glm::Y, glm::Z) +00454 #define zyyz swizzle(glm::Z, glm::Y, glm::Y, glm::Z) +00455 #define wyyz swizzle(glm::W, glm::Y, glm::Y, glm::Z) +00456 #define xzyz swizzle(glm::X, glm::Z, glm::Y, glm::Z) +00457 #define yzyz swizzle(glm::Y, glm::Z, glm::Y, glm::Z) +00458 #define zzyz swizzle(glm::Z, glm::Z, glm::Y, glm::Z) +00459 #define wzyz swizzle(glm::W, glm::Z, glm::Y, glm::Z) +00460 #define xwyz swizzle(glm::X, glm::W, glm::Y, glm::Z) +00461 #define ywyz swizzle(glm::Y, glm::W, glm::Y, glm::Z) +00462 #define zwyz swizzle(glm::Z, glm::W, glm::Y, glm::Z) +00463 #define wwyz swizzle(glm::W, glm::W, glm::Y, glm::Z) +00464 #define xxzz swizzle(glm::X, glm::X, glm::Z, glm::Z) +00465 #define yxzz swizzle(glm::Y, glm::X, glm::Z, glm::Z) +00466 #define zxzz swizzle(glm::Z, glm::X, glm::Z, glm::Z) +00467 #define wxzz swizzle(glm::W, glm::X, glm::Z, glm::Z) +00468 #define xyzz swizzle(glm::X, glm::Y, glm::Z, glm::Z) +00469 #define yyzz swizzle(glm::Y, glm::Y, glm::Z, glm::Z) +00470 #define zyzz swizzle(glm::Z, glm::Y, glm::Z, glm::Z) +00471 #define wyzz swizzle(glm::W, glm::Y, glm::Z, glm::Z) +00472 #define xzzz swizzle(glm::X, glm::Z, glm::Z, glm::Z) +00473 #define yzzz swizzle(glm::Y, glm::Z, glm::Z, glm::Z) +00474 #define zzzz swizzle(glm::Z, glm::Z, glm::Z, glm::Z) +00475 #define wzzz swizzle(glm::W, glm::Z, glm::Z, glm::Z) +00476 #define xwzz swizzle(glm::X, glm::W, glm::Z, glm::Z) +00477 #define ywzz swizzle(glm::Y, glm::W, glm::Z, glm::Z) +00478 #define zwzz swizzle(glm::Z, glm::W, glm::Z, glm::Z) +00479 #define wwzz swizzle(glm::W, glm::W, glm::Z, glm::Z) +00480 #define xxwz swizzle(glm::X, glm::X, glm::W, glm::Z) +00481 #define yxwz swizzle(glm::Y, glm::X, glm::W, glm::Z) +00482 #define zxwz swizzle(glm::Z, glm::X, glm::W, glm::Z) +00483 #define wxwz swizzle(glm::W, glm::X, glm::W, glm::Z) +00484 #define xywz swizzle(glm::X, glm::Y, glm::W, glm::Z) +00485 #define yywz swizzle(glm::Y, glm::Y, glm::W, glm::Z) +00486 #define zywz swizzle(glm::Z, glm::Y, glm::W, glm::Z) +00487 #define wywz swizzle(glm::W, glm::Y, glm::W, glm::Z) +00488 #define xzwz swizzle(glm::X, glm::Z, glm::W, glm::Z) +00489 #define yzwz swizzle(glm::Y, glm::Z, glm::W, glm::Z) +00490 #define zzwz swizzle(glm::Z, glm::Z, glm::W, glm::Z) +00491 #define wzwz swizzle(glm::W, glm::Z, glm::W, glm::Z) +00492 #define xwwz swizzle(glm::X, glm::W, glm::W, glm::Z) +00493 #define ywwz swizzle(glm::Y, glm::W, glm::W, glm::Z) +00494 #define zwwz swizzle(glm::Z, glm::W, glm::W, glm::Z) +00495 #define wwwz swizzle(glm::W, glm::W, glm::W, glm::Z) +00496 #define xxxw swizzle(glm::X, glm::X, glm::X, glm::W) +00497 #define yxxw swizzle(glm::Y, glm::X, glm::X, glm::W) +00498 #define zxxw swizzle(glm::Z, glm::X, glm::X, glm::W) +00499 #define wxxw swizzle(glm::W, glm::X, glm::X, glm::W) +00500 #define xyxw swizzle(glm::X, glm::Y, glm::X, glm::W) +00501 #define yyxw swizzle(glm::Y, glm::Y, glm::X, glm::W) +00502 #define zyxw swizzle(glm::Z, glm::Y, glm::X, glm::W) +00503 #define wyxw swizzle(glm::W, glm::Y, glm::X, glm::W) +00504 #define xzxw swizzle(glm::X, glm::Z, glm::X, glm::W) +00505 #define yzxw swizzle(glm::Y, glm::Z, glm::X, glm::W) +00506 #define zzxw swizzle(glm::Z, glm::Z, glm::X, glm::W) +00507 #define wzxw swizzle(glm::W, glm::Z, glm::X, glm::W) +00508 #define xwxw swizzle(glm::X, glm::W, glm::X, glm::W) +00509 #define ywxw swizzle(glm::Y, glm::W, glm::X, glm::W) +00510 #define zwxw swizzle(glm::Z, glm::W, glm::X, glm::W) +00511 #define wwxw swizzle(glm::W, glm::W, glm::X, glm::W) +00512 #define xxyw swizzle(glm::X, glm::X, glm::Y, glm::W) +00513 #define yxyw swizzle(glm::Y, glm::X, glm::Y, glm::W) +00514 #define zxyw swizzle(glm::Z, glm::X, glm::Y, glm::W) +00515 #define wxyw swizzle(glm::W, glm::X, glm::Y, glm::W) +00516 #define xyyw swizzle(glm::X, glm::Y, glm::Y, glm::W) +00517 #define yyyw swizzle(glm::Y, glm::Y, glm::Y, glm::W) +00518 #define zyyw swizzle(glm::Z, glm::Y, glm::Y, glm::W) +00519 #define wyyw swizzle(glm::W, glm::Y, glm::Y, glm::W) +00520 #define xzyw swizzle(glm::X, glm::Z, glm::Y, glm::W) +00521 #define yzyw swizzle(glm::Y, glm::Z, glm::Y, glm::W) +00522 #define zzyw swizzle(glm::Z, glm::Z, glm::Y, glm::W) +00523 #define wzyw swizzle(glm::W, glm::Z, glm::Y, glm::W) +00524 #define xwyw swizzle(glm::X, glm::W, glm::Y, glm::W) +00525 #define ywyw swizzle(glm::Y, glm::W, glm::Y, glm::W) +00526 #define zwyw swizzle(glm::Z, glm::W, glm::Y, glm::W) +00527 #define wwyw swizzle(glm::W, glm::W, glm::Y, glm::W) +00528 #define xxzw swizzle(glm::X, glm::X, glm::Z, glm::W) +00529 #define yxzw swizzle(glm::Y, glm::X, glm::Z, glm::W) +00530 #define zxzw swizzle(glm::Z, glm::X, glm::Z, glm::W) +00531 #define wxzw swizzle(glm::W, glm::X, glm::Z, glm::W) +00532 #define xyzw swizzle(glm::X, glm::Y, glm::Z, glm::W) +00533 #define yyzw swizzle(glm::Y, glm::Y, glm::Z, glm::W) +00534 #define zyzw swizzle(glm::Z, glm::Y, glm::Z, glm::W) +00535 #define wyzw swizzle(glm::W, glm::Y, glm::Z, glm::W) +00536 #define xzzw swizzle(glm::X, glm::Z, glm::Z, glm::W) +00537 #define yzzw swizzle(glm::Y, glm::Z, glm::Z, glm::W) +00538 #define zzzw swizzle(glm::Z, glm::Z, glm::Z, glm::W) +00539 #define wzzw swizzle(glm::W, glm::Z, glm::Z, glm::W) +00540 #define xwzw swizzle(glm::X, glm::W, glm::Z, glm::W) +00541 #define ywzw swizzle(glm::Y, glm::W, glm::Z, glm::W) +00542 #define zwzw swizzle(glm::Z, glm::W, glm::Z, glm::W) +00543 #define wwzw swizzle(glm::W, glm::W, glm::Z, glm::W) +00544 #define xxww swizzle(glm::X, glm::X, glm::W, glm::W) +00545 #define yxww swizzle(glm::Y, glm::X, glm::W, glm::W) +00546 #define zxww swizzle(glm::Z, glm::X, glm::W, glm::W) +00547 #define wxww swizzle(glm::W, glm::X, glm::W, glm::W) +00548 #define xyww swizzle(glm::X, glm::Y, glm::W, glm::W) +00549 #define yyww swizzle(glm::Y, glm::Y, glm::W, glm::W) +00550 #define zyww swizzle(glm::Z, glm::Y, glm::W, glm::W) +00551 #define wyww swizzle(glm::W, glm::Y, glm::W, glm::W) +00552 #define xzww swizzle(glm::X, glm::Z, glm::W, glm::W) +00553 #define yzww swizzle(glm::Y, glm::Z, glm::W, glm::W) +00554 #define zzww swizzle(glm::Z, glm::Z, glm::W, glm::W) +00555 #define wzww swizzle(glm::W, glm::Z, glm::W, glm::W) +00556 #define xwww swizzle(glm::X, glm::W, glm::W, glm::W) +00557 #define ywww swizzle(glm::Y, glm::W, glm::W, glm::W) +00558 #define zwww swizzle(glm::Z, glm::W, glm::W, glm::W) +00559 #define wwww swizzle(glm::W, glm::W, glm::W, glm::W) +00560 +00561 #endif +00562 +00563 #if(defined(GLM_SWIZZLE_RGBA) || defined(GLM_SWIZZLE)) +00564 +00565 #define rrrr swizzle(glm::X, glm::X, glm::X, glm::X) +00566 #define grrr swizzle(glm::Y, glm::X, glm::X, glm::X) +00567 #define brrr swizzle(glm::Z, glm::X, glm::X, glm::X) +00568 #define arrr swizzle(glm::W, glm::X, glm::X, glm::X) +00569 #define rgrr swizzle(glm::X, glm::Y, glm::X, glm::X) +00570 #define ggrr swizzle(glm::Y, glm::Y, glm::X, glm::X) +00571 #define bgrr swizzle(glm::Z, glm::Y, glm::X, glm::X) +00572 #define agrr swizzle(glm::W, glm::Y, glm::X, glm::X) +00573 #define rbrr swizzle(glm::X, glm::Z, glm::X, glm::X) +00574 #define gbrr swizzle(glm::Y, glm::Z, glm::X, glm::X) +00575 #define bbrr swizzle(glm::Z, glm::Z, glm::X, glm::X) +00576 #define abrr swizzle(glm::W, glm::Z, glm::X, glm::X) +00577 #define rarr swizzle(glm::X, glm::W, glm::X, glm::X) +00578 #define garr swizzle(glm::Y, glm::W, glm::X, glm::X) +00579 #define barr swizzle(glm::Z, glm::W, glm::X, glm::X) +00580 #define aarr swizzle(glm::W, glm::W, glm::X, glm::X) +00581 #define rrgr swizzle(glm::X, glm::X, glm::Y, glm::X) +00582 #define grgr swizzle(glm::Y, glm::X, glm::Y, glm::X) +00583 #define brgr swizzle(glm::Z, glm::X, glm::Y, glm::X) +00584 #define argr swizzle(glm::W, glm::X, glm::Y, glm::X) +00585 #define rggr swizzle(glm::X, glm::Y, glm::Y, glm::X) +00586 #define gggr swizzle(glm::Y, glm::Y, glm::Y, glm::X) +00587 #define bggr swizzle(glm::Z, glm::Y, glm::Y, glm::X) +00588 #define aggr swizzle(glm::W, glm::Y, glm::Y, glm::X) +00589 #define rbgr swizzle(glm::X, glm::Z, glm::Y, glm::X) +00590 #define gbgr swizzle(glm::Y, glm::Z, glm::Y, glm::X) +00591 #define bbgr swizzle(glm::Z, glm::Z, glm::Y, glm::X) +00592 #define abgr swizzle(glm::W, glm::Z, glm::Y, glm::X) +00593 #define ragr swizzle(glm::X, glm::W, glm::Y, glm::X) +00594 #define gagr swizzle(glm::Y, glm::W, glm::Y, glm::X) +00595 #define bagr swizzle(glm::Z, glm::W, glm::Y, glm::X) +00596 #define aagr swizzle(glm::W, glm::W, glm::Y, glm::X) +00597 #define rrbr swizzle(glm::X, glm::X, glm::Z, glm::X) +00598 #define grbr swizzle(glm::Y, glm::X, glm::Z, glm::X) +00599 #define brbr swizzle(glm::Z, glm::X, glm::Z, glm::X) +00600 #define arbr swizzle(glm::W, glm::X, glm::Z, glm::X) +00601 #define rgbr swizzle(glm::X, glm::Y, glm::Z, glm::X) +00602 #define ggbr swizzle(glm::Y, glm::Y, glm::Z, glm::X) +00603 #define bgbr swizzle(glm::Z, glm::Y, glm::Z, glm::X) +00604 #define agbr swizzle(glm::W, glm::Y, glm::Z, glm::X) +00605 #define rbbr swizzle(glm::X, glm::Z, glm::Z, glm::X) +00606 #define gbbr swizzle(glm::Y, glm::Z, glm::Z, glm::X) +00607 #define bbbr swizzle(glm::Z, glm::Z, glm::Z, glm::X) +00608 #define abbr swizzle(glm::W, glm::Z, glm::Z, glm::X) +00609 #define rabr swizzle(glm::X, glm::W, glm::Z, glm::X) +00610 #define gabr swizzle(glm::Y, glm::W, glm::Z, glm::X) +00611 #define babr swizzle(glm::Z, glm::W, glm::Z, glm::X) +00612 #define aabr swizzle(glm::W, glm::W, glm::Z, glm::X) +00613 #define rrar swizzle(glm::X, glm::X, glm::W, glm::X) +00614 #define grar swizzle(glm::Y, glm::X, glm::W, glm::X) +00615 #define brar swizzle(glm::Z, glm::X, glm::W, glm::X) +00616 #define arar swizzle(glm::W, glm::X, glm::W, glm::X) +00617 #define rgar swizzle(glm::X, glm::Y, glm::W, glm::X) +00618 #define ggar swizzle(glm::Y, glm::Y, glm::W, glm::X) +00619 #define bgar swizzle(glm::Z, glm::Y, glm::W, glm::X) +00620 #define agar swizzle(glm::W, glm::Y, glm::W, glm::X) +00621 #define rbar swizzle(glm::X, glm::Z, glm::W, glm::X) +00622 #define gbar swizzle(glm::Y, glm::Z, glm::W, glm::X) +00623 #define bbar swizzle(glm::Z, glm::Z, glm::W, glm::X) +00624 #define abar swizzle(glm::W, glm::Z, glm::W, glm::X) +00625 #define raar swizzle(glm::X, glm::W, glm::W, glm::X) +00626 #define gaar swizzle(glm::Y, glm::W, glm::W, glm::X) +00627 #define baar swizzle(glm::Z, glm::W, glm::W, glm::X) +00628 #define aaar swizzle(glm::W, glm::W, glm::W, glm::X) +00629 #define rrrg swizzle(glm::X, glm::X, glm::X, glm::Y) +00630 #define grrg swizzle(glm::Y, glm::X, glm::X, glm::Y) +00631 #define brrg swizzle(glm::Z, glm::X, glm::X, glm::Y) +00632 #define arrg swizzle(glm::W, glm::X, glm::X, glm::Y) +00633 #define rgrg swizzle(glm::X, glm::Y, glm::X, glm::Y) +00634 #define ggrg swizzle(glm::Y, glm::Y, glm::X, glm::Y) +00635 #define bgrg swizzle(glm::Z, glm::Y, glm::X, glm::Y) +00636 #define agrg swizzle(glm::W, glm::Y, glm::X, glm::Y) +00637 #define rbrg swizzle(glm::X, glm::Z, glm::X, glm::Y) +00638 #define gbrg swizzle(glm::Y, glm::Z, glm::X, glm::Y) +00639 #define bbrg swizzle(glm::Z, glm::Z, glm::X, glm::Y) +00640 #define abrg swizzle(glm::W, glm::Z, glm::X, glm::Y) +00641 #define rarg swizzle(glm::X, glm::W, glm::X, glm::Y) +00642 #define garg swizzle(glm::Y, glm::W, glm::X, glm::Y) +00643 #define barg swizzle(glm::Z, glm::W, glm::X, glm::Y) +00644 #define aarg swizzle(glm::W, glm::W, glm::X, glm::Y) +00645 #define rrgg swizzle(glm::X, glm::X, glm::Y, glm::Y) +00646 #define grgg swizzle(glm::Y, glm::X, glm::Y, glm::Y) +00647 #define brgg swizzle(glm::Z, glm::X, glm::Y, glm::Y) +00648 #define argg swizzle(glm::W, glm::X, glm::Y, glm::Y) +00649 #define rggg swizzle(glm::X, glm::Y, glm::Y, glm::Y) +00650 #define gggg swizzle(glm::Y, glm::Y, glm::Y, glm::Y) +00651 #define bggg swizzle(glm::Z, glm::Y, glm::Y, glm::Y) +00652 #define aggg swizzle(glm::W, glm::Y, glm::Y, glm::Y) +00653 #define rbgg swizzle(glm::X, glm::Z, glm::Y, glm::Y) +00654 #define gbgg swizzle(glm::Y, glm::Z, glm::Y, glm::Y) +00655 #define bbgg swizzle(glm::Z, glm::Z, glm::Y, glm::Y) +00656 #define abgg swizzle(glm::W, glm::Z, glm::Y, glm::Y) +00657 #define ragg swizzle(glm::X, glm::W, glm::Y, glm::Y) +00658 #define gagg swizzle(glm::Y, glm::W, glm::Y, glm::Y) +00659 #define bagg swizzle(glm::Z, glm::W, glm::Y, glm::Y) +00660 #define aagg swizzle(glm::W, glm::W, glm::Y, glm::Y) +00661 #define rrbg swizzle(glm::X, glm::X, glm::Z, glm::Y) +00662 #define grbg swizzle(glm::Y, glm::X, glm::Z, glm::Y) +00663 #define brbg swizzle(glm::Z, glm::X, glm::Z, glm::Y) +00664 #define arbg swizzle(glm::W, glm::X, glm::Z, glm::Y) +00665 #define rgbg swizzle(glm::X, glm::Y, glm::Z, glm::Y) +00666 #define ggbg swizzle(glm::Y, glm::Y, glm::Z, glm::Y) +00667 #define bgbg swizzle(glm::Z, glm::Y, glm::Z, glm::Y) +00668 #define agbg swizzle(glm::W, glm::Y, glm::Z, glm::Y) +00669 #define rbbg swizzle(glm::X, glm::Z, glm::Z, glm::Y) +00670 #define gbbg swizzle(glm::Y, glm::Z, glm::Z, glm::Y) +00671 #define bbbg swizzle(glm::Z, glm::Z, glm::Z, glm::Y) +00672 #define abbg swizzle(glm::W, glm::Z, glm::Z, glm::Y) +00673 #define rabg swizzle(glm::X, glm::W, glm::Z, glm::Y) +00674 #define gabg swizzle(glm::Y, glm::W, glm::Z, glm::Y) +00675 #define babg swizzle(glm::Z, glm::W, glm::Z, glm::Y) +00676 #define aabg swizzle(glm::W, glm::W, glm::Z, glm::Y) +00677 #define rrag swizzle(glm::X, glm::X, glm::W, glm::Y) +00678 #define grag swizzle(glm::Y, glm::X, glm::W, glm::Y) +00679 #define brag swizzle(glm::Z, glm::X, glm::W, glm::Y) +00680 #define arag swizzle(glm::W, glm::X, glm::W, glm::Y) +00681 #define rgag swizzle(glm::X, glm::Y, glm::W, glm::Y) +00682 #define ggag swizzle(glm::Y, glm::Y, glm::W, glm::Y) +00683 #define bgag swizzle(glm::Z, glm::Y, glm::W, glm::Y) +00684 #define agag swizzle(glm::W, glm::Y, glm::W, glm::Y) +00685 #define rbag swizzle(glm::X, glm::Z, glm::W, glm::Y) +00686 #define gbag swizzle(glm::Y, glm::Z, glm::W, glm::Y) +00687 #define bbag swizzle(glm::Z, glm::Z, glm::W, glm::Y) +00688 #define abag swizzle(glm::W, glm::Z, glm::W, glm::Y) +00689 #define raag swizzle(glm::X, glm::W, glm::W, glm::Y) +00690 #define gaag swizzle(glm::Y, glm::W, glm::W, glm::Y) +00691 #define baag swizzle(glm::Z, glm::W, glm::W, glm::Y) +00692 #define aaag swizzle(glm::W, glm::W, glm::W, glm::Y) +00693 #define rrrb swizzle(glm::X, glm::X, glm::X, glm::Z) +00694 #define grrb swizzle(glm::Y, glm::X, glm::X, glm::Z) +00695 #define brrb swizzle(glm::Z, glm::X, glm::X, glm::Z) +00696 #define arrb swizzle(glm::W, glm::X, glm::X, glm::Z) +00697 #define rgrb swizzle(glm::X, glm::Y, glm::X, glm::Z) +00698 #define ggrb swizzle(glm::Y, glm::Y, glm::X, glm::Z) +00699 #define bgrb swizzle(glm::Z, glm::Y, glm::X, glm::Z) +00700 #define agrb swizzle(glm::W, glm::Y, glm::X, glm::Z) +00701 #define rbrb swizzle(glm::X, glm::Z, glm::X, glm::Z) +00702 #define gbrb swizzle(glm::Y, glm::Z, glm::X, glm::Z) +00703 #define bbrb swizzle(glm::Z, glm::Z, glm::X, glm::Z) +00704 #define abrb swizzle(glm::W, glm::Z, glm::X, glm::Z) +00705 #define rarb swizzle(glm::X, glm::W, glm::X, glm::Z) +00706 #define garb swizzle(glm::Y, glm::W, glm::X, glm::Z) +00707 #define barb swizzle(glm::Z, glm::W, glm::X, glm::Z) +00708 #define aarb swizzle(glm::W, glm::W, glm::X, glm::Z) +00709 #define rrgb swizzle(glm::X, glm::X, glm::Y, glm::Z) +00710 #define grgb swizzle(glm::Y, glm::X, glm::Y, glm::Z) +00711 #define brgb swizzle(glm::Z, glm::X, glm::Y, glm::Z) +00712 #define argb swizzle(glm::W, glm::X, glm::Y, glm::Z) +00713 #define rggb swizzle(glm::X, glm::Y, glm::Y, glm::Z) +00714 #define gggb swizzle(glm::Y, glm::Y, glm::Y, glm::Z) +00715 #define bggb swizzle(glm::Z, glm::Y, glm::Y, glm::Z) +00716 #define aggb swizzle(glm::W, glm::Y, glm::Y, glm::Z) +00717 #define rbgb swizzle(glm::X, glm::Z, glm::Y, glm::Z) +00718 #define gbgb swizzle(glm::Y, glm::Z, glm::Y, glm::Z) +00719 #define bbgb swizzle(glm::Z, glm::Z, glm::Y, glm::Z) +00720 #define abgb swizzle(glm::W, glm::Z, glm::Y, glm::Z) +00721 #define ragb swizzle(glm::X, glm::W, glm::Y, glm::Z) +00722 #define gagb swizzle(glm::Y, glm::W, glm::Y, glm::Z) +00723 #define bagb swizzle(glm::Z, glm::W, glm::Y, glm::Z) +00724 #define aagb swizzle(glm::W, glm::W, glm::Y, glm::Z) +00725 #define rrbb swizzle(glm::X, glm::X, glm::Z, glm::Z) +00726 #define grbb swizzle(glm::Y, glm::X, glm::Z, glm::Z) +00727 #define brbb swizzle(glm::Z, glm::X, glm::Z, glm::Z) +00728 #define arbb swizzle(glm::W, glm::X, glm::Z, glm::Z) +00729 #define rgbb swizzle(glm::X, glm::Y, glm::Z, glm::Z) +00730 #define ggbb swizzle(glm::Y, glm::Y, glm::Z, glm::Z) +00731 #define bgbb swizzle(glm::Z, glm::Y, glm::Z, glm::Z) +00732 #define agbb swizzle(glm::W, glm::Y, glm::Z, glm::Z) +00733 #define rbbb swizzle(glm::X, glm::Z, glm::Z, glm::Z) +00734 #define gbbb swizzle(glm::Y, glm::Z, glm::Z, glm::Z) +00735 #define bbbb swizzle(glm::Z, glm::Z, glm::Z, glm::Z) +00736 #define abbb swizzle(glm::W, glm::Z, glm::Z, glm::Z) +00737 #define rabb swizzle(glm::X, glm::W, glm::Z, glm::Z) +00738 #define gabb swizzle(glm::Y, glm::W, glm::Z, glm::Z) +00739 #define babb swizzle(glm::Z, glm::W, glm::Z, glm::Z) +00740 #define aabb swizzle(glm::W, glm::W, glm::Z, glm::Z) +00741 #define rrab swizzle(glm::X, glm::X, glm::W, glm::Z) +00742 #define grab swizzle(glm::Y, glm::X, glm::W, glm::Z) +00743 #define brab swizzle(glm::Z, glm::X, glm::W, glm::Z) +00744 #define arab swizzle(glm::W, glm::X, glm::W, glm::Z) +00745 #define rgab swizzle(glm::X, glm::Y, glm::W, glm::Z) +00746 #define ggab swizzle(glm::Y, glm::Y, glm::W, glm::Z) +00747 #define bgab swizzle(glm::Z, glm::Y, glm::W, glm::Z) +00748 #define agab swizzle(glm::W, glm::Y, glm::W, glm::Z) +00749 #define rbab swizzle(glm::X, glm::Z, glm::W, glm::Z) +00750 #define gbab swizzle(glm::Y, glm::Z, glm::W, glm::Z) +00751 #define bbab swizzle(glm::Z, glm::Z, glm::W, glm::Z) +00752 #define abab swizzle(glm::W, glm::Z, glm::W, glm::Z) +00753 #define raab swizzle(glm::X, glm::W, glm::W, glm::Z) +00754 #define gaab swizzle(glm::Y, glm::W, glm::W, glm::Z) +00755 #define baab swizzle(glm::Z, glm::W, glm::W, glm::Z) +00756 #define aaab swizzle(glm::W, glm::W, glm::W, glm::Z) +00757 #define rrra swizzle(glm::X, glm::X, glm::X, glm::W) +00758 #define grra swizzle(glm::Y, glm::X, glm::X, glm::W) +00759 #define brra swizzle(glm::Z, glm::X, glm::X, glm::W) +00760 #define arra swizzle(glm::W, glm::X, glm::X, glm::W) +00761 #define rgra swizzle(glm::X, glm::Y, glm::X, glm::W) +00762 #define ggra swizzle(glm::Y, glm::Y, glm::X, glm::W) +00763 #define bgra swizzle(glm::Z, glm::Y, glm::X, glm::W) +00764 #define agra swizzle(glm::W, glm::Y, glm::X, glm::W) +00765 #define rbra swizzle(glm::X, glm::Z, glm::X, glm::W) +00766 #define gbra swizzle(glm::Y, glm::Z, glm::X, glm::W) +00767 #define bbra swizzle(glm::Z, glm::Z, glm::X, glm::W) +00768 #define abra swizzle(glm::W, glm::Z, glm::X, glm::W) +00769 #define rara swizzle(glm::X, glm::W, glm::X, glm::W) +00770 #define gara swizzle(glm::Y, glm::W, glm::X, glm::W) +00771 #define bara swizzle(glm::Z, glm::W, glm::X, glm::W) +00772 #define aara swizzle(glm::W, glm::W, glm::X, glm::W) +00773 #define rrga swizzle(glm::X, glm::X, glm::Y, glm::W) +00774 #define grga swizzle(glm::Y, glm::X, glm::Y, glm::W) +00775 #define brga swizzle(glm::Z, glm::X, glm::Y, glm::W) +00776 #define arga swizzle(glm::W, glm::X, glm::Y, glm::W) +00777 #define rgga swizzle(glm::X, glm::Y, glm::Y, glm::W) +00778 #define ggga swizzle(glm::Y, glm::Y, glm::Y, glm::W) +00779 #define bgga swizzle(glm::Z, glm::Y, glm::Y, glm::W) +00780 #define agga swizzle(glm::W, glm::Y, glm::Y, glm::W) +00781 #define rbga swizzle(glm::X, glm::Z, glm::Y, glm::W) +00782 #define gbga swizzle(glm::Y, glm::Z, glm::Y, glm::W) +00783 #define bbga swizzle(glm::Z, glm::Z, glm::Y, glm::W) +00784 #define abga swizzle(glm::W, glm::Z, glm::Y, glm::W) +00785 #define raga swizzle(glm::X, glm::W, glm::Y, glm::W) +00786 #define gaga swizzle(glm::Y, glm::W, glm::Y, glm::W) +00787 #define baga swizzle(glm::Z, glm::W, glm::Y, glm::W) +00788 #define aaga swizzle(glm::W, glm::W, glm::Y, glm::W) +00789 #define rrba swizzle(glm::X, glm::X, glm::Z, glm::W) +00790 #define grba swizzle(glm::Y, glm::X, glm::Z, glm::W) +00791 #define brba swizzle(glm::Z, glm::X, glm::Z, glm::W) +00792 #define arba swizzle(glm::W, glm::X, glm::Z, glm::W) +00793 #define rgba swizzle(glm::X, glm::Y, glm::Z, glm::W) +00794 #define ggba swizzle(glm::Y, glm::Y, glm::Z, glm::W) +00795 #define bgba swizzle(glm::Z, glm::Y, glm::Z, glm::W) +00796 #define agba swizzle(glm::W, glm::Y, glm::Z, glm::W) +00797 #define rbba swizzle(glm::X, glm::Z, glm::Z, glm::W) +00798 #define gbba swizzle(glm::Y, glm::Z, glm::Z, glm::W) +00799 #define bbba swizzle(glm::Z, glm::Z, glm::Z, glm::W) +00800 #define abba swizzle(glm::W, glm::Z, glm::Z, glm::W) +00801 #define raba swizzle(glm::X, glm::W, glm::Z, glm::W) +00802 #define gaba swizzle(glm::Y, glm::W, glm::Z, glm::W) +00803 #define baba swizzle(glm::Z, glm::W, glm::Z, glm::W) +00804 #define aaba swizzle(glm::W, glm::W, glm::Z, glm::W) +00805 #define rraa swizzle(glm::X, glm::X, glm::W, glm::W) +00806 #define graa swizzle(glm::Y, glm::X, glm::W, glm::W) +00807 #define braa swizzle(glm::Z, glm::X, glm::W, glm::W) +00808 #define araa swizzle(glm::W, glm::X, glm::W, glm::W) +00809 #define rgaa swizzle(glm::X, glm::Y, glm::W, glm::W) +00810 #define ggaa swizzle(glm::Y, glm::Y, glm::W, glm::W) +00811 #define bgaa swizzle(glm::Z, glm::Y, glm::W, glm::W) +00812 #define agaa swizzle(glm::W, glm::Y, glm::W, glm::W) +00813 #define rbaa swizzle(glm::X, glm::Z, glm::W, glm::W) +00814 #define gbaa swizzle(glm::Y, glm::Z, glm::W, glm::W) +00815 #define bbaa swizzle(glm::Z, glm::Z, glm::W, glm::W) +00816 #define abaa swizzle(glm::W, glm::Z, glm::W, glm::W) +00817 #define raaa swizzle(glm::X, glm::W, glm::W, glm::W) +00818 #define gaaa swizzle(glm::Y, glm::W, glm::W, glm::W) +00819 #define baaa swizzle(glm::Z, glm::W, glm::W, glm::W) +00820 #define aaaa swizzle(glm::W, glm::W, glm::W, glm::W) +00821 +00822 #endif +00823 +00824 #if(defined(GLM_FORCE_SWIZZLE_STPQ) || defined(GLM_SWIZZLE)) +00825 +00826 #define ssss swizzle(glm::X, glm::X, glm::X, glm::X) +00827 #define tsss swizzle(glm::Y, glm::X, glm::X, glm::X) +00828 #define psss swizzle(glm::Z, glm::X, glm::X, glm::X) +00829 #define qsss swizzle(glm::W, glm::X, glm::X, glm::X) +00830 #define stss swizzle(glm::X, glm::Y, glm::X, glm::X) +00831 #define ttss swizzle(glm::Y, glm::Y, glm::X, glm::X) +00832 #define ptss swizzle(glm::Z, glm::Y, glm::X, glm::X) +00833 #define qtss swizzle(glm::W, glm::Y, glm::X, glm::X) +00834 #define spss swizzle(glm::X, glm::Z, glm::X, glm::X) +00835 #define tpss swizzle(glm::Y, glm::Z, glm::X, glm::X) +00836 #define ppss swizzle(glm::Z, glm::Z, glm::X, glm::X) +00837 #define qpss swizzle(glm::W, glm::Z, glm::X, glm::X) +00838 #define sqss swizzle(glm::X, glm::W, glm::X, glm::X) +00839 #define tqss swizzle(glm::Y, glm::W, glm::X, glm::X) +00840 #define pqss swizzle(glm::Z, glm::W, glm::X, glm::X) +00841 #define qqss swizzle(glm::W, glm::W, glm::X, glm::X) +00842 #define ssts swizzle(glm::X, glm::X, glm::Y, glm::X) +00843 #define tsts swizzle(glm::Y, glm::X, glm::Y, glm::X) +00844 #define psts swizzle(glm::Z, glm::X, glm::Y, glm::X) +00845 #define qsts swizzle(glm::W, glm::X, glm::Y, glm::X) +00846 #define stts swizzle(glm::X, glm::Y, glm::Y, glm::X) +00847 #define ttts swizzle(glm::Y, glm::Y, glm::Y, glm::X) +00848 #define ptts swizzle(glm::Z, glm::Y, glm::Y, glm::X) +00849 #define qtts swizzle(glm::W, glm::Y, glm::Y, glm::X) +00850 #define spts swizzle(glm::X, glm::Z, glm::Y, glm::X) +00851 #define tpts swizzle(glm::Y, glm::Z, glm::Y, glm::X) +00852 #define ppts swizzle(glm::Z, glm::Z, glm::Y, glm::X) +00853 #define qpts swizzle(glm::W, glm::Z, glm::Y, glm::X) +00854 #define sqts swizzle(glm::X, glm::W, glm::Y, glm::X) +00855 #define tqts swizzle(glm::Y, glm::W, glm::Y, glm::X) +00856 #define pqts swizzle(glm::Z, glm::W, glm::Y, glm::X) +00857 #define qqts swizzle(glm::W, glm::W, glm::Y, glm::X) +00858 #define ssps swizzle(glm::X, glm::X, glm::Z, glm::X) +00859 #define tsps swizzle(glm::Y, glm::X, glm::Z, glm::X) +00860 #define psps swizzle(glm::Z, glm::X, glm::Z, glm::X) +00861 #define qsps swizzle(glm::W, glm::X, glm::Z, glm::X) +00862 #define stps swizzle(glm::X, glm::Y, glm::Z, glm::X) +00863 #define ttps swizzle(glm::Y, glm::Y, glm::Z, glm::X) +00864 #define ptps swizzle(glm::Z, glm::Y, glm::Z, glm::X) +00865 #define qtps swizzle(glm::W, glm::Y, glm::Z, glm::X) +00866 #define spps swizzle(glm::X, glm::Z, glm::Z, glm::X) +00867 #define tpps swizzle(glm::Y, glm::Z, glm::Z, glm::X) +00868 #define ppps swizzle(glm::Z, glm::Z, glm::Z, glm::X) +00869 #define qpps swizzle(glm::W, glm::Z, glm::Z, glm::X) +00870 #define sqps swizzle(glm::X, glm::W, glm::Z, glm::X) +00871 #define tqps swizzle(glm::Y, glm::W, glm::Z, glm::X) +00872 #define pqps swizzle(glm::Z, glm::W, glm::Z, glm::X) +00873 #define qqps swizzle(glm::W, glm::W, glm::Z, glm::X) +00874 #define ssqs swizzle(glm::X, glm::X, glm::W, glm::X) +00875 #define tsqs swizzle(glm::Y, glm::X, glm::W, glm::X) +00876 #define psqs swizzle(glm::Z, glm::X, glm::W, glm::X) +00877 #define qsqs swizzle(glm::W, glm::X, glm::W, glm::X) +00878 #define stqs swizzle(glm::X, glm::Y, glm::W, glm::X) +00879 #define ttqs swizzle(glm::Y, glm::Y, glm::W, glm::X) +00880 #define ptqs swizzle(glm::Z, glm::Y, glm::W, glm::X) +00881 #define qtqs swizzle(glm::W, glm::Y, glm::W, glm::X) +00882 #define spqs swizzle(glm::X, glm::Z, glm::W, glm::X) +00883 #define tpqs swizzle(glm::Y, glm::Z, glm::W, glm::X) +00884 #define ppqs swizzle(glm::Z, glm::Z, glm::W, glm::X) +00885 #define qpqs swizzle(glm::W, glm::Z, glm::W, glm::X) +00886 #define sqqs swizzle(glm::X, glm::W, glm::W, glm::X) +00887 #define tqqs swizzle(glm::Y, glm::W, glm::W, glm::X) +00888 #define pqqs swizzle(glm::Z, glm::W, glm::W, glm::X) +00889 #define qqqs swizzle(glm::W, glm::W, glm::W, glm::X) +00890 #define ssst swizzle(glm::X, glm::X, glm::X, glm::Y) +00891 #define tsst swizzle(glm::Y, glm::X, glm::X, glm::Y) +00892 #define psst swizzle(glm::Z, glm::X, glm::X, glm::Y) +00893 #define qsst swizzle(glm::W, glm::X, glm::X, glm::Y) +00894 #define stst swizzle(glm::X, glm::Y, glm::X, glm::Y) +00895 #define ttst swizzle(glm::Y, glm::Y, glm::X, glm::Y) +00896 #define ptst swizzle(glm::Z, glm::Y, glm::X, glm::Y) +00897 #define qtst swizzle(glm::W, glm::Y, glm::X, glm::Y) +00898 #define spst swizzle(glm::X, glm::Z, glm::X, glm::Y) +00899 #define tpst swizzle(glm::Y, glm::Z, glm::X, glm::Y) +00900 #define ppst swizzle(glm::Z, glm::Z, glm::X, glm::Y) +00901 #define qpst swizzle(glm::W, glm::Z, glm::X, glm::Y) +00902 #define sqst swizzle(glm::X, glm::W, glm::X, glm::Y) +00903 #define tqst swizzle(glm::Y, glm::W, glm::X, glm::Y) +00904 #define pqst swizzle(glm::Z, glm::W, glm::X, glm::Y) +00905 #define qqst swizzle(glm::W, glm::W, glm::X, glm::Y) +00906 #define sstt swizzle(glm::X, glm::X, glm::Y, glm::Y) +00907 #define tstt swizzle(glm::Y, glm::X, glm::Y, glm::Y) +00908 #define pstt swizzle(glm::Z, glm::X, glm::Y, glm::Y) +00909 #define qstt swizzle(glm::W, glm::X, glm::Y, glm::Y) +00910 #define sttt swizzle(glm::X, glm::Y, glm::Y, glm::Y) +00911 #define tttt swizzle(glm::Y, glm::Y, glm::Y, glm::Y) +00912 #define pttt swizzle(glm::Z, glm::Y, glm::Y, glm::Y) +00913 #define qttt swizzle(glm::W, glm::Y, glm::Y, glm::Y) +00914 #define sptt swizzle(glm::X, glm::Z, glm::Y, glm::Y) +00915 #define tptt swizzle(glm::Y, glm::Z, glm::Y, glm::Y) +00916 #define pptt swizzle(glm::Z, glm::Z, glm::Y, glm::Y) +00917 #define qptt swizzle(glm::W, glm::Z, glm::Y, glm::Y) +00918 #define sqtt swizzle(glm::X, glm::W, glm::Y, glm::Y) +00919 #define tqtt swizzle(glm::Y, glm::W, glm::Y, glm::Y) +00920 #define pqtt swizzle(glm::Z, glm::W, glm::Y, glm::Y) +00921 #define qqtt swizzle(glm::W, glm::W, glm::Y, glm::Y) +00922 #define sspt swizzle(glm::X, glm::X, glm::Z, glm::Y) +00923 #define tspt swizzle(glm::Y, glm::X, glm::Z, glm::Y) +00924 #define pspt swizzle(glm::Z, glm::X, glm::Z, glm::Y) +00925 #define qspt swizzle(glm::W, glm::X, glm::Z, glm::Y) +00926 #define stpt swizzle(glm::X, glm::Y, glm::Z, glm::Y) +00927 #define ttpt swizzle(glm::Y, glm::Y, glm::Z, glm::Y) +00928 #define ptpt swizzle(glm::Z, glm::Y, glm::Z, glm::Y) +00929 #define qtpt swizzle(glm::W, glm::Y, glm::Z, glm::Y) +00930 #define sppt swizzle(glm::X, glm::Z, glm::Z, glm::Y) +00931 #define tppt swizzle(glm::Y, glm::Z, glm::Z, glm::Y) +00932 #define pppt swizzle(glm::Z, glm::Z, glm::Z, glm::Y) +00933 #define qppt swizzle(glm::W, glm::Z, glm::Z, glm::Y) +00934 #define sqpt swizzle(glm::X, glm::W, glm::Z, glm::Y) +00935 #define tqpt swizzle(glm::Y, glm::W, glm::Z, glm::Y) +00936 #define pqpt swizzle(glm::Z, glm::W, glm::Z, glm::Y) +00937 #define qqpt swizzle(glm::W, glm::W, glm::Z, glm::Y) +00938 #define ssqt swizzle(glm::X, glm::X, glm::W, glm::Y) +00939 #define tsqt swizzle(glm::Y, glm::X, glm::W, glm::Y) +00940 #define psqt swizzle(glm::Z, glm::X, glm::W, glm::Y) +00941 #define qsqt swizzle(glm::W, glm::X, glm::W, glm::Y) +00942 #define stqt swizzle(glm::X, glm::Y, glm::W, glm::Y) +00943 #define ttqt swizzle(glm::Y, glm::Y, glm::W, glm::Y) +00944 #define ptqt swizzle(glm::Z, glm::Y, glm::W, glm::Y) +00945 #define qtqt swizzle(glm::W, glm::Y, glm::W, glm::Y) +00946 #define spqt swizzle(glm::X, glm::Z, glm::W, glm::Y) +00947 #define tpqt swizzle(glm::Y, glm::Z, glm::W, glm::Y) +00948 #define ppqt swizzle(glm::Z, glm::Z, glm::W, glm::Y) +00949 #define qpqt swizzle(glm::W, glm::Z, glm::W, glm::Y) +00950 #define sqqt swizzle(glm::X, glm::W, glm::W, glm::Y) +00951 #define tqqt swizzle(glm::Y, glm::W, glm::W, glm::Y) +00952 #define pqqt swizzle(glm::Z, glm::W, glm::W, glm::Y) +00953 #define qqqt swizzle(glm::W, glm::W, glm::W, glm::Y) +00954 #define sssp swizzle(glm::X, glm::X, glm::X, glm::Z) +00955 #define tssp swizzle(glm::Y, glm::X, glm::X, glm::Z) +00956 #define pssp swizzle(glm::Z, glm::X, glm::X, glm::Z) +00957 #define qssp swizzle(glm::W, glm::X, glm::X, glm::Z) +00958 #define stsp swizzle(glm::X, glm::Y, glm::X, glm::Z) +00959 #define ttsp swizzle(glm::Y, glm::Y, glm::X, glm::Z) +00960 #define ptsp swizzle(glm::Z, glm::Y, glm::X, glm::Z) +00961 #define qtsp swizzle(glm::W, glm::Y, glm::X, glm::Z) +00962 #define spsp swizzle(glm::X, glm::Z, glm::X, glm::Z) +00963 #define tpsp swizzle(glm::Y, glm::Z, glm::X, glm::Z) +00964 #define ppsp swizzle(glm::Z, glm::Z, glm::X, glm::Z) +00965 #define qpsp swizzle(glm::W, glm::Z, glm::X, glm::Z) +00966 #define sqsp swizzle(glm::X, glm::W, glm::X, glm::Z) +00967 #define tqsp swizzle(glm::Y, glm::W, glm::X, glm::Z) +00968 #define pqsp swizzle(glm::Z, glm::W, glm::X, glm::Z) +00969 #define qqsp swizzle(glm::W, glm::W, glm::X, glm::Z) +00970 #define sstp swizzle(glm::X, glm::X, glm::Y, glm::Z) +00971 #define tstp swizzle(glm::Y, glm::X, glm::Y, glm::Z) +00972 #define pstp swizzle(glm::Z, glm::X, glm::Y, glm::Z) +00973 #define qstp swizzle(glm::W, glm::X, glm::Y, glm::Z) +00974 #define sttp swizzle(glm::X, glm::Y, glm::Y, glm::Z) +00975 #define tttp swizzle(glm::Y, glm::Y, glm::Y, glm::Z) +00976 #define pttp swizzle(glm::Z, glm::Y, glm::Y, glm::Z) +00977 #define qttp swizzle(glm::W, glm::Y, glm::Y, glm::Z) +00978 #define sptp swizzle(glm::X, glm::Z, glm::Y, glm::Z) +00979 #define tptp swizzle(glm::Y, glm::Z, glm::Y, glm::Z) +00980 #define pptp swizzle(glm::Z, glm::Z, glm::Y, glm::Z) +00981 #define qptp swizzle(glm::W, glm::Z, glm::Y, glm::Z) +00982 #define sqtp swizzle(glm::X, glm::W, glm::Y, glm::Z) +00983 #define tqtp swizzle(glm::Y, glm::W, glm::Y, glm::Z) +00984 #define pqtp swizzle(glm::Z, glm::W, glm::Y, glm::Z) +00985 #define qqtp swizzle(glm::W, glm::W, glm::Y, glm::Z) +00986 #define sspp swizzle(glm::X, glm::X, glm::Z, glm::Z) +00987 #define tspp swizzle(glm::Y, glm::X, glm::Z, glm::Z) +00988 #define pspp swizzle(glm::Z, glm::X, glm::Z, glm::Z) +00989 #define qspp swizzle(glm::W, glm::X, glm::Z, glm::Z) +00990 #define stpp swizzle(glm::X, glm::Y, glm::Z, glm::Z) +00991 #define ttpp swizzle(glm::Y, glm::Y, glm::Z, glm::Z) +00992 #define ptpp swizzle(glm::Z, glm::Y, glm::Z, glm::Z) +00993 #define qtpp swizzle(glm::W, glm::Y, glm::Z, glm::Z) +00994 #define sppp swizzle(glm::X, glm::Z, glm::Z, glm::Z) +00995 #define tppp swizzle(glm::Y, glm::Z, glm::Z, glm::Z) +00996 #define pppp swizzle(glm::Z, glm::Z, glm::Z, glm::Z) +00997 #define qppp swizzle(glm::W, glm::Z, glm::Z, glm::Z) +00998 #define sqpp swizzle(glm::X, glm::W, glm::Z, glm::Z) +00999 #define tqpp swizzle(glm::Y, glm::W, glm::Z, glm::Z) +01000 #define pqpp swizzle(glm::Z, glm::W, glm::Z, glm::Z) +01001 #define qqpp swizzle(glm::W, glm::W, glm::Z, glm::Z) +01002 #define ssqp swizzle(glm::X, glm::X, glm::W, glm::Z) +01003 #define tsqp swizzle(glm::Y, glm::X, glm::W, glm::Z) +01004 #define psqp swizzle(glm::Z, glm::X, glm::W, glm::Z) +01005 #define qsqp swizzle(glm::W, glm::X, glm::W, glm::Z) +01006 #define stqp swizzle(glm::X, glm::Y, glm::W, glm::Z) +01007 #define ttqp swizzle(glm::Y, glm::Y, glm::W, glm::Z) +01008 #define ptqp swizzle(glm::Z, glm::Y, glm::W, glm::Z) +01009 #define qtqp swizzle(glm::W, glm::Y, glm::W, glm::Z) +01010 #define spqp swizzle(glm::X, glm::Z, glm::W, glm::Z) +01011 #define tpqp swizzle(glm::Y, glm::Z, glm::W, glm::Z) +01012 #define ppqp swizzle(glm::Z, glm::Z, glm::W, glm::Z) +01013 #define qpqp swizzle(glm::W, glm::Z, glm::W, glm::Z) +01014 #define sqqp swizzle(glm::X, glm::W, glm::W, glm::Z) +01015 #define tqqp swizzle(glm::Y, glm::W, glm::W, glm::Z) +01016 #define pqqp swizzle(glm::Z, glm::W, glm::W, glm::Z) +01017 #define qqqp swizzle(glm::W, glm::W, glm::W, glm::Z) +01018 #define sssq swizzle(glm::X, glm::X, glm::X, glm::W) +01019 #define tssq swizzle(glm::Y, glm::X, glm::X, glm::W) +01020 #define pssq swizzle(glm::Z, glm::X, glm::X, glm::W) +01021 #define qssq swizzle(glm::W, glm::X, glm::X, glm::W) +01022 #define stsq swizzle(glm::X, glm::Y, glm::X, glm::W) +01023 #define ttsq swizzle(glm::Y, glm::Y, glm::X, glm::W) +01024 #define ptsq swizzle(glm::Z, glm::Y, glm::X, glm::W) +01025 #define qtsq swizzle(glm::W, glm::Y, glm::X, glm::W) +01026 #define spsq swizzle(glm::X, glm::Z, glm::X, glm::W) +01027 #define tpsq swizzle(glm::Y, glm::Z, glm::X, glm::W) +01028 #define ppsq swizzle(glm::Z, glm::Z, glm::X, glm::W) +01029 #define qpsq swizzle(glm::W, glm::Z, glm::X, glm::W) +01030 #define sqsq swizzle(glm::X, glm::W, glm::X, glm::W) +01031 #define tqsq swizzle(glm::Y, glm::W, glm::X, glm::W) +01032 #define pqsq swizzle(glm::Z, glm::W, glm::X, glm::W) +01033 #define qqsq swizzle(glm::W, glm::W, glm::X, glm::W) +01034 #define sstq swizzle(glm::X, glm::X, glm::Y, glm::W) +01035 #define tstq swizzle(glm::Y, glm::X, glm::Y, glm::W) +01036 #define pstq swizzle(glm::Z, glm::X, glm::Y, glm::W) +01037 #define qstq swizzle(glm::W, glm::X, glm::Y, glm::W) +01038 #define sttq swizzle(glm::X, glm::Y, glm::Y, glm::W) +01039 #define tttq swizzle(glm::Y, glm::Y, glm::Y, glm::W) +01040 #define pttq swizzle(glm::Z, glm::Y, glm::Y, glm::W) +01041 #define qttq swizzle(glm::W, glm::Y, glm::Y, glm::W) +01042 #define sptq swizzle(glm::X, glm::Z, glm::Y, glm::W) +01043 #define tptq swizzle(glm::Y, glm::Z, glm::Y, glm::W) +01044 #define pptq swizzle(glm::Z, glm::Z, glm::Y, glm::W) +01045 #define qptq swizzle(glm::W, glm::Z, glm::Y, glm::W) +01046 #define sqtq swizzle(glm::X, glm::W, glm::Y, glm::W) +01047 #define tqtq swizzle(glm::Y, glm::W, glm::Y, glm::W) +01048 #define pqtq swizzle(glm::Z, glm::W, glm::Y, glm::W) +01049 #define qqtq swizzle(glm::W, glm::W, glm::Y, glm::W) +01050 #define sspq swizzle(glm::X, glm::X, glm::Z, glm::W) +01051 #define tspq swizzle(glm::Y, glm::X, glm::Z, glm::W) +01052 #define pspq swizzle(glm::Z, glm::X, glm::Z, glm::W) +01053 #define qspq swizzle(glm::W, glm::X, glm::Z, glm::W) +01054 #define stpq swizzle(glm::X, glm::Y, glm::Z, glm::W) +01055 #define ttpq swizzle(glm::Y, glm::Y, glm::Z, glm::W) +01056 #define ptpq swizzle(glm::Z, glm::Y, glm::Z, glm::W) +01057 #define qtpq swizzle(glm::W, glm::Y, glm::Z, glm::W) +01058 #define sppq swizzle(glm::X, glm::Z, glm::Z, glm::W) +01059 #define tppq swizzle(glm::Y, glm::Z, glm::Z, glm::W) +01060 #define pppq swizzle(glm::Z, glm::Z, glm::Z, glm::W) +01061 #define qppq swizzle(glm::W, glm::Z, glm::Z, glm::W) +01062 #define sqpq swizzle(glm::X, glm::W, glm::Z, glm::W) +01063 #define tqpq swizzle(glm::Y, glm::W, glm::Z, glm::W) +01064 #define pqpq swizzle(glm::Z, glm::W, glm::Z, glm::W) +01065 #define qqpq swizzle(glm::W, glm::W, glm::Z, glm::W) +01066 #define ssqq swizzle(glm::X, glm::X, glm::W, glm::W) +01067 #define tsqq swizzle(glm::Y, glm::X, glm::W, glm::W) +01068 #define psqq swizzle(glm::Z, glm::X, glm::W, glm::W) +01069 #define qsqq swizzle(glm::W, glm::X, glm::W, glm::W) +01070 #define stqq swizzle(glm::X, glm::Y, glm::W, glm::W) +01071 #define ttqq swizzle(glm::Y, glm::Y, glm::W, glm::W) +01072 #define ptqq swizzle(glm::Z, glm::Y, glm::W, glm::W) +01073 #define qtqq swizzle(glm::W, glm::Y, glm::W, glm::W) +01074 #define spqq swizzle(glm::X, glm::Z, glm::W, glm::W) +01075 #define tpqq swizzle(glm::Y, glm::Z, glm::W, glm::W) +01076 #define ppqq swizzle(glm::Z, glm::Z, glm::W, glm::W) +01077 #define qpqq swizzle(glm::W, glm::Z, glm::W, glm::W) +01078 #define sqqq swizzle(glm::X, glm::W, glm::W, glm::W) +01079 #define tqqq swizzle(glm::Y, glm::W, glm::W, glm::W) +01080 #define pqqq swizzle(glm::Z, glm::W, glm::W, glm::W) +01081 #define qqqq swizzle(glm::W, glm::W, glm::W, glm::W) +01082 +01083 #endif +01084 +01085 #endif//glm_core_swizzle +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-03-10 +00005 // Updated : 2008-03-15 +00006 // Licence : This source is under MIT License +00007 // File : gtx_associated_min_max.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTX_extented_min_max +00013 +00014 #ifndef glm_gtx_associated_min_max +00015 #define glm_gtx_associated_min_max +00016 +00017 // Dependency: +00018 #include "../glm.hpp" +00019 +00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00021 # pragma message("GLM: GLM_GTX_associated_min_max extension included") +00022 #endif +00023 +00024 namespace glm{ +00025 namespace gtx{ +00026 namespace associated_min_max +00027 { +00030 +00032 template<typename genTypeT, typename genTypeU> +00033 genTypeU associatedMin( +00034 const genTypeT& x, const genTypeU& a, +00035 const genTypeT& y, const genTypeU& b); +00036 +00038 template<typename genTypeT, typename genTypeU> +00039 genTypeU associatedMin( +00040 const genTypeT& x, const genTypeU& a, +00041 const genTypeT& y, const genTypeU& b, +00042 const genTypeT& z, const genTypeU& c); +00043 +00045 template<typename genTypeT, typename genTypeU> +00046 genTypeU associatedMin( +00047 const genTypeT& x, const genTypeU& a, +00048 const genTypeT& y, const genTypeU& b, +00049 const genTypeT& z, const genTypeU& c, +00050 const genTypeT& w, const genTypeU& d); +00051 +00053 template<typename genTypeT, typename genTypeU> +00054 genTypeU associatedMax( +00055 const genTypeT& x, const genTypeU& a, +00056 const genTypeT& y, const genTypeU& b); +00057 +00059 template<typename genTypeT, typename genTypeU> +00060 genTypeU associatedMax( +00061 const genTypeT& x, const genTypeU& a, +00062 const genTypeT& y, const genTypeU& b, +00063 const genTypeT& z, const genTypeU& c); +00064 +00066 template<typename genTypeT, typename genTypeU> +00067 genTypeU associatedMax( +00068 const genTypeT& x, const genTypeU& a, +00069 const genTypeT& y, const genTypeU& b, +00070 const genTypeT& z, const genTypeU& c, +00071 const genTypeT& w, const genTypeU& d); +00072 +00074 } //namespace associated_min_max +00075 } //namespace gtx +00076 } //namespace glm +00077 +00078 #include "associated_min_max.inl" +00079 +00080 namespace glm{using namespace gtx::associated_min_max;} +00081 +00082 #endif//glm_gtx_associated_min_max +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2007-03-14 +00005 // Updated : 2008-11-14 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/bit.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTC_half_float +00013 +00014 #ifndef glm_gtx_bit +00015 #define glm_gtx_bit +00016 +00017 // Dependency: +00018 #include "../glm.hpp" +00019 #include "../gtc/half_float.hpp" +00020 +00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00022 # pragma message("GLM: GLM_GTX_bit extension included") +00023 #endif +00024 +00025 namespace glm{ +00026 namespace gtx{ +00027 namespace bit +00028 { +00029 using namespace gtc::half_float; +00030 +00033 +00036 template <typename genIType> +00037 genIType mask(genIType const & count); +00038 +00042 template <typename genIUType, typename sizeType> +00043 genIUType extractField( +00044 genIUType const & v, +00045 sizeType const & first, +00046 sizeType const & count); +00047 +00050 template <typename genType> +00051 int lowestBit(genType const & value); +00052 +00055 template <typename genType> +00056 int highestBit(genType const & value); +00057 +00060 template <typename genType> +00061 genType highestBitValue(genType const & value); +00062 +00065 template <typename genType> +00066 bool isPowerOfTwo(genType const & value); +00067 +00070 template <typename genType> +00071 genType powerOfTwoAbove(genType const & value); +00072 +00075 template <typename genType> +00076 genType powerOfTwoBelow(genType const & value); +00077 +00080 template <typename genType> +00081 genType powerOfTwoNearest(genType const & value); +00082 +00085 template <typename genType> +00086 genType bitRevert(genType const & value); +00087 +00090 template <typename genType> +00091 genType bitRotateRight(genType const & In, std::size_t Shift); +00092 +00095 template <typename genType> +00096 genType bitRotateLeft(genType const & In, std::size_t Shift); +00097 +00099 }//namespace bit +00100 }//namespace gtx +00101 }//namespace glm +00102 +00103 #include "bit.inl" +00104 +00105 namespace glm{using namespace gtx::bit;} +00106 +00107 #endif//glm_gtx_bit +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-30 +00005 // Updated : 2008-10-05 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/closest_point.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_closest_point +00014 #define glm_gtx_closest_point +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_closest_point extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace closest_point +00026 { +00029 +00032 template <typename T> +00033 detail::tvec3<T> closestPointOnLine( +00034 detail::tvec3<T> const & point, +00035 detail::tvec3<T> const & a, +00036 detail::tvec3<T> const & b); +00037 +00039 }// namespace closest_point +00040 }// namespace gtx +00041 }// namespace glm +00042 +00043 #include "closest_point.inl" +00044 +00045 namespace glm{using namespace gtx::closest_point;} +00046 +00047 #endif//glm_gtx_closest_point +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2007-06-21 +00005 // Updated : 2009-06-05 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/color_cast.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTX_number_precision +00013 +00014 #ifndef glm_gtx_color_cast +00015 #define glm_gtx_color_cast +00016 +00017 // Dependency: +00018 #include "../glm.hpp" +00019 #include "../gtx/number_precision.hpp" +00020 +00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00022 # pragma message("GLM: GLM_GTX_color_cast extension included") +00023 #endif +00024 +00025 namespace glm{ +00026 namespace gtx{ +00027 namespace color_cast +00028 { +00029 using namespace gtx::number_precision; +00030 +00033 +00036 template <typename valType> gtc::type_precision::uint8 u8channel_cast(valType a); +00037 +00040 template <typename valType> gtc::type_precision::uint16 u16channel_cast(valType a); +00041 +00042 template <typename T> gtc::type_precision::uint32 u32_rgbx_cast(const detail::tvec3<T>& c); +00043 template <typename T> gtc::type_precision::uint32 u32_xrgb_cast(const detail::tvec3<T>& c); +00044 template <typename T> gtc::type_precision::uint32 u32_bgrx_cast(const detail::tvec3<T>& c); +00045 template <typename T> gtc::type_precision::uint32 u32_xbgr_cast(const detail::tvec3<T>& c); +00046 +00047 template <typename T> gtc::type_precision::uint32 u32_rgba_cast(const detail::tvec4<T>& c); +00048 template <typename T> gtc::type_precision::uint32 u32_argb_cast(const detail::tvec4<T>& c); +00049 template <typename T> gtc::type_precision::uint32 u32_bgra_cast(const detail::tvec4<T>& c); +00050 template <typename T> gtc::type_precision::uint32 u32_abgr_cast(const detail::tvec4<T>& c); +00051 +00052 template <typename T> gtc::type_precision::uint64 u64_rgbx_cast(const detail::tvec3<T>& c); +00053 template <typename T> gtc::type_precision::uint64 u64_xrgb_cast(const detail::tvec3<T>& c); +00054 template <typename T> gtc::type_precision::uint64 u64_bgrx_cast(const detail::tvec3<T>& c); +00055 template <typename T> gtc::type_precision::uint64 u64_xbgr_cast(const detail::tvec3<T>& c); +00056 +00057 template <typename T> gtc::type_precision::uint64 u64_rgba_cast(const detail::tvec4<T>& c); +00058 template <typename T> gtc::type_precision::uint64 u64_argb_cast(const detail::tvec4<T>& c); +00059 template <typename T> gtc::type_precision::uint64 u64_bgra_cast(const detail::tvec4<T>& c); +00060 template <typename T> gtc::type_precision::uint64 u64_abgr_cast(const detail::tvec4<T>& c); +00061 +00062 template <typename T> gtx::number_precision::f16vec1 f16_channel_cast(T a); +00063 +00064 template <typename T> gtc::type_precision::f16vec3 f16_rgbx_cast(T c); +00065 template <typename T> gtc::type_precision::f16vec3 f16_xrgb_cast(T c); +00066 template <typename T> gtc::type_precision::f16vec3 f16_bgrx_cast(T c); +00067 template <typename T> gtc::type_precision::f16vec3 f16_xbgr_cast(T c); +00068 +00069 template <typename T> gtc::type_precision::f16vec4 f16_rgba_cast(T c); +00070 template <typename T> gtc::type_precision::f16vec4 f16_argb_cast(T c); +00071 template <typename T> gtc::type_precision::f16vec4 f16_bgra_cast(T c); +00072 template <typename T> gtc::type_precision::f16vec4 f16_abgr_cast(T c); +00073 +00074 template <typename T> gtx::number_precision::f32vec1 f32_channel_cast(T a); +00075 +00076 template <typename T> gtc::type_precision::f32vec3 f32_rgbx_cast(T c); +00077 template <typename T> gtc::type_precision::f32vec3 f32_xrgb_cast(T c); +00078 template <typename T> gtc::type_precision::f32vec3 f32_bgrx_cast(T c); +00079 template <typename T> gtc::type_precision::f32vec3 f32_xbgr_cast(T c); +00080 +00081 template <typename T> gtc::type_precision::f32vec4 f32_rgba_cast(T c); +00082 template <typename T> gtc::type_precision::f32vec4 f32_argb_cast(T c); +00083 template <typename T> gtc::type_precision::f32vec4 f32_bgra_cast(T c); +00084 template <typename T> gtc::type_precision::f32vec4 f32_abgr_cast(T c); +00085 +00086 template <typename T> gtx::number_precision::f64vec1 f64_channel_cast(T a); +00087 +00088 template <typename T> gtc::type_precision::f64vec3 f64_rgbx_cast(T c); +00089 template <typename T> gtc::type_precision::f64vec3 f64_xrgb_cast(T c); +00090 template <typename T> gtc::type_precision::f64vec3 f64_bgrx_cast(T c); +00091 template <typename T> gtc::type_precision::f64vec3 f64_xbgr_cast(T c); +00092 +00093 template <typename T> gtc::type_precision::f64vec4 f64_rgba_cast(T c); +00094 template <typename T> gtc::type_precision::f64vec4 f64_argb_cast(T c); +00095 template <typename T> gtc::type_precision::f64vec4 f64_bgra_cast(T c); +00096 template <typename T> gtc::type_precision::f64vec4 f64_abgr_cast(T c); +00097 +00099 }//namespace color_space +00100 }//namespace gtx +00101 }//namespace glm +00102 +00103 #include "color_cast.inl" +00104 +00105 namespace glm{using namespace gtx::color_cast;} +00106 +00107 #endif//glm_gtx_color_cast +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-21 +00005 // Updated : 2007-02-22 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/color_space.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_color_space +00014 #define glm_gtx_color_space +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_color_space extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace color_space +00026 { +00029 +00032 template <typename valType> +00033 detail::tvec3<valType> rgbColor( +00034 detail::tvec3<valType> const & hsvValue); +00035 +00038 template <typename valType> +00039 detail::tvec3<valType> hsvColor( +00040 detail::tvec3<valType> const & rgbValue); +00041 +00044 template <typename valType> +00045 detail::tmat4x4<valType> saturation( +00046 valType const s); +00047 +00050 template <typename valType> +00051 detail::tvec3<valType> saturation( +00052 valType const s, +00053 detail::tvec3<valType> const & color); +00054 +00057 template <typename valType> +00058 detail::tvec4<valType> saturation( +00059 valType const s, +00060 detail::tvec4<valType> const & color); +00061 +00064 template <typename valType> +00065 valType luminosity( +00066 detail::tvec3<valType> const & color); +00067 +00069 }//namespace color_space +00070 }//namespace gtx +00071 }//namespace glm +00072 +00073 #include "color_space.inl" +00074 +00075 namespace glm{using namespace gtx::color_space;} +00076 +00077 #endif//glm_gtx_color_space +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-10-28 +00005 // Updated : 2008-10-28 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/color_space_YCoCg.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_color_space_YCoCg +00014 #define glm_gtx_color_space_YCoCg +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_color_space_YCoCg extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace color_space_YCoCg +00026 { +00029 +00032 template <typename valType> +00033 detail::tvec3<valType> rgb2YCoCg( +00034 detail::tvec3<valType> const & rgbColor); +00035 +00038 template <typename valType> +00039 detail::tvec3<valType> YCoCg2rgb( +00040 detail::tvec3<valType> const & YCoCgColor); +00041 +00045 template <typename valType> +00046 detail::tvec3<valType> rgb2YCoCgR( +00047 detail::tvec3<valType> const & rgbColor); +00048 +00052 template <typename valType> +00053 detail::tvec3<valType> YCoCgR2rgb( +00054 detail::tvec3<valType> const & YCoCgColor); +00055 +00057 }//namespace color_space_YCoCg +00058 }//namespace gtx +00059 }//namespace glm +00060 +00061 #include "color_space_YCoCg.inl" +00062 +00063 namespace glm{using namespace gtx::color_space_YCoCg;} +00064 +00065 #endif//glm_gtx_color_space_YCoCg +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2007-01-24 +00005 // Updated : 2008-10-24 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/compatibility.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTC_half_float +00013 +00014 #ifndef glm_gtx_compatibility +00015 #define glm_gtx_compatibility +00016 +00017 // Dependency: +00018 #include "../glm.hpp" +00019 #include "../gtc/half_float.hpp" +00020 +00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00022 # pragma message("GLM: GLM_GTX_compatibility extension included") +00023 #endif +00024 +00025 #if(GLM_COMPILER & GLM_COMPILER_VC) +00026 #include <cfloat> +00027 #elif(GLM_COMPILER & GLM_COMPILER_GCC) +00028 #include <cmath> +00029 #endif//GLM_COMPILER +00030 +00031 namespace glm{ +00032 namespace gtx{ +00033 namespace compatibility +00034 { +00037 +00038 template <typename T> GLM_FUNC_QUALIFIER T lerp(T x, T y, T a){return mix(x, y, a);} +00039 template <typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> lerp(const detail::tvec2<T>& x, const detail::tvec2<T>& y, T a){return mix(x, y, a);} +00040 template <typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> lerp(const detail::tvec3<T>& x, const detail::tvec3<T>& y, T a){return mix(x, y, a);} +00041 template <typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> lerp(const detail::tvec4<T>& x, const detail::tvec4<T>& y, T a){return mix(x, y, a);} +00042 template <typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> lerp(const detail::tvec2<T>& x, const detail::tvec2<T>& y, const detail::tvec2<T>& a){return mix(x, y, a);} +00043 template <typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> lerp(const detail::tvec3<T>& x, const detail::tvec3<T>& y, const detail::tvec3<T>& a){return mix(x, y, a);} +00044 template <typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> lerp(const detail::tvec4<T>& x, const detail::tvec4<T>& y, const detail::tvec4<T>& a){return mix(x, y, a);} +00045 +00046 template <typename T> GLM_FUNC_QUALIFIER T saturate(T x){return clamp(x, T(0), T(1));} +00047 template <typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> saturate(const detail::tvec2<T>& x){return clamp(x, T(0), T(1));} +00048 template <typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> saturate(const detail::tvec3<T>& x){return clamp(x, T(0), T(1));} +00049 template <typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> saturate(const detail::tvec4<T>& x){return clamp(x, T(0), T(1));} +00050 +00051 template <typename T> GLM_FUNC_QUALIFIER T atan2(T x, T y){return atan(x, y);} +00052 template <typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> atan2(const detail::tvec2<T>& x, const detail::tvec2<T>& y){return atan(x, y);} +00053 template <typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> atan2(const detail::tvec3<T>& x, const detail::tvec3<T>& y){return atan(x, y);} +00054 template <typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> atan2(const detail::tvec4<T>& x, const detail::tvec4<T>& y){return atan(x, y);} +00055 +00056 template <typename genType> bool isfinite(genType const & x); +00057 template <typename valType> detail::tvec2<bool> isfinite(const detail::tvec2<valType>& x); +00058 template <typename valType> detail::tvec3<bool> isfinite(const detail::tvec3<valType>& x); +00059 template <typename valType> detail::tvec4<bool> isfinite(const detail::tvec4<valType>& x); +00060 +00061 template <typename genType> bool isinf(genType const & x); +00062 template <typename genType> detail::tvec2<bool> isinf(const detail::tvec2<genType>& x); +00063 template <typename genType> detail::tvec3<bool> isinf(const detail::tvec3<genType>& x); +00064 template <typename genType> detail::tvec4<bool> isinf(const detail::tvec4<genType>& x); +00065 +00066 template <typename genType> bool isnan(genType const & x); +00067 template <typename genType> detail::tvec2<bool> isnan(const detail::tvec2<genType>& x); +00068 template <typename genType> detail::tvec3<bool> isnan(const detail::tvec3<genType>& x); +00069 template <typename genType> detail::tvec4<bool> isnan(const detail::tvec4<genType>& x); +00070 +00071 typedef bool bool1; +00072 typedef detail::tvec2<bool> bool2; +00073 typedef detail::tvec3<bool> bool3; +00074 typedef detail::tvec4<bool> bool4; +00075 +00076 typedef bool bool1x1; +00077 typedef detail::tmat2x2<bool> bool2x2; +00078 typedef detail::tmat2x3<bool> bool2x3; +00079 typedef detail::tmat2x4<bool> bool2x4; +00080 typedef detail::tmat3x2<bool> bool3x2; +00081 typedef detail::tmat3x3<bool> bool3x3; +00082 typedef detail::tmat3x4<bool> bool3x4; +00083 typedef detail::tmat4x2<bool> bool4x2; +00084 typedef detail::tmat4x3<bool> bool4x3; +00085 typedef detail::tmat4x4<bool> bool4x4; +00086 +00087 typedef int int1; +00088 typedef detail::tvec2<int> int2; +00089 typedef detail::tvec3<int> int3; +00090 typedef detail::tvec4<int> int4; +00091 +00092 typedef int int1x1; +00093 typedef detail::tmat2x2<int> int2x2; +00094 typedef detail::tmat2x3<int> int2x3; +00095 typedef detail::tmat2x4<int> int2x4; +00096 typedef detail::tmat3x2<int> int3x2; +00097 typedef detail::tmat3x3<int> int3x3; +00098 typedef detail::tmat3x4<int> int3x4; +00099 typedef detail::tmat4x2<int> int4x2; +00100 typedef detail::tmat4x3<int> int4x3; +00101 typedef detail::tmat4x4<int> int4x4; +00102 +00103 typedef gtc::half_float::half half1; +00104 typedef detail::tvec2<gtc::half_float::half> half2; +00105 typedef detail::tvec3<gtc::half_float::half> half3; +00106 typedef detail::tvec4<gtc::half_float::half> half4; +00107 +00108 typedef gtc::half_float::half half1x1; +00109 typedef detail::tmat2x2<gtc::half_float::half> half2x2; +00110 typedef detail::tmat2x3<gtc::half_float::half> half2x3; +00111 typedef detail::tmat2x4<gtc::half_float::half> half2x4; +00112 typedef detail::tmat3x2<gtc::half_float::half> half3x2; +00113 typedef detail::tmat3x3<gtc::half_float::half> half3x3; +00114 typedef detail::tmat3x4<gtc::half_float::half> half3x4; +00115 typedef detail::tmat4x2<gtc::half_float::half> half4x2; +00116 typedef detail::tmat4x3<gtc::half_float::half> half4x3; +00117 typedef detail::tmat4x4<gtc::half_float::half> half4x4; +00118 +00119 typedef float float1; +00120 typedef detail::tvec2<float> float2; +00121 typedef detail::tvec3<float> float3; +00122 typedef detail::tvec4<float> float4; +00123 +00124 typedef float float1x1; +00125 typedef detail::tmat2x2<float> float2x2; +00126 typedef detail::tmat2x3<float> float2x3; +00127 typedef detail::tmat2x4<float> float2x4; +00128 typedef detail::tmat3x2<float> float3x2; +00129 typedef detail::tmat3x3<float> float3x3; +00130 typedef detail::tmat3x4<float> float3x4; +00131 typedef detail::tmat4x2<float> float4x2; +00132 typedef detail::tmat4x3<float> float4x3; +00133 typedef detail::tmat4x4<float> float4x4; +00134 +00135 typedef double double1; +00136 typedef detail::tvec2<double> double2; +00137 typedef detail::tvec3<double> double3; +00138 typedef detail::tvec4<double> double4; +00139 +00140 typedef double double1x1; +00141 typedef detail::tmat2x2<double> double2x2; +00142 typedef detail::tmat2x3<double> double2x3; +00143 typedef detail::tmat2x4<double> double2x4; +00144 typedef detail::tmat3x2<double> double3x2; +00145 typedef detail::tmat3x3<double> double3x3; +00146 typedef detail::tmat3x4<double> double3x4; +00147 typedef detail::tmat4x2<double> double4x2; +00148 typedef detail::tmat4x3<double> double4x3; +00149 typedef detail::tmat4x4<double> double4x4; +00150 +00152 }//namespace compatibility +00153 }//namespace gtx +00154 }//namespace glm +00155 +00156 #include "compatibility.inl" +00157 +00158 namespace glm{using namespace gtx::compatibility;} +00159 +00160 #endif//glm_gtx_compatibility +00161 +00162 +00163 +00164 +00165 +00166 +00167 +00168 +00169 +00170 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2007-05-21 +00005 // Updated : 2007-05-21 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/component_wise.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_component_wise +00014 #define glm_gtx_component_wise +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_component_wise extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace component_wise +00026 { +00029 +00032 template <typename genType> +00033 typename genType::value_type compAdd( +00034 genType const & v); +00035 +00038 template <typename genType> +00039 typename genType::value_type compMul( +00040 genType const & v); +00041 +00044 template <typename genType> +00045 typename genType::value_type compMin( +00046 genType const & v); +00047 +00050 template <typename genType> +00051 typename genType::value_type compMax( +00052 genType const & v); +00053 +00055 }//namespace component_wise +00056 }//namespace gtx +00057 }//namespace glm +00058 +00059 #include "component_wise.inl" +00060 +00061 namespace glm{using namespace gtx::component_wise;} +00062 +00063 #endif//glm_gtx_component_wise +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-21 +00005 // Updated : 2006-11-13 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/epsilon.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTC_half_float +00012 // - GLM_GTC_quaternion +00014 +00015 #ifndef glm_gtx_epsilon +00016 #define glm_gtx_epsilon +00017 +00018 // Dependency: +00019 #include "../glm.hpp" +00020 #include "../gtc/half_float.hpp" +00021 #include "../gtc/quaternion.hpp" +00022 +00023 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00024 # pragma message("GLM: GLM_GTX_epsilon extension included") +00025 #endif +00026 +00027 namespace glm{ +00028 namespace gtx{ +00029 namespace epsilon +00030 { +00033 +00036 template <typename genTypeT, typename genTypeU> +00037 bool equalEpsilon( +00038 genTypeT const & x, +00039 genTypeT const & y, +00040 genTypeU const & epsilon); +00041 +00044 template <typename genTypeT, typename genTypeU> +00045 bool notEqualEpsilon( +00046 genTypeT const & x, +00047 genTypeT const & y, +00048 genTypeU const & epsilon); +00049 +00051 }//namespace epsilon +00052 }//namespace gtx +00053 }//namespace glm +00054 +00055 #include "epsilon.inl" +00056 +00057 namespace glm{using namespace gtx::epsilon;} +00058 +00059 #endif//glm_gtx_epsilon +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-21 +00005 // Updated : 2007-08-14 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/euler_angles.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTC_half_float +00013 // ToDo: +00014 // - mat2 mat2GTX(const vec2& angles) undefined +00015 // - mat3 mat3GTX(const vec2& angles) undefined +00017 +00018 #ifndef glm_gtx_euler_angles +00019 #define glm_gtx_euler_angles +00020 +00021 // Dependency: +00022 #include "../glm.hpp" +00023 #include "../gtc/half_float.hpp" +00024 +00025 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00026 # pragma message("GLM: GLM_GTX_euler_angles extension included") +00027 #endif +00028 +00029 namespace glm{ +00030 namespace gtx{ +00031 namespace euler_angles +00032 { +00035 +00038 template <typename valType> +00039 detail::tmat4x4<valType> eulerAngleX( +00040 valType const & angleX); +00041 +00044 template <typename valType> +00045 detail::tmat4x4<valType> eulerAngleY( +00046 valType const & angleY); +00047 +00050 template <typename valType> +00051 detail::tmat4x4<valType> eulerAngleZ( +00052 valType const & angleZ); +00053 +00056 template <typename valType> +00057 detail::tmat4x4<valType> eulerAngleXY( +00058 valType const & angleX, +00059 valType const & angleY); +00060 +00063 template <typename valType> +00064 detail::tmat4x4<valType> eulerAngleYX( +00065 valType const & angleY, +00066 valType const & angleX); +00067 +00070 template <typename valType> +00071 detail::tmat4x4<valType> eulerAngleXZ( +00072 valType const & angleX, +00073 valType const & angleZ); +00074 +00077 template <typename valType> +00078 detail::tmat4x4<valType> eulerAngleZX( +00079 valType const & angleZ, +00080 valType const & angleX); +00081 +00084 template <typename valType> +00085 detail::tmat4x4<valType> eulerAngleYZ( +00086 valType const & angleY, +00087 valType const & angleZ); +00088 +00091 template <typename valType> +00092 detail::tmat4x4<valType> eulerAngleZY( +00093 valType const & angleZ, +00094 valType const & angleY); +00095 +00098 template <typename valType> +00099 detail::tmat4x4<valType> eulerAngleYXZ( +00100 valType const & yaw, +00101 valType const & pitch, +00102 valType const & roll); +00103 +00106 template <typename valType> +00107 detail::tmat4x4<valType> yawPitchRoll( +00108 valType const & yaw, +00109 valType const & pitch, +00110 valType const & roll); +00111 +00114 template <typename T> +00115 detail::tmat2x2<T> orientate2(T const & angle); +00116 +00119 template <typename T> +00120 detail::tmat3x3<T> orientate3(T const & angle); +00121 +00124 template <typename T> +00125 detail::tmat3x3<T> orientate3(detail::tvec3<T> const & angles); +00126 +00129 template <typename T> +00130 detail::tmat4x4<T> orientate4(detail::tvec3<T> const & angles); +00131 +00133 }//namespace euler_angles +00134 }//namespace gtx +00135 }//namespace glm +00136 +00137 #include "euler_angles.inl" +00138 +00139 namespace glm{using namespace gtx::euler_angles;} +00140 +00141 #endif//glm_gtx_euler_angles +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2009-05-01 +00005 // Updated : 2010-12-13 +00006 // Licence : This source is under MIT License +00007 // File : glm/ext.hpp +00009 +00010 #ifndef glm_ext +00011 #define glm_ext +00012 +00013 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_EXT_INCLUDED_DISPLAYED)) +00014 # define GLM_MESSAGE_EXT_INCLUDED_DISPLAYED +00015 # pragma message("GLM: All extensions included (not recommanded)") +00016 #endif//GLM_MESSAGES +00017 +00018 #include "./gtc/half_float.hpp" +00019 #include "./gtc/matrix_access.hpp" +00020 #include "./gtc/matrix_integer.hpp" +00021 #include "./gtc/matrix_inverse.hpp" +00022 #include "./gtc/matrix_transform.hpp" +00023 #include "./gtc/quaternion.hpp" +00024 #include "./gtc/swizzle.hpp" +00025 #include "./gtc/type_precision.hpp" +00026 #include "./gtc/type_ptr.hpp" +00027 +00028 #include "./gtx/associated_min_max.hpp" +00029 #include "./gtx/bit.hpp" +00030 #include "./gtx/closest_point.hpp" +00031 #include "./gtx/color_cast.hpp" +00032 #include "./gtx/color_space.hpp" +00033 #include "./gtx/color_space_YCoCg.hpp" +00034 #include "./gtx/compatibility.hpp" +00035 #include "./gtx/component_wise.hpp" +00036 #include "./gtx/epsilon.hpp" +00037 #include "./gtx/euler_angles.hpp" +00038 #include "./gtx/extend.hpp" +00039 #include "./gtx/extented_min_max.hpp" +00040 #include "./gtx/fast_exponential.hpp" +00041 #include "./gtx/fast_square_root.hpp" +00042 #include "./gtx/fast_trigonometry.hpp" +00043 #include "./gtx/gradient_paint.hpp" +00044 #include "./gtx/handed_coordinate_space.hpp" +00045 #include "./gtx/inertia.hpp" +00046 #include "./gtx/int_10_10_10_2.hpp" +00047 #include "./gtx/integer.hpp" +00048 #include "./gtx/intersect.hpp" +00049 #include "./gtx/log_base.hpp" +00050 #include "./gtx/matrix_cross_product.hpp" +00051 #include "./gtx/matrix_interpolation.hpp" +00052 #include "./gtx/matrix_major_storage.hpp" +00053 #include "./gtx/matrix_operation.hpp" +00054 #include "./gtx/matrix_query.hpp" +00055 #include "./gtx/mixed_product.hpp" +00056 #include "./gtx/multiple.hpp" +00057 #include "./gtx/noise.hpp" +00058 #include "./gtx/norm.hpp" +00059 #include "./gtx/normal.hpp" +00060 #include "./gtx/normalize_dot.hpp" +00061 #include "./gtx/number_precision.hpp" +00062 #include "./gtx/ocl_type.hpp" +00063 #include "./gtx/optimum_pow.hpp" +00064 #include "./gtx/orthonormalize.hpp" +00065 #include "./gtx/perpendicular.hpp" +00066 #include "./gtx/polar_coordinates.hpp" +00067 #include "./gtx/projection.hpp" +00068 #include "./gtx/quaternion.hpp" +00069 #include "./gtx/random.hpp" +00070 #include "./gtx/raw_data.hpp" +00071 #include "./gtx/reciprocal.hpp" +00072 #include "./gtx/rotate_vector.hpp" +00073 #include "./gtx/spline.hpp" +00074 #include "./gtx/std_based_type.hpp" +00075 #include "./gtx/string_cast.hpp" +00076 #include "./gtx/transform.hpp" +00077 #include "./gtx/transform2.hpp" +00078 #include "./gtx/ulp.hpp" +00079 #include "./gtx/unsigned_int.hpp" +00080 #include "./gtx/vec1.hpp" +00081 #include "./gtx/vector_access.hpp" +00082 #include "./gtx/vector_angle.hpp" +00083 #include "./gtx/vector_query.hpp" +00084 #include "./gtx/verbose_operator.hpp" +00085 #include "./gtx/wrap.hpp" +00086 +00087 #if(GLM_ARCH & GLM_ARCH_SSE2) +00088 # include "./gtx/simd_vec4.hpp" +00089 # include "./gtx/simd_mat4.hpp" +00090 #endif +00091 +00092 #include "./virtrev/xstream.hpp" +00093 +00094 //const float goldenRatio = 1.618033988749894848f; +00095 //const float pi = 3.141592653589793238f; +00096 +00097 #endif //glm_ext +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2006-01-07 +00005 // Updated : 2006-11-13 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/extend.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_extend +00014 #define glm_gtx_extend +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_extend extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace extend +00026 { +00029 +00032 template <typename genType> +00033 genType extend( +00034 genType const & Origin, +00035 genType const & Source, +00036 typename genType::value_type const Length); +00037 +00039 }//namespace extend +00040 }//namespace gtx +00041 }//namespace glm +00042 +00043 #include "extend.inl" +00044 +00045 namespace glm{using namespace gtx::extend;} +00046 +00047 #endif//glm_gtx_extend +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2007-03-14 +00005 // Updated : 2010-02-19 +00006 // Licence : This source is under MIT License +00007 // File : gtx_extented_min_max.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTX_half_float +00013 +00014 #ifndef glm_gtx_extented_min_max +00015 #define glm_gtx_extented_min_max +00016 +00017 // Dependency: +00018 #include "../glm.hpp" +00019 #include "../gtc/half_float.hpp" +00020 +00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00022 # pragma message("GLM: GLM_GTX_extented_min_max extension included") +00023 #endif +00024 +00025 namespace glm{ +00026 namespace gtx{ +00027 namespace extented_min_max +00028 { +00031 +00032 //< Return the minimum component-wise values of 3 inputs +00033 //< From GLM_GTX_extented_min_max extension +00034 template <typename T> +00035 T min( +00036 T const & x, +00037 T const & y, +00038 T const & z); +00039 +00040 //< Return the minimum component-wise values of 3 inputs +00041 //< From GLM_GTX_extented_min_max extension +00042 template +00043 < +00044 typename T, +00045 template <typename> class C +00046 > +00047 C<T> min( +00048 C<T> const & x, +00049 typename C<T>::value_type const & y, +00050 typename C<T>::value_type const & z); +00051 +00052 //< Return the minimum component-wise values of 3 inputs +00053 //< From GLM_GTX_extented_min_max extension +00054 template +00055 < +00056 typename T, +00057 template <typename> class C +00058 > +00059 C<T> min( +00060 C<T> const & x, +00061 C<T> const & y, +00062 C<T> const & z); +00063 +00064 //< Return the minimum component-wise values of 4 inputs +00065 //< From GLM_GTX_extented_min_max extension +00066 template <typename T> +00067 T min( +00068 T const & x, +00069 T const & y, +00070 T const & z, +00071 T const & w); +00072 +00073 //< Return the minimum component-wise values of 4 inputs +00074 //< From GLM_GTX_extented_min_max extension +00075 template +00076 < +00077 typename T, +00078 template <typename> class C +00079 > +00080 C<T> min( +00081 C<T> const & x, +00082 typename C<T>::value_type const & y, +00083 typename C<T>::value_type const & z, +00084 typename C<T>::value_type const & w); +00085 +00086 //< Return the minimum component-wise values of 4 inputs +00087 //< From GLM_GTX_extented_min_max extension +00088 template +00089 < +00090 typename T, +00091 template <typename> class C +00092 > +00093 C<T> min( +00094 C<T> const & x, +00095 C<T> const & y, +00096 C<T> const & z, +00097 C<T> const & w); +00098 +00099 //< Return the maximum component-wise values of 3 inputs +00100 //< From GLM_GTX_extented_min_max extension +00101 template <typename T> +00102 T max( +00103 T const & x, +00104 T const & y, +00105 T const & z); +00106 +00107 //< Return the maximum component-wise values of 3 inputs +00108 //< From GLM_GTX_extented_min_max extension +00109 template +00110 < +00111 typename T, +00112 template <typename> class C +00113 > +00114 C<T> max( +00115 C<T> const & x, +00116 typename C<T>::value_type const & y, +00117 typename C<T>::value_type const & z); +00118 +00119 //< Return the maximum component-wise values of 3 inputs +00120 //< From GLM_GTX_extented_min_max extension +00121 template +00122 < +00123 typename T, +00124 template <typename> class C +00125 > +00126 C<T> max( +00127 C<T> const & x, +00128 C<T> const & y, +00129 C<T> const & z); +00130 +00131 //< Return the maximum component-wise values of 4 inputs +00132 //< From GLM_GTX_extented_min_max extension +00133 template <typename T> +00134 T max( +00135 T const & x, +00136 T const & y, +00137 T const & z, +00138 T const & w); +00139 +00140 //< Return the maximum component-wise values of 4 inputs +00141 //< From GLM_GTX_extented_min_max extension +00142 template +00143 < +00144 typename T, +00145 template <typename> class C +00146 > +00147 C<T> max( +00148 C<T> const & x, +00149 typename C<T>::value_type const & y, +00150 typename C<T>::value_type const & z, +00151 typename C<T>::value_type const & w); +00152 +00153 //< Return the maximum component-wise values of 4 inputs +00154 //< From GLM_GTX_extented_min_max extension +00155 template +00156 < +00157 typename T, +00158 template <typename> class C +00159 > +00160 C<T> max( +00161 C<T> const & x, +00162 C<T> const & y, +00163 C<T> const & z, +00164 C<T> const & w); +00165 +00167 }//namespace extented_min_max +00168 }//namespace gtx +00169 }//namespace glm +00170 +00171 #include "extented_min_max.inl" +00172 +00173 namespace glm{using namespace gtx::extented_min_max;} +00174 +00175 #endif//glm_gtx_extented_min_max +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2006-01-09 +00005 // Updated : 2006-11-13 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/fast_exponential.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTC_half_float +00013 +00014 #ifndef glm_gtx_fast_exponential +00015 #define glm_gtx_fast_exponential +00016 +00017 // Dependency: +00018 #include "../glm.hpp" +00019 #include "../gtc/half_float.hpp" +00020 +00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00022 # pragma message("GLM: GLM_GTX_fast_exponential extension included") +00023 #endif +00024 +00025 namespace glm{ +00026 namespace gtx{ +00027 namespace fast_exponential +00028 { +00029 using namespace gtc::half_float; +00032 +00035 template <typename valType> +00036 valType fastPow( +00037 valType const & x, +00038 valType const & y); +00039 +00042 template <typename T, typename U> +00043 T fastPow( +00044 const T& x, +00045 const U& y); +00046 +00049 template <typename T> +00050 T fastExp(const T& x); +00051 +00054 template <typename T> +00055 T fastLog(const T& x); +00056 +00059 template <typename T> +00060 T fastExp2(const T& x); +00061 +00064 template <typename T> +00065 T fastLog2(const T& x); +00066 +00069 template <typename T> +00070 T fastLn(const T& x); +00071 +00073 }//namespace fast_exponential +00074 }//namespace gtx +00075 }//namespace glm +00076 +00077 #include "fast_exponential.inl" +00078 +00079 namespace glm{using namespace gtx::fast_exponential;} +00080 +00081 #endif//glm_gtx_fast_exponential +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2006-01-04 +00005 // Updated : 2008-10-07 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/fast_square_root.hpp +00009 // Dependency: +00010 // - GLM core +00012 // Note: +00013 // - Sqrt optimisation based on Newton's method, +00014 // www.gamedev.net/community/forums/topic.asp?topic id=139956 +00016 +00017 #ifndef glm_gtx_fast_square_root +00018 #define glm_gtx_fast_square_root +00019 +00020 // Dependency: +00021 #include "../glm.hpp" +00022 +00023 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00024 # pragma message("GLM: GLM_GTX_fast_square_root extension included") +00025 #endif +00026 +00027 namespace glm{ +00028 namespace gtx{ +00029 namespace fast_square_root +00030 { +00033 +00036 template <typename genType> +00037 genType fastSqrt(genType const & x); +00038 +00041 template <typename genType> +00042 genType fastInverseSqrt(genType const & x); +00043 +00046 template <typename genType> +00047 typename genType::value_type fastLength(genType const & x); +00048 +00051 template <typename genType> +00052 typename genType::value_type fastDistance(genType const & x, genType const & y); +00053 +00056 template <typename genType> +00057 genType fastNormalize(genType const & x); +00058 +00060 }// namespace fast_square_root +00061 }// namespace gtx +00062 }// namespace glm +00063 +00064 #include "fast_square_root.inl" +00065 +00066 namespace glm{using namespace gtx::fast_square_root;} +00067 +00068 #endif//glm_gtx_fast_square_root +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2006-01-08 +00005 // Updated : 2006-11-13 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/fast_trigonometry.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_fast_trigonometry +00014 #define glm_gtx_fast_trigonometry +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_fast_trigonometry extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace fast_trigonometry +00026 { +00029 +00033 template <typename T> +00034 T fastSin(const T& angle); +00035 +00039 template <typename T> +00040 T fastCos(const T& angle); +00041 +00045 template <typename T> +00046 T fastTan(const T& angle); +00047 +00051 template <typename T> +00052 T fastAsin(const T& angle); +00053 +00057 template <typename T> +00058 T fastAcos(const T& angle); +00059 +00063 template <typename T> +00064 T fastAtan(const T& y, const T& x); +00065 +00069 template <typename T> +00070 T fastAtan(const T& angle); +00071 +00073 }//namespace fast_trigonometry +00074 }//namespace gtx +00075 }//namespace glm +00076 +00077 #include "fast_trigonometry.inl" +00078 +00079 namespace glm{using namespace gtx::fast_trigonometry;} +00080 +00081 #endif//glm_gtx_fast_trigonometry +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-03-08 +00005 // Updated : 2010-01-26 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/func_common.hpp +00009 +00010 #ifndef glm_core_func_common +00011 #define glm_core_func_common +00012 +00013 #include "_fixes.hpp" +00014 +00015 namespace glm +00016 { +00017 namespace core{ +00018 namespace function{ +00019 namespace common{ +00020 +00023 +00028 template <typename genFIType> +00029 genFIType abs(genFIType const & x); +00030 +00035 template <typename genFIType> +00036 genFIType sign(genFIType const & x); +00037 +00042 template <typename genType> +00043 genType floor(genType const & x); +00044 +00050 template <typename genType> +00051 genType trunc(genType const & x); +00052 +00061 template <typename genType> +00062 genType round(genType const & x); +00063 +00070 template <typename genType> +00071 genType roundEven(genType const & x); +00072 +00078 template <typename genType> +00079 genType ceil(genType const & x); +00080 +00085 template <typename genType> +00086 genType fract(genType const & x); +00087 +00093 template <typename genType> +00094 genType mod( +00095 genType const & x, +00096 genType const & y); +00097 +00103 template <typename genType> +00104 genType mod( +00105 genType const & x, +00106 typename genType::value_type const & y); +00107 +00115 template <typename genType> +00116 genType modf( +00117 genType const & x, +00118 genType & i); +00119 +00124 template <typename genType> +00125 genType min( +00126 genType const & x, +00127 genType const & y); +00128 +00129 template <typename genType> +00130 genType min( +00131 genType const & x, +00132 typename genType::value_type const & y); +00133 +00138 template <typename genType> +00139 genType max( +00140 genType const & x, +00141 genType const & y); +00142 +00143 template <typename genType> +00144 genType max( +00145 genType const & x, +00146 typename genType::value_type const & y); +00147 +00153 template <typename genType> +00154 genType clamp( +00155 genType const & x, +00156 genType const & minVal, +00157 genType const & maxVal); +00158 +00159 template <typename genType> +00160 genType clamp( +00161 genType const & x, +00162 typename genType::value_type const & minVal, +00163 typename genType::value_type const & maxVal); +00164 +00189 // \todo Test when 'a' is a boolean. +00190 template <typename genTypeT, typename genTypeU> +00191 genTypeT mix(genTypeT const & x, genTypeT const & y, genTypeU const & a); +00192 +00197 template <typename genType> +00198 genType step( +00199 genType const & edge, +00200 genType const & x); +00201 +00202 template <typename genType> +00203 genType step( +00204 typename genType::value_type const & edge, +00205 genType const & x); +00206 +00219 template <typename genType> +00220 genType smoothstep( +00221 genType const & edge0, +00222 genType const & edge1, +00223 genType const & x); +00224 +00225 template <typename genType> +00226 genType smoothstep( +00227 typename genType::value_type const & edge0, +00228 typename genType::value_type const & edge1, +00229 genType const & x); +00230 +00239 template <typename genType> +00240 typename genType::bool_type isnan(genType const & x); +00241 +00250 template <typename genType> +00251 typename genType::bool_type isinf(genType const & x); +00252 +00259 template <typename genType, typename genIType> +00260 genIType floatBitsToInt(genType const & value); +00261 +00268 template <typename genType, typename genUType> +00269 genUType floatBitsToUint(genType const & value); +00270 +00279 template <typename genType, typename genIType> +00280 genType intBitsToFloat(genIType const & value); +00281 +00290 template <typename genType, typename genUType> +00291 genType uintBitsToFloat(genUType const & value); +00292 +00297 template <typename genType> +00298 genType fma(genType const & a, genType const & b, genType const & c); +00299 +00312 template <typename genType, typename genIType> +00313 genType frexp(genType const & x, genIType & exp); +00314 +00324 template <typename genType, typename genIType> +00325 genType ldexp(genType const & x, genIType const & exp); +00326 +00328 }//namespace common +00329 }//namespace function +00330 }//namespace core +00331 +00332 using namespace core::function::common; +00333 }//namespace glm +00334 +00335 #include "func_common.inl" +00336 +00337 #endif//glm_core_func_common +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-08-08 +00005 // Updated : 2010-02-04 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/func_exponential.hpp +00009 +00010 #ifndef glm_core_func_exponential +00011 #define glm_core_func_exponential +00012 +00013 namespace glm +00014 { +00015 namespace core{ +00016 namespace function{ +00018 namespace exponential{ +00019 +00022 +00027 template <typename genType> +00028 genType pow(genType const & x, genType const & y); +00029 +00034 template <typename genType> +00035 genType exp(genType const & x); +00036 +00043 template <typename genType> +00044 genType log(genType const & x); +00045 +00050 template <typename genType> +00051 genType exp2(genType const & x); +00052 +00058 template <typename genType> +00059 genType log2(genType const & x); +00060 +00065 template <typename genType> +00066 genType sqrt(genType const & x); +00067 +00072 template <typename genType> +00073 genType inversesqrt(genType const & x); +00074 +00076 +00077 }//namespace exponential +00078 }//namespace function +00079 }//namespace core +00080 +00081 using namespace core::function::exponential; +00082 }//namespace glm +00083 +00084 #include "func_exponential.inl" +00085 +00086 #endif//glm_core_func_exponential +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-08-03 +00005 // Updated : 2010-02-04 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/func_geometric.hpp +00009 +00010 #ifndef glm_core_func_geometric +00011 #define glm_core_func_geometric +00012 +00013 namespace glm +00014 { +00015 namespace core{ +00016 namespace function{ +00017 namespace geometric{ +00018 +00021 +00026 template <typename genType> +00027 typename genType::value_type length( +00028 genType const & x); +00029 +00034 template <typename genType> +00035 typename genType::value_type distance( +00036 genType const & p0, +00037 genType const & p1); +00038 +00043 template <typename genType> +00044 typename genType::value_type dot( +00045 genType const & x, +00046 genType const & y); +00047 +00052 template <typename T> +00053 detail::tvec3<T> cross( +00054 detail::tvec3<T> const & x, +00055 detail::tvec3<T> const & y); +00056 +00061 template <typename genType> +00062 genType normalize( +00063 genType const & x); +00064 +00069 template <typename genType> +00070 genType faceforward( +00071 genType const & N, +00072 genType const & I, +00073 genType const & Nref); +00074 +00080 template <typename genType> +00081 genType reflect( +00082 genType const & I, +00083 genType const & N); +00084 +00091 template <typename genType> +00092 genType refract( +00093 genType const & I, +00094 genType const & N, +00095 typename genType::value_type const & eta); +00096 +00098 +00099 }//namespace geometric +00100 }//namespace function +00101 }//namespace core +00102 +00103 using namespace core::function::geometric; +00104 }//namespace glm +00105 +00106 #include "func_geometric.inl" +00107 +00108 #endif//glm_core_func_geometric +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2010-03-17 +00005 // Updated : 2010-03-31 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/func_integer.hpp +00009 +00010 #ifndef glm_core_func_integer +00011 #define glm_core_func_integer +00012 +00013 namespace glm +00014 { +00015 namespace core{ +00016 namespace function{ +00018 namespace integer{ +00019 +00022 +00029 template <typename genUType> +00030 genUType uaddCarry( +00031 genUType const & x, +00032 genUType const & y, +00033 genUType & carry); +00034 +00041 template <typename genUType> +00042 genUType usubBorrow( +00043 genUType const & x, +00044 genUType const & y, +00045 genUType & borrow); +00046 +00053 template <typename genUType> +00054 void umulExtended( +00055 genUType const & x, +00056 genUType const & y, +00057 genUType & msb, +00058 genUType & lsb); +00059 +00066 template <typename genIType> +00067 void imulExtended( +00068 genIType const & x, +00069 genIType const & y, +00070 genIType & msb, +00071 genIType & lsb); +00072 +00086 template <typename genIUType> +00087 genIUType bitfieldExtract( +00088 genIUType const & Value, +00089 int const & Offset, +00090 int const & Bits); +00091 +00104 template <typename genIUType> +00105 genIUType bitfieldInsert( +00106 genIUType const & Base, +00107 genIUType const & Insert, +00108 int const & Offset, +00109 int const & Bits); +00110 +00117 template <typename genIUType> +00118 genIUType bitfieldReverse(genIUType const & value); +00119 +00124 template <typename T, template <typename> class C> +00125 typename C<T>::signed_type bitCount(C<T> const & Value); +00126 +00133 template <typename T, template <typename> class C> +00134 typename C<T>::signed_type findLSB(C<T> const & Value); +00135 +00143 template <typename T, template <typename> class C> +00144 typename C<T>::signed_type findMSB(C<T> const & Value); +00145 +00147 +00148 }//namespace integer +00149 }//namespace function +00150 }//namespace core +00151 +00152 using namespace core::function::integer; +00153 }//namespace glm +00154 +00155 #include "func_integer.inl" +00156 +00157 #endif//glm_core_func_integer +00158 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-08-03 +00005 // Updated : 2010-02-04 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/func_matrix.hpp +00009 +00010 #ifndef glm_core_func_matrix +00011 #define glm_core_func_matrix +00012 +00013 namespace glm +00014 { +00015 namespace core{ +00016 namespace function{ +00018 namespace matrix{ +00019 +00022 +00028 template <typename matType> +00029 matType matrixCompMult( +00030 matType const & x, +00031 matType const & y); +00032 +00039 template <typename vecType, typename matType> +00040 matType outerProduct( +00041 vecType const & c, +00042 vecType const & r); +00043 +00048 template <typename matType> +00049 typename matType::transpose_type transpose( +00050 matType const & x); +00051 +00056 template <typename T> +00057 typename detail::tmat2x2<T>::value_type determinant( +00058 detail::tmat2x2<T> const & m); +00059 +00064 template <typename T> +00065 typename detail::tmat3x3<T>::value_type determinant( +00066 detail::tmat3x3<T> const & m); +00067 +00072 template <typename T> +00073 typename detail::tmat4x4<T>::value_type determinant( +00074 detail::tmat4x4<T> const & m); +00075 +00080 template <typename T> +00081 detail::tmat2x2<T> inverse( +00082 detail::tmat2x2<T> const & m); +00083 +00088 template <typename T> +00089 detail::tmat3x3<T> inverse( +00090 detail::tmat3x3<T> const & m); +00091 +00096 template <typename T> +00097 detail::tmat4x4<T> inverse( +00098 detail::tmat4x4<T> const & m); +00099 +00101 +00102 }//namespace matrix +00103 }//namespace function +00104 }//namespace core +00105 +00106 using namespace core::function::matrix; +00107 }//namespace glm +00108 +00109 #include "func_matrix.inl" +00110 +00111 #endif//glm_core_func_matrix +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-08-01 +00005 // Updated : 2008-09-10 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/func_noise.hpp +00009 +00010 #ifndef glm_core_func_noise +00011 #define glm_core_func_noise +00012 +00013 namespace glm +00014 { +00015 namespace core{ +00016 namespace function{ +00017 // Define all noise functions from Section 8.9 of GLSL 1.30.8 specification. Included in glm namespace. +00018 namespace noise{ +00019 +00022 +00027 template <typename genType> +00028 typename genType::value_type noise1(genType const & x); +00029 +00034 template <typename genType> +00035 detail::tvec2<typename genType::value_type> noise2(genType const & x); +00036 +00041 template <typename genType> +00042 detail::tvec3<typename genType::value_type> noise3(genType const & x); +00043 +00048 template <typename genType> +00049 detail::tvec4<typename genType::value_type> noise4(genType const & x); +00050 +00052 +00053 }//namespace noise +00054 }//namespace function +00055 }//namespace core +00056 +00057 using namespace core::function::noise; +00058 }//namespace glm +00059 +00060 #include "func_noise.inl" +00061 +00062 #endif//glm_core_func_noise +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2010-03-17 +00005 // Updated : 2010-03-17 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/func_packing.hpp +00009 +00010 #ifndef glm_core_func_packing +00011 #define glm_core_func_packing +00012 +00013 namespace glm +00014 { +00015 namespace core{ +00016 namespace function{ +00018 namespace packing +00019 { +00022 +00034 detail::uint32 packUnorm2x16(detail::tvec2<detail::float32> const & v); +00035 +00047 detail::uint32 packUnorm4x8(detail::tvec4<detail::float32> const & v); +00048 +00060 detail::uint32 packSnorm4x8(detail::tvec4<detail::float32> const & v); +00061 +00073 detail::tvec2<detail::float32> unpackUnorm2x16(detail::uint32 const & p); +00074 +00086 detail::tvec4<detail::float32> unpackUnorm4x8(detail::uint32 const & p); +00087 +00099 detail::tvec4<detail::float32> unpackSnorm4x8(detail::uint32 const & p); +00100 +00109 double packDouble2x32(detail::tvec2<detail::uint32> const & v); +00110 +00118 detail::tvec2<detail::uint32> unpackDouble2x32(double const & v); +00119 +00121 +00122 }//namespace packing +00123 }//namespace function +00124 }//namespace core +00125 +00126 using namespace core::function::packing; +00127 }//namespace glm +00128 +00129 #include "func_packing.inl" +00130 +00131 #endif//glm_core_func_packing +00132 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-08-01 +00005 // Updated : 2008-09-10 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/func_trigonometric.hpp +00009 +00010 #ifndef glm_core_func_trigonometric +00011 #define glm_core_func_trigonometric +00012 +00013 namespace glm +00014 { +00015 namespace core{ +00016 namespace function{ +00020 namespace trigonometric{ +00021 +00024 +00029 template <typename genType> +00030 genType radians(genType const & degrees); +00031 +00036 template <typename genType> +00037 genType degrees(genType const & radians); +00038 +00044 template <typename genType> +00045 genType sin(genType const & angle); +00046 +00052 template <typename genType> +00053 genType cos(genType const & angle); +00054 +00059 template <typename genType> +00060 genType tan(genType const & angle); +00061 +00068 template <typename genType> +00069 genType asin(genType const & x); +00070 +00077 template <typename genType> +00078 genType acos(genType const & x); +00079 +00088 template <typename genType> +00089 genType atan(genType const & y, genType const & x); +00090 +00096 template <typename genType> +00097 genType atan(genType const & y_over_x); +00098 +00103 template <typename genType> +00104 genType sinh(genType const & angle); +00105 +00110 template <typename genType> +00111 genType cosh(genType const & angle); +00112 +00117 template <typename genType> +00118 genType tanh(genType const & angle); +00119 +00124 template <typename genType> +00125 genType asinh(genType const & x); +00126 +00132 template <typename genType> +00133 genType acosh(genType const & x); +00134 +00140 template <typename genType> +00141 genType atanh(genType const & x); +00142 +00144 +00145 }//namespace trigonometric +00146 }//namespace function +00147 }//namespace core +00148 +00149 using namespace core::function::trigonometric; +00150 }//namespace glm +00151 +00152 #include "func_trigonometric.inl" +00153 +00154 #endif//glm_core_func_trigonometric +00155 +00156 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-08-03 +00005 // Updated : 2008-09-09 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/func_vector_relational.hpp +00009 +00010 #ifndef glm_core_func_vector_relational +00011 #define glm_core_func_vector_relational +00012 +00013 #include "_detail.hpp" +00014 +00015 namespace glm +00016 { +00017 namespace core{ +00018 namespace function{ +00021 namespace vector_relational +00022 { +00025 +00030 template <typename T, template <typename> class vecType> +00031 GLM_FUNC_QUALIFIER typename vecType<T>::bool_type lessThan +00032 ( +00033 vecType<T> const & x, +00034 vecType<T> const & y +00035 ) +00036 { +00037 GLM_STATIC_ASSERT(detail::is_vector<vecType<T> >::_YES, +00038 "Invalid template instantiation of 'lessThan', GLM vector types required"); +00039 GLM_STATIC_ASSERT(detail::is_bool<T>::_NO, +00040 "Invalid template instantiation of 'lessThan', GLM vector types required floating-point or integer value types vectors"); +00041 +00042 typename vecType<bool>::bool_type Result(vecType<bool>::null); +00043 for(typename vecType<bool>::size_type i = 0; i < vecType<bool>::value_size(); ++i) +00044 Result[i] = x[i] < y[i]; +00045 +00046 return Result; +00047 } +00048 +00053 template <typename T, template <typename> class vecType> +00054 GLM_FUNC_QUALIFIER typename vecType<T>::bool_type lessThanEqual +00055 ( +00056 vecType<T> const & x, +00057 vecType<T> const & y +00058 ) +00059 { +00060 GLM_STATIC_ASSERT(detail::is_vector<vecType<T> >::_YES, +00061 "Invalid template instantiation of 'lessThanEqual', GLM vector types required"); +00062 GLM_STATIC_ASSERT(detail::is_bool<T>::_NO, +00063 "Invalid template instantiation of 'lessThanEqual', GLM vector types required floating-point or integer value types vectors"); +00064 +00065 typename vecType<bool>::bool_type Result(vecType<bool>::null); +00066 for(typename vecType<bool>::size_type i = 0; i < vecType<bool>::value_size(); ++i) +00067 Result[i] = x[i] <= y[i]; +00068 return Result; +00069 } +00070 +00075 template <typename T, template <typename> class vecType> +00076 GLM_FUNC_QUALIFIER typename vecType<T>::bool_type greaterThan +00077 ( +00078 vecType<T> const & x, +00079 vecType<T> const & y +00080 ) +00081 { +00082 GLM_STATIC_ASSERT(detail::is_vector<vecType<T> >::_YES, +00083 "Invalid template instantiation of 'greaterThan', GLM vector types required"); +00084 GLM_STATIC_ASSERT(detail::is_bool<T>::_NO, +00085 "Invalid template instantiation of 'greaterThan', GLM vector types required floating-point or integer value types vectors"); +00086 +00087 typename vecType<bool>::bool_type Result(vecType<bool>::null); +00088 for(typename vecType<bool>::size_type i = 0; i < vecType<bool>::value_size(); ++i) +00089 Result[i] = x[i] > y[i]; +00090 return Result; +00091 } +00092 +00097 template <typename T, template <typename> class vecType> +00098 GLM_FUNC_QUALIFIER typename vecType<T>::bool_type greaterThanEqual +00099 ( +00100 vecType<T> const & x, +00101 vecType<T> const & y +00102 ) +00103 { +00104 GLM_STATIC_ASSERT(detail::is_vector<vecType<T> >::_YES, +00105 "Invalid template instantiation of 'greaterThanEqual', GLM vector types required"); +00106 GLM_STATIC_ASSERT(detail::is_bool<T>::_NO, +00107 "Invalid template instantiation of 'greaterThanEqual', GLM vector types required floating-point or integer value types vectors"); +00108 +00109 typename vecType<bool>::bool_type Result(vecType<bool>::null); +00110 for(typename vecType<bool>::size_type i = 0; i < vecType<bool>::value_size(); ++i) +00111 Result[i] = x[i] >= y[i]; +00112 return Result; +00113 } +00114 +00119 template <typename T, template <typename> class vecType> +00120 GLM_FUNC_QUALIFIER typename vecType<T>::bool_type equal +00121 ( +00122 vecType<T> const & x, +00123 vecType<T> const & y +00124 ) +00125 { +00126 GLM_STATIC_ASSERT(detail::is_vector<vecType<T> >::_YES, +00127 "Invalid template instantiation of 'equal', GLM vector types required"); +00128 +00129 typename vecType<bool>::bool_type Result(vecType<bool>::null); +00130 for(typename vecType<bool>::size_type i = 0; i < vecType<bool>::value_size(); ++i) +00131 Result[i] = x[i] == y[i]; +00132 return Result; +00133 } +00134 +00139 template <typename T, template <typename> class vecType> +00140 GLM_FUNC_QUALIFIER typename vecType<T>::bool_type notEqual +00141 ( +00142 vecType<T> const & x, +00143 vecType<T> const & y +00144 ) +00145 { +00146 GLM_STATIC_ASSERT(detail::is_vector<vecType<T> >::_YES, +00147 "Invalid template instantiation of 'notEqual', GLM vector types required"); +00148 +00149 typename vecType<bool>::bool_type Result(vecType<bool>::null); +00150 for(typename vecType<bool>::size_type i = 0; i < vecType<bool>::value_size(); ++i) +00151 Result[i] = x[i] != y[i]; +00152 return Result; +00153 } +00154 +00159 template <template <typename> class vecType> +00160 GLM_FUNC_QUALIFIER bool any(vecType<bool> const & v) +00161 { +00162 GLM_STATIC_ASSERT(detail::is_vector<vecType<bool> >::_YES, +00163 "Invalid template instantiation of 'any', GLM boolean vector types required"); +00164 +00165 bool Result = false; +00166 for(typename vecType<bool>::size_type i = 0; i < vecType<bool>::value_size(); ++i) +00167 Result = Result || v[i]; +00168 return Result; +00169 } +00170 +00175 template <template <typename> class vecType> +00176 GLM_FUNC_QUALIFIER bool all(vecType<bool> const & v) +00177 { +00178 GLM_STATIC_ASSERT(detail::is_vector<vecType<bool> >::_YES, +00179 "Invalid template instantiation of 'all', GLM boolean vector types required"); +00180 +00181 bool Result = true; +00182 for(typename vecType<bool>::size_type i = 0; i < vecType<bool>::value_size(); ++i) +00183 Result = Result && v[i]; +00184 return Result; +00185 } +00186 +00192 template <template <typename> class vecType> +00193 GLM_FUNC_QUALIFIER vecType<bool> not_(vecType<bool> const & v) +00194 { +00195 GLM_STATIC_ASSERT(detail::is_vector<vecType<bool> >::_YES, +00196 "Invalid template instantiation of 'not_', GLM vector types required"); +00197 +00198 typename vecType<bool>::bool_type Result(vecType<bool>::null); +00199 for(typename vecType<bool>::size_type i = 0; i < vecType<bool>::value_size(); ++i) +00200 Result[i] = !v[i]; +00201 return Result; +00202 } +00203 +00205 +00206 }//namespace vector_relational +00207 }//namespace function +00208 }//namespace core +00209 +00210 using namespace core::function::vector_relational; +00211 }//namespace glm +00212 +00213 #include "func_vector_relational.inl" +00214 +00215 #endif//glm_core_func_vector_relational +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-01-14 +00005 // Updated : 2011-01-19 +00006 // Licence : This source is under MIT License +00007 // File : glm/glm.hpp +00009 +00010 #include "core/_fixes.hpp" +00011 +00012 #ifndef glm_glm +00013 #define glm_glm +00014 +00015 #include <cmath> +00016 #include <climits> +00017 #include <cfloat> +00018 #include <limits> +00019 #include "core/setup.hpp" +00020 +00021 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_CORE_INCLUDED_DISPLAYED)) +00022 # define GLM_MESSAGE_CORE_INCLUDED_DISPLAYED +00023 # pragma message("GLM: Core library included") +00024 #endif//GLM_MESSAGE +00025 +00027 namespace glm +00028 { +00030 namespace core +00031 { +00036 namespace type +00037 { +00038 namespace precision{} +00039 } +00040 +00043 namespace function{} +00044 }//namespace core +00045 +00047 namespace gtc{} +00048 +00051 namespace gtx{} +00052 +00054 namespace virtrev{} +00055 +00056 using namespace core::type; +00057 using namespace core::type::precision; +00058 using namespace core::function; +00059 }//namespace glm +00060 +00061 #include "./core/_detail.hpp" +00062 #include "./core/type.hpp" +00063 +00064 #include "./core/func_trigonometric.hpp" +00065 #include "./core/func_exponential.hpp" +00066 #include "./core/func_common.hpp" +00067 #include "./core/func_packing.hpp" +00068 #include "./core/func_geometric.hpp" +00069 #include "./core/func_matrix.hpp" +00070 #include "./core/func_vector_relational.hpp" +00071 #include "./core/func_integer.hpp" +00072 #include "./core/func_noise.hpp" +00073 #include "./core/_swizzle.hpp" +00074 +00076 // check type sizes +00077 #ifndef GLM_STATIC_ASSERT_NULL +00078 GLM_STATIC_ASSERT(sizeof(glm::detail::int8) == 1, "int8 size isn't 1 byte on this platform"); +00079 GLM_STATIC_ASSERT(sizeof(glm::detail::int16) == 2, "int16 size isn't 2 bytes on this platform"); +00080 GLM_STATIC_ASSERT(sizeof(glm::detail::int32) == 4, "int32 size isn't 4 bytes on this platform"); +00081 GLM_STATIC_ASSERT(sizeof(glm::detail::int64) == 8, "int64 size isn't 8 bytes on this platform"); +00082 +00083 GLM_STATIC_ASSERT(sizeof(glm::detail::uint8) == 1, "uint8 size isn't 1 byte on this platform"); +00084 GLM_STATIC_ASSERT(sizeof(glm::detail::uint16) == 2, "uint16 size isn't 2 bytes on this platform"); +00085 GLM_STATIC_ASSERT(sizeof(glm::detail::uint32) == 4, "uint32 size isn't 4 bytes on this platform"); +00086 GLM_STATIC_ASSERT(sizeof(glm::detail::uint64) == 8, "uint64 size isn't 8 bytes on this platform"); +00087 +00088 GLM_STATIC_ASSERT(sizeof(glm::detail::float16) == 2, "float16 size isn't 2 bytes on this platform"); +00089 GLM_STATIC_ASSERT(sizeof(glm::detail::float32) == 4, "float32 size isn't 4 bytes on this platform"); +00090 GLM_STATIC_ASSERT(sizeof(glm::detail::float64) == 8, "float64 size isn't 8 bytes on this platform"); +00091 #endif//GLM_STATIC_ASSERT_NULL +00092 +00093 #endif//glm_glm +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2009-03-06 +00005 // Updated : 2009-03-09 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/gradient_paint.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_gradient_paint +00014 #define glm_gtx_gradient_paint +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 #include "../gtx/optimum_pow.hpp" +00019 +00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00021 # pragma message("GLM: GLM_GTX_gradient_paint extension included") +00022 #endif +00023 +00024 namespace glm{ +00025 namespace gtx{ +00026 namespace gradient_paint +00027 { +00028 using namespace gtx::optimum_pow; +00029 +00032 +00033 template <typename valType> +00034 valType radialGradient( +00035 glm::detail::tvec2<valType> const & Center, +00036 valType const & Radius, +00037 glm::detail::tvec2<valType> const & Focal, +00038 glm::detail::tvec2<valType> const & Position); +00039 +00040 template <typename valType> +00041 valType linearGradient( +00042 glm::detail::tvec2<valType> const & Point0, +00043 glm::detail::tvec2<valType> const & Point1, +00044 glm::detail::tvec2<valType> const & Position); +00045 +00047 }// namespace gradient_paint +00048 }// namespace gtx +00049 }// namespace glm +00050 +00051 #include "gradient_paint.inl" +00052 +00053 namespace glm{using namespace gtx::gradient_paint;} +00054 +00055 #endif//glm_gtx_gradient_paint +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2009-04-29 +00005 // Updated : 2010-02-07 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtc/half_float.hpp +00009 +00010 #ifndef glm_gtc_half_float +00011 #define glm_gtc_half_float +00012 +00013 // Dependency: +00014 #include "../glm.hpp" +00015 +00016 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00017 # pragma message("GLM: GLM_GTC_half_float extension included") +00018 #endif +00019 +00020 namespace glm{ +00021 namespace detail +00022 { +00023 #ifndef _MSC_EXTENSIONS +00024 template <> +00025 struct tvec2<thalf> +00026 { +00027 enum ctor{null}; +00028 typedef thalf value_type; +00029 typedef std::size_t size_type; +00030 static size_type value_size(); +00031 GLM_FUNC_DECL size_type length() const; +00032 +00033 typedef tvec2<thalf> type; +00034 typedef tvec2<bool> bool_type; +00035 +00037 // Data +00038 +00039 thalf x, y; +00040 +00042 // Accesses +00043 +00044 thalf & operator[](size_type i); +00045 thalf const & operator[](size_type i) const; +00046 +00048 // Implicit basic constructors +00049 +00050 tvec2(); +00051 tvec2(tvec2<thalf> const & v); +00052 +00054 // Explicit basic constructors +00055 +00056 explicit tvec2(ctor); +00057 explicit tvec2( +00058 thalf const & s); +00059 explicit tvec2( +00060 thalf const & s1, +00061 thalf const & s2); +00062 +00064 // Swizzle constructors +00065 +00066 tvec2(tref2<thalf> const & r); +00067 +00069 // Convertion scalar constructors +00070 +00072 template <typename U> +00073 explicit tvec2(U const & x); +00075 template <typename U, typename V> +00076 explicit tvec2(U const & x, V const & y); +00077 +00079 // Convertion vector constructors +00080 +00082 template <typename U> +00083 explicit tvec2(tvec2<U> const & v); +00085 template <typename U> +00086 explicit tvec2(tvec3<U> const & v); +00088 template <typename U> +00089 explicit tvec2(tvec4<U> const & v); +00090 +00092 // Unary arithmetic operators +00093 +00094 tvec2<thalf>& operator= (tvec2<thalf> const & v); +00095 +00096 tvec2<thalf>& operator+=(thalf const & s); +00097 tvec2<thalf>& operator+=(tvec2<thalf> const & v); +00098 tvec2<thalf>& operator-=(thalf const & s); +00099 tvec2<thalf>& operator-=(tvec2<thalf> const & v); +00100 tvec2<thalf>& operator*=(thalf const & s); +00101 tvec2<thalf>& operator*=(tvec2<thalf> const & v); +00102 tvec2<thalf>& operator/=(thalf const & s); +00103 tvec2<thalf>& operator/=(tvec2<thalf> const & v); +00104 tvec2<thalf>& operator++(); +00105 tvec2<thalf>& operator--(); +00106 +00108 // Swizzle operators +00109 +00110 thalf swizzle(comp X) const; +00111 tvec2<thalf> swizzle(comp X, comp Y) const; +00112 tvec3<thalf> swizzle(comp X, comp Y, comp Z) const; +00113 tvec4<thalf> swizzle(comp X, comp Y, comp Z, comp W) const; +00114 tref2<thalf> swizzle(comp X, comp Y); +00115 }; +00116 +00117 template <> +00118 struct tvec3<thalf> +00119 { +00120 enum ctor{null}; +00121 typedef thalf value_type; +00122 typedef std::size_t size_type; +00123 static size_type value_size(); +00124 GLM_FUNC_DECL size_type length() const; +00125 +00126 typedef tvec3<thalf> type; +00127 typedef tvec3<bool> bool_type; +00128 +00130 // Data +00131 +00132 thalf x, y, z; +00133 +00135 // Accesses +00136 +00137 thalf & operator[](size_type i); +00138 thalf const & operator[](size_type i) const; +00139 +00141 // Implicit basic constructors +00142 +00143 tvec3(); +00144 tvec3(tvec3<thalf> const & v); +00145 +00147 // Explicit basic constructors +00148 +00149 explicit tvec3(ctor); +00150 explicit tvec3( +00151 thalf const & s); +00152 explicit tvec3( +00153 thalf const & s1, +00154 thalf const & s2, +00155 thalf const & s3); +00156 +00158 // Swizzle constructors +00159 +00160 tvec3(tref3<thalf> const & r); +00161 +00163 // Convertion scalar constructors +00164 +00166 template <typename U> +00167 explicit tvec3(U const & x); +00169 template <typename U, typename V, typename W> +00170 explicit tvec3(U const & x, V const & y, W const & z); +00171 +00173 // Convertion vector constructors +00174 +00176 template <typename A, typename B> +00177 explicit tvec3(tvec2<A> const & v, B const & s); +00179 template <typename A, typename B> +00180 explicit tvec3(A const & s, tvec2<B> const & v); +00182 template <typename U> +00183 explicit tvec3(tvec3<U> const & v); +00185 template <typename U> +00186 explicit tvec3(tvec4<U> const & v); +00187 +00189 // Unary arithmetic operators +00190 +00191 tvec3<thalf>& operator= (tvec3<thalf> const & v); +00192 +00193 tvec3<thalf>& operator+=(thalf const & s); +00194 tvec3<thalf>& operator+=(tvec3<thalf> const & v); +00195 tvec3<thalf>& operator-=(thalf const & s); +00196 tvec3<thalf>& operator-=(tvec3<thalf> const & v); +00197 tvec3<thalf>& operator*=(thalf const & s); +00198 tvec3<thalf>& operator*=(tvec3<thalf> const & v); +00199 tvec3<thalf>& operator/=(thalf const & s); +00200 tvec3<thalf>& operator/=(tvec3<thalf> const & v); +00201 tvec3<thalf>& operator++(); +00202 tvec3<thalf>& operator--(); +00203 +00205 // Swizzle operators +00206 +00207 thalf swizzle(comp X) const; +00208 tvec2<thalf> swizzle(comp X, comp Y) const; +00209 tvec3<thalf> swizzle(comp X, comp Y, comp Z) const; +00210 tvec4<thalf> swizzle(comp X, comp Y, comp Z, comp W) const; +00211 tref3<thalf> swizzle(comp X, comp Y, comp Z); +00212 }; +00213 +00214 template <> +00215 struct tvec4<thalf> +00216 { +00217 enum ctor{null}; +00218 typedef thalf value_type; +00219 typedef std::size_t size_type; +00220 static size_type value_size(); +00221 GLM_FUNC_DECL size_type length() const; +00222 +00223 typedef tvec4<thalf> type; +00224 typedef tvec4<bool> bool_type; +00225 +00227 // Data +00228 +00229 thalf x, y, z, w; +00230 +00232 // Accesses +00233 +00234 thalf & operator[](size_type i); +00235 thalf const & operator[](size_type i) const; +00236 +00238 // Implicit basic constructors +00239 +00240 tvec4(); +00241 tvec4(tvec4<thalf> const & v); +00242 +00244 // Explicit basic constructors +00245 +00246 explicit tvec4(ctor); +00247 explicit tvec4( +00248 thalf const & s); +00249 explicit tvec4( +00250 thalf const & s0, +00251 thalf const & s1, +00252 thalf const & s2, +00253 thalf const & s3); +00254 +00256 // Swizzle constructors +00257 +00258 tvec4(tref4<thalf> const & r); +00259 +00261 // Convertion scalar constructors +00262 +00264 template <typename U> +00265 explicit tvec4(U const & x); +00267 template <typename A, typename B, typename C, typename D> +00268 explicit tvec4(A const & x, B const & y, C const & z, D const & w); +00269 +00271 // Convertion vector constructors +00272 +00274 template <typename A, typename B, typename C> +00275 explicit tvec4(tvec2<A> const & v, B const & s1, C const & s2); +00277 template <typename A, typename B, typename C> +00278 explicit tvec4(A const & s1, tvec2<B> const & v, C const & s2); +00280 template <typename A, typename B, typename C> +00281 explicit tvec4(A const & s1, B const & s2, tvec2<C> const & v); +00283 template <typename A, typename B> +00284 explicit tvec4(tvec3<A> const & v, B const & s); +00286 template <typename A, typename B> +00287 explicit tvec4(A const & s, tvec3<B> const & v); +00289 template <typename A, typename B> +00290 explicit tvec4(tvec2<A> const & v1, tvec2<B> const & v2); +00292 template <typename U> +00293 explicit tvec4(tvec4<U> const & v); +00294 +00296 // Unary arithmetic operators +00297 +00298 tvec4<thalf>& operator= (tvec4<thalf> const & v); +00299 +00300 tvec4<thalf>& operator+=(thalf const & s); +00301 tvec4<thalf>& operator+=(tvec4<thalf> const & v); +00302 tvec4<thalf>& operator-=(thalf const & s); +00303 tvec4<thalf>& operator-=(tvec4<thalf> const & v); +00304 tvec4<thalf>& operator*=(thalf const & s); +00305 tvec4<thalf>& operator*=(tvec4<thalf> const & v); +00306 tvec4<thalf>& operator/=(thalf const & s); +00307 tvec4<thalf>& operator/=(tvec4<thalf> const & v); +00308 tvec4<thalf>& operator++(); +00309 tvec4<thalf>& operator--(); +00310 +00312 // Swizzle operators +00313 +00314 thalf swizzle(comp X) const; +00315 tvec2<thalf> swizzle(comp X, comp Y) const; +00316 tvec3<thalf> swizzle(comp X, comp Y, comp Z) const; +00317 tvec4<thalf> swizzle(comp X, comp Y, comp Z, comp W) const; +00318 tref4<thalf> swizzle(comp X, comp Y, comp Z, comp W); +00319 }; +00320 #endif//_MSC_EXTENSIONS +00321 } +00322 //namespace detail +00323 +00324 namespace gtc{ +00325 namespace half_float +00326 { +00329 +00332 typedef detail::thalf half; +00333 +00336 typedef detail::tvec2<detail::thalf> hvec2; +00337 +00340 typedef detail::tvec3<detail::thalf> hvec3; +00341 +00344 typedef detail::tvec4<detail::thalf> hvec4; +00345 +00348 typedef detail::tmat2x2<detail::thalf> hmat2; +00349 +00352 typedef detail::tmat3x3<detail::thalf> hmat3; +00353 +00356 typedef detail::tmat4x4<detail::thalf> hmat4; +00357 +00360 typedef detail::tmat2x2<detail::thalf> hmat2x2; +00361 +00364 typedef detail::tmat2x3<detail::thalf> hmat2x3; +00365 +00368 typedef detail::tmat2x4<detail::thalf> hmat2x4; +00369 +00372 typedef detail::tmat3x2<detail::thalf> hmat3x2; +00373 +00376 typedef detail::tmat3x3<detail::thalf> hmat3x3; +00377 +00380 typedef detail::tmat3x4<detail::thalf> hmat3x4; +00381 +00384 typedef detail::tmat4x2<detail::thalf> hmat4x2; +00385 +00388 typedef detail::tmat4x3<detail::thalf> hmat4x3; +00389 +00392 typedef detail::tmat4x4<detail::thalf> hmat4x4; +00393 +00395 +00396 }// namespace half_float +00397 }// namespace gtc +00398 }// namespace glm +00399 +00400 #include "half_float.inl" +00401 +00402 namespace glm{using namespace gtc::half_float;} +00403 +00404 #endif//glm_gtc_half_float +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-21 +00005 // Updated : 2009-02-19 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/handed_coordinate_space.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_handed_coordinate_space +00014 #define glm_gtx_handed_coordinate_space +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_handed_coordinate_space extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace handed_coordinate_space +00026 { +00029 +00032 template <typename T> +00033 bool rightHanded( +00034 detail::tvec3<T> const & tangent, +00035 detail::tvec3<T> const & binormal, +00036 detail::tvec3<T> const & normal); +00037 +00040 template <typename T> +00041 bool leftHanded( +00042 detail::tvec3<T> const & tangent, +00043 detail::tvec3<T> const & binormal, +00044 detail::tvec3<T> const & normal); +00045 +00047 }// namespace handed_coordinate_space +00048 }// namespace gtx +00049 }// namespace glm +00050 +00051 #include "handed_coordinate_space.inl" +00052 +00053 namespace glm{using namespace gtx::handed_coordinate_space;} +00054 +00055 #endif//glm_gtx_handed_coordinate_space +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-08-14 +00005 // Updated : 2008-08-14 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/hint.hpp +00009 +00010 #ifndef glm_core_type +00011 #define glm_core_type +00012 +00013 namespace glm +00014 { +00015 // Use dont_care, nicest and fastest to optimize implementations. +00016 class dont_care {}; +00017 class nicest {}; +00018 class fastest {}; +00019 }; +00020 +00021 #endif//glm_core_type +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2006-04-21 +00005 // Updated : 2006-11-13 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/inertia.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_inertia +00014 #define glm_gtx_inertia +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_inertia extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace inertia +00026 { +00029 +00032 template <typename T> +00033 detail::tmat3x3<T> boxInertia3( +00034 const T Mass, +00035 const detail::tvec3<T>& Scale); +00036 +00039 template <typename T> +00040 detail::tmat4x4<T> boxInertia4( +00041 const T Mass, +00042 const detail::tvec3<T>& Scale); +00043 +00046 template <typename T> +00047 detail::tmat3x3<T> diskInertia3( +00048 const T Mass, +00049 const T Radius); +00050 +00053 template <typename T> +00054 detail::tmat4x4<T> diskInertia4( +00055 const T Mass, +00056 const T Radius); +00057 +00060 template <typename T> +00061 detail::tmat3x3<T> ballInertia3( +00062 const T Mass, +00063 const T Radius); +00064 +00067 template <typename T> +00068 detail::tmat4x4<T> ballInertia4( +00069 const T Mass, +00070 const T Radius); +00071 +00074 template <typename T> +00075 detail::tmat3x3<T> sphereInertia3( +00076 const T Mass, +00077 const T Radius); +00078 +00081 template <typename T> +00082 detail::tmat4x4<T> sphereInertia4( +00083 const T Mass, +00084 const T Radius); +00085 +00087 }// namespace inertia +00088 }// namespace gtx +00089 }// namespace glm +00090 +00091 #include "inertia.inl" +00092 +00093 namespace glm{using namespace gtx::inertia;} +00094 +00095 #endif//glm_gtx_inertia +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2010-07-07 +00005 // Updated : 2010-07-07 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/int_10_10_10_2.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_int_10_10_10_2 +00014 #define glm_gtx_int_10_10_10_2 +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 #include "../gtx/raw_data.hpp" +00019 +00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00021 # pragma message("GLM: GLM_GTX_int_10_10_10_2 extension included") +00022 #endif +00023 +00024 namespace glm{ +00025 namespace gtx{ +00026 namespace int_10_10_10_2 +00027 { +00028 using namespace gtx::raw_data; +00029 +00032 +00035 dword uint10_10_10_2_cast(glm::vec4 const & v); +00036 +00038 +00039 }//namespace integer +00040 }//namespace gtx +00041 }//namespace glm +00042 +00043 #include "int_10_10_10_2.inl" +00044 +00045 namespace glm{using namespace gtx::int_10_10_10_2;} +00046 +00047 #endif//glm_gtx_int_10_10_10_2 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-24 +00005 // Updated : 2006-11-14 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/integer.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_integer +00014 #define glm_gtx_integer +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_integer extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace integer +00026 { +00029 +00032 int pow(int x, int y); +00033 +00036 int sqrt(int x); +00037 +00040 int mod(int x, int y); +00041 +00044 template <typename genType> +00045 genType factorial(genType const & x); +00046 +00048 }//namespace integer +00049 }//namespace gtx +00050 }//namespace glm +00051 +00052 #include "integer.inl" +00053 +00054 namespace glm{using namespace gtx::integer;} +00055 +00056 #endif//glm_gtx_integer +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2007-04-03 +00005 // Updated : 2009-01-20 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/intersect.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTX_closest_point +00013 +00014 #ifndef glm_gtx_intersect +00015 #define glm_gtx_intersect +00016 +00017 // Dependency: +00018 #include "../glm.hpp" +00019 #include "../gtx/closest_point.hpp" +00020 +00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00022 # pragma message("GLM: GLM_GTX_closest_point extension included") +00023 #endif +00024 +00025 namespace glm{ +00026 namespace gtx{ +00027 namespace intersect +00028 { +00031 +00034 template <typename genType> +00035 bool intersectRayTriangle( +00036 genType const & orig, genType const & dir, +00037 genType const & vert0, genType const & vert1, genType const & vert2, +00038 genType & baryPosition); +00039 +00042 template <typename genType> +00043 bool intersectLineTriangle( +00044 genType const & orig, genType const & dir, +00045 genType const & vert0, genType const & vert1, genType const & vert2, +00046 genType & position); +00047 +00050 template <typename genType> +00051 bool intersectRaySphere( +00052 genType const & orig, genType const & dir, +00053 genType const & center, typename genType::value_type radius, +00054 genType & position, genType & normal); +00055 +00058 template <typename genType> +00059 bool intersectLineSphere( +00060 genType const & point0, genType const & point1, +00061 genType const & center, typename genType::value_type radius, +00062 genType & position, genType & normal); +00063 +00065 }//namespace intersect +00066 }//namespace gtx +00067 }//namespace glm +00068 +00069 #include "intersect.inl" +00070 +00071 namespace glm{using namespace gtx::intersect;} +00072 +00073 #endif//glm_gtx_intersect +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2009-05-11 +00005 // Updated : 2009-05-11 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/intrinsic_common.hpp +00009 +00010 #ifndef glm_detail_intrinsic_common +00011 #define glm_detail_intrinsic_common +00012 +00013 #include "setup.hpp" +00014 +00015 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2) +00016 # error "SSE2 instructions not supported or enabled" +00017 #else +00018 +00019 namespace glm{ +00020 namespace detail +00021 { +00022 __m128 sse_abs_ps(__m128 x); +00023 +00024 __m128 sse_sgn_ps(__m128 x); +00025 +00026 //floor +00027 __m128 sse_flr_ps(__m128 v); +00028 +00029 //trunc +00030 __m128 sse_trc_ps(__m128 v); +00031 +00032 //round +00033 __m128 sse_nd_ps(__m128 v); +00034 +00035 //roundEven +00036 __m128 sse_rde_ps(__m128 v); +00037 +00038 __m128 sse_rnd_ps(__m128 x); +00039 +00040 __m128 sse_ceil_ps(__m128 v); +00041 +00042 __m128 sse_frc_ps(__m128 x); +00043 +00044 __m128 sse_mod_ps(__m128 x, __m128 y); +00045 +00046 __m128 sse_modf_ps(__m128 x, __m128i & i); +00047 +00048 //GLM_FUNC_QUALIFIER __m128 sse_min_ps(__m128 x, __m128 y) +00049 +00050 //GLM_FUNC_QUALIFIER __m128 sse_max_ps(__m128 x, __m128 y) +00051 +00052 __m128 sse_clp_ps(__m128 v, __m128 minVal, __m128 maxVal); +00053 +00054 __m128 sse_mix_ps(__m128 v1, __m128 v2, __m128 a); +00055 +00056 __m128 sse_stp_ps(__m128 edge, __m128 x); +00057 +00058 __m128 sse_ssp_ps(__m128 edge0, __m128 edge1, __m128 x); +00059 +00060 __m128 sse_nan_ps(__m128 x); +00061 +00062 __m128 sse_inf_ps(__m128 x); +00063 +00064 }//namespace detail +00065 }//namespace glm +00066 +00067 #include "intrinsic_common.inl" +00068 +00069 #endif//GLM_ARCH +00070 #endif//glm_detail_intrinsic_common +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2009-05-11 +00005 // Updated : 2009-05-11 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/intrinsic_exponential.hpp +00009 +00010 #ifndef glm_detail_intrinsic_exponential +00011 #define glm_detail_intrinsic_exponential +00012 +00013 #include "setup.hpp" +00014 +00015 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2) +00016 # error "SSE2 instructions not supported or enabled" +00017 #else +00018 +00019 namespace glm{ +00020 namespace detail +00021 { +00022 /* +00023 GLM_FUNC_QUALIFIER __m128 sse_rsqrt_nr_ss(__m128 const x) +00024 { +00025 __m128 recip = _mm_rsqrt_ss( x ); // "estimate" opcode +00026 const static __m128 three = { 3, 3, 3, 3 }; // aligned consts for fast load +00027 const static __m128 half = { 0.5,0.5,0.5,0.5 }; +00028 __m128 halfrecip = _mm_mul_ss( half, recip ); +00029 __m128 threeminus_xrr = _mm_sub_ss( three, _mm_mul_ss( x, _mm_mul_ss ( recip, recip ) ) ); +00030 return _mm_mul_ss( halfrecip, threeminus_xrr ); +00031 } +00032 +00033 GLM_FUNC_QUALIFIER __m128 sse_normalize_fast_ps( float * RESTRICT vOut, float * RESTRICT vIn ) +00034 { +00035 __m128 x = _mm_load_ss(&vIn[0]); +00036 __m128 y = _mm_load_ss(&vIn[1]); +00037 __m128 z = _mm_load_ss(&vIn[2]); +00038 +00039 const __m128 l = // compute x*x + y*y + z*z +00040 _mm_add_ss( +00041 _mm_add_ss( _mm_mul_ss(x,x), +00042 _mm_mul_ss(y,y) +00043 ), +00044 _mm_mul_ss( z, z ) +00045 ); +00046 +00047 +00048 const __m128 rsqt = _mm_rsqrt_nr_ss( l ); +00049 _mm_store_ss( &vOut[0] , _mm_mul_ss( rsqt, x ) ); +00050 _mm_store_ss( &vOut[1] , _mm_mul_ss( rsqt, y ) ); +00051 _mm_store_ss( &vOut[2] , _mm_mul_ss( rsqt, z ) ); +00052 +00053 return _mm_mul_ss( l , rsqt ); +00054 } +00055 */ +00056 }//namespace detail +00057 }//namespace glm +00058 +00059 #endif//GLM_ARCH +00060 #endif//glm_detail_intrinsic_exponential +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2009-05-08 +00005 // Updated : 2009-05-08 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/intrinsic_geometric.hpp +00009 +00010 #ifndef glm_core_intrinsic_geometric +00011 #define glm_core_intrinsic_geometric +00012 +00013 #include "setup.hpp" +00014 +00015 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2) +00016 # error "SSE2 instructions not supported or enabled" +00017 #else +00018 +00019 #include "intrinsic_common.hpp" +00020 +00021 namespace glm{ +00022 namespace detail +00023 { +00024 //length +00025 __m128 sse_len_ps(__m128 x); +00026 +00027 //distance +00028 __m128 sse_dst_ps(__m128 p0, __m128 p1); +00029 +00030 //dot +00031 __m128 sse_dot_ps(__m128 v1, __m128 v2); +00032 +00033 // SSE1 +00034 __m128 sse_dot_ss(__m128 v1, __m128 v2); +00035 +00036 //cross +00037 __m128 sse_xpd_ps(__m128 v1, __m128 v2); +00038 +00039 //normalize +00040 __m128 sse_nrm_ps(__m128 v); +00041 +00042 //faceforward +00043 __m128 sse_ffd_ps(__m128 N, __m128 I, __m128 Nref); +00044 +00045 //reflect +00046 __m128 sse_rfe_ps(__m128 I, __m128 N); +00047 +00048 //refract +00049 __m128 sse_rfa_ps(__m128 I, __m128 N, __m128 eta); +00050 +00051 }//namespace detail +00052 }//namespace glm +00053 +00054 #include "intrinsic_geometric.inl" +00055 +00056 #endif//GLM_ARCH +00057 #endif//glm_core_intrinsic_geometric +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2009-06-05 +00005 // Updated : 2009-06-05 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/intrinsic_common.hpp +00009 +00010 #ifndef glm_detail_intrinsic_matrix +00011 #define glm_detail_intrinsic_matrix +00012 +00013 #include "setup.hpp" +00014 +00015 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2) +00016 # error "SSE2 instructions not supported or enabled" +00017 #else +00018 +00019 #include "intrinsic_geometric.hpp" +00020 +00021 namespace glm{ +00022 namespace detail +00023 { +00024 void sse_add_ps(__m128 in1[4], __m128 in2[4], __m128 out[4]); +00025 +00026 void sse_sub_ps(__m128 in1[4], __m128 in2[4], __m128 out[4]); +00027 +00028 __m128 sse_mul_ps(__m128 m[4], __m128 v); +00029 +00030 __m128 sse_mul_ps(__m128 v, __m128 m[4]); +00031 +00032 void sse_mul_ps(__m128 const in1[4], __m128 const in2[4], __m128 out[4]); +00033 +00034 void sse_transpose_ps(__m128 const in[4], __m128 out[4]); +00035 +00036 void sse_inverse_ps(__m128 const in[4], __m128 out[4]); +00037 +00038 void sse_rotate_ps(__m128 const in[4], float Angle, float const v[3], __m128 out[4]); +00039 +00040 __m128 sse_det_ps(__m128 const m[4]); +00041 +00042 __m128 sse_slow_det_ps(__m128 const m[4]); +00043 +00044 }//namespace detail +00045 }//namespace glm +00046 +00047 #include "intrinsic_matrix.inl" +00048 +00049 #endif//GLM_ARCH +00050 #endif//glm_detail_intrinsic_matrix +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2009-06-09 +00005 // Updated : 2009-06-09 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/intrinsic_trigonometric.hpp +00009 +00010 #ifndef glm_detail_intrinsic_trigonometric +00011 #define glm_detail_intrinsic_trigonometric +00012 +00013 #include "setup.hpp" +00014 +00015 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2) +00016 # error "SSE2 instructions not supported or enabled" +00017 #else +00018 +00019 namespace glm{ +00020 namespace detail +00021 { +00022 +00023 }//namespace detail +00024 }//namespace glm +00025 +00026 #include "intrinsic_trigonometric.inl" +00027 +00028 #endif//GLM_ARCH +00029 #endif//glm_detail_intrinsic_trigonometric +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2009-06-09 +00005 // Updated : 2009-06-09 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/intrinsic_vector_relational.hpp +00009 +00010 #ifndef glm_detail_intrinsic_vector_relational +00011 #define glm_detail_intrinsic_vector_relational +00012 +00013 #include "setup.hpp" +00014 +00015 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2) +00016 # error "SSE2 instructions not supported or enabled" +00017 #else +00018 +00019 namespace glm{ +00020 namespace detail +00021 { +00022 +00023 }//namespace detail +00024 }//namespace glm +00025 +00026 #include "intrinsic_vector_relational.inl" +00027 +00028 #endif//GLM_ARCH +00029 #endif//glm_detail_intrinsic_vector_relational +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-10-24 +00005 // Updated : 2008-10-24 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/log_base.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_log_base +00014 #define glm_gtx_log_base +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_log_base extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace log_base +00026 { +00029 +00032 template <typename genType> +00033 genType log( +00034 genType const & x, +00035 genType const & base); +00036 +00038 +00039 }//namespace extend +00040 }//namespace gtx +00041 }//namespace glm +00042 +00043 #include "log_base.inl" +00044 +00045 namespace glm{using namespace gtx::log_base;} +00046 +00047 #endif//glm_gtx_log_base +
+ |
00001 # Doxyfile 1.7.3 +00002 +00003 # This file describes the settings to be used by the documentation system +00004 # doxygen (www.doxygen.org) for a project +00005 # +00006 # All text after a hash (#) is considered a comment and will be ignored +00007 # The format is: +00008 # TAG = value [value, ...] +00009 # For lists items can also be appended using: +00010 # TAG += value [value, ...] +00011 # Values that contain spaces should be placed between quotes (" ") +00012 +00013 #--------------------------------------------------------------------------- +00014 # Project related configuration options +00015 #--------------------------------------------------------------------------- +00016 +00017 # This tag specifies the encoding used for all characters in the config file +00018 # that follow. The default is UTF-8 which is also the encoding used for all +00019 # text before the first occurrence of this tag. Doxygen uses libiconv (or the +00020 # iconv built into libc) for the transcoding. See +00021 # http://www.gnu.org/software/libiconv for the list of possible encodings. +00022 +00023 DOXYFILE_ENCODING = UTF-8 +00024 +00025 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded +00026 # by quotes) that should identify the project. +00027 +00028 PROJECT_NAME = +00029 +00030 # The PROJECT_NUMBER tag can be used to enter a project or revision number. +00031 # This could be handy for archiving the generated documentation or +00032 # if some version control system is used. +00033 +00034 PROJECT_NUMBER = 0.9.2 +00035 +00036 # Using the PROJECT_BRIEF tag one can provide an optional one line description +00037 # for a project that appears at the top of each page and should give viewer +00038 # a quick idea about the purpose of the project. Keep the description short. +00039 +00040 PROJECT_BRIEF = +00041 +00042 # With the PROJECT_LOGO tag one can specify an logo or icon that is +00043 # included in the documentation. The maximum height of the logo should not +00044 # exceed 55 pixels and the maximum width should not exceed 200 pixels. +00045 # Doxygen will copy the logo to the output directory. +00046 +00047 PROJECT_LOGO = ./image/logo-mini.png +00048 +00049 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +00050 # base path where the generated documentation will be put. +00051 # If a relative path is entered, it will be relative to the location +00052 # where doxygen was started. If left blank the current directory will be used. +00053 +00054 OUTPUT_DIRECTORY = . +00055 +00056 # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +00057 # 4096 sub-directories (in 2 levels) under the output directory of each output +00058 # format and will distribute the generated files over these directories. +00059 # Enabling this option can be useful when feeding doxygen a huge amount of +00060 # source files, where putting all generated files in the same directory would +00061 # otherwise cause performance problems for the file system. +00062 +00063 CREATE_SUBDIRS = NO +00064 +00065 # The OUTPUT_LANGUAGE tag is used to specify the language in which all +00066 # documentation generated by doxygen is written. Doxygen will use this +00067 # information to generate all constant output in the proper language. +00068 # The default language is English, other supported languages are: +00069 # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +00070 # Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +00071 # Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +00072 # messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, +00073 # Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, +00074 # Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. +00075 +00076 OUTPUT_LANGUAGE = English +00077 +00078 # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +00079 # include brief member descriptions after the members that are listed in +00080 # the file and class documentation (similar to JavaDoc). +00081 # Set to NO to disable this. +00082 +00083 BRIEF_MEMBER_DESC = NO +00084 +00085 # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +00086 # the brief description of a member or function before the detailed description. +00087 # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +00088 # brief descriptions will be completely suppressed. +00089 +00090 REPEAT_BRIEF = YES +00091 +00092 # This tag implements a quasi-intelligent brief description abbreviator +00093 # that is used to form the text in various listings. Each string +00094 # in this list, if found as the leading text of the brief description, will be +00095 # stripped from the text and the result after processing the whole list, is +00096 # used as the annotated text. Otherwise, the brief description is used as-is. +00097 # If left blank, the following values are used ("$name" is automatically +00098 # replaced with the name of the entity): "The $name class" "The $name widget" +00099 # "The $name file" "is" "provides" "specifies" "contains" +00100 # "represents" "a" "an" "the" +00101 +00102 ABBREVIATE_BRIEF = "The $name class " \ +00103 "The $name widget " \ +00104 "The $name file " \ +00105 is \ +00106 provides \ +00107 specifies \ +00108 contains \ +00109 represents \ +00110 a \ +00111 an \ +00112 the +00113 +00114 # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +00115 # Doxygen will generate a detailed section even if there is only a brief +00116 # description. +00117 +00118 ALWAYS_DETAILED_SEC = NO +00119 +00120 # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +00121 # inherited members of a class in the documentation of that class as if those +00122 # members were ordinary class members. Constructors, destructors and assignment +00123 # operators of the base classes will not be shown. +00124 +00125 INLINE_INHERITED_MEMB = NO +00126 +00127 # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +00128 # path before files name in the file list and in the header files. If set +00129 # to NO the shortest path that makes the file name unique will be used. +00130 +00131 FULL_PATH_NAMES = NO +00132 +00133 # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +00134 # can be used to strip a user-defined part of the path. Stripping is +00135 # only done if one of the specified strings matches the left-hand part of +00136 # the path. The tag can be used to show relative paths in the file list. +00137 # If left blank the directory from which doxygen is run is used as the +00138 # path to strip. +00139 +00140 STRIP_FROM_PATH = "C:/Documents and Settings/Groove/ " +00141 +00142 # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +00143 # the path mentioned in the documentation of a class, which tells +00144 # the reader which header file to include in order to use a class. +00145 # If left blank only the name of the header file containing the class +00146 # definition is used. Otherwise one should specify the include paths that +00147 # are normally passed to the compiler using the -I flag. +00148 +00149 STRIP_FROM_INC_PATH = +00150 +00151 # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +00152 # (but less readable) file names. This can be useful if your file system +00153 # doesn't support long names like on DOS, Mac, or CD-ROM. +00154 +00155 SHORT_NAMES = YES +00156 +00157 # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +00158 # will interpret the first line (until the first dot) of a JavaDoc-style +00159 # comment as the brief description. If set to NO, the JavaDoc +00160 # comments will behave just like regular Qt-style comments +00161 # (thus requiring an explicit @brief command for a brief description.) +00162 +00163 JAVADOC_AUTOBRIEF = YES +00164 +00165 # If the QT_AUTOBRIEF tag is set to YES then Doxygen will +00166 # interpret the first line (until the first dot) of a Qt-style +00167 # comment as the brief description. If set to NO, the comments +00168 # will behave just like regular Qt-style comments (thus requiring +00169 # an explicit \brief command for a brief description.) +00170 +00171 QT_AUTOBRIEF = NO +00172 +00173 # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +00174 # treat a multi-line C++ special comment block (i.e. a block of //! or /// +00175 # comments) as a brief description. This used to be the default behaviour. +00176 # The new default is to treat a multi-line C++ comment block as a detailed +00177 # description. Set this tag to YES if you prefer the old behaviour instead. +00178 +00179 MULTILINE_CPP_IS_BRIEF = NO +00180 +00181 # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +00182 # member inherits the documentation from any documented member that it +00183 # re-implements. +00184 +00185 INHERIT_DOCS = YES +00186 +00187 # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +00188 # a new page for each member. If set to NO, the documentation of a member will +00189 # be part of the file/class/namespace that contains it. +00190 +00191 SEPARATE_MEMBER_PAGES = NO +00192 +00193 # The TAB_SIZE tag can be used to set the number of spaces in a tab. +00194 # Doxygen uses this value to replace tabs by spaces in code fragments. +00195 +00196 TAB_SIZE = 8 +00197 +00198 # This tag can be used to specify a number of aliases that acts +00199 # as commands in the documentation. An alias has the form "name=value". +00200 # For example adding "sideeffect=\par Side Effects:\n" will allow you to +00201 # put the command \sideeffect (or @sideeffect) in the documentation, which +00202 # will result in a user-defined paragraph with heading "Side Effects:". +00203 # You can put \n's in the value part of an alias to insert newlines. +00204 +00205 ALIASES = +00206 +00207 # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +00208 # sources only. Doxygen will then generate output that is more tailored for C. +00209 # For instance, some of the names that are used will be different. The list +00210 # of all members will be omitted, etc. +00211 +00212 OPTIMIZE_OUTPUT_FOR_C = NO +00213 +00214 # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +00215 # sources only. Doxygen will then generate output that is more tailored for +00216 # Java. For instance, namespaces will be presented as packages, qualified +00217 # scopes will look different, etc. +00218 +00219 OPTIMIZE_OUTPUT_JAVA = NO +00220 +00221 # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +00222 # sources only. Doxygen will then generate output that is more tailored for +00223 # Fortran. +00224 +00225 OPTIMIZE_FOR_FORTRAN = NO +00226 +00227 # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +00228 # sources. Doxygen will then generate output that is tailored for +00229 # VHDL. +00230 +00231 OPTIMIZE_OUTPUT_VHDL = NO +00232 +00233 # Doxygen selects the parser to use depending on the extension of the files it +00234 # parses. With this tag you can assign which parser to use for a given extension. +00235 # Doxygen has a built-in mapping, but you can override or extend it using this +00236 # tag. The format is ext=language, where ext is a file extension, and language +00237 # is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, +00238 # C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make +00239 # doxygen treat .inc files as Fortran files (default is PHP), and .f files as C +00240 # (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions +00241 # you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. +00242 +00243 EXTENSION_MAPPING = +00244 +00245 # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +00246 # to include (a tag file for) the STL sources as input, then you should +00247 # set this tag to YES in order to let doxygen match functions declarations and +00248 # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +00249 # func(std::string) {}). This also makes the inheritance and collaboration +00250 # diagrams that involve STL classes more complete and accurate. +00251 +00252 BUILTIN_STL_SUPPORT = NO +00253 +00254 # If you use Microsoft's C++/CLI language, you should set this option to YES to +00255 # enable parsing support. +00256 +00257 CPP_CLI_SUPPORT = NO +00258 +00259 # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +00260 # Doxygen will parse them like normal C++ but will assume all classes use public +00261 # instead of private inheritance when no explicit protection keyword is present. +00262 +00263 SIP_SUPPORT = NO +00264 +00265 # For Microsoft's IDL there are propget and propput attributes to indicate getter +00266 # and setter methods for a property. Setting this option to YES (the default) +00267 # will make doxygen replace the get and set methods by a property in the +00268 # documentation. This will only work if the methods are indeed getting or +00269 # setting a simple type. If this is not the case, or you want to show the +00270 # methods anyway, you should set this option to NO. +00271 +00272 IDL_PROPERTY_SUPPORT = YES +00273 +00274 # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +00275 # tag is set to YES, then doxygen will reuse the documentation of the first +00276 # member in the group (if any) for the other members of the group. By default +00277 # all members of a group must be documented explicitly. +00278 +00279 DISTRIBUTE_GROUP_DOC = NO +00280 +00281 # Set the SUBGROUPING tag to YES (the default) to allow class member groups of +00282 # the same type (for instance a group of public functions) to be put as a +00283 # subgroup of that type (e.g. under the Public Functions section). Set it to +00284 # NO to prevent subgrouping. Alternatively, this can be done per class using +00285 # the \nosubgrouping command. +00286 +00287 SUBGROUPING = NO +00288 +00289 # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +00290 # is documented as struct, union, or enum with the name of the typedef. So +00291 # typedef struct TypeS {} TypeT, will appear in the documentation as a struct +00292 # with name TypeT. When disabled the typedef will appear as a member of a file, +00293 # namespace, or class. And the struct will be named TypeS. This can typically +00294 # be useful for C code in case the coding convention dictates that all compound +00295 # types are typedef'ed and only the typedef is referenced, never the tag name. +00296 +00297 TYPEDEF_HIDES_STRUCT = NO +00298 +00299 # The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +00300 # determine which symbols to keep in memory and which to flush to disk. +00301 # When the cache is full, less often used symbols will be written to disk. +00302 # For small to medium size projects (<1000 input files) the default value is +00303 # probably good enough. For larger projects a too small cache size can cause +00304 # doxygen to be busy swapping symbols to and from disk most of the time +00305 # causing a significant performance penalty. +00306 # If the system has enough physical memory increasing the cache will improve the +00307 # performance by keeping more symbols in memory. Note that the value works on +00308 # a logarithmic scale so increasing the size by one will roughly double the +00309 # memory usage. The cache size is given by this formula: +00310 # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +00311 # corresponding to a cache size of 2^16 = 65536 symbols +00312 +00313 SYMBOL_CACHE_SIZE = 0 +00314 +00315 #--------------------------------------------------------------------------- +00316 # Build related configuration options +00317 #--------------------------------------------------------------------------- +00318 +00319 # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +00320 # documentation are documented, even if no documentation was available. +00321 # Private class members and static file members will be hidden unless +00322 # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES +00323 +00324 EXTRACT_ALL = NO +00325 +00326 # If the EXTRACT_PRIVATE tag is set to YES all private members of a class +00327 # will be included in the documentation. +00328 +00329 EXTRACT_PRIVATE = NO +00330 +00331 # If the EXTRACT_STATIC tag is set to YES all static members of a file +00332 # will be included in the documentation. +00333 +00334 EXTRACT_STATIC = YES +00335 +00336 # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +00337 # defined locally in source files will be included in the documentation. +00338 # If set to NO only classes defined in header files are included. +00339 +00340 EXTRACT_LOCAL_CLASSES = NO +00341 +00342 # This flag is only useful for Objective-C code. When set to YES local +00343 # methods, which are defined in the implementation section but not in +00344 # the interface are included in the documentation. +00345 # If set to NO (the default) only methods in the interface are included. +00346 +00347 EXTRACT_LOCAL_METHODS = NO +00348 +00349 # If this flag is set to YES, the members of anonymous namespaces will be +00350 # extracted and appear in the documentation as a namespace called +00351 # 'anonymous_namespace{file}', where file will be replaced with the base +00352 # name of the file that contains the anonymous namespace. By default +00353 # anonymous namespaces are hidden. +00354 +00355 EXTRACT_ANON_NSPACES = NO +00356 +00357 # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +00358 # undocumented members of documented classes, files or namespaces. +00359 # If set to NO (the default) these members will be included in the +00360 # various overviews, but no documentation section is generated. +00361 # This option has no effect if EXTRACT_ALL is enabled. +00362 +00363 HIDE_UNDOC_MEMBERS = YES +00364 +00365 # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +00366 # undocumented classes that are normally visible in the class hierarchy. +00367 # If set to NO (the default) these classes will be included in the various +00368 # overviews. This option has no effect if EXTRACT_ALL is enabled. +00369 +00370 HIDE_UNDOC_CLASSES = YES +00371 +00372 # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +00373 # friend (class|struct|union) declarations. +00374 # If set to NO (the default) these declarations will be included in the +00375 # documentation. +00376 +00377 HIDE_FRIEND_COMPOUNDS = YES +00378 +00379 # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +00380 # documentation blocks found inside the body of a function. +00381 # If set to NO (the default) these blocks will be appended to the +00382 # function's detailed documentation block. +00383 +00384 HIDE_IN_BODY_DOCS = YES +00385 +00386 # The INTERNAL_DOCS tag determines if documentation +00387 # that is typed after a \internal command is included. If the tag is set +00388 # to NO (the default) then the documentation will be excluded. +00389 # Set it to YES to include the internal documentation. +00390 +00391 INTERNAL_DOCS = NO +00392 +00393 # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +00394 # file names in lower-case letters. If set to YES upper-case letters are also +00395 # allowed. This is useful if you have classes or files whose names only differ +00396 # in case and if your file system supports case sensitive file names. Windows +00397 # and Mac users are advised to set this option to NO. +00398 +00399 CASE_SENSE_NAMES = YES +00400 +00401 # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +00402 # will show members with their full class and namespace scopes in the +00403 # documentation. If set to YES the scope will be hidden. +00404 +00405 HIDE_SCOPE_NAMES = YES +00406 +00407 # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +00408 # will put a list of the files that are included by a file in the documentation +00409 # of that file. +00410 +00411 SHOW_INCLUDE_FILES = NO +00412 +00413 # If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +00414 # will list include files with double quotes in the documentation +00415 # rather than with sharp brackets. +00416 +00417 FORCE_LOCAL_INCLUDES = NO +00418 +00419 # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +00420 # is inserted in the documentation for inline members. +00421 +00422 INLINE_INFO = NO +00423 +00424 # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +00425 # will sort the (detailed) documentation of file and class members +00426 # alphabetically by member name. If set to NO the members will appear in +00427 # declaration order. +00428 +00429 SORT_MEMBER_DOCS = YES +00430 +00431 # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +00432 # brief documentation of file, namespace and class members alphabetically +00433 # by member name. If set to NO (the default) the members will appear in +00434 # declaration order. +00435 +00436 SORT_BRIEF_DOCS = YES +00437 +00438 # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +00439 # will sort the (brief and detailed) documentation of class members so that +00440 # constructors and destructors are listed first. If set to NO (the default) +00441 # the constructors will appear in the respective orders defined by +00442 # SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +00443 # This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +00444 # and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. +00445 +00446 SORT_MEMBERS_CTORS_1ST = NO +00447 +00448 # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +00449 # hierarchy of group names into alphabetical order. If set to NO (the default) +00450 # the group names will appear in their defined order. +00451 +00452 SORT_GROUP_NAMES = NO +00453 +00454 # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +00455 # sorted by fully-qualified names, including namespaces. If set to +00456 # NO (the default), the class list will be sorted only by class name, +00457 # not including the namespace part. +00458 # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +00459 # Note: This option applies only to the class list, not to the +00460 # alphabetical list. +00461 +00462 SORT_BY_SCOPE_NAME = YES +00463 +00464 # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to +00465 # do proper type resolution of all parameters of a function it will reject a +00466 # match between the prototype and the implementation of a member function even +00467 # if there is only one candidate or it is obvious which candidate to choose +00468 # by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen +00469 # will still accept a match between prototype and implementation in such cases. +00470 +00471 STRICT_PROTO_MATCHING = NO +00472 +00473 # The GENERATE_TODOLIST tag can be used to enable (YES) or +00474 # disable (NO) the todo list. This list is created by putting \todo +00475 # commands in the documentation. +00476 +00477 GENERATE_TODOLIST = YES +00478 +00479 # The GENERATE_TESTLIST tag can be used to enable (YES) or +00480 # disable (NO) the test list. This list is created by putting \test +00481 # commands in the documentation. +00482 +00483 GENERATE_TESTLIST = YES +00484 +00485 # The GENERATE_BUGLIST tag can be used to enable (YES) or +00486 # disable (NO) the bug list. This list is created by putting \bug +00487 # commands in the documentation. +00488 +00489 GENERATE_BUGLIST = YES +00490 +00491 # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +00492 # disable (NO) the deprecated list. This list is created by putting +00493 # \deprecated commands in the documentation. +00494 +00495 GENERATE_DEPRECATEDLIST= YES +00496 +00497 # The ENABLED_SECTIONS tag can be used to enable conditional +00498 # documentation sections, marked by \if sectionname ... \endif. +00499 +00500 ENABLED_SECTIONS = +00501 +00502 # The MAX_INITIALIZER_LINES tag determines the maximum number of lines +00503 # the initial value of a variable or macro consists of for it to appear in +00504 # the documentation. If the initializer consists of more lines than specified +00505 # here it will be hidden. Use a value of 0 to hide initializers completely. +00506 # The appearance of the initializer of individual variables and macros in the +00507 # documentation can be controlled using \showinitializer or \hideinitializer +00508 # command in the documentation regardless of this setting. +00509 +00510 MAX_INITIALIZER_LINES = 30 +00511 +00512 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated +00513 # at the bottom of the documentation of classes and structs. If set to YES the +00514 # list will mention the files that were used to generate the documentation. +00515 +00516 SHOW_USED_FILES = NO +00517 +00518 # If the sources in your project are distributed over multiple directories +00519 # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +00520 # in the documentation. The default is NO. +00521 +00522 SHOW_DIRECTORIES = NO +00523 +00524 # Set the SHOW_FILES tag to NO to disable the generation of the Files page. +00525 # This will remove the Files entry from the Quick Index and from the +00526 # Folder Tree View (if specified). The default is YES. +00527 +00528 SHOW_FILES = YES +00529 +00530 # Set the SHOW_NAMESPACES tag to NO to disable the generation of the +00531 # Namespaces page. This will remove the Namespaces entry from the Quick Index +00532 # and from the Folder Tree View (if specified). The default is YES. +00533 +00534 SHOW_NAMESPACES = YES +00535 +00536 # The FILE_VERSION_FILTER tag can be used to specify a program or script that +00537 # doxygen should invoke to get the current version for each file (typically from +00538 # the version control system). Doxygen will invoke the program by executing (via +00539 # popen()) the command <command> <input-file>, where <command> is the value of +00540 # the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file +00541 # provided by doxygen. Whatever the program writes to standard output +00542 # is used as the file version. See the manual for examples. +00543 +00544 FILE_VERSION_FILTER = +00545 +00546 # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +00547 # by doxygen. The layout file controls the global structure of the generated +00548 # output files in an output format independent way. The create the layout file +00549 # that represents doxygen's defaults, run doxygen with the -l option. +00550 # You can optionally specify a file name after the option, if omitted +00551 # DoxygenLayout.xml will be used as the name of the layout file. +00552 +00553 LAYOUT_FILE = +00554 +00555 #--------------------------------------------------------------------------- +00556 # configuration options related to warning and progress messages +00557 #--------------------------------------------------------------------------- +00558 +00559 # The QUIET tag can be used to turn on/off the messages that are generated +00560 # by doxygen. Possible values are YES and NO. If left blank NO is used. +00561 +00562 QUIET = NO +00563 +00564 # The WARNINGS tag can be used to turn on/off the warning messages that are +00565 # generated by doxygen. Possible values are YES and NO. If left blank +00566 # NO is used. +00567 +00568 WARNINGS = YES +00569 +00570 # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +00571 # for undocumented members. If EXTRACT_ALL is set to YES then this flag will +00572 # automatically be disabled. +00573 +00574 WARN_IF_UNDOCUMENTED = YES +00575 +00576 # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +00577 # potential errors in the documentation, such as not documenting some +00578 # parameters in a documented function, or documenting parameters that +00579 # don't exist or using markup commands wrongly. +00580 +00581 WARN_IF_DOC_ERROR = YES +00582 +00583 # The WARN_NO_PARAMDOC option can be enabled to get warnings for +00584 # functions that are documented, but have no documentation for their parameters +00585 # or return value. If set to NO (the default) doxygen will only warn about +00586 # wrong or incomplete parameter documentation, but not about the absence of +00587 # documentation. +00588 +00589 WARN_NO_PARAMDOC = NO +00590 +00591 # The WARN_FORMAT tag determines the format of the warning messages that +00592 # doxygen can produce. The string should contain the $file, $line, and $text +00593 # tags, which will be replaced by the file and line number from which the +00594 # warning originated and the warning text. Optionally the format may contain +00595 # $version, which will be replaced by the version of the file (if it could +00596 # be obtained via FILE_VERSION_FILTER) +00597 +00598 WARN_FORMAT = "$file:$line: $text" +00599 +00600 # The WARN_LOGFILE tag can be used to specify a file to which warning +00601 # and error messages should be written. If left blank the output is written +00602 # to stderr. +00603 +00604 WARN_LOGFILE = +00605 +00606 #--------------------------------------------------------------------------- +00607 # configuration options related to the input files +00608 #--------------------------------------------------------------------------- +00609 +00610 # The INPUT tag can be used to specify the files and/or directories that contain +00611 # documented source files. You may enter file names like "myfile.cpp" or +00612 # directories like "/usr/src/myproject". Separate the files or directories +00613 # with spaces. +00614 +00615 INPUT = ../glm \ +00616 . +00617 +00618 # This tag can be used to specify the character encoding of the source files +00619 # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +00620 # also the default input encoding. Doxygen uses libiconv (or the iconv built +00621 # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +00622 # the list of possible encodings. +00623 +00624 INPUT_ENCODING = UTF-8 +00625 +00626 # If the value of the INPUT tag contains directories, you can use the +00627 # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +00628 # and *.h) to filter out the source-files in the directories. If left +00629 # blank the following patterns are tested: +00630 # *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh +00631 # *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py +00632 # *.f90 *.f *.for *.vhd *.vhdl +00633 +00634 FILE_PATTERNS = *.hpp \ +00635 *.doxy +00636 +00637 # The RECURSIVE tag can be used to turn specify whether or not subdirectories +00638 # should be searched for input files as well. Possible values are YES and NO. +00639 # If left blank NO is used. +00640 +00641 RECURSIVE = YES +00642 +00643 # The EXCLUDE tag can be used to specify files and/or directories that should +00644 # excluded from the INPUT source files. This way you can easily exclude a +00645 # subdirectory from a directory tree whose root is specified with the INPUT tag. +00646 +00647 EXCLUDE = +00648 +00649 # The EXCLUDE_SYMLINKS tag can be used select whether or not files or +00650 # directories that are symbolic links (a Unix file system feature) are excluded +00651 # from the input. +00652 +00653 EXCLUDE_SYMLINKS = NO +00654 +00655 # If the value of the INPUT tag contains directories, you can use the +00656 # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +00657 # certain files from those directories. Note that the wildcards are matched +00658 # against the file with absolute path, so to exclude all test directories +00659 # for example use the pattern */test/* +00660 +00661 EXCLUDE_PATTERNS = +00662 +00663 # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +00664 # (namespaces, classes, functions, etc.) that should be excluded from the +00665 # output. The symbol name can be a fully qualified name, a word, or if the +00666 # wildcard * is used, a substring. Examples: ANamespace, AClass, +00667 # AClass::ANamespace, ANamespace::*Test +00668 +00669 EXCLUDE_SYMBOLS = +00670 +00671 # The EXAMPLE_PATH tag can be used to specify one or more files or +00672 # directories that contain example code fragments that are included (see +00673 # the \include command). +00674 +00675 EXAMPLE_PATH = +00676 +00677 # If the value of the EXAMPLE_PATH tag contains directories, you can use the +00678 # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +00679 # and *.h) to filter out the source-files in the directories. If left +00680 # blank all files are included. +00681 +00682 EXAMPLE_PATTERNS = * +00683 +00684 # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +00685 # searched for input files to be used with the \include or \dontinclude +00686 # commands irrespective of the value of the RECURSIVE tag. +00687 # Possible values are YES and NO. If left blank NO is used. +00688 +00689 EXAMPLE_RECURSIVE = NO +00690 +00691 # The IMAGE_PATH tag can be used to specify one or more files or +00692 # directories that contain image that are included in the documentation (see +00693 # the \image command). +00694 +00695 IMAGE_PATH = +00696 +00697 # The INPUT_FILTER tag can be used to specify a program that doxygen should +00698 # invoke to filter for each input file. Doxygen will invoke the filter program +00699 # by executing (via popen()) the command <filter> <input-file>, where <filter> +00700 # is the value of the INPUT_FILTER tag, and <input-file> is the name of an +00701 # input file. Doxygen will then use the output that the filter program writes +00702 # to standard output. If FILTER_PATTERNS is specified, this tag will be +00703 # ignored. +00704 +00705 INPUT_FILTER = +00706 +00707 # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +00708 # basis. Doxygen will compare the file name with each pattern and apply the +00709 # filter if there is a match. The filters are a list of the form: +00710 # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +00711 # info on how filters are used. If FILTER_PATTERNS is empty or if +00712 # non of the patterns match the file name, INPUT_FILTER is applied. +00713 +00714 FILTER_PATTERNS = +00715 +00716 # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +00717 # INPUT_FILTER) will be used to filter the input files when producing source +00718 # files to browse (i.e. when SOURCE_BROWSER is set to YES). +00719 +00720 FILTER_SOURCE_FILES = NO +00721 +00722 # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +00723 # pattern. A pattern will override the setting for FILTER_PATTERN (if any) +00724 # and it is also possible to disable source filtering for a specific pattern +00725 # using *.ext= (so without naming a filter). This option only has effect when +00726 # FILTER_SOURCE_FILES is enabled. +00727 +00728 FILTER_SOURCE_PATTERNS = +00729 +00730 #--------------------------------------------------------------------------- +00731 # configuration options related to source browsing +00732 #--------------------------------------------------------------------------- +00733 +00734 # If the SOURCE_BROWSER tag is set to YES then a list of source files will +00735 # be generated. Documented entities will be cross-referenced with these sources. +00736 # Note: To get rid of all source code in the generated output, make sure also +00737 # VERBATIM_HEADERS is set to NO. +00738 +00739 SOURCE_BROWSER = YES +00740 +00741 # Setting the INLINE_SOURCES tag to YES will include the body +00742 # of functions and classes directly in the documentation. +00743 +00744 INLINE_SOURCES = NO +00745 +00746 # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +00747 # doxygen to hide any special comment blocks from generated source code +00748 # fragments. Normal C and C++ comments will always remain visible. +00749 +00750 STRIP_CODE_COMMENTS = YES +00751 +00752 # If the REFERENCED_BY_RELATION tag is set to YES +00753 # then for each documented function all documented +00754 # functions referencing it will be listed. +00755 +00756 REFERENCED_BY_RELATION = YES +00757 +00758 # If the REFERENCES_RELATION tag is set to YES +00759 # then for each documented function all documented entities +00760 # called/used by that function will be listed. +00761 +00762 REFERENCES_RELATION = YES +00763 +00764 # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +00765 # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +00766 # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +00767 # link to the source code. Otherwise they will link to the documentation. +00768 +00769 REFERENCES_LINK_SOURCE = YES +00770 +00771 # If the USE_HTAGS tag is set to YES then the references to source code +00772 # will point to the HTML generated by the htags(1) tool instead of doxygen +00773 # built-in source browser. The htags tool is part of GNU's global source +00774 # tagging system (see http://www.gnu.org/software/global/global.html). You +00775 # will need version 4.8.6 or higher. +00776 +00777 USE_HTAGS = NO +00778 +00779 # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +00780 # will generate a verbatim copy of the header file for each class for +00781 # which an include is specified. Set to NO to disable this. +00782 +00783 VERBATIM_HEADERS = YES +00784 +00785 #--------------------------------------------------------------------------- +00786 # configuration options related to the alphabetical class index +00787 #--------------------------------------------------------------------------- +00788 +00789 # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +00790 # of all compounds will be generated. Enable this if the project +00791 # contains a lot of classes, structs, unions or interfaces. +00792 +00793 ALPHABETICAL_INDEX = NO +00794 +00795 # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +00796 # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +00797 # in which this list will be split (can be a number in the range [1..20]) +00798 +00799 COLS_IN_ALPHA_INDEX = 5 +00800 +00801 # In case all classes in a project start with a common prefix, all +00802 # classes will be put under the same header in the alphabetical index. +00803 # The IGNORE_PREFIX tag can be used to specify one or more prefixes that +00804 # should be ignored while generating the index headers. +00805 +00806 IGNORE_PREFIX = +00807 +00808 #--------------------------------------------------------------------------- +00809 # configuration options related to the HTML output +00810 #--------------------------------------------------------------------------- +00811 +00812 # If the GENERATE_HTML tag is set to YES (the default) Doxygen will +00813 # generate HTML output. +00814 +00815 GENERATE_HTML = YES +00816 +00817 # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +00818 # If a relative path is entered the value of OUTPUT_DIRECTORY will be +00819 # put in front of it. If left blank `html' will be used as the default path. +00820 +00821 HTML_OUTPUT = html +00822 +00823 # The HTML_FILE_EXTENSION tag can be used to specify the file extension for +00824 # each generated HTML page (for example: .htm,.php,.asp). If it is left blank +00825 # doxygen will generate files with .html extension. +00826 +00827 HTML_FILE_EXTENSION = .html +00828 +00829 # The HTML_HEADER tag can be used to specify a personal HTML header for +00830 # each generated HTML page. If it is left blank doxygen will generate a +00831 # standard header. +00832 +00833 HTML_HEADER = +00834 +00835 # The HTML_FOOTER tag can be used to specify a personal HTML footer for +00836 # each generated HTML page. If it is left blank doxygen will generate a +00837 # standard footer. +00838 +00839 HTML_FOOTER = +00840 +00841 # The HTML_STYLESHEET tag can be used to specify a user-defined cascading +00842 # style sheet that is used by each HTML page. It can be used to +00843 # fine-tune the look of the HTML output. If the tag is left blank doxygen +00844 # will generate a default style sheet. Note that doxygen will try to copy +00845 # the style sheet file to the HTML output directory, so don't put your own +00846 # stylesheet in the HTML output directory as well, or it will be erased! +00847 +00848 HTML_STYLESHEET = +00849 +00850 # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. +00851 # Doxygen will adjust the colors in the stylesheet and background images +00852 # according to this color. Hue is specified as an angle on a colorwheel, +00853 # see http://en.wikipedia.org/wiki/Hue for more information. +00854 # For instance the value 0 represents red, 60 is yellow, 120 is green, +00855 # 180 is cyan, 240 is blue, 300 purple, and 360 is red again. +00856 # The allowed range is 0 to 359. +00857 +00858 HTML_COLORSTYLE_HUE = 220 +00859 +00860 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of +00861 # the colors in the HTML output. For a value of 0 the output will use +00862 # grayscales only. A value of 255 will produce the most vivid colors. +00863 +00864 HTML_COLORSTYLE_SAT = 100 +00865 +00866 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to +00867 # the luminance component of the colors in the HTML output. Values below +00868 # 100 gradually make the output lighter, whereas values above 100 make +00869 # the output darker. The value divided by 100 is the actual gamma applied, +00870 # so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, +00871 # and 100 does not change the gamma. +00872 +00873 HTML_COLORSTYLE_GAMMA = 80 +00874 +00875 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +00876 # page will contain the date and time when the page was generated. Setting +00877 # this to NO can help when comparing the output of multiple runs. +00878 +00879 HTML_TIMESTAMP = NO +00880 +00881 # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +00882 # files or namespaces will be aligned in HTML using tables. If set to +00883 # NO a bullet list will be used. +00884 +00885 HTML_ALIGN_MEMBERS = YES +00886 +00887 # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +00888 # documentation will contain sections that can be hidden and shown after the +00889 # page has loaded. For this to work a browser that supports +00890 # JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +00891 # Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). +00892 +00893 HTML_DYNAMIC_SECTIONS = NO +00894 +00895 # If the GENERATE_DOCSET tag is set to YES, additional index files +00896 # will be generated that can be used as input for Apple's Xcode 3 +00897 # integrated development environment, introduced with OSX 10.5 (Leopard). +00898 # To create a documentation set, doxygen will generate a Makefile in the +00899 # HTML output directory. Running make will produce the docset in that +00900 # directory and running "make install" will install the docset in +00901 # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +00902 # it at startup. +00903 # See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +00904 # for more information. +00905 +00906 GENERATE_DOCSET = NO +00907 +00908 # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +00909 # feed. A documentation feed provides an umbrella under which multiple +00910 # documentation sets from a single provider (such as a company or product suite) +00911 # can be grouped. +00912 +00913 DOCSET_FEEDNAME = "Doxygen generated docs" +00914 +00915 # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +00916 # should uniquely identify the documentation set bundle. This should be a +00917 # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +00918 # will append .docset to the name. +00919 +00920 DOCSET_BUNDLE_ID = org.doxygen.Project +00921 +00922 # When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify +00923 # the documentation publisher. This should be a reverse domain-name style +00924 # string, e.g. com.mycompany.MyDocSet.documentation. +00925 +00926 DOCSET_PUBLISHER_ID = org.doxygen.Publisher +00927 +00928 # The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. +00929 +00930 DOCSET_PUBLISHER_NAME = Publisher +00931 +00932 # If the GENERATE_HTMLHELP tag is set to YES, additional index files +00933 # will be generated that can be used as input for tools like the +00934 # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +00935 # of the generated HTML documentation. +00936 +00937 GENERATE_HTMLHELP = NO +00938 +00939 # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +00940 # be used to specify the file name of the resulting .chm file. You +00941 # can add a path in front of the file if the result should not be +00942 # written to the html output directory. +00943 +00944 CHM_FILE = +00945 +00946 # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +00947 # be used to specify the location (absolute path including file name) of +00948 # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +00949 # the HTML help compiler on the generated index.hhp. +00950 +00951 HHC_LOCATION = +00952 +00953 # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +00954 # controls if a separate .chi index file is generated (YES) or that +00955 # it should be included in the master .chm file (NO). +00956 +00957 GENERATE_CHI = NO +00958 +00959 # If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +00960 # is used to encode HtmlHelp index (hhk), content (hhc) and project file +00961 # content. +00962 +00963 CHM_INDEX_ENCODING = +00964 +00965 # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +00966 # controls whether a binary table of contents is generated (YES) or a +00967 # normal table of contents (NO) in the .chm file. +00968 +00969 BINARY_TOC = NO +00970 +00971 # The TOC_EXPAND flag can be set to YES to add extra items for group members +00972 # to the contents of the HTML help documentation and to the tree view. +00973 +00974 TOC_EXPAND = NO +00975 +00976 # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +00977 # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated +00978 # that can be used as input for Qt's qhelpgenerator to generate a +00979 # Qt Compressed Help (.qch) of the generated HTML documentation. +00980 +00981 GENERATE_QHP = NO +00982 +00983 # If the QHG_LOCATION tag is specified, the QCH_FILE tag can +00984 # be used to specify the file name of the resulting .qch file. +00985 # The path specified is relative to the HTML output folder. +00986 +00987 QCH_FILE = +00988 +00989 # The QHP_NAMESPACE tag specifies the namespace to use when generating +00990 # Qt Help Project output. For more information please see +00991 # http://doc.trolltech.com/qthelpproject.html#namespace +00992 +00993 QHP_NAMESPACE = org.doxygen.Project +00994 +00995 # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +00996 # Qt Help Project output. For more information please see +00997 # http://doc.trolltech.com/qthelpproject.html#virtual-folders +00998 +00999 QHP_VIRTUAL_FOLDER = doc +01000 +01001 # If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to +01002 # add. For more information please see +01003 # http://doc.trolltech.com/qthelpproject.html#custom-filters +01004 +01005 QHP_CUST_FILTER_NAME = +01006 +01007 # The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the +01008 # custom filter to add. For more information please see +01009 # <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters"> +01010 # Qt Help Project / Custom Filters</a>. +01011 +01012 QHP_CUST_FILTER_ATTRS = +01013 +01014 # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +01015 # project's +01016 # filter section matches. +01017 # <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes"> +01018 # Qt Help Project / Filter Attributes</a>. +01019 +01020 QHP_SECT_FILTER_ATTRS = +01021 +01022 # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +01023 # be used to specify the location of Qt's qhelpgenerator. +01024 # If non-empty doxygen will try to run qhelpgenerator on the generated +01025 # .qhp file. +01026 +01027 QHG_LOCATION = +01028 +01029 # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +01030 # will be generated, which together with the HTML files, form an Eclipse help +01031 # plugin. To install this plugin and make it available under the help contents +01032 # menu in Eclipse, the contents of the directory containing the HTML and XML +01033 # files needs to be copied into the plugins directory of eclipse. The name of +01034 # the directory within the plugins directory should be the same as +01035 # the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +01036 # the help appears. +01037 +01038 GENERATE_ECLIPSEHELP = NO +01039 +01040 # A unique identifier for the eclipse help plugin. When installing the plugin +01041 # the directory name containing the HTML and XML files should also have +01042 # this name. +01043 +01044 ECLIPSE_DOC_ID = org.doxygen.Project +01045 +01046 # The DISABLE_INDEX tag can be used to turn on/off the condensed index at +01047 # top of each HTML page. The value NO (the default) enables the index and +01048 # the value YES disables it. +01049 +01050 DISABLE_INDEX = NO +01051 +01052 # This tag can be used to set the number of enum values (range [0,1..20]) +01053 # that doxygen will group on one line in the generated HTML documentation. +01054 # Note that a value of 0 will completely suppress the enum values from +01055 # appearing in the overview section. +01056 +01057 ENUM_VALUES_PER_LINE = 4 +01058 +01059 # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +01060 # structure should be generated to display hierarchical information. +01061 # If the tag value is set to YES, a side panel will be generated +01062 # containing a tree-like index structure (just like the one that +01063 # is generated for HTML Help). For this to work a browser that supports +01064 # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +01065 # Windows users are probably better off using the HTML help feature. +01066 +01067 GENERATE_TREEVIEW = NO +01068 +01069 # By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, +01070 # and Class Hierarchy pages using a tree view instead of an ordered list. +01071 +01072 USE_INLINE_TREES = NO +01073 +01074 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +01075 # used to set the initial width (in pixels) of the frame in which the tree +01076 # is shown. +01077 +01078 TREEVIEW_WIDTH = 250 +01079 +01080 # When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open +01081 # links to external symbols imported via tag files in a separate window. +01082 +01083 EXT_LINKS_IN_WINDOW = NO +01084 +01085 # Use this tag to change the font size of Latex formulas included +01086 # as images in the HTML documentation. The default is 10. Note that +01087 # when you change the font size after a successful doxygen run you need +01088 # to manually remove any form_*.png images from the HTML output directory +01089 # to force them to be regenerated. +01090 +01091 FORMULA_FONTSIZE = 10 +01092 +01093 # Use the FORMULA_TRANPARENT tag to determine whether or not the images +01094 # generated for formulas are transparent PNGs. Transparent PNGs are +01095 # not supported properly for IE 6.0, but are supported on all modern browsers. +01096 # Note that when changing this option you need to delete any form_*.png files +01097 # in the HTML output before the changes have effect. +01098 +01099 FORMULA_TRANSPARENT = YES +01100 +01101 # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax +01102 # (see http://www.mathjax.org) which uses client side Javascript for the +01103 # rendering instead of using prerendered bitmaps. Use this if you do not +01104 # have LaTeX installed or if you want to formulas look prettier in the HTML +01105 # output. When enabled you also need to install MathJax separately and +01106 # configure the path to it using the MATHJAX_RELPATH option. +01107 +01108 USE_MATHJAX = NO +01109 +01110 # When MathJax is enabled you need to specify the location relative to the +01111 # HTML output directory using the MATHJAX_RELPATH option. The destination +01112 # directory should contain the MathJax.js script. For instance, if the mathjax +01113 # directory is located at the same level as the HTML output directory, then +01114 # MATHJAX_RELPATH should be ../mathjax. The default value points to the +01115 # mathjax.org site, so you can quickly see the result without installing +01116 # MathJax, but it is strongly recommended to install a local copy of MathJax +01117 # before deployment. +01118 +01119 MATHJAX_RELPATH = http://www.mathjax.org/mathjax +01120 +01121 # When the SEARCHENGINE tag is enabled doxygen will generate a search box +01122 # for the HTML output. The underlying search engine uses javascript +01123 # and DHTML and should work on any modern browser. Note that when using +01124 # HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +01125 # (GENERATE_DOCSET) there is already a search function so this one should +01126 # typically be disabled. For large projects the javascript based search engine +01127 # can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. +01128 +01129 SEARCHENGINE = NO +01130 +01131 # When the SERVER_BASED_SEARCH tag is enabled the search engine will be +01132 # implemented using a PHP enabled web server instead of at the web client +01133 # using Javascript. Doxygen will generate the search PHP script and index +01134 # file to put on the web server. The advantage of the server +01135 # based approach is that it scales better to large projects and allows +01136 # full text search. The disadvantages are that it is more difficult to setup +01137 # and does not have live searching capabilities. +01138 +01139 SERVER_BASED_SEARCH = NO +01140 +01141 #--------------------------------------------------------------------------- +01142 # configuration options related to the LaTeX output +01143 #--------------------------------------------------------------------------- +01144 +01145 # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +01146 # generate Latex output. +01147 +01148 GENERATE_LATEX = NO +01149 +01150 # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +01151 # If a relative path is entered the value of OUTPUT_DIRECTORY will be +01152 # put in front of it. If left blank `latex' will be used as the default path. +01153 +01154 LATEX_OUTPUT = latex +01155 +01156 # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +01157 # invoked. If left blank `latex' will be used as the default command name. +01158 # Note that when enabling USE_PDFLATEX this option is only used for +01159 # generating bitmaps for formulas in the HTML output, but not in the +01160 # Makefile that is written to the output directory. +01161 +01162 LATEX_CMD_NAME = latex +01163 +01164 # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +01165 # generate index for LaTeX. If left blank `makeindex' will be used as the +01166 # default command name. +01167 +01168 MAKEINDEX_CMD_NAME = makeindex +01169 +01170 # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +01171 # LaTeX documents. This may be useful for small projects and may help to +01172 # save some trees in general. +01173 +01174 COMPACT_LATEX = NO +01175 +01176 # The PAPER_TYPE tag can be used to set the paper type that is used +01177 # by the printer. Possible values are: a4, letter, legal and +01178 # executive. If left blank a4wide will be used. +01179 +01180 PAPER_TYPE = a4wide +01181 +01182 # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +01183 # packages that should be included in the LaTeX output. +01184 +01185 EXTRA_PACKAGES = +01186 +01187 # The LATEX_HEADER tag can be used to specify a personal LaTeX header for +01188 # the generated latex document. The header should contain everything until +01189 # the first chapter. If it is left blank doxygen will generate a +01190 # standard header. Notice: only use this tag if you know what you are doing! +01191 +01192 LATEX_HEADER = +01193 +01194 # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +01195 # is prepared for conversion to pdf (using ps2pdf). The pdf file will +01196 # contain links (just like the HTML output) instead of page references +01197 # This makes the output suitable for online browsing using a pdf viewer. +01198 +01199 PDF_HYPERLINKS = NO +01200 +01201 # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +01202 # plain latex in the generated Makefile. Set this option to YES to get a +01203 # higher quality PDF documentation. +01204 +01205 USE_PDFLATEX = YES +01206 +01207 # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +01208 # command to the generated LaTeX files. This will instruct LaTeX to keep +01209 # running if errors occur, instead of asking the user for help. +01210 # This option is also used when generating formulas in HTML. +01211 +01212 LATEX_BATCHMODE = NO +01213 +01214 # If LATEX_HIDE_INDICES is set to YES then doxygen will not +01215 # include the index chapters (such as File Index, Compound Index, etc.) +01216 # in the output. +01217 +01218 LATEX_HIDE_INDICES = NO +01219 +01220 # If LATEX_SOURCE_CODE is set to YES then doxygen will include +01221 # source code with syntax highlighting in the LaTeX output. +01222 # Note that which sources are shown also depends on other settings +01223 # such as SOURCE_BROWSER. +01224 +01225 LATEX_SOURCE_CODE = NO +01226 +01227 #--------------------------------------------------------------------------- +01228 # configuration options related to the RTF output +01229 #--------------------------------------------------------------------------- +01230 +01231 # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +01232 # The RTF output is optimized for Word 97 and may not look very pretty with +01233 # other RTF readers or editors. +01234 +01235 GENERATE_RTF = NO +01236 +01237 # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +01238 # If a relative path is entered the value of OUTPUT_DIRECTORY will be +01239 # put in front of it. If left blank `rtf' will be used as the default path. +01240 +01241 RTF_OUTPUT = glm.rtf +01242 +01243 # If the COMPACT_RTF tag is set to YES Doxygen generates more compact +01244 # RTF documents. This may be useful for small projects and may help to +01245 # save some trees in general. +01246 +01247 COMPACT_RTF = NO +01248 +01249 # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +01250 # will contain hyperlink fields. The RTF file will +01251 # contain links (just like the HTML output) instead of page references. +01252 # This makes the output suitable for online browsing using WORD or other +01253 # programs which support those fields. +01254 # Note: wordpad (write) and others do not support links. +01255 +01256 RTF_HYPERLINKS = YES +01257 +01258 # Load stylesheet definitions from file. Syntax is similar to doxygen's +01259 # config file, i.e. a series of assignments. You only have to provide +01260 # replacements, missing definitions are set to their default value. +01261 +01262 RTF_STYLESHEET_FILE = +01263 +01264 # Set optional variables used in the generation of an rtf document. +01265 # Syntax is similar to doxygen's config file. +01266 +01267 RTF_EXTENSIONS_FILE = +01268 +01269 #--------------------------------------------------------------------------- +01270 # configuration options related to the man page output +01271 #--------------------------------------------------------------------------- +01272 +01273 # If the GENERATE_MAN tag is set to YES (the default) Doxygen will +01274 # generate man pages +01275 +01276 GENERATE_MAN = NO +01277 +01278 # The MAN_OUTPUT tag is used to specify where the man pages will be put. +01279 # If a relative path is entered the value of OUTPUT_DIRECTORY will be +01280 # put in front of it. If left blank `man' will be used as the default path. +01281 +01282 MAN_OUTPUT = man +01283 +01284 # The MAN_EXTENSION tag determines the extension that is added to +01285 # the generated man pages (default is the subroutine's section .3) +01286 +01287 MAN_EXTENSION = .3 +01288 +01289 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, +01290 # then it will generate one additional man file for each entity +01291 # documented in the real man page(s). These additional files +01292 # only source the real man page, but without them the man command +01293 # would be unable to find the correct page. The default is NO. +01294 +01295 MAN_LINKS = NO +01296 +01297 #--------------------------------------------------------------------------- +01298 # configuration options related to the XML output +01299 #--------------------------------------------------------------------------- +01300 +01301 # If the GENERATE_XML tag is set to YES Doxygen will +01302 # generate an XML file that captures the structure of +01303 # the code including all documentation. +01304 +01305 GENERATE_XML = NO +01306 +01307 # The XML_OUTPUT tag is used to specify where the XML pages will be put. +01308 # If a relative path is entered the value of OUTPUT_DIRECTORY will be +01309 # put in front of it. If left blank `xml' will be used as the default path. +01310 +01311 XML_OUTPUT = xml +01312 +01313 # The XML_SCHEMA tag can be used to specify an XML schema, +01314 # which can be used by a validating XML parser to check the +01315 # syntax of the XML files. +01316 +01317 XML_SCHEMA = +01318 +01319 # The XML_DTD tag can be used to specify an XML DTD, +01320 # which can be used by a validating XML parser to check the +01321 # syntax of the XML files. +01322 +01323 XML_DTD = +01324 +01325 # If the XML_PROGRAMLISTING tag is set to YES Doxygen will +01326 # dump the program listings (including syntax highlighting +01327 # and cross-referencing information) to the XML output. Note that +01328 # enabling this will significantly increase the size of the XML output. +01329 +01330 XML_PROGRAMLISTING = YES +01331 +01332 #--------------------------------------------------------------------------- +01333 # configuration options for the AutoGen Definitions output +01334 #--------------------------------------------------------------------------- +01335 +01336 # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +01337 # generate an AutoGen Definitions (see autogen.sf.net) file +01338 # that captures the structure of the code including all +01339 # documentation. Note that this feature is still experimental +01340 # and incomplete at the moment. +01341 +01342 GENERATE_AUTOGEN_DEF = NO +01343 +01344 #--------------------------------------------------------------------------- +01345 # configuration options related to the Perl module output +01346 #--------------------------------------------------------------------------- +01347 +01348 # If the GENERATE_PERLMOD tag is set to YES Doxygen will +01349 # generate a Perl module file that captures the structure of +01350 # the code including all documentation. Note that this +01351 # feature is still experimental and incomplete at the +01352 # moment. +01353 +01354 GENERATE_PERLMOD = NO +01355 +01356 # If the PERLMOD_LATEX tag is set to YES Doxygen will generate +01357 # the necessary Makefile rules, Perl scripts and LaTeX code to be able +01358 # to generate PDF and DVI output from the Perl module output. +01359 +01360 PERLMOD_LATEX = NO +01361 +01362 # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +01363 # nicely formatted so it can be parsed by a human reader. This is useful +01364 # if you want to understand what is going on. On the other hand, if this +01365 # tag is set to NO the size of the Perl module output will be much smaller +01366 # and Perl will parse it just the same. +01367 +01368 PERLMOD_PRETTY = YES +01369 +01370 # The names of the make variables in the generated doxyrules.make file +01371 # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +01372 # This is useful so different doxyrules.make files included by the same +01373 # Makefile don't overwrite each other's variables. +01374 +01375 PERLMOD_MAKEVAR_PREFIX = +01376 +01377 #--------------------------------------------------------------------------- +01378 # Configuration options related to the preprocessor +01379 #--------------------------------------------------------------------------- +01380 +01381 # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +01382 # evaluate all C-preprocessor directives found in the sources and include +01383 # files. +01384 +01385 ENABLE_PREPROCESSING = YES +01386 +01387 # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +01388 # names in the source code. If set to NO (the default) only conditional +01389 # compilation will be performed. Macro expansion can be done in a controlled +01390 # way by setting EXPAND_ONLY_PREDEF to YES. +01391 +01392 MACRO_EXPANSION = NO +01393 +01394 # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +01395 # then the macro expansion is limited to the macros specified with the +01396 # PREDEFINED and EXPAND_AS_DEFINED tags. +01397 +01398 EXPAND_ONLY_PREDEF = NO +01399 +01400 # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +01401 # in the INCLUDE_PATH (see below) will be search if a #include is found. +01402 +01403 SEARCH_INCLUDES = YES +01404 +01405 # The INCLUDE_PATH tag can be used to specify one or more directories that +01406 # contain include files that are not input files but should be processed by +01407 # the preprocessor. +01408 +01409 INCLUDE_PATH = +01410 +01411 # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +01412 # patterns (like *.h and *.hpp) to filter out the header-files in the +01413 # directories. If left blank, the patterns specified with FILE_PATTERNS will +01414 # be used. +01415 +01416 INCLUDE_FILE_PATTERNS = +01417 +01418 # The PREDEFINED tag can be used to specify one or more macro names that +01419 # are defined before the preprocessor is started (similar to the -D option of +01420 # gcc). The argument of the tag is a list of macros of the form: name +01421 # or name=definition (no spaces). If the definition and the = are +01422 # omitted =1 is assumed. To prevent a macro definition from being +01423 # undefined via #undef or recursively expanded use the := operator +01424 # instead of the = operator. +01425 +01426 PREDEFINED = +01427 +01428 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +01429 # this tag can be used to specify a list of macro names that should be expanded. +01430 # The macro definition that is found in the sources will be used. +01431 # Use the PREDEFINED tag if you want to use a different macro definition that +01432 # overrules the definition found in the source code. +01433 +01434 EXPAND_AS_DEFINED = +01435 +01436 # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +01437 # doxygen's preprocessor will remove all references to function-like macros +01438 # that are alone on a line, have an all uppercase name, and do not end with a +01439 # semicolon, because these will confuse the parser if not removed. +01440 +01441 SKIP_FUNCTION_MACROS = YES +01442 +01443 #--------------------------------------------------------------------------- +01444 # Configuration::additions related to external references +01445 #--------------------------------------------------------------------------- +01446 +01447 # The TAGFILES option can be used to specify one or more tagfiles. +01448 # Optionally an initial location of the external documentation +01449 # can be added for each tagfile. The format of a tag file without +01450 # this location is as follows: +01451 # TAGFILES = file1 file2 ... +01452 # Adding location for the tag files is done as follows: +01453 # TAGFILES = file1=loc1 "file2 = loc2" ... +01454 # where "loc1" and "loc2" can be relative or absolute paths or +01455 # URLs. If a location is present for each tag, the installdox tool +01456 # does not have to be run to correct the links. +01457 # Note that each tag file must have a unique name +01458 # (where the name does NOT include the path) +01459 # If a tag file is not located in the directory in which doxygen +01460 # is run, you must also specify the path to the tagfile here. +01461 +01462 TAGFILES = +01463 +01464 # When a file name is specified after GENERATE_TAGFILE, doxygen will create +01465 # a tag file that is based on the input files it reads. +01466 +01467 GENERATE_TAGFILE = +01468 +01469 # If the ALLEXTERNALS tag is set to YES all external classes will be listed +01470 # in the class index. If set to NO only the inherited external classes +01471 # will be listed. +01472 +01473 ALLEXTERNALS = NO +01474 +01475 # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +01476 # in the modules index. If set to NO, only the current project's groups will +01477 # be listed. +01478 +01479 EXTERNAL_GROUPS = YES +01480 +01481 # The PERL_PATH should be the absolute path and name of the perl script +01482 # interpreter (i.e. the result of `which perl'). +01483 +01484 PERL_PATH = /usr/bin/perl +01485 +01486 #--------------------------------------------------------------------------- +01487 # Configuration options related to the dot tool +01488 #--------------------------------------------------------------------------- +01489 +01490 # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +01491 # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +01492 # or super classes. Setting the tag to NO turns the diagrams off. Note that +01493 # this option also works with HAVE_DOT disabled, but it is recommended to +01494 # install and use dot, since it yields more powerful graphs. +01495 +01496 CLASS_DIAGRAMS = YES +01497 +01498 # You can define message sequence charts within doxygen comments using the \msc +01499 # command. Doxygen will then run the mscgen tool (see +01500 # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +01501 # documentation. The MSCGEN_PATH tag allows you to specify the directory where +01502 # the mscgen tool resides. If left empty the tool is assumed to be found in the +01503 # default search path. +01504 +01505 MSCGEN_PATH = +01506 +01507 # If set to YES, the inheritance and collaboration graphs will hide +01508 # inheritance and usage relations if the target is undocumented +01509 # or is not a class. +01510 +01511 HIDE_UNDOC_RELATIONS = YES +01512 +01513 # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +01514 # available from the path. This tool is part of Graphviz, a graph visualization +01515 # toolkit from AT&T and Lucent Bell Labs. The other options in this section +01516 # have no effect if this option is set to NO (the default) +01517 +01518 HAVE_DOT = NO +01519 +01520 # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is +01521 # allowed to run in parallel. When set to 0 (the default) doxygen will +01522 # base this on the number of processors available in the system. You can set it +01523 # explicitly to a value larger than 0 to get control over the balance +01524 # between CPU load and processing speed. +01525 +01526 DOT_NUM_THREADS = 0 +01527 +01528 # By default doxygen will write a font called Helvetica to the output +01529 # directory and reference it in all dot files that doxygen generates. +01530 # When you want a differently looking font you can specify the font name +01531 # using DOT_FONTNAME. You need to make sure dot is able to find the font, +01532 # which can be done by putting it in a standard location or by setting the +01533 # DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +01534 # containing the font. +01535 +01536 DOT_FONTNAME = FreeSans +01537 +01538 # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +01539 # The default size is 10pt. +01540 +01541 DOT_FONTSIZE = 10 +01542 +01543 # By default doxygen will tell dot to use the output directory to look for the +01544 # FreeSans.ttf font (which doxygen will put there itself). If you specify a +01545 # different font using DOT_FONTNAME you can set the path where dot +01546 # can find it using this tag. +01547 +01548 DOT_FONTPATH = +01549 +01550 # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +01551 # will generate a graph for each documented class showing the direct and +01552 # indirect inheritance relations. Setting this tag to YES will force the +01553 # the CLASS_DIAGRAMS tag to NO. +01554 +01555 CLASS_GRAPH = YES +01556 +01557 # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +01558 # will generate a graph for each documented class showing the direct and +01559 # indirect implementation dependencies (inheritance, containment, and +01560 # class references variables) of the class with other documented classes. +01561 +01562 COLLABORATION_GRAPH = YES +01563 +01564 # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +01565 # will generate a graph for groups, showing the direct groups dependencies +01566 +01567 GROUP_GRAPHS = YES +01568 +01569 # If the UML_LOOK tag is set to YES doxygen will generate inheritance and +01570 # collaboration diagrams in a style similar to the OMG's Unified Modeling +01571 # Language. +01572 +01573 UML_LOOK = NO +01574 +01575 # If set to YES, the inheritance and collaboration graphs will show the +01576 # relations between templates and their instances. +01577 +01578 TEMPLATE_RELATIONS = NO +01579 +01580 # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +01581 # tags are set to YES then doxygen will generate a graph for each documented +01582 # file showing the direct and indirect include dependencies of the file with +01583 # other documented files. +01584 +01585 INCLUDE_GRAPH = YES +01586 +01587 # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +01588 # HAVE_DOT tags are set to YES then doxygen will generate a graph for each +01589 # documented header file showing the documented files that directly or +01590 # indirectly include this file. +01591 +01592 INCLUDED_BY_GRAPH = YES +01593 +01594 # If the CALL_GRAPH and HAVE_DOT options are set to YES then +01595 # doxygen will generate a call dependency graph for every global function +01596 # or class method. Note that enabling this option will significantly increase +01597 # the time of a run. So in most cases it will be better to enable call graphs +01598 # for selected functions only using the \callgraph command. +01599 +01600 CALL_GRAPH = YES +01601 +01602 # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +01603 # doxygen will generate a caller dependency graph for every global function +01604 # or class method. Note that enabling this option will significantly increase +01605 # the time of a run. So in most cases it will be better to enable caller +01606 # graphs for selected functions only using the \callergraph command. +01607 +01608 CALLER_GRAPH = YES +01609 +01610 # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +01611 # will generate a graphical hierarchy of all classes instead of a textual one. +01612 +01613 GRAPHICAL_HIERARCHY = YES +01614 +01615 # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +01616 # then doxygen will show the dependencies a directory has on other directories +01617 # in a graphical way. The dependency relations are determined by the #include +01618 # relations between the files in the directories. +01619 +01620 DIRECTORY_GRAPH = YES +01621 +01622 # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +01623 # generated by dot. Possible values are png, svg, gif or svg. +01624 # If left blank png will be used. +01625 +01626 DOT_IMAGE_FORMAT = png +01627 +01628 # The tag DOT_PATH can be used to specify the path where the dot tool can be +01629 # found. If left blank, it is assumed the dot tool can be found in the path. +01630 +01631 DOT_PATH = +01632 +01633 # The DOTFILE_DIRS tag can be used to specify one or more directories that +01634 # contain dot files that are included in the documentation (see the +01635 # \dotfile command). +01636 +01637 DOTFILE_DIRS = +01638 +01639 # The MSCFILE_DIRS tag can be used to specify one or more directories that +01640 # contain msc files that are included in the documentation (see the +01641 # \mscfile command). +01642 +01643 MSCFILE_DIRS = +01644 +01645 # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +01646 # nodes that will be shown in the graph. If the number of nodes in a graph +01647 # becomes larger than this value, doxygen will truncate the graph, which is +01648 # visualized by representing a node as a red box. Note that doxygen if the +01649 # number of direct children of the root node in a graph is already larger than +01650 # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +01651 # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. +01652 +01653 DOT_GRAPH_MAX_NODES = 50 +01654 +01655 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +01656 # graphs generated by dot. A depth value of 3 means that only nodes reachable +01657 # from the root by following a path via at most 3 edges will be shown. Nodes +01658 # that lay further from the root node will be omitted. Note that setting this +01659 # option to 1 or 2 may greatly reduce the computation time needed for large +01660 # code bases. Also note that the size of a graph can be further restricted by +01661 # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. +01662 +01663 MAX_DOT_GRAPH_DEPTH = 1000 +01664 +01665 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +01666 # background. This is disabled by default, because dot on Windows does not +01667 # seem to support this out of the box. Warning: Depending on the platform used, +01668 # enabling this option may lead to badly anti-aliased labels on the edges of +01669 # a graph (i.e. they become hard to read). +01670 +01671 DOT_TRANSPARENT = NO +01672 +01673 # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +01674 # files in one run (i.e. multiple -o and -T options on the command line). This +01675 # makes dot run faster, but since only newer versions of dot (>1.8.10) +01676 # support this, this feature is disabled by default. +01677 +01678 DOT_MULTI_TARGETS = NO +01679 +01680 # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +01681 # generate a legend page explaining the meaning of the various boxes and +01682 # arrows in the dot generated graphs. +01683 +01684 GENERATE_LEGEND = YES +01685 +01686 # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +01687 # remove the intermediate dot files that are used to generate +01688 # the various graphs. +01689 +01690 DOT_CLEANUP = YES +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-27 +00005 // Updated : 2010-11-12 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtc/matrix_access.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtc_matrix_access +00014 #define glm_gtc_matrix_access +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTC_matrix_access extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtc{ +00025 namespace matrix_access +00026 { +00029 +00032 template <typename genType> +00033 typename genType::row_type row( +00034 genType const & m, +00035 int index); +00036 +00039 template <typename genType> +00040 genType row( +00041 genType const & m, +00042 int index, +00043 typename genType::row_type const & x); +00044 +00047 template <typename genType> +00048 typename genType::col_type column( +00049 genType const & m, +00050 int index); +00051 +00054 template <typename genType> +00055 genType column( +00056 genType const & m, +00057 int index, +00058 typename genType::col_type const & x); +00059 +00061 +00062 }//namespace matrix_access +00063 }//namespace gtc +00064 }//namespace glm +00065 +00066 #include "matrix_access.inl" +00067 +00068 namespace glm{using namespace gtc::matrix_access;} +00069 +00070 #endif//glm_gtc_matrix_access +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-21 +00005 // Updated : 2006-11-13 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/matrix_cross_product.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_matrix_cross_product +00014 #define glm_gtx_matrix_cross_product +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_matrix_cross_product extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace matrix_cross_product +00026 { +00029 +00032 template <typename T> +00033 detail::tmat3x3<T> matrixCross3( +00034 detail::tvec3<T> const & x); +00035 +00038 template <typename T> +00039 detail::tmat4x4<T> matrixCross4( +00040 detail::tvec3<T> const & x); +00041 +00043 }//namespace matrix_cross_product +00044 }//namespace gtx +00045 }//namespace glm +00046 +00047 #include "matrix_cross_product.inl" +00048 +00049 namespace glm{using namespace gtx::matrix_cross_product;} +00050 +00051 #endif//glm_gtx_matrix_cross_product +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2011-01-20 +00005 // Updated : 2011-01-20 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtc/matrix_integer.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtc_matrix_integer +00014 #define glm_gtc_matrix_integer +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTC_matrix_integer extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtc{ +00025 namespace matrix_integer +00026 { +00029 +00030 typedef detail::tmat2x2<highp_int> highp_imat2; +00031 typedef detail::tmat3x3<highp_int> highp_imat3; +00032 typedef detail::tmat4x4<highp_int> highp_imat4; +00033 +00034 typedef detail::tmat2x2<highp_int> highp_imat2x2; +00035 typedef detail::tmat2x3<highp_int> highp_imat2x3; +00036 typedef detail::tmat2x4<highp_int> highp_imat2x4; +00037 typedef detail::tmat3x2<highp_int> highp_imat3x2; +00038 typedef detail::tmat3x3<highp_int> highp_imat3x3; +00039 typedef detail::tmat3x4<highp_int> highp_imat3x4; +00040 typedef detail::tmat4x2<highp_int> highp_imat4x2; +00041 typedef detail::tmat4x3<highp_int> highp_imat4x3; +00042 typedef detail::tmat4x4<highp_int> highp_imat4x4; +00043 +00044 typedef detail::tmat2x2<mediump_int> mediump_imat2; +00045 typedef detail::tmat3x3<mediump_int> mediump_imat3; +00046 typedef detail::tmat4x4<mediump_int> mediump_imat4; +00047 +00048 typedef detail::tmat2x2<mediump_int> mediump_imat2x2; +00049 typedef detail::tmat2x3<mediump_int> mediump_imat2x3; +00050 typedef detail::tmat2x4<mediump_int> mediump_imat2x4; +00051 typedef detail::tmat3x2<mediump_int> mediump_imat3x2; +00052 typedef detail::tmat3x3<mediump_int> mediump_imat3x3; +00053 typedef detail::tmat3x4<mediump_int> mediump_imat3x4; +00054 typedef detail::tmat4x2<mediump_int> mediump_imat4x2; +00055 typedef detail::tmat4x3<mediump_int> mediump_imat4x3; +00056 typedef detail::tmat4x4<mediump_int> mediump_imat4x4; +00057 +00058 typedef detail::tmat2x2<lowp_int> lowp_imat2; +00059 typedef detail::tmat3x3<lowp_int> lowp_imat3; +00060 typedef detail::tmat4x4<lowp_int> lowp_imat4; +00061 +00062 typedef detail::tmat2x2<lowp_int> lowp_imat2x2; +00063 typedef detail::tmat2x3<lowp_int> lowp_imat2x3; +00064 typedef detail::tmat2x4<lowp_int> lowp_imat2x4; +00065 typedef detail::tmat3x2<lowp_int> lowp_imat3x2; +00066 typedef detail::tmat3x3<lowp_int> lowp_imat3x3; +00067 typedef detail::tmat3x4<lowp_int> lowp_imat3x4; +00068 typedef detail::tmat4x2<lowp_int> lowp_imat4x2; +00069 typedef detail::tmat4x3<lowp_int> lowp_imat4x3; +00070 typedef detail::tmat4x4<lowp_int> lowp_imat4x4; +00071 +00072 typedef detail::tmat2x2<highp_uint> highp_umat2; +00073 typedef detail::tmat3x3<highp_uint> highp_umat3; +00074 typedef detail::tmat4x4<highp_uint> highp_umat4; +00075 +00076 typedef detail::tmat2x2<highp_uint> highp_umat2x2; +00077 typedef detail::tmat2x3<highp_uint> highp_umat2x3; +00078 typedef detail::tmat2x4<highp_uint> highp_umat2x4; +00079 typedef detail::tmat3x2<highp_uint> highp_umat3x2; +00080 typedef detail::tmat3x3<highp_uint> highp_umat3x3; +00081 typedef detail::tmat3x4<highp_uint> highp_umat3x4; +00082 typedef detail::tmat4x2<highp_uint> highp_umat4x2; +00083 typedef detail::tmat4x3<highp_uint> highp_umat4x3; +00084 typedef detail::tmat4x4<highp_uint> highp_umat4x4; +00085 +00086 typedef detail::tmat2x2<mediump_uint> mediump_umat2; +00087 typedef detail::tmat3x3<mediump_uint> mediump_umat3; +00088 typedef detail::tmat4x4<mediump_uint> mediump_umat4; +00089 +00090 typedef detail::tmat2x2<mediump_uint> mediump_umat2x2; +00091 typedef detail::tmat2x3<mediump_uint> mediump_umat2x3; +00092 typedef detail::tmat2x4<mediump_uint> mediump_umat2x4; +00093 typedef detail::tmat3x2<mediump_uint> mediump_umat3x2; +00094 typedef detail::tmat3x3<mediump_uint> mediump_umat3x3; +00095 typedef detail::tmat3x4<mediump_uint> mediump_umat3x4; +00096 typedef detail::tmat4x2<mediump_uint> mediump_umat4x2; +00097 typedef detail::tmat4x3<mediump_uint> mediump_umat4x3; +00098 typedef detail::tmat4x4<mediump_uint> mediump_umat4x4; +00099 +00100 typedef detail::tmat2x2<lowp_uint> lowp_umat2; +00101 typedef detail::tmat3x3<lowp_uint> lowp_umat3; +00102 typedef detail::tmat4x4<lowp_uint> lowp_umat4; +00103 +00104 typedef detail::tmat2x2<lowp_uint> lowp_umat2x2; +00105 typedef detail::tmat2x3<lowp_uint> lowp_umat2x3; +00106 typedef detail::tmat2x4<lowp_uint> lowp_umat2x4; +00107 typedef detail::tmat3x2<lowp_uint> lowp_umat3x2; +00108 typedef detail::tmat3x3<lowp_uint> lowp_umat3x3; +00109 typedef detail::tmat3x4<lowp_uint> lowp_umat3x4; +00110 typedef detail::tmat4x2<lowp_uint> lowp_umat4x2; +00111 typedef detail::tmat4x3<lowp_uint> lowp_umat4x3; +00112 typedef detail::tmat4x4<lowp_uint> lowp_umat4x4; +00113 +00114 #if(defined(GLM_PRECISION_HIGHP_INT)) +00115 typedef highp_imat2 imat2; +00116 typedef highp_imat3 imat3; +00117 typedef highp_imat4 imat4; +00118 typedef highp_imat2x2 imat2x2; +00119 typedef highp_imat2x3 imat2x3; +00120 typedef highp_imat2x4 imat2x4; +00121 typedef highp_imat3x2 imat3x2; +00122 typedef highp_imat3x3 imat3x3; +00123 typedef highp_imat3x4 imat3x4; +00124 typedef highp_imat4x2 imat4x2; +00125 typedef highp_imat4x3 imat4x3; +00126 typedef highp_imat4x4 imat4x4; +00127 #elif(defined(GLM_PRECISION_LOWP_INT)) +00128 typedef lowp_imat2 imat2; +00129 typedef lowp_imat3 imat3; +00130 typedef lowp_imat4 imat4; +00131 typedef lowp_imat2x2 imat2x2; +00132 typedef lowp_imat2x3 imat2x3; +00133 typedef lowp_imat2x4 imat2x4; +00134 typedef lowp_imat3x2 imat3x2; +00135 typedef lowp_imat3x3 imat3x3; +00136 typedef lowp_imat3x4 imat3x4; +00137 typedef lowp_imat4x2 imat4x2; +00138 typedef lowp_imat4x3 imat4x3; +00139 typedef lowp_imat4x4 imat4x4; +00140 #else //if(defined(GLM_PRECISION_MEDIUMP_INT)) +00141 typedef mediump_imat2 imat2; +00142 typedef mediump_imat3 imat3; +00143 typedef mediump_imat4 imat4; +00144 typedef mediump_imat2x2 imat2x2; +00145 typedef mediump_imat2x3 imat2x3; +00146 typedef mediump_imat2x4 imat2x4; +00147 typedef mediump_imat3x2 imat3x2; +00148 typedef mediump_imat3x3 imat3x3; +00149 typedef mediump_imat3x4 imat3x4; +00150 typedef mediump_imat4x2 imat4x2; +00151 typedef mediump_imat4x3 imat4x3; +00152 typedef mediump_imat4x4 imat4x4; +00153 #endif//GLM_PRECISION +00154 +00155 #if(defined(GLM_PRECISION_HIGHP_UINT)) +00156 typedef highp_umat2 umat2; +00157 typedef highp_umat3 umat3; +00158 typedef highp_umat4 umat4; +00159 typedef highp_umat2x2 umat2x2; +00160 typedef highp_umat2x3 umat2x3; +00161 typedef highp_umat2x4 umat2x4; +00162 typedef highp_umat3x2 umat3x2; +00163 typedef highp_umat3x3 umat3x3; +00164 typedef highp_umat3x4 umat3x4; +00165 typedef highp_umat4x2 umat4x2; +00166 typedef highp_umat4x3 umat4x3; +00167 typedef highp_umat4x4 umat4x4; +00168 #elif(defined(GLM_PRECISION_LOWP_UINT)) +00169 typedef lowp_umat2 umat2; +00170 typedef lowp_umat3 umat3; +00171 typedef lowp_umat4 umat4; +00172 typedef lowp_umat2x2 umat2x2; +00173 typedef lowp_umat2x3 umat2x3; +00174 typedef lowp_umat2x4 umat2x4; +00175 typedef lowp_umat3x2 umat3x2; +00176 typedef lowp_umat3x3 umat3x3; +00177 typedef lowp_umat3x4 umat3x4; +00178 typedef lowp_umat4x2 umat4x2; +00179 typedef lowp_umat4x3 umat4x3; +00180 typedef lowp_umat4x4 umat4x4; +00181 #else //if(defined(GLM_PRECISION_MEDIUMP_UINT)) +00182 typedef mediump_umat2 umat2; +00183 typedef mediump_umat3 umat3; +00184 typedef mediump_umat4 umat4; +00185 typedef mediump_umat2x2 umat2x2; +00186 typedef mediump_umat2x3 umat2x3; +00187 typedef mediump_umat2x4 umat2x4; +00188 typedef mediump_umat3x2 umat3x2; +00189 typedef mediump_umat3x3 umat3x3; +00190 typedef mediump_umat3x4 umat3x4; +00191 typedef mediump_umat4x2 umat4x2; +00192 typedef mediump_umat4x3 umat4x3; +00193 typedef mediump_umat4x4 umat4x4; +00194 #endif//GLM_PRECISION +00195 +00197 +00198 }//namespace matrix_integer +00199 }//namespace gtc +00200 }//namespace glm +00201 +00202 namespace glm{using namespace gtc::matrix_integer;} +00203 +00204 #endif//glm_gtc_matrix_integer +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2011-03-05 +00005 // Updated : 2011-03-05 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/matrix_interpolation.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTX_matric_interpolation +00013 // This extension has been written by Ghenadii Ursachi (the.asteroth@gmail.com) +00015 +00016 #ifndef glm_gtx_matrix_interpolation +00017 #define glm_gtx_matrix_interpolation +00018 +00019 // Dependency: +00020 //#include "../glm.hpp" +00021 +00022 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00023 # pragma message("GLM: GLM_GTX_matrix_interpolation extension included") +00024 #endif +00025 +00026 namespace glm{ +00027 namespace gtx{ +00028 namespace matrix_interpolation +00029 { +00032 +00035 template <typename T> +00036 void axisAngle( +00037 detail::tmat4x4<T> const & mat, +00038 detail::tvec3<T> & axis, +00039 T & angle); +00040 +00043 template <typename T> +00044 detail::tmat4x4<T> axisAngleMatrix( +00045 detail::tvec3<T> const & axis, +00046 T const angle); +00047 +00051 template <typename T> +00052 detail::tmat4x4<T> interpolate( +00053 detail::tmat4x4<T> const & m1, +00054 detail::tmat4x4<T> const & m2, +00055 T const delta); +00056 +00058 }//namespace matrix_interpolation +00059 }//namespace gtx +00060 }//namespace glm +00061 +00062 #include "matrix_interpolation.inl" +00063 +00064 namespace glm{using namespace gtx::matrix_interpolation;} +00065 +00066 #endif//glm_gtx_transform +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-21 +00005 // Updated : 2010-12-13 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtc/matrix_inverse.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtc_matrix_inverse +00014 #define glm_gtc_matrix_inverse +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTC_matrix_inverse extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtc{ +00025 namespace matrix_inverse +00026 { +00029 +00032 template <typename genType> +00033 genType affineInverse(genType const & m); +00034 +00037 template <typename genType> +00038 GLM_FUNC_QUALIFIER typename genType::value_type inverseTranspose( +00039 genType const & m); +00040 +00042 +00043 }//namespace matrix_inverse +00044 }//namespace gtc +00045 }//namespace glm +00046 +00047 #include "matrix_inverse.inl" +00048 +00049 namespace glm{using namespace gtc::matrix_inverse;} +00050 +00051 #endif//glm_gtc_matrix_inverse +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2006-04-19 +00005 // Updated : 2009-02-19 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/matrix_major_storage.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_matrix_major_storage +00014 #define glm_gtx_matrix_major_storage +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_matrix_major_storage extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace matrix_major_storage +00026 { +00029 +00032 template <typename T> +00033 detail::tmat2x2<T> rowMajor2( +00034 const detail::tvec2<T>& v1, +00035 const detail::tvec2<T>& v2); +00036 +00039 template <typename T> +00040 detail::tmat2x2<T> rowMajor2( +00041 const detail::tmat2x2<T>& m); +00042 +00045 template <typename T> +00046 detail::tmat3x3<T> rowMajor3( +00047 const detail::tvec3<T>& v1, +00048 const detail::tvec3<T>& v2, +00049 const detail::tvec3<T>& v3); +00050 +00053 template <typename T> +00054 detail::tmat3x3<T> rowMajor3( +00055 const detail::tmat3x3<T>& m); +00056 +00059 template <typename T> +00060 detail::tmat4x4<T> rowMajor4( +00061 const detail::tvec4<T>& v1, +00062 const detail::tvec4<T>& v2, +00063 const detail::tvec4<T>& v3, +00064 const detail::tvec4<T>& v4); +00065 +00068 template <typename T> +00069 detail::tmat4x4<T> rowMajor4( +00070 const detail::tmat4x4<T>& m); +00071 +00074 template <typename T> +00075 detail::tmat2x2<T> colMajor2( +00076 const detail::tvec2<T>& v1, +00077 const detail::tvec2<T>& v2); +00078 +00081 template <typename T> +00082 detail::tmat2x2<T> colMajor2( +00083 const detail::tmat2x2<T>& m); +00084 +00087 template <typename T> +00088 detail::tmat3x3<T> colMajor3( +00089 const detail::tvec3<T>& v1, +00090 const detail::tvec3<T>& v2, +00091 const detail::tvec3<T>& v3); +00092 +00095 template <typename T> +00096 detail::tmat3x3<T> colMajor3( +00097 const detail::tmat3x3<T>& m); +00098 +00101 template <typename T> +00102 detail::tmat4x4<T> colMajor4( +00103 const detail::tvec4<T>& v1, +00104 const detail::tvec4<T>& v2, +00105 const detail::tvec4<T>& v3, +00106 const detail::tvec4<T>& v4); +00107 +00110 template <typename T> +00111 detail::tmat4x4<T> colMajor4( +00112 const detail::tmat4x4<T>& m); +00113 +00115 }//namespace matrix_major_storage +00116 }//namespace gtx +00117 }//namespace glm +00118 +00119 #include "matrix_major_storage.inl" +00120 +00121 namespace glm{using namespace gtx::matrix_major_storage;} +00122 +00123 #endif//glm_gtx_matrix_major_storage +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2009-08-29 +00005 // Updated : 2009-08-29 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/matrix_operation.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_matrix_operation +00014 #define glm_gtx_matrix_operation +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_matrix_operation extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace matrix_operation +00026 { +00029 +00032 template <typename valType> +00033 detail::tmat2x2<valType> diagonal2x2( +00034 detail::tvec2<valType> const & v); +00035 +00038 template <typename valType> +00039 detail::tmat2x3<valType> diagonal2x3( +00040 detail::tvec2<valType> const & v); +00041 +00044 template <typename valType> +00045 detail::tmat2x4<valType> diagonal2x4( +00046 detail::tvec2<valType> const & v); +00047 +00050 template <typename valType> +00051 detail::tmat3x2<valType> diagonal3x2( +00052 detail::tvec2<valType> const & v); +00053 +00056 template <typename valType> +00057 detail::tmat3x3<valType> diagonal3x3( +00058 detail::tvec3<valType> const & v); +00059 +00062 template <typename valType> +00063 detail::tmat3x4<valType> diagonal3x4( +00064 detail::tvec3<valType> const & v); +00065 +00068 template <typename valType> +00069 detail::tmat4x2<valType> diagonal4x2( +00070 detail::tvec2<valType> const & v); +00071 +00074 template <typename valType> +00075 detail::tmat4x3<valType> diagonal4x3( +00076 detail::tvec3<valType> const & v); +00077 +00080 template <typename valType> +00081 detail::tmat4x4<valType> diagonal4x4( +00082 detail::tvec4<valType> const & v); +00083 +00085 }//namespace matrix_operation +00086 }//namespace gtx +00087 }//namespace glm +00088 +00089 #include "matrix_operation.inl" +00090 +00091 namespace glm{using namespace gtx::matrix_operation;} +00092 +00093 #endif//glm_gtx_matrix_operation +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2007-03-05 +00005 // Updated : 2007-03-05 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/matrix_query.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTX_matrix_query +00013 +00014 #ifndef glm_gtx_matrix_query +00015 #define glm_gtx_matrix_query +00016 +00017 // Dependency: +00018 #include "../glm.hpp" +00019 +00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00021 # pragma message("GLM: GLM_GTX_matrix_query extension included") +00022 #endif +00023 +00024 namespace glm{ +00025 namespace gtx{ +00026 namespace matrix_query +00027 { +00030 +00033 template<typename T> +00034 bool isNull( +00035 const detail::tmat2x2<T>& m, +00036 const T epsilon = std::numeric_limits<T>::epsilon()); +00037 +00040 template<typename T> +00041 bool isNull( +00042 const detail::tmat3x3<T>& m, +00043 const T epsilon = std::numeric_limits<T>::epsilon()); +00044 +00047 template<typename T> +00048 bool isNull( +00049 const detail::tmat4x4<T>& m, +00050 const T epsilon = std::numeric_limits<T>::epsilon()); +00051 +00054 template<typename genType> +00055 bool isIdentity( +00056 const genType& m, +00057 const typename genType::value_type epsilon = std::numeric_limits<typename genType::value_type>::epsilon()); +00058 +00061 template<typename T> +00062 bool isNormalized( +00063 const detail::tmat2x2<T>& m, +00064 const T epsilon = std::numeric_limits<T>::epsilon()); +00065 +00068 template<typename T> +00069 bool isNormalized( +00070 const detail::tmat3x3<T>& m, +00071 const T epsilon = std::numeric_limits<T>::epsilon()); +00072 +00075 template<typename T> +00076 bool isNormalized( +00077 const detail::tmat4x4<T>& m, +00078 const T epsilon = std::numeric_limits<T>::epsilon()); +00079 +00082 template<typename genType> +00083 bool isOrthogonal( +00084 const genType& m, +00085 const typename genType::value_type epsilon = std::numeric_limits<typename genType::value_type>::epsilon()); +00086 +00088 }//namespace matrix_query +00089 }//namespace gtx +00090 }//namespace glm +00091 +00092 #include "matrix_query.inl" +00093 +00094 namespace glm{using namespace gtx::matrix_query;} +00095 +00096 #endif//glm_gtx_matrix_query +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2009-04-29 +00005 // Updated : 2009-04-29 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtc/matrix_transform.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTC_matrix_operation +00013 +00014 #ifndef glm_gtc_matrix_transform +00015 #define glm_gtc_matrix_transform +00016 +00017 // Dependency: +00018 #include "../glm.hpp" +00019 +00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00021 # pragma message("GLM: GLM_GTC_matrix_transform extension included") +00022 #endif +00023 +00024 namespace glm{ +00025 namespace gtc{ +00026 namespace matrix_transform +00027 { +00030 +00033 template <typename T> +00034 detail::tmat4x4<T> translate( +00035 detail::tmat4x4<T> const & m, +00036 detail::tvec3<T> const & v); +00037 +00040 template <typename T> +00041 detail::tmat4x4<T> rotate( +00042 detail::tmat4x4<T> const & m, +00043 T const & angle, +00044 detail::tvec3<T> const & v); +00045 +00048 template <typename T> +00049 detail::tmat4x4<T> scale( +00050 detail::tmat4x4<T> const & m, +00051 detail::tvec3<T> const & v); +00052 +00055 template <typename T> +00056 detail::tmat4x4<T> ortho( +00057 T const & left, +00058 T const & right, +00059 T const & bottom, +00060 T const & top, +00061 T const & zNear, +00062 T const & zFar); +00063 +00066 template <typename T> +00067 detail::tmat4x4<T> ortho( +00068 T const & left, +00069 T const & right, +00070 T const & bottom, +00071 T const & top); +00072 +00075 template <typename T> +00076 detail::tmat4x4<T> frustum( +00077 T const & left, +00078 T const & right, +00079 T const & bottom, +00080 T const & top, +00081 T const & nearVal, +00082 T const & farVal); +00083 +00086 template <typename T> +00087 detail::tmat4x4<T> perspective( +00088 T const & fovy, +00089 T const & aspect, +00090 T const & zNear, +00091 T const & zFar); +00092 +00095 template <typename valType> +00096 detail::tmat4x4<valType> perspectiveFov( +00097 valType const & fov, +00098 valType const & width, +00099 valType const & height, +00100 valType const & zNear, +00101 valType const & zFar); +00102 +00105 template <typename T> +00106 detail::tmat4x4<T> infinitePerspective( +00107 T fovy, T aspect, T zNear); +00108 +00111 template <typename T> +00112 detail::tmat4x4<T> tweakedInfinitePerspective( +00113 T fovy, T aspect, T zNear); +00114 +00117 template <typename T, typename U> +00118 detail::tvec3<T> project( +00119 detail::tvec3<T> const & obj, +00120 detail::tmat4x4<T> const & model, +00121 detail::tmat4x4<T> const & proj, +00122 detail::tvec4<U> const & viewport); +00123 +00126 template <typename T, typename U> +00127 detail::tvec3<T> unProject( +00128 detail::tvec3<T> const & win, +00129 detail::tmat4x4<T> const & model, +00130 detail::tmat4x4<T> const & proj, +00131 detail::tvec4<U> const & viewport); +00132 +00135 template <typename T, typename U> +00136 detail::tmat4x4<T> pickMatrix( +00137 detail::tvec2<T> const & center, +00138 detail::tvec2<T> const & delta, +00139 detail::tvec4<U> const & viewport); +00140 +00143 template <typename T> +00144 detail::tmat4x4<T> lookAt( +00145 detail::tvec3<T> const & eye, +00146 detail::tvec3<T> const & center, +00147 detail::tvec3<T> const & up); +00148 +00150 }//namespace matrix_transform +00151 }//namespace gtc +00152 }//namespace glm +00153 +00154 #include "matrix_transform.inl" +00155 +00156 namespace glm{using namespace gtc::matrix_transform;} +00157 +00158 #endif//glm_gtc_matrix_transform +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2007-04-03 +00005 // Updated : 2008-09-17 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/mixed_product.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_mixed_product +00014 #define glm_gtx_mixed_product +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_mixed_product extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace mixed_product +00026 { +00029 +00031 template <typename valType> +00032 valType mixedProduct( +00033 detail::tvec3<valType> const & v1, +00034 detail::tvec3<valType> const & v2, +00035 detail::tvec3<valType> const & v3); +00036 +00038 }// namespace mixed_product +00039 }// namespace gtx +00040 }// namespace glm +00041 +00042 #include "mixed_product.inl" +00043 +00044 namespace glm{using namespace gtx::mixed_product;} +00045 +00046 #endif//glm_gtx_mixed_product +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2009-10-26 +00005 // Updated : 2009-10-26 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/multiple.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_multiple +00014 #define glm_gtx_multiple +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_multiple extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace multiple +00026 { +00029 +00032 template <typename genType> +00033 genType higherMultiple( +00034 genType const & Source, +00035 genType const & Multiple); +00036 +00039 template <typename genType> +00040 genType lowerMultiple( +00041 genType const & Source, +00042 genType const & Multiple); +00043 +00045 }//namespace multiple +00046 }//namespace gtx +00047 }//namespace glm +00048 +00049 #include "multiple.inl" +00050 +00051 namespace glm{using namespace gtx::multiple;} +00052 +00053 #endif//glm_gtx_multiple +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Based on the work of Stefan Gustavson and Ashima Arts on "webgl-noise": +00005 // https://github.com/ashima/webgl-noise +00006 // Following Stefan Gustavson's paper "Simplex noise demystified": +00007 // http://www.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf +00009 // Created : 2011-04-21 +00010 // Updated : 2011-04-21 +00011 // Licence : This source is under MIT License +00012 // File : glm/gtx/noise.hpp +00014 // Dependency: +00015 // - GLM core +00017 +00018 #ifndef glm_gtx_noise +00019 #define glm_gtx_noise +00020 +00021 // Dependency: +00022 #include "../glm.hpp" +00023 +00024 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00025 # pragma message("GLM: GLM_GTX_noise extension included") +00026 #endif +00027 +00028 namespace glm{ +00029 namespace gtx{ +00030 namespace noise +00031 { +00034 +00037 template <typename T, template<typename> class vecType> +00038 T perlin( +00039 vecType<T> const & p); +00040 +00043 template <typename T, template<typename> class vecType> +00044 T perlin( +00045 vecType<T> const & p, +00046 vecType<T> const & rep); +00047 +00050 template <typename T, template<typename> class vecType> +00051 T simplex( +00052 vecType<T> const & p); +00053 +00055 }//namespace noise +00056 }//namespace gtx +00057 }//namespace glm +00058 +00059 #include "noise.inl" +00060 +00061 namespace glm{using namespace gtx::noise;} +00062 +00063 #endif//glm_gtx_noise +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-21 +00005 // Updated : 2008-07-24 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/norm.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTX_quaternion +00013 // ToDo: +00014 // - Study the validity of the notion of length2 to quaternion +00016 +00017 #ifndef glm_gtx_norm +00018 #define glm_gtx_norm +00019 +00020 // Dependency: +00021 #include "../glm.hpp" +00022 #include "../gtx/quaternion.hpp" +00023 +00024 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00025 # pragma message("GLM: GLM_GTX_norm extension included") +00026 #endif +00027 +00028 namespace glm{ +00029 namespace gtx{ +00030 namespace norm +00031 { +00034 +00037 template <typename T> +00038 T length2( +00039 const T x); +00040 +00043 template <typename T> +00044 T length2( +00045 const detail::tvec2<T> & x); +00046 +00049 template <typename T> +00050 T length2( +00051 const detail::tvec3<T>& x); +00052 +00055 template <typename T> +00056 T length2( +00057 const detail::tvec4<T>& x); +00058 +00061 template <typename T> +00062 T length2( +00063 const detail::tquat<T>& q); +00064 +00067 template <typename T> +00068 T distance2( +00069 const T p0, +00070 const T p1); +00071 +00074 template <typename T> +00075 T distance2( +00076 const detail::tvec2<T>& p0, +00077 const detail::tvec2<T>& p1); +00078 +00081 template <typename T> +00082 T distance2( +00083 const detail::tvec3<T>& p0, +00084 const detail::tvec3<T>& p1); +00085 +00088 template <typename T> +00089 T distance2( +00090 const detail::tvec4<T>& p0, +00091 const detail::tvec4<T>& p1); +00092 +00095 template <typename T> +00096 T l1Norm( +00097 const detail::tvec3<T>& x, +00098 const detail::tvec3<T>& y); +00099 +00102 template <typename T> +00103 T l1Norm( +00104 const detail::tvec3<T>& v); +00105 +00108 template <typename T> +00109 T l2Norm( +00110 const detail::tvec3<T>& x, +00111 const detail::tvec3<T>& y); +00112 +00115 template <typename T> +00116 T l2Norm( +00117 const detail::tvec3<T>& x); +00118 +00121 template <typename T> +00122 T lxNorm( +00123 const detail::tvec3<T>& x, +00124 const detail::tvec3<T>& y, +00125 unsigned int Depth); +00126 +00129 template <typename T> +00130 T lxNorm( +00131 const detail::tvec3<T>& x, +00132 unsigned int Depth); +00133 +00135 }//namespace norm +00136 }//namespace gtx +00137 }//namespace glm +00138 +00139 #include "norm.inl" +00140 +00141 namespace glm{using namespace gtx::norm;} +00142 +00143 #endif//glm_gtx_norm +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-21 +00005 // Updated : 2006-11-13 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/normal.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_normal +00014 #define glm_gtx_normal +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_normal extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace normal +00026 { +00029 +00032 template <typename T> +00033 detail::tvec3<T> triangleNormal( +00034 detail::tvec3<T> const & p1, +00035 detail::tvec3<T> const & p2, +00036 detail::tvec3<T> const & p3); +00037 +00039 }//namespace normal +00040 }//namespace gtx +00041 }//namespace glm +00042 +00043 #include "normal.inl" +00044 +00045 namespace glm{using namespace gtx::normal;} +00046 +00047 #endif//glm_gtx_normal +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2007-09-28 +00005 // Updated : 2008-10-07 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/normalize_dot.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTX_fast_square_root +00013 +00014 #ifndef glm_gtx_normalize_dot +00015 #define glm_gtx_normalize_dot +00016 +00017 // Dependency: +00018 #include "../glm.hpp" +00019 #include "../gtx/fast_square_root.hpp" +00020 +00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00022 # pragma message("GLM: GLM_GTX_normalize_dot extension included") +00023 #endif +00024 +00025 namespace glm{ +00026 namespace gtx{ +00027 namespace normalize_dot +00028 { +00029 using namespace gtx::fast_square_root; +00030 +00033 +00037 template <typename genType> +00038 typename genType::value_type normalizeDot( +00039 genType const & x, +00040 genType const & y); +00041 +00045 template <typename genType> +00046 typename genType::value_type fastNormalizeDot( +00047 genType const & x, +00048 genType const & y); +00049 +00051 }//namespace normalize_dot +00052 }//namespace gtx +00053 }//namespace glm +00054 +00055 #include "normalize_dot.inl" +00056 +00057 namespace glm{using namespace gtx::normalize_dot;} +00058 +00059 #endif//glm_gtx_normalize_dot +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2007-05-10 +00005 // Updated : 2009-06-04 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/number_precision.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTC_type_precision +00012 // - GLM_GTC_quaternion +00014 +00015 #ifndef glm_gtx_number_precision +00016 #define glm_gtx_number_precision +00017 +00018 // Dependency: +00019 #include "../glm.hpp" +00020 #include "../gtc/type_precision.hpp" +00021 +00022 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00023 # pragma message("GLM: GLM_GTX_number_precision extension included") +00024 #endif +00025 +00026 namespace glm{ +00027 namespace gtx{ +00028 namespace number_precision +00029 { +00030 using namespace gtc::type_precision; +00031 +00033 // Unsigned int vector types +00034 +00037 +00038 typedef u8 u8vec1; +00039 typedef u16 u16vec1; +00040 typedef u32 u32vec1; +00041 typedef u64 u64vec1; +00042 +00044 // Float vector types +00045 +00046 typedef f16 f16vec1; +00047 typedef f32 f32vec1; +00048 typedef f64 f64vec1; +00049 +00051 // Float matrix types +00052 +00053 typedef f16 f16mat1; +00054 typedef f16 f16mat1x1; +00055 typedef f32 f32mat1; +00056 typedef f32 f32mat1x1; +00057 typedef f64 f64mat1; +00058 typedef f64 f64mat1x1; +00059 +00061 }//namespace number_precision +00062 }//namespace gtx +00063 }//namespace glm +00064 +00065 #include "number_precision.inl" +00066 +00067 namespace glm{using namespace gtx::number_precision;} +00068 +00069 #endif//glm_gtx_number_precision +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2009-05-07 +00005 // Updated : 2009-05-07 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/number_precision.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_ocl_type +00014 #define glm_gtx_ocl_type +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_ocl_type extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace ocl_type +00026 { +00028 // Scalar types +00029 +00032 +00033 typedef detail::int8 cl_char; +00034 typedef detail::int16 cl_short; +00035 typedef detail::int32 cl_int; +00036 typedef detail::int64 cl_long; +00037 +00038 typedef detail::uint8 cl_uchar; +00039 typedef detail::uint16 cl_ushort; +00040 typedef detail::uint32 cl_uint; +00041 typedef detail::uint64 cl_ulong; +00042 +00043 typedef detail::float16 cl_half; +00044 typedef detail::float32 cl_float; +00045 +00046 +00047 typedef detail::int8 cl_char1; +00048 typedef detail::int16 cl_short1; +00049 typedef detail::int32 cl_int1; +00050 typedef detail::int64 cl_long1; +00051 +00052 typedef detail::uint8 cl_uchar1; +00053 typedef detail::uint16 cl_ushort1; +00054 typedef detail::uint32 cl_uint1; +00055 typedef detail::uint64 cl_ulong1; +00056 +00057 //typedef detail::float16 cl_half1; //!< \brief Half-precision floating-point scalar. (from GLM_GTX_ocl_type extension) +00058 typedef detail::float32 cl_float1; +00059 +00060 +00061 typedef detail::tvec2<detail::int8> cl_char2; +00062 typedef detail::tvec2<detail::int16> cl_short2; +00063 typedef detail::tvec2<detail::int32> cl_int2; +00064 typedef detail::tvec2<detail::int64> cl_long2; +00065 +00066 typedef detail::tvec2<detail::uint8> cl_uchar2; +00067 typedef detail::tvec2<detail::uint16> cl_ushort2; +00068 typedef detail::tvec2<detail::uint32> cl_uint2; +00069 typedef detail::tvec2<detail::uint64> cl_ulong2; +00070 +00071 //typedef detail::tvec2<detail::float16> cl_half2; //!< \brief Half-precision floating-point scalar. (from GLM_GTX_ocl_type extension) +00072 typedef detail::tvec2<detail::float32> cl_float2; +00073 +00074 +00075 typedef detail::tvec3<detail::int8> cl_char3; +00076 typedef detail::tvec3<detail::int16> cl_short3; +00077 typedef detail::tvec3<detail::int32> cl_int3; +00078 typedef detail::tvec3<detail::int64> cl_long3; +00079 +00080 typedef detail::tvec3<detail::uint8> cl_uchar3; +00081 typedef detail::tvec3<detail::uint16> cl_ushort3; +00082 typedef detail::tvec3<detail::uint32> cl_uint3; +00083 typedef detail::tvec3<detail::uint64> cl_ulong3; +00084 +00085 //typedef detail::tvec3<detail::float16> cl_half3; //!< \brief Half-precision floating-point scalar. (from GLM_GTX_ocl_type extension) +00086 typedef detail::tvec3<detail::float32> cl_float3; +00087 +00088 +00089 typedef detail::tvec4<detail::int8> cl_char4; +00090 typedef detail::tvec4<detail::int16> cl_short4; +00091 typedef detail::tvec4<detail::int32> cl_int4; +00092 typedef detail::tvec4<detail::int64> cl_long4; +00093 typedef detail::tvec4<detail::uint8> cl_uchar4; +00094 typedef detail::tvec4<detail::uint16> cl_ushort4; +00095 typedef detail::tvec4<detail::uint32> cl_uint4; +00096 typedef detail::tvec4<detail::uint64> cl_ulong4; +00097 +00098 //typedef detail::tvec4<detail::float16> cl_half4; //!< \brief Half-precision floating-point scalar. (from GLM_GTX_ocl_type extension) +00099 typedef detail::tvec4<detail::float32> cl_float4; +00100 +00102 }//namespace ocl_type +00103 }//namespace gtx +00104 }//namespace glm +00105 +00106 #include "ocl_type.inl" +00107 +00108 namespace glm{using namespace gtx::ocl_type;} +00109 +00110 #endif//glm_gtx_ocl_type +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-21 +00005 // Updated : 2006-11-13 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/optimum_pow.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_optimum_pow +00014 #define glm_gtx_optimum_pow +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_optimum_pow extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace optimum_pow +00026 { +00029 +00032 template <typename genType> +00033 genType pow2(const genType& x); +00034 +00037 template <typename genType> +00038 genType pow3(const genType& x); +00039 +00042 template <typename genType> +00043 genType pow4(const genType& x); +00044 +00047 bool powOfTwo(int num); +00048 +00051 detail::tvec2<bool> powOfTwo(const detail::tvec2<int>& x); +00052 +00055 detail::tvec3<bool> powOfTwo(const detail::tvec3<int>& x); +00056 +00059 detail::tvec4<bool> powOfTwo(const detail::tvec4<int>& x); +00060 +00062 }//namespace optimum_pow +00063 }//namespace gtx +00064 }//namespace glm +00065 +00066 #include "optimum_pow.inl" +00067 +00068 namespace glm{using namespace gtx::optimum_pow;} +00069 +00070 #endif//glm_gtx_optimum_pow +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-21 +00005 // Updated : 2006-11-13 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/orthonormalize.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_orthonormalize +00014 #define glm_gtx_orthonormalize +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_orthonormalize extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace orthonormalize +00026 { +00029 +00032 template <typename T> +00033 detail::tmat3x3<T> orthonormalize( +00034 const detail::tmat3x3<T>& m); +00035 +00038 template <typename T> +00039 detail::tvec3<T> orthonormalize( +00040 const detail::tvec3<T>& x, +00041 const detail::tvec3<T>& y); +00042 +00044 }//namespace orthonormalize +00045 }//namespace gtx +00046 }//namespace glm +00047 +00048 #include "orthonormalize.inl" +00049 +00050 namespace glm{using namespace gtx::orthonormalize;} +00051 +00052 #endif//glm_gtx_orthonormalize +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-21 +00005 // Updated : 2009-03-06 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/perpendicular.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTX_projection +00013 +00014 #ifndef glm_gtx_perpendicular +00015 #define glm_gtx_perpendicular +00016 +00017 // Dependency: +00018 #include "../glm.hpp" +00019 #include "../gtx/projection.hpp" +00020 +00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00022 # pragma message("GLM: GLM_GTX_perpendicular extension included") +00023 #endif +00024 +00025 namespace glm{ +00026 namespace gtx{ +00027 namespace perpendicular +00028 { +00031 +00034 template <typename T> +00035 detail::tvec2<T> perp( +00036 detail::tvec2<T> const & x, +00037 detail::tvec2<T> const & Normal); +00038 +00041 template <typename T> +00042 detail::tvec3<T> perp( +00043 detail::tvec3<T> const & x, +00044 detail::tvec3<T> const & Normal); +00045 +00048 template <typename T> +00049 detail::tvec4<T> perp( +00050 detail::tvec4<T> const & x, +00051 detail::tvec4<T> const & Normal); +00052 +00054 }//namespace perpendicular +00055 }//namespace gtx +00056 }//namespace glm +00057 +00058 #include "perpendicular.inl" +00059 +00060 namespace glm{using namespace gtx::perpendicular;} +00061 +00062 #endif//glm_gtx_perpendicular +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2007-03-06 +00005 // Updated : 2009-05-01 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/polar_coordinates.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_polar_coordinates +00014 #define glm_gtx_polar_coordinates +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_polar_coordinates extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace polar_coordinates +00026 { +00029 +00032 template <typename T> +00033 detail::tvec3<T> polar(const detail::tvec3<T>& euclidean); +00034 +00037 template <typename T> +00038 detail::tvec3<T> euclidean(const detail::tvec3<T>& polar); +00039 +00041 }//namespace polar_coordinates +00042 }//namespace gtx +00043 }//namespace glm +00044 +00045 #include "polar_coordinates.inl" +00046 +00047 namespace glm{using namespace gtx::polar_coordinates;} +00048 +00049 #endif//glm_gtx_polar_coordinates +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-21 +00005 // Updated : 2009-03-06 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/projection.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_projection +00014 #define glm_gtx_projection +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_projection extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace projection +00026 { +00029 +00032 template <typename T> +00033 detail::tvec2<T> proj( +00034 detail::tvec2<T> const & x, +00035 detail::tvec2<T> const & Normal); +00036 +00039 template <typename T> +00040 detail::tvec3<T> proj( +00041 detail::tvec3<T> const & x, +00042 detail::tvec3<T> const & Normal); +00043 +00046 template <typename T> +00047 detail::tvec4<T> proj( +00048 detail::tvec4<T> const & x, +00049 detail::tvec4<T> const & Normal); +00050 +00052 }//namespace projection +00053 }//namespace gtx +00054 }//namespace glm +00055 +00056 #include "projection.inl" +00057 +00058 namespace glm{using namespace gtx::projection;} +00059 +00060 #endif//glm_gtx_projection +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2009-05-21 +00005 // Updated : 2010-02-04 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtc/quaternion.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTC_half_float +00013 // ToDo: +00014 // - Study constructors with angles and axis +00015 // - Study constructors with vec3 that are the imaginary component of quaternion +00017 +00018 #ifndef glm_gtc_quaternion +00019 #define glm_gtc_quaternion +00020 +00021 // Dependency: +00022 #include "../glm.hpp" +00023 #include "../gtc/half_float.hpp" +00024 +00025 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00026 # pragma message("GLM: GLM_GTC_quaternion extension included") +00027 #endif +00028 +00029 namespace glm{ +00030 namespace detail +00031 { +00035 template <typename T> +00036 struct tquat// : public genType<T, tquat> +00037 { +00038 typedef T value_type; +00039 +00040 public: +00041 value_type x, y, z, w; +00042 +00043 // Constructors +00044 tquat(); +00045 explicit tquat( +00046 value_type const & s, +00047 tvec3<T> const & v); +00048 explicit tquat( +00049 value_type const & w, +00050 value_type const & x, +00051 value_type const & y, +00052 value_type const & z); +00053 +00054 // Convertions +00055 //explicit tquat(valType const & pitch, valType const & yaw, valType const & roll); +00057 explicit tquat( +00058 tvec3<T> const & eulerAngles); +00059 explicit tquat( +00060 tmat3x3<T> const & m); +00061 explicit tquat( +00062 tmat4x4<T> const & m); +00063 +00064 // Accesses +00065 value_type & operator[](int i); +00066 value_type const & operator[](int i) const; +00067 +00068 // Operators +00069 tquat<T> & operator*=(value_type const & s); +00070 tquat<T> & operator/=(value_type const & s); +00071 }; +00072 +00073 template <typename T> +00074 detail::tquat<T> operator- ( +00075 detail::tquat<T> const & q); +00076 +00077 template <typename T> +00078 detail::tquat<T> operator+ ( +00079 detail::tquat<T> const & q, +00080 detail::tquat<T> const & p); +00081 +00082 template <typename T> +00083 detail::tquat<T> operator* ( +00084 detail::tquat<T> const & q, +00085 detail::tquat<T> const & p); +00086 +00087 template <typename T> +00088 detail::tvec3<T> operator* ( +00089 detail::tquat<T> const & q, +00090 detail::tvec3<T> const & v); +00091 +00092 template <typename T> +00093 detail::tvec3<T> operator* ( +00094 detail::tvec3<T> const & v, +00095 detail::tquat<T> const & q); +00096 +00097 template <typename T> +00098 detail::tvec4<T> operator* ( +00099 detail::tquat<T> const & q, +00100 detail::tvec4<T> const & v); +00101 +00102 template <typename T> +00103 detail::tvec4<T> operator* ( +00104 detail::tvec4<T> const & v, +00105 detail::tquat<T> const & q); +00106 +00107 template <typename T> +00108 detail::tquat<T> operator* ( +00109 detail::tquat<T> const & q, +00110 typename detail::tquat<T>::value_type const & s); +00111 +00112 template <typename T> +00113 detail::tquat<T> operator* ( +00114 typename detail::tquat<T>::value_type const & s, +00115 detail::tquat<T> const & q); +00116 +00117 template <typename T> +00118 detail::tquat<T> operator/ ( +00119 detail::tquat<T> const & q, +00120 typename detail::tquat<T>::value_type const & s); +00121 +00122 } //namespace detail +00123 +00124 namespace gtc{ +00125 namespace quaternion +00126 { +00129 +00132 template <typename T> +00133 typename detail::tquat<T>::value_type length( +00134 detail::tquat<T> const & q); +00135 +00138 template <typename T> +00139 detail::tquat<T> normalize( +00140 detail::tquat<T> const & q); +00141 +00144 template <typename T> +00145 typename detail::tquat<T>::value_type dot( +00146 detail::tquat<T> const & q1, +00147 detail::tquat<T> const & q2); +00148 +00151 template <typename T> +00152 GLM_DEPRECATED detail::tquat<T> cross( +00153 detail::tquat<T> const & q1, +00154 detail::tquat<T> const & q2); +00155 +00158 template <typename T> +00159 detail::tquat<T> mix( +00160 detail::tquat<T> const & x, +00161 detail::tquat<T> const & y, +00162 T const & a); +00163 +00166 template <typename T> +00167 detail::tquat<T> conjugate( +00168 detail::tquat<T> const & q); +00169 +00172 template <typename T> +00173 detail::tquat<T> inverse( +00174 detail::tquat<T> const & q); +00175 +00178 template <typename T> +00179 detail::tquat<T> rotate( +00180 detail::tquat<T> const & q, +00181 typename detail::tquat<T>::value_type const & angle, +00182 detail::tvec3<T> const & v); +00183 +00186 template <typename T> +00187 detail::tmat3x3<T> mat3_cast( +00188 detail::tquat<T> const & x); +00189 +00192 template <typename T> +00193 detail::tmat4x4<T> mat4_cast( +00194 detail::tquat<T> const & x); +00195 +00198 template <typename T> +00199 detail::tquat<T> quat_cast( +00200 detail::tmat3x3<T> const & x); +00201 +00204 template <typename T> +00205 detail::tquat<T> quat_cast( +00206 detail::tmat4x4<T> const & x); +00207 +00210 typedef detail::tquat<float> quat; +00211 +00214 typedef detail::tquat<detail::thalf> hquat; +00215 +00218 typedef detail::tquat<float> fquat; +00219 +00222 typedef detail::tquat<double> dquat; +00223 +00226 typedef detail::tquat<lowp_float> lowp_quat; +00227 +00230 typedef detail::tquat<mediump_float> mediump_quat; +00231 +00234 typedef detail::tquat<highp_float> highp_quat; +00236 +00237 } //namespace quaternion +00238 } //namespace gtc +00239 } //namespace glm +00240 +00241 #include "quaternion.inl" +00242 +00243 namespace glm{using namespace gtc::quaternion;} +00244 +00245 #endif//glm_gtc_quaternion +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-21 +00005 // Updated : 2009-05-21 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/quaternion.hpp +00009 // Dependency: +00010 // - GLM core +00012 // ToDo: +00013 // - Study constructors with angles and axis +00014 // - Study constructors with vec3 that are the imaginary component of quaternion +00016 +00017 #ifndef glm_gtx_quaternion +00018 #define glm_gtx_quaternion +00019 +00020 // Dependency: +00021 #include "../glm.hpp" +00022 #include "../gtc/quaternion.hpp" +00023 +00024 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00025 # pragma message("GLM: GLM_GTX_quaternion extension included") +00026 #endif +00027 +00028 namespace glm{ +00029 namespace gtx{ +00030 namespace quaternion +00031 { +00032 using namespace gtc::quaternion; +00033 +00036 +00039 template <typename valType> +00040 detail::tvec3<valType> cross( +00041 detail::tquat<valType> const & q, +00042 detail::tvec3<valType> const & v); +00043 +00046 template <typename valType> +00047 detail::tvec3<valType> cross( +00048 detail::tvec3<valType> const & v, +00049 detail::tquat<valType> const & q); +00050 +00054 template <typename valType> +00055 detail::tquat<valType> squad( +00056 detail::tquat<valType> const & q1, +00057 detail::tquat<valType> const & q2, +00058 detail::tquat<valType> const & s1, +00059 detail::tquat<valType> const & s2, +00060 valType const & h); +00061 +00064 template <typename valType> +00065 detail::tquat<valType> intermediate( +00066 detail::tquat<valType> const & prev, +00067 detail::tquat<valType> const & curr, +00068 detail::tquat<valType> const & next); +00069 +00072 template <typename valType> +00073 detail::tquat<valType> exp( +00074 detail::tquat<valType> const & q, +00075 valType const & exponent); +00076 +00079 template <typename valType> +00080 detail::tquat<valType> log( +00081 detail::tquat<valType> const & q); +00082 +00085 template <typename valType> +00086 detail::tquat<valType> pow( +00087 detail::tquat<valType> const & x, +00088 valType const & y); +00089 +00092 //template <typename valType> +00093 //detail::tquat<valType> sqrt( +00094 // detail::tquat<valType> const & q); +00095 +00098 template <typename valType> +00099 detail::tvec3<valType> rotate( +00100 detail::tquat<valType> const & q, +00101 detail::tvec3<valType> const & v); +00102 +00105 template <typename valType> +00106 detail::tvec4<valType> rotate( +00107 detail::tquat<valType> const & q, +00108 detail::tvec4<valType> const & v); +00109 +00112 template <typename valType> +00113 valType angle( +00114 detail::tquat<valType> const & x); +00115 +00118 template <typename valType> +00119 detail::tvec3<valType> axis( +00120 detail::tquat<valType> const & x); +00121 +00124 template <typename valType> +00125 detail::tquat<valType> angleAxis( +00126 valType const & angle, +00127 valType const & x, +00128 valType const & y, +00129 valType const & z); +00130 +00133 template <typename valType> +00134 detail::tquat<valType> angleAxis( +00135 valType const & angle, +00136 detail::tvec3<valType> const & axis); +00137 +00140 template <typename valType> +00141 valType extractRealComponent( +00142 detail::tquat<valType> const & q); +00143 +00146 template <typename valType> +00147 valType roll( +00148 detail::tquat<valType> const & x); +00149 +00152 template <typename valType> +00153 valType pitch( +00154 detail::tquat<valType> const & x); +00155 +00158 template <typename valType> +00159 valType yaw( +00160 detail::tquat<valType> const & x); +00161 +00164 template <typename valType> +00165 detail::tvec3<valType> eulerAngles( +00166 detail::tquat<valType> const & x); +00167 +00170 template <typename valType> +00171 detail::tmat3x3<valType> toMat3( +00172 detail::tquat<valType> const & x){return gtc::quaternion::mat3_cast(x);} +00173 +00176 template <typename valType> +00177 detail::tmat4x4<valType> toMat4( +00178 detail::tquat<valType> const & x){return gtc::quaternion::mat4_cast(x);} +00179 +00182 template <typename valType> +00183 detail::tquat<valType> toQuat( +00184 detail::tmat3x3<valType> const & x){return gtc::quaternion::quat_cast(x);} +00185 +00188 template <typename valType> +00189 detail::tquat<valType> toQuat( +00190 detail::tmat4x4<valType> const & x){return gtc::quaternion::quat_cast(x);} +00191 +00194 template <typename T> +00195 detail::tquat<T> shortMix( +00196 detail::tquat<T> const & x, +00197 detail::tquat<T> const & y, +00198 T const & a); +00199 +00202 template <typename T> +00203 detail::tquat<T> fastMix( +00204 detail::tquat<T> const & x, +00205 detail::tquat<T> const & y, +00206 T const & a); +00207 +00209 }//namespace quaternion +00210 }//namespace gtx +00211 } //namespace glm +00212 +00213 #include "quaternion.inl" +00214 +00215 namespace glm{using namespace gtx::quaternion;} +00216 +00217 #endif//glm_gtx_quaternion +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2006-01-16 +00005 // Updated : 2007-08-30 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/random.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTX_vecx +00012 // - GLM_GTX_half_float +00014 +00015 #ifndef glm_gtx_random +00016 #define glm_gtx_random +00017 +00018 // Dependency: +00019 #include "../glm.hpp" +00020 #include "../gtc/half_float.hpp" +00021 +00022 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00023 # pragma message("GLM: GLM_GTX_random extension included") +00024 #endif +00025 +00026 namespace glm{ +00027 namespace gtx{ +00028 namespace random +00029 { +00032 +00035 template <typename T> T signedRand1(); +00036 +00037 template <> float signedRand1(); +00038 template <> double signedRand1(); +00039 template <typename T> detail::tvec2<T> signedRand2(); +00040 template <typename T> detail::tvec3<T> signedRand3(); +00041 template <typename T> detail::tvec4<T> signedRand4(); +00042 +00043 template <typename T> detail::tvec2<T> normalizedRand2(); +00044 template <typename T> detail::tvec2<T> normalizedRand2(T Min, T Max); +00045 template <typename T> detail::tvec3<T> normalizedRand3(); +00046 template <typename T> detail::tvec3<T> normalizedRand3(T Min, T Max); +00047 +00048 template <typename T> T compRand1(); +00049 template <> float compRand1(); +00050 template <> double compRand1(); +00051 template <typename T> T compRand1(T Min, T Max); +00052 template <typename T> detail::tvec2<T> compRand2(T Min, T Max); +00053 template <typename T> detail::tvec3<T> compRand3(T Min, T Max); +00054 template <typename T> detail::tvec4<T> compRand4(T Min, T Max); +00055 template <typename T> detail::tvec2<T> compRand2(const detail::tvec2<T>& Min, const detail::tvec2<T>& Max); +00056 template <typename T> detail::tvec3<T> compRand3(const detail::tvec3<T>& Min, const detail::tvec3<T>& Max); +00057 template <typename T> detail::tvec3<T> compRand4(const detail::tvec4<T>& Min, const detail::tvec4<T>& Max); +00058 +00059 template <typename T> detail::tvec2<T> vecRand2(); +00060 template <typename T> detail::tvec2<T> vecRand2(T MinRadius, T MaxRadius); +00061 template <typename T> detail::tvec3<T> vecRand3(); +00062 template <typename T> detail::tvec3<T> vecRand3(T MinRadius, T MaxRadius); +00063 template <typename T> detail::tvec4<T> vecRand4(); +00064 template <typename T> detail::tvec4<T> vecRand4(T MinRadius, T MaxRadius); +00065 +00066 template <typename T> T gaussRand1(T mean, T std_deviation); +00067 template <typename T> detail::tvec2<T> gaussRand2(T mean, T std_deviation); +00068 template <typename T> detail::tvec3<T> gaussRand3(T mean, T std_deviation); +00069 template <typename T> detail::tvec4<T> gaussRand4(T mean, T std_deviation); +00070 template <typename T> detail::tvec2<T> gaussRand2(const detail::tvec2<T>& mean, T std_deviation); +00071 template <typename T> detail::tvec3<T> gaussRand3(const detail::tvec3<T>& mean, T std_deviation); +00072 template <typename T> detail::tvec4<T> gaussRand4(const detail::tvec4<T>& mean, T std_deviation); +00073 template <typename T> detail::tvec2<T> gaussRand2(T mean, const detail::tvec2<T>& std_deviation); +00074 template <typename T> detail::tvec3<T> gaussRand3(T mean, const detail::tvec3<T>& std_deviation); +00075 template <typename T> detail::tvec4<T> gaussRand4(T mean, const detail::tvec4<T>& std_deviation); +00076 template <typename T> detail::tvec2<T> gaussRand2(const detail::tvec2<T>& mean, const detail::tvec2<T>& std_deviation); +00077 template <typename T> detail::tvec3<T> gaussRand3(const detail::tvec3<T>& mean, const detail::tvec3<T>& std_deviation); +00078 template <typename T> detail::tvec4<T> gaussRand4(const detail::tvec4<T>& mean, const detail::tvec4<T>& std_deviation); +00079 +00081 }//namespace random +00082 }//namespace gtx +00083 }//namespace glm +00084 +00085 #include "random.inl" +00086 +00087 namespace glm{using namespace gtx::random;} +00088 +00089 #endif//glm_gtx_random +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-11-19 +00005 // Updated : 2010-01-28 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/raw_data.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_raw_data +00014 #define glm_gtx_raw_data +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 #include "../gtc/type_precision.hpp" +00019 +00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00021 # pragma message("GLM: GLM_GTX_raw_data extension included") +00022 #endif +00023 +00024 namespace glm{ +00025 namespace gtx{ +00026 namespace raw_data +00027 { +00028 using namespace gtc::type_precision; +00029 +00032 +00035 typedef uint8 byte; +00036 +00039 typedef uint16 word; +00040 +00043 typedef uint32 dword; +00044 +00047 typedef uint64 qword; +00048 +00050 }// namespace raw_data +00051 }// namespace gtx +00052 }// namespace glm +00053 +00054 #include "raw_data.inl" +00055 +00056 namespace glm{using namespace gtx::raw_data;} +00057 +00058 #endif//glm_gtx_raw_data +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-10-09 +00005 // Updated : 2008-10-09 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/reciprocal.hpp +00009 +00010 #ifndef glm_gtx_reciprocal +00011 #define glm_gtx_reciprocal +00012 +00013 // Dependency: +00014 #include "../glm.hpp" +00015 +00016 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00017 # pragma message("GLM: GLM_GTX_reciprocal extension included") +00018 #endif +00019 +00020 namespace glm{ +00021 namespace gtx{ +00022 namespace reciprocal +00023 { +00026 +00030 template <typename genType> +00031 genType sec(genType const & angle); +00032 +00036 template <typename genType> +00037 genType csc(genType const & angle); +00038 +00042 template <typename genType> +00043 genType cot(genType const & angle); +00044 +00047 template <typename genType> +00048 genType asec(genType const & x); +00049 +00052 template <typename genType> +00053 genType acsc(genType const & x); +00054 +00057 template <typename genType> +00058 genType acot(genType const & x); +00059 +00062 template <typename genType> +00063 genType sech(genType const & angle); +00064 +00067 template <typename genType> +00068 genType csch(genType const & angle); +00069 +00072 template <typename genType> +00073 genType coth(genType const & angle); +00074 +00077 template <typename genType> +00078 genType asech(genType const & x); +00079 +00082 template <typename genType> +00083 genType acsch(genType const & x); +00084 +00087 template <typename genType> +00088 genType acoth(genType const & x); +00089 +00091 }//namespace reciprocal +00092 }//namespace gtx +00093 }//namespace glm +00094 +00095 #include "reciprocal.inl" +00096 +00097 namespace glm{using namespace gtx::reciprocal;} +00098 +00099 #endif//glm_gtx_reciprocal +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2006-11-02 +00005 // Updated : 2009-02-19 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/rotate_vector.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_rotate_vector +00014 #define glm_gtx_rotate_vector +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 #include "../gtx/transform.hpp" +00019 +00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00021 # pragma message("GLM: GLM_GTX_rotate_vector extension included") +00022 #endif +00023 +00024 namespace glm{ +00025 namespace gtx{ +00026 namespace rotate_vector +00027 { +00028 using namespace transform; +00029 +00032 +00035 template <typename T> +00036 detail::tvec2<T> rotate( +00037 detail::tvec2<T> const & v, +00038 T const & angle); +00039 +00042 template <typename T> +00043 detail::tvec3<T> rotate( +00044 detail::tvec3<T> const & v, +00045 T const & angle, +00046 detail::tvec3<T> const & normal); +00047 +00050 template <typename T> +00051 detail::tvec4<T> rotate( +00052 detail::tvec4<T> const & v, +00053 T const & angle, +00054 detail::tvec3<T> const & normal); +00055 +00058 template <typename T> +00059 detail::tvec3<T> rotateX( +00060 detail::tvec3<T> const & v, +00061 T const & angle); +00062 +00065 template <typename T> +00066 detail::tvec3<T> rotateY( +00067 detail::tvec3<T> const & v, +00068 T const & angle); +00069 +00072 template <typename T> +00073 detail::tvec3<T> rotateZ( +00074 detail::tvec3<T> const & v, +00075 T const & angle); +00076 +00079 template <typename T> +00080 detail::tvec4<T> rotateX( +00081 detail::tvec4<T> const & v, +00082 T const & angle); +00083 +00086 template <typename T> +00087 detail::tvec4<T> rotateY( +00088 detail::tvec4<T> const & v, +00089 T const & angle); +00090 +00093 template <typename T> +00094 detail::tvec4<T> rotateZ( +00095 detail::tvec4<T> const & v, +00096 T const & angle); +00097 +00100 template <typename T> +00101 detail::tmat4x4<T> orientation( +00102 detail::tvec3<T> const & Normal, +00103 detail::tvec3<T> const & Up); +00104 +00106 }//namespace rotate_vector +00107 }//namespace gtx +00108 }//namespace glm +00109 +00110 #include "rotate_vector.inl" +00111 +00112 namespace glm{using namespace gtx::rotate_vector;} +00113 +00114 #endif//glm_gtx_rotate_vector +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2006-11-13 +00005 // Updated : 2011-01-26 +00006 // Licence : This source is under MIT License +00007 // File : glm/setup.hpp +00009 +00010 #ifndef glm_setup +00011 #define glm_setup +00012 +00014 // Version +00015 +00016 #define GLM_VERSION 92 +00017 #define GLM_VERSION_MAJOR 0 +00018 #define GLM_VERSION_MINOR 9 +00019 #define GLM_VERSION_PATCH 2 +00020 #define GLM_VERSION_REVISION 6 +00021 +00023 // Compiler +00024 +00025 // User defines: GLM_FORCE_COMPILER_UNKNOWN +00026 // TODO ? __llvm__ +00027 +00028 #define GLM_COMPILER_UNKNOWN 0x00000000 +00029 +00030 // Visual C++ defines +00031 #define GLM_COMPILER_VC 0x01000000 +00032 #define GLM_COMPILER_VC2 0x01000010 +00033 #define GLM_COMPILER_VC4 0x01000020 +00034 #define GLM_COMPILER_VC5 0x01000030 +00035 #define GLM_COMPILER_VC6 0x01000040 +00036 #define GLM_COMPILER_VC2002 0x01000050 +00037 #define GLM_COMPILER_VC2003 0x01000060 +00038 #define GLM_COMPILER_VC2005 0x01000070 +00039 #define GLM_COMPILER_VC2008 0x01000080 +00040 #define GLM_COMPILER_VC2010 0x01000090 +00041 #define GLM_COMPILER_VC2011 0x010000A0 +00042 +00043 // GCC defines +00044 #define GLM_COMPILER_GCC 0x02000000 +00045 #define GLM_COMPILER_GCC_LLVM 0x02000001 +00046 #define GLM_COMPILER_GCC_CLANG 0x02000002 +00047 #define GLM_COMPILER_GCC30 0x02000010 +00048 #define GLM_COMPILER_GCC31 0x02000020 +00049 #define GLM_COMPILER_GCC32 0x02000030 +00050 #define GLM_COMPILER_GCC33 0x02000040 +00051 #define GLM_COMPILER_GCC34 0x02000050 +00052 #define GLM_COMPILER_GCC35 0x02000060 +00053 #define GLM_COMPILER_GCC40 0x02000070 +00054 #define GLM_COMPILER_GCC41 0x02000080 +00055 #define GLM_COMPILER_GCC42 0x02000090 +00056 #define GLM_COMPILER_GCC43 0x020000A0 +00057 #define GLM_COMPILER_GCC44 0x020000B0 +00058 #define GLM_COMPILER_GCC45 0x020000C0 +00059 #define GLM_COMPILER_GCC46 0x020000D0 +00060 #define GLM_COMPILER_GCC47 0x020000E0 +00061 #define GLM_COMPILER_GCC48 0x020000F0 +00062 #define GLM_COMPILER_GCC49 0x02000100 +00063 #define GLM_COMPILER_GCC50 0x02000200 +00064 +00065 // G++ command line to display defined +00066 // echo "" | g++ -E -dM -x c++ - | sort +00067 +00068 // Borland C++ defines. How to identify BC? +00069 #define GLM_COMPILER_BC 0x04000000 +00070 #define GLM_COMPILER_BCB4 0x04000100 +00071 #define GLM_COMPILER_BCB5 0x04000200 +00072 #define GLM_COMPILER_BCB6 0x04000300 +00073 //#define GLM_COMPILER_BCBX 0x04000400 // What's the version value? +00074 #define GLM_COMPILER_BCB2009 0x04000500 +00075 +00076 // CodeWarrior +00077 #define GLM_COMPILER_CODEWARRIOR 0x08000000 +00078 +00079 // CUDA +00080 #define GLM_COMPILER_CUDA 0x10000000 +00081 #define GLM_COMPILER_CUDA30 0x10000010 +00082 #define GLM_COMPILER_CUDA31 0x10000020 +00083 #define GLM_COMPILER_CUDA32 0x10000030 +00084 #define GLM_COMPILER_CUDA40 0x10000040 +00085 +00086 // Clang +00087 #define GLM_COMPILER_CLANG 0x20000000 +00088 #define GLM_COMPILER_CLANG26 0x20000010 +00089 #define GLM_COMPILER_CLANG27 0x20000020 +00090 #define GLM_COMPILER_CLANG28 0x20000030 +00091 #define GLM_COMPILER_CLANG29 0x20000040 +00092 +00093 // LLVM GCC +00094 #define GLM_COMPILER_LLVM_GCC 0x40000000 +00095 +00096 // Build model +00097 #define GLM_MODEL_32 0x00000010 +00098 #define GLM_MODEL_64 0x00000020 +00099 +00100 // Force generic C++ compiler +00101 #ifdef GLM_FORCE_COMPILER_UNKNOWN +00102 # define GLM_COMPILER GLM_COMPILER_UNKNOWN +00103 +00104 // CUDA +00105 #elif defined(__CUDACC__) +00106 # define GLM_COMPILER GLM_COMPILER_CUDA +00107 +00108 // Visual C++ +00109 #elif defined(_MSC_VER) +00110 # if _MSC_VER == 900 +00111 # define GLM_COMPILER GLM_COMPILER_VC2 +00112 # elif _MSC_VER == 1000 +00113 # define GLM_COMPILER GLM_COMPILER_VC4 +00114 # elif _MSC_VER == 1100 +00115 # define GLM_COMPILER GLM_COMPILER_VC5 +00116 # elif _MSC_VER == 1200 +00117 # define GLM_COMPILER GLM_COMPILER_VC6 +00118 # elif _MSC_VER == 1300 +00119 # define GLM_COMPILER GLM_COMPILER_VC2002 +00120 # elif _MSC_VER == 1310 +00121 # define GLM_COMPILER GLM_COMPILER_VC2003 +00122 # elif _MSC_VER == 1400 +00123 # define GLM_COMPILER GLM_COMPILER_VC2005 +00124 # elif _MSC_VER == 1500 +00125 # define GLM_COMPILER GLM_COMPILER_VC2008 +00126 # elif _MSC_VER == 1600 +00127 # define GLM_COMPILER GLM_COMPILER_VC2010 +00128 # elif _MSC_VER == 1700 +00129 # define GLM_COMPILER GLM_COMPILER_VC2011 +00130 # else//_MSC_VER +00131 # define GLM_COMPILER GLM_COMPILER_VC +00132 # endif//_MSC_VER +00133 +00134 // G++ +00135 #elif defined(__GNUC__) || defined(__llvm__) || defined(__clang__) +00136 # if defined (__llvm__) +00137 # define GLM_COMPILER_GCC_EXTRA GLM_COMPILER_GCC_LLVM +00138 # elif defined (__clang__) +00139 # define GLM_COMPILER_GCC_EXTRA GLM_COMPILER_GCC_CLANG +00140 # else +00141 # define GLM_COMPILER_GCC_EXTRA 0 +00142 # endif +00143 # +00144 # if (__GNUC__ == 3) && (__GNUC_MINOR__ == 2) +00145 # define GLM_COMPILER GLM_COMPILER_GCC32 +00146 # elif (__GNUC__ == 3) && (__GNUC_MINOR__ == 3) +00147 # define GLM_COMPILER GLM_COMPILER_GCC33 +00148 # elif (__GNUC__ == 3) && (__GNUC_MINOR__ == 4) +00149 # define GLM_COMPILER GLM_COMPILER_GCC34 +00150 # elif (__GNUC__ == 3) && (__GNUC_MINOR__ == 5) +00151 # define GLM_COMPILER GLM_COMPILER_GCC35 +00152 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 0) +00153 # define GLM_COMPILER (GLM_COMPILER_GCC40 | GLM_COMPILER_GCC_EXTRA) +00154 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 1) +00155 # define GLM_COMPILER (GLM_COMPILER_GCC41 | GLM_COMPILER_GCC_EXTRA) +00156 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 2) +00157 # define GLM_COMPILER (GLM_COMPILER_GCC42 | GLM_COMPILER_GCC_EXTRA) +00158 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 3) +00159 # define GLM_COMPILER (GLM_COMPILER_GCC43 | GLM_COMPILER_GCC_EXTRA) +00160 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 4) +00161 # define GLM_COMPILER (GLM_COMPILER_GCC44 | GLM_COMPILER_GCC_EXTRA) +00162 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 5) +00163 # define GLM_COMPILER (GLM_COMPILER_GCC45 | GLM_COMPILER_GCC_EXTRA) +00164 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 6) +00165 # define GLM_COMPILER (GLM_COMPILER_GCC46 | GLM_COMPILER_GCC_EXTRA) +00166 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 7) +00167 # define GLM_COMPILER (GLM_COMPILER_GCC47 | GLM_COMPILER_GCC_EXTRA) +00168 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 8) +00169 # define GLM_COMPILER (GLM_COMPILER_GCC48 | GLM_COMPILER_GCC_EXTRA) +00170 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 9) +00171 # define GLM_COMPILER (GLM_COMPILER_GCC49 | GLM_COMPILER_GCC_EXTRA) +00172 # elif (__GNUC__ == 5) && (__GNUC_MINOR__ == 0) +00173 # define GLM_COMPILER (GLM_COMPILER_GCC50 | GLM_COMPILER_GCC_EXTRA) +00174 # else +00175 # define GLM_COMPILER (GLM_COMPILER_GCC | GLM_COMPILER_GCC_EXTRA) +00176 # endif +00177 +00178 // Borland C++ +00179 #elif defined(_BORLANDC_) +00180 # if defined(VER125) +00181 # define GLM_COMPILER GLM_COMPILER_BCB4 +00182 # elif defined(VER130) +00183 # define GLM_COMPILER GLM_COMPILER_BCB5 +00184 # elif defined(VER140) +00185 # define GLM_COMPILER GLM_COMPILER_BCB6 +00186 # elif defined(VER200) +00187 # define GLM_COMPILER GLM_COMPILER_BCB2009 +00188 # else +00189 # define GLM_COMPILER GLM_COMPILER_BC +00190 # endif +00191 +00192 // Codewarrior +00193 #elif defined(__MWERKS__) +00194 # define GLM_COMPILER GLM_COMPILER_CODEWARRIOR +00195 +00196 #else +00197 # define GLM_COMPILER GLM_COMPILER_UNKNOWN +00198 #endif +00199 +00200 #ifndef GLM_COMPILER +00201 #error "GLM_COMPILER undefined, your compiler may not be supported by GLM. Add #define GLM_COMPILER 0 to ignore this message." +00202 #endif//GLM_COMPILER +00203 +00204 // Report compiler detection +00205 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_COMPILER_DISPLAYED)) +00206 # define GLM_MESSAGE_COMPILER_DISPLAYED +00207 # if(GLM_COMPILER & GLM_COMPILER_CUDA) +00208 # pragma message("GLM: CUDA compiler detected") +00209 # elif(GLM_COMPILER & GLM_COMPILER_VC) +00210 # pragma message("GLM: Visual C++ compiler detected") +00211 # elif(GLM_COMPILER & GLM_COMPILER_CLANG) +00212 # pragma message("GLM: Clang compiler detected") +00213 # elif(GLM_COMPILER & GLM_COMPILER_LLVM_GCC) +00214 # pragma message("GLM: LLVM GCC compiler detected") +00215 # elif(GLM_COMPILER & GLM_COMPILER_GCC) +00216 # if(GLM_COMPILER == GLM_COMPILER_GCC_LLVM) +00217 # pragma message("GLM: LLVM GCC compiler detected") +00218 # elif(GLM_COMPILER == GLM_COMPILER_GCC_CLANG) +00219 # pragma message("GLM: CLANG compiler detected") +00220 # else +00221 # pragma message("GLM: GCC compiler detected") +00222 # endif +00223 # elif(GLM_COMPILER & GLM_COMPILER_BC) +00224 # pragma message("GLM: Borland compiler detected but not supported") +00225 # elif(GLM_COMPILER & GLM_COMPILER_CODEWARRIOR) +00226 # pragma message("GLM: Codewarrior compiler detected but not supported") +00227 # else +00228 # pragma message("GLM: Compiler not detected") +00229 # endif +00230 #endif//GLM_MESSAGE +00231 +00233 // Build model // +00234 +00235 #if(GLM_COMPILER & GLM_COMPILER_VC) +00236 # if defined(_M_X64) +00237 # define GLM_MODEL GLM_MODEL_64 +00238 # else +00239 # define GLM_MODEL GLM_MODEL_32 +00240 # endif//_M_X64 +00241 #elif(GLM_COMPILER & GLM_COMPILER_GCC) +00242 # if(defined(__WORDSIZE) && (__WORDSIZE == 64)) || defined(__arch64__) || defined(__LP64__) || defined(__x86_64__) +00243 # define GLM_MODEL GLM_MODEL_64 +00244 # else +00245 # define GLM_MODEL GLM_MODEL_32 +00246 # endif// +00247 #else +00248 # define GLM_MODEL GLM_MODEL_32 +00249 #endif// +00250 +00251 #if(!defined(GLM_MODEL) && GLM_COMPILER != 0) +00252 #error "GLM_MODEL undefined, your compiler may not be supported by GLM. Add #define GLM_MODEL 0 to ignore this message." +00253 #endif//GLM_MODEL +00254 +00255 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_MODEL_DISPLAYED)) +00256 # define GLM_MESSAGE_MODEL_DISPLAYED +00257 # if(GLM_MODEL == GLM_MODEL_64) +00258 # pragma message("GLM: 64 bits model") +00259 # elif(GLM_MODEL == GLM_MODEL_32) +00260 # pragma message("GLM: 32 bits model") +00261 # endif//GLM_MODEL +00262 #endif//GLM_MESSAGE +00263 +00265 // C++ Version // +00266 +00267 // User defines: GLM_FORCE_CXX98 +00268 +00269 #define GLM_LANG_CXX 0 +00270 #define GLM_LANG_CXX98 1 +00271 #define GLM_LANG_CXX0X 2 +00272 #define GLM_LANG_CXXMS 3 +00273 #define GLM_LANG_CXXGNU 4 +00274 +00275 #if(defined(GLM_FORCE_CXX98)) +00276 # define GLM_LANG GLM_LANG_CXX98 +00277 #elif(((GLM_COMPILER & GLM_COMPILER_GCC) == GLM_COMPILER_GCC) && defined(__GXX_EXPERIMENTAL_CXX0X__)) // -std=c++0x or -std=gnu++0x +00278 # define GLM_LANG GLM_LANG_CXX0X +00279 #elif(GLM_COMPILER == GLM_COMPILER_VC2010) //_MSC_EXTENSIONS for MS language extensions +00280 # define GLM_LANG GLM_LANG_CXX0X +00281 #elif(((GLM_COMPILER & GLM_COMPILER_GCC) == GLM_COMPILER_GCC) && defined(__STRICT_ANSI__)) +00282 # define GLM_LANG GLM_LANG_CXX98 +00283 #elif(((GLM_COMPILER & GLM_COMPILER_VC) == GLM_COMPILER_VC) && !defined(_MSC_EXTENSIONS)) +00284 # define GLM_LANG GLM_LANG_CXX98 +00285 #else +00286 # define GLM_LANG GLM_LANG_CXX +00287 #endif +00288 +00289 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_LANG_DISPLAYED)) +00290 # define GLM_MESSAGE_LANG_DISPLAYED +00291 # if(GLM_LANG == GLM_LANG_CXX98) +00292 # pragma message("GLM: C++98") +00293 # elif(GLM_LANG == GLM_LANG_CXX0X) +00294 # pragma message("GLM: C++0x") +00295 # endif//GLM_MODEL +00296 #endif//GLM_MESSAGE +00297 +00299 // Platform +00300 +00301 // User defines: GLM_FORCE_PURE GLM_FORCE_SSE2 GLM_FORCE_AVX +00302 +00303 #define GLM_ARCH_PURE 0x0000 //(0x0000) +00304 #define GLM_ARCH_SSE2 0x0001 //(0x0001) +00305 #define GLM_ARCH_SSE3 0x0003 //(0x0002 | GLM_ARCH_SSE2) +00306 #define GLM_ARCH_AVX 0x0007 //(0x0004 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2) +00307 +00308 #if(defined(GLM_FORCE_PURE)) +00309 # define GLM_ARCH GLM_ARCH_PURE +00310 #elif(defined(GLM_FORCE_AVX)) +00311 # define GLM_ARCH GLM_ARCH_AVX +00312 #elif(defined(GLM_FORCE_SSE3)) +00313 # define GLM_ARCH GLM_ARCH_SSE3 +00314 #elif(defined(GLM_FORCE_SSE2)) +00315 # define GLM_ARCH GLM_ARCH_SSE2 +00316 #elif((GLM_COMPILER & GLM_COMPILER_VC) && (defined(_M_IX86) || defined(_M_X64))) +00317 # if(defined(_M_CEE_PURE)) +00318 # define GLM_ARCH GLM_ARCH_PURE +00319 # elif(GLM_COMPILER >= GLM_COMPILER_VC2010) +00320 # if(_MSC_FULL_VER >= 160031118) //160031118: VC2010 SP1 beta full version +00321 # define GLM_ARCH GLM_ARCH_AVX //GLM_ARCH_AVX (Require SP1) +00322 # else +00323 # define GLM_ARCH GLM_ARCH_SSE3 +00324 # endif +00325 # elif(GLM_COMPILER >= GLM_COMPILER_VC2008) +00326 # define GLM_ARCH GLM_ARCH_SSE3 +00327 # elif(GLM_COMPILER >= GLM_COMPILER_VC2005) +00328 # define GLM_ARCH GLM_ARCH_SSE2 +00329 # else +00330 # define GLM_ARCH GLM_ARCH_PURE +00331 # endif +00332 #elif(GLM_COMPILER & GLM_COMPILER_LLVM_GCC) +00333 # if(defined(__AVX__)) +00334 # define GLM_ARCH GLM_ARCH_AVX +00335 # elif(defined(__SSE3__)) +00336 # define GLM_ARCH GLM_ARCH_SSE3 +00337 # elif(defined(__SSE2__)) +00338 # define GLM_ARCH GLM_ARCH_SSE2 +00339 # else +00340 # define GLM_ARCH GLM_ARCH_PURE +00341 # endif +00342 #elif((GLM_COMPILER & GLM_COMPILER_GCC) && (defined(__i386__) || defined(__x86_64__))) +00343 # if(defined(__AVX__)) +00344 # define GLM_ARCH GLM_ARCH_AVX +00345 # elif(defined(__SSE3__)) +00346 # define GLM_ARCH GLM_ARCH_SSE3 +00347 # elif(defined(__SSE2__)) +00348 # define GLM_ARCH GLM_ARCH_SSE2 +00349 # else +00350 # define GLM_ARCH GLM_ARCH_PURE +00351 # endif +00352 #else +00353 # define GLM_ARCH GLM_ARCH_PURE +00354 #endif +00355 +00356 #if(GLM_ARCH != GLM_ARCH_PURE) +00357 #if((GLM_ARCH & GLM_ARCH_AVX) == GLM_ARCH_AVX) +00358 # include <immintrin.h> +00359 #endif//GLM_ARCH +00360 #if((GLM_ARCH & GLM_ARCH_SSE3) == GLM_ARCH_SSE3) +00361 # include <pmmintrin.h> +00362 #endif//GLM_ARCH +00363 #if((GLM_ARCH & GLM_ARCH_SSE2) == GLM_ARCH_SSE2) +00364 # include <emmintrin.h> +00365 #endif//GLM_ARCH +00366 #endif//(GLM_ARCH != GLM_ARCH_PURE) +00367 +00368 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_ARCH_DISPLAYED)) +00369 # define GLM_MESSAGE_ARCH_DISPLAYED +00370 # if(GLM_ARCH == GLM_ARCH_PURE) +00371 # pragma message("GLM: Platform independent") +00372 # elif(GLM_ARCH == GLM_ARCH_SSE2) +00373 # pragma message("GLM: SSE2 build platform") +00374 # elif(GLM_ARCH == GLM_ARCH_SSE3) +00375 # pragma message("GLM: SSE3 build platform") +00376 # elif(GLM_ARCH == GLM_ARCH_AVX) +00377 # pragma message("GLM: AVX build platform") +00378 # endif//GLM_ARCH +00379 #endif//GLM_MESSAGE +00380 +00382 // Components +00383 +00384 //#define GLM_FORCE_ONLY_XYZW +00385 #define GLM_COMPONENT_GLSL_NAMES 0 +00386 #define GLM_COMPONENT_ONLY_XYZW 1 // To disable multiple vector component names access. +00387 #define GLM_COMPONENT_MS_EXT 2 // To use anonymous union to provide multiple component names access for class valType. Visual C++ only. +00388 +00389 #ifndef GLM_FORCE_ONLY_XYZW +00390 # if((GLM_COMPILER & GLM_COMPILER_VC) && defined(_MSC_EXTENSIONS)) +00391 # define GLM_COMPONENT GLM_COMPONENT_MS_EXT +00392 # else +00393 # define GLM_COMPONENT GLM_COMPONENT_GLSL_NAMES +00394 # endif +00395 #else +00396 # define GLM_COMPONENT GLM_COMPONENT_ONLY_XYZW +00397 #endif +00398 +00399 #if((GLM_COMPONENT == GLM_COMPONENT_MS_EXT) && !(GLM_COMPILER & GLM_COMPILER_VC)) +00400 # error "GLM_COMPONENT value is GLM_COMPONENT_MS_EXT but this is not allowed with the current compiler." +00401 #endif +00402 +00403 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_COMPONENT_DISPLAYED)) +00404 # define GLM_MESSAGE_COMPONENT_DISPLAYED +00405 # if(GLM_COMPONENT == GLM_COMPONENT_GLSL_NAMES) +00406 # pragma message("GLM: GLSL multiple vector component names") +00407 # elif(GLM_COMPONENT == GLM_COMPONENT_ONLY_XYZW) +00408 # pragma message("GLM: x,y,z,w vector component names only") +00409 # elif(GLM_COMPONENT == GLM_COMPONENT_MS_EXT) +00410 # pragma message("GLM: Multiple vector component names through Visual C++ language extensions") +00411 # else +00412 # error "GLM_COMPONENT value unknown" +00413 # endif//GLM_MESSAGE_COMPONENT_DISPLAYED +00414 #endif//GLM_MESSAGE +00415 +00417 // Static assert +00418 +00419 #if(GLM_LANG == GLM_LANG_CXX0X) +00420 # define GLM_STATIC_ASSERT(x, message) static_assert(x, message) +00421 #elif(defined(BOOST_STATIC_ASSERT)) +00422 # define GLM_STATIC_ASSERT(x, message) BOOST_STATIC_ASSERT(x) +00423 #elif(GLM_COMPILER & GLM_COMPILER_VC) +00424 # define GLM_STATIC_ASSERT(x, message) typedef char __CASSERT__##__LINE__[(x) ? 1 : -1] +00425 #else +00426 # define GLM_STATIC_ASSERT(x, message) +00427 # define GLM_STATIC_ASSERT_NULL +00428 #endif//GLM_LANG +00429 +00431 // Qualifiers +00432 +00433 // User defines: GLM_FORCE_INLINE GLM_FORCE_CUDA +00434 +00435 #if(defined(GLM_FORCE_CUDA) || (GLM_COMPILER & GLM_COMPILER_CUDA)) +00436 # define GLM_CUDA_FUNC_DEF __device__ __host__ +00437 # define GLM_CUDA_FUNC_DECL __device__ __host__ +00438 #else +00439 # define GLM_CUDA_FUNC_DEF +00440 # define GLM_CUDA_FUNC_DECL +00441 #endif +00442 +00443 #if GLM_COMPILER & GLM_COMPILER_GCC +00444 #define GLM_VAR_USED __attribute__ ((unused)) +00445 #else +00446 #define GLM_VAR_USED +00447 #endif +00448 +00449 #if(defined(GLM_FORCE_INLINE)) +00450 # if((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2005)) +00451 # define GLM_INLINE __forceinline +00452 # elif((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC34)) +00453 # define GLM_INLINE __attribute__((always_inline)) +00454 # else +00455 # define GLM_INLINE inline +00456 # endif//GLM_COMPILER +00457 #else +00458 # define GLM_INLINE inline +00459 #endif//defined(GLM_FORCE_INLINE) +00460 +00461 #define GLM_FUNC_DECL GLM_CUDA_FUNC_DECL +00462 #define GLM_FUNC_QUALIFIER GLM_CUDA_FUNC_DEF GLM_INLINE +00463 +00465 // Swizzle operators +00466 +00467 // User defines: GLM_SWIZZLE_XYZW GLM_SWIZZLE_RGBA GLM_SWIZZLE_STQP GLM_SWIZZLE +00468 +00469 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_SWIZZLE_DISPLAYED)) +00470 # define GLM_MESSAGE_SWIZZLE_DISPLAYED +00471 # if(defined(GLM_SWIZZLE)) +00472 # pragma message("GLM: Full swizzling operator enabled") +00473 # elif(!defined(GLM_SWIZZLE_XYZW) && !defined(GLM_SWIZZLE_RGBA) && !defined(GLM_SWIZZLE_STQP) && !defined(GLM_SWIZZLE)) +00474 # pragma message("GLM: No swizzling operator enabled") +00475 # else +00476 # pragma message("GLM: Partial swizzling operator enabled") +00477 # endif +00478 #endif//GLM_MESSAGE +00479 +00480 #endif//glm_setup +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2009-05-07 +00005 // Updated : 2009-05-07 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/simd_vec4.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - intrinsic +00013 +00014 #ifndef glm_gtx_simd_mat4 +00015 #define glm_gtx_simd_mat4 +00016 +00017 // Dependency: +00018 #include "../glm.hpp" +00019 +00020 #if(GLM_ARCH & GLM_ARCH_SSE2) +00021 # include "../core/intrinsic_matrix.hpp" +00022 # include "../gtx/simd_vec4.hpp" +00023 #else +00024 # error "GLM: GLM_GTX_simd_mat4 requires compiler support of SSE2 through intrinsics" +00025 #endif +00026 +00027 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00028 # pragma message("GLM: GLM_GTX_simd_mat4 extension included") +00029 #endif +00030 +00031 namespace glm{ +00032 namespace detail +00033 { +00036 GLM_ALIGNED_STRUCT(16) fmat4x4SIMD +00037 { +00038 enum ctor{null}; +00039 +00040 typedef float value_type; +00041 typedef fvec4SIMD col_type; +00042 typedef fvec4SIMD row_type; +00043 typedef std::size_t size_type; +00044 static size_type value_size(); +00045 static size_type col_size(); +00046 static size_type row_size(); +00047 static bool is_matrix(); +00048 +00049 fvec4SIMD Data[4]; +00050 +00052 // Constructors +00053 +00054 fmat4x4SIMD(); +00055 explicit fmat4x4SIMD(float const & s); +00056 explicit fmat4x4SIMD( +00057 float const & x0, float const & y0, float const & z0, float const & w0, +00058 float const & x1, float const & y1, float const & z1, float const & w1, +00059 float const & x2, float const & y2, float const & z2, float const & w2, +00060 float const & x3, float const & y3, float const & z3, float const & w3); +00061 explicit fmat4x4SIMD( +00062 fvec4SIMD const & v0, +00063 fvec4SIMD const & v1, +00064 fvec4SIMD const & v2, +00065 fvec4SIMD const & v3); +00066 explicit fmat4x4SIMD( +00067 tmat4x4<float> const & m); +00068 +00069 // Conversions +00070 //template <typename U> +00071 //explicit tmat4x4(tmat4x4<U> const & m); +00072 +00073 //explicit tmat4x4(tmat2x2<T> const & x); +00074 //explicit tmat4x4(tmat3x3<T> const & x); +00075 //explicit tmat4x4(tmat2x3<T> const & x); +00076 //explicit tmat4x4(tmat3x2<T> const & x); +00077 //explicit tmat4x4(tmat2x4<T> const & x); +00078 //explicit tmat4x4(tmat4x2<T> const & x); +00079 //explicit tmat4x4(tmat3x4<T> const & x); +00080 //explicit tmat4x4(tmat4x3<T> const & x); +00081 +00082 // Accesses +00083 fvec4SIMD & operator[](size_type i); +00084 fvec4SIMD const & operator[](size_type i) const; +00085 +00086 // Unary updatable operators +00087 fmat4x4SIMD & operator= (fmat4x4SIMD const & m); +00088 fmat4x4SIMD & operator+= (float const & s); +00089 fmat4x4SIMD & operator+= (fmat4x4SIMD const & m); +00090 fmat4x4SIMD & operator-= (float const & s); +00091 fmat4x4SIMD & operator-= (fmat4x4SIMD const & m); +00092 fmat4x4SIMD & operator*= (float const & s); +00093 fmat4x4SIMD & operator*= (fmat4x4SIMD const & m); +00094 fmat4x4SIMD & operator/= (float const & s); +00095 fmat4x4SIMD & operator/= (fmat4x4SIMD const & m); +00096 fmat4x4SIMD & operator++ (); +00097 fmat4x4SIMD & operator-- (); +00098 }; +00099 +00100 // Binary operators +00101 fmat4x4SIMD operator+ (fmat4x4SIMD const & m, float const & s); +00102 fmat4x4SIMD operator+ (float const & s, fmat4x4SIMD const & m); +00103 fmat4x4SIMD operator+ (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2); +00104 +00105 fmat4x4SIMD operator- (fmat4x4SIMD const & m, float const & s); +00106 fmat4x4SIMD operator- (float const & s, fmat4x4SIMD const & m); +00107 fmat4x4SIMD operator- (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2); +00108 +00109 fmat4x4SIMD operator* (fmat4x4SIMD const & m, float const & s); +00110 fmat4x4SIMD operator* (float const & s, fmat4x4SIMD const & m); +00111 +00112 fvec4SIMD operator* (fmat4x4SIMD const & m, fvec4SIMD const & v); +00113 fvec4SIMD operator* (fvec4SIMD const & v, fmat4x4SIMD const & m); +00114 +00115 fmat4x4SIMD operator* (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2); +00116 +00117 fmat4x4SIMD operator/ (fmat4x4SIMD const & m, float const & s); +00118 fmat4x4SIMD operator/ (float const & s, fmat4x4SIMD const & m); +00119 +00120 fvec4SIMD operator/ (fmat4x4SIMD const & m, fvec4SIMD const & v); +00121 fvec4SIMD operator/ (fvec4SIMD const & v, fmat4x4SIMD const & m); +00122 +00123 fmat4x4SIMD operator/ (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2); +00124 +00125 // Unary constant operators +00126 fmat4x4SIMD const operator- (fmat4x4SIMD const & m); +00127 fmat4x4SIMD const operator-- (fmat4x4SIMD const & m, int); +00128 fmat4x4SIMD const operator++ (fmat4x4SIMD const & m, int); +00129 }//namespace detail +00130 +00131 namespace gtx{ +00132 namespace simd_mat4 +00133 { +00134 typedef detail::fmat4x4SIMD simdMat4; +00135 +00138 +00141 detail::tmat4x4<float> mat4_cast( +00142 detail::fmat4x4SIMD const & x); +00143 +00147 detail::fmat4x4SIMD matrixCompMult( +00148 detail::fmat4x4SIMD const & x, +00149 detail::fmat4x4SIMD const & y); +00150 +00155 detail::fmat4x4SIMD outerProduct( +00156 detail::fvec4SIMD const & c, +00157 detail::fvec4SIMD const & r); +00158 +00161 detail::fmat4x4SIMD transpose( +00162 detail::fmat4x4SIMD const & x); +00163 +00166 float determinant( +00167 detail::fmat4x4SIMD const & m); +00168 +00171 detail::fmat4x4SIMD inverse( +00172 detail::fmat4x4SIMD const & m); +00173 +00175 }// namespace simd_mat4 +00176 }// namespace gtx +00177 }// namespace glm +00178 +00179 #include "simd_mat4.inl" +00180 +00181 namespace glm{using namespace gtx::simd_mat4;} +00182 +00183 #endif//glm_gtx_simd_mat4 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2009-05-07 +00005 // Updated : 2009-05-07 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/simd_vec4.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - intrinsic +00013 +00014 #ifndef glm_gtx_simd_vec4 +00015 #define glm_gtx_simd_vec4 +00016 +00017 // Dependency: +00018 #include "../glm.hpp" +00019 +00020 #if(GLM_ARCH & GLM_ARCH_SSE2) +00021 # include "../core/intrinsic_common.hpp" +00022 # include "../core/intrinsic_geometric.hpp" +00023 #else +00024 # error "GLM: GLM_GTX_simd_vec4 requires compiler support of SSE2 through intrinsics" +00025 #endif +00026 +00027 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00028 # pragma message("GLM: GLM_GTX_simd_vec4 extension included") +00029 #endif +00030 +00031 namespace glm{ +00032 namespace detail +00033 { +00036 GLM_ALIGNED_STRUCT(16) fvec4SIMD +00037 { +00038 enum ctor{null}; +00039 typedef __m128 value_type; +00040 typedef std::size_t size_type; +00041 static size_type value_size(); +00042 +00043 typedef fvec4SIMD type; +00044 typedef tvec4<bool> bool_type; +00045 +00046 __m128 Data; +00047 +00049 // Implicit basic constructors +00050 +00051 fvec4SIMD(); +00052 fvec4SIMD(__m128 const & Data); +00053 fvec4SIMD(fvec4SIMD const & v); +00054 +00056 // Explicit basic constructors +00057 +00058 explicit fvec4SIMD( +00059 ctor); +00060 explicit fvec4SIMD( +00061 float const & s); +00062 explicit fvec4SIMD( +00063 float const & x, +00064 float const & y, +00065 float const & z, +00066 float const & w); +00067 explicit fvec4SIMD( +00068 tvec4<float> const & v); +00069 +00072 +00073 fvec4SIMD(vec2 const & v, float const & s1, float const & s2); +00074 fvec4SIMD(float const & s1, vec2 const & v, float const & s2); +00075 fvec4SIMD(float const & s1, float const & s2, vec2 const & v); +00076 fvec4SIMD(vec3 const & v, float const & s); +00077 fvec4SIMD(float const & s, vec3 const & v); +00078 fvec4SIMD(vec2 const & v1, vec2 const & v2); +00079 //fvec4SIMD(ivec4SIMD const & v); +00080 +00082 // Unary arithmetic operators +00083 +00084 fvec4SIMD& operator= (fvec4SIMD const & v); +00085 fvec4SIMD& operator+=(fvec4SIMD const & v); +00086 fvec4SIMD& operator-=(fvec4SIMD const & v); +00087 fvec4SIMD& operator*=(fvec4SIMD const & v); +00088 fvec4SIMD& operator/=(fvec4SIMD const & v); +00089 +00090 fvec4SIMD& operator+=(float const & s); +00091 fvec4SIMD& operator-=(float const & s); +00092 fvec4SIMD& operator*=(float const & s); +00093 fvec4SIMD& operator/=(float const & s); +00094 +00095 fvec4SIMD& operator++(); +00096 fvec4SIMD& operator--(); +00097 +00099 // Swizzle operators +00100 +00101 template <comp X, comp Y, comp Z, comp W> +00102 fvec4SIMD& swizzle(); +00103 template <comp X, comp Y, comp Z, comp W> +00104 fvec4SIMD swizzle() const; +00105 template <comp X, comp Y, comp Z> +00106 fvec4SIMD swizzle() const; +00107 template <comp X, comp Y> +00108 fvec4SIMD swizzle() const; +00109 template <comp X> +00110 fvec4SIMD swizzle() const; +00111 }; +00112 }//namespace detail +00113 +00114 namespace gtx{ +00115 namespace simd_vec4 +00116 { +00117 typedef glm::detail::fvec4SIMD simdVec4; +00118 +00121 +00124 detail::tvec4<float> vec4_cast( +00125 detail::fvec4SIMD const & x); +00126 +00129 detail::fvec4SIMD abs(detail::fvec4SIMD const & x); +00130 +00133 detail::fvec4SIMD sign(detail::fvec4SIMD const & x); +00134 +00137 detail::fvec4SIMD floor(detail::fvec4SIMD const & x); +00138 +00142 detail::fvec4SIMD trunc(detail::fvec4SIMD const & x); +00143 +00150 detail::fvec4SIMD round(detail::fvec4SIMD const & x); +00151 +00156 //detail::fvec4SIMD roundEven(detail::fvec4SIMD const & x); +00157 +00161 detail::fvec4SIMD ceil(detail::fvec4SIMD const & x); +00162 +00165 detail::fvec4SIMD fract(detail::fvec4SIMD const & x); +00166 +00170 detail::fvec4SIMD mod( +00171 detail::fvec4SIMD const & x, +00172 detail::fvec4SIMD const & y); +00173 +00177 detail::fvec4SIMD mod( +00178 detail::fvec4SIMD const & x, +00179 float const & y); +00180 +00186 //detail::fvec4SIMD modf( +00187 // detail::fvec4SIMD const & x, +00188 // detail::fvec4SIMD & i); +00189 +00192 detail::fvec4SIMD min( +00193 detail::fvec4SIMD const & x, +00194 detail::fvec4SIMD const & y); +00195 +00196 detail::fvec4SIMD min( +00197 detail::fvec4SIMD const & x, +00198 float const & y); +00199 +00202 detail::fvec4SIMD max( +00203 detail::fvec4SIMD const & x, +00204 detail::fvec4SIMD const & y); +00205 +00206 detail::fvec4SIMD max( +00207 detail::fvec4SIMD const & x, +00208 float const & y); +00209 +00213 detail::fvec4SIMD clamp( +00214 detail::fvec4SIMD const & x, +00215 detail::fvec4SIMD const & minVal, +00216 detail::fvec4SIMD const & maxVal); +00217 +00218 detail::fvec4SIMD clamp( +00219 detail::fvec4SIMD const & x, +00220 float const & minVal, +00221 float const & maxVal); +00222 +00246 // \todo Test when 'a' is a boolean. +00248 detail::fvec4SIMD mix( +00249 detail::fvec4SIMD const & x, +00250 detail::fvec4SIMD const & y, +00251 detail::fvec4SIMD const & a); +00252 +00255 detail::fvec4SIMD step( +00256 detail::fvec4SIMD const & edge, +00257 detail::fvec4SIMD const & x); +00258 +00259 detail::fvec4SIMD step( +00260 float const & edge, +00261 detail::fvec4SIMD const & x); +00262 +00273 detail::fvec4SIMD smoothstep( +00274 detail::fvec4SIMD const & edge0, +00275 detail::fvec4SIMD const & edge1, +00276 detail::fvec4SIMD const & x); +00277 +00278 detail::fvec4SIMD smoothstep( +00279 float const & edge0, +00280 float const & edge1, +00281 detail::fvec4SIMD const & x); +00282 +00289 //bvec4 isnan(detail::fvec4SIMD const & x); +00290 +00297 //bvec4 isinf(detail::fvec4SIMD const & x); +00298 +00303 //detail::ivec4SIMD floatBitsToInt(detail::fvec4SIMD const & value); +00304 +00311 //detail::fvec4SIMD intBitsToFloat(detail::ivec4SIMD const & value); +00312 +00315 detail::fvec4SIMD fma( +00316 detail::fvec4SIMD const & a, +00317 detail::fvec4SIMD const & b, +00318 detail::fvec4SIMD const & c); +00319 +00329 //detail::fvec4SIMD frexp(detail::fvec4SIMD const & x, detail::ivec4SIMD & exp); +00330 +00337 //detail::fvec4SIMD ldexp(detail::fvec4SIMD const & x, detail::ivec4SIMD const & exp); +00338 +00341 float length( +00342 detail::fvec4SIMD const & x); +00343 +00347 float fastLength( +00348 detail::fvec4SIMD const & x); +00349 +00353 float niceLength( +00354 detail::fvec4SIMD const & x); +00355 +00358 detail::fvec4SIMD length4( +00359 detail::fvec4SIMD const & x); +00360 +00364 detail::fvec4SIMD fastLength4( +00365 detail::fvec4SIMD const & x); +00366 +00370 detail::fvec4SIMD niceLength4( +00371 detail::fvec4SIMD const & x); +00372 +00375 float distance( +00376 detail::fvec4SIMD const & p0, +00377 detail::fvec4SIMD const & p1); +00378 +00381 detail::fvec4SIMD distance4( +00382 detail::fvec4SIMD const & p0, +00383 detail::fvec4SIMD const & p1); +00384 +00387 float simdDot( +00388 detail::fvec4SIMD const & x, +00389 detail::fvec4SIMD const & y); +00390 +00393 detail::fvec4SIMD dot4( +00394 detail::fvec4SIMD const & x, +00395 detail::fvec4SIMD const & y); +00396 +00399 detail::fvec4SIMD cross( +00400 detail::fvec4SIMD const & x, +00401 detail::fvec4SIMD const & y); +00402 +00405 detail::fvec4SIMD normalize( +00406 detail::fvec4SIMD const & x); +00407 +00411 detail::fvec4SIMD fastNormalize( +00412 detail::fvec4SIMD const & x); +00413 +00416 detail::fvec4SIMD simdFaceforward( +00417 detail::fvec4SIMD const & N, +00418 detail::fvec4SIMD const & I, +00419 detail::fvec4SIMD const & Nref); +00420 +00424 detail::fvec4SIMD reflect( +00425 detail::fvec4SIMD const & I, +00426 detail::fvec4SIMD const & N); +00427 +00432 detail::fvec4SIMD refract( +00433 detail::fvec4SIMD const & I, +00434 detail::fvec4SIMD const & N, +00435 float const & eta); +00436 +00439 detail::fvec4SIMD sqrt( +00440 detail::fvec4SIMD const & x); +00441 +00445 detail::fvec4SIMD niceSqrt( +00446 detail::fvec4SIMD const & x); +00447 +00451 detail::fvec4SIMD fastSqrt( +00452 detail::fvec4SIMD const & x); +00453 +00456 detail::fvec4SIMD inversesqrt( +00457 detail::fvec4SIMD const & x); +00458 +00462 detail::fvec4SIMD fastInversesqrt( +00463 detail::fvec4SIMD const & x); +00464 +00466 }//namespace simd_vec4 +00467 }//namespace gtx +00468 }//namespace glm +00469 +00470 #include "simd_vec4.inl" +00471 +00472 namespace glm{using namespace gtx::simd_vec4;} +00473 +00474 #endif//glm_gtx_simd_vec4 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2011-04-09 +00005 // Updated : 2011-04-09 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/simplex.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_simplex +00014 #define glm_gtx_simplex +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_simplex extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace spline +00026 { +00029 +00032 template <typename genType> +00033 genType catmullRom( +00034 genType const & v1, +00035 genType const & v2, +00036 genType const & v3, +00037 genType const & v4, +00038 typename genType::value_type const & s); +00039 +00042 template <typename genType> +00043 genType hermite( +00044 genType const & v1, +00045 genType const & t1, +00046 genType const & v2, +00047 genType const & t2, +00048 typename genType::value_type const & s); +00049 +00052 template <typename genType> +00053 genType cubic( +00054 genType const & v1, +00055 genType const & v2, +00056 genType const & v3, +00057 genType const & v4, +00058 typename genType::value_type const & s); +00059 +00061 }// namespace simplex +00062 }// namespace gtx +00063 }// namespace glm +00064 +00065 #include "simplex.inl" +00066 +00067 namespace glm{using namespace gtx::simplex;} +00068 +00069 #endif//glm_gtx_spline +00070 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2007-01-25 +00005 // Updated : 2009-02-19 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/spline.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_spline +00014 #define glm_gtx_spline +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 #include "../gtx/optimum_pow.hpp" +00019 +00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00021 # pragma message("GLM: GLM_GTX_spline extension included") +00022 #endif +00023 +00024 namespace glm{ +00025 namespace gtx{ +00026 namespace spline +00027 { +00028 using namespace gtx::optimum_pow; +00029 +00032 +00035 template <typename genType> +00036 genType catmullRom( +00037 genType const & v1, +00038 genType const & v2, +00039 genType const & v3, +00040 genType const & v4, +00041 typename genType::value_type const & s); +00042 +00045 template <typename genType> +00046 genType hermite( +00047 genType const & v1, +00048 genType const & t1, +00049 genType const & v2, +00050 genType const & t2, +00051 typename genType::value_type const & s); +00052 +00055 template <typename genType> +00056 genType cubic( +00057 genType const & v1, +00058 genType const & v2, +00059 genType const & v3, +00060 genType const & v4, +00061 typename genType::value_type const & s); +00062 +00064 }//namespace spline +00065 }//namespace gtx +00066 }//namespace glm +00067 +00068 #include "spline.inl" +00069 +00070 namespace glm{using namespace gtx::spline;} +00071 +00072 #endif//glm_gtx_spline +00073 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-06-08 +00005 // Updated : 2008-06-08 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/std_based_type.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_std_based_type +00014 #define glm_gtx_std_based_type +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 #include <cstdlib> +00019 +00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00021 # pragma message("GLM: GLM_GTX_std_based_type extension included") +00022 #endif +00023 +00024 namespace glm{ +00025 namespace gtx{ +00026 namespace std_based_type +00027 { +00028 typedef detail::tvec2<std::size_t> size2; +00029 typedef detail::tvec3<std::size_t> size3; +00030 typedef detail::tvec4<std::size_t> size4; +00031 +00032 typedef detail::tvec2<signed char> scvec2; +00033 typedef detail::tvec3<signed char> scvec3; +00034 typedef detail::tvec4<signed char> scvec4; +00035 +00036 typedef detail::tvec2<unsigned char> ucvec2; +00037 typedef detail::tvec3<unsigned char> ucvec3; +00038 typedef detail::tvec4<unsigned char> ucvec4; +00039 +00040 typedef detail::tvec2<signed short> ssvec2; +00041 typedef detail::tvec3<signed short> ssvec3; +00042 typedef detail::tvec4<signed short> ssvec4; +00043 +00044 typedef detail::tvec2<unsigned short> usvec2; +00045 typedef detail::tvec3<unsigned short> usvec3; +00046 typedef detail::tvec4<unsigned short> usvec4; +00047 +00048 typedef detail::tvec2<signed int> sivec2; +00049 typedef detail::tvec3<signed int> sivec3; +00050 typedef detail::tvec4<signed int> sivec4; +00051 +00052 typedef detail::tvec2<unsigned int> uivec2; +00053 typedef detail::tvec3<unsigned int> uivec3; +00054 typedef detail::tvec4<unsigned int> uivec4; +00055 +00056 typedef detail::tvec2<signed long> slvec2; +00057 typedef detail::tvec3<signed long> slvec3; +00058 typedef detail::tvec4<signed long> slvec4; +00059 +00060 typedef detail::tvec2<unsigned long> ulvec2; +00061 typedef detail::tvec3<unsigned long> ulvec3; +00062 typedef detail::tvec4<unsigned long> ulvec4; +00063 +00064 }//namespace std_based_type +00065 }//namespace gtx +00066 }//namespace glm +00067 +00068 #include "std_based_type.inl" +00069 +00070 namespace glm{using namespace gtx::std_based_type;} +00071 +00072 #endif//glm_gtx_std_based_type +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-04-26 +00005 // Updated : 2010-01-28 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/string_cast.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTC_half_float +00012 // - GLM_GTX_integer +00013 // - GLM_GTX_quaternion +00015 +00016 #ifndef glm_gtx_string_cast +00017 #define glm_gtx_string_cast +00018 +00019 // Dependency: +00020 #include "../glm.hpp" +00021 #include "../gtc/half_float.hpp" +00022 #include "../gtx/integer.hpp" +00023 #include "../gtx/unsigned_int.hpp" +00024 #include "../gtx/quaternion.hpp" +00025 #include <string> +00026 +00027 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00028 # pragma message("GLM: GLM_GTX_string_cast extension included") +00029 #endif +00030 +00031 namespace glm{ +00032 namespace gtx{ +00033 namespace string_cast +00034 { +00035 using namespace gtc::half_float; +00036 using namespace gtx::integer; +00037 using namespace gtx::unsigned_int; +00038 using namespace gtx::quaternion; +00039 +00042 +00045 template <typename genType> +00046 std::string to_string(genType const & x); +00047 +00049 }//namespace string_cast +00050 }//namespace gtx +00051 }//namespace glm +00052 +00053 #include "string_cast.inl" +00054 +00055 namespace glm{using namespace gtx::string_cast;} +00056 +00057 #endif//glm_gtx_string_cast +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2010-02-20 +00005 // Updated : 2010-02-20 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtc/swizzle.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtc_swizzle +00014 #define glm_gtc_swizzle +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 #include "../gtc/type_precision.hpp" +00019 +00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00021 # pragma message("GLM: GLM_GTC_swizzle extension included") +00022 #endif +00023 +00024 namespace glm{ +00025 namespace gtc{ +00026 namespace swizzle +00027 { +00028 using namespace gtc::half_float; +00029 +00030 template <typename T, template <typename> class vecType> +00031 T const & swizzle( +00032 vecType<T> const & v, +00033 comp x); +00034 +00035 template <typename T, template <typename> class vecType> +00036 detail::tvec2<T> const & swizzle( +00037 vecType<T> const & v, +00038 comp x, comp y); +00039 +00040 template <typename T, template <typename> class vecType> +00041 detail::tvec3<T> const & swizzle( +00042 vecType<T> const & v, +00043 comp x, comp y, comp z); +00044 +00045 template <typename T, template <typename> class vecType> +00046 detail::tvec4<T> const & swizzle( +00047 vecType<T> const & v, +00048 comp x, comp y, comp z, comp w); +00049 +00050 template <typename T, template <typename> class vecType> +00051 T & swizzle( +00052 vecType<T> & v, +00053 comp x); +00054 +00055 template <typename T, template <typename> class vecType> +00056 detail::tref2<T> swizzle( +00057 vecType<T> & v, +00058 comp x, comp y); +00059 +00060 template <typename T, template <typename> class vecType> +00061 detail::tref3<T> swizzle( +00062 vecType<T> & v, +00063 comp x, comp y, comp z); +00064 +00065 template <typename T, template <typename> class vecType> +00066 detail::tref4<T> swizzle( +00067 vecType<T> & v, +00068 comp x, comp y, comp z, comp w); +00069 +00070 # define static_swizzle1_const(TYPE, SIZE) \ +00071 template <comp x> \ +00072 GLM_FUNC_QUALIFIER TYPE swizzle(detail::tvec##SIZE<TYPE> const & v) \ +00073 {return v[x];} +00074 +00075 # define static_swizzle1_ref(TYPE, SIZE) \ +00076 template <comp x> \ +00077 GLM_FUNC_QUALIFIER TYPE& swizzle(detail::tvec##SIZE<TYPE> & v) \ +00078 {return v[x];} +00079 +00080 static_swizzle1_ref(detail::float16, 2) +00081 static_swizzle1_ref(detail::float16, 3) +00082 static_swizzle1_ref(detail::float16, 4) +00083 static_swizzle1_ref(detail::float32, 2) +00084 static_swizzle1_ref(detail::float32, 3) +00085 static_swizzle1_ref(detail::float32, 4) +00086 static_swizzle1_ref(detail::float64, 2) +00087 static_swizzle1_ref(detail::float64, 3) +00088 static_swizzle1_ref(detail::float64, 4) +00089 +00090 static_swizzle1_ref(detail::int8, 2) +00091 static_swizzle1_ref(detail::int8, 3) +00092 static_swizzle1_ref(detail::int8, 4) +00093 static_swizzle1_ref(detail::int16, 2) +00094 static_swizzle1_ref(detail::int16, 3) +00095 static_swizzle1_ref(detail::int16, 4) +00096 static_swizzle1_ref(detail::int32, 2) +00097 static_swizzle1_ref(detail::int32, 3) +00098 static_swizzle1_ref(detail::int32, 4) +00099 static_swizzle1_ref(detail::int64, 2) +00100 static_swizzle1_ref(detail::int64, 3) +00101 static_swizzle1_ref(detail::int64, 4) +00102 +00103 static_swizzle1_ref(detail::uint8, 2) +00104 static_swizzle1_ref(detail::uint8, 3) +00105 static_swizzle1_ref(detail::uint8, 4) +00106 static_swizzle1_ref(detail::uint16, 2) +00107 static_swizzle1_ref(detail::uint16, 3) +00108 static_swizzle1_ref(detail::uint16, 4) +00109 static_swizzle1_ref(detail::uint32, 2) +00110 static_swizzle1_ref(detail::uint32, 3) +00111 static_swizzle1_ref(detail::uint32, 4) +00112 static_swizzle1_ref(detail::uint64, 2) +00113 static_swizzle1_ref(detail::uint64, 3) +00114 static_swizzle1_ref(detail::uint64, 4) +00115 /* +00116 # define static_swizzle2_const(TYPE) \ +00117 template <comp x, comp y> \ +00118 GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \ +00119 {return TYPE(v[x], v[y]);} +00120 +00121 # define static_swizzle3_const(TYPE) \ +00122 template <comp x, comp y, comp z> \ +00123 GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \ +00124 {return TYPE(v[x], v[y], v[z]);} +00125 +00126 # define static_swizzle4_const(TYPE) \ +00127 template <comp x, comp y, comp z, comp w> \ +00128 GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \ +00129 {return TYPE(v[x], v[y], v[z], v[w]);} +00130 */ +00131 +00132 # define static_swizzle2_const(TYPE, SIZE) \ +00133 template <comp x, comp y> \ +00134 GLM_FUNC_QUALIFIER detail::tvec2<TYPE> swizzle(detail::tvec##SIZE<TYPE> const & v) \ +00135 {return detail::tvec2<TYPE>(v[x], v[y]);} +00136 +00137 # define static_swizzle3_const(TYPE, SIZE) \ +00138 template <comp x, comp y, comp z> \ +00139 GLM_FUNC_QUALIFIER detail::tvec3<TYPE> swizzle(detail::tvec##SIZE<TYPE> const & v) \ +00140 {return detail::tvec3<TYPE>(v[x], v[y], v[z]);} +00141 +00142 # define static_swizzle4_const(TYPE, SIZE) \ +00143 template <comp x, comp y, comp z, comp w> \ +00144 GLM_FUNC_QUALIFIER detail::tvec4<TYPE> swizzle(detail::tvec##SIZE<TYPE> const & v) \ +00145 {return detail::tvec4<TYPE>(v[x], v[y], v[z], v[w]);} +00146 +00147 +00148 static_swizzle2_const(glm::f16, 2) +00149 static_swizzle2_const(glm::f16, 3) +00150 static_swizzle2_const(glm::f16, 4) +00151 static_swizzle2_const(glm::f32, 2) +00152 static_swizzle2_const(glm::f32, 3) +00153 static_swizzle2_const(glm::f32, 4) +00154 static_swizzle2_const(glm::f64, 2) +00155 static_swizzle2_const(glm::f64, 3) +00156 static_swizzle2_const(glm::f64, 4) +00157 +00158 static_swizzle2_const(glm::i8, 2) +00159 static_swizzle2_const(glm::i8, 3) +00160 static_swizzle2_const(glm::i8, 4) +00161 static_swizzle2_const(glm::i16, 2) +00162 static_swizzle2_const(glm::i16, 3) +00163 static_swizzle2_const(glm::i16, 4) +00164 static_swizzle2_const(glm::i32, 2) +00165 static_swizzle2_const(glm::i32, 3) +00166 static_swizzle2_const(glm::i32, 4) +00167 static_swizzle2_const(glm::i64, 2) +00168 static_swizzle2_const(glm::i64, 3) +00169 static_swizzle2_const(glm::i64, 4) +00170 +00171 static_swizzle2_const(glm::u8, 2) +00172 static_swizzle2_const(glm::u8, 3) +00173 static_swizzle2_const(glm::u8, 4) +00174 static_swizzle2_const(glm::u16, 2) +00175 static_swizzle2_const(glm::u16, 3) +00176 static_swizzle2_const(glm::u16, 4) +00177 static_swizzle2_const(glm::u32, 2) +00178 static_swizzle2_const(glm::u32, 3) +00179 static_swizzle2_const(glm::u32, 4) +00180 static_swizzle2_const(glm::u64, 2) +00181 static_swizzle2_const(glm::u64, 3) +00182 static_swizzle2_const(glm::u64, 4) +00183 +00184 static_swizzle3_const(glm::f16, 2) +00185 static_swizzle3_const(glm::f16, 3) +00186 static_swizzle3_const(glm::f16, 4) +00187 static_swizzle3_const(glm::f32, 2) +00188 static_swizzle3_const(glm::f32, 3) +00189 static_swizzle3_const(glm::f32, 4) +00190 static_swizzle3_const(glm::f64, 2) +00191 static_swizzle3_const(glm::f64, 3) +00192 static_swizzle3_const(glm::f64, 4) +00193 +00194 static_swizzle3_const(glm::i8, 2) +00195 static_swizzle3_const(glm::i8, 3) +00196 static_swizzle3_const(glm::i8, 4) +00197 static_swizzle3_const(glm::i16, 2) +00198 static_swizzle3_const(glm::i16, 3) +00199 static_swizzle3_const(glm::i16, 4) +00200 static_swizzle3_const(glm::i32, 2) +00201 static_swizzle3_const(glm::i32, 3) +00202 static_swizzle3_const(glm::i32, 4) +00203 static_swizzle3_const(glm::i64, 2) +00204 static_swizzle3_const(glm::i64, 3) +00205 static_swizzle3_const(glm::i64, 4) +00206 +00207 static_swizzle3_const(glm::u8, 2) +00208 static_swizzle3_const(glm::u8, 3) +00209 static_swizzle3_const(glm::u8, 4) +00210 static_swizzle3_const(glm::u16, 2) +00211 static_swizzle3_const(glm::u16, 3) +00212 static_swizzle3_const(glm::u16, 4) +00213 static_swizzle3_const(glm::u32, 2) +00214 static_swizzle3_const(glm::u32, 3) +00215 static_swizzle3_const(glm::u32, 4) +00216 static_swizzle3_const(glm::u64, 2) +00217 static_swizzle3_const(glm::u64, 3) +00218 static_swizzle3_const(glm::u64, 4) +00219 +00220 static_swizzle4_const(glm::f16, 2) +00221 static_swizzle4_const(glm::f16, 3) +00222 static_swizzle4_const(glm::f16, 4) +00223 static_swizzle4_const(glm::f32, 2) +00224 static_swizzle4_const(glm::f32, 3) +00225 static_swizzle4_const(glm::f32, 4) +00226 static_swizzle4_const(glm::f64, 2) +00227 static_swizzle4_const(glm::f64, 3) +00228 static_swizzle4_const(glm::f64, 4) +00229 +00230 static_swizzle4_const(glm::i8, 2) +00231 static_swizzle4_const(glm::i8, 3) +00232 static_swizzle4_const(glm::i8, 4) +00233 static_swizzle4_const(glm::i16, 2) +00234 static_swizzle4_const(glm::i16, 3) +00235 static_swizzle4_const(glm::i16, 4) +00236 static_swizzle4_const(glm::i32, 2) +00237 static_swizzle4_const(glm::i32, 3) +00238 static_swizzle4_const(glm::i32, 4) +00239 static_swizzle4_const(glm::i64, 2) +00240 static_swizzle4_const(glm::i64, 3) +00241 static_swizzle4_const(glm::i64, 4) +00242 +00243 static_swizzle4_const(glm::u8, 2) +00244 static_swizzle4_const(glm::u8, 3) +00245 static_swizzle4_const(glm::u8, 4) +00246 static_swizzle4_const(glm::u16, 2) +00247 static_swizzle4_const(glm::u16, 3) +00248 static_swizzle4_const(glm::u16, 4) +00249 static_swizzle4_const(glm::u32, 2) +00250 static_swizzle4_const(glm::u32, 3) +00251 static_swizzle4_const(glm::u32, 4) +00252 static_swizzle4_const(glm::u64, 2) +00253 static_swizzle4_const(glm::u64, 3) +00254 static_swizzle4_const(glm::u64, 4) +00255 +00256 # define static_swizzle2_ref(TYPE, SIZE) \ +00257 template <glm::comp x, glm::comp y> \ +00258 GLM_FUNC_QUALIFIER glm::detail::tref2<TYPE> swizzle(detail::tvec##SIZE<TYPE> & v) \ +00259 {return glm::detail::tref2<TYPE>(v[x], v[y]);} +00260 +00261 # define static_swizzle3_ref(TYPE, SIZE) \ +00262 template <glm::comp x, glm::comp y, glm::comp z> \ +00263 GLM_FUNC_QUALIFIER glm::detail::tref3<TYPE> swizzle(detail::tvec##SIZE<TYPE> & v) \ +00264 {return glm::detail::tref3<TYPE>(v[x], v[y], v[z]);} +00265 +00266 # define static_swizzle4_ref(TYPE, SIZE) \ +00267 template <glm::comp x, glm::comp y, glm::comp z, glm::comp w> \ +00268 GLM_FUNC_QUALIFIER glm::detail::tref4<TYPE> swizzle(detail::tvec##SIZE<TYPE> & v) \ +00269 {return glm::detail::tref4<TYPE>(v[x], v[y], v[z], v[w]);} +00270 +00271 static_swizzle2_ref(glm::f16, 2) +00272 static_swizzle2_ref(glm::f16, 3) +00273 static_swizzle2_ref(glm::f16, 4) +00274 static_swizzle2_ref(glm::f32, 2) +00275 static_swizzle2_ref(glm::f32, 3) +00276 static_swizzle2_ref(glm::f32, 4) +00277 static_swizzle2_ref(glm::f64, 2) +00278 static_swizzle2_ref(glm::f64, 3) +00279 static_swizzle2_ref(glm::f64, 4) +00280 +00281 static_swizzle2_ref(glm::i8, 2) +00282 static_swizzle2_ref(glm::i8, 3) +00283 static_swizzle2_ref(glm::i8, 4) +00284 static_swizzle2_ref(glm::i16, 2) +00285 static_swizzle2_ref(glm::i16, 3) +00286 static_swizzle2_ref(glm::i16, 4) +00287 static_swizzle2_ref(glm::i32, 2) +00288 static_swizzle2_ref(glm::i32, 3) +00289 static_swizzle2_ref(glm::i32, 4) +00290 static_swizzle2_ref(glm::i64, 2) +00291 static_swizzle2_ref(glm::i64, 3) +00292 static_swizzle2_ref(glm::i64, 4) +00293 +00294 static_swizzle2_ref(glm::u8, 2) +00295 static_swizzle2_ref(glm::u8, 3) +00296 static_swizzle2_ref(glm::u8, 4) +00297 static_swizzle2_ref(glm::u16, 2) +00298 static_swizzle2_ref(glm::u16, 3) +00299 static_swizzle2_ref(glm::u16, 4) +00300 static_swizzle2_ref(glm::u32, 2) +00301 static_swizzle2_ref(glm::u32, 3) +00302 static_swizzle2_ref(glm::u32, 4) +00303 static_swizzle2_ref(glm::u64, 2) +00304 static_swizzle2_ref(glm::u64, 3) +00305 static_swizzle2_ref(glm::u64, 4) +00306 +00307 static_swizzle3_ref(glm::f16, 3) +00308 static_swizzle3_ref(glm::f16, 4) +00309 static_swizzle3_ref(glm::f32, 3) +00310 static_swizzle3_ref(glm::f32, 4) +00311 static_swizzle3_ref(glm::f64, 3) +00312 static_swizzle3_ref(glm::f64, 4) +00313 +00314 static_swizzle3_ref(glm::i8, 3) +00315 static_swizzle3_ref(glm::i8, 4) +00316 static_swizzle3_ref(glm::i16, 3) +00317 static_swizzle3_ref(glm::i16, 4) +00318 static_swizzle3_ref(glm::i32, 3) +00319 static_swizzle3_ref(glm::i32, 4) +00320 static_swizzle3_ref(glm::i64, 3) +00321 static_swizzle3_ref(glm::i64, 4) +00322 +00323 static_swizzle3_ref(glm::u8, 3) +00324 static_swizzle3_ref(glm::u8, 4) +00325 static_swizzle3_ref(glm::u16, 3) +00326 static_swizzle3_ref(glm::u16, 4) +00327 static_swizzle3_ref(glm::u32, 3) +00328 static_swizzle3_ref(glm::u32, 4) +00329 static_swizzle3_ref(glm::u64, 3) +00330 static_swizzle3_ref(glm::u64, 4) +00331 +00332 static_swizzle4_ref(glm::f16, 4) +00333 static_swizzle4_ref(glm::f32, 4) +00334 static_swizzle4_ref(glm::f64, 4) +00335 +00336 static_swizzle4_ref(glm::i8, 4) +00337 static_swizzle4_ref(glm::i16, 4) +00338 static_swizzle4_ref(glm::i32, 4) +00339 static_swizzle4_ref(glm::i64, 4) +00340 +00341 static_swizzle4_ref(glm::u8, 4) +00342 static_swizzle4_ref(glm::u16, 4) +00343 static_swizzle4_ref(glm::u32, 4) +00344 static_swizzle4_ref(glm::u64, 4) +00345 +00346 }//namespace swizzle +00347 }//namespace gtc +00348 }//namespace glm +00349 +00350 #include "swizzle.inl" +00351 +00352 namespace glm{using namespace gtc::swizzle;} +00353 +00354 #endif//glm_gtc_swizzle +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-21 +00005 // Updated : 2009-04-29 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/transform.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTC_matric_transform +00013 +00014 #ifndef glm_gtx_transform +00015 #define glm_gtx_transform +00016 +00017 // Dependency: +00018 #include "../glm.hpp" +00019 #include "../gtc/matrix_transform.hpp" +00020 +00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00022 # pragma message("GLM: GLM_GTX_transform extension included") +00023 #endif +00024 +00025 namespace glm{ +00026 namespace gtx{ +00027 namespace transform +00028 { +00029 using namespace gtc::matrix_transform; +00030 +00033 +00036 template <typename T> +00037 detail::tmat4x4<T> translate( +00038 T x, T y, T z); +00039 +00042 template <typename T> +00043 detail::tmat4x4<T> translate( +00044 detail::tmat4x4<T> const & m, +00045 T x, T y, T z); +00046 +00049 template <typename T> +00050 detail::tmat4x4<T> translate( +00051 detail::tvec3<T> const & v); +00052 +00055 template <typename T> +00056 detail::tmat4x4<T> rotate( +00057 T angle, +00058 T x, T y, T z); +00059 +00062 template <typename T> +00063 detail::tmat4x4<T> rotate( +00064 T angle, +00065 detail::tvec3<T> const & v); +00066 +00069 template <typename T> +00070 detail::tmat4x4<T> rotate( +00071 detail::tmat4x4<T> const & m, +00072 T angle, +00073 T x, T y, T z); +00074 +00077 template <typename T> +00078 detail::tmat4x4<T> scale( +00079 T x, T y, T z); +00080 +00083 template <typename T> +00084 detail::tmat4x4<T> scale( +00085 detail::tmat4x4<T> const & m, +00086 T x, T y, T z); +00087 +00090 template <typename T> +00091 detail::tmat4x4<T> scale( +00092 detail::tvec3<T> const & v); +00093 +00095 }//namespace transform +00096 }//namespace gtx +00097 }//namespace glm +00098 +00099 #include "transform.inl" +00100 +00101 namespace glm{using namespace gtx::transform;} +00102 +00103 #endif//glm_gtx_transform +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-21 +00005 // Updated : 2006-11-13 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/transform2.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTX_transform +00013 +00014 #ifndef glm_gtx_transform2 +00015 #define glm_gtx_transform2 +00016 +00017 // Dependency: +00018 #include "../glm.hpp" +00019 #include "../gtx/transform.hpp" +00020 +00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00022 # pragma message("GLM: GLM_GTX_transform2 extension included") +00023 #endif +00024 +00025 namespace glm{ +00026 namespace gtx{ +00027 namespace transform2 +00028 { +00029 using namespace gtx::transform; +00030 +00033 +00036 template <typename T> +00037 detail::tmat3x3<T> shearX2D( +00038 detail::tmat3x3<T> const & m, +00039 T y); +00040 +00043 template <typename T> +00044 detail::tmat3x3<T> shearY2D( +00045 detail::tmat3x3<T> const & m, +00046 T x); +00047 +00050 template <typename T> +00051 detail::tmat4x4<T> shearX3D( +00052 const detail::tmat4x4<T> & m, +00053 T y, +00054 T z); +00055 +00058 template <typename T> +00059 detail::tmat4x4<T> shearY3D( +00060 const detail::tmat4x4<T> & m, +00061 T x, +00062 T z); +00063 +00066 template <typename T> +00067 detail::tmat4x4<T> shearZ3D( +00068 const detail::tmat4x4<T> & m, +00069 T x, +00070 T y); +00071 +00072 //template <typename T> GLM_FUNC_QUALIFIER detail::tmat4x4<T> shear(const detail::tmat4x4<T> & m, shearPlane, planePoint, angle) +00073 // Identity + tan(angle) * cross(Normal, OnPlaneVector) 0 +00074 // - dot(PointOnPlane, normal) * OnPlaneVector 1 +00075 +00076 // Reflect functions seem to don't work +00077 //template <typename T> detail::tmat3x3<T> reflect2D(const detail::tmat3x3<T> & m, const detail::tvec3<T>& normal){return reflect2DGTX(m, normal);} //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension) +00078 //template <typename T> detail::tmat4x4<T> reflect3D(const detail::tmat4x4<T> & m, const detail::tvec3<T>& normal){return reflect3DGTX(m, normal);} //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension) +00079 +00082 template <typename T> +00083 detail::tmat3x3<T> proj2D( +00084 const detail::tmat3x3<T> & m, +00085 const detail::tvec3<T>& normal); +00086 +00089 template <typename T> +00090 detail::tmat4x4<T> proj3D( +00091 const detail::tmat4x4<T> & m, +00092 const detail::tvec3<T>& normal); +00093 +00096 template <typename valType> +00097 detail::tmat4x4<valType> scaleBias( +00098 valType scale, +00099 valType bias); +00100 +00103 template <typename valType> +00104 detail::tmat4x4<valType> scaleBias( +00105 detail::tmat4x4<valType> const & m, +00106 valType scale, +00107 valType bias); +00108 +00110 }// namespace transform2 +00111 }// namespace gtx +00112 }// namespace glm +00113 +00114 #include "transform2.inl" +00115 +00116 namespace glm{using namespace gtx::transform2;} +00117 +00118 #endif//glm_gtx_transform2 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-01-08 +00005 // Updated : 2008-01-08 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type.hpp +00009 +00010 #ifndef glm_core_type +00011 #define glm_core_type +00012 +00013 #include "type_half.hpp" +00014 #include "type_float.hpp" +00015 #include "type_int.hpp" +00016 +00017 #include "type_gentype.hpp" +00018 +00019 #include "type_vec1.hpp" +00020 #include "type_vec2.hpp" +00021 #include "type_vec3.hpp" +00022 #include "type_vec4.hpp" +00023 +00024 #include "type_mat2x2.hpp" +00025 #include "type_mat2x3.hpp" +00026 #include "type_mat2x4.hpp" +00027 #include "type_mat3x2.hpp" +00028 #include "type_mat3x3.hpp" +00029 #include "type_mat3x4.hpp" +00030 #include "type_mat4x2.hpp" +00031 #include "type_mat4x3.hpp" +00032 #include "type_mat4x4.hpp" +00033 +00034 namespace glm{ +00035 namespace core{ +00036 namespace type +00037 { +00039 // Float definition +00040 +00041 #if(defined(GLM_PRECISION_HIGHP_FLOAT)) +00042 typedef precision::highp_vec2 vec2; +00043 typedef precision::highp_vec3 vec3; +00044 typedef precision::highp_vec4 vec4; +00045 typedef precision::highp_mat2x2 mat2x2; +00046 typedef precision::highp_mat2x3 mat2x3; +00047 typedef precision::highp_mat2x4 mat2x4; +00048 typedef precision::highp_mat3x2 mat3x2; +00049 typedef precision::highp_mat3x3 mat3x3; +00050 typedef precision::highp_mat3x4 mat3x4; +00051 typedef precision::highp_mat4x2 mat4x2; +00052 typedef precision::highp_mat4x3 mat4x3; +00053 typedef precision::highp_mat4x4 mat4x4; +00054 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT)) +00055 typedef precision::mediump_vec2 vec2; +00056 typedef precision::mediump_vec3 vec3; +00057 typedef precision::mediump_vec4 vec4; +00058 typedef precision::mediump_mat2x2 mat2x2; +00059 typedef precision::mediump_mat2x3 mat2x3; +00060 typedef precision::mediump_mat2x4 mat2x4; +00061 typedef precision::mediump_mat3x2 mat3x2; +00062 typedef precision::mediump_mat3x3 mat3x3; +00063 typedef precision::mediump_mat3x4 mat3x4; +00064 typedef precision::mediump_mat4x2 mat4x2; +00065 typedef precision::mediump_mat4x3 mat4x3; +00066 typedef precision::mediump_mat4x4 mat4x4; +00067 #elif(defined(GLM_PRECISION_LOWP_FLOAT)) +00068 typedef precision::lowp_vec2 vec2; +00069 typedef precision::lowp_vec3 vec3; +00070 typedef precision::lowp_vec4 vec4; +00071 typedef precision::lowp_mat2x2 mat2x2; +00072 typedef precision::lowp_mat2x3 mat2x3; +00073 typedef precision::lowp_mat2x4 mat2x4; +00074 typedef precision::lowp_mat3x2 mat3x2; +00075 typedef precision::lowp_mat3x3 mat3x3; +00076 typedef precision::lowp_mat3x4 mat3x4; +00077 typedef precision::lowp_mat4x2 mat4x2; +00078 typedef precision::lowp_mat4x3 mat4x3; +00079 typedef precision::lowp_mat4x4 mat4x4; +00080 #else +00081 +00082 +00083 +00084 typedef precision::mediump_vec2 vec2; +00085 +00089 typedef precision::mediump_vec3 vec3; +00090 +00094 typedef precision::mediump_vec4 vec4; +00095 +00099 typedef precision::mediump_mat2x2 mat2x2; +00100 +00104 typedef precision::mediump_mat2x3 mat2x3; +00105 +00109 typedef precision::mediump_mat2x4 mat2x4; +00110 +00114 typedef precision::mediump_mat3x2 mat3x2; +00115 +00119 typedef precision::mediump_mat3x3 mat3x3; +00120 +00124 typedef precision::mediump_mat3x4 mat3x4; +00125 +00129 typedef precision::mediump_mat4x2 mat4x2; +00130 +00134 typedef precision::mediump_mat4x3 mat4x3; +00135 +00139 typedef precision::mediump_mat4x4 mat4x4; +00140 +00141 #endif//GLM_PRECISION +00142 +00146 typedef mat2x2 mat2; +00147 +00151 typedef mat3x3 mat3; +00152 +00156 typedef mat4x4 mat4; +00157 +00159 // Signed integer definition +00160 +00161 #if(defined(GLM_PRECISION_HIGHP_INT)) +00162 typedef precision::highp_ivec2 ivec2; +00163 typedef precision::highp_ivec3 ivec3; +00164 typedef precision::highp_ivec4 ivec4; +00165 #elif(defined(GLM_PRECISION_MEDIUMP_INT)) +00166 typedef precision::mediump_ivec2 ivec2; +00167 typedef precision::mediump_ivec3 ivec3; +00168 typedef precision::mediump_ivec4 ivec4; +00169 #elif(defined(GLM_PRECISION_LOWP_INT)) +00170 typedef precision::lowp_ivec2 ivec2; +00171 typedef precision::lowp_ivec3 ivec3; +00172 typedef precision::lowp_ivec4 ivec4; +00173 #else +00174 +00175 +00176 +00177 typedef precision::mediump_ivec2 ivec2; +00178 +00182 typedef precision::mediump_ivec3 ivec3; +00183 +00187 typedef precision::mediump_ivec4 ivec4; +00188 #endif//GLM_PRECISION +00189 +00191 // Unsigned integer definition +00192 +00193 #if(defined(GLM_PRECISION_HIGHP_UINT)) +00194 typedef precision::highp_uvec2 uvec2; +00195 typedef precision::highp_uvec3 uvec3; +00196 typedef precision::highp_uvec4 uvec4; +00197 #elif(defined(GLM_PRECISION_MEDIUMP_UINT)) +00198 typedef precision::mediump_uvec2 uvec2; +00199 typedef precision::mediump_uvec3 uvec3; +00200 typedef precision::mediump_uvec4 uvec4; +00201 #elif(defined(GLM_PRECISION_LOWP_UINT)) +00202 typedef precision::lowp_uvec2 uvec2; +00203 typedef precision::lowp_uvec3 uvec3; +00204 typedef precision::lowp_uvec4 uvec4; +00205 #else +00206 +00207 +00208 +00209 typedef precision::mediump_uvec2 uvec2; +00210 +00214 typedef precision::mediump_uvec3 uvec3; +00215 +00219 typedef precision::mediump_uvec4 uvec4; +00220 #endif//GLM_PRECISION +00221 +00223 // Boolean definition +00224 +00228 typedef detail::tvec2<bool> bvec2; +00229 +00233 typedef detail::tvec3<bool> bvec3; +00234 +00238 typedef detail::tvec4<bool> bvec4; +00239 +00241 // Double definition +00242 +00246 typedef detail::tvec2<double> dvec2; +00247 +00251 typedef detail::tvec3<double> dvec3; +00252 +00256 typedef detail::tvec4<double> dvec4; +00257 +00261 typedef detail::tmat2x2<double> dmat2; +00262 +00266 typedef detail::tmat3x3<double> dmat3; +00267 +00271 typedef detail::tmat4x4<double> dmat4; +00272 +00276 typedef detail::tmat2x2<double> dmat2x2; +00277 +00281 typedef detail::tmat2x3<double> dmat2x3; +00282 +00286 typedef detail::tmat2x4<double> dmat2x4; +00287 +00291 typedef detail::tmat3x2<double> dmat3x2; +00292 +00296 typedef detail::tmat3x3<double> dmat3x3; +00297 +00301 typedef detail::tmat3x4<double> dmat3x4; +00302 +00306 typedef detail::tmat4x2<double> dmat4x2; +00307 +00311 typedef detail::tmat4x3<double> dmat4x3; +00312 +00316 typedef detail::tmat4x4<double> dmat4x4; +00317 +00318 }//namespace type +00319 }//namespace core +00320 }//namespace glm +00321 +00322 #endif//glm_core_type +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-08-22 +00005 // Updated : 2010-02-08 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_float.hpp +00009 +00010 #ifndef glm_core_type_float +00011 #define glm_core_type_float +00012 +00013 #include "type_half.hpp" +00014 #include "setup.hpp" +00015 +00016 namespace glm +00017 { +00018 namespace detail +00019 { +00020 GLM_DETAIL_IS_FLOAT(detail::thalf); +00021 GLM_DETAIL_IS_FLOAT(float); +00022 GLM_DETAIL_IS_FLOAT(double); +00023 GLM_DETAIL_IS_FLOAT(long double); +00024 } +00025 //namespace detail +00026 +00027 namespace core{ +00028 namespace type{ +00029 +00030 namespace precision +00031 { +00032 #ifdef GLM_USE_HALF_SCALAR +00033 typedef detail::thalf lowp_float_t; +00034 #else//GLM_USE_HALF_SCALAR +00035 typedef float lowp_float_t; +00036 #endif//GLM_USE_HALF_SCALAR +00037 typedef float mediump_float_t; +00038 typedef double highp_float_t; +00039 +00044 typedef lowp_float_t lowp_float; +00049 typedef mediump_float_t mediump_float; +00054 typedef highp_float_t highp_float; +00055 } +00056 //namespace precision +00057 +00058 #if(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT)) +00059 typedef precision::mediump_float float_t; +00060 #elif(defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT)) +00061 typedef precision::highp_float float_t; +00062 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT)) +00063 typedef precision::mediump_float float_t; +00064 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && defined(GLM_PRECISION_LOWP_FLOAT)) +00065 typedef precision::lowp_float float_t; +00066 #else +00067 # error "GLM error: multiple default precision requested for floating-point types" +00068 #endif +00069 +00070 }//namespace type +00071 }//namespace core +00072 }//namespace glm +00073 +00074 #endif//glm_core_type_float +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-10-05 +00005 // Updated : 2010-01-26 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_gentype.hpp +00009 +00010 #ifndef glm_core_type_gentype +00011 #define glm_core_type_gentype +00012 +00013 #include "type_size.hpp" +00014 +00015 namespace glm +00016 { +00017 enum profile +00018 { +00019 nice, +00020 fast, +00021 simd +00022 }; +00023 +00024 namespace detail +00025 { +00026 template +00027 < +00028 typename VALTYPE, +00029 template <typename> class TYPE +00030 > +00031 struct genType +00032 { +00033 public: +00034 enum ctor{null}; +00035 +00036 typedef VALTYPE value_type; +00037 typedef VALTYPE & value_reference; +00038 typedef VALTYPE * value_pointer; +00039 typedef VALTYPE const * value_const_pointer; +00040 typedef TYPE<bool> bool_type; +00041 +00042 typedef sizeType size_type; +00043 static bool is_vector(); +00044 static bool is_matrix(); +00045 +00046 typedef TYPE<VALTYPE> type; +00047 typedef TYPE<VALTYPE> * pointer; +00048 typedef TYPE<VALTYPE> const * const_pointer; +00049 typedef TYPE<VALTYPE> const * const const_pointer_const; +00050 typedef TYPE<VALTYPE> * const pointer_const; +00051 typedef TYPE<VALTYPE> & reference; +00052 typedef TYPE<VALTYPE> const & const_reference; +00053 typedef TYPE<VALTYPE> const & param_type; +00054 +00056 // Address (Implementation details) +00057 +00058 value_const_pointer value_address() const{return value_pointer(this);} +00059 value_pointer value_address(){return value_pointer(this);} +00060 +00061 //protected: +00062 // enum kind +00063 // { +00064 // GEN_TYPE, +00065 // VEC_TYPE, +00066 // MAT_TYPE +00067 // }; +00068 +00069 // typedef typename TYPE::kind kind; +00070 }; +00071 +00072 template +00073 < +00074 typename VALTYPE, +00075 template <typename> class TYPE +00076 > +00077 bool genType<VALTYPE, TYPE>::is_vector() +00078 { +00079 return true; +00080 } +00081 /* +00082 template <typename valTypeT, unsigned int colT, unsigned int rowT, profile proT = nice> +00083 class base +00084 { +00085 public: +00087 // Traits +00088 +00089 typedef sizeType size_type; +00090 typedef valTypeT value_type; +00091 +00092 typedef base<value_type, colT, rowT> class_type; +00093 +00094 typedef base<bool, colT, rowT> bool_type; +00095 typedef base<value_type, rowT, 1> col_type; +00096 typedef base<value_type, colT, 1> row_type; +00097 typedef base<value_type, rowT, colT> transpose_type; +00098 +00099 static size_type col_size(); +00100 static size_type row_size(); +00101 static size_type value_size(); +00102 static bool is_scalar(); +00103 static bool is_vector(); +00104 static bool is_matrix(); +00105 +00106 private: +00107 // Data +00108 col_type value[colT]; +00109 +00110 public: +00112 // Constructors +00113 base(); +00114 base(class_type const & m); +00115 +00116 explicit base(value_type const & x); +00117 explicit base(value_type const * const x); +00118 explicit base(col_type const * const x); +00119 +00121 // Conversions +00122 template <typename vU, uint cU, uint rU, profile pU> +00123 explicit base(base<vU, cU, rU, pU> const & m); +00124 +00126 // Accesses +00127 col_type& operator[](size_type i); +00128 col_type const & operator[](size_type i) const; +00129 +00131 // Unary updatable operators +00132 class_type& operator= (class_type const & x); +00133 class_type& operator+= (value_type const & x); +00134 class_type& operator+= (class_type const & x); +00135 class_type& operator-= (value_type const & x); +00136 class_type& operator-= (class_type const & x); +00137 class_type& operator*= (value_type const & x); +00138 class_type& operator*= (class_type const & x); +00139 class_type& operator/= (value_type const & x); +00140 class_type& operator/= (class_type const & x); +00141 class_type& operator++ (); +00142 class_type& operator-- (); +00143 }; +00144 */ +00145 }//namespace detail +00146 }//namespace glm +00147 +00148 //#include "type_gentype.inl" +00149 +00150 #endif//glm_core_type_gentype +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-08-17 +00005 // Updated : 2010-02-17 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_half.hpp +00009 +00010 #ifndef glm_core_type_half +00011 #define glm_core_type_half +00012 +00013 #include <cstdlib> +00014 +00015 namespace glm{ +00016 namespace detail +00017 { +00018 typedef short hdata; +00019 +00020 float toFloat32(hdata value); +00021 hdata toFloat16(float const & value); +00022 +00025 class thalf +00026 { +00027 public: +00028 // Constructors +00029 GLM_FUNC_DECL thalf(); +00030 GLM_FUNC_DECL thalf(thalf const & s); +00031 +00032 template <typename U> +00033 GLM_FUNC_DECL explicit thalf(U const & s); +00034 +00035 // Cast +00036 //operator float(); +00037 GLM_FUNC_DECL operator float() const; +00038 //operator double(); +00039 //operator double() const; +00040 +00041 // Unary updatable operators +00042 GLM_FUNC_DECL thalf& operator= (thalf const & s); +00043 GLM_FUNC_DECL thalf& operator+=(thalf const & s); +00044 GLM_FUNC_DECL thalf& operator-=(thalf const & s); +00045 GLM_FUNC_DECL thalf& operator*=(thalf const & s); +00046 GLM_FUNC_DECL thalf& operator/=(thalf const & s); +00047 GLM_FUNC_DECL thalf& operator++(); +00048 GLM_FUNC_DECL thalf& operator--(); +00049 +00050 GLM_FUNC_DECL float toFloat() const{return toFloat32(data);} +00051 +00052 GLM_FUNC_DECL hdata _data() const{return data;} +00053 +00054 private: +00055 hdata data; +00056 }; +00057 +00058 thalf operator+ (thalf const & s1, thalf const & s2); +00059 +00060 thalf operator- (thalf const & s1, thalf const & s2); +00061 +00062 thalf operator* (thalf const & s1, thalf const & s2); +00063 +00064 thalf operator/ (thalf const & s1, thalf const & s2); +00065 +00066 // Unary constant operators +00067 thalf operator- (thalf const & s); +00068 +00069 thalf operator-- (thalf const & s, int); +00070 +00071 thalf operator++ (thalf const & s, int); +00072 +00073 }//namespace detail +00074 }//namespace glm +00075 +00076 #include "type_half.inl" +00077 +00078 #endif//glm_core_type_half +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-08-22 +00005 // Updated : 2008-09-17 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_int.hpp +00009 +00010 #ifndef glm_core_type_int +00011 #define glm_core_type_int +00012 +00013 #include "setup.hpp" +00014 #include "_detail.hpp" +00015 +00016 namespace glm{ +00017 namespace detail +00018 { +00019 typedef signed short lowp_int_t; +00020 typedef signed int mediump_int_t; +00021 typedef sint64 highp_int_t; +00022 +00023 typedef unsigned short lowp_uint_t; +00024 typedef unsigned int mediump_uint_t; +00025 typedef uint64 highp_uint_t; +00026 +00027 GLM_DETAIL_IS_INT(signed char); +00028 GLM_DETAIL_IS_INT(signed short); +00029 GLM_DETAIL_IS_INT(signed int); +00030 GLM_DETAIL_IS_INT(signed long); +00031 GLM_DETAIL_IS_INT(highp_int_t); +00032 +00033 GLM_DETAIL_IS_UINT(unsigned char); +00034 GLM_DETAIL_IS_UINT(unsigned short); +00035 GLM_DETAIL_IS_UINT(unsigned int); +00036 GLM_DETAIL_IS_UINT(unsigned long); +00037 GLM_DETAIL_IS_UINT(highp_uint_t); +00038 }//namespace detail +00039 +00040 namespace core{ +00041 namespace type{ +00042 namespace precision +00043 { +00048 typedef detail::lowp_int_t lowp_int; +00053 typedef detail::mediump_int_t mediump_int; +00058 typedef detail::highp_int_t highp_int; +00059 +00064 typedef detail::lowp_uint_t lowp_uint; +00069 typedef detail::mediump_uint_t mediump_uint; +00074 typedef detail::highp_uint_t highp_uint; +00075 }//namespace precision +00076 +00077 #if(!defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT)) +00078 typedef precision::mediump_int int_t; +00079 #elif(defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT)) +00080 typedef precision::highp_int int_t; +00081 #elif(!defined(GLM_PRECISION_HIGHP_INT) && defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT)) +00082 typedef precision::mediump_int int_t; +00083 #elif(!defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && defined(GLM_PRECISION_LOWP_INT)) +00084 typedef precision::lowp_int int_t; +00085 #else +00086 # error "GLM error: multiple default precision requested for signed interger types" +00087 #endif +00088 +00089 #if(!defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT)) +00090 typedef precision::mediump_uint uint_t; +00091 #elif(defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT)) +00092 typedef precision::highp_uint uint_t; +00093 #elif(!defined(GLM_PRECISION_HIGHP_UINT) && defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT)) +00094 typedef precision::mediump_uint uint_t; +00095 #elif(!defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && defined(GLM_PRECISION_LOWP_UINT)) +00096 typedef precision::lowp_uint uint_t; +00097 #else +00098 # error "GLM error: multiple default precision requested for unsigned interger types" +00099 #endif +00100 +00103 typedef uint_t uint; +00104 +00105 }//namespace type +00106 }//namespace core +00107 }//namespace glm +00108 +00109 #endif//glm_core_type_int +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2010-01-26 +00005 // Updated : 2010-01-26 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_mat.hpp +00009 +00010 #ifndef glm_core_type_mat +00011 #define glm_core_type_mat +00012 +00013 #include "type_gentype.hpp" +00014 +00015 namespace glm{ +00016 namespace detail +00017 { +00018 //template +00019 //< +00020 // typename T, +00021 // template <typename> class C, +00022 // template <typename> class R +00023 //> +00024 //struct matType +00025 //{ +00026 // enum ctor{null}; +00027 // typedef T value_type; +00028 // typedef std::size_t size_type; +00029 // typedef C<T> col_type; +00030 // typedef R<T> row_type; +00031 // static size_type const col_size; +00032 // static size_type const row_size; +00033 //}; +00034 +00035 //template +00036 //< +00037 // typename T, +00038 // template <typename> class C, +00039 // template <typename> class R +00040 //> +00041 //typename matType<T, C, R>::size_type const +00042 //matType<T, C, R>::col_size = matType<T, C, R>::col_type::value_size; +00043 +00044 //template +00045 //< +00046 // typename T, +00047 // template <typename> class C, +00048 // template <typename> class R +00049 //> +00050 //typename matType<T, C, R>::size_type const +00051 //matType<T, C, R>::row_size = matType<T, C, R>::row_type::value_size; +00052 +00053 }//namespace detail +00054 }//namespace glm +00055 +00056 #endif//glm_core_type_mat +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-01-27 +00005 // Updated : 2010-02-11 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_mat2x2.hpp +00009 +00010 #ifndef glm_core_type_mat2x2 +00011 #define glm_core_type_mat2x2 +00012 +00013 #include "type_mat.hpp" +00014 +00015 namespace glm{ +00016 namespace detail +00017 { +00018 template <typename T> struct tvec1; +00019 template <typename T> struct tvec2; +00020 template <typename T> struct tvec3; +00021 template <typename T> struct tvec4; +00022 template <typename T> struct tmat2x2; +00023 template <typename T> struct tmat2x3; +00024 template <typename T> struct tmat2x4; +00025 template <typename T> struct tmat3x2; +00026 template <typename T> struct tmat3x3; +00027 template <typename T> struct tmat3x4; +00028 template <typename T> struct tmat4x2; +00029 template <typename T> struct tmat4x3; +00030 template <typename T> struct tmat4x4; +00031 +00034 template <typename T> +00035 struct tmat2x2 +00036 { +00037 enum ctor{null}; +00038 typedef T value_type; +00039 typedef std::size_t size_type; +00040 typedef tvec2<T> col_type; +00041 typedef tvec2<T> row_type; +00042 static GLM_FUNC_DECL size_type col_size(); +00043 static GLM_FUNC_DECL size_type row_size(); +00044 +00045 typedef tmat2x2<T> type; +00046 typedef tmat2x2<T> transpose_type; +00047 +00048 public: +00049 // Implementation detail +00050 GLM_FUNC_DECL tmat2x2<T> _inverse() const; +00051 +00052 private: +00054 // Data +00055 col_type value[2]; +00056 +00057 public: +00059 // Constructors +00060 GLM_FUNC_DECL tmat2x2(); +00061 GLM_FUNC_DECL tmat2x2( +00062 tmat2x2 const & m); +00063 +00064 GLM_FUNC_DECL explicit tmat2x2( +00065 ctor Null); +00066 GLM_FUNC_DECL explicit tmat2x2( +00067 value_type const & x); +00068 GLM_FUNC_DECL explicit tmat2x2( +00069 value_type const & x1, value_type const & y1, +00070 value_type const & x2, value_type const & y2); +00071 GLM_FUNC_DECL explicit tmat2x2( +00072 col_type const & v1, +00073 col_type const & v2); +00074 +00076 // Conversions +00077 template <typename U> +00078 GLM_FUNC_DECL explicit tmat2x2( +00079 U const & x); +00080 +00081 template <typename U, typename V, typename M, typename N> +00082 GLM_FUNC_DECL explicit tmat2x2( +00083 U const & x1, V const & y1, +00084 M const & x2, N const & y2); +00085 +00086 template <typename U, typename V> +00087 GLM_FUNC_DECL explicit tmat2x2( +00088 tvec2<U> const & v1, +00089 tvec2<V> const & v2); +00090 +00092 // Matrix conversions +00093 template <typename U> +00094 GLM_FUNC_DECL explicit tmat2x2(tmat2x2<U> const & m); +00095 +00096 GLM_FUNC_DECL explicit tmat2x2(tmat3x3<T> const & x); +00097 GLM_FUNC_DECL explicit tmat2x2(tmat4x4<T> const & x); +00098 GLM_FUNC_DECL explicit tmat2x2(tmat2x3<T> const & x); +00099 GLM_FUNC_DECL explicit tmat2x2(tmat3x2<T> const & x); +00100 GLM_FUNC_DECL explicit tmat2x2(tmat2x4<T> const & x); +00101 GLM_FUNC_DECL explicit tmat2x2(tmat4x2<T> const & x); +00102 GLM_FUNC_DECL explicit tmat2x2(tmat3x4<T> const & x); +00103 GLM_FUNC_DECL explicit tmat2x2(tmat4x3<T> const & x); +00104 +00106 // Accesses +00107 +00108 GLM_FUNC_DECL col_type & operator[](size_type i); +00109 GLM_FUNC_DECL col_type const & operator[](size_type i) const; +00110 +00111 // Unary updatable operators +00112 GLM_FUNC_DECL tmat2x2<T> & operator=(tmat2x2<T> const & m); +00113 template <typename U> +00114 GLM_FUNC_DECL tmat2x2<T> & operator=(tmat2x2<U> const & m); +00115 template <typename U> +00116 GLM_FUNC_DECL tmat2x2<T> & operator+=(U const & s); +00117 template <typename U> +00118 GLM_FUNC_DECL tmat2x2<T> & operator+=(tmat2x2<U> const & m); +00119 template <typename U> +00120 GLM_FUNC_DECL tmat2x2<T> & operator-=(U const & s); +00121 template <typename U> +00122 GLM_FUNC_DECL tmat2x2<T> & operator-=(tmat2x2<U> const & m); +00123 template <typename U> +00124 GLM_FUNC_DECL tmat2x2<T> & operator*=(U const & s); +00125 template <typename U> +00126 GLM_FUNC_DECL tmat2x2<T> & operator*=(tmat2x2<U> const & m); +00127 template <typename U> +00128 GLM_FUNC_DECL tmat2x2<T> & operator/=(U const & s); +00129 template <typename U> +00130 GLM_FUNC_DECL tmat2x2<T> & operator/=(tmat2x2<U> const & m); +00131 GLM_FUNC_DECL tmat2x2<T> & operator++(); +00132 GLM_FUNC_DECL tmat2x2<T> & operator--(); +00133 }; +00134 +00135 // Binary operators +00136 template <typename T> +00137 tmat2x2<T> operator+ ( +00138 tmat2x2<T> const & m, +00139 typename tmat2x2<T>::value_type const & s); +00140 +00141 template <typename T> +00142 tmat2x2<T> operator+ ( +00143 typename tmat2x2<T>::value_type const & s, +00144 tmat2x2<T> const & m); +00145 +00146 template <typename T> +00147 tmat2x2<T> operator+ ( +00148 tmat2x2<T> const & m1, +00149 tmat2x2<T> const & m2); +00150 +00151 template <typename T> +00152 tmat2x2<T> operator- ( +00153 tmat2x2<T> const & m, +00154 typename tmat2x2<T>::value_type const & s); +00155 +00156 template <typename T> +00157 tmat2x2<T> operator- ( +00158 typename tmat2x2<T>::value_type const & s, +00159 tmat2x2<T> const & m); +00160 +00161 template <typename T> +00162 tmat2x2<T> operator- ( +00163 tmat2x2<T> const & m1, +00164 tmat2x2<T> const & m2); +00165 +00166 template <typename T> +00167 tmat2x2<T> operator* ( +00168 tmat2x2<T> const & m, +00169 typename tmat2x2<T>::value_type const & s); +00170 +00171 template <typename T> +00172 tmat2x2<T> operator* ( +00173 typename tmat2x2<T>::value_type const & s, +00174 tmat2x2<T> const & m); +00175 +00176 template <typename T> +00177 typename tmat2x2<T>::col_type operator* ( +00178 tmat2x2<T> const & m, +00179 typename tmat2x2<T>::row_type const & v); +00180 +00181 template <typename T> +00182 typename tmat2x2<T>::row_type operator* ( +00183 typename tmat2x2<T>::col_type const & v, +00184 tmat2x2<T> const & m); +00185 +00186 template <typename T> +00187 tmat2x2<T> operator* ( +00188 tmat2x2<T> const & m1, +00189 tmat2x2<T> const & m2); +00190 +00191 template <typename T> +00192 tmat2x2<T> operator/ ( +00193 tmat2x2<T> const & m, +00194 typename tmat2x2<T>::value_type const & s); +00195 +00196 template <typename T> +00197 tmat2x2<T> operator/ ( +00198 typename tmat2x2<T>::value_type const & s, +00199 tmat2x2<T> const & m); +00200 +00201 template <typename T> +00202 typename tmat2x2<T>::col_type operator/ ( +00203 tmat2x2<T> const & m, +00204 typename tmat2x2<T>::row_type const & v); +00205 +00206 template <typename T> +00207 typename tmat2x2<T>::row_type operator/ ( +00208 typename tmat2x2<T>::col_type const & v, +00209 tmat2x2<T> const & m); +00210 +00211 template <typename T> +00212 tmat2x2<T> operator/ ( +00213 tmat2x2<T> const & m1, +00214 tmat2x2<T> const & m2); +00215 +00216 // Unary constant operators +00217 template <typename T> +00218 tmat2x2<T> const operator- ( +00219 tmat2x2<T> const & m); +00220 +00221 template <typename T> +00222 tmat2x2<T> const operator-- ( +00223 tmat2x2<T> const & m, +00224 int); +00225 +00226 template <typename T> +00227 tmat2x2<T> const operator++ ( +00228 tmat2x2<T> const & m, +00229 int); +00230 } //namespace detail +00231 +00232 namespace core{ +00233 namespace type{ +00234 namespace precision +00235 { +00240 typedef detail::tmat2x2<lowp_float> lowp_mat2; +00241 +00246 typedef detail::tmat2x2<mediump_float> mediump_mat2; +00247 +00252 typedef detail::tmat2x2<highp_float> highp_mat2; +00253 +00258 typedef detail::tmat2x2<lowp_float> lowp_mat2x2; +00259 +00264 typedef detail::tmat2x2<mediump_float> mediump_mat2x2; +00265 +00270 typedef detail::tmat2x2<highp_float> highp_mat2x2; +00271 +00272 }//namespace precision +00273 }//namespace type +00274 }//namespace core +00275 }//namespace glm +00276 +00277 #ifndef GLM_EXTERNAL_TEMPLATE +00278 #include "type_mat2x2.inl" +00279 #endif +00280 +00281 #endif //glm_core_type_mat2x2 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2006-10-01 +00005 // Updated : 2010-02-03 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_mat2x3.hpp +00009 +00010 #ifndef glm_core_type_mat2x3 +00011 #define glm_core_type_mat2x3 +00012 +00013 #include "type_mat.hpp" +00014 +00015 namespace glm{ +00016 namespace detail +00017 { +00018 template <typename T> struct tvec1; +00019 template <typename T> struct tvec2; +00020 template <typename T> struct tvec3; +00021 template <typename T> struct tvec4; +00022 template <typename T> struct tmat2x2; +00023 template <typename T> struct tmat2x3; +00024 template <typename T> struct tmat2x4; +00025 template <typename T> struct tmat3x2; +00026 template <typename T> struct tmat3x3; +00027 template <typename T> struct tmat3x4; +00028 template <typename T> struct tmat4x2; +00029 template <typename T> struct tmat4x3; +00030 template <typename T> struct tmat4x4; +00031 +00034 template <typename T> +00035 struct tmat2x3 +00036 { +00037 enum ctor{null}; +00038 typedef T value_type; +00039 typedef std::size_t size_type; +00040 typedef tvec3<T> col_type; +00041 typedef tvec2<T> row_type; +00042 static GLM_FUNC_DECL size_type col_size(); +00043 static GLM_FUNC_DECL size_type row_size(); +00044 +00045 typedef tmat2x3<T> type; +00046 typedef tmat3x2<T> transpose_type; +00047 +00048 private: +00049 // Data +00050 col_type value[2]; +00051 +00052 public: +00053 // Constructors +00054 GLM_FUNC_DECL tmat2x3(); +00055 GLM_FUNC_DECL tmat2x3(tmat2x3 const & m); +00056 +00057 GLM_FUNC_DECL explicit tmat2x3( +00058 ctor); +00059 GLM_FUNC_DECL explicit tmat2x3( +00060 value_type const & s); +00061 GLM_FUNC_DECL explicit tmat2x3( +00062 value_type const & x0, value_type const & y0, value_type const & z0, +00063 value_type const & x1, value_type const & y1, value_type const & z1); +00064 GLM_FUNC_DECL explicit tmat2x3( +00065 col_type const & v0, +00066 col_type const & v1); +00067 +00068 +00070 // Conversions +00071 template <typename U> +00072 GLM_FUNC_DECL explicit tmat2x3( +00073 U const & x); +00074 +00075 template <typename X1, typename Y1, typename Z1, typename X2, typename Y2, typename Z2> +00076 GLM_FUNC_DECL explicit tmat2x3( +00077 X1 const & x1, Y1 const & y1, Z1 const & z1, +00078 X2 const & x2, Y2 const & y2, Z2 const & z2); +00079 +00080 template <typename U, typename V> +00081 GLM_FUNC_DECL explicit tmat2x3( +00082 tvec3<U> const & v1, +00083 tvec3<V> const & v2); +00084 +00086 // Matrix conversion +00087 template <typename U> +00088 GLM_FUNC_DECL explicit tmat2x3(tmat2x3<U> const & m); +00089 +00090 GLM_FUNC_DECL explicit tmat2x3(tmat2x2<T> const & x); +00091 GLM_FUNC_DECL explicit tmat2x3(tmat3x3<T> const & x); +00092 GLM_FUNC_DECL explicit tmat2x3(tmat4x4<T> const & x); +00093 GLM_FUNC_DECL explicit tmat2x3(tmat2x4<T> const & x); +00094 GLM_FUNC_DECL explicit tmat2x3(tmat3x2<T> const & x); +00095 GLM_FUNC_DECL explicit tmat2x3(tmat3x4<T> const & x); +00096 GLM_FUNC_DECL explicit tmat2x3(tmat4x2<T> const & x); +00097 GLM_FUNC_DECL explicit tmat2x3(tmat4x3<T> const & x); +00098 +00099 // Accesses +00100 col_type & operator[](size_type i); +00101 col_type const & operator[](size_type i) const; +00102 +00103 // Unary updatable operators +00104 GLM_FUNC_DECL tmat2x3<T> & operator= (tmat2x3<T> const & m); +00105 template <typename U> +00106 GLM_FUNC_DECL tmat2x3<T> & operator= (tmat2x3<U> const & m); +00107 template <typename U> +00108 GLM_FUNC_DECL tmat2x3<T> & operator+= (U const & s); +00109 template <typename U> +00110 GLM_FUNC_DECL tmat2x3<T> & operator+= (tmat2x3<U> const & m); +00111 template <typename U> +00112 GLM_FUNC_DECL tmat2x3<T> & operator-= (U const & s); +00113 template <typename U> +00114 GLM_FUNC_DECL tmat2x3<T> & operator-= (tmat2x3<U> const & m); +00115 template <typename U> +00116 GLM_FUNC_DECL tmat2x3<T> & operator*= (U const & s); +00117 template <typename U> +00118 GLM_FUNC_DECL tmat2x3<T> & operator*= (tmat2x3<U> const & m); +00119 template <typename U> +00120 GLM_FUNC_DECL tmat2x3<T> & operator/= (U const & s); +00121 +00122 GLM_FUNC_DECL tmat2x3<T> & operator++ (); +00123 GLM_FUNC_DECL tmat2x3<T> & operator-- (); +00124 }; +00125 +00126 // Binary operators +00127 template <typename T> +00128 tmat2x3<T> operator+ ( +00129 tmat2x3<T> const & m, +00130 typename tmat2x3<T>::value_type const & s); +00131 +00132 template <typename T> +00133 tmat2x3<T> operator+ ( +00134 tmat2x3<T> const & m1, +00135 tmat2x3<T> const & m2); +00136 +00137 template <typename T> +00138 tmat2x3<T> operator- ( +00139 tmat2x3<T> const & m, +00140 typename tmat2x3<T>::value_type const & s); +00141 +00142 template <typename T> +00143 tmat2x3<T> operator- ( +00144 tmat2x3<T> const & m1, +00145 tmat2x3<T> const & m2); +00146 +00147 template <typename T> +00148 tmat2x3<T> operator* ( +00149 tmat2x3<T> const & m, +00150 typename tmat2x3<T>::value_type const & s); +00151 +00152 template <typename T> +00153 tmat2x3<T> operator* ( +00154 typename tmat2x3<T>::value_type const & s, +00155 tmat2x3<T> const & m); +00156 +00157 template <typename T> +00158 typename tmat2x3<T>::col_type operator* ( +00159 tmat2x3<T> const & m, +00160 typename tmat2x3<T>::row_type const & v); +00161 +00162 template <typename T> +00163 typename tmat2x3<T>::row_type operator* ( +00164 typename tmat2x3<T>::col_type const & v, +00165 tmat2x3<T> const & m); +00166 +00167 template <typename T> +00168 tmat3x3<T> operator* ( +00169 tmat2x3<T> const & m1, +00170 tmat3x2<T> const & m2); +00171 +00172 template <typename T> +00173 tmat2x3<T> operator/ ( +00174 tmat2x3<T> const & m, +00175 typename tmat2x3<T>::value_type const & s); +00176 +00177 template <typename T> +00178 tmat2x3<T> operator/ ( +00179 typename tmat2x3<T>::value_type const & s, +00180 tmat2x3<T> const & m); +00181 +00182 // Unary constant operators +00183 template <typename T> +00184 tmat2x3<T> const operator- ( +00185 tmat2x3<T> const & m); +00186 +00187 template <typename T> +00188 tmat2x3<T> const operator-- ( +00189 tmat2x3<T> const & m, +00190 int); +00191 +00192 template <typename T> +00193 tmat2x3<T> const operator++ ( +00194 tmat2x3<T> const & m, +00195 int); +00196 +00197 } //namespace detail +00198 +00199 namespace core{ +00200 namespace type{ +00201 namespace precision +00202 { +00207 typedef detail::tmat2x3<lowp_float> lowp_mat2x3; +00212 typedef detail::tmat2x3<mediump_float> mediump_mat2x3; +00217 typedef detail::tmat2x3<highp_float> highp_mat2x3; +00218 }//namespace precision +00219 }//namespace type +00220 }//namespace core +00221 }//namespace glm +00222 +00223 #ifndef GLM_EXTERNAL_TEMPLATE +00224 #include "type_mat2x3.inl" +00225 #endif +00226 +00227 #endif //glm_core_type_mat2x3 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2006-08-05 +00005 // Updated : 2010-02-11 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_mat2x4.hpp +00009 +00010 #ifndef glm_core_type_mat2x4 +00011 #define glm_core_type_mat2x4 +00012 +00013 #include "type_mat.hpp" +00014 +00015 namespace glm{ +00016 namespace detail +00017 { +00018 template <typename T> struct tvec1; +00019 template <typename T> struct tvec2; +00020 template <typename T> struct tvec3; +00021 template <typename T> struct tvec4; +00022 template <typename T> struct tmat2x2; +00023 template <typename T> struct tmat2x3; +00024 template <typename T> struct tmat2x4; +00025 template <typename T> struct tmat3x2; +00026 template <typename T> struct tmat3x3; +00027 template <typename T> struct tmat3x4; +00028 template <typename T> struct tmat4x2; +00029 template <typename T> struct tmat4x3; +00030 template <typename T> struct tmat4x4; +00031 +00034 template <typename T> +00035 struct tmat2x4 +00036 { +00037 enum ctor{null}; +00038 typedef T value_type; +00039 typedef std::size_t size_type; +00040 typedef tvec4<T> col_type; +00041 typedef tvec2<T> row_type; +00042 static GLM_FUNC_DECL size_type col_size(); +00043 static GLM_FUNC_DECL size_type row_size(); +00044 +00045 typedef tmat2x4<T> type; +00046 typedef tmat4x2<T> transpose_type; +00047 +00048 private: +00049 // Data +00050 col_type value[2]; +00051 +00052 public: +00053 // Constructors +00054 GLM_FUNC_DECL tmat2x4(); +00055 GLM_FUNC_DECL tmat2x4(tmat2x4 const & m); +00056 +00057 GLM_FUNC_DECL explicit tmat2x4( +00058 ctor); +00059 GLM_FUNC_DECL explicit tmat2x4( +00060 value_type const & s); +00061 GLM_FUNC_DECL explicit tmat2x4( +00062 value_type const & x0, value_type const & y0, value_type const & z0, value_type const & w0, +00063 value_type const & x1, value_type const & y1, value_type const & z1, value_type const & w1); +00064 GLM_FUNC_DECL explicit tmat2x4( +00065 col_type const & v0, +00066 col_type const & v1); +00067 +00069 // Conversions +00070 template <typename U> +00071 GLM_FUNC_DECL explicit tmat2x4( +00072 U const & x); +00073 +00074 template < +00075 typename X1, typename Y1, typename Z1, typename W1, +00076 typename X2, typename Y2, typename Z2, typename W2> +00077 GLM_FUNC_DECL explicit tmat2x4( +00078 X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1, +00079 X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2); +00080 +00081 template <typename U, typename V> +00082 GLM_FUNC_DECL explicit tmat2x4( +00083 tvec4<U> const & v1, +00084 tvec4<V> const & v2); +00085 +00087 // Matrix conversions +00088 template <typename U> +00089 GLM_FUNC_DECL explicit tmat2x4(tmat2x4<U> const & m); +00090 +00091 GLM_FUNC_DECL explicit tmat2x4(tmat2x2<T> const & x); +00092 GLM_FUNC_DECL explicit tmat2x4(tmat3x3<T> const & x); +00093 GLM_FUNC_DECL explicit tmat2x4(tmat4x4<T> const & x); +00094 GLM_FUNC_DECL explicit tmat2x4(tmat2x3<T> const & x); +00095 GLM_FUNC_DECL explicit tmat2x4(tmat3x2<T> const & x); +00096 GLM_FUNC_DECL explicit tmat2x4(tmat3x4<T> const & x); +00097 GLM_FUNC_DECL explicit tmat2x4(tmat4x2<T> const & x); +00098 GLM_FUNC_DECL explicit tmat2x4(tmat4x3<T> const & x); +00099 +00100 // Accesses +00101 GLM_FUNC_DECL col_type & operator[](size_type i); +00102 GLM_FUNC_DECL col_type const & operator[](size_type i) const; +00103 +00104 // Unary updatable operators +00105 GLM_FUNC_DECL tmat2x4<T>& operator= (tmat2x4<T> const & m); +00106 template <typename U> +00107 GLM_FUNC_DECL tmat2x4<T>& operator= (tmat2x4<U> const & m); +00108 template <typename U> +00109 GLM_FUNC_DECL tmat2x4<T>& operator+= (U const & s); +00110 template <typename U> +00111 GLM_FUNC_DECL tmat2x4<T>& operator+= (tmat2x4<U> const & m); +00112 template <typename U> +00113 GLM_FUNC_DECL tmat2x4<T>& operator-= (U const & s); +00114 template <typename U> +00115 GLM_FUNC_DECL tmat2x4<T>& operator-= (tmat2x4<U> const & m); +00116 template <typename U> +00117 GLM_FUNC_DECL tmat2x4<T>& operator*= (U const & s); +00118 template <typename U> +00119 GLM_FUNC_DECL tmat2x4<T>& operator*= (tmat2x4<U> const & m); +00120 template <typename U> +00121 GLM_FUNC_DECL tmat2x4<T>& operator/= (U const & s); +00122 +00123 GLM_FUNC_DECL tmat2x4<T>& operator++ (); +00124 GLM_FUNC_DECL tmat2x4<T>& operator-- (); +00125 }; +00126 +00127 // Binary operators +00128 template <typename T> +00129 tmat2x4<T> operator+ ( +00130 tmat2x4<T> const & m, +00131 typename tmat2x4<T>::value_type const & s); +00132 +00133 template <typename T> +00134 tmat2x4<T> operator+ ( +00135 tmat2x4<T> const & m1, +00136 tmat2x4<T> const & m2); +00137 +00138 template <typename T> +00139 tmat2x4<T> operator- ( +00140 tmat2x4<T> const & m, +00141 typename tmat2x4<T>::value_type const & s); +00142 +00143 template <typename T> +00144 tmat2x4<T> operator- ( +00145 tmat2x4<T> const & m1, +00146 tmat2x4<T> const & m2); +00147 +00148 template <typename T> +00149 tmat2x4<T> operator* ( +00150 tmat2x4<T> const & m, +00151 typename tmat2x4<T>::value_type const & s); +00152 +00153 template <typename T> +00154 tmat2x4<T> operator* ( +00155 typename tmat2x4<T>::value_type const & s, +00156 tmat2x4<T> const & m); +00157 +00158 template <typename T> +00159 typename tmat2x4<T>::col_type operator* ( +00160 tmat2x4<T> const & m, +00161 typename tmat2x4<T>::row_type const & v); +00162 +00163 template <typename T> +00164 typename tmat2x4<T>::row_type operator* ( +00165 typename tmat2x4<T>::col_type const & v, +00166 tmat2x4<T> const & m); +00167 +00168 template <typename T> +00169 tmat2x4<T> operator* ( +00170 tmat2x4<T> const & m1, +00171 tmat2x4<T> const & m2); +00172 +00173 template <typename T> +00174 tmat2x4<T> operator/ ( +00175 tmat2x4<T> const & m, +00176 typename tmat2x4<T>::value_type const & s); +00177 +00178 template <typename T> +00179 tmat2x4<T> operator/ ( +00180 typename tmat2x4<T>::value_type const & s, +00181 tmat2x4<T> const & m); +00182 +00183 // Unary constant operators +00184 template <typename T> +00185 tmat2x4<T> const operator- ( +00186 tmat2x4<T> const & m); +00187 +00188 template <typename T> +00189 tmat2x4<T> const operator-- ( +00190 tmat2x4<T> const & m, +00191 int); +00192 +00193 template <typename T> +00194 tmat2x4<T> const operator++ ( +00195 tmat2x4<T> const & m, +00196 int); +00197 +00198 } //namespace detail +00199 +00200 namespace core{ +00201 namespace type{ +00202 namespace precision +00203 { +00207 typedef detail::tmat2x4<lowp_float> lowp_mat2x4; +00211 typedef detail::tmat2x4<mediump_float> mediump_mat2x4; +00215 typedef detail::tmat2x4<highp_float> highp_mat2x4; +00216 }//namespace precision +00217 }//namespace type +00218 }//namespace core +00219 }//namespace glm +00220 +00221 #ifndef GLM_EXTERNAL_TEMPLATE +00222 #include "type_mat2x4.inl" +00223 #endif +00224 +00225 #endif //glm_core_type_mat2x4 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2006-08-05 +00005 // Updated : 2010-02-05 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_mat3x2.hpp +00009 +00010 #ifndef glm_core_type_mat3x2 +00011 #define glm_core_type_mat3x2 +00012 +00013 #include "type_mat.hpp" +00014 +00015 namespace glm{ +00016 namespace detail +00017 { +00018 template <typename T> struct tvec1; +00019 template <typename T> struct tvec2; +00020 template <typename T> struct tvec3; +00021 template <typename T> struct tvec4; +00022 template <typename T> struct tmat2x2; +00023 template <typename T> struct tmat2x3; +00024 template <typename T> struct tmat2x4; +00025 template <typename T> struct tmat3x2; +00026 template <typename T> struct tmat3x3; +00027 template <typename T> struct tmat3x4; +00028 template <typename T> struct tmat4x2; +00029 template <typename T> struct tmat4x3; +00030 template <typename T> struct tmat4x4; +00031 +00034 template <typename T> +00035 struct tmat3x2 +00036 { +00037 enum ctor{null}; +00038 typedef T value_type; +00039 typedef std::size_t size_type; +00040 typedef tvec2<T> col_type; +00041 typedef tvec3<T> row_type; +00042 static GLM_FUNC_DECL size_type col_size(); +00043 static GLM_FUNC_DECL size_type row_size(); +00044 +00045 typedef tmat3x2<T> type; +00046 typedef tmat2x3<T> transpose_type; +00047 +00048 private: +00049 // Data +00050 col_type value[3]; +00051 +00052 public: +00053 // Constructors +00054 GLM_FUNC_DECL tmat3x2(); +00055 GLM_FUNC_DECL tmat3x2(tmat3x2 const & m); +00056 +00057 GLM_FUNC_DECL explicit tmat3x2( +00058 ctor); +00059 GLM_FUNC_DECL explicit tmat3x2( +00060 value_type const & s); +00061 GLM_FUNC_DECL explicit tmat3x2( +00062 value_type const & x0, value_type const & y0, +00063 value_type const & x1, value_type const & y1, +00064 value_type const & x2, value_type const & y2); +00065 GLM_FUNC_DECL explicit tmat3x2( +00066 col_type const & v0, +00067 col_type const & v1, +00068 col_type const & v2); +00069 +00071 // Conversions +00072 template <typename U> +00073 GLM_FUNC_DECL explicit tmat3x2( +00074 U const & x); +00075 +00076 template +00077 < +00078 typename X1, typename Y1, +00079 typename X2, typename Y2, +00080 typename X3, typename Y3 +00081 > +00082 GLM_FUNC_DECL explicit tmat3x2( +00083 X1 const & x1, Y1 const & y1, +00084 X2 const & x2, Y2 const & y2, +00085 X3 const & x3, Y3 const & y3); +00086 +00087 template <typename V1, typename V2, typename V3> +00088 GLM_FUNC_DECL explicit tmat3x2( +00089 tvec2<V1> const & v1, +00090 tvec2<V2> const & v2, +00091 tvec2<V3> const & v3); +00092 +00093 // Matrix conversions +00094 template <typename U> +00095 GLM_FUNC_DECL explicit tmat3x2(tmat3x2<U> const & m); +00096 +00097 GLM_FUNC_DECL explicit tmat3x2(tmat2x2<T> const & x); +00098 GLM_FUNC_DECL explicit tmat3x2(tmat3x3<T> const & x); +00099 GLM_FUNC_DECL explicit tmat3x2(tmat4x4<T> const & x); +00100 GLM_FUNC_DECL explicit tmat3x2(tmat2x3<T> const & x); +00101 GLM_FUNC_DECL explicit tmat3x2(tmat2x4<T> const & x); +00102 GLM_FUNC_DECL explicit tmat3x2(tmat3x4<T> const & x); +00103 GLM_FUNC_DECL explicit tmat3x2(tmat4x2<T> const & x); +00104 GLM_FUNC_DECL explicit tmat3x2(tmat4x3<T> const & x); +00105 +00106 // Accesses +00107 GLM_FUNC_DECL col_type & operator[](size_type i); +00108 GLM_FUNC_DECL col_type const & operator[](size_type i) const; +00109 +00110 // Unary updatable operators +00111 GLM_FUNC_DECL tmat3x2<T> & operator= (tmat3x2<T> const & m); +00112 template <typename U> +00113 GLM_FUNC_DECL tmat3x2<T> & operator= (tmat3x2<U> const & m); +00114 template <typename U> +00115 GLM_FUNC_DECL tmat3x2<T> & operator+= (U const & s); +00116 template <typename U> +00117 GLM_FUNC_DECL tmat3x2<T> & operator+= (tmat3x2<U> const & m); +00118 template <typename U> +00119 GLM_FUNC_DECL tmat3x2<T> & operator-= (U const & s); +00120 template <typename U> +00121 GLM_FUNC_DECL tmat3x2<T> & operator-= (tmat3x2<U> const & m); +00122 template <typename U> +00123 GLM_FUNC_DECL tmat3x2<T> & operator*= (U const & s); +00124 template <typename U> +00125 GLM_FUNC_DECL tmat3x2<T> & operator*= (tmat3x2<U> const & m); +00126 template <typename U> +00127 GLM_FUNC_DECL tmat3x2<T> & operator/= (U const & s); +00128 +00129 GLM_FUNC_DECL tmat3x2<T> & operator++ (); +00130 GLM_FUNC_DECL tmat3x2<T> & operator-- (); +00131 }; +00132 +00133 // Binary operators +00134 template <typename T> +00135 tmat3x2<T> operator+ ( +00136 tmat3x2<T> const & m, +00137 typename tmat3x2<T>::value_type const & s); +00138 +00139 template <typename T> +00140 tmat3x2<T> operator+ ( +00141 tmat3x2<T> const & m1, +00142 tmat3x2<T> const & m2); +00143 +00144 template <typename T> +00145 tmat3x2<T> operator- ( +00146 tmat3x2<T> const & m, +00147 typename tmat3x2<T>::value_type const & s); +00148 +00149 template <typename T> +00150 tmat3x2<T> operator- ( +00151 tmat3x2<T> const & m1, +00152 tmat3x2<T> const & m2); +00153 +00154 template <typename T> +00155 tmat3x2<T> operator* ( +00156 tmat3x2<T> const & m, +00157 typename tmat3x2<T>::value_type const & s); +00158 +00159 template <typename T> +00160 tmat3x2<T> operator* ( +00161 typename tmat3x2<T>::value_type const & s, +00162 tmat3x2<T> const & m); +00163 +00164 template <typename T> +00165 typename tmat3x2<T>::col_type operator* ( +00166 tmat3x2<T> const & m, +00167 typename tmat3x2<T>::row_type const & v); +00168 +00169 template <typename T> +00170 typename tmat3x2<T>::row_type operator* ( +00171 typename tmat3x2<T>::col_type const & v, +00172 tmat3x2<T> const & m); +00173 +00174 template <typename T> +00175 tmat2x2<T> operator* ( +00176 tmat3x2<T> const & m1, +00177 tmat2x3<T> const & m2); +00178 +00179 template <typename T> +00180 tmat3x2<T> operator/ ( +00181 tmat3x2<T> const & m, +00182 typename tmat3x2<T>::value_type const & s); +00183 +00184 template <typename T> +00185 tmat3x2<T> operator/ ( +00186 typename tmat3x2<T>::value_type const & s, +00187 tmat3x2<T> const & m); +00188 +00189 // Unary constant operators +00190 template <typename T> +00191 tmat3x2<T> const operator- ( +00192 tmat3x2<T> const & m); +00193 +00194 template <typename T> +00195 tmat3x2<T> const operator-- ( +00196 tmat3x2<T> const & m, +00197 int); +00198 +00199 template <typename T> +00200 tmat3x2<T> const operator++ ( +00201 tmat3x2<T> const & m, +00202 int); +00203 +00204 } //namespace detail +00205 +00206 namespace core{ +00207 namespace type{ +00208 namespace precision +00209 { +00213 typedef detail::tmat3x2<lowp_float> lowp_mat3x2; +00217 typedef detail::tmat3x2<mediump_float> mediump_mat3x2; +00221 typedef detail::tmat3x2<highp_float> highp_mat3x2; +00222 }//namespace precision +00223 }//namespace type +00224 }//namespace core +00225 }//namespace glm +00226 +00227 #ifndef GLM_EXTERNAL_TEMPLATE +00228 #include "type_mat3x2.inl" +00229 #endif +00230 +00231 #endif //glm_core_type_mat3x2 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-01-27 +00005 // Updated : 2010-02-03 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_mat3x3.hpp +00009 +00010 #ifndef glm_core_type_mat3x3 +00011 #define glm_core_type_mat3x3 +00012 +00013 #include "type_mat.hpp" +00014 +00015 namespace glm{ +00016 namespace detail +00017 { +00018 template <typename T> struct tvec1; +00019 template <typename T> struct tvec2; +00020 template <typename T> struct tvec3; +00021 template <typename T> struct tvec4; +00022 template <typename T> struct tmat2x2; +00023 template <typename T> struct tmat2x3; +00024 template <typename T> struct tmat2x4; +00025 template <typename T> struct tmat3x2; +00026 template <typename T> struct tmat3x3; +00027 template <typename T> struct tmat3x4; +00028 template <typename T> struct tmat4x2; +00029 template <typename T> struct tmat4x3; +00030 template <typename T> struct tmat4x4; +00031 +00034 template <typename T> +00035 struct tmat3x3 +00036 { +00037 enum ctor{null}; +00038 typedef T value_type; +00039 typedef std::size_t size_type; +00040 typedef tvec3<T> col_type; +00041 typedef tvec3<T> row_type; +00042 static GLM_FUNC_DECL size_type col_size(); +00043 static GLM_FUNC_DECL size_type row_size(); +00044 +00045 typedef tmat3x3<T> type; +00046 typedef tmat3x3<T> transpose_type; +00047 +00048 public: +00049 // Implementation detail +00050 GLM_FUNC_DECL tmat3x3<T> _inverse() const; +00051 +00052 private: +00053 // Data +00054 col_type value[3]; +00055 +00056 public: +00057 // Constructors +00058 GLM_FUNC_DECL tmat3x3(); +00059 GLM_FUNC_DECL tmat3x3(tmat3x3 const & m); +00060 +00061 GLM_FUNC_DECL explicit tmat3x3( +00062 ctor Null); +00063 GLM_FUNC_DECL explicit tmat3x3( +00064 value_type const & s); +00065 GLM_FUNC_DECL explicit tmat3x3( +00066 value_type const & x0, value_type const & y0, value_type const & z0, +00067 value_type const & x1, value_type const & y1, value_type const & z1, +00068 value_type const & x2, value_type const & y2, value_type const & z2); +00069 GLM_FUNC_DECL explicit tmat3x3( +00070 col_type const & v0, +00071 col_type const & v1, +00072 col_type const & v2); +00073 +00075 // Conversions +00076 template <typename U> +00077 GLM_FUNC_DECL explicit tmat3x3( +00078 U const & x); +00079 +00080 template +00081 < +00082 typename X1, typename Y1, typename Z1, +00083 typename X2, typename Y2, typename Z2, +00084 typename X3, typename Y3, typename Z3 +00085 > +00086 GLM_FUNC_DECL explicit tmat3x3( +00087 X1 const & x1, Y1 const & y1, Z1 const & z1, +00088 X2 const & x2, Y2 const & y2, Z2 const & z2, +00089 X3 const & x3, Y3 const & y3, Z3 const & z3); +00090 +00091 template <typename V1, typename V2, typename V3> +00092 GLM_FUNC_DECL explicit tmat3x3( +00093 tvec3<V1> const & v1, +00094 tvec3<V2> const & v2, +00095 tvec3<V3> const & v3); +00096 +00097 // Matrix conversions +00098 template <typename U> +00099 GLM_FUNC_DECL explicit tmat3x3(tmat3x3<U> const & m); +00100 +00101 GLM_FUNC_DECL explicit tmat3x3(tmat2x2<T> const & x); +00102 GLM_FUNC_DECL explicit tmat3x3(tmat4x4<T> const & x); +00103 GLM_FUNC_DECL explicit tmat3x3(tmat2x3<T> const & x); +00104 GLM_FUNC_DECL explicit tmat3x3(tmat3x2<T> const & x); +00105 GLM_FUNC_DECL explicit tmat3x3(tmat2x4<T> const & x); +00106 GLM_FUNC_DECL explicit tmat3x3(tmat4x2<T> const & x); +00107 GLM_FUNC_DECL explicit tmat3x3(tmat3x4<T> const & x); +00108 GLM_FUNC_DECL explicit tmat3x3(tmat4x3<T> const & x); +00109 +00110 // Accesses +00111 GLM_FUNC_DECL col_type & operator[](size_type i); +00112 GLM_FUNC_DECL col_type const & operator[](size_type i) const; +00113 +00114 // Unary updatable operators +00115 GLM_FUNC_DECL tmat3x3<T>& operator= (tmat3x3<T> const & m); +00116 template <typename U> +00117 GLM_FUNC_DECL tmat3x3<T>& operator= (tmat3x3<U> const & m); +00118 template <typename U> +00119 GLM_FUNC_DECL tmat3x3<T>& operator+= (U const & s); +00120 template <typename U> +00121 GLM_FUNC_DECL tmat3x3<T>& operator+= (tmat3x3<U> const & m); +00122 template <typename U> +00123 GLM_FUNC_DECL tmat3x3<T>& operator-= (U const & s); +00124 template <typename U> +00125 GLM_FUNC_DECL tmat3x3<T>& operator-= (tmat3x3<U> const & m); +00126 template <typename U> +00127 GLM_FUNC_DECL tmat3x3<T>& operator*= (U const & s); +00128 template <typename U> +00129 GLM_FUNC_DECL tmat3x3<T>& operator*= (tmat3x3<U> const & m); +00130 template <typename U> +00131 GLM_FUNC_DECL tmat3x3<T>& operator/= (U const & s); +00132 template <typename U> +00133 GLM_FUNC_DECL tmat3x3<T>& operator/= (tmat3x3<U> const & m); +00134 GLM_FUNC_DECL tmat3x3<T>& operator++ (); +00135 GLM_FUNC_DECL tmat3x3<T>& operator-- (); +00136 }; +00137 +00138 // Binary operators +00139 template <typename T> +00140 tmat3x3<T> operator+ ( +00141 tmat3x3<T> const & m, +00142 typename tmat3x3<T>::value_type const & s); +00143 +00144 template <typename T> +00145 tmat3x3<T> operator+ ( +00146 typename tmat3x3<T>::value_type const & s, +00147 tmat3x3<T> const & m); +00148 +00149 template <typename T> +00150 tmat3x3<T> operator+ ( +00151 tmat3x3<T> const & m1, +00152 tmat3x3<T> const & m2); +00153 +00154 template <typename T> +00155 tmat3x3<T> operator- ( +00156 tmat3x3<T> const & m, +00157 typename tmat3x3<T>::value_type const & s); +00158 +00159 template <typename T> +00160 tmat3x3<T> operator- ( +00161 typename tmat3x3<T>::value_type const & s, +00162 tmat3x3<T> const & m); +00163 +00164 template <typename T> +00165 tmat3x3<T> operator- ( +00166 tmat3x3<T> const & m1, +00167 tmat3x3<T> const & m2); +00168 +00169 template <typename T> +00170 tmat3x3<T> operator* ( +00171 tmat3x3<T> const & m, +00172 typename tmat3x3<T>::value_type const & s); +00173 +00174 template <typename T> +00175 tmat3x3<T> operator* ( +00176 typename tmat3x3<T>::value_type const & s, +00177 tmat3x3<T> const & m); +00178 +00179 template <typename T> +00180 typename tmat3x3<T>::col_type operator* ( +00181 tmat3x3<T> const & m, +00182 typename tmat3x3<T>::row_type const & v); +00183 +00184 template <typename T> +00185 typename tmat3x3<T>::row_type operator* ( +00186 typename tmat3x3<T>::col_type const & v, +00187 tmat3x3<T> const & m); +00188 +00189 template <typename T> +00190 tmat3x3<T> operator* ( +00191 tmat3x3<T> const & m1, +00192 tmat3x3<T> const & m2); +00193 +00194 template <typename T> +00195 tmat3x3<T> operator/ ( +00196 tmat3x3<T> const & m, +00197 typename tmat3x3<T>::value_type const & s); +00198 +00199 template <typename T> +00200 tmat3x3<T> operator/ ( +00201 typename tmat3x3<T>::value_type const & s, +00202 tmat3x3<T> const & m); +00203 +00204 template <typename T> +00205 typename tmat3x3<T>::col_type operator/ ( +00206 tmat3x3<T> const & m, +00207 typename tmat3x3<T>::row_type const & v); +00208 +00209 template <typename T> +00210 typename tmat3x3<T>::row_type operator/ ( +00211 typename tmat3x3<T>::col_type const & v, +00212 tmat3x3<T> const & m); +00213 +00214 template <typename T> +00215 tmat3x3<T> operator/ ( +00216 tmat3x3<T> const & m1, +00217 tmat3x3<T> const & m2); +00218 +00219 // Unary constant operators +00220 template <typename T> +00221 tmat3x3<T> const operator- ( +00222 tmat3x3<T> const & m); +00223 +00224 template <typename T> +00225 tmat3x3<T> const operator-- ( +00226 tmat3x3<T> const & m, +00227 int); +00228 +00229 template <typename T> +00230 tmat3x3<T> const operator++ ( +00231 tmat3x3<T> const & m, +00232 int); +00233 +00234 } //namespace detail +00235 +00236 namespace core{ +00237 namespace type{ +00238 namespace precision +00239 { +00244 typedef detail::tmat3x3<lowp_float> lowp_mat3; +00249 typedef detail::tmat3x3<mediump_float> mediump_mat3; +00254 typedef detail::tmat3x3<highp_float> highp_mat3; +00255 +00260 typedef detail::tmat3x3<lowp_float> lowp_mat3x3; +00261 +00266 typedef detail::tmat3x3<mediump_float> mediump_mat3x3; +00267 +00272 typedef detail::tmat3x3<highp_float> highp_mat3x3; +00273 +00274 }//namespace precision +00275 }//namespace type +00276 }//namespace core +00277 }//namespace glm +00278 +00279 #ifndef GLM_EXTERNAL_TEMPLATE +00280 #include "type_mat3x3.inl" +00281 #endif +00282 +00283 #endif //glm_core_type_mat3x3 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2006-08-05 +00005 // Updated : 2010-02-05 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_mat3x4.hpp +00009 +00010 #ifndef glm_core_type_mat3x4 +00011 #define glm_core_type_mat3x4 +00012 +00013 #include "type_mat.hpp" +00014 +00015 namespace glm{ +00016 namespace detail +00017 { +00018 template <typename T> struct tvec1; +00019 template <typename T> struct tvec2; +00020 template <typename T> struct tvec3; +00021 template <typename T> struct tvec4; +00022 template <typename T> struct tmat2x2; +00023 template <typename T> struct tmat2x3; +00024 template <typename T> struct tmat2x4; +00025 template <typename T> struct tmat3x2; +00026 template <typename T> struct tmat3x3; +00027 template <typename T> struct tmat3x4; +00028 template <typename T> struct tmat4x2; +00029 template <typename T> struct tmat4x3; +00030 template <typename T> struct tmat4x4; +00031 +00034 template <typename T> +00035 struct tmat3x4 +00036 { +00037 enum ctor{null}; +00038 typedef T value_type; +00039 typedef std::size_t size_type; +00040 typedef tvec4<T> col_type; +00041 typedef tvec3<T> row_type; +00042 static GLM_FUNC_DECL size_type col_size(); +00043 static GLM_FUNC_DECL size_type row_size(); +00044 +00045 typedef tmat3x4<T> type; +00046 typedef tmat4x3<T> transpose_type; +00047 +00048 private: +00049 // Data +00050 col_type value[3]; +00051 +00052 public: +00053 // Constructors +00054 GLM_FUNC_DECL tmat3x4(); +00055 GLM_FUNC_DECL tmat3x4(tmat3x4 const & m); +00056 +00057 GLM_FUNC_DECL explicit tmat3x4( +00058 ctor Null); +00059 GLM_FUNC_DECL explicit tmat3x4( +00060 value_type const & s); +00061 GLM_FUNC_DECL explicit tmat3x4( +00062 value_type const & x0, value_type const & y0, value_type const & z0, value_type const & w0, +00063 value_type const & x1, value_type const & y1, value_type const & z1, value_type const & w1, +00064 value_type const & x2, value_type const & y2, value_type const & z2, value_type const & w2); +00065 GLM_FUNC_DECL explicit tmat3x4( +00066 col_type const & v0, +00067 col_type const & v1, +00068 col_type const & v2); +00069 +00071 // Conversions +00072 template <typename U> +00073 GLM_FUNC_DECL explicit tmat3x4( +00074 U const & x); +00075 +00076 template +00077 < +00078 typename X1, typename Y1, typename Z1, typename W1, +00079 typename X2, typename Y2, typename Z2, typename W2, +00080 typename X3, typename Y3, typename Z3, typename W3 +00081 > +00082 GLM_FUNC_DECL explicit tmat3x4( +00083 X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1, +00084 X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2, +00085 X3 const & x3, Y3 const & y3, Z3 const & z3, W3 const & w3); +00086 +00087 template <typename V1, typename V2, typename V3> +00088 GLM_FUNC_DECL explicit tmat3x4( +00089 tvec4<V1> const & v1, +00090 tvec4<V2> const & v2, +00091 tvec4<V3> const & v3); +00092 +00093 // Matrix conversion +00094 template <typename U> +00095 GLM_FUNC_DECL explicit tmat3x4(tmat3x4<U> const & m); +00096 +00097 GLM_FUNC_DECL explicit tmat3x4(tmat2x2<T> const & x); +00098 GLM_FUNC_DECL explicit tmat3x4(tmat3x3<T> const & x); +00099 GLM_FUNC_DECL explicit tmat3x4(tmat4x4<T> const & x); +00100 GLM_FUNC_DECL explicit tmat3x4(tmat2x3<T> const & x); +00101 GLM_FUNC_DECL explicit tmat3x4(tmat3x2<T> const & x); +00102 GLM_FUNC_DECL explicit tmat3x4(tmat2x4<T> const & x); +00103 GLM_FUNC_DECL explicit tmat3x4(tmat4x2<T> const & x); +00104 GLM_FUNC_DECL explicit tmat3x4(tmat4x3<T> const & x); +00105 +00106 // Accesses +00107 col_type & operator[](size_type i); +00108 col_type const & operator[](size_type i) const; +00109 +00110 // Unary updatable operators +00111 GLM_FUNC_DECL tmat3x4<T> & operator= (tmat3x4<T> const & m); +00112 template <typename U> +00113 GLM_FUNC_DECL tmat3x4<T> & operator= (tmat3x4<U> const & m); +00114 template <typename U> +00115 GLM_FUNC_DECL tmat3x4<T> & operator+= (U const & s); +00116 template <typename U> +00117 GLM_FUNC_DECL tmat3x4<T> & operator+= (tmat3x4<U> const & m); +00118 template <typename U> +00119 GLM_FUNC_DECL tmat3x4<T> & operator-= (U const & s); +00120 template <typename U> +00121 GLM_FUNC_DECL tmat3x4<T> & operator-= (tmat3x4<U> const & m); +00122 template <typename U> +00123 GLM_FUNC_DECL tmat3x4<T> & operator*= (U const & s); +00124 template <typename U> +00125 GLM_FUNC_DECL tmat3x4<T> & operator*= (tmat3x4<U> const & m); +00126 template <typename U> +00127 GLM_FUNC_DECL tmat3x4<T> & operator/= (U const & s); +00128 +00129 GLM_FUNC_DECL tmat3x4<T> & operator++ (); +00130 GLM_FUNC_DECL tmat3x4<T> & operator-- (); +00131 }; +00132 +00133 // Binary operators +00134 template <typename T> +00135 tmat3x4<T> operator+ ( +00136 tmat3x4<T> const & m, +00137 typename tmat3x4<T>::value_type const & s); +00138 +00139 template <typename T> +00140 tmat3x4<T> operator+ ( +00141 tmat3x4<T> const & m1, +00142 tmat3x4<T> const & m2); +00143 +00144 template <typename T> +00145 tmat3x4<T> operator- ( +00146 tmat3x4<T> const & m, +00147 typename tmat3x4<T>::value_type const & s); +00148 +00149 template <typename T> +00150 tmat3x4<T> operator- ( +00151 tmat3x4<T> const & m1, +00152 tmat3x4<T> const & m2); +00153 +00154 template <typename T> +00155 tmat3x4<T> operator* ( +00156 tmat3x4<T> const & m, +00157 typename tmat3x4<T>::value_type const & s); +00158 +00159 template <typename T> +00160 tmat3x4<T> operator* ( +00161 typename tmat3x4<T>::value_type const & s, +00162 tmat3x4<T> const & m); +00163 +00164 template <typename T> +00165 typename tmat3x4<T>::col_type operator* ( +00166 tmat3x4<T> const & m, +00167 typename tmat3x4<T>::row_type const & v); +00168 +00169 template <typename T> +00170 typename tmat3x4<T>::row_type operator* ( +00171 typename tmat3x4<T>::col_type const & v, +00172 tmat3x4<T> const & m); +00173 +00174 template <typename T> +00175 tmat4x4<T> operator* ( +00176 tmat3x4<T> const & m1, +00177 tmat4x3<T> const & m2); +00178 +00179 template <typename T> +00180 tmat3x4<T> operator/ ( +00181 tmat3x4<T> const & m, +00182 typename tmat3x4<T>::value_type const & s); +00183 +00184 template <typename T> +00185 tmat3x4<T> operator/ ( +00186 typename tmat3x4<T>::value_type const & s, +00187 tmat3x4<T> const & m); +00188 +00189 // Unary constant operators +00190 template <typename T> +00191 tmat3x4<T> const operator- ( +00192 tmat3x4<T> const & m); +00193 +00194 template <typename T> +00195 tmat3x4<T> const operator-- ( +00196 tmat3x4<T> const & m, +00197 int); +00198 +00199 template <typename T> +00200 tmat3x4<T> const operator++ ( +00201 tmat3x4<T> const & m, +00202 int); +00203 +00204 }//namespace detail +00205 +00206 namespace core{ +00207 namespace type{ +00208 namespace precision +00209 { +00213 typedef detail::tmat3x4<lowp_float> lowp_mat3x4; +00217 typedef detail::tmat3x4<mediump_float> mediump_mat3x4; +00221 typedef detail::tmat3x4<highp_float> highp_mat3x4; +00222 +00223 }//namespace precision +00224 }//namespace type +00225 }//namespace core +00226 }//namespace glm +00227 +00228 #ifndef GLM_EXTERNAL_TEMPLATE +00229 #include "type_mat3x4.inl" +00230 #endif +00231 +00232 #endif //glm_core_type_mat3x4 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2006-10-01 +00005 // Updated : 2010-02-11 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_mat4x2.hpp +00009 +00010 #ifndef glm_core_type_mat4x2 +00011 #define glm_core_type_mat4x2 +00012 +00013 #include "type_mat.hpp" +00014 +00015 namespace glm{ +00016 namespace detail +00017 { +00018 template <typename T> struct tvec1; +00019 template <typename T> struct tvec2; +00020 template <typename T> struct tvec3; +00021 template <typename T> struct tvec4; +00022 template <typename T> struct tmat2x2; +00023 template <typename T> struct tmat2x3; +00024 template <typename T> struct tmat2x4; +00025 template <typename T> struct tmat3x2; +00026 template <typename T> struct tmat3x3; +00027 template <typename T> struct tmat3x4; +00028 template <typename T> struct tmat4x2; +00029 template <typename T> struct tmat4x3; +00030 template <typename T> struct tmat4x4; +00031 +00034 template <typename T> +00035 struct tmat4x2 +00036 { +00037 enum ctor{null}; +00038 typedef T value_type; +00039 typedef std::size_t size_type; +00040 typedef tvec2<T> col_type; +00041 typedef tvec4<T> row_type; +00042 static GLM_FUNC_DECL size_type col_size(); +00043 static GLM_FUNC_DECL size_type row_size(); +00044 +00045 typedef tmat4x2<T> type; +00046 typedef tmat2x4<T> transpose_type; +00047 +00048 private: +00049 // Data +00050 col_type value[4]; +00051 +00052 public: +00053 // Constructors +00054 GLM_FUNC_DECL tmat4x2(); +00055 GLM_FUNC_DECL tmat4x2(tmat4x2 const & m); +00056 +00057 GLM_FUNC_DECL explicit tmat4x2( +00058 ctor Null); +00059 GLM_FUNC_DECL explicit tmat4x2( +00060 value_type const & x); +00061 GLM_FUNC_DECL explicit tmat4x2( +00062 value_type const & x0, value_type const & y0, +00063 value_type const & x1, value_type const & y1, +00064 value_type const & x2, value_type const & y2, +00065 value_type const & x3, value_type const & y3); +00066 GLM_FUNC_DECL explicit tmat4x2( +00067 col_type const & v0, +00068 col_type const & v1, +00069 col_type const & v2, +00070 col_type const & v3); +00071 +00073 // Conversions +00074 template <typename U> +00075 GLM_FUNC_DECL explicit tmat4x2( +00076 U const & x); +00077 +00078 template +00079 < +00080 typename X1, typename Y1, +00081 typename X2, typename Y2, +00082 typename X3, typename Y3, +00083 typename X4, typename Y4 +00084 > +00085 GLM_FUNC_DECL explicit tmat4x2( +00086 X1 const & x1, Y1 const & y1, +00087 X2 const & x2, Y2 const & y2, +00088 X3 const & x3, Y3 const & y3, +00089 X4 const & x4, Y4 const & y4); +00090 +00091 template <typename V1, typename V2, typename V3, typename V4> +00092 GLM_FUNC_DECL explicit tmat4x2( +00093 tvec2<V1> const & v1, +00094 tvec2<V2> const & v2, +00095 tvec2<V3> const & v3, +00096 tvec2<V4> const & v4); +00097 +00098 // Matrix conversions +00099 template <typename U> +00100 GLM_FUNC_DECL explicit tmat4x2(tmat4x2<U> const & m); +00101 +00102 GLM_FUNC_DECL explicit tmat4x2(tmat2x2<T> const & x); +00103 GLM_FUNC_DECL explicit tmat4x2(tmat3x3<T> const & x); +00104 GLM_FUNC_DECL explicit tmat4x2(tmat4x4<T> const & x); +00105 GLM_FUNC_DECL explicit tmat4x2(tmat2x3<T> const & x); +00106 GLM_FUNC_DECL explicit tmat4x2(tmat3x2<T> const & x); +00107 GLM_FUNC_DECL explicit tmat4x2(tmat2x4<T> const & x); +00108 GLM_FUNC_DECL explicit tmat4x2(tmat4x3<T> const & x); +00109 GLM_FUNC_DECL explicit tmat4x2(tmat3x4<T> const & x); +00110 +00111 // Accesses +00112 GLM_FUNC_DECL col_type & operator[](size_type i); +00113 GLM_FUNC_DECL col_type const & operator[](size_type i) const; +00114 +00115 // Unary updatable operators +00116 GLM_FUNC_DECL tmat4x2<T>& operator= (tmat4x2<T> const & m); +00117 template <typename U> +00118 GLM_FUNC_DECL tmat4x2<T>& operator= (tmat4x2<U> const & m); +00119 template <typename U> +00120 GLM_FUNC_DECL tmat4x2<T>& operator+= (U const & s); +00121 template <typename U> +00122 GLM_FUNC_DECL tmat4x2<T>& operator+= (tmat4x2<U> const & m); +00123 template <typename U> +00124 GLM_FUNC_DECL tmat4x2<T>& operator-= (U const & s); +00125 template <typename U> +00126 GLM_FUNC_DECL tmat4x2<T>& operator-= (tmat4x2<U> const & m); +00127 template <typename U> +00128 GLM_FUNC_DECL tmat4x2<T>& operator*= (U const & s); +00129 template <typename U> +00130 GLM_FUNC_DECL tmat4x2<T>& operator*= (tmat4x2<U> const & m); +00131 template <typename U> +00132 GLM_FUNC_DECL tmat4x2<T>& operator/= (U const & s); +00133 +00134 GLM_FUNC_DECL tmat4x2<T>& operator++ (); +00135 GLM_FUNC_DECL tmat4x2<T>& operator-- (); +00136 }; +00137 +00138 // Binary operators +00139 template <typename T> +00140 tmat4x2<T> operator+ ( +00141 tmat4x2<T> const & m, +00142 typename tmat4x2<T>::value_type const & s); +00143 +00144 template <typename T> +00145 tmat4x2<T> operator+ ( +00146 tmat4x2<T> const & m1, +00147 tmat4x2<T> const & m2); +00148 +00149 template <typename T> +00150 tmat4x2<T> operator- ( +00151 tmat4x2<T> const & m, +00152 typename tmat4x2<T>::value_type const & s); +00153 +00154 template <typename T> +00155 tmat4x2<T> operator- ( +00156 tmat4x2<T> const & m1, +00157 tmat4x2<T> const & m2); +00158 +00159 template <typename T> +00160 tmat4x2<T> operator* ( +00161 tmat4x2<T> const & m, +00162 typename tmat4x2<T>::value_type const & s); +00163 +00164 template <typename T> +00165 tmat4x2<T> operator* ( +00166 typename tmat4x2<T>::value_type const & s, +00167 tmat4x2<T> const & m); +00168 +00169 template <typename T> +00170 typename tmat4x2<T>::col_type operator* ( +00171 tmat4x2<T> const & m, +00172 typename tmat4x2<T>::row_type const & v); +00173 +00174 template <typename T> +00175 typename tmat4x2<T>::row_type operator* ( +00176 typename tmat4x2<T>::col_type const & v, +00177 tmat4x2<T> const & m); +00178 +00179 template <typename T> +00180 tmat2x2<T> operator* ( +00181 tmat4x2<T> const & m1, +00182 tmat2x4<T> const & m2); +00183 +00184 template <typename T> +00185 tmat4x2<T> operator/ ( +00186 tmat4x2<T> const & m, +00187 typename tmat4x2<T>::value_type const & s); +00188 +00189 template <typename T> +00190 tmat4x2<T> operator/ ( +00191 typename tmat4x2<T>::value_type const & s, +00192 tmat4x2<T> const & m); +00193 +00194 // Unary constant operators +00195 template <typename T> +00196 tmat4x2<T> const operator- ( +00197 tmat4x2<T> const & m); +00198 +00199 template <typename T> +00200 tmat4x2<T> const operator-- ( +00201 tmat4x2<T> const & m, +00202 int); +00203 +00204 template <typename T> +00205 tmat4x2<T> const operator++ ( +00206 tmat4x2<T> const & m, +00207 int); +00208 +00209 } //namespace detail +00210 +00211 namespace core{ +00212 namespace type{ +00213 namespace precision +00214 { +00219 typedef detail::tmat4x2<lowp_float> lowp_mat4x2; +00220 +00225 typedef detail::tmat4x2<mediump_float> mediump_mat4x2; +00226 +00231 typedef detail::tmat4x2<highp_float> highp_mat4x2; +00232 +00233 }//namespace precision +00234 }//namespace type +00235 }//namespace core +00236 }//namespace glm +00237 +00238 #ifndef GLM_EXTERNAL_TEMPLATE +00239 #include "type_mat4x2.inl" +00240 #endif +00241 +00242 #endif //glm_core_type_mat4x2 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2006-08-04 +00005 // Updated : 2010-02-11 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_mat4x3.hpp +00009 +00010 #ifndef glm_core_type_mat4x3 +00011 #define glm_core_type_mat4x3 +00012 +00013 #include "type_mat.hpp" +00014 +00015 namespace glm{ +00016 namespace detail +00017 { +00018 template <typename T> struct tvec1; +00019 template <typename T> struct tvec2; +00020 template <typename T> struct tvec3; +00021 template <typename T> struct tvec4; +00022 template <typename T> struct tmat2x2; +00023 template <typename T> struct tmat2x3; +00024 template <typename T> struct tmat2x4; +00025 template <typename T> struct tmat3x2; +00026 template <typename T> struct tmat3x3; +00027 template <typename T> struct tmat3x4; +00028 template <typename T> struct tmat4x2; +00029 template <typename T> struct tmat4x3; +00030 template <typename T> struct tmat4x4; +00031 +00034 template <typename T> +00035 struct tmat4x3 +00036 { +00037 enum ctor{null}; +00038 typedef T value_type; +00039 typedef std::size_t size_type; +00040 typedef tvec3<T> col_type; +00041 typedef tvec4<T> row_type; +00042 static GLM_FUNC_DECL size_type col_size(); +00043 static GLM_FUNC_DECL size_type row_size(); +00044 +00045 typedef tmat4x3<T> type; +00046 typedef tmat3x4<T> transpose_type; +00047 +00048 private: +00049 // Data +00050 col_type value[4]; +00051 +00052 public: +00053 // Constructors +00054 GLM_FUNC_DECL tmat4x3(); +00055 GLM_FUNC_DECL tmat4x3(tmat4x3 const & m); +00056 +00057 GLM_FUNC_DECL explicit tmat4x3( +00058 ctor Null); +00059 GLM_FUNC_DECL explicit tmat4x3( +00060 value_type const & x); +00061 GLM_FUNC_DECL explicit tmat4x3( +00062 value_type const & x0, value_type const & y0, value_type const & z0, +00063 value_type const & x1, value_type const & y1, value_type const & z1, +00064 value_type const & x2, value_type const & y2, value_type const & z2, +00065 value_type const & x3, value_type const & y3, value_type const & z3); +00066 GLM_FUNC_DECL explicit tmat4x3( +00067 col_type const & v0, +00068 col_type const & v1, +00069 col_type const & v2, +00070 col_type const & v3); +00071 +00073 // Conversions +00074 template <typename U> +00075 GLM_FUNC_DECL explicit tmat4x3( +00076 U const & x); +00077 +00078 template < +00079 typename X1, typename Y1, typename Z1, +00080 typename X2, typename Y2, typename Z2, +00081 typename X3, typename Y3, typename Z3, +00082 typename X4, typename Y4, typename Z4> +00083 GLM_FUNC_DECL explicit tmat4x3( +00084 X1 const & x1, Y1 const & y1, Z1 const & z1, +00085 X2 const & x2, Y2 const & y2, Z2 const & z2, +00086 X3 const & x3, Y3 const & y3, Z3 const & z3, +00087 X4 const & x4, Y4 const & y4, Z4 const & z4); +00088 +00089 template <typename V1, typename V2, typename V3, typename V4> +00090 GLM_FUNC_DECL explicit tmat4x3( +00091 tvec3<V1> const & v1, +00092 tvec3<V2> const & v2, +00093 tvec3<V3> const & v3, +00094 tvec3<V4> const & v4); +00095 +00096 // Matrix conversions +00097 template <typename U> +00098 GLM_FUNC_DECL explicit tmat4x3(tmat4x3<U> const & m); +00099 +00100 GLM_FUNC_DECL explicit tmat4x3(tmat2x2<T> const & x); +00101 GLM_FUNC_DECL explicit tmat4x3(tmat3x3<T> const & x); +00102 GLM_FUNC_DECL explicit tmat4x3(tmat4x4<T> const & x); +00103 GLM_FUNC_DECL explicit tmat4x3(tmat2x3<T> const & x); +00104 GLM_FUNC_DECL explicit tmat4x3(tmat3x2<T> const & x); +00105 GLM_FUNC_DECL explicit tmat4x3(tmat2x4<T> const & x); +00106 GLM_FUNC_DECL explicit tmat4x3(tmat4x2<T> const & x); +00107 GLM_FUNC_DECL explicit tmat4x3(tmat3x4<T> const & x); +00108 +00109 // Accesses +00110 col_type & operator[](size_type i); +00111 col_type const & operator[](size_type i) const; +00112 +00113 // Unary updatable operators +00114 GLM_FUNC_DECL tmat4x3<T> & operator= (tmat4x3<T> const & m); +00115 template <typename U> +00116 GLM_FUNC_DECL tmat4x3<T> & operator= (tmat4x3<U> const & m); +00117 template <typename U> +00118 GLM_FUNC_DECL tmat4x3<T> & operator+= (U const & s); +00119 template <typename U> +00120 GLM_FUNC_DECL tmat4x3<T> & operator+= (tmat4x3<U> const & m); +00121 template <typename U> +00122 GLM_FUNC_DECL tmat4x3<T> & operator-= (U const & s); +00123 template <typename U> +00124 GLM_FUNC_DECL tmat4x3<T> & operator-= (tmat4x3<U> const & m); +00125 template <typename U> +00126 GLM_FUNC_DECL tmat4x3<T> & operator*= (U const & s); +00127 template <typename U> +00128 GLM_FUNC_DECL tmat4x3<T> & operator*= (tmat4x3<U> const & m); +00129 template <typename U> +00130 GLM_FUNC_DECL tmat4x3<T> & operator/= (U const & s); +00131 +00132 GLM_FUNC_DECL tmat4x3<T> & operator++ (); +00133 GLM_FUNC_DECL tmat4x3<T> & operator-- (); +00134 }; +00135 +00136 // Binary operators +00137 template <typename T> +00138 tmat4x3<T> operator+ ( +00139 tmat4x3<T> const & m, +00140 typename tmat4x3<T>::value_type const & s); +00141 +00142 template <typename T> +00143 tmat4x3<T> operator+ ( +00144 tmat4x3<T> const & m1, +00145 tmat4x3<T> const & m2); +00146 +00147 template <typename T> +00148 tmat4x3<T> operator- ( +00149 tmat4x3<T> const & m, +00150 typename tmat4x3<T>::value_type const & s); +00151 +00152 template <typename T> +00153 tmat4x3<T> operator- ( +00154 tmat4x3<T> const & m1, +00155 tmat4x3<T> const & m2); +00156 +00157 template <typename T> +00158 tmat4x3<T> operator* ( +00159 tmat4x3<T> const & m, +00160 typename tmat4x3<T>::value_type const & s); +00161 +00162 template <typename T> +00163 tmat4x3<T> operator* ( +00164 typename tmat4x3<T>::value_type const & s, +00165 tmat4x3<T> const & m); +00166 +00167 template <typename T> +00168 typename tmat4x3<T>::col_type operator* ( +00169 tmat4x3<T> const & m, +00170 typename tmat4x3<T>::row_type const & v); +00171 +00172 template <typename T> +00173 typename tmat4x3<T>::row_type operator* ( +00174 typename tmat4x3<T>::col_type const & v, +00175 tmat4x3<T> const & m); +00176 +00177 template <typename T> +00178 tmat3x3<T> operator* ( +00179 tmat4x3<T> const & m1, +00180 tmat3x4<T> const & m2); +00181 +00182 template <typename T> +00183 tmat4x3<T> operator/ ( +00184 tmat4x3<T> const & m, +00185 typename tmat4x3<T>::value_type const & s); +00186 +00187 template <typename T> +00188 tmat4x3<T> operator/ ( +00189 typename tmat4x3<T>::value_type const & s, +00190 tmat4x3<T> const & m); +00191 +00192 // Unary constant operators +00193 template <typename T> +00194 tmat4x3<T> const operator- ( +00195 tmat4x3<T> const & m); +00196 +00197 template <typename T> +00198 tmat4x3<T> const operator-- ( +00199 tmat4x3<T> const & m, +00200 int); +00201 +00202 template <typename T> +00203 tmat4x3<T> const operator++ ( +00204 tmat4x3<T> const & m, +00205 int); +00206 +00207 }//namespace detail +00208 +00209 namespace core{ +00210 namespace type{ +00211 namespace precision +00212 { +00217 typedef detail::tmat4x3<lowp_float> lowp_mat4x3; +00218 +00223 typedef detail::tmat4x3<mediump_float> mediump_mat4x3; +00224 +00229 typedef detail::tmat4x3<highp_float> highp_mat4x3; +00230 +00231 }//namespace precision +00232 }//namespace type +00233 }//namespace core +00234 }//namespace glm +00235 +00236 #ifndef GLM_EXTERNAL_TEMPLATE +00237 #include "type_mat4x3.inl" +00238 #endif //GLM_EXTERNAL_TEMPLATE +00239 +00240 #endif//glm_core_type_mat4x3 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-01-27 +00005 // Updated : 2011-06-02 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_mat4x4.hpp +00009 +00010 #ifndef glm_core_type_mat4x4 +00011 #define glm_core_type_mat4x4 +00012 +00013 #include "type_mat.hpp" +00014 +00015 namespace glm{ +00016 namespace detail +00017 { +00018 template <typename T> struct tvec1; +00019 template <typename T> struct tvec2; +00020 template <typename T> struct tvec3; +00021 template <typename T> struct tvec4; +00022 template <typename T> struct tmat2x2; +00023 template <typename T> struct tmat2x3; +00024 template <typename T> struct tmat2x4; +00025 template <typename T> struct tmat3x2; +00026 template <typename T> struct tmat3x3; +00027 template <typename T> struct tmat3x4; +00028 template <typename T> struct tmat4x2; +00029 template <typename T> struct tmat4x3; +00030 template <typename T> struct tmat4x4; +00031 +00034 template <typename T> +00035 struct tmat4x4 +00036 { +00037 enum ctor{null}; +00038 typedef T value_type; +00039 typedef std::size_t size_type; +00040 typedef tvec4<T> col_type; +00041 typedef tvec4<T> row_type; +00042 static GLM_FUNC_DECL size_type col_size(); +00043 static GLM_FUNC_DECL size_type row_size(); +00044 +00045 typedef tmat4x4<T> type; +00046 typedef tmat4x4<T> transpose_type; +00047 +00048 public: +00049 // Implementation detail +00050 GLM_FUNC_DECL tmat4x4<T> _inverse() const; +00051 +00052 private: +00053 // Data +00054 col_type value[4]; +00055 +00056 public: +00057 // Constructors +00058 GLM_FUNC_DECL tmat4x4(); +00059 GLM_FUNC_DECL tmat4x4(tmat4x4 const & m); +00060 +00061 GLM_FUNC_DECL explicit tmat4x4( +00062 ctor Null); +00063 GLM_FUNC_DECL explicit tmat4x4( +00064 value_type const & x); +00065 GLM_FUNC_DECL explicit tmat4x4( +00066 value_type const & x0, value_type const & y0, value_type const & z0, value_type const & w0, +00067 value_type const & x1, value_type const & y1, value_type const & z1, value_type const & w1, +00068 value_type const & x2, value_type const & y2, value_type const & z2, value_type const & w2, +00069 value_type const & x3, value_type const & y3, value_type const & z3, value_type const & w3); +00070 GLM_FUNC_DECL explicit tmat4x4( +00071 col_type const & v0, +00072 col_type const & v1, +00073 col_type const & v2, +00074 col_type const & v3); +00075 +00077 // Conversions +00078 template <typename U> +00079 GLM_FUNC_DECL explicit tmat4x4( +00080 U const & x); +00081 +00082 template < +00083 typename X1, typename Y1, typename Z1, typename W1, +00084 typename X2, typename Y2, typename Z2, typename W2, +00085 typename X3, typename Y3, typename Z3, typename W3, +00086 typename X4, typename Y4, typename Z4, typename W4> +00087 GLM_FUNC_DECL explicit tmat4x4( +00088 X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1, +00089 X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2, +00090 X3 const & x3, Y3 const & y3, Z3 const & z3, W3 const & w3, +00091 X4 const & x4, Y4 const & y4, Z4 const & z4, W4 const & w4); +00092 +00093 template <typename V1, typename V2, typename V3, typename V4> +00094 GLM_FUNC_DECL explicit tmat4x4( +00095 tvec4<V1> const & v1, +00096 tvec4<V2> const & v2, +00097 tvec4<V3> const & v3, +00098 tvec4<V4> const & v4); +00099 +00100 // Matrix conversions +00101 template <typename U> +00102 GLM_FUNC_DECL explicit tmat4x4(tmat4x4<U> const & m); +00103 +00104 GLM_FUNC_DECL explicit tmat4x4(tmat2x2<T> const & x); +00105 GLM_FUNC_DECL explicit tmat4x4(tmat3x3<T> const & x); +00106 GLM_FUNC_DECL explicit tmat4x4(tmat2x3<T> const & x); +00107 GLM_FUNC_DECL explicit tmat4x4(tmat3x2<T> const & x); +00108 GLM_FUNC_DECL explicit tmat4x4(tmat2x4<T> const & x); +00109 GLM_FUNC_DECL explicit tmat4x4(tmat4x2<T> const & x); +00110 GLM_FUNC_DECL explicit tmat4x4(tmat3x4<T> const & x); +00111 GLM_FUNC_DECL explicit tmat4x4(tmat4x3<T> const & x); +00112 +00113 // Accesses +00114 GLM_FUNC_DECL col_type & operator[](size_type i); +00115 GLM_FUNC_DECL col_type const & operator[](size_type i) const; +00116 +00117 // Unary updatable operators +00118 GLM_FUNC_DECL tmat4x4<T> & operator= (tmat4x4<T> const & m); +00119 template <typename U> +00120 GLM_FUNC_DECL tmat4x4<T> & operator= (tmat4x4<U> const & m); +00121 template <typename U> +00122 GLM_FUNC_DECL tmat4x4<T> & operator+= (U const & s); +00123 template <typename U> +00124 GLM_FUNC_DECL tmat4x4<T> & operator+= (tmat4x4<U> const & m); +00125 template <typename U> +00126 GLM_FUNC_DECL tmat4x4<T> & operator-= (U const & s); +00127 template <typename U> +00128 GLM_FUNC_DECL tmat4x4<T> & operator-= (tmat4x4<U> const & m); +00129 template <typename U> +00130 GLM_FUNC_DECL tmat4x4<T> & operator*= (U const & s); +00131 template <typename U> +00132 GLM_FUNC_DECL tmat4x4<T> & operator*= (tmat4x4<U> const & m); +00133 template <typename U> +00134 GLM_FUNC_DECL tmat4x4<T> & operator/= (U const & s); +00135 template <typename U> +00136 GLM_FUNC_DECL tmat4x4<T> & operator/= (tmat4x4<U> const & m); +00137 GLM_FUNC_DECL tmat4x4<T> & operator++ (); +00138 GLM_FUNC_DECL tmat4x4<T> & operator-- (); +00139 }; +00140 +00141 // Binary operators +00142 template <typename T> +00143 tmat4x4<T> operator+ ( +00144 tmat4x4<T> const & m, +00145 typename tmat4x4<T>::value_type const & s); +00146 +00147 template <typename T> +00148 tmat4x4<T> operator+ ( +00149 typename tmat4x4<T>::value_type const & s, +00150 tmat4x4<T> const & m); +00151 +00152 template <typename T> +00153 tmat4x4<T> operator+ ( +00154 tmat4x4<T> const & m1, +00155 tmat4x4<T> const & m2); +00156 +00157 template <typename T> +00158 tmat4x4<T> operator- ( +00159 tmat4x4<T> const & m, +00160 typename tmat4x4<T>::value_type const & s); +00161 +00162 template <typename T> +00163 tmat4x4<T> operator- ( +00164 typename tmat4x4<T>::value_type const & s, +00165 tmat4x4<T> const & m); +00166 +00167 template <typename T> +00168 tmat4x4<T> operator- ( +00169 tmat4x4<T> const & m1, +00170 tmat4x4<T> const & m2); +00171 +00172 template <typename T> +00173 tmat4x4<T> operator* ( +00174 tmat4x4<T> const & m, +00175 typename tmat4x4<T>::value_type const & s); +00176 +00177 template <typename T> +00178 tmat4x4<T> operator* ( +00179 typename tmat4x4<T>::value_type const & s, +00180 tmat4x4<T> const & m); +00181 +00182 template <typename T> +00183 typename tmat4x4<T>::col_type operator* ( +00184 tmat4x4<T> const & m, +00185 typename tmat4x4<T>::row_type const & v); +00186 +00187 template <typename T> +00188 typename tmat4x4<T>::row_type operator* ( +00189 typename tmat4x4<T>::col_type const & v, +00190 tmat4x4<T> const & m); +00191 +00192 template <typename T> +00193 tmat4x4<T> operator* ( +00194 tmat4x4<T> const & m1, +00195 tmat4x4<T> const & m2); +00196 +00197 template <typename T> +00198 tmat4x4<T> operator/ ( +00199 tmat4x4<T> const & m, +00200 typename tmat4x4<T>::value_type const & s); +00201 +00202 template <typename T> +00203 tmat4x4<T> operator/ ( +00204 typename tmat4x4<T>::value_type const & s, +00205 tmat4x4<T> const & m); +00206 +00207 template <typename T> +00208 typename tmat4x4<T>::col_type operator/ ( +00209 tmat4x4<T> const & m, +00210 typename tmat4x4<T>::row_type const & v); +00211 +00212 template <typename T> +00213 typename tmat4x4<T>::row_type operator/ ( +00214 typename tmat4x4<T>::col_type & v, +00215 tmat4x4<T> const & m); +00216 +00217 template <typename T> +00218 tmat4x4<T> operator/ ( +00219 tmat4x4<T> const & m1, +00220 tmat4x4<T> const & m2); +00221 +00222 // Unary constant operators +00223 template <typename T> +00224 tmat4x4<T> const operator- ( +00225 tmat4x4<T> const & m); +00226 +00227 template <typename T> +00228 tmat4x4<T> const operator-- ( +00229 tmat4x4<T> const & m, int); +00230 +00231 template <typename T> +00232 tmat4x4<T> const operator++ ( +00233 tmat4x4<T> const & m, int); +00234 +00235 } //namespace detail +00236 +00237 namespace core{ +00238 namespace type{ +00239 namespace precision +00240 { +00245 typedef detail::tmat4x4<lowp_float> lowp_mat4; +00246 +00251 typedef detail::tmat4x4<mediump_float> mediump_mat4; +00252 +00257 typedef detail::tmat4x4<highp_float> highp_mat4; +00258 +00263 typedef detail::tmat4x4<lowp_float> lowp_mat4x4; +00264 +00269 typedef detail::tmat4x4<mediump_float> mediump_mat4x4; +00270 +00275 typedef detail::tmat4x4<highp_float> highp_mat4x4; +00276 +00277 }//namespace precision +00278 }//namespace type +00279 }//namespace core +00280 }//namespace glm +00281 +00282 #ifndef GLM_EXTERNAL_TEMPLATE +00283 #include "type_mat4x4.inl" +00284 #endif//GLM_EXTERNAL_TEMPLATE +00285 +00286 #endif//glm_core_type_mat4x4 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2009-06-04 +00005 // Updated : 2009-06-04 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtc/type_precision.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTC_half +00012 // - GLM_GTC_quaternion +00014 +00015 #ifndef glm_gtc_type_precision +00016 #define glm_gtc_type_precision +00017 +00018 // Dependency: +00019 #include "../glm.hpp" +00020 #include "../gtc/half_float.hpp" +00021 #include "../gtc/quaternion.hpp" +00022 +00023 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00024 # pragma message("GLM: GLM_GTC_type_precision extension included") +00025 #endif +00026 +00027 namespace glm{ +00028 namespace gtc{ +00029 namespace type_precision +00030 { +00032 // Dependences +00033 +00034 using namespace gtc::half_float; +00035 using namespace gtc::quaternion; +00036 +00038 // Signed int vector types +00039 +00042 +00043 typedef detail::int8 int8; +00044 typedef detail::int16 int16; +00045 typedef detail::int32 int32; +00046 typedef detail::int64 int64; +00047 +00048 typedef int8 i8; +00049 typedef int16 i16; +00050 typedef int32 i32; +00051 typedef int64 i64; +00052 +00053 //typedef i8 i8vec1; //!< \brief 8bit signed integer scalar. (from GLM_GTC_type_precision extension) +00054 typedef detail::tvec2<i8> i8vec2; +00055 typedef detail::tvec3<i8> i8vec3; +00056 typedef detail::tvec4<i8> i8vec4; +00057 +00058 //typedef i16 i16vec1; //!< \brief 16bit signed integer scalar. (from GLM_GTC_type_precision extension) +00059 typedef detail::tvec2<i16> i16vec2; +00060 typedef detail::tvec3<i16> i16vec3; +00061 typedef detail::tvec4<i16> i16vec4; +00062 +00063 //typedef i32 i32vec1; //!< \brief 32bit signed integer scalar. (from GLM_GTC_type_precision extension) +00064 typedef detail::tvec2<i32> i32vec2; +00065 typedef detail::tvec3<i32> i32vec3; +00066 typedef detail::tvec4<i32> i32vec4; +00067 +00068 //typedef i64 i64vec1; //!< \brief 32bit signed integer scalar. (from GLM_GTC_type_precision extension) +00069 typedef detail::tvec2<i64> i64vec2; +00070 typedef detail::tvec3<i64> i64vec3; +00071 typedef detail::tvec4<i64> i64vec4; +00072 +00074 // Unsigned int vector types +00075 +00076 typedef detail::uint8 uint8; +00077 typedef detail::uint16 uint16; +00078 typedef detail::uint32 uint32; +00079 typedef detail::uint64 uint64; +00080 +00081 typedef uint8 u8; +00082 typedef uint16 u16; +00083 typedef uint32 u32; +00084 typedef uint64 u64; +00085 +00086 //typedef u8 u8vec1; //!< \brief 8bit unsigned integer scalar. (from GLM_GTC_type_precision extension) +00087 typedef detail::tvec2<u8> u8vec2; +00088 typedef detail::tvec3<u8> u8vec3; +00089 typedef detail::tvec4<u8> u8vec4; +00090 +00091 //typedef u16 u16vec1; //!< \brief 16bit unsigned integer scalar. (from GLM_GTC_type_precision extension) +00092 typedef detail::tvec2<u16> u16vec2; +00093 typedef detail::tvec3<u16> u16vec3; +00094 typedef detail::tvec4<u16> u16vec4; +00095 +00096 //typedef u32 u32vec1; //!< \brief 32bit unsigned integer scalar. (from GLM_GTC_type_precision extension) +00097 typedef detail::tvec2<u32> u32vec2; +00098 typedef detail::tvec3<u32> u32vec3; +00099 typedef detail::tvec4<u32> u32vec4; +00100 +00101 //typedef u64 u64vec1; //!< \brief 64bit unsigned integer scalar. (from GLM_GTC_type_precision extension) +00102 typedef detail::tvec2<u64> u64vec2; +00103 typedef detail::tvec3<u64> u64vec3; +00104 typedef detail::tvec4<u64> u64vec4; +00105 +00107 // Float vector types +00108 +00109 typedef detail::float16 float16; +00110 typedef detail::float32 float32; +00111 typedef detail::float64 float64; +00112 +00113 typedef float16 f16; +00114 typedef float32 f32; +00115 typedef float64 f64; +00116 +00117 typedef detail::tvec2<float> fvec2; +00118 typedef detail::tvec3<float> fvec3; +00119 typedef detail::tvec4<float> fvec4; +00120 +00121 //typedef f16 f16vec1; //!< \brief Half-precision floating-point scalar. (from GLM_GTC_type_precision extension) +00122 typedef detail::tvec2<f16> f16vec2; +00123 typedef detail::tvec3<f16> f16vec3; +00124 typedef detail::tvec4<f16> f16vec4; +00125 +00126 //typedef f32 f32vec1; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension) +00127 typedef detail::tvec2<f32> f32vec2; +00128 typedef detail::tvec3<f32> f32vec3; +00129 typedef detail::tvec4<f32> f32vec4; +00130 +00131 //typedef f64 f64vec1; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension) +00132 typedef detail::tvec2<f64> f64vec2; +00133 typedef detail::tvec3<f64> f64vec3; +00134 typedef detail::tvec4<f64> f64vec4; +00135 +00137 // Float matrix types +00138 +00139 //typedef f32 fmat1; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension) +00140 typedef detail::tmat2x2<f32> fmat2; +00141 typedef detail::tmat3x3<f32> fmat3; +00142 typedef detail::tmat4x4<f32> fmat4; +00143 +00144 //typedef f32 fmat1x1; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension) +00145 typedef detail::tmat2x2<f32> fmat2x2; +00146 typedef detail::tmat2x3<f32> fmat2x3; +00147 typedef detail::tmat2x4<f32> fmat2x4; +00148 typedef detail::tmat3x2<f32> fmat3x2; +00149 typedef detail::tmat3x3<f32> fmat3x3; +00150 typedef detail::tmat3x4<f32> fmat3x4; +00151 typedef detail::tmat4x2<f32> fmat4x2; +00152 typedef detail::tmat4x3<f32> fmat4x3; +00153 typedef detail::tmat4x4<f32> fmat4x4; +00154 +00155 //typedef f16 f16mat1; //!< \brief Half-precision floating-point scalar. (from GLM_GTC_type_precision extension) +00156 typedef detail::tmat2x2<f16> f16mat2; +00157 typedef detail::tmat3x3<f16> f16mat3; +00158 typedef detail::tmat4x4<f16> f16mat4; +00159 +00160 //typedef f16 f16mat1x1; //!< \brief Half-precision floating-point scalar. (from GLM_GTC_type_precision extension) +00161 typedef detail::tmat2x2<f16> f16mat2x2; +00162 typedef detail::tmat2x3<f16> f16mat2x3; +00163 typedef detail::tmat2x4<f16> f16mat2x4; +00164 typedef detail::tmat3x2<f16> f16mat3x2; +00165 typedef detail::tmat3x3<f16> f16mat3x3; +00166 typedef detail::tmat3x4<f16> f16mat3x4; +00167 typedef detail::tmat4x2<f16> f16mat4x2; +00168 typedef detail::tmat4x3<f16> f16mat4x3; +00169 typedef detail::tmat4x4<f16> f16mat4x4; +00170 +00171 //typedef f32 f32mat1; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension) +00172 typedef detail::tmat2x2<f32> f32mat2; +00173 typedef detail::tmat3x3<f32> f32mat3; +00174 typedef detail::tmat4x4<f32> f32mat4; +00175 +00176 //typedef f32 f32mat1x1; //!< \brief Single-precision floating-point scalar. (from GLM_GTC_type_precision extension) +00177 typedef detail::tmat2x2<f32> f32mat2x2; +00178 typedef detail::tmat2x3<f32> f32mat2x3; +00179 typedef detail::tmat2x4<f32> f32mat2x4; +00180 typedef detail::tmat3x2<f32> f32mat3x2; +00181 typedef detail::tmat3x3<f32> f32mat3x3; +00182 typedef detail::tmat3x4<f32> f32mat3x4; +00183 typedef detail::tmat4x2<f32> f32mat4x2; +00184 typedef detail::tmat4x3<f32> f32mat4x3; +00185 typedef detail::tmat4x4<f32> f32mat4x4; +00186 +00187 //typedef f64 f64mat1; //!< \brief Double-precision floating-point scalar. (from GLM_GTC_type_precision extension) +00188 typedef detail::tmat2x2<f64> f64mat2; +00189 typedef detail::tmat3x3<f64> f64mat3; +00190 typedef detail::tmat4x4<f64> f64mat4; +00191 +00192 //typedef f64 f64mat1x1; //!< \brief Double-precision floating-point scalar. (from GLM_GTC_type_precision extension) +00193 typedef detail::tmat2x2<f64> f64mat2x2; +00194 typedef detail::tmat2x3<f64> f64mat2x3; +00195 typedef detail::tmat2x4<f64> f64mat2x4; +00196 typedef detail::tmat3x2<f64> f64mat3x2; +00197 typedef detail::tmat3x3<f64> f64mat3x3; +00198 typedef detail::tmat3x4<f64> f64mat3x4; +00199 typedef detail::tmat4x2<f64> f64mat4x2; +00200 typedef detail::tmat4x3<f64> f64mat4x3; +00201 typedef detail::tmat4x4<f64> f64mat4x4; +00202 +00204 // Float quaternion types +00205 +00206 typedef detail::tquat<f16> f16quat; +00207 typedef detail::tquat<f32> f32quat; +00208 typedef detail::tquat<f64> f64quat; +00209 +00211 +00212 }//namespace type_precision +00213 }//namespace gtc +00214 }//namespace glm +00215 +00216 #include "type_precision.inl" +00217 +00218 namespace glm{using namespace gtc::type_precision;} +00219 +00220 #endif//glm_gtc_type_precision +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2009-05-06 +00005 // Updated : 2010-04-30 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtc/type_ptr.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtc_type_ptr +00014 #define glm_gtc_type_ptr +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 #include <cstring> +00019 +00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00021 # pragma message("GLM: GLM_GTC_type_ptr extension included") +00022 #endif +00023 +00024 namespace glm{ +00025 namespace gtc{ +00026 namespace type_ptr +00027 { +00028 +00031 +00034 template<typename T> +00035 GLM_FUNC_QUALIFIER T const * value_ptr +00036 ( +00037 detail::tvec2<T> const & vec +00038 ) +00039 { +00040 return &(vec.x); +00041 } +00042 +00045 template<typename T> +00046 GLM_FUNC_QUALIFIER T * value_ptr +00047 ( +00048 detail::tvec2<T> & vec +00049 ) +00050 { +00051 return &(vec.x); +00052 } +00053 +00056 template<typename T> +00057 GLM_FUNC_QUALIFIER T const * value_ptr +00058 ( +00059 detail::tvec3<T> const & vec +00060 ) +00061 { +00062 return &(vec.x); +00063 } +00064 +00067 template<typename T> +00068 GLM_FUNC_QUALIFIER T * value_ptr +00069 ( +00070 detail::tvec3<T> & vec +00071 ) +00072 { +00073 return &(vec.x); +00074 } +00075 +00078 template<typename T> +00079 GLM_FUNC_QUALIFIER T const * value_ptr +00080 ( +00081 detail::tvec4<T> const & vec +00082 ) +00083 { +00084 return &(vec.x); +00085 } +00086 +00089 template<typename T> +00090 GLM_FUNC_QUALIFIER T * value_ptr +00091 ( +00092 detail::tvec4<T> & vec +00093 ) +00094 { +00095 return &(vec.x); +00096 } +00097 +00100 template<typename T> +00101 GLM_FUNC_QUALIFIER T const * value_ptr +00102 ( +00103 detail::tmat2x2<T> const & mat +00104 ) +00105 { +00106 return &(mat[0].x); +00107 } +00108 +00111 template<typename T> +00112 GLM_FUNC_QUALIFIER T * value_ptr +00113 ( +00114 detail::tmat2x2<T> & mat +00115 ) +00116 { +00117 return &(mat[0].x); +00118 } +00119 +00122 template<typename T> +00123 GLM_FUNC_QUALIFIER T const * value_ptr +00124 ( +00125 detail::tmat3x3<T> const & mat +00126 ) +00127 { +00128 return &(mat[0].x); +00129 } +00130 +00133 template<typename T> +00134 GLM_FUNC_QUALIFIER T * value_ptr +00135 ( +00136 detail::tmat3x3<T> & mat +00137 ) +00138 { +00139 return &(mat[0].x); +00140 } +00141 +00144 template<typename T> +00145 GLM_FUNC_QUALIFIER T const * value_ptr +00146 ( +00147 detail::tmat4x4<T> const & mat +00148 ) +00149 { +00150 return &(mat[0].x); +00151 } +00152 +00155 template<typename T> +00156 GLM_FUNC_QUALIFIER T * value_ptr +00157 ( +00158 detail::tmat4x4<T> & mat +00159 ) +00160 { +00161 return &(mat[0].x); +00162 } +00163 +00166 template<typename T> +00167 GLM_FUNC_QUALIFIER T const * value_ptr +00168 ( +00169 detail::tmat2x3<T> const & mat +00170 ) +00171 { +00172 return &(mat[0].x); +00173 } +00174 +00177 template<typename T> +00178 GLM_FUNC_QUALIFIER T * value_ptr +00179 ( +00180 detail::tmat2x3<T> & mat +00181 ) +00182 { +00183 return &(mat[0].x); +00184 } +00185 +00188 template<typename T> +00189 GLM_FUNC_QUALIFIER T const * value_ptr +00190 ( +00191 detail::tmat3x2<T> const & mat +00192 ) +00193 { +00194 return &(mat[0].x); +00195 } +00196 +00199 template<typename T> +00200 GLM_FUNC_QUALIFIER T * value_ptr +00201 ( +00202 detail::tmat3x2<T> & mat +00203 ) +00204 { +00205 return &(mat[0].x); +00206 } +00207 +00210 template<typename T> +00211 GLM_FUNC_QUALIFIER T const * value_ptr +00212 ( +00213 detail::tmat2x4<T> const & mat +00214 ) +00215 { +00216 return &(mat[0].x); +00217 } +00218 +00221 template<typename T> +00222 GLM_FUNC_QUALIFIER T * value_ptr +00223 ( +00224 detail::tmat2x4<T> & mat +00225 ) +00226 { +00227 return &(mat[0].x); +00228 } +00229 +00232 template<typename T> +00233 GLM_FUNC_QUALIFIER T const * value_ptr +00234 ( +00235 detail::tmat4x2<T> const & mat +00236 ) +00237 { +00238 return &(mat[0].x); +00239 } +00240 +00243 template<typename T> +00244 GLM_FUNC_QUALIFIER T * value_ptr +00245 ( +00246 detail::tmat4x2<T> & mat +00247 ) +00248 { +00249 return &(mat[0].x); +00250 } +00251 +00254 template<typename T> +00255 GLM_FUNC_QUALIFIER T const * value_ptr +00256 ( +00257 detail::tmat3x4<T> const & mat +00258 ) +00259 { +00260 return &(mat[0].x); +00261 } +00262 +00265 template<typename T> +00266 GLM_FUNC_QUALIFIER T * value_ptr +00267 ( +00268 detail::tmat3x4<T> & mat +00269 ) +00270 { +00271 return &(mat[0].x); +00272 } +00273 +00276 template<typename T> +00277 GLM_FUNC_QUALIFIER T const * value_ptr +00278 ( +00279 detail::tmat4x3<T> const & mat +00280 ) +00281 { +00282 return &(mat[0].x); +00283 } +00284 +00287 template<typename T> +00288 GLM_FUNC_QUALIFIER T * value_ptr(detail::tmat4x3<T> & mat) +00289 { +00290 return &(mat[0].x); +00291 } +00292 +00295 template<typename T> +00296 GLM_FUNC_QUALIFIER detail::tvec2<T> make_vec2(T const * const ptr) +00297 { +00298 detail::tvec2<T> Result; +00299 memcpy(value_ptr(Result), ptr, sizeof(detail::tvec2<T>)); +00300 return Result; +00301 } +00302 +00305 template<typename T> +00306 GLM_FUNC_QUALIFIER detail::tvec3<T> make_vec3(T const * const ptr) +00307 { +00308 detail::tvec3<T> Result; +00309 memcpy(value_ptr(Result), ptr, sizeof(detail::tvec3<T>)); +00310 return Result; +00311 } +00312 +00315 template<typename T> +00316 GLM_FUNC_QUALIFIER detail::tvec4<T> make_vec4(T const * const ptr) +00317 { +00318 detail::tvec4<T> Result; +00319 memcpy(value_ptr(Result), ptr, sizeof(detail::tvec4<T>)); +00320 return Result; +00321 } +00322 +00325 template<typename T> +00326 GLM_FUNC_QUALIFIER detail::tmat2x2<T> make_mat2x2(T const * const ptr) +00327 { +00328 detail::tmat2x2<T> Result; +00329 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x2<T>)); +00330 return Result; +00331 } +00332 +00335 template<typename T> +00336 GLM_FUNC_QUALIFIER detail::tmat2x3<T> make_mat2x3(T const * const ptr) +00337 { +00338 detail::tmat2x3<T> Result; +00339 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x3<T>)); +00340 return Result; +00341 } +00342 +00345 template<typename T> +00346 GLM_FUNC_QUALIFIER detail::tmat2x4<T> make_mat2x4(T const * const ptr) +00347 { +00348 detail::tmat2x4<T> Result; +00349 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x4<T>)); +00350 return Result; +00351 } +00352 +00355 template<typename T> +00356 GLM_FUNC_QUALIFIER detail::tmat3x2<T> make_mat3x2(T const * const ptr) +00357 { +00358 detail::tmat3x2<T> Result; +00359 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x2<T>)); +00360 return Result; +00361 } +00362 +00365 template<typename T> +00366 GLM_FUNC_QUALIFIER detail::tmat3x3<T> make_mat3x3(T const * const ptr) +00367 { +00368 detail::tmat3x3<T> Result; +00369 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x3<T>)); +00370 return Result; +00371 } +00372 +00375 template<typename T> +00376 GLM_FUNC_QUALIFIER detail::tmat3x4<T> make_mat3x4(T const * const ptr) +00377 { +00378 detail::tmat3x4<T> Result; +00379 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x4<T>)); +00380 return Result; +00381 } +00382 +00383 +00386 template<typename T> +00387 GLM_FUNC_QUALIFIER detail::tmat4x2<T> make_mat4x2(T const * const ptr) +00388 { +00389 detail::tmat4x2<T> Result; +00390 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x2<T>)); +00391 return Result; +00392 } +00393 +00396 template<typename T> +00397 GLM_FUNC_QUALIFIER detail::tmat4x3<T> make_mat4x3(T const * const ptr) +00398 { +00399 detail::tmat4x3<T> Result; +00400 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x3<T>)); +00401 return Result; +00402 } +00403 +00406 template<typename T> +00407 GLM_FUNC_QUALIFIER detail::tmat4x4<T> make_mat4x4(T const * const ptr) +00408 { +00409 detail::tmat4x4<T> Result; +00410 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x4<T>)); +00411 return Result; +00412 } +00413 +00416 template<typename T> +00417 GLM_FUNC_QUALIFIER detail::tmat2x2<T> make_mat2(T const * const ptr) +00418 { +00419 return make_mat2x2(ptr); +00420 } +00421 +00424 template<typename T> +00425 GLM_FUNC_QUALIFIER detail::tmat3x3<T> make_mat3(T const * const ptr) +00426 { +00427 return make_mat3x3(ptr); +00428 } +00429 +00432 template<typename T> +00433 GLM_FUNC_QUALIFIER detail::tmat4x4<T> make_mat4(T const * const ptr) +00434 { +00435 return make_mat4x4(ptr); +00436 } +00437 +00439 +00440 }//namespace type_ptr +00441 }//namespace gtc +00442 }//namespace glm +00443 +00444 #include "type_ptr.inl" +00445 +00446 namespace glm{using namespace gtc::type_ptr;} +00447 +00448 #endif//glm_gtx_type_ptr +00449 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-10-05 +00005 // Updated : 2008-10-05 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_size.hpp +00009 +00010 #ifndef glm_core_type_size +00011 #define glm_core_type_size +00012 +00013 #include <cstdlib> +00014 +00015 namespace glm{ +00016 namespace detail +00017 { +00018 //typedef std::size_t size_t; +00019 typedef int sizeType; +00020 +00021 }//namespace detail +00022 }//namespace glm +00023 +00024 #endif//glm_core_type_size +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2010-01-26 +00005 // Updated : 2010-02-04 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_vec.hpp +00009 +00010 #ifndef glm_core_type_vec +00011 #define glm_core_type_vec +00012 +00013 #include "type_gentype.hpp" +00014 +00015 namespace glm{ +00016 namespace detail +00017 { +00018 +00019 }//namespace detail +00020 }//namespace glm +00021 +00022 #endif//glm_core_type_vec +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-08-25 +00005 // Updated : 2010-02-04 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_vec1.hpp +00009 +00010 #ifndef glm_core_type_gentype1 +00011 #define glm_core_type_gentype1 +00012 +00013 #include "type_vec.hpp" +00014 #include "type_float.hpp" +00015 #include "type_int.hpp" +00016 #include "type_size.hpp" +00017 #include "_swizzle.hpp" +00018 +00019 namespace glm{ +00020 namespace detail +00021 { +00022 template <typename T> struct tref1; +00023 template <typename T> struct tref2; +00024 template <typename T> struct tref3; +00025 template <typename T> struct tref4; +00026 template <typename T> struct tvec1; +00027 template <typename T> struct tvec2; +00028 template <typename T> struct tvec3; +00029 template <typename T> struct tvec4; +00030 +00031 template <typename T> +00032 struct tvec1 +00033 { +00034 enum ctor{null}; +00035 +00036 typedef T value_type; +00037 typedef std::size_t size_type; +00038 GLM_FUNC_DECL size_type length() const; +00039 static GLM_FUNC_DECL size_type value_size(); +00040 +00041 typedef tvec1<T> type; +00042 typedef tvec1<bool> bool_type; +00043 +00045 // Data +00046 +00047 # if(GLM_COMPONENT == GLM_COMPONENT_ONLY_XYZW) +00048 value_type x; +00049 # else//(GLM_COMPONENT == GLM_COMPONENT_GLSL_NAMES) +00050 union {value_type x, r, s;}; +00051 # endif//GLM_COMPONENT +00052 +00054 // Accesses +00055 +00056 GLM_FUNC_DECL value_type & operator[](size_type i); +00057 GLM_FUNC_DECL value_type const & operator[](size_type i) const; +00058 +00060 // Implicit basic constructors +00061 +00062 GLM_FUNC_DECL tvec1(); +00063 GLM_FUNC_DECL tvec1(tvec1<T> const & v); +00064 +00066 // Explicit basic constructors +00067 +00068 GLM_FUNC_DECL explicit tvec1( +00069 ctor); +00070 GLM_FUNC_DECL explicit tvec1( +00071 value_type const & s); +00072 +00074 // Swizzle constructors +00075 +00076 GLM_FUNC_DECL tvec1(tref1<T> const & r); +00077 +00079 // Convertion scalar constructors +00080 +00082 template <typename U> +00083 GLM_FUNC_DECL explicit tvec1(U const & s); +00084 +00086 // Convertion vector constructors +00087 +00089 template <typename U> +00090 GLM_FUNC_DECL explicit tvec1(tvec2<U> const & v); +00092 template <typename U> +00093 GLM_FUNC_DECL explicit tvec1(tvec3<U> const & v); +00095 template <typename U> +00096 GLM_FUNC_DECL explicit tvec1(tvec4<U> const & v); +00097 +00099 // Unary arithmetic operators +00100 +00101 GLM_FUNC_DECL tvec1<T> & operator= (tvec1<T> const & v); +00102 +00103 GLM_FUNC_DECL tvec1<T> & operator+=(value_type const & s); +00104 GLM_FUNC_DECL tvec1<T> & operator+=(tvec1<T> const & v); +00105 GLM_FUNC_DECL tvec1<T> & operator-=(value_type const & s); +00106 GLM_FUNC_DECL tvec1<T> & operator-=(tvec1<T> const & v); +00107 GLM_FUNC_DECL tvec1<T> & operator*=(value_type const & s); +00108 GLM_FUNC_DECL tvec1<T> & operator*=(tvec1<T> const & v); +00109 GLM_FUNC_DECL tvec1<T> & operator/=(value_type const & s); +00110 GLM_FUNC_DECL tvec1<T> & operator/=(tvec1<T> const & v); +00111 GLM_FUNC_DECL tvec1<T> & operator++(); +00112 GLM_FUNC_DECL tvec1<T> & operator--(); +00113 +00115 // Unary bit operators +00116 +00117 GLM_FUNC_DECL tvec1<T> & operator%=(value_type const & s); +00118 GLM_FUNC_DECL tvec1<T> & operator%=(tvec1<T> const & v); +00119 GLM_FUNC_DECL tvec1<T> & operator&=(value_type const & s); +00120 GLM_FUNC_DECL tvec1<T> & operator&=(tvec1<T> const & v); +00121 GLM_FUNC_DECL tvec1<T> & operator|=(value_type const & s); +00122 GLM_FUNC_DECL tvec1<T> & operator|=(tvec1<T> const & v); +00123 GLM_FUNC_DECL tvec1<T> & operator^=(value_type const & s); +00124 GLM_FUNC_DECL tvec1<T> & operator^=(tvec1<T> const & v); +00125 GLM_FUNC_DECL tvec1<T> & operator<<=(value_type const & s); +00126 GLM_FUNC_DECL tvec1<T> & operator<<=(tvec1<T> const & v); +00127 GLM_FUNC_DECL tvec1<T> & operator>>=(value_type const & s); +00128 GLM_FUNC_DECL tvec1<T> & operator>>=(tvec1<T> const & v); +00129 +00131 // Swizzle operators +00132 +00133 GLM_FUNC_DECL value_type swizzle(comp X) const; +00134 GLM_FUNC_DECL tvec2<T> swizzle(comp X, comp Y) const; +00135 GLM_FUNC_DECL tvec3<T> swizzle(comp X, comp Y, comp Z) const; +00136 GLM_FUNC_DECL tvec4<T> swizzle(comp X, comp Y, comp Z, comp W) const; +00137 GLM_FUNC_DECL tref1<T> swizzle(comp X); +00138 }; +00139 +00140 template <typename T> +00141 struct tref1 +00142 { +00143 GLM_FUNC_DECL tref1(T & x); +00144 GLM_FUNC_DECL tref1(tref1<T> const & r); +00145 GLM_FUNC_DECL tref1(tvec1<T> const & v); +00146 +00147 GLM_FUNC_DECL tref1<T> & operator= (tref1<T> const & r); +00148 GLM_FUNC_DECL tref1<T> & operator= (tvec1<T> const & v); +00149 +00150 T& x; +00151 }; +00152 +00153 GLM_DETAIL_IS_VECTOR(tvec1); +00154 +00155 typedef detail::tvec1<core::type::precision::highp_float> highp_vec1_t; +00156 typedef detail::tvec1<core::type::precision::mediump_float> mediump_vec1_t; +00157 typedef detail::tvec1<core::type::precision::lowp_float> lowp_vec1_t; +00158 typedef detail::tvec1<core::type::precision::highp_int> highp_ivec1_t; +00159 typedef detail::tvec1<core::type::precision::mediump_int> mediump_ivec1_t; +00160 typedef detail::tvec1<core::type::precision::lowp_int> lowp_ivec1_t; +00161 typedef detail::tvec1<core::type::precision::highp_uint> highp_uvec1_t; +00162 typedef detail::tvec1<core::type::precision::mediump_uint> mediump_uvec1_t; +00163 typedef detail::tvec1<core::type::precision::lowp_uint> lowp_uvec1_t; +00164 +00165 }//namespace detail +00166 }//namespace glm +00167 +00168 #ifndef GLM_EXTERNAL_TEMPLATE +00169 #include "type_vec1.inl" +00170 #endif//GLM_EXTERNAL_TEMPLATE +00171 +00172 #endif//glm_core_type_gentype1 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-08-18 +00005 // Updated : 2010-02-04 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_tvec2.hpp +00009 +00010 #ifndef glm_core_type_gentype2 +00011 #define glm_core_type_gentype2 +00012 +00013 #include "type_vec.hpp" +00014 #include "type_float.hpp" +00015 #include "type_int.hpp" +00016 #include "type_size.hpp" +00017 #include "_swizzle.hpp" +00018 +00019 namespace glm{ +00020 namespace detail +00021 { +00022 template <typename T> struct tref2; +00023 template <typename T> struct tref3; +00024 template <typename T> struct tref4; +00025 template <typename T> struct tvec3; +00026 template <typename T> struct tvec4; +00027 +00030 template <typename T> +00031 struct tvec2 +00032 { +00033 enum ctor{null}; +00034 +00035 typedef T value_type; +00036 typedef std::size_t size_type; +00037 GLM_FUNC_DECL size_type length() const; +00038 static GLM_FUNC_DECL size_type value_size(); +00039 +00040 typedef tvec2<T> type; +00041 typedef tvec2<bool> bool_type; +00042 +00044 // Data +00045 +00046 # if(GLM_COMPONENT == GLM_COMPONENT_ONLY_XYZW) +00047 value_type x, y; +00048 # elif(GLM_COMPONENT == GLM_COMPONENT_MS_EXT) +00049 union +00050 { +00051 struct{value_type r, g;}; +00052 struct{value_type s, t;}; +00053 struct{value_type x, y;}; +00054 }; +00055 # else//(GLM_COMPONENT == GLM_COMPONENT_GLSL_NAMES) +00056 union {value_type x, r, s;}; +00057 union {value_type y, g, t;}; +00058 # endif//GLM_COMPONENT +00059 +00061 // Accesses +00062 +00063 GLM_FUNC_DECL value_type & operator[](size_type i); +00064 GLM_FUNC_DECL value_type const & operator[](size_type i) const; +00065 +00067 // Implicit basic constructors +00068 +00069 GLM_FUNC_DECL tvec2(); +00070 GLM_FUNC_DECL tvec2(tvec2<T> const & v); +00071 +00073 // Explicit basic constructors +00074 +00075 GLM_FUNC_DECL explicit tvec2( +00076 ctor); +00077 GLM_FUNC_DECL explicit tvec2( +00078 value_type const & s); +00079 GLM_FUNC_DECL explicit tvec2( +00080 value_type const & s1, +00081 value_type const & s2); +00082 +00084 // Swizzle constructors +00085 +00086 tvec2(tref2<T> const & r); +00087 +00089 // Convertion constructors +00090 +00092 template <typename U> +00093 GLM_FUNC_DECL explicit tvec2( +00094 U const & x); +00096 template <typename U, typename V> +00097 GLM_FUNC_DECL explicit tvec2( +00098 U const & x, +00099 V const & y); +00100 +00102 // Convertion vector constructors +00103 +00105 template <typename U> +00106 GLM_FUNC_DECL explicit tvec2(tvec2<U> const & v); +00108 template <typename U> +00109 GLM_FUNC_DECL explicit tvec2(tvec3<U> const & v); +00111 template <typename U> +00112 GLM_FUNC_DECL explicit tvec2(tvec4<U> const & v); +00113 +00115 // Unary arithmetic operators +00116 +00117 GLM_FUNC_DECL tvec2<T> & operator= (tvec2<T> const & v); +00118 template <typename U> +00119 GLM_FUNC_DECL tvec2<T> & operator= (tvec2<U> const & v); +00120 +00121 template <typename U> +00122 GLM_FUNC_DECL tvec2<T> & operator+=(U const & s); +00123 template <typename U> +00124 GLM_FUNC_DECL tvec2<T> & operator+=(tvec2<U> const & v); +00125 template <typename U> +00126 GLM_FUNC_DECL tvec2<T> & operator-=(U const & s); +00127 template <typename U> +00128 GLM_FUNC_DECL tvec2<T> & operator-=(tvec2<U> const & v); +00129 template <typename U> +00130 GLM_FUNC_DECL tvec2<T> & operator*=(U const & s); +00131 template <typename U> +00132 GLM_FUNC_DECL tvec2<T> & operator*=(tvec2<U> const & v); +00133 template <typename U> +00134 GLM_FUNC_DECL tvec2<T> & operator/=(U const & s); +00135 template <typename U> +00136 GLM_FUNC_DECL tvec2<T> & operator/=(tvec2<U> const & v); +00137 GLM_FUNC_DECL tvec2<T> & operator++(); +00138 GLM_FUNC_DECL tvec2<T> & operator--(); +00139 +00141 // Unary bit operators +00142 +00143 template <typename U> +00144 GLM_FUNC_DECL tvec2<T> & operator%= (U const & s); +00145 template <typename U> +00146 GLM_FUNC_DECL tvec2<T> & operator%= (tvec2<U> const & v); +00147 template <typename U> +00148 GLM_FUNC_DECL tvec2<T> & operator&= (U const & s); +00149 template <typename U> +00150 GLM_FUNC_DECL tvec2<T> & operator&= (tvec2<U> const & v); +00151 template <typename U> +00152 GLM_FUNC_DECL tvec2<T> & operator|= (U const & s); +00153 template <typename U> +00154 GLM_FUNC_DECL tvec2<T> & operator|= (tvec2<U> const & v); +00155 template <typename U> +00156 GLM_FUNC_DECL tvec2<T> & operator^= (U const & s); +00157 template <typename U> +00158 GLM_FUNC_DECL tvec2<T> & operator^= (tvec2<U> const & v); +00159 template <typename U> +00160 GLM_FUNC_DECL tvec2<T> & operator<<=(U const & s); +00161 template <typename U> +00162 GLM_FUNC_DECL tvec2<T> & operator<<=(tvec2<U> const & v); +00163 template <typename U> +00164 GLM_FUNC_DECL tvec2<T> & operator>>=(U const & s); +00165 template <typename U> +00166 GLM_FUNC_DECL tvec2<T> & operator>>=(tvec2<U> const & v); +00167 +00169 // Swizzle operators +00170 +00171 GLM_FUNC_DECL value_type swizzle(comp X) const; +00172 GLM_FUNC_DECL tvec2<T> swizzle(comp X, comp Y) const; +00173 GLM_FUNC_DECL tvec3<T> swizzle(comp X, comp Y, comp Z) const; +00174 GLM_FUNC_DECL tvec4<T> swizzle(comp X, comp Y, comp Z, comp W) const; +00175 GLM_FUNC_DECL tref2<T> swizzle(comp X, comp Y); +00176 }; +00177 +00178 template <typename T> +00179 struct tref2 +00180 { +00181 GLM_FUNC_DECL tref2(T & x, T & y); +00182 GLM_FUNC_DECL tref2(tref2<T> const & r); +00183 GLM_FUNC_DECL tref2(tvec2<T> const & v); +00184 +00185 GLM_FUNC_DECL tref2<T> & operator= (tref2<T> const & r); +00186 GLM_FUNC_DECL tref2<T> & operator= (tvec2<T> const & v); +00187 +00188 GLM_FUNC_DECL tvec2<T> operator() (); +00189 +00190 T & x; +00191 T & y; +00192 }; +00193 +00194 GLM_DETAIL_IS_VECTOR(tvec2); +00195 +00196 } //namespace detail +00197 +00198 namespace core{ +00199 namespace type{ +00200 namespace precision +00201 { +00206 typedef detail::tvec2<highp_float> highp_vec2; +00207 +00212 typedef detail::tvec2<mediump_float> mediump_vec2; +00213 +00218 typedef detail::tvec2<lowp_float> lowp_vec2; +00219 +00224 typedef detail::tvec2<highp_int> highp_ivec2; +00225 +00230 typedef detail::tvec2<mediump_int> mediump_ivec2; +00231 +00236 typedef detail::tvec2<lowp_int> lowp_ivec2; +00237 +00242 typedef detail::tvec2<highp_uint> highp_uvec2; +00243 +00248 typedef detail::tvec2<mediump_uint> mediump_uvec2; +00249 +00254 typedef detail::tvec2<lowp_uint> lowp_uvec2; +00255 +00256 }//namespace precision +00257 }//namespace type +00258 }//namespace core +00259 }//namespace glm +00260 +00261 #ifndef GLM_EXTERNAL_TEMPLATE +00262 #include "type_vec2.inl" +00263 #endif//GLM_EXTERNAL_TEMPLATE +00264 +00265 #endif//glm_core_type_gentype2 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-08-22 +00005 // Updated : 2010-02-03 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_tvec3.hpp +00009 +00010 #ifndef glm_core_type_gentype3 +00011 #define glm_core_type_gentype3 +00012 +00013 #include "type_vec.hpp" +00014 #include "type_float.hpp" +00015 #include "type_int.hpp" +00016 #include "type_size.hpp" +00017 #include "_swizzle.hpp" +00018 +00019 namespace glm{ +00020 namespace detail +00021 { +00022 template <typename T> struct tref2; +00023 template <typename T> struct tref3; +00024 template <typename T> struct tref4; +00025 template <typename T> struct tvec2; +00026 template <typename T> struct tvec4; +00027 +00030 template <typename T> +00031 struct tvec3 +00032 { +00033 enum ctor{null}; +00034 +00035 typedef T value_type; +00036 typedef std::size_t size_type; +00037 GLM_FUNC_DECL size_type length() const; +00038 static GLM_FUNC_DECL size_type value_size(); +00039 +00040 typedef tvec3<T> type; +00041 typedef tvec3<bool> bool_type; +00042 +00044 // Data +00045 +00046 # if(GLM_COMPONENT == GLM_COMPONENT_ONLY_XYZW) +00047 value_type x, y, z; +00048 # elif(GLM_COMPONENT == GLM_COMPONENT_MS_EXT) +00049 union +00050 { +00051 struct{value_type r, g, b;}; +00052 struct{value_type s, t, p;}; +00053 struct{value_type x, y, z;}; +00054 }; +00055 # else//(GLM_COMPONENT == GLM_COMPONENT_GLSL_NAMES) +00056 union {value_type x, r, s;}; +00057 union {value_type y, g, t;}; +00058 union {value_type z, b, p;}; +00059 # endif//GLM_COMPONENT +00060 +00062 // Accesses +00063 +00064 GLM_FUNC_DECL value_type & operator[](size_type i); +00065 GLM_FUNC_DECL value_type const & operator[](size_type i) const; +00066 +00068 // Implicit basic constructors +00069 +00070 GLM_FUNC_DECL tvec3(); +00071 GLM_FUNC_DECL tvec3(tvec3<T> const & v); +00072 +00074 // Explicit basic constructors +00075 +00076 GLM_FUNC_DECL explicit tvec3( +00077 ctor); +00078 GLM_FUNC_DECL explicit tvec3( +00079 value_type const & s); +00080 GLM_FUNC_DECL explicit tvec3( +00081 value_type const & s1, +00082 value_type const & s2, +00083 value_type const & s3); +00084 +00086 // Convertion scalar constructors +00087 +00089 template <typename U> +00090 GLM_FUNC_DECL explicit tvec3( +00091 U const & x); +00093 template <typename U, typename V, typename W> +00094 GLM_FUNC_DECL explicit tvec3( +00095 U const & x, +00096 V const & y, +00097 W const & z); +00098 +00100 // Convertion vector constructors +00101 +00103 template <typename A, typename B> +00104 GLM_FUNC_DECL explicit tvec3(tvec2<A> const & v, B const & s); +00106 template <typename A, typename B> +00107 GLM_FUNC_DECL explicit tvec3(A const & s, tvec2<B> const & v); +00109 template <typename U> +00110 GLM_FUNC_DECL explicit tvec3(tvec3<U> const & v); +00112 template <typename U> +00113 GLM_FUNC_DECL explicit tvec3(tvec4<U> const & v); +00114 +00116 // Swizzle constructors +00117 +00118 GLM_FUNC_DECL tvec3(tref3<T> const & r); +00119 +00120 template <typename A, typename B> +00121 GLM_FUNC_DECL explicit tvec3(tref2<A> const & v, B const & s); +00122 +00123 template <typename A, typename B> +00124 GLM_FUNC_DECL explicit tvec3(A const & s, tref2<B> const & v); +00125 +00127 // Unary arithmetic operators +00128 +00129 GLM_FUNC_DECL tvec3<T> & operator= (tvec3<T> const & v); +00130 template <typename U> +00131 GLM_FUNC_DECL tvec3<T> & operator= (tvec3<U> const & v); +00132 +00133 template <typename U> +00134 GLM_FUNC_DECL tvec3<T> & operator+=(U const & s); +00135 template <typename U> +00136 GLM_FUNC_DECL tvec3<T> & operator+=(tvec3<U> const & v); +00137 template <typename U> +00138 GLM_FUNC_DECL tvec3<T> & operator-=(U const & s); +00139 template <typename U> +00140 GLM_FUNC_DECL tvec3<T> & operator-=(tvec3<U> const & v); +00141 template <typename U> +00142 GLM_FUNC_DECL tvec3<T> & operator*=(U const & s); +00143 template <typename U> +00144 GLM_FUNC_DECL tvec3<T> & operator*=(tvec3<U> const & v); +00145 template <typename U> +00146 GLM_FUNC_DECL tvec3<T> & operator/=(U const & s); +00147 template <typename U> +00148 GLM_FUNC_DECL tvec3<T> & operator/=(tvec3<U> const & v); +00149 GLM_FUNC_DECL tvec3<T> & operator++(); +00150 GLM_FUNC_DECL tvec3<T> & operator--(); +00151 +00153 // Unary bit operators +00154 +00155 template <typename U> +00156 GLM_FUNC_DECL tvec3<T> & operator%= (U const & s); +00157 template <typename U> +00158 GLM_FUNC_DECL tvec3<T> & operator%= (tvec3<U> const & v); +00159 template <typename U> +00160 GLM_FUNC_DECL tvec3<T> & operator&= (U const & s); +00161 template <typename U> +00162 GLM_FUNC_DECL tvec3<T> & operator&= (tvec3<U> const & v); +00163 template <typename U> +00164 GLM_FUNC_DECL tvec3<T> & operator|= (U const & s); +00165 template <typename U> +00166 GLM_FUNC_DECL tvec3<T> & operator|= (tvec3<U> const & v); +00167 template <typename U> +00168 GLM_FUNC_DECL tvec3<T> & operator^= (U const & s); +00169 template <typename U> +00170 GLM_FUNC_DECL tvec3<T> & operator^= (tvec3<U> const & v); +00171 template <typename U> +00172 GLM_FUNC_DECL tvec3<T> & operator<<=(U const & s); +00173 template <typename U> +00174 GLM_FUNC_DECL tvec3<T> & operator<<=(tvec3<U> const & v); +00175 template <typename U> +00176 GLM_FUNC_DECL tvec3<T> & operator>>=(U const & s); +00177 template <typename U> +00178 GLM_FUNC_DECL tvec3<T> & operator>>=(tvec3<U> const & v); +00179 +00181 // Swizzle operators +00182 +00183 GLM_FUNC_DECL value_type swizzle(comp X) const; +00184 GLM_FUNC_DECL tvec2<T> swizzle(comp X, comp Y) const; +00185 GLM_FUNC_DECL tvec3<T> swizzle(comp X, comp Y, comp Z) const; +00186 GLM_FUNC_DECL tvec4<T> swizzle(comp X, comp Y, comp Z, comp W) const; +00187 GLM_FUNC_DECL tref2<T> swizzle(comp X, comp Y); +00188 GLM_FUNC_DECL tref3<T> swizzle(comp X, comp Y, comp Z); +00189 }; +00190 +00191 template <typename T> +00192 struct tref3 +00193 { +00194 GLM_FUNC_DECL tref3(T & x, T & y, T & z); +00195 GLM_FUNC_DECL tref3(tref3<T> const & r); +00196 GLM_FUNC_DECL tref3(tvec3<T> const & v); +00197 +00198 GLM_FUNC_DECL tref3<T> & operator= (tref3<T> const & r); +00199 GLM_FUNC_DECL tref3<T> & operator= (tvec3<T> const & v); +00200 +00201 GLM_FUNC_DECL tvec3<T> operator() (); +00202 +00203 T & x; +00204 T & y; +00205 T & z; +00206 }; +00207 +00208 GLM_DETAIL_IS_VECTOR(tvec3); +00209 } //namespace detail +00210 +00211 namespace core{ +00212 namespace type{ +00213 namespace precision +00214 { +00219 typedef detail::tvec3<highp_float> highp_vec3; +00220 +00225 typedef detail::tvec3<mediump_float> mediump_vec3; +00226 +00231 typedef detail::tvec3<lowp_float> lowp_vec3; +00232 +00237 typedef detail::tvec3<highp_int> highp_ivec3; +00238 +00243 typedef detail::tvec3<mediump_int> mediump_ivec3; +00244 +00249 typedef detail::tvec3<lowp_int> lowp_ivec3; +00250 +00255 typedef detail::tvec3<highp_uint> highp_uvec3; +00256 +00261 typedef detail::tvec3<mediump_uint> mediump_uvec3; +00262 +00267 typedef detail::tvec3<lowp_uint> lowp_uvec3; +00268 +00269 }//namespace precision +00270 }//namespace type +00271 }//namespace core +00272 }//namespace glm +00273 +00274 #ifndef GLM_EXTERNAL_TEMPLATE +00275 #include "type_vec3.inl" +00276 #endif//GLM_EXTERNAL_TEMPLATE +00277 +00278 #endif//glm_core_type_gentype3 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2008-08-22 +00005 // Updated : 2010-02-03 +00006 // Licence : This source is under MIT License +00007 // File : glm/core/type_tvec4.hpp +00009 +00010 #ifndef glm_core_type_gentype4 +00011 #define glm_core_type_gentype4 +00012 +00013 #include "type_vec.hpp" +00014 #include "type_float.hpp" +00015 #include "type_int.hpp" +00016 #include "type_size.hpp" +00017 #include "_swizzle.hpp" +00018 +00019 namespace glm{ +00020 namespace detail +00021 { +00022 template <typename T> struct tref2; +00023 template <typename T> struct tref3; +00024 template <typename T> struct tref4; +00025 template <typename T> struct tvec2; +00026 template <typename T> struct tvec3; +00027 +00030 template <typename T> +00031 struct tvec4 +00032 { +00033 enum ctor{null}; +00034 +00035 typedef T value_type; +00036 typedef std::size_t size_type; +00037 GLM_FUNC_DECL size_type length() const; +00038 static GLM_FUNC_DECL size_type value_size(); +00039 +00040 typedef tvec4<T> type; +00041 typedef tvec4<bool> bool_type; +00042 +00044 // Data +00045 +00046 # if(GLM_COMPONENT == GLM_COMPONENT_ONLY_XYZW) +00047 value_type x, y, z, w; +00048 # elif(GLM_COMPONENT == GLM_COMPONENT_MS_EXT) +00049 union +00050 { +00051 struct{value_type r, g, b, a;}; +00052 struct{value_type s, t, p, q;}; +00053 struct{value_type x, y, z, w;}; +00054 }; +00055 # else//(GLM_COMPONENT == GLM_COMPONENT_GLSL_NAMES) +00056 union {value_type x, r, s;}; +00057 union {value_type y, g, t;}; +00058 union {value_type z, b, p;}; +00059 union {value_type w, a, q;}; +00060 # endif//GLM_COMPONENT +00061 +00063 // Accesses +00064 +00065 GLM_FUNC_DECL value_type & operator[](size_type i); +00066 GLM_FUNC_DECL value_type const & operator[](size_type i) const; +00067 +00069 // Implicit basic constructors +00070 +00071 GLM_FUNC_DECL tvec4(); +00072 GLM_FUNC_DECL tvec4(type const & v); +00073 +00075 // Explicit basic constructors +00076 +00077 GLM_FUNC_DECL explicit tvec4( +00078 ctor); +00079 GLM_FUNC_DECL explicit tvec4( +00080 value_type const & s); +00081 GLM_FUNC_DECL explicit tvec4( +00082 value_type const & s0, +00083 value_type const & s1, +00084 value_type const & s2, +00085 value_type const & s3); +00086 +00088 // Convertion scalar constructors +00089 +00091 template <typename U> +00092 GLM_FUNC_DECL explicit tvec4( +00093 U const & x); +00095 template <typename A, typename B, typename C, typename D> +00096 GLM_FUNC_DECL explicit tvec4( +00097 A const & x, +00098 B const & y, +00099 C const & z, +00100 D const & w); +00101 +00103 // Convertion vector constructors +00104 +00106 template <typename A, typename B, typename C> +00107 GLM_FUNC_DECL explicit tvec4(tvec2<A> const & v, B const & s1, C const & s2); +00109 template <typename A, typename B, typename C> +00110 GLM_FUNC_DECL explicit tvec4(A const & s1, tvec2<B> const & v, C const & s2); +00112 template <typename A, typename B, typename C> +00113 GLM_FUNC_DECL explicit tvec4(A const & s1, B const & s2, tvec2<C> const & v); +00115 template <typename A, typename B> +00116 GLM_FUNC_DECL explicit tvec4(tvec3<A> const & v, B const & s); +00118 template <typename A, typename B> +00119 GLM_FUNC_DECL explicit tvec4(A const & s, tvec3<B> const & v); +00121 template <typename A, typename B> +00122 GLM_FUNC_DECL explicit tvec4(tvec2<A> const & v1, tvec2<B> const & v2); +00124 template <typename U> +00125 GLM_FUNC_DECL explicit tvec4(tvec4<U> const & v); +00126 +00128 // Swizzle constructors +00129 +00130 GLM_FUNC_DECL tvec4(tref4<T> const & r); +00131 +00133 template <typename A, typename B, typename C> +00134 GLM_FUNC_DECL explicit tvec4(tref2<A> const & v, B const & s1, C const & s2); +00136 template <typename A, typename B, typename C> +00137 GLM_FUNC_DECL explicit tvec4(A const & s1, tref2<B> const & v, C const & s2); +00139 template <typename A, typename B, typename C> +00140 GLM_FUNC_DECL explicit tvec4(A const & s1, B const & s2, tref2<C> const & v); +00142 template <typename A, typename B> +00143 GLM_FUNC_DECL explicit tvec4(tref3<A> const & v, B const & s); +00145 template <typename A, typename B> +00146 GLM_FUNC_DECL explicit tvec4(A const & s, tref3<B> const & v); +00148 template <typename A, typename B> +00149 GLM_FUNC_DECL explicit tvec4(tref2<A> const & v1, tref2<B> const & v2); +00151 template <typename A, typename B> +00152 GLM_FUNC_DECL explicit tvec4(tvec2<A> const & v1, tref2<B> const & v2); +00154 template <typename A, typename B> +00155 GLM_FUNC_DECL explicit tvec4(tref2<A> const & v1, tvec2<B> const & v2); +00156 +00158 // Unary arithmetic operators +00159 +00160 GLM_FUNC_DECL tvec4<T> & operator= (tvec4<T> const & v); +00161 template <typename U> +00162 GLM_FUNC_DECL tvec4<T> & operator= (tvec4<U> const & v); +00163 +00164 template <typename U> +00165 GLM_FUNC_DECL tvec4<T> & operator+=(U const & s); +00166 template <typename U> +00167 GLM_FUNC_DECL tvec4<T> & operator+=(tvec4<U> const & v); +00168 template <typename U> +00169 GLM_FUNC_DECL tvec4<T> & operator-=(U const & s); +00170 template <typename U> +00171 GLM_FUNC_DECL tvec4<T> & operator-=(tvec4<U> const & v); +00172 template <typename U> +00173 GLM_FUNC_DECL tvec4<T> & operator*=(U const & s); +00174 template <typename U> +00175 GLM_FUNC_DECL tvec4<T> & operator*=(tvec4<U> const & v); +00176 template <typename U> +00177 GLM_FUNC_DECL tvec4<T> & operator/=(U const & s); +00178 template <typename U> +00179 GLM_FUNC_DECL tvec4<T> & operator/=(tvec4<U> const & v); +00180 GLM_FUNC_DECL tvec4<T> & operator++(); +00181 GLM_FUNC_DECL tvec4<T> & operator--(); +00182 +00184 // Unary bit operators +00185 +00186 template <typename U> +00187 GLM_FUNC_DECL tvec4<T> & operator%= (U const & s); +00188 template <typename U> +00189 GLM_FUNC_DECL tvec4<T> & operator%= (tvec4<U> const & v); +00190 template <typename U> +00191 GLM_FUNC_DECL tvec4<T> & operator&= (U const & s); +00192 template <typename U> +00193 GLM_FUNC_DECL tvec4<T> & operator&= (tvec4<U> const & v); +00194 template <typename U> +00195 GLM_FUNC_DECL tvec4<T> & operator|= (U const & s); +00196 template <typename U> +00197 GLM_FUNC_DECL tvec4<T> & operator|= (tvec4<U> const & v); +00198 template <typename U> +00199 GLM_FUNC_DECL tvec4<T> & operator^= (U const & s); +00200 template <typename U> +00201 GLM_FUNC_DECL tvec4<T> & operator^= (tvec4<U> const & v); +00202 template <typename U> +00203 GLM_FUNC_DECL tvec4<T> & operator<<=(U const & s); +00204 template <typename U> +00205 GLM_FUNC_DECL tvec4<T> & operator<<=(tvec4<U> const & v); +00206 template <typename U> +00207 GLM_FUNC_DECL tvec4<T> & operator>>=(U const & s); +00208 template <typename U> +00209 GLM_FUNC_DECL tvec4<T> & operator>>=(tvec4<U> const & v); +00210 +00212 // Swizzle operators +00213 +00214 GLM_FUNC_DECL value_type swizzle(comp X) const; +00215 GLM_FUNC_DECL tvec2<T> swizzle(comp X, comp Y) const; +00216 GLM_FUNC_DECL tvec3<T> swizzle(comp X, comp Y, comp Z) const; +00217 GLM_FUNC_DECL tvec4<T> swizzle(comp X, comp Y, comp Z, comp W) const; +00218 GLM_FUNC_DECL tref2<T> swizzle(comp X, comp Y); +00219 GLM_FUNC_DECL tref3<T> swizzle(comp X, comp Y, comp Z); +00220 GLM_FUNC_DECL tref4<T> swizzle(comp X, comp Y, comp Z, comp W); +00221 }; +00222 +00223 template <typename T> +00224 struct tref4 +00225 { +00226 GLM_FUNC_DECL tref4(T & x, T & y, T & z, T & w); +00227 GLM_FUNC_DECL tref4(tref4<T> const & r); +00228 GLM_FUNC_DECL tref4(tvec4<T> const & v); +00229 +00230 GLM_FUNC_DECL tref4<T> & operator= (tref4<T> const & r); +00231 GLM_FUNC_DECL tref4<T> & operator= (tvec4<T> const & v); +00232 +00233 GLM_FUNC_DECL tvec4<T> operator() (); +00234 +00235 T & x; +00236 T & y; +00237 T & z; +00238 T & w; +00239 }; +00240 +00241 GLM_DETAIL_IS_VECTOR(tvec4); +00242 }//namespace detail +00243 +00244 namespace core{ +00245 namespace type{ +00246 namespace precision +00247 { +00252 typedef detail::tvec4<highp_float> highp_vec4; +00253 +00258 typedef detail::tvec4<mediump_float> mediump_vec4; +00259 +00264 typedef detail::tvec4<lowp_float> lowp_vec4; +00265 +00270 typedef detail::tvec4<highp_int> highp_ivec4; +00271 +00276 typedef detail::tvec4<mediump_int> mediump_ivec4; +00277 +00282 typedef detail::tvec4<lowp_int> lowp_ivec4; +00283 +00288 typedef detail::tvec4<highp_uint> highp_uvec4; +00289 +00294 typedef detail::tvec4<mediump_uint> mediump_uvec4; +00295 +00300 typedef detail::tvec4<lowp_uint> lowp_uvec4; +00301 +00302 }//namespace precision +00303 }//namespace type +00304 }//namespace core +00305 }//namespace glm +00306 +00307 #ifndef GLM_EXTERNAL_TEMPLATE +00308 #include "type_vec4.inl" +00309 #endif//GLM_EXTERNAL_TEMPLATE +00310 +00311 #endif//glm_core_type_gentype4 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2011-02-21 +00005 // Updated : 2009-02-21 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/ulp.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_ulp +00014 #define glm_gtx_ulp +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_ulp extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace ulp +00026 { +00029 +00032 template <typename genType> +00033 genType next_float(genType const & x); +00034 +00037 template <typename genType> +00038 genType prev_float(genType const & x); +00039 +00042 template <typename genType> +00043 genType next_float(genType const & x, uint const & Distance); +00044 +00047 template <typename genType> +00048 genType prev_float(genType const & x, uint const & Distance); +00049 +00052 template <typename T> +00053 uint float_distance(T const & x, T const & y); +00054 +00057 template<typename T, template<typename> class vecType> +00058 vecType<uint> float_distance(vecType<T> const & x, vecType<T> const & y); +00059 +00061 }// namespace ulp +00062 }// namespace gtx +00063 }// namespace glm +00064 +00065 #include "ulp.inl" +00066 +00067 namespace glm{using namespace gtx::ulp;} +00068 +00069 #endif//glm_gtx_ulp +00070 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-24 +00005 // Updated : 2008-10-07 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/unsigned_int.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTX_integer +00013 +00014 #ifndef glm_gtx_unsigned_int +00015 #define glm_gtx_unsigned_int +00016 +00017 // Dependency: +00018 #include "../glm.hpp" +00019 #include "../gtx/integer.hpp" +00020 +00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00022 # pragma message("GLM: GLM_GTX_unsigned_int extension included") +00023 #endif +00024 +00025 namespace glm{ +00026 namespace gtx{ +00027 namespace unsigned_int +00028 { +00029 using namespace gtx::integer; +00030 +00033 +00036 typedef signed int sint; +00037 +00040 uint pow(uint x, uint y); +00041 +00044 uint sqrt(uint x); +00045 +00048 uint mod(uint x, uint y); +00049 +00051 }//namespace unsigned_int +00052 }//namespace gtx +00053 }//namespace glm +00054 +00055 #include "unsigned_int.inl" +00056 +00057 namespace glm{using namespace gtx::unsigned_int;} +00058 +00059 #endif//glm_gtx_unsigned_int +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2010-02-08 +00005 // Updated : 2010-02-08 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/vec1.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_vec1 +00014 #define glm_gtx_vec1 +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 #include "../core/type_vec1.hpp" +00019 +00020 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00021 # pragma message("GLM: GLM_GTX_vec1 extension included") +00022 #endif +00023 +00024 namespace glm{ +00025 namespace gtx{ +00026 namespace vector1{ +00027 namespace precision +00028 { +00032 typedef detail::highp_vec1_t highp_vec1; +00036 typedef detail::mediump_vec1_t mediump_vec1; +00040 typedef detail::lowp_vec1_t lowp_vec1; +00041 +00045 typedef detail::highp_ivec1_t highp_ivec1; +00049 typedef detail::mediump_ivec1_t mediump_ivec1; +00053 typedef detail::lowp_ivec1_t lowp_ivec1; +00054 +00058 typedef detail::highp_uvec1_t highp_uvec1; +00062 typedef detail::mediump_uvec1_t mediump_uvec1; +00066 typedef detail::lowp_uvec1_t lowp_uvec1; +00067 }//namespace precision +00068 +00070 // vec1 definition +00071 +00074 typedef detail::tvec1<bool> bvec1; +00075 +00076 #if(defined(GLM_PRECISION_HIGHP_FLOAT)) +00077 typedef precision::highp_vec1 vec1; +00078 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT)) +00079 typedef precision::mediump_vec1 vec1; +00080 #elif(defined(GLM_PRECISION_LOWP_FLOAT)) +00081 typedef precision::lowp_vec1 vec1; +00082 #else +00083 +00084 +00085 typedef precision::mediump_vec1 vec1; +00086 #endif//GLM_PRECISION +00087 +00088 #if(defined(GLM_PRECISION_HIGHP_INT)) +00089 typedef precision::highp_ivec1 ivec1; +00090 #elif(defined(GLM_PRECISION_MEDIUMP_INT)) +00091 typedef precision::mediump_ivec1 ivec1; +00092 #elif(defined(GLM_PRECISION_LOWP_INT)) +00093 typedef precision::lowp_ivec1 ivec1; +00094 #else +00095 +00096 +00097 typedef precision::mediump_ivec1 ivec1; +00098 #endif//GLM_PRECISION +00099 +00100 #if(defined(GLM_PRECISION_HIGHP_UINT)) +00101 typedef precision::highp_uvec1 uvec1; +00102 #elif(defined(GLM_PRECISION_MEDIUMP_UINT)) +00103 typedef precision::mediump_uvec1 uvec1; +00104 #elif(defined(GLM_PRECISION_LOWP_UINT)) +00105 typedef precision::lowp_uvec1 uvec1; +00106 #else +00107 +00108 +00109 typedef precision::mediump_uvec1 uvec1; +00110 #endif//GLM_PRECISION +00111 +00112 }// namespace vec1 +00113 }// namespace gtx +00114 }// namespace glm +00115 +00116 #include "vec1.inl" +00117 +00118 namespace glm{using namespace gtx::vector1;} +00119 +00120 #endif//glm_gtx_vec1 +00121 +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2006-01-16 +00005 // Updated : 2008-10-07 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/vector_access.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_vector_access +00014 #define glm_gtx_vector_access +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_vector_access extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace vector_access +00026 { +00029 +00032 template <typename valType> +00033 void set( +00034 detail::tvec2<valType> & v, +00035 valType const & x, +00036 valType const & y); +00037 +00040 template <typename valType> +00041 void set( +00042 detail::tvec3<valType> & v, +00043 valType const & x, +00044 valType const & y, +00045 valType const & z); +00046 +00049 template <typename valType> +00050 void set( +00051 detail::tvec4<valType> & v, +00052 valType const & x, +00053 valType const & y, +00054 valType const & z, +00055 valType const & w); +00056 +00058 }//namespace vector_access +00059 }//namespace gtx +00060 }//namespace glm +00061 +00062 #include "vector_access.inl" +00063 +00064 namespace glm{using namespace gtx::vector_access;} +00065 +00066 #endif//glm_gtx_vector_access +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2005-12-30 +00005 // Updated : 2006-11-13 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/vector_angle.hpp +00009 // Dependency: +00010 // - GLM core +00011 // - GLM_GTX_quaternion +00012 // - GLM_GTX_epsilon +00014 +00015 #ifndef glm_gtx_vector_angle +00016 #define glm_gtx_vector_angle +00017 +00018 // Dependency: +00019 #include "../glm.hpp" +00020 #include "../gtx/epsilon.hpp" +00021 #include "../gtx/quaternion.hpp" +00022 #include "../gtx/rotate_vector.hpp" +00023 +00024 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00025 # pragma message("GLM: GLM_GTX_vector_angle extension included") +00026 #endif +00027 +00028 namespace glm{ +00029 namespace gtx{ +00030 namespace vector_angle +00031 { +00032 using namespace quaternion; +00033 using namespace epsilon; +00034 +00037 +00041 template <typename vecType> +00042 GLM_FUNC_QUALIFIER typename vecType::value_type angle( +00043 vecType const & x, +00044 vecType const & y); +00045 +00049 template <typename T> +00050 GLM_FUNC_QUALIFIER T orientedAngle( +00051 detail::tvec2<T> const & x, +00052 detail::tvec2<T> const & y); +00053 +00057 template <typename T> +00058 GLM_FUNC_QUALIFIER T orientedAngle( +00059 detail::tvec3<T> const & x, +00060 detail::tvec3<T> const & y, +00061 detail::tvec3<T> const & ref); +00062 +00064 }// namespace vector_angle +00065 }// namespace gtx +00066 }// namespace glm +00067 +00068 #include "vector_angle.inl" +00069 +00070 namespace glm{using namespace gtx::vector_angle;} +00071 +00072 #endif//glm_gtx_vector_angle +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2007-03-05 +00005 // Updated : 2007-03-05 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/vector_query.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_vector_query +00014 #define glm_gtx_vector_query +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 #include <cfloat> +00019 #include <limits> +00020 +00021 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00022 # pragma message("GLM: GLM_GTX_vector_query extension included") +00023 #endif +00024 +00025 namespace glm{ +00026 namespace gtx{ +00027 namespace vector_query +00028 { +00031 +00034 template <typename genType> +00035 bool areCollinear( +00036 genType const & v0, +00037 genType const & v1, +00038 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon()); +00039 +00042 template <typename genType> +00043 bool areOpposite( +00044 genType const & v0, +00045 genType const & v1, +00046 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon()); +00047 +00050 template <typename genType> +00051 bool areOrthogonal( +00052 genType const & v0, +00053 genType const & v1, +00054 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon()); +00055 +00058 template <typename genType> +00059 bool isNormalized( +00060 genType const & v, +00061 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon()); +00062 +00065 template <typename genType> +00066 bool isNull( +00067 genType const & v, +00068 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon()); +00069 +00072 template <typename genType> +00073 bool areOrthonormal( +00074 genType const & v0, +00075 genType const & v1, +00076 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon()); +00077 +00080 template <typename genType> +00081 bool areSimilar( +00082 genType const & v0, +00083 genType const & v1, +00084 typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon()); +00085 +00087 }// namespace vector_query +00088 }// namespace gtx +00089 }// namespace glm +00090 +00091 #include "vector_query.inl" +00092 +00093 namespace glm{using namespace gtx::vector_query;} +00094 +00095 #endif//glm_gtx_vector_query +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2007-05-21 +00005 // Updated : 2007-05-21 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/verbose_operator.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_verbose_operator +00014 #define glm_gtx_verbose_operator +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_verbose_operator extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace verbose_operator +00026 { +00029 +00032 template <typename genTypeT, typename genTypeU> +00033 genTypeT add(genTypeT const & a, genTypeU const & b); +00034 +00037 template <typename genTypeT, typename genTypeU> +00038 genTypeT sub(genTypeT const & a, genTypeU const & b); +00039 +00042 template <typename genTypeT, typename genTypeU> +00043 genTypeT mul(genTypeT const & a, genTypeU const & b); +00044 +00047 template <typename genTypeT, typename genTypeU> +00048 genTypeT div(genTypeT const & a, genTypeU const & b); +00049 +00052 template <typename genTypeT, typename genTypeU, typename genTypeV> +00053 genTypeT mad(genTypeT const & a, genTypeU const & b, genTypeV const & c); +00054 +00056 }// namespace verbose_operator +00057 }// namespace gtx +00058 }// namespace glm +00059 +00060 #include "verbose_operator.inl" +00061 +00062 namespace glm{using namespace gtx::verbose_operator;} +00063 +00064 #endif//glm_gtx_verbose_operator +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00004 // Created : 2009-11-25 +00005 // Updated : 2009-11-25 +00006 // Licence : This source is under MIT License +00007 // File : glm/gtx/wrap.hpp +00009 // Dependency: +00010 // - GLM core +00012 +00013 #ifndef glm_gtx_wrap +00014 #define glm_gtx_wrap +00015 +00016 // Dependency: +00017 #include "../glm.hpp" +00018 +00019 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00020 # pragma message("GLM: GLM_GTX_wrap extension included") +00021 #endif +00022 +00023 namespace glm{ +00024 namespace gtx{ +00025 namespace wrap +00026 { +00029 +00032 template <typename genType> +00033 genType clamp(genType const & Texcoord); +00034 +00037 template <typename genType> +00038 genType repeat(genType const & Texcoord); +00039 +00042 template <typename genType> +00043 genType mirrorRepeat(genType const & Texcoord); +00044 +00046 }// namespace wrap +00047 }// namespace gtx +00048 }// namespace glm +00049 +00050 #include "wrap.inl" +00051 +00052 namespace glm{using namespace gtx::wrap;} +00053 +00054 #endif//glm_img_wrap +
+ |
00001 +00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) +00003 // Virtrev SDK copyright matrem (matrem84.free.fr) +00005 // Created : 2008-05-24 +00006 // Updated : 2008-05-26 +00007 // Licence : This source is under MIT License +00008 // File : glm/ext/virtrev/xstream.hpp +00010 // Dependency: +00011 // - GLM core +00012 // - GLM_GTX_matrix_selection +00014 +00015 #ifndef GLM_EXT_VIRTREV_XSTREAM_HPP +00016 #define GLM_EXT_VIRTREV_XSTREAM_HPP +00017 +00018 #include "../glm.hpp" +00019 #include "../gtc/matrix_access.hpp" +00020 #include <iostream> +00021 +00022 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00023 # pragma message("GLM: GLM_VIRTREV_xstream extension included") +00024 #endif +00025 +00026 namespace glm +00027 { +00028 namespace virtrev_glmext +00029 { +00031 namespace xstream +00032 { +00033 template<typename T> +00034 std::ostream & operator << (std::ostream & stream, glm::detail::tvec2<T> const & vec) +00035 { +00036 stream << "<glm_vec2 "; +00037 stream << "x=\"" << vec.x << "\" "; +00038 stream << "y=\"" << vec.y << "\" "; +00039 stream << "/>"; +00040 +00041 return stream; +00042 } +00043 +00044 template<typename T> +00045 std::ostream & operator << (std::ostream & stream, glm::detail::tvec3<T> const & vec) +00046 { +00047 stream << "<glm_vec3 "; +00048 stream << "x=\"" << vec.x << "\" "; +00049 stream << "y=\"" << vec.y << "\" "; +00050 stream << "z=\"" << vec.z << "\" "; +00051 stream << "/>"; +00052 +00053 return stream; +00054 } +00055 +00056 template<typename T> +00057 std::ostream & operator << (std::ostream & stream, glm::detail::tvec4<T> const & vec) +00058 { +00059 stream << "<glm_vec4 "; +00060 stream << "x=\"" << vec.x << "\" "; +00061 stream << "y=\"" << vec.y << "\" "; +00062 stream << "z=\"" << vec.z << "\" "; +00063 stream << "w=\"" << vec.w << "\" "; +00064 stream << "/>"; +00065 +00066 return stream; +00067 } +00068 +00069 template<typename T> +00070 std::ostream & operator << (std::ostream & stream, glm::detail::tmat2x2<T> const & mat) +00071 { +00072 stream << "<glm_mat2>" << std::endl; +00073 stream << "<row "; +00074 stream << "x=\"" << glm::row(mat, 0)[0] << "\" "; +00075 stream << "y=\"" << glm::row(mat, 0)[1] << "\" "; +00076 stream << "/>" << std::endl; +00077 stream << "<row "; +00078 stream << "x=\"" << glm::row(mat, 1)[0] << "\" "; +00079 stream << "y=\"" << glm::row(mat, 1)[1] << "\" "; +00080 stream << "/>" << std::endl; +00081 stream << "</glm_mat2>"; +00082 +00083 return stream; +00084 } +00085 +00086 template<typename T> +00087 std::ostream & operator << (std::ostream & stream, glm::detail::tmat3x3<T> const & mat) +00088 { +00089 stream << "<glm_mat3>" << std::endl; +00090 stream << "<row "; +00091 stream << "x=\"" << glm::row(mat, 0)[0] << "\" "; +00092 stream << "y=\"" << glm::row(mat, 0)[1] << "\" "; +00093 stream << "z=\"" << glm::row(mat, 0)[2] << "\" "; +00094 stream << "/>" << std::endl; +00095 stream << "<row "; +00096 stream << "x=\"" << glm::row(mat, 1)[0] << "\" "; +00097 stream << "y=\"" << glm::row(mat, 1)[1] << "\" "; +00098 stream << "z=\"" << glm::row(mat, 1)[2] << "\" "; +00099 stream << "/>" << std::endl; +00100 stream << "<row "; +00101 stream << "x=\"" << glm::row(mat, 2)[0] << "\" "; +00102 stream << "y=\"" << glm::row(mat, 2)[1] << "\" "; +00103 stream << "z=\"" << glm::row(mat, 2)[2] << "\" "; +00104 stream << "/>" << std::endl; +00105 stream << "</glm_mat3>"; +00106 +00107 return stream; +00108 } +00109 +00110 template<typename T> +00111 std::ostream & operator << (std::ostream & stream, glm::detail::tmat4x4<T> const & mat) +00112 { +00113 stream << "<glm_mat4>" << std::endl; +00114 stream << "<row "; +00115 stream << "x=\"" << glm::row(mat, 0)[0] << "\" "; +00116 stream << "y=\"" << glm::row(mat, 0)[1] << "\" "; +00117 stream << "z=\"" << glm::row(mat, 0)[2] << "\" "; +00118 stream << "w=\"" << glm::row(mat, 0)[3] << "\" "; +00119 stream << "/>" << std::endl; +00120 stream << "<row "; +00121 stream << "x=\"" << glm::row(mat, 1)[0] << "\" "; +00122 stream << "y=\"" << glm::row(mat, 1)[1] << "\" "; +00123 stream << "z=\"" << glm::row(mat, 1)[2] << "\" "; +00124 stream << "w=\"" << glm::row(mat, 1)[3] << "\" "; +00125 stream << "/>" << std::endl; +00126 stream << "<row "; +00127 stream << "x=\"" << glm::row(mat, 2)[0] << "\" "; +00128 stream << "y=\"" << glm::row(mat, 2)[1] << "\" "; +00129 stream << "z=\"" << glm::row(mat, 2)[2] << "\" "; +00130 stream << "w=\"" << glm::row(mat, 2)[3] << "\" "; +00131 stream << "/>" << std::endl; +00132 stream << "<row "; +00133 stream << "x=\"" << glm::row(mat, 3)[0] << "\" "; +00134 stream << "y=\"" << glm::row(mat, 3)[1] << "\" "; +00135 stream << "z=\"" << glm::row(mat, 3)[2] << "\" "; +00136 stream << "w=\"" << glm::row(mat, 3)[3] << "\" "; +00137 stream << "/>" << std::endl; +00138 stream << "</glm_mat4>"; +00139 +00140 return stream; +00141 } +00142 } +00143 } +00144 } +00145 +00146 namespace glm{using namespace glm::virtrev_glmext::xstream;} +00147 +00148 #endif//GLM_EXT_VIRTREV_XSTREAM_HPP +
+ |
GLM namespace, it contains all GLSL based features. +More...
++Namespaces | |
namespace | core |
namespace | gtc |
namespace | gtx |
namespace | virtrev |
GLM namespace, it contains all GLSL based features.
++ |
GLM core. Namespace that includes all the feature define by GLSL 4.10.6 specification. This namespace is included in glm namespace. +More...
++Namespaces | |
namespace | function |
namespace | type |
GLM core. Namespace that includes all the feature define by GLSL 4.10.6 specification. This namespace is included in glm namespace.
++ |
Some of the functions defined in section 8 Built-in Functions of GLSL 1.30.8 specification. +More...
++Namespaces | |
namespace | exponential |
namespace | integer |
namespace | matrix |
namespace | packing |
namespace | trigonometric |
namespace | vector_relational |
Some of the functions defined in section 8 Built-in Functions of GLSL 1.30.8 specification.
+Angle and trigonometry, exponential, common, geometric, matrix and vector relational functions.
++ |
Define all exponential functions from Section 8.2 of GLSL 1.30.8 specification. Included in glm namespace. +More...
++Functions | |
template<typename genType > | |
genType | exp (genType const &x) |
template<typename genType > | |
genType | exp2 (genType const &x) |
template<typename genType > | |
genType | inversesqrt (genType const &x) |
template<typename genType > | |
genType | log (genType const &x) |
template<typename genType > | |
genType | log2 (genType const &x) |
template<typename genType > | |
genType | pow (genType const &x, genType const &y) |
template<typename genType > | |
genType | sqrt (genType const &x) |
Define all exponential functions from Section 8.2 of GLSL 1.30.8 specification. Included in glm namespace.
++ |
Define integer functions from Section 8.8 of GLSL 4.00.8 specification. +More...
++Functions | |
template<typename T , template< typename > class C> | |
C< T >::signed_type | bitCount (C< T > const &Value) |
template<typename genIUType > | |
genIUType | bitfieldExtract (genIUType const &Value, int const &Offset, int const &Bits) |
template<typename genIUType > | |
genIUType | bitfieldInsert (genIUType const &Base, genIUType const &Insert, int const &Offset, int const &Bits) |
template<typename genIUType > | |
genIUType | bitfieldReverse (genIUType const &value) |
template<typename T , template< typename > class C> | |
C< T >::signed_type | findLSB (C< T > const &Value) |
template<typename T , template< typename > class C> | |
C< T >::signed_type | findMSB (C< T > const &Value) |
template<typename genIType > | |
void | imulExtended (genIType const &x, genIType const &y, genIType &msb, genIType &lsb) |
template<typename genUType > | |
genUType | uaddCarry (genUType const &x, genUType const &y, genUType &carry) |
template<typename genUType > | |
void | umulExtended (genUType const &x, genUType const &y, genUType &msb, genUType &lsb) |
template<typename genUType > | |
genUType | usubBorrow (genUType const &x, genUType const &y, genUType &borrow) |
Define integer functions from Section 8.8 of GLSL 4.00.8 specification.
++ |
Define all matrix functions from Section 8.5 of GLSL 1.30.8 specification. Included in glm namespace. +More...
++Functions | |
template<typename T > | |
detail::tmat2x2< T >::value_type | determinant (detail::tmat2x2< T > const &m) |
template<typename T > | |
detail::tmat3x3< T >::value_type | determinant (detail::tmat3x3< T > const &m) |
template<typename T > | |
detail::tmat4x4< T >::value_type | determinant (detail::tmat4x4< T > const &m) |
template<typename T > | |
detail::tmat4x4< T > | inverse (detail::tmat4x4< T > const &m) |
template<typename T > | |
detail::tmat3x3< T > | inverse (detail::tmat3x3< T > const &m) |
template<typename T > | |
detail::tmat2x2< T > | inverse (detail::tmat2x2< T > const &m) |
template<typename matType > | |
matType | matrixCompMult (matType const &x, matType const &y) |
template<typename vecType , typename matType > | |
matType | outerProduct (vecType const &c, vecType const &r) |
template<typename matType > | |
matType::transpose_type | transpose (matType const &x) |
Define all matrix functions from Section 8.5 of GLSL 1.30.8 specification. Included in glm namespace.
++ |
Define packing functions from section 8.4 floating-point pack and unpack functions of GLSL 4.00.8 specification. +More...
++Functions | |
double | packDouble2x32 (detail::tvec2< detail::uint32 > const &v) |
detail::uint32 | packSnorm4x8 (detail::tvec4< detail::float32 > const &v) |
detail::uint32 | packUnorm2x16 (detail::tvec2< detail::float32 > const &v) |
detail::uint32 | packUnorm4x8 (detail::tvec4< detail::float32 > const &v) |
detail::tvec2< detail::uint32 > | unpackDouble2x32 (double const &v) |
detail::tvec4< detail::float32 > | unpackSnorm4x8 (detail::uint32 const &p) |
detail::tvec2< detail::float32 > | unpackUnorm2x16 (detail::uint32 const &p) |
detail::tvec4< detail::float32 > | unpackUnorm4x8 (detail::uint32 const &p) |
Define packing functions from section 8.4 floating-point pack and unpack functions of GLSL 4.00.8 specification.
++ |
Define Angle and trigonometry functions from Section 8.1 of GLSL 1.30.8 specification. +More...
++Functions | |
template<typename genType > | |
genType | acos (genType const &x) |
template<typename genType > | |
genType | acosh (genType const &x) |
template<typename genType > | |
genType | asin (genType const &x) |
template<typename genType > | |
genType | asinh (genType const &x) |
template<typename genType > | |
genType | atan (genType const &y, genType const &x) |
template<typename genType > | |
genType | atan (genType const &y_over_x) |
template<typename genType > | |
genType | atanh (genType const &x) |
template<typename genType > | |
genType | cos (genType const &angle) |
template<typename genType > | |
genType | cosh (genType const &angle) |
template<typename genType > | |
genType | degrees (genType const &radians) |
template<typename genType > | |
genType | radians (genType const °rees) |
template<typename genType > | |
genType | sin (genType const &angle) |
template<typename genType > | |
genType | sinh (genType const &angle) |
template<typename genType > | |
genType | tan (genType const &angle) |
template<typename genType > | |
genType | tanh (genType const &angle) |
Define Angle and trigonometry functions from Section 8.1 of GLSL 1.30.8 specification.
+Included in glm namespace.
++ |
Define vector relational functions from Section 8.6 of GLSL 1.30.8 specification. +More...
++Functions | |
template<template< typename > class vecType> | |
GLM_FUNC_QUALIFIER bool | all (vecType< bool > const &v) |
template<template< typename > class vecType> | |
GLM_FUNC_QUALIFIER bool | any (vecType< bool > const &v) |
template<typename T , template< typename > class vecType> | |
GLM_FUNC_QUALIFIER vecType< T > +::bool_type | equal (vecType< T > const &x, vecType< T > const &y) |
template<typename T , template< typename > class vecType> | |
GLM_FUNC_QUALIFIER vecType< T > +::bool_type | greaterThan (vecType< T > const &x, vecType< T > const &y) |
template<typename T , template< typename > class vecType> | |
GLM_FUNC_QUALIFIER vecType< T > +::bool_type | greaterThanEqual (vecType< T > const &x, vecType< T > const &y) |
template<typename T , template< typename > class vecType> | |
GLM_FUNC_QUALIFIER vecType< T > +::bool_type | lessThan (vecType< T > const &x, vecType< T > const &y) |
template<typename T , template< typename > class vecType> | |
GLM_FUNC_QUALIFIER vecType< T > +::bool_type | lessThanEqual (vecType< T > const &x, vecType< T > const &y) |
template<template< typename > class vecType> | |
GLM_FUNC_QUALIFIER vecType< bool > | not_ (vecType< bool > const &v) |
template<typename T , template< typename > class vecType> | |
GLM_FUNC_QUALIFIER vecType< T > +::bool_type | notEqual (vecType< T > const &x, vecType< T > const &y) |
Define vector relational functions from Section 8.6 of GLSL 1.30.8 specification.
+Included in glm namespace.
++ |
Scalar, vectors and matrices from section 4.1.2 Booleans, 4.1.3 Integers section, 4.1.4 Floats section, 4.1.5 Vectors and section 4.1.6 Matrices of GLSL 1.30.8 specification. +More...
+Scalar, vectors and matrices from section 4.1.2 Booleans, 4.1.3 Integers section, 4.1.4 Floats section, 4.1.5 Vectors and section 4.1.6 Matrices of GLSL 1.30.8 specification.
+This namespace resolves precision qualifier define in section 4.5 of GLSL 1.30.8 specification.
+typedef uint_t uint | +
Unsigned integer.
+From GLSL 1.30.8 specification section 4.1.3 Integers.
+ +Definition at line 103 of file type_int.hpp.
+ ++ |
< Namespace for precision stuff. +More...
+< Namespace for precision stuff.
+typedef detail::tmat2x4<highp_float> highp_mat2x4 | +
2 columns of 4 components matrix of high precision floating-point numbers.
+There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)
+ +Definition at line 215 of file type_mat2x4.hpp.
+ +typedef detail::tmat3x2<highp_float> highp_mat3x2 | +
3 columns of 2 components matrix of high precision floating-point numbers.
+There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)
+ +Definition at line 221 of file type_mat3x2.hpp.
+ +typedef detail::tmat3x4<highp_float> highp_mat3x4 | +
3 columns of 4 components matrix of high precision floating-point numbers.
+There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)
+ +Definition at line 221 of file type_mat3x4.hpp.
+ +typedef detail::tmat2x4<lowp_float> lowp_mat2x4 | +
2 columns of 4 components matrix of low precision floating-point numbers.
+There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)
+ +Definition at line 207 of file type_mat2x4.hpp.
+ +typedef detail::tmat3x2<lowp_float> lowp_mat3x2 | +
3 columns of 2 components matrix of low precision floating-point numbers.
+There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)
+ +Definition at line 213 of file type_mat3x2.hpp.
+ +typedef detail::tmat3x4<lowp_float> lowp_mat3x4 | +
3 columns of 4 components matrix of low precision floating-point numbers.
+There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)
+ +Definition at line 213 of file type_mat3x4.hpp.
+ +typedef detail::tmat2x4<mediump_float> mediump_mat2x4 | +
2 columns of 4 components matrix of medium precision floating-point numbers.
+There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)
+ +Definition at line 211 of file type_mat2x4.hpp.
+ +typedef detail::tmat3x2<mediump_float> mediump_mat3x2 | +
3 columns of 2 components matrix of medium precision floating-point numbers.
+There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)
+ +Definition at line 217 of file type_mat3x2.hpp.
+ +typedef detail::tmat3x4<mediump_float> mediump_mat3x4 | +
3 columns of 4 components matrix of medium precision floating-point numbers.
+There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)
+ +Definition at line 217 of file type_mat3x4.hpp.
+ ++ |
G-Truc Creation stable extensions. +More...
++Namespaces | |
namespace | half_float |
namespace | matrix_access |
namespace | matrix_integer |
namespace | matrix_inverse |
namespace | matrix_transform |
namespace | quaternion |
namespace | swizzle |
namespace | type_precision |
namespace | type_ptr |
G-Truc Creation stable extensions.
++ |
< GLM_GTC_half_float extension: Add support for half precision floating-point types +More...
++Typedefs | |
typedef detail::thalf | half |
typedef detail::tmat2x2 +< detail::thalf > | hmat2 |
typedef detail::tmat2x2 +< detail::thalf > | hmat2x2 |
typedef detail::tmat2x3 +< detail::thalf > | hmat2x3 |
typedef detail::tmat2x4 +< detail::thalf > | hmat2x4 |
typedef detail::tmat3x3 +< detail::thalf > | hmat3 |
typedef detail::tmat3x2 +< detail::thalf > | hmat3x2 |
typedef detail::tmat3x3 +< detail::thalf > | hmat3x3 |
typedef detail::tmat3x4 +< detail::thalf > | hmat3x4 |
typedef detail::tmat4x4 +< detail::thalf > | hmat4 |
typedef detail::tmat4x2 +< detail::thalf > | hmat4x2 |
typedef detail::tmat4x3 +< detail::thalf > | hmat4x3 |
typedef detail::tmat4x4 +< detail::thalf > | hmat4x4 |
typedef detail::tvec2 +< detail::thalf > | hvec2 |
typedef detail::tvec3 +< detail::thalf > | hvec3 |
typedef detail::tvec4 +< detail::thalf > | hvec4 |
< GLM_GTC_half_float extension: Add support for half precision floating-point types
++ |
< GLM_GTC_matrix_access extension: Set a column or a row of a matrix +More...
++Functions | |
template<typename genType > | |
genType::col_type | column (genType const &m, int index) |
template<typename genType > | |
genType | column (genType const &m, int index, typename genType::col_type const &x) |
template<typename genType > | |
genType::row_type | row (genType const &m, int index) |
template<typename genType > | |
genType | row (genType const &m, int index, typename genType::row_type const &x) |
< GLM_GTC_matrix_access extension: Set a column or a row of a matrix
++ |
< GLM_GTC_matrix_integer extension: Add integer matrices +More...
+< GLM_GTC_matrix_integer extension: Add integer matrices
++ |
< GLM_GTC_matrix_inverse extension: Inverse matrix functions +More...
++Functions | |
template<typename genType > | |
genType | affineInverse (genType const &m) |
template<typename genType > | |
GLM_FUNC_QUALIFIER +genType::value_type | inverseTranspose (genType const &m) |
< GLM_GTC_matrix_inverse extension: Inverse matrix functions
++ |
< GLM_GTC_matrix_transform extension: Add transformation matrices +More...
++Functions | |
template<typename T > | |
detail::tmat4x4< T > | frustum (T const &left, T const &right, T const &bottom, T const &top, T const &nearVal, T const &farVal) |
template<typename T > | |
detail::tmat4x4< T > | infinitePerspective (T fovy, T aspect, T zNear) |
template<typename T > | |
detail::tmat4x4< T > | lookAt (detail::tvec3< T > const &eye, detail::tvec3< T > const ¢er, detail::tvec3< T > const &up) |
template<typename T > | |
detail::tmat4x4< T > | ortho (T const &left, T const &right, T const &bottom, T const &top) |
template<typename T > | |
detail::tmat4x4< T > | ortho (T const &left, T const &right, T const &bottom, T const &top, T const &zNear, T const &zFar) |
template<typename T > | |
detail::tmat4x4< T > | perspective (T const &fovy, T const &aspect, T const &zNear, T const &zFar) |
template<typename valType > | |
detail::tmat4x4< valType > | perspectiveFov (valType const &fov, valType const &width, valType const &height, valType const &zNear, valType const &zFar) |
template<typename T , typename U > | |
detail::tmat4x4< T > | pickMatrix (detail::tvec2< T > const ¢er, detail::tvec2< T > const &delta, detail::tvec4< U > const &viewport) |
template<typename T , typename U > | |
detail::tvec3< T > | project (detail::tvec3< T > const &obj, detail::tmat4x4< T > const &model, detail::tmat4x4< T > const &proj, detail::tvec4< U > const &viewport) |
template<typename T > | |
detail::tmat4x4< T > | rotate (detail::tmat4x4< T > const &m, T const &angle, detail::tvec3< T > const &v) |
template<typename T > | |
detail::tmat4x4< T > | scale (detail::tmat4x4< T > const &m, detail::tvec3< T > const &v) |
template<typename T > | |
detail::tmat4x4< T > | translate (detail::tmat4x4< T > const &m, detail::tvec3< T > const &v) |
template<typename T > | |
detail::tmat4x4< T > | tweakedInfinitePerspective (T fovy, T aspect, T zNear) |
template<typename T , typename U > | |
detail::tvec3< T > | unProject (detail::tvec3< T > const &win, detail::tmat4x4< T > const &model, detail::tmat4x4< T > const &proj, detail::tvec4< U > const &viewport) |
< GLM_GTC_matrix_transform extension: Add transformation matrices
++ |
< GLM_GTC_quaternion extension: Quaternion types and functions +More...
++Typedefs | |
typedef detail::tquat< double > | dquat |
typedef detail::tquat< float > | fquat |
typedef detail::tquat +< highp_float > | highp_quat |
typedef detail::tquat +< detail::thalf > | hquat |
typedef detail::tquat< lowp_float > | lowp_quat |
typedef detail::tquat +< mediump_float > | mediump_quat |
typedef detail::tquat< float > | quat |
+Functions | |
template<typename T > | |
detail::tquat< T > | conjugate (detail::tquat< T > const &q) |
template<typename T > | |
GLM_DEPRECATED detail::tquat< T > | cross (detail::tquat< T > const &q1, detail::tquat< T > const &q2) |
template<typename T > | |
detail::tquat< T >::value_type | dot (detail::tquat< T > const &q1, detail::tquat< T > const &q2) |
template<typename T > | |
detail::tquat< T > | inverse (detail::tquat< T > const &q) |
template<typename T > | |
detail::tquat< T >::value_type | length (detail::tquat< T > const &q) |
template<typename T > | |
detail::tmat3x3< T > | mat3_cast (detail::tquat< T > const &x) |
template<typename T > | |
detail::tmat4x4< T > | mat4_cast (detail::tquat< T > const &x) |
template<typename T > | |
detail::tquat< T > | mix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a) |
template<typename T > | |
detail::tquat< T > | normalize (detail::tquat< T > const &q) |
template<typename T > | |
detail::tquat< T > | quat_cast (detail::tmat4x4< T > const &x) |
template<typename T > | |
detail::tquat< T > | quat_cast (detail::tmat3x3< T > const &x) |
template<typename T > | |
detail::tquat< T > | rotate (detail::tquat< T > const &q, typename detail::tquat< T >::value_type const &angle, detail::tvec3< T > const &v) |
< GLM_GTC_quaternion extension: Quaternion types and functions
++ |
+ |
< GLM_GTC_type_precision extension: Defined types with specific size. +More...
+< GLM_GTC_type_precision extension: Defined types with specific size.
++ |
< GLM_GTC_type_ptr extension: Get access to vectors & matrices value type address. +More...
++Functions | |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat2x2< T > | make_mat2 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat2x2< T > | make_mat2x2 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat2x3< T > | make_mat2x3 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat2x4< T > | make_mat2x4 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat3x3< T > | make_mat3 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat3x2< T > | make_mat3x2 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat3x3< T > | make_mat3x3 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat3x4< T > | make_mat3x4 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat4x4< T > | make_mat4 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat4x2< T > | make_mat4x2 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat4x3< T > | make_mat4x3 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat4x4< T > | make_mat4x4 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec2< T > | make_vec2 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec3< T > | make_vec3 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec4< T > | make_vec4 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tmat4x4< T > &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tmat4x3< T > &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tmat4x3< T > const &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tmat3x4< T > &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tmat3x4< T > const &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tmat4x2< T > &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tmat2x4< T > &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tmat2x4< T > const &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tmat2x2< T > &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tvec3< T > &vec) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tmat3x3< T > const &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tvec2< T > &vec) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tvec2< T > const &vec) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tvec4< T > &vec) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tmat4x4< T > const &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tmat3x3< T > &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tmat4x2< T > const &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tmat3x2< T > &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tmat2x3< T > &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tvec3< T > const &vec) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tvec4< T > const &vec) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tmat3x2< T > const &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tmat2x3< T > const &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tmat2x2< T > const &mat) |
< GLM_GTC_type_ptr extension: Get access to vectors & matrices value type address.
++ |
G-Truc Creation experimental extensions. +More...
++Namespaces | |
namespace | associated_min_max |
namespace | bit |
namespace | closest_point |
namespace | color_cast |
namespace | color_space |
namespace | color_space_YCoCg |
namespace | compatibility |
namespace | component_wise |
namespace | epsilon |
namespace | euler_angles |
namespace | extend |
namespace | extented_min_max |
namespace | fast_exponential |
namespace | fast_square_root |
namespace | fast_trigonometry |
namespace | gradient_paint |
namespace | handed_coordinate_space |
namespace | inertia |
namespace | int_10_10_10_2 |
namespace | integer |
namespace | intersect |
namespace | log_base |
namespace | matrix_cross_product |
namespace | matrix_interpolation |
namespace | matrix_major_storage |
namespace | matrix_operation |
namespace | matrix_query |
namespace | mixed_product |
namespace | multiple |
namespace | noise |
namespace | norm |
namespace | normal |
namespace | normalize_dot |
namespace | number_precision |
namespace | ocl_type |
namespace | optimum_pow |
namespace | orthonormalize |
namespace | perpendicular |
namespace | polar_coordinates |
namespace | projection |
namespace | quaternion |
namespace | random |
namespace | raw_data |
namespace | reciprocal |
namespace | rotate_vector |
namespace | simd_mat4 |
namespace | simd_vec4 |
namespace | spline |
namespace | std_based_type |
namespace | string_cast |
namespace | transform |
namespace | transform2 |
namespace | ulp |
namespace | unsigned_int |
namespace | vector_access |
namespace | vector_angle |
namespace | vector_query |
namespace | verbose_operator |
namespace | wrap |
G-Truc Creation experimental extensions.
+The interface could change between releases.
++ |
< GLM_GTX_associated_min_max extension: Min and max functions that return associated values not the compared onces. +More...
++Functions | |
+template<typename genTypeT , typename genTypeU > | |
genTypeU | associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b) |
+template<typename genTypeT , typename genTypeU > | |
genTypeU | associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c) |
+template<typename genTypeT , typename genTypeU > | |
genTypeU | associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c, const genTypeT &w, const genTypeU &d) |
+template<typename genTypeT , typename genTypeU > | |
genTypeU | associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c) |
+template<typename genTypeT , typename genTypeU > | |
genTypeU | associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b) |
+template<typename genTypeT , typename genTypeU > | |
genTypeU | associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c, const genTypeT &w, const genTypeU &d) |
< GLM_GTX_associated_min_max extension: Min and max functions that return associated values not the compared onces.
++ |
< GLM_GTX_bit extension: Allow to perform bit operations on integer values +More...
++Functions | |
template<typename genType > | |
genType | bitRevert (genType const &value) |
template<typename genType > | |
genType | bitRotateLeft (genType const &In, std::size_t Shift) |
template<typename genType > | |
genType | bitRotateRight (genType const &In, std::size_t Shift) |
template<typename genIUType , typename sizeType > | |
genIUType | extractField (genIUType const &v, sizeType const &first, sizeType const &count) |
template<typename genType > | |
int | highestBit (genType const &value) |
template<typename genType > | |
genType | highestBitValue (genType const &value) |
template<typename genType > | |
bool | isPowerOfTwo (genType const &value) |
template<typename genType > | |
int | lowestBit (genType const &value) |
template<typename genIType > | |
genIType | mask (genIType const &count) |
template<typename genType > | |
genType | powerOfTwoAbove (genType const &value) |
template<typename genType > | |
genType | powerOfTwoBelow (genType const &value) |
template<typename genType > | |
genType | powerOfTwoNearest (genType const &value) |
< GLM_GTX_bit extension: Allow to perform bit operations on integer values
++ |
< GLM_GTX_closest_point extension: Find the point on a straight line which is the closet of a point. +More...
++Functions | |
template<typename T > | |
detail::tvec3< T > | closestPointOnLine (detail::tvec3< T > const &point, detail::tvec3< T > const &a, detail::tvec3< T > const &b) |
< GLM_GTX_closest_point extension: Find the point on a straight line which is the closet of a point.
++ |
< GLM_GTX_color_cast extension: Conversion between two color types +More...
+< GLM_GTX_color_cast extension: Conversion between two color types
++ |
< GLM_GTX_color_space extension: Related to RGB to HSV conversions and operations +More...
++Functions | |
template<typename valType > | |
detail::tvec3< valType > | hsvColor (detail::tvec3< valType > const &rgbValue) |
template<typename valType > | |
valType | luminosity (detail::tvec3< valType > const &color) |
template<typename valType > | |
detail::tvec3< valType > | rgbColor (detail::tvec3< valType > const &hsvValue) |
template<typename valType > | |
detail::tvec3< valType > | saturation (valType const s, detail::tvec3< valType > const &color) |
template<typename valType > | |
detail::tmat4x4< valType > | saturation (valType const s) |
template<typename valType > | |
detail::tvec4< valType > | saturation (valType const s, detail::tvec4< valType > const &color) |
< GLM_GTX_color_space extension: Related to RGB to HSV conversions and operations
++ |
< GLM_GTX_color_space_YCoCg extension: RGB to YCoCg conversions and operations +More...
++Functions | |
template<typename valType > | |
detail::tvec3< valType > | rgb2YCoCg (detail::tvec3< valType > const &rgbColor) |
template<typename valType > | |
detail::tvec3< valType > | rgb2YCoCgR (detail::tvec3< valType > const &rgbColor) |
template<typename valType > | |
detail::tvec3< valType > | YCoCg2rgb (detail::tvec3< valType > const &YCoCgColor) |
template<typename valType > | |
detail::tvec3< valType > | YCoCgR2rgb (detail::tvec3< valType > const &YCoCgColor) |
< GLM_GTX_color_space_YCoCg extension: RGB to YCoCg conversions and operations
++ |
< GLM_GTX_compatibility extension: Provide functions to increase the compatibility with Cg and HLSL languages +More...
++Typedefs | |
+typedef bool | bool1 |
+typedef bool | bool1x1 |
+typedef detail::tvec2< bool > | bool2 |
+typedef detail::tmat2x2< bool > | bool2x2 |
+typedef detail::tmat2x3< bool > | bool2x3 |
+typedef detail::tmat2x4< bool > | bool2x4 |
+typedef detail::tvec3< bool > | bool3 |
+typedef detail::tmat3x2< bool > | bool3x2 |
+typedef detail::tmat3x3< bool > | bool3x3 |
+typedef detail::tmat3x4< bool > | bool3x4 |
+typedef detail::tvec4< bool > | bool4 |
+typedef detail::tmat4x2< bool > | bool4x2 |
+typedef detail::tmat4x3< bool > | bool4x3 |
+typedef detail::tmat4x4< bool > | bool4x4 |
+typedef double | double1 |
+typedef double | double1x1 |
+typedef detail::tvec2< double > | double2 |
+typedef detail::tmat2x2< double > | double2x2 |
+typedef detail::tmat2x3< double > | double2x3 |
+typedef detail::tmat2x4< double > | double2x4 |
+typedef detail::tvec3< double > | double3 |
+typedef detail::tmat3x2< double > | double3x2 |
+typedef detail::tmat3x3< double > | double3x3 |
+typedef detail::tmat3x4< double > | double3x4 |
+typedef detail::tvec4< double > | double4 |
+typedef detail::tmat4x2< double > | double4x2 |
+typedef detail::tmat4x3< double > | double4x3 |
+typedef detail::tmat4x4< double > | double4x4 |
+typedef float | float1 |
+typedef float | float1x1 |
+typedef detail::tvec2< float > | float2 |
+typedef detail::tmat2x2< float > | float2x2 |
+typedef detail::tmat2x3< float > | float2x3 |
+typedef detail::tmat2x4< float > | float2x4 |
+typedef detail::tvec3< float > | float3 |
+typedef detail::tmat3x2< float > | float3x2 |
+typedef detail::tmat3x3< float > | float3x3 |
+typedef detail::tmat3x4< float > | float3x4 |
+typedef detail::tvec4< float > | float4 |
+typedef detail::tmat4x2< float > | float4x2 |
+typedef detail::tmat4x3< float > | float4x3 |
+typedef detail::tmat4x4< float > | float4x4 |
+typedef gtc::half_float::half | half1 |
+typedef gtc::half_float::half | half1x1 |
+typedef detail::tvec2 +< gtc::half_float::half > | half2 |
+typedef detail::tmat2x2 +< gtc::half_float::half > | half2x2 |
+typedef detail::tmat2x3 +< gtc::half_float::half > | half2x3 |
+typedef detail::tmat2x4 +< gtc::half_float::half > | half2x4 |
+typedef detail::tvec3 +< gtc::half_float::half > | half3 |
+typedef detail::tmat3x2 +< gtc::half_float::half > | half3x2 |
+typedef detail::tmat3x3 +< gtc::half_float::half > | half3x3 |
+typedef detail::tmat3x4 +< gtc::half_float::half > | half3x4 |
+typedef detail::tvec4 +< gtc::half_float::half > | half4 |
+typedef detail::tmat4x2 +< gtc::half_float::half > | half4x2 |
+typedef detail::tmat4x3 +< gtc::half_float::half > | half4x3 |
+typedef detail::tmat4x4 +< gtc::half_float::half > | half4x4 |
+typedef int | int1 |
+typedef int | int1x1 |
+typedef detail::tvec2< int > | int2 |
+typedef detail::tmat2x2< int > | int2x2 |
+typedef detail::tmat2x3< int > | int2x3 |
+typedef detail::tmat2x4< int > | int2x4 |
+typedef detail::tvec3< int > | int3 |
+typedef detail::tmat3x2< int > | int3x2 |
+typedef detail::tmat3x3< int > | int3x3 |
+typedef detail::tmat3x4< int > | int3x4 |
+typedef detail::tvec4< int > | int4 |
+typedef detail::tmat4x2< int > | int4x2 |
+typedef detail::tmat4x3< int > | int4x3 |
+typedef detail::tmat4x4< int > | int4x4 |
+Functions | |
+template<typename T > | |
GLM_FUNC_QUALIFIER T | atan2 (T x, T y) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec2< T > | atan2 (const detail::tvec2< T > &x, const detail::tvec2< T > &y) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec3< T > | atan2 (const detail::tvec3< T > &x, const detail::tvec3< T > &y) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec4< T > | atan2 (const detail::tvec4< T > &x, const detail::tvec4< T > &y) |
+template<typename genType > | |
bool | isfinite (genType const &x) |
+template<typename valType > | |
detail::tvec2< bool > | isfinite (const detail::tvec2< valType > &x) |
+template<typename valType > | |
detail::tvec3< bool > | isfinite (const detail::tvec3< valType > &x) |
+template<typename valType > | |
detail::tvec4< bool > | isfinite (const detail::tvec4< valType > &x) |
+template<typename genType > | |
detail::tvec4< bool > | isinf (const detail::tvec4< genType > &x) |
+template<typename genType > | |
bool | isinf (genType const &x) |
+template<typename genType > | |
detail::tvec2< bool > | isinf (const detail::tvec2< genType > &x) |
+template<typename genType > | |
detail::tvec3< bool > | isinf (const detail::tvec3< genType > &x) |
+template<typename genType > | |
bool | isnan (genType const &x) |
+template<typename genType > | |
detail::tvec2< bool > | isnan (const detail::tvec2< genType > &x) |
+template<typename genType > | |
detail::tvec3< bool > | isnan (const detail::tvec3< genType > &x) |
+template<typename genType > | |
detail::tvec4< bool > | isnan (const detail::tvec4< genType > &x) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec4< T > | lerp (const detail::tvec4< T > &x, const detail::tvec4< T > &y, T a) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec2< T > | lerp (const detail::tvec2< T > &x, const detail::tvec2< T > &y, const detail::tvec2< T > &a) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec2< T > | lerp (const detail::tvec2< T > &x, const detail::tvec2< T > &y, T a) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec3< T > | lerp (const detail::tvec3< T > &x, const detail::tvec3< T > &y, const detail::tvec3< T > &a) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec3< T > | lerp (const detail::tvec3< T > &x, const detail::tvec3< T > &y, T a) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec4< T > | lerp (const detail::tvec4< T > &x, const detail::tvec4< T > &y, const detail::tvec4< T > &a) |
+template<typename T > | |
GLM_FUNC_QUALIFIER T | lerp (T x, T y, T a) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec2< T > | saturate (const detail::tvec2< T > &x) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec3< T > | saturate (const detail::tvec3< T > &x) |
+template<typename T > | |
GLM_FUNC_QUALIFIER T | saturate (T x) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec4< T > | saturate (const detail::tvec4< T > &x) |
< GLM_GTX_compatibility extension: Provide functions to increase the compatibility with Cg and HLSL languages
++ |
< GLM_GTX_component_wise extension: Operations between components of a type +More...
++Functions | |
template<typename genType > | |
genType::value_type | compAdd (genType const &v) |
template<typename genType > | |
genType::value_type | compMax (genType const &v) |
template<typename genType > | |
genType::value_type | compMin (genType const &v) |
template<typename genType > | |
genType::value_type | compMul (genType const &v) |
< GLM_GTX_component_wise extension: Operations between components of a type
++ |
< GLM_GTX_epsilon extension: Comparison functions for a user defined epsilon values. +More...
++Functions | |
template<typename genTypeT , typename genTypeU > | |
bool | equalEpsilon (genTypeT const &x, genTypeT const &y, genTypeU const &epsilon) |
template<typename genTypeT , typename genTypeU > | |
bool | notEqualEpsilon (genTypeT const &x, genTypeT const &y, genTypeU const &epsilon) |
< GLM_GTX_epsilon extension: Comparison functions for a user defined epsilon values.
++ |
< GLM_GTX_euler_angles extension: Build matrices from Euler angles. +More...
++Functions | |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleX (valType const &angleX) |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleXY (valType const &angleX, valType const &angleY) |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleXZ (valType const &angleX, valType const &angleZ) |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleY (valType const &angleY) |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleYX (valType const &angleY, valType const &angleX) |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleYXZ (valType const &yaw, valType const &pitch, valType const &roll) |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleYZ (valType const &angleY, valType const &angleZ) |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleZ (valType const &angleZ) |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleZX (valType const &angleZ, valType const &angleX) |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleZY (valType const &angleZ, valType const &angleY) |
template<typename T > | |
detail::tmat2x2< T > | orientate2 (T const &angle) |
template<typename T > | |
detail::tmat3x3< T > | orientate3 (detail::tvec3< T > const &angles) |
template<typename T > | |
detail::tmat3x3< T > | orientate3 (T const &angle) |
template<typename T > | |
detail::tmat4x4< T > | orientate4 (detail::tvec3< T > const &angles) |
template<typename valType > | |
detail::tmat4x4< valType > | yawPitchRoll (valType const &yaw, valType const &pitch, valType const &roll) |
< GLM_GTX_euler_angles extension: Build matrices from Euler angles.
++ |
< GLM_GTX_extend extension: Extend a position from a source to a position at a defined length. +More...
++Functions | |
template<typename genType > | |
genType | extend (genType const &Origin, genType const &Source, typename genType::value_type const Length) |
< GLM_GTX_extend extension: Extend a position from a source to a position at a defined length.
++ |
< GLM_GTX_extented_min_max extension: Min and max functions for 3 to 4 parameters. +More...
+< GLM_GTX_extented_min_max extension: Min and max functions for 3 to 4 parameters.
++ |
< GLM_GTX_fast_exponential extension: Fast but less accurate implementations of exponential based functions. +More...
++Functions | |
template<typename T > | |
T | fastExp (const T &x) |
template<typename T > | |
T | fastExp2 (const T &x) |
template<typename T > | |
T | fastLn (const T &x) |
template<typename T > | |
T | fastLog (const T &x) |
template<typename T > | |
T | fastLog2 (const T &x) |
template<typename valType > | |
valType | fastPow (valType const &x, valType const &y) |
template<typename T , typename U > | |
T | fastPow (const T &x, const U &y) |
< GLM_GTX_fast_exponential extension: Fast but less accurate implementations of exponential based functions.
++ |
< GLM_GTX_fast_square_root extension: Fast but less accurate implementations of square root based functions. +More...
++Functions | |
template<typename genType > | |
genType::value_type | fastDistance (genType const &x, genType const &y) |
template<typename genType > | |
genType | fastInverseSqrt (genType const &x) |
template<typename genType > | |
genType::value_type | fastLength (genType const &x) |
template<typename genType > | |
genType | fastNormalize (genType const &x) |
template<typename genType > | |
genType | fastSqrt (genType const &x) |
< GLM_GTX_fast_square_root extension: Fast but less accurate implementations of square root based functions.
++ |
< GLM_GTX_fast_trigonometry extension: Fast but less accurate implementations of trigonometric functions. +More...
++Functions | |
template<typename T > | |
T | fastAcos (const T &angle) |
template<typename T > | |
T | fastAsin (const T &angle) |
template<typename T > | |
T | fastAtan (const T &angle) |
template<typename T > | |
T | fastAtan (const T &y, const T &x) |
template<typename T > | |
T | fastCos (const T &angle) |
template<typename T > | |
T | fastSin (const T &angle) |
template<typename T > | |
T | fastTan (const T &angle) |
< GLM_GTX_fast_trigonometry extension: Fast but less accurate implementations of trigonometric functions.
++ |
< GLM_GTX_gradient_paint extension: Compute a radient gradient according section OpenVG 1.1 specifications, 9.3.2 Radial Gradients +More...
+< GLM_GTX_gradient_paint extension: Compute a radient gradient according section OpenVG 1.1 specifications, 9.3.2 Radial Gradients
++ |
< GLM_GTX_handed_coordinate_space extension: To know if a set of three basis vectors defines a right or left-handed coordinate system. +More...
++Functions | |
template<typename T > | |
bool | leftHanded (detail::tvec3< T > const &tangent, detail::tvec3< T > const &binormal, detail::tvec3< T > const &normal) |
template<typename T > | |
bool | rightHanded (detail::tvec3< T > const &tangent, detail::tvec3< T > const &binormal, detail::tvec3< T > const &normal) |
< GLM_GTX_handed_coordinate_space extension: To know if a set of three basis vectors defines a right or left-handed coordinate system.
++ |
< GLM_GTX_inertia extension: Create inertia matrices +More...
++Functions | |
template<typename T > | |
detail::tmat3x3< T > | ballInertia3 (const T Mass, const T Radius) |
template<typename T > | |
detail::tmat4x4< T > | ballInertia4 (const T Mass, const T Radius) |
template<typename T > | |
detail::tmat3x3< T > | boxInertia3 (const T Mass, const detail::tvec3< T > &Scale) |
template<typename T > | |
detail::tmat4x4< T > | boxInertia4 (const T Mass, const detail::tvec3< T > &Scale) |
template<typename T > | |
detail::tmat3x3< T > | diskInertia3 (const T Mass, const T Radius) |
template<typename T > | |
detail::tmat4x4< T > | diskInertia4 (const T Mass, const T Radius) |
template<typename T > | |
detail::tmat3x3< T > | sphereInertia3 (const T Mass, const T Radius) |
template<typename T > | |
detail::tmat4x4< T > | sphereInertia4 (const T Mass, const T Radius) |
< GLM_GTX_inertia extension: Create inertia matrices
++ |
< GLM_GTX_int_10_10_10_2 extension: Add support for integer for core functions +More...
++Functions | |
dword | uint10_10_10_2_cast (glm::vec4 const &v) |
< GLM_GTX_int_10_10_10_2 extension: Add support for integer for core functions
++ |
< GLM_GTX_integer extension: Add support for integer for core functions +More...
++Functions | |
template<typename genType > | |
genType | factorial (genType const &x) |
int | mod (int x, int y) |
int | pow (int x, int y) |
int | sqrt (int x) |
< GLM_GTX_integer extension: Add support for integer for core functions
++ |
< GLM_GTX_intersect extension: Add intersection functions +More...
++Functions | |
template<typename genType > | |
bool | intersectLineSphere (genType const &point0, genType const &point1, genType const ¢er, typename genType::value_type radius, genType &position, genType &normal) |
template<typename genType > | |
bool | intersectLineTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &position) |
template<typename genType > | |
bool | intersectRaySphere (genType const &orig, genType const &dir, genType const ¢er, typename genType::value_type radius, genType &position, genType &normal) |
template<typename genType > | |
bool | intersectRayTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &baryPosition) |
< GLM_GTX_intersect extension: Add intersection functions
++ |
< GLM_GTX_log_base extension: Logarithm for any base. base can be a vector or a scalar. +More...
++Functions | |
template<typename genType > | |
genType | log (genType const &x, genType const &base) |
< GLM_GTX_log_base extension: Logarithm for any base. base can be a vector or a scalar.
++ |
< GLM_GTX_matrix_cross_product: Build cross product matrices +More...
++Functions | |
template<typename T > | |
detail::tmat3x3< T > | matrixCross3 (detail::tvec3< T > const &x) |
template<typename T > | |
detail::tmat4x4< T > | matrixCross4 (detail::tvec3< T > const &x) |
< GLM_GTX_matrix_cross_product: Build cross product matrices
++ |
< GLM_GTX_matrix_interpolation extension: Add transformation matrices +More...
++Functions | |
template<typename T > | |
void | axisAngle (detail::tmat4x4< T > const &mat, detail::tvec3< T > &axis, T &angle) |
template<typename T > | |
detail::tmat4x4< T > | axisAngleMatrix (detail::tvec3< T > const &axis, T const angle) |
template<typename T > | |
detail::tmat4x4< T > | interpolate (detail::tmat4x4< T > const &m1, detail::tmat4x4< T > const &m2, T const delta) |
< GLM_GTX_matrix_interpolation extension: Add transformation matrices
++ |
< GLM_GTX_matrix_major_storage: Build matrices with specific matrix order, row or column +More...
++Functions | |
template<typename T > | |
detail::tmat2x2< T > | colMajor2 (const detail::tvec2< T > &v1, const detail::tvec2< T > &v2) |
template<typename T > | |
detail::tmat2x2< T > | colMajor2 (const detail::tmat2x2< T > &m) |
template<typename T > | |
detail::tmat3x3< T > | colMajor3 (const detail::tvec3< T > &v1, const detail::tvec3< T > &v2, const detail::tvec3< T > &v3) |
template<typename T > | |
detail::tmat3x3< T > | colMajor3 (const detail::tmat3x3< T > &m) |
template<typename T > | |
detail::tmat4x4< T > | colMajor4 (const detail::tvec4< T > &v1, const detail::tvec4< T > &v2, const detail::tvec4< T > &v3, const detail::tvec4< T > &v4) |
template<typename T > | |
detail::tmat4x4< T > | colMajor4 (const detail::tmat4x4< T > &m) |
template<typename T > | |
detail::tmat2x2< T > | rowMajor2 (const detail::tmat2x2< T > &m) |
template<typename T > | |
detail::tmat2x2< T > | rowMajor2 (const detail::tvec2< T > &v1, const detail::tvec2< T > &v2) |
template<typename T > | |
detail::tmat3x3< T > | rowMajor3 (const detail::tvec3< T > &v1, const detail::tvec3< T > &v2, const detail::tvec3< T > &v3) |
template<typename T > | |
detail::tmat3x3< T > | rowMajor3 (const detail::tmat3x3< T > &m) |
template<typename T > | |
detail::tmat4x4< T > | rowMajor4 (const detail::tmat4x4< T > &m) |
template<typename T > | |
detail::tmat4x4< T > | rowMajor4 (const detail::tvec4< T > &v1, const detail::tvec4< T > &v2, const detail::tvec4< T > &v3, const detail::tvec4< T > &v4) |
< GLM_GTX_matrix_major_storage: Build matrices with specific matrix order, row or column
++ |
< GLM_GTX_matrix_operation: Build diagonal matrices +More...
++Functions | |
template<typename valType > | |
detail::tmat2x2< valType > | diagonal2x2 (detail::tvec2< valType > const &v) |
template<typename valType > | |
detail::tmat2x3< valType > | diagonal2x3 (detail::tvec2< valType > const &v) |
template<typename valType > | |
detail::tmat2x4< valType > | diagonal2x4 (detail::tvec2< valType > const &v) |
template<typename valType > | |
detail::tmat3x2< valType > | diagonal3x2 (detail::tvec2< valType > const &v) |
template<typename valType > | |
detail::tmat3x3< valType > | diagonal3x3 (detail::tvec3< valType > const &v) |
template<typename valType > | |
detail::tmat3x4< valType > | diagonal3x4 (detail::tvec3< valType > const &v) |
template<typename valType > | |
detail::tmat4x2< valType > | diagonal4x2 (detail::tvec2< valType > const &v) |
template<typename valType > | |
detail::tmat4x3< valType > | diagonal4x3 (detail::tvec3< valType > const &v) |
template<typename valType > | |
detail::tmat4x4< valType > | diagonal4x4 (detail::tvec4< valType > const &v) |
< GLM_GTX_matrix_operation: Build diagonal matrices
++ |
< GLM_GTX_matrix_query: Query to evaluate matrix properties +More...
++Functions | |
template<typename genType > | |
bool | isIdentity (const genType &m, const typename genType::value_type epsilon=std::numeric_limits< typename genType::value_type >::epsilon()) |
template<typename T > | |
bool | isNormalized (const detail::tmat2x2< T > &m, const T epsilon=std::numeric_limits< T >::epsilon()) |
template<typename T > | |
bool | isNormalized (const detail::tmat4x4< T > &m, const T epsilon=std::numeric_limits< T >::epsilon()) |
template<typename T > | |
bool | isNormalized (const detail::tmat3x3< T > &m, const T epsilon=std::numeric_limits< T >::epsilon()) |
template<typename T > | |
bool | isNull (const detail::tmat2x2< T > &m, const T epsilon=std::numeric_limits< T >::epsilon()) |
template<typename T > | |
bool | isNull (const detail::tmat3x3< T > &m, const T epsilon=std::numeric_limits< T >::epsilon()) |
template<typename T > | |
bool | isNull (const detail::tmat4x4< T > &m, const T epsilon=std::numeric_limits< T >::epsilon()) |
template<typename genType > | |
bool | isOrthogonal (const genType &m, const typename genType::value_type epsilon=std::numeric_limits< typename genType::value_type >::epsilon()) |
< GLM_GTX_matrix_query: Query to evaluate matrix properties
++ |
< GLM_GTX_mixed_product extension: Mixed product of 3 vectors. +More...
++Functions | |
+template<typename valType > | |
valType | mixedProduct (detail::tvec3< valType > const &v1, detail::tvec3< valType > const &v2, detail::tvec3< valType > const &v3) |
< GLM_GTX_mixed_product extension: Mixed product of 3 vectors.
++ |
< GLM_GTX_multiple: Find the closest number of a number multiple of other number. +More...
++Functions | |
template<typename genType > | |
genType | higherMultiple (genType const &Source, genType const &Multiple) |
template<typename genType > | |
genType | lowerMultiple (genType const &Source, genType const &Multiple) |
< GLM_GTX_multiple: Find the closest number of a number multiple of other number.
++ |
< GLM_GTX_noise extension: Comparison functions for a user defined epsilon values. +More...
++Functions | |
template<typename T , template< typename > class vecType> | |
T | perlin (vecType< T > const &p) |
template<typename T , template< typename > class vecType> | |
T | perlin (vecType< T > const &p, vecType< T > const &rep) |
template<typename T , template< typename > class vecType> | |
T | simplex (vecType< T > const &p) |
< GLM_GTX_noise extension: Comparison functions for a user defined epsilon values.
++ |
< GLM_GTX_norm extension: Various way to compute vector norms. +More...
++Functions | |
template<typename T > | |
T | distance2 (const T p0, const T p1) |
template<typename T > | |
T | distance2 (const detail::tvec3< T > &p0, const detail::tvec3< T > &p1) |
template<typename T > | |
T | distance2 (const detail::tvec4< T > &p0, const detail::tvec4< T > &p1) |
template<typename T > | |
T | distance2 (const detail::tvec2< T > &p0, const detail::tvec2< T > &p1) |
template<typename T > | |
T | l1Norm (const detail::tvec3< T > &x, const detail::tvec3< T > &y) |
template<typename T > | |
T | l1Norm (const detail::tvec3< T > &v) |
template<typename T > | |
T | l2Norm (const detail::tvec3< T > &x) |
template<typename T > | |
T | l2Norm (const detail::tvec3< T > &x, const detail::tvec3< T > &y) |
template<typename T > | |
T | length2 (const detail::tvec4< T > &x) |
template<typename T > | |
T | length2 (const T x) |
template<typename T > | |
T | length2 (const detail::tvec2< T > &x) |
template<typename T > | |
T | length2 (const detail::tvec3< T > &x) |
template<typename T > | |
T | length2 (const detail::tquat< T > &q) |
template<typename T > | |
T | lxNorm (const detail::tvec3< T > &x, unsigned int Depth) |
template<typename T > | |
T | lxNorm (const detail::tvec3< T > &x, const detail::tvec3< T > &y, unsigned int Depth) |
< GLM_GTX_norm extension: Various way to compute vector norms.
++ |
< GLM_GTX_normal extension: Compute the normal of a triangle. +More...
++Functions | |
template<typename T > | |
detail::tvec3< T > | triangleNormal (detail::tvec3< T > const &p1, detail::tvec3< T > const &p2, detail::tvec3< T > const &p3) |
< GLM_GTX_normal extension: Compute the normal of a triangle.
++ |
< GLM_GTX_normalize_dot extension: Dot product of vectors that need to be normalize with a single square root. +More...
++Functions | |
template<typename genType > | |
genType::value_type | fastNormalizeDot (genType const &x, genType const &y) |
template<typename genType > | |
genType::value_type | normalizeDot (genType const &x, genType const &y) |
< GLM_GTX_normalize_dot extension: Dot product of vectors that need to be normalize with a single square root.
++ |
< GLM_GTX_number_precision extension: Defined size types. +More...
++Typedefs | |
+typedef f16 | f16mat1 |
+typedef f16 | f16mat1x1 |
+typedef f16 | f16vec1 |
+typedef f32 | f32mat1 |
+typedef f32 | f32mat1x1 |
+typedef f32 | f32vec1 |
+typedef f64 | f64mat1 |
+typedef f64 | f64mat1x1 |
+typedef f64 | f64vec1 |
+typedef u16 | u16vec1 |
+typedef u32 | u32vec1 |
+typedef u64 | u64vec1 |
+typedef u8 | u8vec1 |
< GLM_GTX_number_precision extension: Defined size types.
++ |
< GLM_GTX_ocl_type extension: OpenCL types. +More...
++Typedefs | |
+typedef detail::int8 | cl_char |
+typedef detail::int8 | cl_char1 |
+typedef detail::tvec2 +< detail::int8 > | cl_char2 |
+typedef detail::tvec3 +< detail::int8 > | cl_char3 |
+typedef detail::tvec4 +< detail::int8 > | cl_char4 |
+typedef detail::float32 | cl_float |
+typedef detail::float32 | cl_float1 |
+typedef detail::tvec2 +< detail::float32 > | cl_float2 |
+typedef detail::tvec3 +< detail::float32 > | cl_float3 |
+typedef detail::tvec4 +< detail::float32 > | cl_float4 |
+typedef detail::float16 | cl_half |
+typedef detail::int32 | cl_int |
+typedef detail::int32 | cl_int1 |
+typedef detail::tvec2 +< detail::int32 > | cl_int2 |
+typedef detail::tvec3 +< detail::int32 > | cl_int3 |
+typedef detail::tvec4 +< detail::int32 > | cl_int4 |
+typedef detail::int64 | cl_long |
+typedef detail::int64 | cl_long1 |
+typedef detail::tvec2 +< detail::int64 > | cl_long2 |
+typedef detail::tvec3 +< detail::int64 > | cl_long3 |
+typedef detail::tvec4 +< detail::int64 > | cl_long4 |
+typedef detail::int16 | cl_short |
+typedef detail::int16 | cl_short1 |
+typedef detail::tvec2 +< detail::int16 > | cl_short2 |
+typedef detail::tvec3 +< detail::int16 > | cl_short3 |
+typedef detail::tvec4 +< detail::int16 > | cl_short4 |
+typedef detail::uint8 | cl_uchar |
+typedef detail::uint8 | cl_uchar1 |
+typedef detail::tvec2 +< detail::uint8 > | cl_uchar2 |
+typedef detail::tvec3 +< detail::uint8 > | cl_uchar3 |
+typedef detail::tvec4 +< detail::uint8 > | cl_uchar4 |
+typedef detail::uint32 | cl_uint |
+typedef detail::uint32 | cl_uint1 |
+typedef detail::tvec2 +< detail::uint32 > | cl_uint2 |
+typedef detail::tvec3 +< detail::uint32 > | cl_uint3 |
+typedef detail::tvec4 +< detail::uint32 > | cl_uint4 |
+typedef detail::uint64 | cl_ulong |
+typedef detail::uint64 | cl_ulong1 |
+typedef detail::tvec2 +< detail::uint64 > | cl_ulong2 |
+typedef detail::tvec3 +< detail::uint64 > | cl_ulong3 |
+typedef detail::tvec4 +< detail::uint64 > | cl_ulong4 |
+typedef detail::uint16 | cl_ushort |
+typedef detail::uint16 | cl_ushort1 |
+typedef detail::tvec2 +< detail::uint16 > | cl_ushort2 |
+typedef detail::tvec3 +< detail::uint16 > | cl_ushort3 |
+typedef detail::tvec4 +< detail::uint16 > | cl_ushort4 |
< GLM_GTX_ocl_type extension: OpenCL types.
++ |
< GLM_GTX_optimum_pow extension: Integer exponentiation of power functions. +More...
++Functions | |
template<typename genType > | |
genType | pow2 (const genType &x) |
template<typename genType > | |
genType | pow3 (const genType &x) |
template<typename genType > | |
genType | pow4 (const genType &x) |
detail::tvec2< bool > | powOfTwo (const detail::tvec2< int > &x) |
bool | powOfTwo (int num) |
detail::tvec3< bool > | powOfTwo (const detail::tvec3< int > &x) |
detail::tvec4< bool > | powOfTwo (const detail::tvec4< int > &x) |
< GLM_GTX_optimum_pow extension: Integer exponentiation of power functions.
++ |
< GLM_GTX_orthonormalize extension: Orthonormalize matrices. +More...
++Functions | |
template<typename T > | |
detail::tmat3x3< T > | orthonormalize (const detail::tmat3x3< T > &m) |
template<typename T > | |
detail::tvec3< T > | orthonormalize (const detail::tvec3< T > &x, const detail::tvec3< T > &y) |
< GLM_GTX_orthonormalize extension: Orthonormalize matrices.
++ |
< GLM_GTX_perpendicular extension: Perpendicular of a vector from other one +More...
++Functions | |
template<typename T > | |
detail::tvec2< T > | perp (detail::tvec2< T > const &x, detail::tvec2< T > const &Normal) |
template<typename T > | |
detail::tvec4< T > | perp (detail::tvec4< T > const &x, detail::tvec4< T > const &Normal) |
template<typename T > | |
detail::tvec3< T > | perp (detail::tvec3< T > const &x, detail::tvec3< T > const &Normal) |
< GLM_GTX_perpendicular extension: Perpendicular of a vector from other one
++ |
< GLM_GTX_polar_coordinates extension: Conversion from Euclidean space to polar space and revert. +More...
++Functions | |
template<typename T > | |
detail::tvec3< T > | euclidean (const detail::tvec3< T > &polar) |
template<typename T > | |
detail::tvec3< T > | polar (const detail::tvec3< T > &euclidean) |
< GLM_GTX_polar_coordinates extension: Conversion from Euclidean space to polar space and revert.
++ |
< GLM_GTX_projection extension: Projection of a vector to other one +More...
++Functions | |
template<typename T > | |
detail::tvec2< T > | proj (detail::tvec2< T > const &x, detail::tvec2< T > const &Normal) |
template<typename T > | |
detail::tvec4< T > | proj (detail::tvec4< T > const &x, detail::tvec4< T > const &Normal) |
template<typename T > | |
detail::tvec3< T > | proj (detail::tvec3< T > const &x, detail::tvec3< T > const &Normal) |
< GLM_GTX_projection extension: Projection of a vector to other one
++ |
< GLM_GTX_quaternion extension: Quaternion types and functions +More...
++Functions | |
template<typename valType > | |
valType | angle (detail::tquat< valType > const &x) |
template<typename valType > | |
detail::tquat< valType > | angleAxis (valType const &angle, valType const &x, valType const &y, valType const &z) |
template<typename valType > | |
detail::tquat< valType > | angleAxis (valType const &angle, detail::tvec3< valType > const &axis) |
template<typename valType > | |
detail::tvec3< valType > | axis (detail::tquat< valType > const &x) |
template<typename valType > | |
detail::tvec3< valType > | cross (detail::tquat< valType > const &q, detail::tvec3< valType > const &v) |
template<typename valType > | |
detail::tvec3< valType > | cross (detail::tvec3< valType > const &v, detail::tquat< valType > const &q) |
template<typename valType > | |
detail::tvec3< valType > | eulerAngles (detail::tquat< valType > const &x) |
template<typename valType > | |
detail::tquat< valType > | exp (detail::tquat< valType > const &q, valType const &exponent) |
template<typename valType > | |
valType | extractRealComponent (detail::tquat< valType > const &q) |
template<typename T > | |
detail::tquat< T > | fastMix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a) |
template<typename valType > | |
detail::tquat< valType > | intermediate (detail::tquat< valType > const &prev, detail::tquat< valType > const &curr, detail::tquat< valType > const &next) |
template<typename valType > | |
detail::tquat< valType > | log (detail::tquat< valType > const &q) |
template<typename valType > | |
valType | pitch (detail::tquat< valType > const &x) |
template<typename valType > | |
detail::tquat< valType > | pow (detail::tquat< valType > const &x, valType const &y) |
template<typename valType > | |
valType | roll (detail::tquat< valType > const &x) |
template<typename valType > | |
detail::tvec3< valType > | rotate (detail::tquat< valType > const &q, detail::tvec3< valType > const &v) |
template<typename valType > | |
detail::tvec4< valType > | rotate (detail::tquat< valType > const &q, detail::tvec4< valType > const &v) |
template<typename T > | |
detail::tquat< T > | shortMix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a) |
template<typename valType > | |
detail::tquat< valType > | squad (detail::tquat< valType > const &q1, detail::tquat< valType > const &q2, detail::tquat< valType > const &s1, detail::tquat< valType > const &s2, valType const &h) |
template<typename valType > | |
detail::tmat3x3< valType > | toMat3 (detail::tquat< valType > const &x) |
template<typename valType > | |
detail::tmat4x4< valType > | toMat4 (detail::tquat< valType > const &x) |
template<typename valType > | |
detail::tquat< valType > | toQuat (detail::tmat4x4< valType > const &x) |
template<typename valType > | |
detail::tquat< valType > | toQuat (detail::tmat3x3< valType > const &x) |
template<typename valType > | |
valType | yaw (detail::tquat< valType > const &x) |
< GLM_GTX_quaternion extension: Quaternion types and functions
++ |
< GLM_GTX_random extension: Generate random number from various distribution methods +More...
++Functions | |
+template<typename T > | |
T | compRand1 () |
+template<> | |
float | compRand1 () |
+template<typename T > | |
T | compRand1 (T Min, T Max) |
+template<typename T > | |
detail::tvec2< T > | compRand2 (const detail::tvec2< T > &Min, const detail::tvec2< T > &Max) |
+template<typename T > | |
detail::tvec2< T > | compRand2 (T Min, T Max) |
+template<typename T > | |
detail::tvec3< T > | compRand3 (const detail::tvec3< T > &Min, const detail::tvec3< T > &Max) |
+template<typename T > | |
detail::tvec3< T > | compRand3 (T Min, T Max) |
+template<typename T > | |
detail::tvec3< T > | compRand4 (const detail::tvec4< T > &Min, const detail::tvec4< T > &Max) |
+template<typename T > | |
detail::tvec4< T > | compRand4 (T Min, T Max) |
+template<typename T > | |
T | gaussRand1 (T mean, T std_deviation) |
+template<typename T > | |
detail::tvec2< T > | gaussRand2 (T mean, const detail::tvec2< T > &std_deviation) |
+template<typename T > | |
detail::tvec2< T > | gaussRand2 (const detail::tvec2< T > &mean, const detail::tvec2< T > &std_deviation) |
+template<typename T > | |
detail::tvec2< T > | gaussRand2 (T mean, T std_deviation) |
+template<typename T > | |
detail::tvec2< T > | gaussRand2 (const detail::tvec2< T > &mean, T std_deviation) |
+template<typename T > | |
detail::tvec3< T > | gaussRand3 (T mean, const detail::tvec3< T > &std_deviation) |
+template<typename T > | |
detail::tvec3< T > | gaussRand3 (const detail::tvec3< T > &mean, const detail::tvec3< T > &std_deviation) |
+template<typename T > | |
detail::tvec3< T > | gaussRand3 (T mean, T std_deviation) |
+template<typename T > | |
detail::tvec3< T > | gaussRand3 (const detail::tvec3< T > &mean, T std_deviation) |
+template<typename T > | |
detail::tvec4< T > | gaussRand4 (const detail::tvec4< T > &mean, T std_deviation) |
+template<typename T > | |
detail::tvec4< T > | gaussRand4 (const detail::tvec4< T > &mean, const detail::tvec4< T > &std_deviation) |
+template<typename T > | |
detail::tvec4< T > | gaussRand4 (T mean, const detail::tvec4< T > &std_deviation) |
+template<typename T > | |
detail::tvec4< T > | gaussRand4 (T mean, T std_deviation) |
+template<typename T > | |
detail::tvec2< T > | normalizedRand2 () |
+template<typename T > | |
detail::tvec2< T > | normalizedRand2 (T Min, T Max) |
+template<typename T > | |
detail::tvec3< T > | normalizedRand3 (T Min, T Max) |
+template<typename T > | |
detail::tvec3< T > | normalizedRand3 () |
template<typename T > | |
T | signedRand1 () |
+template<> | |
float | signedRand1 () |
+template<typename T > | |
detail::tvec2< T > | signedRand2 () |
+template<typename T > | |
detail::tvec3< T > | signedRand3 () |
+template<typename T > | |
detail::tvec4< T > | signedRand4 () |
+template<typename T > | |
detail::tvec2< T > | vecRand2 () |
+template<typename T > | |
detail::tvec2< T > | vecRand2 (T MinRadius, T MaxRadius) |
+template<typename T > | |
detail::tvec3< T > | vecRand3 (T MinRadius, T MaxRadius) |
+template<typename T > | |
detail::tvec3< T > | vecRand3 () |
+template<typename T > | |
detail::tvec4< T > | vecRand4 () |
+template<typename T > | |
detail::tvec4< T > | vecRand4 (T MinRadius, T MaxRadius) |
< GLM_GTX_random extension: Generate random number from various distribution methods
++ |
< GLM_GTX_raw_data extension: Projection of a vector to other one +More...
++Typedefs | |
typedef uint8 | byte |
typedef uint32 | dword |
typedef uint64 | qword |
typedef uint16 | word |
< GLM_GTX_raw_data extension: Projection of a vector to other one
++ |
< GLM_GTX_reciprocal extension: Define secant, cosecant and cotangent functions. +More...
++Functions | |
template<typename genType > | |
genType | acot (genType const &x) |
template<typename genType > | |
genType | acoth (genType const &x) |
template<typename genType > | |
genType | acsc (genType const &x) |
template<typename genType > | |
genType | acsch (genType const &x) |
template<typename genType > | |
genType | asec (genType const &x) |
template<typename genType > | |
genType | asech (genType const &x) |
template<typename genType > | |
genType | cot (genType const &angle) |
template<typename genType > | |
genType | coth (genType const &angle) |
template<typename genType > | |
genType | csc (genType const &angle) |
template<typename genType > | |
genType | csch (genType const &angle) |
template<typename genType > | |
genType | sec (genType const &angle) |
template<typename genType > | |
genType | sech (genType const &angle) |
< GLM_GTX_reciprocal extension: Define secant, cosecant and cotangent functions.
++ |
< GLM_GTX_rotate_vector extension: Function to directly rotate a vector +More...
++Functions | |
template<typename T > | |
detail::tmat4x4< T > | orientation (detail::tvec3< T > const &Normal, detail::tvec3< T > const &Up) |
template<typename T > | |
detail::tvec2< T > | rotate (detail::tvec2< T > const &v, T const &angle) |
template<typename T > | |
detail::tvec3< T > | rotate (detail::tvec3< T > const &v, T const &angle, detail::tvec3< T > const &normal) |
template<typename T > | |
detail::tvec4< T > | rotate (detail::tvec4< T > const &v, T const &angle, detail::tvec3< T > const &normal) |
template<typename T > | |
detail::tvec3< T > | rotateX (detail::tvec3< T > const &v, T const &angle) |
template<typename T > | |
detail::tvec4< T > | rotateX (detail::tvec4< T > const &v, T const &angle) |
template<typename T > | |
detail::tvec3< T > | rotateY (detail::tvec3< T > const &v, T const &angle) |
template<typename T > | |
detail::tvec4< T > | rotateY (detail::tvec4< T > const &v, T const &angle) |
template<typename T > | |
detail::tvec3< T > | rotateZ (detail::tvec3< T > const &v, T const &angle) |
template<typename T > | |
detail::tvec4< T > | rotateZ (detail::tvec4< T > const &v, T const &angle) |
< GLM_GTX_rotate_vector extension: Function to directly rotate a vector
++ |
< GLM_GTX_simd_mat4 extension: SIMD implementation of mat4 type. +More...
++Functions | |
float | determinant (detail::fmat4x4SIMD const &m) |
detail::fmat4x4SIMD | inverse (detail::fmat4x4SIMD const &m) |
detail::tmat4x4< float > | mat4_cast (detail::fmat4x4SIMD const &x) |
detail::fmat4x4SIMD | matrixCompMult (detail::fmat4x4SIMD const &x, detail::fmat4x4SIMD const &y) |
detail::fmat4x4SIMD | outerProduct (detail::fvec4SIMD const &c, detail::fvec4SIMD const &r) |
detail::fmat4x4SIMD | transpose (detail::fmat4x4SIMD const &x) |
< GLM_GTX_simd_mat4 extension: SIMD implementation of mat4 type.
++ |
< GLM_GTX_simd_vec4 extension: SIMD implementation of vec4 type. +More...
++Functions | |
detail::fvec4SIMD | abs (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | ceil (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | clamp (detail::fvec4SIMD const &x, detail::fvec4SIMD const &minVal, detail::fvec4SIMD const &maxVal) |
detail::fvec4SIMD | cross (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y) |
float | distance (detail::fvec4SIMD const &p0, detail::fvec4SIMD const &p1) |
detail::fvec4SIMD | distance4 (detail::fvec4SIMD const &p0, detail::fvec4SIMD const &p1) |
detail::fvec4SIMD | dot4 (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y) |
detail::fvec4SIMD | fastInversesqrt (detail::fvec4SIMD const &x) |
float | fastLength (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | fastLength4 (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | fastNormalize (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | fastSqrt (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | floor (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | fma (detail::fvec4SIMD const &a, detail::fvec4SIMD const &b, detail::fvec4SIMD const &c) |
detail::fvec4SIMD | fract (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | inversesqrt (detail::fvec4SIMD const &x) |
float | length (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | length4 (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | max (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y) |
detail::fvec4SIMD | min (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y) |
detail::fvec4SIMD | mix (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y, detail::fvec4SIMD const &a) |
detail::fvec4SIMD | mod (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y) |
detail::fvec4SIMD | mod (detail::fvec4SIMD const &x, float const &y) |
float | niceLength (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | niceLength4 (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | niceSqrt (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | normalize (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | reflect (detail::fvec4SIMD const &I, detail::fvec4SIMD const &N) |
detail::fvec4SIMD | refract (detail::fvec4SIMD const &I, detail::fvec4SIMD const &N, float const &eta) |
detail::fvec4SIMD | round (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | sign (detail::fvec4SIMD const &x) |
float | simdDot (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y) |
detail::fvec4SIMD | simdFaceforward (detail::fvec4SIMD const &N, detail::fvec4SIMD const &I, detail::fvec4SIMD const &Nref) |
detail::fvec4SIMD | smoothstep (detail::fvec4SIMD const &edge0, detail::fvec4SIMD const &edge1, detail::fvec4SIMD const &x) |
detail::fvec4SIMD | sqrt (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | step (detail::fvec4SIMD const &edge, detail::fvec4SIMD const &x) |
detail::fvec4SIMD | trunc (detail::fvec4SIMD const &x) |
detail::tvec4< float > | vec4_cast (detail::fvec4SIMD const &x) |
< GLM_GTX_simd_vec4 extension: SIMD implementation of vec4 type.
++ |
< GLM_GTX_simplex extension: Spline functions +More...
++Functions | |
template<typename genType > | |
genType | catmullRom (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s) |
template<typename genType > | |
genType | cubic (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s) |
template<typename genType > | |
genType | hermite (genType const &v1, genType const &t1, genType const &v2, genType const &t2, typename genType::value_type const &s) |
< GLM_GTX_simplex extension: Spline functions
+< GLM_GTX_spline extension: Spline functions
++ |
< GLM_GTX_std_based_type extension: Add support vector types based on C++ standard type +More...
+< GLM_GTX_std_based_type extension: Add support vector types based on C++ standard type
++ |
< GLM_GTX_string_cast extension: Setup strings for GLM type values +More...
++Functions | |
template<typename genType > | |
std::string | to_string (genType const &x) |
< GLM_GTX_string_cast extension: Setup strings for GLM type values
++ |
< GLM_GTX_transform extension: Add transformation matrices +More...
++Functions | |
template<typename T > | |
detail::tmat4x4< T > | rotate (T angle, T x, T y, T z) |
template<typename T > | |
detail::tmat4x4< T > | rotate (T angle, detail::tvec3< T > const &v) |
template<typename T > | |
detail::tmat4x4< T > | rotate (detail::tmat4x4< T > const &m, T angle, T x, T y, T z) |
template<typename T > | |
detail::tmat4x4< T > | scale (detail::tvec3< T > const &v) |
template<typename T > | |
detail::tmat4x4< T > | scale (detail::tmat4x4< T > const &m, T x, T y, T z) |
template<typename T > | |
detail::tmat4x4< T > | scale (T x, T y, T z) |
template<typename T > | |
detail::tmat4x4< T > | translate (detail::tmat4x4< T > const &m, T x, T y, T z) |
template<typename T > | |
detail::tmat4x4< T > | translate (T x, T y, T z) |
template<typename T > | |
detail::tmat4x4< T > | translate (detail::tvec3< T > const &v) |
< GLM_GTX_transform extension: Add transformation matrices
++ |
< GLM_GTX_transform2 extension: Add extra transformation matrices +More...
++Functions | |
template<typename T > | |
detail::tmat3x3< T > | proj2D (const detail::tmat3x3< T > &m, const detail::tvec3< T > &normal) |
template<typename T > | |
detail::tmat4x4< T > | proj3D (const detail::tmat4x4< T > &m, const detail::tvec3< T > &normal) |
template<typename valType > | |
detail::tmat4x4< valType > | scaleBias (valType scale, valType bias) |
template<typename valType > | |
detail::tmat4x4< valType > | scaleBias (detail::tmat4x4< valType > const &m, valType scale, valType bias) |
template<typename T > | |
detail::tmat3x3< T > | shearX2D (detail::tmat3x3< T > const &m, T y) |
template<typename T > | |
detail::tmat4x4< T > | shearX3D (const detail::tmat4x4< T > &m, T y, T z) |
template<typename T > | |
detail::tmat3x3< T > | shearY2D (detail::tmat3x3< T > const &m, T x) |
template<typename T > | |
detail::tmat4x4< T > | shearY3D (const detail::tmat4x4< T > &m, T x, T z) |
template<typename T > | |
detail::tmat4x4< T > | shearZ3D (const detail::tmat4x4< T > &m, T x, T y) |
< GLM_GTX_transform2 extension: Add extra transformation matrices
++ |
< GLM_GTX_ulp extension: Precision calculation functions +More...
++Functions | |
template<typename T > | |
uint | float_distance (T const &x, T const &y) |
template<typename T , template< typename > class vecType> | |
vecType< uint > | float_distance (vecType< T > const &x, vecType< T > const &y) |
template<typename genType > | |
genType | next_float (genType const &x) |
template<typename genType > | |
genType | next_float (genType const &x, uint const &Distance) |
template<typename genType > | |
genType | prev_float (genType const &x, uint const &Distance) |
template<typename genType > | |
genType | prev_float (genType const &x) |
< GLM_GTX_ulp extension: Precision calculation functions
++ |
< GLM_GTX_unsigned_int extension: Add support for unsigned integer for core functions +More...
++Typedefs | |
typedef signed int | sint |
+Functions | |
uint | mod (uint x, uint y) |
uint | pow (uint x, uint y) |
uint | sqrt (uint x) |
< GLM_GTX_unsigned_int extension: Add support for unsigned integer for core functions
++ |
< GLM_GTX_vec1 extension: 1 component vector. +More...
++Typedefs | |
typedef detail::highp_ivec1_t | highp_ivec1 |
typedef detail::highp_uvec1_t | highp_uvec1 |
typedef detail::highp_vec1_t | highp_vec1 |
typedef detail::lowp_ivec1_t | lowp_ivec1 |
typedef detail::lowp_uvec1_t | lowp_uvec1 |
typedef detail::lowp_vec1_t | lowp_vec1 |
typedef detail::mediump_ivec1_t | mediump_ivec1 |
typedef detail::mediump_uvec1_t | mediump_uvec1 |
typedef detail::mediump_vec1_t | mediump_vec1 |
< GLM_GTX_vec1 extension: 1 component vector.
+typedef detail::highp_ivec1_t highp_ivec1 | +
typedef detail::highp_uvec1_t highp_uvec1 | +
typedef detail::highp_vec1_t highp_vec1 | +
typedef detail::lowp_ivec1_t lowp_ivec1 | +
typedef detail::lowp_uvec1_t lowp_uvec1 | +
typedef detail::lowp_vec1_t lowp_vec1 | +
typedef detail::mediump_ivec1_t mediump_ivec1 | +
typedef detail::mediump_uvec1_t mediump_uvec1 | +
typedef detail::mediump_vec1_t mediump_vec1 | +
+ |
< GLM_GTX_vector_access extension: Function to set values to vectors +More...
++Functions | |
template<typename valType > | |
void | set (detail::tvec2< valType > &v, valType const &x, valType const &y) |
template<typename valType > | |
void | set (detail::tvec4< valType > &v, valType const &x, valType const &y, valType const &z, valType const &w) |
template<typename valType > | |
void | set (detail::tvec3< valType > &v, valType const &x, valType const &y, valType const &z) |
< GLM_GTX_vector_access extension: Function to set values to vectors
++ |
< GLM_GTX_vector_angle extension: Compute angle between vectors +More...
++Functions | |
template<typename vecType > | |
GLM_FUNC_QUALIFIER +vecType::value_type | angle (vecType const &x, vecType const &y) |
template<typename T > | |
GLM_FUNC_QUALIFIER T | orientedAngle (detail::tvec3< T > const &x, detail::tvec3< T > const &y, detail::tvec3< T > const &ref) |
template<typename T > | |
GLM_FUNC_QUALIFIER T | orientedAngle (detail::tvec2< T > const &x, detail::tvec2< T > const &y) |
< GLM_GTX_vector_angle extension: Compute angle between vectors
++ |
< GLM_GTX_vector_query extension: Query informations of vector types +More...
++Functions | |
template<typename genType > | |
bool | areCollinear (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon()) |
template<typename genType > | |
bool | areOpposite (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon()) |
template<typename genType > | |
bool | areOrthogonal (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon()) |
template<typename genType > | |
bool | areOrthonormal (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon()) |
template<typename genType > | |
bool | areSimilar (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon()) |
template<typename genType > | |
bool | isNormalized (genType const &v, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon()) |
template<typename genType > | |
bool | isNull (genType const &v, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon()) |
< GLM_GTX_vector_query extension: Query informations of vector types
++ |
< GLM_GTX_verbose_operator extension: Use words to replace operators +More...
++Functions | |
template<typename genTypeT , typename genTypeU > | |
genTypeT | add (genTypeT const &a, genTypeU const &b) |
template<typename genTypeT , typename genTypeU > | |
genTypeT | div (genTypeT const &a, genTypeU const &b) |
template<typename genTypeT , typename genTypeU , typename genTypeV > | |
genTypeT | mad (genTypeT const &a, genTypeU const &b, genTypeV const &c) |
template<typename genTypeT , typename genTypeU > | |
genTypeT | mul (genTypeT const &a, genTypeU const &b) |
template<typename genTypeT , typename genTypeU > | |
genTypeT | sub (genTypeT const &a, genTypeU const &b) |
< GLM_GTX_verbose_operator extension: Use words to replace operators
++ |
< GLM_GTX_wrap: Wrapping mode using my texture samping. +More...
++Functions | |
template<typename genType > | |
genType | clamp (genType const &Texcoord) |
template<typename genType > | |
genType | mirrorRepeat (genType const &Texcoord) |
template<typename genType > | |
genType | repeat (genType const &Texcoord) |
< GLM_GTX_wrap: Wrapping mode using my texture samping.
++ |
+ |
GLM_VIRTREV_xstream extension: Streaming vector and matrix in a xml way. +More...
+GLM_VIRTREV_xstream extension: Streaming vector and matrix in a xml way.
++ |
The core of GLM, which implements exactly and only the GLSL specification to the degree possible. +More...
++Modules | |
Types | |
Precision types | |
Template types | |
Functions |
The core of GLM, which implements exactly and only the GLSL specification to the degree possible.
+The GLM core consists of C++ types that mirror GLSL types, C++ functions that mirror the GLSL functions. It also includes a set of precision-based types that can be used in the appropriate functions. The C++ types are all based on a basic set of template types.
+The best documentation for GLM Core is the current GLSL specification, version 4.1 (pdf file). There are a few differences between GLM core and GLSL.
++ |
The standard types defined by the specification. +More...
++Typedefs | |
typedef detail::tvec2< bool > | bvec2 |
typedef detail::tvec3< bool > | bvec3 |
typedef detail::tvec4< bool > | bvec4 |
typedef detail::tmat2x2< double > | dmat2 |
typedef detail::tmat2x2< double > | dmat2x2 |
typedef detail::tmat2x3< double > | dmat2x3 |
typedef detail::tmat2x4< double > | dmat2x4 |
typedef detail::tmat3x3< double > | dmat3 |
typedef detail::tmat3x2< double > | dmat3x2 |
typedef detail::tmat3x3< double > | dmat3x3 |
typedef detail::tmat3x4< double > | dmat3x4 |
typedef detail::tmat4x4< double > | dmat4 |
typedef detail::tmat4x2< double > | dmat4x2 |
typedef detail::tmat4x3< double > | dmat4x3 |
typedef detail::tmat4x4< double > | dmat4x4 |
typedef detail::tvec2< double > | dvec2 |
typedef detail::tvec3< double > | dvec3 |
typedef detail::tvec4< double > | dvec4 |
typedef precision::mediump_ivec2 | ivec2 |
typedef precision::mediump_ivec3 | ivec3 |
typedef precision::mediump_ivec4 | ivec4 |
typedef mat2x2 | mat2 |
typedef precision::mediump_mat2x2 | mat2x2 |
typedef precision::mediump_mat2x3 | mat2x3 |
typedef precision::mediump_mat2x4 | mat2x4 |
typedef mat3x3 | mat3 |
typedef precision::mediump_mat3x2 | mat3x2 |
typedef precision::mediump_mat3x3 | mat3x3 |
typedef precision::mediump_mat3x4 | mat3x4 |
typedef mat4x4 | mat4 |
typedef precision::mediump_mat4x2 | mat4x2 |
typedef precision::mediump_mat4x3 | mat4x3 |
typedef precision::mediump_mat4x4 | mat4x4 |
typedef precision::mediump_uvec2 | uvec2 |
typedef precision::mediump_uvec3 | uvec3 |
typedef precision::mediump_uvec4 | uvec4 |
typedef precision::mediump_vec2 | vec2 |
typedef precision::mediump_vec3 | vec3 |
typedef precision::mediump_vec4 | vec4 |
The standard types defined by the specification.
+These types are all typedefs of more generalized, template types. To see the definiton of these template types, go to Template types.
+typedef detail::tvec2<bool> bvec2 | +
typedef detail::tvec3<bool> bvec3 | +
typedef detail::tvec4<bool> bvec4 | +
typedef detail::tmat2x2<double> dmat2 | +
typedef detail::tmat2x2<double> dmat2x2 | +
typedef detail::tmat2x3<double> dmat2x3 | +
typedef detail::tmat2x4<double> dmat2x4 | +
typedef detail::tmat3x3<double> dmat3 | +
typedef detail::tmat3x2<double> dmat3x2 | +
typedef detail::tmat3x3<double> dmat3x3 | +
typedef detail::tmat3x4<double> dmat3x4 | +
typedef detail::tmat4x4<double> dmat4 | +
typedef detail::tmat4x2<double> dmat4x2 | +
typedef detail::tmat4x3<double> dmat4x3 | +
typedef detail::tmat4x4<double> dmat4x4 | +
typedef detail::tvec2<double> dvec2 | +
typedef detail::tvec3<double> dvec3 | +
typedef detail::tvec4<double> dvec4 | +
typedef precision::mediump_ivec2 ivec2 | +
typedef precision::mediump_ivec3 ivec3 | +
typedef precision::mediump_ivec4 ivec4 | +
typedef mat2x2 mat2 | +
typedef precision::mediump_mat2x2 mat2x2 | +
typedef precision::mediump_mat2x3 mat2x3 | +
typedef precision::mediump_mat2x4 mat2x4 | +
typedef mat3x3 mat3 | +
typedef precision::mediump_mat3x2 mat3x2 | +
typedef precision::mediump_mat3x3 mat3x3 | +
typedef precision::mediump_mat3x4 mat3x4 | +
typedef mat4x4 mat4 | +
typedef precision::mediump_mat4x2 mat4x2 | +
typedef precision::mediump_mat4x3 mat4x3 | +
typedef precision::mediump_mat4x4 mat4x4 | +
typedef precision::mediump_uvec2 uvec2 | +
typedef precision::mediump_uvec3 uvec3 | +
typedef precision::mediump_uvec4 uvec4 | +
typedef precision::mediump_vec2 vec2 | +
typedef precision::mediump_vec3 vec3 | +
+ |
Non-GLSL types that are used to define precision-based types. +More...
++Typedefs | |
typedef highp_float_t | highp_float |
typedef detail::highp_int_t | highp_int |
typedef detail::tvec2< highp_int > | highp_ivec2 |
typedef detail::tvec3< highp_int > | highp_ivec3 |
typedef detail::tvec4< highp_int > | highp_ivec4 |
typedef detail::tmat2x2 +< highp_float > | highp_mat2 |
typedef detail::tmat2x2 +< highp_float > | highp_mat2x2 |
typedef detail::tmat2x3 +< highp_float > | highp_mat2x3 |
typedef detail::tmat3x3 +< highp_float > | highp_mat3 |
typedef detail::tmat3x3 +< highp_float > | highp_mat3x3 |
typedef detail::tmat4x4 +< highp_float > | highp_mat4 |
typedef detail::tmat4x2 +< highp_float > | highp_mat4x2 |
typedef detail::tmat4x3 +< highp_float > | highp_mat4x3 |
typedef detail::tmat4x4 +< highp_float > | highp_mat4x4 |
typedef detail::highp_uint_t | highp_uint |
typedef detail::tvec2< highp_uint > | highp_uvec2 |
typedef detail::tvec3< highp_uint > | highp_uvec3 |
typedef detail::tvec4< highp_uint > | highp_uvec4 |
typedef detail::tvec2 +< highp_float > | highp_vec2 |
typedef detail::tvec3 +< highp_float > | highp_vec3 |
typedef detail::tvec4 +< highp_float > | highp_vec4 |
typedef lowp_float_t | lowp_float |
typedef detail::lowp_int_t | lowp_int |
typedef detail::tvec2< lowp_int > | lowp_ivec2 |
typedef detail::tvec3< lowp_int > | lowp_ivec3 |
typedef detail::tvec4< lowp_int > | lowp_ivec4 |
typedef detail::tmat2x2 +< lowp_float > | lowp_mat2 |
typedef detail::tmat2x2 +< lowp_float > | lowp_mat2x2 |
typedef detail::tmat2x3 +< lowp_float > | lowp_mat2x3 |
typedef detail::tmat3x3 +< lowp_float > | lowp_mat3 |
typedef detail::tmat3x3 +< lowp_float > | lowp_mat3x3 |
typedef detail::tmat4x4 +< lowp_float > | lowp_mat4 |
typedef detail::tmat4x2 +< lowp_float > | lowp_mat4x2 |
typedef detail::tmat4x3 +< lowp_float > | lowp_mat4x3 |
typedef detail::tmat4x4 +< lowp_float > | lowp_mat4x4 |
typedef detail::lowp_uint_t | lowp_uint |
typedef detail::tvec2< lowp_uint > | lowp_uvec2 |
typedef detail::tvec3< lowp_uint > | lowp_uvec3 |
typedef detail::tvec4< lowp_uint > | lowp_uvec4 |
typedef detail::tvec2< lowp_float > | lowp_vec2 |
typedef detail::tvec3< lowp_float > | lowp_vec3 |
typedef detail::tvec4< lowp_float > | lowp_vec4 |
typedef mediump_float_t | mediump_float |
typedef detail::mediump_int_t | mediump_int |
typedef detail::tvec2 +< mediump_int > | mediump_ivec2 |
typedef detail::tvec3 +< mediump_int > | mediump_ivec3 |
typedef detail::tvec4 +< mediump_int > | mediump_ivec4 |
typedef detail::tmat2x2 +< mediump_float > | mediump_mat2 |
typedef detail::tmat2x2 +< mediump_float > | mediump_mat2x2 |
typedef detail::tmat2x3 +< mediump_float > | mediump_mat2x3 |
typedef detail::tmat3x3 +< mediump_float > | mediump_mat3 |
typedef detail::tmat3x3 +< mediump_float > | mediump_mat3x3 |
typedef detail::tmat4x4 +< mediump_float > | mediump_mat4 |
typedef detail::tmat4x2 +< mediump_float > | mediump_mat4x2 |
typedef detail::tmat4x3 +< mediump_float > | mediump_mat4x3 |
typedef detail::tmat4x4 +< mediump_float > | mediump_mat4x4 |
typedef detail::mediump_uint_t | mediump_uint |
typedef detail::tvec2 +< mediump_uint > | mediump_uvec2 |
typedef detail::tvec3 +< mediump_uint > | mediump_uvec3 |
typedef detail::tvec4 +< mediump_uint > | mediump_uvec4 |
typedef detail::tvec2 +< mediump_float > | mediump_vec2 |
typedef detail::tvec3 +< mediump_float > | mediump_vec3 |
typedef detail::tvec4 +< mediump_float > | mediump_vec4 |
Non-GLSL types that are used to define precision-based types.
+The GLSL language allows the user to define the precision of a particular variable. In OpenGL's GLSL, these precision qualifiers have no effect; they are there for compatibility with OpenGL ES's precision qualifiers, where they do have an effect.
+C++ has no language equivalent to precision qualifiers. So GLM provides the next-best thing: a number of typedefs of the Template types that use a particular precision.
+None of these types make any guarantees about the actual precision used.
+typedef highp_float_t highp_float | +
High precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification
+ +Definition at line 54 of file type_float.hpp.
+ +typedef detail::highp_int_t highp_int | +
High precision signed integer.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification.
+ +Definition at line 58 of file type_int.hpp.
+ +typedef detail::tvec2<highp_int> highp_ivec2 | +
2 components vector of high precision signed integer numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.
+ +Definition at line 224 of file type_vec2.hpp.
+ +typedef detail::tvec3<highp_int> highp_ivec3 | +
3 components vector of high precision signed integer numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.
+ +Definition at line 237 of file type_vec3.hpp.
+ +typedef detail::tvec4<highp_int> highp_ivec4 | +
4 components vector of high precision signed integer numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.
+ +Definition at line 270 of file type_vec4.hpp.
+ +typedef detail::tmat2x2<highp_float> highp_mat2 | +
2 columns of 2 components matrix of high precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers
+ +Definition at line 252 of file type_mat2x2.hpp.
+ +typedef detail::tmat2x2<highp_float> highp_mat2x2 | +
2 columns of 2 components matrix of high precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers
+ +Definition at line 270 of file type_mat2x2.hpp.
+ +typedef detail::tmat2x3<highp_float> highp_mat2x3 | +
2 columns of 3 components matrix of high precision floating-point numbers.
+There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)
+ +Definition at line 217 of file type_mat2x3.hpp.
+ +typedef detail::tmat3x3<highp_float> highp_mat3 | +
3 columns of 3 components matrix of high precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers
+ +Definition at line 254 of file type_mat3x3.hpp.
+ +typedef detail::tmat3x3<highp_float> highp_mat3x3 | +
3 columns of 3 components matrix of high precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers
+ +Definition at line 272 of file type_mat3x3.hpp.
+ +typedef detail::tmat4x4<highp_float> highp_mat4 | +
4 columns of 4 components matrix of high precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers
+ +Definition at line 257 of file type_mat4x4.hpp.
+ +typedef detail::tmat4x2<highp_float> highp_mat4x2 | +
4 columns of 2 components matrix of high precision floating-point numbers.
+There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)
+ +Definition at line 231 of file type_mat4x2.hpp.
+ +typedef detail::tmat4x3<highp_float> highp_mat4x3 | +
4 columns of 3 components matrix of high precision floating-point numbers.
+There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)
+ +Definition at line 229 of file type_mat4x3.hpp.
+ +typedef detail::tmat4x4<highp_float> highp_mat4x4 | +
4 columns of 4 components matrix of high precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers
+ +Definition at line 275 of file type_mat4x4.hpp.
+ +typedef detail::highp_uint_t highp_uint | +
High precision unsigned integer.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification.
+ +Definition at line 74 of file type_int.hpp.
+ +typedef detail::tvec2<highp_uint> highp_uvec2 | +
2 components vector of high precision unsigned integer numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.
+ +Definition at line 242 of file type_vec2.hpp.
+ +typedef detail::tvec3<highp_uint> highp_uvec3 | +
3 components vector of high precision unsigned integer numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.
+ +Definition at line 255 of file type_vec3.hpp.
+ +typedef detail::tvec4<highp_uint> highp_uvec4 | +
4 components vector of high precision unsigned integer numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.
+ +Definition at line 288 of file type_vec4.hpp.
+ +typedef detail::tvec2<highp_float> highp_vec2 | +
2 components vector of high precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers.
+ +Definition at line 206 of file type_vec2.hpp.
+ +typedef detail::tvec3<highp_float> highp_vec3 | +
3 components vector of high precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers.
+ +Definition at line 219 of file type_vec3.hpp.
+ +typedef detail::tvec4<highp_float> highp_vec4 | +
4 components vector of high precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers.
+ +Definition at line 252 of file type_vec4.hpp.
+ +typedef lowp_float_t lowp_float | +
Low precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification
+ +Definition at line 44 of file type_float.hpp.
+ +typedef detail::lowp_int_t lowp_int | +
Low precision signed integer.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification.
+ +Definition at line 48 of file type_int.hpp.
+ +typedef detail::tvec2<lowp_int> lowp_ivec2 | +
2 components vector of low precision signed integer numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.
+ +Definition at line 236 of file type_vec2.hpp.
+ +typedef detail::tvec3<lowp_int> lowp_ivec3 | +
3 components vector of low precision signed integer numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.
+ +Definition at line 249 of file type_vec3.hpp.
+ +typedef detail::tvec4<lowp_int> lowp_ivec4 | +
4 components vector of low precision signed integer numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.
+ +Definition at line 282 of file type_vec4.hpp.
+ +typedef detail::tmat2x2<lowp_float> lowp_mat2 | +
2 columns of 2 components matrix of low precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers
+ +Definition at line 240 of file type_mat2x2.hpp.
+ +typedef detail::tmat2x2<lowp_float> lowp_mat2x2 | +
2 columns of 2 components matrix of low precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers
+ +Definition at line 258 of file type_mat2x2.hpp.
+ +typedef detail::tmat2x3<lowp_float> lowp_mat2x3 | +
2 columns of 3 components matrix of low precision floating-point numbers.
+There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)
+ +Definition at line 207 of file type_mat2x3.hpp.
+ +typedef detail::tmat3x3<lowp_float> lowp_mat3 | +
3 columns of 3 components matrix of low precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers
+ +Definition at line 244 of file type_mat3x3.hpp.
+ +typedef detail::tmat3x3<lowp_float> lowp_mat3x3 | +
3 columns of 3 components matrix of low precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers
+ +Definition at line 260 of file type_mat3x3.hpp.
+ +typedef detail::tmat4x4<lowp_float> lowp_mat4 | +
4 columns of 4 components matrix of low precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers
+ +Definition at line 245 of file type_mat4x4.hpp.
+ +typedef detail::tmat4x2<lowp_float> lowp_mat4x2 | +
4 columns of 2 components matrix of low precision floating-point numbers.
+There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)
+ +Definition at line 219 of file type_mat4x2.hpp.
+ +typedef detail::tmat4x3<lowp_float> lowp_mat4x3 | +
4 columns of 3 components matrix of low precision floating-point numbers.
+There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)
+ +Definition at line 217 of file type_mat4x3.hpp.
+ +typedef detail::tmat4x4<lowp_float> lowp_mat4x4 | +
4 columns of 4 components matrix of low precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers
+ +Definition at line 263 of file type_mat4x4.hpp.
+ +typedef detail::lowp_uint_t lowp_uint | +
Low precision unsigned integer.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification.
+ +Definition at line 64 of file type_int.hpp.
+ +typedef detail::tvec2<lowp_uint> lowp_uvec2 | +
2 components vector of low precision unsigned integer numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.
+ +Definition at line 254 of file type_vec2.hpp.
+ +typedef detail::tvec3<lowp_uint> lowp_uvec3 | +
3 components vector of low precision unsigned integer numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.
+ +Definition at line 267 of file type_vec3.hpp.
+ +typedef detail::tvec4<lowp_uint> lowp_uvec4 | +
4 components vector of low precision unsigned integer numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.
+ +Definition at line 300 of file type_vec4.hpp.
+ +typedef detail::tvec2<lowp_float> lowp_vec2 | +
2 components vector of low precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers.
+ +Definition at line 218 of file type_vec2.hpp.
+ +typedef detail::tvec3<lowp_float> lowp_vec3 | +
3 components vector of low precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers.
+ +Definition at line 231 of file type_vec3.hpp.
+ +typedef detail::tvec4<lowp_float> lowp_vec4 | +
4 components vector of low precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers.
+ +Definition at line 264 of file type_vec4.hpp.
+ +typedef mediump_float_t mediump_float | +
Medium precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification
+ +Definition at line 49 of file type_float.hpp.
+ +typedef detail::mediump_int_t mediump_int | +
Medium precision signed integer.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification.
+ +Definition at line 53 of file type_int.hpp.
+ +typedef detail::tvec2<mediump_int> mediump_ivec2 | +
2 components vector of medium precision signed integer numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.
+ +Definition at line 230 of file type_vec2.hpp.
+ +typedef detail::tvec3<mediump_int> mediump_ivec3 | +
3 components vector of medium precision signed integer numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.
+ +Definition at line 243 of file type_vec3.hpp.
+ +typedef detail::tvec4<mediump_int> mediump_ivec4 | +
4 components vector of medium precision signed integer numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.
+ +Definition at line 276 of file type_vec4.hpp.
+ +typedef detail::tmat2x2<mediump_float> mediump_mat2 | +
2 columns of 2 components matrix of medium precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers
+ +Definition at line 246 of file type_mat2x2.hpp.
+ +typedef detail::tmat2x2<mediump_float> mediump_mat2x2 | +
2 columns of 2 components matrix of medium precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers
+ +Definition at line 264 of file type_mat2x2.hpp.
+ +typedef detail::tmat2x3<mediump_float> mediump_mat2x3 | +
2 columns of 3 components matrix of medium precision floating-point numbers.
+There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)
+ +Definition at line 212 of file type_mat2x3.hpp.
+ +typedef detail::tmat3x3<mediump_float> mediump_mat3 | +
3 columns of 3 components matrix of medium precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers
+ +Definition at line 249 of file type_mat3x3.hpp.
+ +typedef detail::tmat3x3<mediump_float> mediump_mat3x3 | +
3 columns of 3 components matrix of medium precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers
+ +Definition at line 266 of file type_mat3x3.hpp.
+ +typedef detail::tmat4x4<mediump_float> mediump_mat4 | +
4 columns of 4 components matrix of medium precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers
+ +Definition at line 251 of file type_mat4x4.hpp.
+ +typedef detail::tmat4x2<mediump_float> mediump_mat4x2 | +
4 columns of 2 components matrix of medium precision floating-point numbers.
+There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)
+ +Definition at line 225 of file type_mat4x2.hpp.
+ +typedef detail::tmat4x3<mediump_float> mediump_mat4x3 | +
4 columns of 3 components matrix of medium precision floating-point numbers.
+There is no guarantee on the actual precision. (From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers)
+ +Definition at line 223 of file type_mat4x3.hpp.
+ +typedef detail::tmat4x4<mediump_float> mediump_mat4x4 | +
4 columns of 4 components matrix of medium precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.6 Matrices and section 4.5 Precision and Precision Qualifiers
+ +Definition at line 269 of file type_mat4x4.hpp.
+ +typedef detail::mediump_uint_t mediump_uint | +
Medium precision unsigned integer.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification.
+ +Definition at line 69 of file type_int.hpp.
+ +typedef detail::tvec2<mediump_uint> mediump_uvec2 | +
2 components vector of medium precision unsigned integer numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.
+ +Definition at line 248 of file type_vec2.hpp.
+ +typedef detail::tvec3<mediump_uint> mediump_uvec3 | +
3 components vector of medium precision unsigned integer numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.
+ +Definition at line 261 of file type_vec3.hpp.
+ +typedef detail::tvec4<mediump_uint> mediump_uvec4 | +
4 components vector of medium precision unsigned integer numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.1.5 Precision Qualifiers.
+ +Definition at line 294 of file type_vec4.hpp.
+ +typedef detail::tvec2<mediump_float> mediump_vec2 | +
2 components vector of medium precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers.
+ +Definition at line 212 of file type_vec2.hpp.
+ +typedef detail::tvec3<mediump_float> mediump_vec3 | +
3 components vector of medium precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers.
+ +Definition at line 225 of file type_vec3.hpp.
+ +typedef detail::tvec4<mediump_float> mediump_vec4 | +
4 components vector of medium precision floating-point numbers.
+There is no guarantee on the actual precision. From GLSL 1.30.8 specification, section 4.5.2 Precision Qualifiers.
+ +Definition at line 258 of file type_vec4.hpp.
+ ++ |
The generic template types used as the basis for the core types. +More...
++Classes | |
struct | tmat2x2< T > |
Template for 2 * 2 matrix of floating-point numbers. More... | |
struct | tmat2x3< T > |
Template for 2 columns and 3 rows matrix of floating-point numbers. More... | |
struct | tmat2x4< T > |
Template for 2 columns and 4 rows matrix of floating-point numbers. More... | |
struct | tmat3x2< T > |
Template for 3 columns and 2 rows matrix of floating-point numbers. More... | |
struct | tmat3x3< T > |
Template for 3 * 3 matrix of floating-point numbers. More... | |
struct | tmat3x4< T > |
Template for 3 columns and 4 rows matrix of floating-point numbers. More... | |
struct | tmat4x2< T > |
Template for 4 columns and 2 rows matrix of floating-point numbers. More... | |
struct | tmat4x3< T > |
Template for 4 columns and 3 rows matrix of floating-point numbers. More... | |
struct | tmat4x4< T > |
Template for 4 * 4 matrix of floating-point numbers. More... | |
struct | tvec2< T > |
The basic 2D vector type. More... | |
struct | tvec3< T > |
Basic 3D vector type. More... | |
struct | tvec4< T > |
Basic 4D vector type. More... |
The generic template types used as the basis for the core types.
+These types are all templates used to define the actual Types. These templetes are implementation details of GLM types and should not be used explicitly.
++ |
The functions defined by the specification. +More...
++Functions | |
template<typename genFIType > | |
genFIType | abs (genFIType const &x) |
template<typename genType > | |
genType | acos (genType const &x) |
template<typename genType > | |
genType | acosh (genType const &x) |
template<template< typename > class vecType> | |
GLM_FUNC_QUALIFIER bool | all (vecType< bool > const &v) |
template<template< typename > class vecType> | |
GLM_FUNC_QUALIFIER bool | any (vecType< bool > const &v) |
template<typename genType > | |
genType | asin (genType const &x) |
template<typename genType > | |
genType | asinh (genType const &x) |
template<typename genType > | |
genType | atan (genType const &y, genType const &x) |
template<typename genType > | |
genType | atan (genType const &y_over_x) |
template<typename genType > | |
genType | atanh (genType const &x) |
template<typename T , template< typename > class C> | |
C< T >::signed_type | bitCount (C< T > const &Value) |
template<typename genIUType > | |
genIUType | bitfieldExtract (genIUType const &Value, int const &Offset, int const &Bits) |
template<typename genIUType > | |
genIUType | bitfieldInsert (genIUType const &Base, genIUType const &Insert, int const &Offset, int const &Bits) |
template<typename genIUType > | |
genIUType | bitfieldReverse (genIUType const &value) |
template<typename genType > | |
genType | ceil (genType const &x) |
template<typename genType > | |
genType | clamp (genType const &x, genType const &minVal, genType const &maxVal) |
template<typename genType > | |
genType | cos (genType const &angle) |
template<typename genType > | |
genType | cosh (genType const &angle) |
template<typename T > | |
detail::tvec3< T > | cross (detail::tvec3< T > const &x, detail::tvec3< T > const &y) |
template<typename genType > | |
genType | degrees (genType const &radians) |
template<typename T > | |
detail::tmat2x2< T >::value_type | determinant (detail::tmat2x2< T > const &m) |
template<typename T > | |
detail::tmat3x3< T >::value_type | determinant (detail::tmat3x3< T > const &m) |
template<typename T > | |
detail::tmat4x4< T >::value_type | determinant (detail::tmat4x4< T > const &m) |
template<typename genType > | |
genType::value_type | distance (genType const &p0, genType const &p1) |
template<typename genType > | |
genType::value_type | dot (genType const &x, genType const &y) |
template<typename T , template< typename > class vecType> | |
GLM_FUNC_QUALIFIER vecType< T > +::bool_type | equal (vecType< T > const &x, vecType< T > const &y) |
template<typename genType > | |
genType | exp (genType const &x) |
template<typename genType > | |
genType | exp2 (genType const &x) |
template<typename genType > | |
genType | faceforward (genType const &N, genType const &I, genType const &Nref) |
template<typename T , template< typename > class C> | |
C< T >::signed_type | findLSB (C< T > const &Value) |
template<typename T , template< typename > class C> | |
C< T >::signed_type | findMSB (C< T > const &Value) |
template<typename genType , typename genIType > | |
genIType | floatBitsToInt (genType const &value) |
template<typename genType , typename genUType > | |
genUType | floatBitsToUint (genType const &value) |
template<typename genType > | |
genType | floor (genType const &x) |
template<typename genType > | |
genType | fma (genType const &a, genType const &b, genType const &c) |
template<typename genType > | |
genType | fract (genType const &x) |
template<typename genType , typename genIType > | |
genType | frexp (genType const &x, genIType &exp) |
template<typename T , template< typename > class vecType> | |
GLM_FUNC_QUALIFIER vecType< T > +::bool_type | greaterThan (vecType< T > const &x, vecType< T > const &y) |
template<typename T , template< typename > class vecType> | |
GLM_FUNC_QUALIFIER vecType< T > +::bool_type | greaterThanEqual (vecType< T > const &x, vecType< T > const &y) |
template<typename genIType > | |
void | imulExtended (genIType const &x, genIType const &y, genIType &msb, genIType &lsb) |
template<typename genType , typename genIType > | |
genType | intBitsToFloat (genIType const &value) |
template<typename T > | |
detail::tmat3x3< T > | inverse (detail::tmat3x3< T > const &m) |
template<typename T > | |
detail::tmat4x4< T > | inverse (detail::tmat4x4< T > const &m) |
template<typename T > | |
detail::tmat2x2< T > | inverse (detail::tmat2x2< T > const &m) |
template<typename genType > | |
genType | inversesqrt (genType const &x) |
template<typename genType > | |
genType::bool_type | isinf (genType const &x) |
template<typename genType > | |
genType::bool_type | isnan (genType const &x) |
template<typename genType , typename genIType > | |
genType | ldexp (genType const &x, genIType const &exp) |
template<typename genType > | |
genType::value_type | length (genType const &x) |
template<typename T , template< typename > class vecType> | |
GLM_FUNC_QUALIFIER vecType< T > +::bool_type | lessThan (vecType< T > const &x, vecType< T > const &y) |
template<typename T , template< typename > class vecType> | |
GLM_FUNC_QUALIFIER vecType< T > +::bool_type | lessThanEqual (vecType< T > const &x, vecType< T > const &y) |
template<typename genType > | |
genType | log (genType const &x) |
template<typename genType > | |
genType | log2 (genType const &x) |
template<typename matType > | |
matType | matrixCompMult (matType const &x, matType const &y) |
template<typename genType > | |
genType | max (genType const &x, genType const &y) |
template<typename genType > | |
genType | min (genType const &x, genType const &y) |
template<typename genTypeT , typename genTypeU > | |
genTypeT | mix (genTypeT const &x, genTypeT const &y, genTypeU const &a) |
template<typename genType > | |
genType | mod (genType const &x, genType const &y) |
template<typename genType > | |
genType | mod (genType const &x, typename genType::value_type const &y) |
template<typename genType > | |
genType | modf (genType const &x, genType &i) |
template<typename genType > | |
genType::value_type | noise1 (genType const &x) |
template<typename genType > | |
detail::tvec2< typename +genType::value_type > | noise2 (genType const &x) |
template<typename genType > | |
detail::tvec3< typename +genType::value_type > | noise3 (genType const &x) |
template<typename genType > | |
detail::tvec4< typename +genType::value_type > | noise4 (genType const &x) |
template<typename genType > | |
genType | normalize (genType const &x) |
template<template< typename > class vecType> | |
GLM_FUNC_QUALIFIER vecType< bool > | not_ (vecType< bool > const &v) |
template<typename T , template< typename > class vecType> | |
GLM_FUNC_QUALIFIER vecType< T > +::bool_type | notEqual (vecType< T > const &x, vecType< T > const &y) |
template<typename vecType , typename matType > | |
matType | outerProduct (vecType const &c, vecType const &r) |
double | packDouble2x32 (detail::tvec2< detail::uint32 > const &v) |
detail::uint32 | packSnorm4x8 (detail::tvec4< detail::float32 > const &v) |
detail::uint32 | packUnorm2x16 (detail::tvec2< detail::float32 > const &v) |
detail::uint32 | packUnorm4x8 (detail::tvec4< detail::float32 > const &v) |
template<typename genType > | |
genType | pow (genType const &x, genType const &y) |
template<typename genType > | |
genType | radians (genType const °rees) |
template<typename genType > | |
genType | reflect (genType const &I, genType const &N) |
template<typename genType > | |
genType | refract (genType const &I, genType const &N, typename genType::value_type const &eta) |
template<typename genType > | |
genType | round (genType const &x) |
template<typename genType > | |
genType | roundEven (genType const &x) |
template<typename genFIType > | |
genFIType | sign (genFIType const &x) |
template<typename genType > | |
genType | sin (genType const &angle) |
template<typename genType > | |
genType | sinh (genType const &angle) |
template<typename genType > | |
genType | smoothstep (genType const &edge0, genType const &edge1, genType const &x) |
template<typename genType > | |
genType | sqrt (genType const &x) |
template<typename genType > | |
genType | step (genType const &edge, genType const &x) |
template<typename genType > | |
genType | tan (genType const &angle) |
template<typename genType > | |
genType | tanh (genType const &angle) |
template<typename matType > | |
matType::transpose_type | transpose (matType const &x) |
template<typename genType > | |
genType | trunc (genType const &x) |
template<typename genUType > | |
genUType | uaddCarry (genUType const &x, genUType const &y, genUType &carry) |
template<typename genType , typename genUType > | |
genType | uintBitsToFloat (genUType const &value) |
template<typename genUType > | |
void | umulExtended (genUType const &x, genUType const &y, genUType &msb, genUType &lsb) |
detail::tvec2< detail::uint32 > | unpackDouble2x32 (double const &v) |
detail::tvec4< detail::float32 > | unpackSnorm4x8 (detail::uint32 const &p) |
detail::tvec2< detail::float32 > | unpackUnorm2x16 (detail::uint32 const &p) |
detail::tvec4< detail::float32 > | unpackUnorm4x8 (detail::uint32 const &p) |
template<typename genUType > | |
genUType | usubBorrow (genUType const &x, genUType const &y, genUType &borrow) |
The functions defined by the specification.
+< Define all geometric functions from Section 8.4 of GLSL 1.30.8 specification. Included in glm namespace.
+< Define common functions from Section 8.3 of GLSL 1.30.8 specification. Included in glm namespace.
+genFIType glm::core::function::common::abs | +( | +genFIType const & | +x | ) | ++ |
Returns x if x >= 0; otherwise, it returns -x.
+genType glm::core::function::trigonometric::acos | +( | +genType const & | +x | ) | ++ |
Arc cosine.
+Returns an angle whose sine is x. The range of values returned by this function is [0, PI]. Results are undefined if |x| > 1.
+genType glm::core::function::trigonometric::acosh | +( | +genType const & | +x | ) | ++ |
Arc hyperbolic cosine; returns the non-negative inverse of cosh.
+Results are undefined if x < 1.
+GLM_FUNC_QUALIFIER bool glm::core::function::vector_relational::all | +( | +vecType< bool > const & | +v | ) | ++ |
Returns true if all components of x are true.
+Definition at line 176 of file func_vector_relational.hpp.
+ +GLM_FUNC_QUALIFIER bool glm::core::function::vector_relational::any | +( | +vecType< bool > const & | +v | ) | ++ |
Returns true if any component of x is true.
+Definition at line 160 of file func_vector_relational.hpp.
+ +genType glm::core::function::trigonometric::asin | +( | +genType const & | +x | ) | ++ |
Arc sine.
+Returns an angle whose sine is x. The range of values returned by this function is [-PI/2, PI/2]. Results are undefined if |x| > 1.
+genType glm::core::function::trigonometric::asinh | +( | +genType const & | +x | ) | ++ |
Arc hyperbolic sine; returns the inverse of sinh.
+genType glm::core::function::trigonometric::atan | +( | +genType const & | +y, | +
+ | + | genType const & | +x | +
+ | ) | ++ |
Arc tangent.
+Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0.
+Referenced by glm::gtx::compatibility::atan2().
+ +genType glm::core::function::trigonometric::atan | +( | +genType const & | +y_over_x | ) | ++ |
Arc tangent.
+Returns an angle whose tangent is y_over_x. The range of values returned by this function is [-PI/2, PI/2].
+genType glm::core::function::trigonometric::atanh | +( | +genType const & | +x | ) | ++ |
Arc hyperbolic tangent; returns the inverse of tanh.
+Results are undefined if abs(x) >= 1.
+C<T>::signed_type glm::core::function::integer::bitCount | +( | +C< T > const & | +Value | ) | ++ |
Returns the number of bits set to 1 in the binary representation of value.
+genIUType glm::core::function::integer::bitfieldExtract | +( | +genIUType const & | +Value, | +
+ | + | int const & | +Offset, | +
+ | + | int const & | +Bits | +
+ | ) | ++ |
Extracts bits [offset, offset + bits - 1] from value, returning them in the least significant bits of the result.
+For unsigned data types, the most significant bits of the result will be set to zero. For signed data types, the most significant bits will be set to the value of bit offset + base – 1.
+If bits is zero, the result will be zero. The result will be undefined if offset or bits is negative, or if the sum of offset and bits is greater than the number of bits used to store the operand.
+genIUType glm::core::function::integer::bitfieldInsert | +( | +genIUType const & | +Base, | +
+ | + | genIUType const & | +Insert, | +
+ | + | int const & | +Offset, | +
+ | + | int const & | +Bits | +
+ | ) | ++ |
Returns the insertion the bits least-significant bits of insert into base.
+The result will have bits [offset, offset + bits - 1] taken from bits [0, bits – 1] of insert, and all other bits taken directly from the corresponding bits of base. If bits is zero, the result will simply be base. The result will be undefined if offset or bits is negative, or if the sum of offset and bits is greater than the number of bits used to store the operand.
+genIUType glm::core::function::integer::bitfieldReverse | +( | +genIUType const & | +value | ) | ++ |
Returns the reversal of the bits of value.
+The bit numbered n of the result will be taken from bit (bits - 1) - n of value, where bits is the total number of bits used to represent value.
+genType glm::core::function::common::ceil | +( | +genType const & | +x | ) | ++ |
Returns a value equal to the nearest integer that is greater than or equal to x.
+genType glm::core::function::common::clamp | +( | +genType const & | +x, | +
+ | + | genType const & | +minVal, | +
+ | + | genType const & | +maxVal | +
+ | ) | ++ |
Returns min(max(x, minVal), maxVal) for each component in x.
+using the floating-point values minVal and maxVal.
+Referenced by glm::gtx::compatibility::saturate().
+ +genType glm::core::function::trigonometric::cos | +( | +genType const & | +angle | ) | ++ |
The standard trigonometric cosine function.
+The values returned by this function will range from [-1, 1].
+genType glm::core::function::trigonometric::cosh | +( | +genType const & | +angle | ) | ++ |
Returns the hyperbolic cosine function, (exp(x) + exp(-x)) / 2.
+detail::tvec3<T> glm::core::function::geometric::cross | +( | +detail::tvec3< T > const & | +x, | +
+ | + | detail::tvec3< T > const & | +y | +
+ | ) | ++ |
Returns the cross product of x and y.
+genType glm::core::function::trigonometric::degrees | +( | +genType const & | +radians | ) | ++ |
Converts radians to degrees and returns the result.
+detail::tmat2x2<T>::value_type glm::core::function::matrix::determinant | +( | +detail::tmat2x2< T > const & | +m | ) | ++ |
Return the determinant of a mat2 matrix.
+detail::tmat3x3<T>::value_type glm::core::function::matrix::determinant | +( | +detail::tmat3x3< T > const & | +m | ) | ++ |
Return the determinant of a mat3 matrix.
+detail::tmat4x4<T>::value_type glm::core::function::matrix::determinant | +( | +detail::tmat4x4< T > const & | +m | ) | ++ |
Return the determinant of a mat4 matrix.
+genType::value_type glm::core::function::geometric::distance | +( | +genType const & | +p0, | +
+ | + | genType const & | +p1 | +
+ | ) | ++ |
Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).
+genType::value_type glm::core::function::geometric::dot | +( | +genType const & | +x, | +
+ | + | genType const & | +y | +
+ | ) | ++ |
Returns the dot product of x and y, i.e., result = x * y.
+GLM_FUNC_QUALIFIER vecType<T>::bool_type glm::core::function::vector_relational::equal | +( | +vecType< T > const & | +x, | +
+ | + | vecType< T > const & | +y | +
+ | ) | ++ |
Returns the component-wise comparison of result x == y.
+Definition at line 121 of file func_vector_relational.hpp.
+ +genType glm::core::function::exponential::exp | +( | +genType const & | +x | ) | ++ |
Returns the natural exponentiation of x, i.e., e^x.
+genType glm::core::function::exponential::exp2 | +( | +genType const & | +x | ) | ++ |
Returns 2 raised to the x power.
+genType glm::core::function::geometric::faceforward | +( | +genType const & | +N, | +
+ | + | genType const & | +I, | +
+ | + | genType const & | +Nref | +
+ | ) | ++ |
If dot(Nref, I) < 0.0, return N, otherwise, return -N.
+C<T>::signed_type glm::core::function::integer::findLSB | +( | +C< T > const & | +Value | ) | ++ |
Returns the bit number of the least significant bit set to 1 in the binary representation of value.
+If value is zero, -1 will be returned.
+C<T>::signed_type glm::core::function::integer::findMSB | +( | +C< T > const & | +Value | ) | ++ |
Returns the bit number of the most significant bit in the binary representation of value.
+For positive integers, the result will be the bit number of the most significant bit set to 1. For negative integers, the result will be the bit number of the most significant bit set to 0. For a value of zero or negative one, -1 will be returned.
+genIType glm::core::function::common::floatBitsToInt | +( | +genType const & | +value | ) | ++ |
Returns a signed integer value representing the encoding of a floating-point value.
+The floatingpoint value's bit-level representation is preserved.
+genUType glm::core::function::common::floatBitsToUint | +( | +genType const & | +value | ) | ++ |
Returns a unsigned integer value representing the encoding of a floating-point value.
+The floatingpoint value's bit-level representation is preserved.
+genType glm::core::function::common::floor | +( | +genType const & | +x | ) | ++ |
Returns a value equal to the nearest integer that is less then or equal to x.
+genType glm::core::function::common::fma | +( | +genType const & | +a, | +
+ | + | genType const & | +b, | +
+ | + | genType const & | +c | +
+ | ) | ++ |
Computes and returns a * b + c.
+genType glm::core::function::common::fract | +( | +genType const & | +x | ) | ++ |
Return x - floor(x).
+genType glm::core::function::common::frexp | +( | +genType const & | +x, | +
+ | + | genIType & | +exp | +
+ | ) | ++ |
Splits x into a floating-point significand in the range [0.5, 1.0) and an integral exponent of two, such that: x = significand * exp(2, exponent)
+The significand is returned by the function and the exponent is returned in the parameter exp. For a floating-point value of zero, the significant and exponent are both zero. For a floating-point value that is an infinity or is not a number, the results are undefined.
+GLM_FUNC_QUALIFIER vecType<T>::bool_type glm::core::function::vector_relational::greaterThan | +( | +vecType< T > const & | +x, | +
+ | + | vecType< T > const & | +y | +
+ | ) | ++ |
Returns the component-wise comparison of result x > y.
+Definition at line 77 of file func_vector_relational.hpp.
+ +GLM_FUNC_QUALIFIER vecType<T>::bool_type glm::core::function::vector_relational::greaterThanEqual | +( | +vecType< T > const & | +x, | +
+ | + | vecType< T > const & | +y | +
+ | ) | ++ |
Returns the component-wise comparison of result x >= y.
+Definition at line 99 of file func_vector_relational.hpp.
+ +void glm::core::function::integer::imulExtended | +( | +genIType const & | +x, | +
+ | + | genIType const & | +y, | +
+ | + | genIType & | +msb, | +
+ | + | genIType & | +lsb | +
+ | ) | ++ |
Multiplies 32-bit integers x and y, producing a 64-bit result.
+The 32 least-significant bits are returned in lsb. The 32 most-significant bits are returned in msb.
+genType glm::core::function::common::intBitsToFloat | +( | +genIType const & | +value | ) | ++ |
Returns a floating-point value corresponding to a signed integer encoding of a floating-point value.
+If an inf or NaN is passed in, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit-level representation is preserved.
+detail::tmat3x3<T> glm::core::function::matrix::inverse | +( | +detail::tmat3x3< T > const & | +m | ) | ++ |
Return the inverse of a mat3 matrix.
+detail::tmat4x4<T> glm::core::function::matrix::inverse | +( | +detail::tmat4x4< T > const & | +m | ) | ++ |
Return the inverse of a mat4 matrix.
+detail::tmat2x2<T> glm::core::function::matrix::inverse | +( | +detail::tmat2x2< T > const & | +m | ) | ++ |
Return the inverse of a mat2 matrix.
+genType glm::core::function::exponential::inversesqrt | +( | +genType const & | +x | ) | ++ |
Returns the reciprocal of the positive square root of x.
+genType::bool_type glm::core::function::common::isinf | +( | +genType const & | +x | ) | ++ |
Returns true if x holds a positive infinity or negative infinity representation in the underlying implementation's set of floating point representations.
+Returns false otherwise, including for implementations with no infinity representations.
+genType::bool_type glm::core::function::common::isnan | +( | +genType const & | +x | ) | ++ |
Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of floating point representations.
+Returns false otherwise, including for implementations with no NaN representations.
+genType glm::core::function::common::ldexp | +( | +genType const & | +x, | +
+ | + | genIType const & | +exp | +
+ | ) | ++ |
Builds a floating-point number from x and the corresponding integral exponent of two in exp, returning: significand * exp(2, exponent)
+If this product is too large to be represented in the floating-point type, the result is undefined.
+genType::value_type glm::core::function::geometric::length | +( | +genType const & | +x | ) | ++ |
Returns the length of x, i.e., sqrt(x * x).
+GLM_FUNC_QUALIFIER vecType<T>::bool_type glm::core::function::vector_relational::lessThan | +( | +vecType< T > const & | +x, | +
+ | + | vecType< T > const & | +y | +
+ | ) | ++ |
Returns the component-wise comparison result of x < y.
+Definition at line 32 of file func_vector_relational.hpp.
+ +GLM_FUNC_QUALIFIER vecType<T>::bool_type glm::core::function::vector_relational::lessThanEqual | +( | +vecType< T > const & | +x, | +
+ | + | vecType< T > const & | +y | +
+ | ) | ++ |
Returns the component-wise comparison of result x <= y.
+Definition at line 55 of file func_vector_relational.hpp.
+ +genType glm::core::function::exponential::log | +( | +genType const & | +x | ) | ++ |
Returns the natural logarithm of x, i.e., returns the value y which satisfies the equation x = e^y.
+Results are undefined if x <= 0.
+genType glm::core::function::exponential::log2 | +( | +genType const & | +x | ) | ++ |
Returns the base 2 log of x, i.e., returns the value y, which satisfies the equation x = 2 ^ y.
+matType glm::core::function::matrix::matrixCompMult | +( | +matType const & | +x, | +
+ | + | matType const & | +y | +
+ | ) | ++ |
Multiply matrix x by matrix y component-wise, i.e., result[i][j] is the scalar product of x[i][j] and y[i][j].
+genType glm::core::function::common::max | +( | +genType const & | +x, | +
+ | + | genType const & | +y | +
+ | ) | ++ |
Returns y if x < y; otherwise, it returns x.
+genType glm::core::function::common::min | +( | +genType const & | +x, | +
+ | + | genType const & | +y | +
+ | ) | ++ |
Returns y if y < x; otherwise, it returns x.
+genTypeT glm::core::function::common::mix | +( | +genTypeT const & | +x, | +
+ | + | genTypeT const & | +y, | +
+ | + | genTypeU const & | +a | +
+ | ) | ++ |
[in] | x | Floating point scalar or vector. |
[in] | y | Floating point scalar or vector. |
[in] | a | Floating point or boolean scalar or vector. |
Referenced by glm::gtx::compatibility::lerp().
+ +genType glm::core::function::common::mod | +( | +genType const & | +x, | +
+ | + | genType const & | +y | +
+ | ) | ++ |
Modulus.
+Returns x - y * floor(x / y) for each component in x using the floating point value y.
+genType glm::core::function::common::mod | +( | +genType const & | +x, | +
+ | + | typename genType::value_type const & | +y | +
+ | ) | ++ |
Modulus.
+Returns x - y * floor(x / y) for each component in x using the floating point value y.
+genType glm::core::function::common::modf | +( | +genType const & | +x, | +
+ | + | genType & | +i | +
+ | ) | ++ |
Returns the fractional part of x and sets i to the integer part (as a whole number floating point value).
+Both the return value and the output parameter will have the same sign as x.
+genType::value_type glm::core::function::noise::noise1 | +( | +genType const & | +x | ) | ++ |
Returns a 1D noise value based on the input value x.
+detail::tvec2<typename genType::value_type> glm::core::function::noise::noise2 | +( | +genType const & | +x | ) | ++ |
Returns a 2D noise value based on the input value x.
+detail::tvec3<typename genType::value_type> glm::core::function::noise::noise3 | +( | +genType const & | +x | ) | ++ |
Returns a 3D noise value based on the input value x.
+detail::tvec4<typename genType::value_type> glm::core::function::noise::noise4 | +( | +genType const & | +x | ) | ++ |
Returns a 4D noise value based on the input value x.
+genType glm::core::function::geometric::normalize | +( | +genType const & | +x | ) | ++ |
Returns a vector in the same direction as x but with length of 1.
+GLM_FUNC_QUALIFIER vecType<bool> glm::core::function::vector_relational::not_ | +( | +vecType< bool > const & | +v | ) | ++ |
Returns the component-wise logical complement of x.
+/!\ Because of language incompatibilities between C++ and GLSL, GLM defines the function not but not_ instead.
+Definition at line 193 of file func_vector_relational.hpp.
+ +GLM_FUNC_QUALIFIER vecType<T>::bool_type glm::core::function::vector_relational::notEqual | +( | +vecType< T > const & | +x, | +
+ | + | vecType< T > const & | +y | +
+ | ) | ++ |
Returns the component-wise comparison of result x != y.
+Definition at line 141 of file func_vector_relational.hpp.
+ +matType glm::core::function::matrix::outerProduct | +( | +vecType const & | +c, | +
+ | + | vecType const & | +r | +
+ | ) | ++ |
Treats the first parameter c as a column vector and the second parameter r as a row vector and does a linear algebraic matrix multiply c * r.
+double glm::core::function::packing::packDouble2x32 | +( | +detail::tvec2< detail::uint32 > const & | +v | ) | ++ |
Returns a double-precision value obtained by packing the components of v into a 64-bit value.
+If an IEEE 754 Inf or NaN is created, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit- level representation of v is preserved. The first vector component specifies the 32 least significant bits; the second component specifies the 32 most significant bits.
+detail::uint32 glm::core::function::packing::packSnorm4x8 | +( | +detail::tvec4< detail::float32 > const & | +v | ) | ++ |
First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.
+Then, the results are packed into the returned 32-bit unsigned integer.
+The conversion for component c of v to fixed point is done as follows: packSnorm4x8: round(clamp(c, -1, +1) * 127.0)
+The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.
+detail::uint32 glm::core::function::packing::packUnorm2x16 | +( | +detail::tvec2< detail::float32 > const & | +v | ) | ++ |
First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.
+Then, the results are packed into the returned 32-bit unsigned integer.
+The conversion for component c of v to fixed point is done as follows: packUnorm2x16: round(clamp(c, 0, +1) * 65535.0)
+The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.
+detail::uint32 glm::core::function::packing::packUnorm4x8 | +( | +detail::tvec4< detail::float32 > const & | +v | ) | ++ |
First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.
+Then, the results are packed into the returned 32-bit unsigned integer.
+The conversion for component c of v to fixed point is done as follows: packUnorm4x8: round(clamp(c, 0, +1) * 255.0)
+The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.
+genType glm::core::function::exponential::pow | +( | +genType const & | +x, | +
+ | + | genType const & | +y | +
+ | ) | ++ |
Returns x raised to the y power.
+genType glm::core::function::trigonometric::radians | +( | +genType const & | +degrees | ) | ++ |
Converts degrees to radians and returns the result.
+genType glm::core::function::geometric::reflect | +( | +genType const & | +I, | +
+ | + | genType const & | +N | +
+ | ) | ++ |
For the incident vector I and surface orientation N, returns the reflection direction : result = I - 2.0 * dot(N, I) * N.
+genType glm::core::function::geometric::refract | +( | +genType const & | +I, | +
+ | + | genType const & | +N, | +
+ | + | typename genType::value_type const & | +eta | +
+ | ) | ++ |
For the incident vector I and surface normal N, and the ratio of indices of refraction eta, return the refraction vector.
+genType glm::core::function::common::round | +( | +genType const & | +x | ) | ++ |
Returns a value equal to the nearest integer to x.
+The fraction 0.5 will round in a direction chosen by the implementation, presumably the direction that is fastest. This includes the possibility that round(x) returns the same value as roundEven(x) for all values of x.
+genType glm::core::function::common::roundEven | +( | +genType const & | +x | ) | ++ |
Returns a value equal to the nearest integer to x.
+A fractional part of 0.5 will round toward the nearest even integer. (Both 3.5 and 4.5 for x will return 4.0.)
+genFIType glm::core::function::common::sign | +( | +genFIType const & | +x | ) | ++ |
Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0.
+genType glm::core::function::trigonometric::sin | +( | +genType const & | +angle | ) | ++ |
The standard trigonometric sine function.
+The values returned by this function will range from [-1, 1].
+genType glm::core::function::trigonometric::sinh | +( | +genType const & | +angle | ) | ++ |
Returns the hyperbolic sine function, (exp(x) - exp(-x)) / 2.
+genType glm::core::function::common::smoothstep | +( | +genType const & | +edge0, | +
+ | + | genType const & | +edge1, | +
+ | + | genType const & | +x | +
+ | ) | ++ |
Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and performs smooth Hermite interpolation between 0 and 1 when edge0 < x < edge1.
+This is useful in cases where you would want a threshold function with a smooth transition. This is equivalent to: genType t; t = clamp ((x – edge0) / (edge1 – edge0), 0, 1); return t * t * (3 – 2 * t); Results are undefined if edge0 >= edge1.
+genType glm::core::function::exponential::sqrt | +( | +genType const & | +x | ) | ++ |
Returns the positive square root of x.
+genType glm::core::function::common::step | +( | +genType const & | +edge, | +
+ | + | genType const & | +x | +
+ | ) | ++ |
Returns 0.0 if x < edge, otherwise it returns 1.0.
+genType glm::core::function::trigonometric::tan | +( | +genType const & | +angle | ) | ++ |
The standard trigonometric tangent function.
+genType glm::core::function::trigonometric::tanh | +( | +genType const & | +angle | ) | ++ |
Returns the hyperbolic tangent function, sinh(angle) / cosh(angle)
+matType::transpose_type glm::core::function::matrix::transpose | +( | +matType const & | +x | ) | ++ |
Returns the transposed matrix of x.
+genType glm::core::function::common::trunc | +( | +genType const & | +x | ) | ++ |
Returns a value equal to the nearest integer to x whose absolute value is not larger than the absolute value of x.
+genUType glm::core::function::integer::uaddCarry | +( | +genUType const & | +x, | +
+ | + | genUType const & | +y, | +
+ | + | genUType & | +carry | +
+ | ) | ++ |
Adds 32-bit unsigned integer x and y, returning the sum modulo pow(2, 32).
+The value carry is set to 0 if the sum was less than pow(2, 32), or to 1 otherwise.
+genType glm::core::function::common::uintBitsToFloat | +( | +genUType const & | +value | ) | ++ |
Returns a floating-point value corresponding to a unsigned integer encoding of a floating-point value.
+If an inf or NaN is passed in, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit-level representation is preserved.
+void glm::core::function::integer::umulExtended | +( | +genUType const & | +x, | +
+ | + | genUType const & | +y, | +
+ | + | genUType & | +msb, | +
+ | + | genUType & | +lsb | +
+ | ) | ++ |
Multiplies 32-bit integers x and y, producing a 64-bit result.
+The 32 least-significant bits are returned in lsb. The 32 most-significant bits are returned in msb.
+detail::tvec2<detail::uint32> glm::core::function::packing::unpackDouble2x32 | +( | +double const & | +v | ) | ++ |
Returns a two-component unsigned integer vector representation of v.
+The bit-level representation of v is preserved. The first component of the vector contains the 32 least significant bits of the double; the second component consists the 32 most significant bits.
+detail::tvec4<detail::float32> glm::core::function::packing::unpackSnorm4x8 | +( | +detail::uint32 const & | +p | ) | ++ |
First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.
+Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.
+The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm4x8: clamp(f / 127.0, -1, +1)
+The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.
+detail::tvec2<detail::float32> glm::core::function::packing::unpackUnorm2x16 | +( | +detail::uint32 const & | +p | ) | ++ |
First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.
+Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.
+The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm2x16: f / 65535.0
+The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.
+detail::tvec4<detail::float32> glm::core::function::packing::unpackUnorm4x8 | +( | +detail::uint32 const & | +p | ) | ++ |
First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.
+Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.
+The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm4x8: f / 255.0
+The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.
+genUType glm::core::function::integer::usubBorrow | +( | +genUType const & | +x, | +
+ | + | genUType const & | +y, | +
+ | + | genUType & | +borrow | +
+ | ) | ++ |
Subtracts the 32-bit unsigned integer y from x, returning the difference if non-negative, or pow(2, 32) plus the difference otherwise.
+The value borrow is set to 0 if x >= y, or to 1 otherwise.
++ |
Functions and types that the GLSL specification doesn't define, but useful to have for a C++ program. +More...
+Functions and types that the GLSL specification doesn't define, but useful to have for a C++ program.
+GTC extensions aim to be stable.
+Even if it's highly unrecommended, it's possible to include all the extensions at once by including <glm/ext.hpp>. Otherwise, each extension needs to be included a specific file.
++ |
+Classes | |
class | thalf |
16-bit floating point type. More... | |
+Typedefs | |
typedef detail::thalf | half |
typedef detail::tmat2x2 +< detail::thalf > | hmat2 |
typedef detail::tmat2x2 +< detail::thalf > | hmat2x2 |
typedef detail::tmat2x3 +< detail::thalf > | hmat2x3 |
typedef detail::tmat2x4 +< detail::thalf > | hmat2x4 |
typedef detail::tmat3x3 +< detail::thalf > | hmat3 |
typedef detail::tmat3x2 +< detail::thalf > | hmat3x2 |
typedef detail::tmat3x3 +< detail::thalf > | hmat3x3 |
typedef detail::tmat3x4 +< detail::thalf > | hmat3x4 |
typedef detail::tmat4x4 +< detail::thalf > | hmat4 |
typedef detail::tmat4x2 +< detail::thalf > | hmat4x2 |
typedef detail::tmat4x3 +< detail::thalf > | hmat4x3 |
typedef detail::tmat4x4 +< detail::thalf > | hmat4x4 |
typedef detail::tvec2 +< detail::thalf > | hvec2 |
typedef detail::tvec3 +< detail::thalf > | hvec3 |
typedef detail::tvec4 +< detail::thalf > | hvec4 |
Defines the half-precision floating-point type, along with various typedefs for vectors and matrices. <glm/gtc/half_float.hpp> need to be included to use these functionalities.
+typedef detail::thalf half | +
Type for half-precision floating-point numbers.
+From GLM_GTC_half_float extension.
+ +Definition at line 332 of file half_float.hpp.
+ +typedef detail::tmat2x2<detail::thalf> hmat2 | +
2 * 2 matrix of half-precision floating-point numbers.
+From GLM_GTC_half_float extension.
+ +Definition at line 348 of file half_float.hpp.
+ +typedef detail::tmat2x2<detail::thalf> hmat2x2 | +
2 * 2 matrix of half-precision floating-point numbers.
+From GLM_GTC_half_float extension.
+ +Definition at line 360 of file half_float.hpp.
+ +typedef detail::tmat2x3<detail::thalf> hmat2x3 | +
2 * 3 matrix of half-precision floating-point numbers.
+From GLM_GTC_half_float extension.
+ +Definition at line 364 of file half_float.hpp.
+ +typedef detail::tmat2x4<detail::thalf> hmat2x4 | +
2 * 4 matrix of half-precision floating-point numbers.
+From GLM_GTC_half_float extension.
+ +Definition at line 368 of file half_float.hpp.
+ +typedef detail::tmat3x3<detail::thalf> hmat3 | +
3 * 3 matrix of half-precision floating-point numbers.
+From GLM_GTC_half_float extension.
+ +Definition at line 352 of file half_float.hpp.
+ +typedef detail::tmat3x2<detail::thalf> hmat3x2 | +
3 * 2 matrix of half-precision floating-point numbers.
+From GLM_GTC_half_float extension.
+ +Definition at line 372 of file half_float.hpp.
+ +typedef detail::tmat3x3<detail::thalf> hmat3x3 | +
3 * 3 matrix of half-precision floating-point numbers.
+From GLM_GTC_half_float extension.
+ +Definition at line 376 of file half_float.hpp.
+ +typedef detail::tmat3x4<detail::thalf> hmat3x4 | +
3 * 4 matrix of half-precision floating-point numbers.
+From GLM_GTC_half_float extension.
+ +Definition at line 380 of file half_float.hpp.
+ +typedef detail::tmat4x4<detail::thalf> hmat4 | +
4 * 4 matrix of half-precision floating-point numbers.
+From GLM_GTC_half_float extension.
+ +Definition at line 356 of file half_float.hpp.
+ +typedef detail::tmat4x2<detail::thalf> hmat4x2 | +
4 * 2 matrix of half-precision floating-point numbers.
+From GLM_GTC_half_float extension.
+ +Definition at line 384 of file half_float.hpp.
+ +typedef detail::tmat4x3<detail::thalf> hmat4x3 | +
4 * 3 matrix of half-precision floating-point numbers.
+From GLM_GTC_half_float extension.
+ +Definition at line 388 of file half_float.hpp.
+ +typedef detail::tmat4x4<detail::thalf> hmat4x4 | +
4 * 4 matrix of half-precision floating-point numbers.
+From GLM_GTC_half_float extension.
+ +Definition at line 392 of file half_float.hpp.
+ +typedef detail::tvec2<detail::thalf> hvec2 | +
Vector of 2 half-precision floating-point numbers.
+From GLM_GTC_half_float extension.
+ +Definition at line 336 of file half_float.hpp.
+ +typedef detail::tvec3<detail::thalf> hvec3 | +
Vector of 3 half-precision floating-point numbers.
+From GLM_GTC_half_float extension.
+ +Definition at line 340 of file half_float.hpp.
+ +typedef detail::tvec4<detail::thalf> hvec4 | +
Vector of 4 half-precision floating-point numbers.
+From GLM_GTC_half_float extension.
+ +Definition at line 344 of file half_float.hpp.
+ ++ |
+Functions | |
template<typename genType > | |
genType::col_type | column (genType const &m, int index) |
template<typename genType > | |
genType | column (genType const &m, int index, typename genType::col_type const &x) |
template<typename genType > | |
genType::row_type | row (genType const &m, int index) |
template<typename genType > | |
genType | row (genType const &m, int index, typename genType::row_type const &x) |
Defines functions to access rows or columns of a matrix easily. <glm/gtc/matrix_access.hpp> need to be included to use these functionalities.
+genType::col_type glm::gtc::matrix_access::column | +( | +genType const & | +m, | +
+ | + | int | +index | +
+ | ) | ++ |
Get a specific column of a matrix.
+From GLM_GTC_matrix_access extension.
+ +genType glm::gtc::matrix_access::column | +( | +genType const & | +m, | +
+ | + | int | +index, | +
+ | + | typename genType::col_type const & | +x | +
+ | ) | ++ |
Set a specific column to a matrix.
+From GLM_GTC_matrix_access extension.
+ +genType::row_type glm::gtc::matrix_access::row | +( | +genType const & | +m, | +
+ | + | int | +index | +
+ | ) | ++ |
Get a specific row of a matrix.
+From GLM_GTC_matrix_access extension.
+ +genType glm::gtc::matrix_access::row | +( | +genType const & | +m, | +
+ | + | int | +index, | +
+ | + | typename genType::row_type const & | +x | +
+ | ) | ++ |
Set a specific row to a matrix.
+From GLM_GTC_matrix_access extension.
+ ++ |
+Typedefs | |
+typedef detail::tmat2x2 +< highp_int > | highp_imat2 |
+typedef detail::tmat2x2 +< highp_int > | highp_imat2x2 |
+typedef detail::tmat2x3 +< highp_int > | highp_imat2x3 |
+typedef detail::tmat2x4 +< highp_int > | highp_imat2x4 |
+typedef detail::tmat3x3 +< highp_int > | highp_imat3 |
+typedef detail::tmat3x2 +< highp_int > | highp_imat3x2 |
+typedef detail::tmat3x3 +< highp_int > | highp_imat3x3 |
+typedef detail::tmat3x4 +< highp_int > | highp_imat3x4 |
+typedef detail::tmat4x4 +< highp_int > | highp_imat4 |
+typedef detail::tmat4x2 +< highp_int > | highp_imat4x2 |
+typedef detail::tmat4x3 +< highp_int > | highp_imat4x3 |
+typedef detail::tmat4x4 +< highp_int > | highp_imat4x4 |
+typedef detail::tmat2x2 +< highp_uint > | highp_umat2 |
+typedef detail::tmat2x2 +< highp_uint > | highp_umat2x2 |
+typedef detail::tmat2x3 +< highp_uint > | highp_umat2x3 |
+typedef detail::tmat2x4 +< highp_uint > | highp_umat2x4 |
+typedef detail::tmat3x3 +< highp_uint > | highp_umat3 |
+typedef detail::tmat3x2 +< highp_uint > | highp_umat3x2 |
+typedef detail::tmat3x3 +< highp_uint > | highp_umat3x3 |
+typedef detail::tmat3x4 +< highp_uint > | highp_umat3x4 |
+typedef detail::tmat4x4 +< highp_uint > | highp_umat4 |
+typedef detail::tmat4x2 +< highp_uint > | highp_umat4x2 |
+typedef detail::tmat4x3 +< highp_uint > | highp_umat4x3 |
+typedef detail::tmat4x4 +< highp_uint > | highp_umat4x4 |
+typedef mediump_imat2 | imat2 |
+typedef mediump_imat2x2 | imat2x2 |
+typedef mediump_imat2x3 | imat2x3 |
+typedef mediump_imat2x4 | imat2x4 |
+typedef mediump_imat3 | imat3 |
+typedef mediump_imat3x2 | imat3x2 |
+typedef mediump_imat3x3 | imat3x3 |
+typedef mediump_imat3x4 | imat3x4 |
+typedef mediump_imat4 | imat4 |
+typedef mediump_imat4x2 | imat4x2 |
+typedef mediump_imat4x3 | imat4x3 |
+typedef mediump_imat4x4 | imat4x4 |
+typedef detail::tmat2x2< lowp_int > | lowp_imat2 |
+typedef detail::tmat2x2< lowp_int > | lowp_imat2x2 |
+typedef detail::tmat2x3< lowp_int > | lowp_imat2x3 |
+typedef detail::tmat2x4< lowp_int > | lowp_imat2x4 |
+typedef detail::tmat3x3< lowp_int > | lowp_imat3 |
+typedef detail::tmat3x2< lowp_int > | lowp_imat3x2 |
+typedef detail::tmat3x3< lowp_int > | lowp_imat3x3 |
+typedef detail::tmat3x4< lowp_int > | lowp_imat3x4 |
+typedef detail::tmat4x4< lowp_int > | lowp_imat4 |
+typedef detail::tmat4x2< lowp_int > | lowp_imat4x2 |
+typedef detail::tmat4x3< lowp_int > | lowp_imat4x3 |
+typedef detail::tmat4x4< lowp_int > | lowp_imat4x4 |
+typedef detail::tmat2x2 +< lowp_uint > | lowp_umat2 |
+typedef detail::tmat2x2 +< lowp_uint > | lowp_umat2x2 |
+typedef detail::tmat2x3 +< lowp_uint > | lowp_umat2x3 |
+typedef detail::tmat2x4 +< lowp_uint > | lowp_umat2x4 |
+typedef detail::tmat3x3 +< lowp_uint > | lowp_umat3 |
+typedef detail::tmat3x2 +< lowp_uint > | lowp_umat3x2 |
+typedef detail::tmat3x3 +< lowp_uint > | lowp_umat3x3 |
+typedef detail::tmat3x4 +< lowp_uint > | lowp_umat3x4 |
+typedef detail::tmat4x4 +< lowp_uint > | lowp_umat4 |
+typedef detail::tmat4x2 +< lowp_uint > | lowp_umat4x2 |
+typedef detail::tmat4x3 +< lowp_uint > | lowp_umat4x3 |
+typedef detail::tmat4x4 +< lowp_uint > | lowp_umat4x4 |
+typedef detail::tmat2x2 +< mediump_int > | mediump_imat2 |
+typedef detail::tmat2x2 +< mediump_int > | mediump_imat2x2 |
+typedef detail::tmat2x3 +< mediump_int > | mediump_imat2x3 |
+typedef detail::tmat2x4 +< mediump_int > | mediump_imat2x4 |
+typedef detail::tmat3x3 +< mediump_int > | mediump_imat3 |
+typedef detail::tmat3x2 +< mediump_int > | mediump_imat3x2 |
+typedef detail::tmat3x3 +< mediump_int > | mediump_imat3x3 |
+typedef detail::tmat3x4 +< mediump_int > | mediump_imat3x4 |
+typedef detail::tmat4x4 +< mediump_int > | mediump_imat4 |
+typedef detail::tmat4x2 +< mediump_int > | mediump_imat4x2 |
+typedef detail::tmat4x3 +< mediump_int > | mediump_imat4x3 |
+typedef detail::tmat4x4 +< mediump_int > | mediump_imat4x4 |
+typedef detail::tmat2x2 +< mediump_uint > | mediump_umat2 |
+typedef detail::tmat2x2 +< mediump_uint > | mediump_umat2x2 |
+typedef detail::tmat2x3 +< mediump_uint > | mediump_umat2x3 |
+typedef detail::tmat2x4 +< mediump_uint > | mediump_umat2x4 |
+typedef detail::tmat3x3 +< mediump_uint > | mediump_umat3 |
+typedef detail::tmat3x2 +< mediump_uint > | mediump_umat3x2 |
+typedef detail::tmat3x3 +< mediump_uint > | mediump_umat3x3 |
+typedef detail::tmat3x4 +< mediump_uint > | mediump_umat3x4 |
+typedef detail::tmat4x4 +< mediump_uint > | mediump_umat4 |
+typedef detail::tmat4x2 +< mediump_uint > | mediump_umat4x2 |
+typedef detail::tmat4x3 +< mediump_uint > | mediump_umat4x3 |
+typedef detail::tmat4x4 +< mediump_uint > | mediump_umat4x4 |
+typedef mediump_umat2 | umat2 |
+typedef mediump_umat2x2 | umat2x2 |
+typedef mediump_umat2x3 | umat2x3 |
+typedef mediump_umat2x4 | umat2x4 |
+typedef mediump_umat3 | umat3 |
+typedef mediump_umat3x2 | umat3x2 |
+typedef mediump_umat3x3 | umat3x3 |
+typedef mediump_umat3x4 | umat3x4 |
+typedef mediump_umat4 | umat4 |
+typedef mediump_umat4x2 | umat4x2 |
+typedef mediump_umat4x3 | umat4x3 |
+typedef mediump_umat4x4 | umat4x4 |
Defines a number of matrices with integer types. <glm/gtc/matrix_integer.hpp> need to be included to use these functionalities.
++ |
+Functions | |
template<typename genType > | |
genType | affineInverse (genType const &m) |
template<typename genType > | |
GLM_FUNC_QUALIFIER +genType::value_type | inverseTranspose (genType const &m) |
Defines additional matrix inverting functions. <glm/gtc/matrix_inverse.hpp> need to be included to use these functionalities.
+genType glm::gtc::matrix_inverse::affineInverse | +( | +genType const & | +m | ) | ++ |
Fast matrix inverse for affine matrix.
+From GLM_GTC_matrix_inverse extension.
+ +GLM_FUNC_QUALIFIER genType::value_type glm::gtc::matrix_inverse::inverseTranspose | +( | +genType const & | +m | ) | ++ |
Compute the inverse transpose of a matrix.
+From GLM_GTC_matrix_inverse extension.
+ ++ |
Defines functions that generate common transformation matrices. +More...
++Functions | |
template<typename T > | |
detail::tmat4x4< T > | frustum (T const &left, T const &right, T const &bottom, T const &top, T const &nearVal, T const &farVal) |
template<typename T > | |
detail::tmat4x4< T > | infinitePerspective (T fovy, T aspect, T zNear) |
template<typename T > | |
detail::tmat4x4< T > | lookAt (detail::tvec3< T > const &eye, detail::tvec3< T > const ¢er, detail::tvec3< T > const &up) |
template<typename T > | |
detail::tmat4x4< T > | ortho (T const &left, T const &right, T const &bottom, T const &top) |
template<typename T > | |
detail::tmat4x4< T > | ortho (T const &left, T const &right, T const &bottom, T const &top, T const &zNear, T const &zFar) |
template<typename T > | |
detail::tmat4x4< T > | perspective (T const &fovy, T const &aspect, T const &zNear, T const &zFar) |
template<typename valType > | |
detail::tmat4x4< valType > | perspectiveFov (valType const &fov, valType const &width, valType const &height, valType const &zNear, valType const &zFar) |
template<typename T , typename U > | |
detail::tmat4x4< T > | pickMatrix (detail::tvec2< T > const ¢er, detail::tvec2< T > const &delta, detail::tvec4< U > const &viewport) |
template<typename T , typename U > | |
detail::tvec3< T > | project (detail::tvec3< T > const &obj, detail::tmat4x4< T > const &model, detail::tmat4x4< T > const &proj, detail::tvec4< U > const &viewport) |
template<typename T > | |
detail::tmat4x4< T > | rotate (detail::tmat4x4< T > const &m, T const &angle, detail::tvec3< T > const &v) |
template<typename T > | |
detail::tmat4x4< T > | scale (detail::tmat4x4< T > const &m, detail::tvec3< T > const &v) |
template<typename T > | |
detail::tmat4x4< T > | translate (detail::tmat4x4< T > const &m, detail::tvec3< T > const &v) |
template<typename T > | |
detail::tmat4x4< T > | tweakedInfinitePerspective (T fovy, T aspect, T zNear) |
template<typename T , typename U > | |
detail::tvec3< T > | unProject (detail::tvec3< T > const &win, detail::tmat4x4< T > const &model, detail::tmat4x4< T > const &proj, detail::tvec4< U > const &viewport) |
Defines functions that generate common transformation matrices.
+The matrices generated by this extension use standard OpenGL fixed-function conventions. For example, the lookAt function generates a transform from world space into the specific eye space that the projective matrix functions ( perspective, ortho, etc) are designed to expect. The OpenGL compatibility specifications defines the particular layout of this eye space.
+<glm/gtc/matrix_transform.hpp> need to be included to use these functionalities.
+detail::tmat4x4<T> glm::gtc::matrix_transform::frustum | +( | +T const & | +left, | +
+ | + | T const & | +right, | +
+ | + | T const & | +bottom, | +
+ | + | T const & | +top, | +
+ | + | T const & | +nearVal, | +
+ | + | T const & | +farVal | +
+ | ) | ++ |
Creates a frustum matrix.
+From GLM_GTC_matrix_transform extension.
+ +detail::tmat4x4<T> glm::gtc::matrix_transform::infinitePerspective | +( | +T | +fovy, | +
+ | + | T | +aspect, | +
+ | + | T | +zNear | +
+ | ) | ++ |
Creates a matrix for a symmetric perspective-view frustum with far plane at infinite .
+From GLM_GTC_matrix_transform extension.
+ +detail::tmat4x4<T> glm::gtc::matrix_transform::lookAt | +( | +detail::tvec3< T > const & | +eye, | +
+ | + | detail::tvec3< T > const & | +center, | +
+ | + | detail::tvec3< T > const & | +up | +
+ | ) | ++ |
Build a look at view matrix.
+From GLM_GTC_matrix_transform extension.
+ +detail::tmat4x4<T> glm::gtc::matrix_transform::ortho | +( | +T const & | +left, | +
+ | + | T const & | +right, | +
+ | + | T const & | +bottom, | +
+ | + | T const & | +top | +
+ | ) | ++ |
Creates a matrix for projecting two-dimensional coordinates onto the screen.
+From GLM_GTC_matrix_transform extension.
+ +detail::tmat4x4<T> glm::gtc::matrix_transform::ortho | +( | +T const & | +left, | +
+ | + | T const & | +right, | +
+ | + | T const & | +bottom, | +
+ | + | T const & | +top, | +
+ | + | T const & | +zNear, | +
+ | + | T const & | +zFar | +
+ | ) | ++ |
Creates a matrix for an orthographic parallel viewing volume.
+From GLM_GTC_matrix_transform extension.
+ +detail::tmat4x4<T> glm::gtc::matrix_transform::perspective | +( | +T const & | +fovy, | +
+ | + | T const & | +aspect, | +
+ | + | T const & | +zNear, | +
+ | + | T const & | +zFar | +
+ | ) | ++ |
Creates a matrix for a symetric perspective-view frustum.
+From GLM_GTC_matrix_transform extension.
+ +detail::tmat4x4<valType> glm::gtc::matrix_transform::perspectiveFov | +( | +valType const & | +fov, | +
+ | + | valType const & | +width, | +
+ | + | valType const & | +height, | +
+ | + | valType const & | +zNear, | +
+ | + | valType const & | +zFar | +
+ | ) | ++ |
Builds a perspective projection matrix based on a field of view From GLM_GTC_matrix_transform extension.
+ +detail::tmat4x4<T> glm::gtc::matrix_transform::pickMatrix | +( | +detail::tvec2< T > const & | +center, | +
+ | + | detail::tvec2< T > const & | +delta, | +
+ | + | detail::tvec4< U > const & | +viewport | +
+ | ) | ++ |
Define a picking region From GLM_GTC_matrix_transform extension.
+ +detail::tvec3<T> glm::gtc::matrix_transform::project | +( | +detail::tvec3< T > const & | +obj, | +
+ | + | detail::tmat4x4< T > const & | +model, | +
+ | + | detail::tmat4x4< T > const & | +proj, | +
+ | + | detail::tvec4< U > const & | +viewport | +
+ | ) | ++ |
Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates.
+From GLM_GTC_matrix_transform extension.
+ +detail::tmat4x4<T> glm::gtc::matrix_transform::rotate | +( | +detail::tmat4x4< T > const & | +m, | +
+ | + | T const & | +angle, | +
+ | + | detail::tvec3< T > const & | +v | +
+ | ) | ++ |
Builds a rotation 4 * 4 matrix created from an axis vector and an angle expressed in degrees.
+From GLM_GTC_matrix_transform extension.
+ +detail::tmat4x4<T> glm::gtc::matrix_transform::scale | +( | +detail::tmat4x4< T > const & | +m, | +
+ | + | detail::tvec3< T > const & | +v | +
+ | ) | ++ |
Builds a scale 4 * 4 matrix created from 3 scalars.
+From GLM_GTC_matrix_transform extension.
+ +detail::tmat4x4<T> glm::gtc::matrix_transform::translate | +( | +detail::tmat4x4< T > const & | +m, | +
+ | + | detail::tvec3< T > const & | +v | +
+ | ) | ++ |
Builds a translation 4 * 4 matrix created from a vector of 3 components.
+From GLM_GTC_matrix_transform extension.
+ +detail::tmat4x4<T> glm::gtc::matrix_transform::tweakedInfinitePerspective | +( | +T | +fovy, | +
+ | + | T | +aspect, | +
+ | + | T | +zNear | +
+ | ) | ++ |
Creates a matrix for a symmetric perspective-view frustum with far plane at infinite for graphics hardware that doesn't support depth clamping.
+From GLM_GTC_matrix_transform extension.
+ +detail::tvec3<T> glm::gtc::matrix_transform::unProject | +( | +detail::tvec3< T > const & | +win, | +
+ | + | detail::tmat4x4< T > const & | +model, | +
+ | + | detail::tmat4x4< T > const & | +proj, | +
+ | + | detail::tvec4< U > const & | +viewport | +
+ | ) | ++ |
Map the specified window coordinates (win.x, win.y, win.z) into object coordinates.
+From GLM_GTC_matrix_transform extension.
+ ++ |
Defines a templated quaternion type and several quaternion operations. +More...
++Classes | |
struct | tquat< T > |
Template for quaternion. More... | |
+Typedefs | |
typedef detail::tquat< double > | dquat |
typedef detail::tquat< float > | fquat |
typedef detail::tquat +< highp_float > | highp_quat |
typedef detail::tquat +< detail::thalf > | hquat |
typedef detail::tquat< lowp_float > | lowp_quat |
typedef detail::tquat +< mediump_float > | mediump_quat |
typedef detail::tquat< float > | quat |
+Functions | |
template<typename T > | |
detail::tquat< T > | conjugate (detail::tquat< T > const &q) |
template<typename T > | |
GLM_DEPRECATED detail::tquat< T > | cross (detail::tquat< T > const &q1, detail::tquat< T > const &q2) |
template<typename T > | |
detail::tquat< T >::value_type | dot (detail::tquat< T > const &q1, detail::tquat< T > const &q2) |
template<typename T > | |
detail::tquat< T > | inverse (detail::tquat< T > const &q) |
template<typename T > | |
detail::tquat< T >::value_type | length (detail::tquat< T > const &q) |
template<typename T > | |
detail::tmat3x3< T > | mat3_cast (detail::tquat< T > const &x) |
template<typename T > | |
detail::tmat4x4< T > | mat4_cast (detail::tquat< T > const &x) |
template<typename T > | |
detail::tquat< T > | mix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a) |
template<typename T > | |
detail::tquat< T > | normalize (detail::tquat< T > const &q) |
template<typename T > | |
detail::tquat< T > | quat_cast (detail::tmat4x4< T > const &x) |
template<typename T > | |
detail::tquat< T > | quat_cast (detail::tmat3x3< T > const &x) |
template<typename T > | |
detail::tquat< T > | rotate (detail::tquat< T > const &q, typename detail::tquat< T >::value_type const &angle, detail::tvec3< T > const &v) |
Defines a templated quaternion type and several quaternion operations.
+<glm/gtc/quaternion.hpp> need to be included to use these functionalities.
+typedef detail::tquat<double> dquat | +
Quaternion of double-precision floating-point numbers.
+From GLM_GTC_quaternion extension.
+ +Definition at line 222 of file gtc/quaternion.hpp.
+ +typedef detail::tquat<float> fquat | +
Quaternion of single-precision floating-point numbers.
+From GLM_GTC_quaternion extension.
+ +Definition at line 218 of file gtc/quaternion.hpp.
+ +typedef detail::tquat<highp_float> highp_quat | +
Quaternion of high precision floating-point numbers.
+From GLM_GTC_quaternion extension.
+ +Definition at line 234 of file gtc/quaternion.hpp.
+ +typedef detail::tquat<detail::thalf> hquat | +
Quaternion of half-precision floating-point numbers.
+From GLM_GTC_quaternion extension.
+ +Definition at line 214 of file gtc/quaternion.hpp.
+ +typedef detail::tquat<lowp_float> lowp_quat | +
Quaternion of low precision floating-point numbers.
+From GLM_GTC_quaternion extension.
+ +Definition at line 226 of file gtc/quaternion.hpp.
+ +typedef detail::tquat<mediump_float> mediump_quat | +
Quaternion of medium precision floating-point numbers.
+From GLM_GTC_quaternion extension.
+ +Definition at line 230 of file gtc/quaternion.hpp.
+ +typedef detail::tquat<float> quat | +
Quaternion of floating-point numbers.
+From GLM_GTC_quaternion extension.
+ +Definition at line 210 of file gtc/quaternion.hpp.
+ +detail::tquat<T> glm::gtc::quaternion::conjugate | +( | +detail::tquat< T > const & | +q | ) | ++ |
Returns the q conjugate.
+From GLM_GTC_quaternion extension.
+ +GLM_DEPRECATED detail::tquat<T> glm::gtc::quaternion::cross | +( | +detail::tquat< T > const & | +q1, | +
+ | + | detail::tquat< T > const & | +q2 | +
+ | ) | ++ |
Returns the cross product of q1 and q2.
+From GLM_GTC_quaternion extension.
+ +detail::tquat<T>::value_type glm::gtc::quaternion::dot | +( | +detail::tquat< T > const & | +q1, | +
+ | + | detail::tquat< T > const & | +q2 | +
+ | ) | ++ |
Returns dot product of q1 and q2, i.e., q1[0] * q2[0] + q1[1] * q2[1] + ...
+From GLM_GTC_quaternion extension.
+ +detail::tquat<T> glm::gtc::quaternion::inverse | +( | +detail::tquat< T > const & | +q | ) | ++ |
Returns the q inverse.
+From GLM_GTC_quaternion extension.
+ +detail::tquat<T>::value_type glm::gtc::quaternion::length | +( | +detail::tquat< T > const & | +q | ) | ++ |
Returns the length of the quaternion.
+From GLM_GTC_quaternion extension.
+ +detail::tmat3x3<T> glm::gtc::quaternion::mat3_cast | +( | +detail::tquat< T > const & | +x | ) | ++ |
Converts a quaternion to a 3 * 3 matrix.
+From GLM_GTC_quaternion extension.
+ +Referenced by glm::gtx::quaternion::toMat3().
+ +detail::tmat4x4<T> glm::gtc::quaternion::mat4_cast | +( | +detail::tquat< T > const & | +x | ) | ++ |
Converts a quaternion to a 4 * 4 matrix.
+From GLM_GTC_quaternion extension.
+ +Referenced by glm::gtx::quaternion::toMat4().
+ +detail::tquat<T> glm::gtc::quaternion::mix | +( | +detail::tquat< T > const & | +x, | +
+ | + | detail::tquat< T > const & | +y, | +
+ | + | T const & | +a | +
+ | ) | ++ |
Returns a SLERP interpolated quaternion of x and y according a.
+From GLM_GTC_quaternion extension.
+ +detail::tquat<T> glm::gtc::quaternion::normalize | +( | +detail::tquat< T > const & | +q | ) | ++ |
Returns the normalized quaternion.
+From GLM_GTC_quaternion extension.
+ +detail::tquat<T> glm::gtc::quaternion::quat_cast | +( | +detail::tmat4x4< T > const & | +x | ) | ++ |
Converts a 4 * 4 matrix to a quaternion.
+From GLM_GTC_quaternion extension.
+ +detail::tquat<T> glm::gtc::quaternion::quat_cast | +( | +detail::tmat3x3< T > const & | +x | ) | ++ |
Converts a 3 * 3 matrix to a quaternion.
+From GLM_GTC_quaternion extension.
+ +Referenced by glm::gtx::quaternion::toQuat().
+ +detail::tquat<T> glm::gtc::quaternion::rotate | +( | +detail::tquat< T > const & | +q, | +
+ | + | typename detail::tquat< T >::value_type const & | +angle, | +
+ | + | detail::tvec3< T > const & | +v | +
+ | ) | ++ |
Rotates a quaternion from an vector of 3 components axis and an angle expressed in degrees.
+From GLM_GTC_quaternion extension.
+ ++ |
Defines specific C++-based precision types. +More...
++Typedefs | |
+typedef float16 | f16 |
+typedef detail::tmat2x2< f16 > | f16mat2 |
+typedef detail::tmat2x2< f16 > | f16mat2x2 |
+typedef detail::tmat2x3< f16 > | f16mat2x3 |
+typedef detail::tmat2x4< f16 > | f16mat2x4 |
+typedef detail::tmat3x3< f16 > | f16mat3 |
+typedef detail::tmat3x2< f16 > | f16mat3x2 |
+typedef detail::tmat3x3< f16 > | f16mat3x3 |
+typedef detail::tmat3x4< f16 > | f16mat3x4 |
+typedef detail::tmat4x4< f16 > | f16mat4 |
+typedef detail::tmat4x2< f16 > | f16mat4x2 |
+typedef detail::tmat4x3< f16 > | f16mat4x3 |
+typedef detail::tmat4x4< f16 > | f16mat4x4 |
+typedef detail::tquat< f16 > | f16quat |
+typedef detail::tvec2< f16 > | f16vec2 |
+typedef detail::tvec3< f16 > | f16vec3 |
+typedef detail::tvec4< f16 > | f16vec4 |
+typedef float32 | f32 |
+typedef detail::tmat2x2< f32 > | f32mat2 |
+typedef detail::tmat2x2< f32 > | f32mat2x2 |
+typedef detail::tmat2x3< f32 > | f32mat2x3 |
+typedef detail::tmat2x4< f32 > | f32mat2x4 |
+typedef detail::tmat3x3< f32 > | f32mat3 |
+typedef detail::tmat3x2< f32 > | f32mat3x2 |
+typedef detail::tmat3x3< f32 > | f32mat3x3 |
+typedef detail::tmat3x4< f32 > | f32mat3x4 |
+typedef detail::tmat4x4< f32 > | f32mat4 |
+typedef detail::tmat4x2< f32 > | f32mat4x2 |
+typedef detail::tmat4x3< f32 > | f32mat4x3 |
+typedef detail::tmat4x4< f32 > | f32mat4x4 |
+typedef detail::tquat< f32 > | f32quat |
+typedef detail::tvec2< f32 > | f32vec2 |
+typedef detail::tvec3< f32 > | f32vec3 |
+typedef detail::tvec4< f32 > | f32vec4 |
+typedef float64 | f64 |
+typedef detail::tmat2x2< f64 > | f64mat2 |
+typedef detail::tmat2x2< f64 > | f64mat2x2 |
+typedef detail::tmat2x3< f64 > | f64mat2x3 |
+typedef detail::tmat2x4< f64 > | f64mat2x4 |
+typedef detail::tmat3x3< f64 > | f64mat3 |
+typedef detail::tmat3x2< f64 > | f64mat3x2 |
+typedef detail::tmat3x3< f64 > | f64mat3x3 |
+typedef detail::tmat3x4< f64 > | f64mat3x4 |
+typedef detail::tmat4x4< f64 > | f64mat4 |
+typedef detail::tmat4x2< f64 > | f64mat4x2 |
+typedef detail::tmat4x3< f64 > | f64mat4x3 |
+typedef detail::tmat4x4< f64 > | f64mat4x4 |
+typedef detail::tquat< f64 > | f64quat |
+typedef detail::tvec2< f64 > | f64vec2 |
+typedef detail::tvec3< f64 > | f64vec3 |
+typedef detail::tvec4< f64 > | f64vec4 |
+typedef detail::float16 | float16 |
+typedef detail::float32 | float32 |
+typedef detail::float64 | float64 |
+typedef detail::tmat2x2< f32 > | fmat2 |
+typedef detail::tmat2x2< f32 > | fmat2x2 |
+typedef detail::tmat2x3< f32 > | fmat2x3 |
+typedef detail::tmat2x4< f32 > | fmat2x4 |
+typedef detail::tmat3x3< f32 > | fmat3 |
+typedef detail::tmat3x2< f32 > | fmat3x2 |
+typedef detail::tmat3x3< f32 > | fmat3x3 |
+typedef detail::tmat3x4< f32 > | fmat3x4 |
+typedef detail::tmat4x4< f32 > | fmat4 |
+typedef detail::tmat4x2< f32 > | fmat4x2 |
+typedef detail::tmat4x3< f32 > | fmat4x3 |
+typedef detail::tmat4x4< f32 > | fmat4x4 |
+typedef detail::tvec2< float > | fvec2 |
+typedef detail::tvec3< float > | fvec3 |
+typedef detail::tvec4< float > | fvec4 |
+typedef int16 | i16 |
+typedef detail::tvec2< i16 > | i16vec2 |
+typedef detail::tvec3< i16 > | i16vec3 |
+typedef detail::tvec4< i16 > | i16vec4 |
+typedef int32 | i32 |
+typedef detail::tvec2< i32 > | i32vec2 |
+typedef detail::tvec3< i32 > | i32vec3 |
+typedef detail::tvec4< i32 > | i32vec4 |
+typedef int64 | i64 |
+typedef detail::tvec2< i64 > | i64vec2 |
+typedef detail::tvec3< i64 > | i64vec3 |
+typedef detail::tvec4< i64 > | i64vec4 |
+typedef int8 | i8 |
+typedef detail::tvec2< i8 > | i8vec2 |
+typedef detail::tvec3< i8 > | i8vec3 |
+typedef detail::tvec4< i8 > | i8vec4 |
+typedef detail::int16 | int16 |
+typedef detail::int32 | int32 |
+typedef detail::int64 | int64 |
+typedef detail::int8 | int8 |
+typedef uint16 | u16 |
+typedef detail::tvec2< u16 > | u16vec2 |
+typedef detail::tvec3< u16 > | u16vec3 |
+typedef detail::tvec4< u16 > | u16vec4 |
+typedef uint32 | u32 |
+typedef detail::tvec2< u32 > | u32vec2 |
+typedef detail::tvec3< u32 > | u32vec3 |
+typedef detail::tvec4< u32 > | u32vec4 |
+typedef uint64 | u64 |
+typedef detail::tvec2< u64 > | u64vec2 |
+typedef detail::tvec3< u64 > | u64vec3 |
+typedef detail::tvec4< u64 > | u64vec4 |
+typedef uint8 | u8 |
+typedef detail::tvec2< u8 > | u8vec2 |
+typedef detail::tvec3< u8 > | u8vec3 |
+typedef detail::tvec4< u8 > | u8vec4 |
+typedef detail::uint16 | uint16 |
+typedef detail::uint32 | uint32 |
+typedef detail::uint64 | uint64 |
+typedef detail::uint8 | uint8 |
Defines specific C++-based precision types.
+Precision types defines types based on GLSL's precision qualifiers. This extension defines types based on explicitly-sized C++ data types.
+<glm/gtc/type_precision.hpp> need to be included to use these functionalities.
++ |
Used to get a pointer to the memory layout of a basic type. +More...
++Functions | |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat2x2< T > | make_mat2 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat2x2< T > | make_mat2x2 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat2x3< T > | make_mat2x3 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat2x4< T > | make_mat2x4 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat3x3< T > | make_mat3 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat3x2< T > | make_mat3x2 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat3x3< T > | make_mat3x3 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat3x4< T > | make_mat3x4 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat4x4< T > | make_mat4 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat4x2< T > | make_mat4x2 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat4x3< T > | make_mat4x3 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tmat4x4< T > | make_mat4x4 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec2< T > | make_vec2 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec3< T > | make_vec3 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec4< T > | make_vec4 (T const *const ptr) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tmat4x4< T > &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tmat4x3< T > &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tmat4x3< T > const &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tmat3x4< T > &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tmat3x4< T > const &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tmat4x2< T > &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tmat2x4< T > &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tmat2x4< T > const &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tmat2x2< T > &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tvec3< T > &vec) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tmat3x3< T > const &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tvec2< T > &vec) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tvec2< T > const &vec) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tvec4< T > &vec) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tmat4x4< T > const &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tmat3x3< T > &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tmat4x2< T > const &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tmat3x2< T > &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T * | value_ptr (detail::tmat2x3< T > &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tvec3< T > const &vec) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tvec4< T > const &vec) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tmat3x2< T > const &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tmat2x3< T > const &mat) |
template<typename T > | |
GLM_FUNC_QUALIFIER T const * | value_ptr (detail::tmat2x2< T > const &mat) |
Used to get a pointer to the memory layout of a basic type.
+This extension defines an overloaded function, glm::value_ptr, which takes any of the core template types. It returns a pointer to the memory layout of the object. Matrix types store their values in column-major order.
+This is useful for uploading data to matrices or copying data to buffer objects.
+Example:
+#include <glm/glm.hpp> +#include <glm/gtc/type_ptr.hpp> + +glm::vec3 aVector(3); +glm::mat4 someMatrix(1.0); + +glUniform3fv(uniformLoc, 1, glm::value_ptr(aVector)); +glUniformMatrix4fv(uniformMatrixLoc, 1, GL_FALSE, glm::value_ptr(someMatrix)); +
<glm/gtc/type_ptr.hpp> need to be included to use these functionalities.
+GLM_FUNC_QUALIFIER detail::tmat2x2<T> glm::gtc::type_ptr::make_mat2 | +( | +T const *const | +ptr | ) | ++ |
Build a matrix from a pointer.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 417 of file type_ptr.hpp.
+ +References glm::gtc::type_ptr::make_mat2x2().
+ +GLM_FUNC_QUALIFIER detail::tmat2x2<T> glm::gtc::type_ptr::make_mat2x2 | +( | +T const *const | +ptr | ) | ++ |
Build a matrix from a pointer.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 326 of file type_ptr.hpp.
+ +References glm::gtc::type_ptr::value_ptr().
+ +Referenced by glm::gtc::type_ptr::make_mat2().
+ +GLM_FUNC_QUALIFIER detail::tmat2x3<T> glm::gtc::type_ptr::make_mat2x3 | +( | +T const *const | +ptr | ) | ++ |
Build a matrix from a pointer.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 336 of file type_ptr.hpp.
+ +References glm::gtc::type_ptr::value_ptr().
+ +GLM_FUNC_QUALIFIER detail::tmat2x4<T> glm::gtc::type_ptr::make_mat2x4 | +( | +T const *const | +ptr | ) | ++ |
Build a matrix from a pointer.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 346 of file type_ptr.hpp.
+ +References glm::gtc::type_ptr::value_ptr().
+ +GLM_FUNC_QUALIFIER detail::tmat3x3<T> glm::gtc::type_ptr::make_mat3 | +( | +T const *const | +ptr | ) | ++ |
Build a matrix from a pointer.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 425 of file type_ptr.hpp.
+ +References glm::gtc::type_ptr::make_mat3x3().
+ +GLM_FUNC_QUALIFIER detail::tmat3x2<T> glm::gtc::type_ptr::make_mat3x2 | +( | +T const *const | +ptr | ) | ++ |
Build a matrix from a pointer.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 356 of file type_ptr.hpp.
+ +References glm::gtc::type_ptr::value_ptr().
+ +GLM_FUNC_QUALIFIER detail::tmat3x3<T> glm::gtc::type_ptr::make_mat3x3 | +( | +T const *const | +ptr | ) | ++ |
Build a matrix from a pointer.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 366 of file type_ptr.hpp.
+ +References glm::gtc::type_ptr::value_ptr().
+ +Referenced by glm::gtc::type_ptr::make_mat3().
+ +GLM_FUNC_QUALIFIER detail::tmat3x4<T> glm::gtc::type_ptr::make_mat3x4 | +( | +T const *const | +ptr | ) | ++ |
Build a matrix from a pointer.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 376 of file type_ptr.hpp.
+ +References glm::gtc::type_ptr::value_ptr().
+ +GLM_FUNC_QUALIFIER detail::tmat4x4<T> glm::gtc::type_ptr::make_mat4 | +( | +T const *const | +ptr | ) | ++ |
Build a matrix from a pointer.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 433 of file type_ptr.hpp.
+ +References glm::gtc::type_ptr::make_mat4x4().
+ +GLM_FUNC_QUALIFIER detail::tmat4x2<T> glm::gtc::type_ptr::make_mat4x2 | +( | +T const *const | +ptr | ) | ++ |
Build a matrix from a pointer.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 387 of file type_ptr.hpp.
+ +References glm::gtc::type_ptr::value_ptr().
+ +GLM_FUNC_QUALIFIER detail::tmat4x3<T> glm::gtc::type_ptr::make_mat4x3 | +( | +T const *const | +ptr | ) | ++ |
Build a matrix from a pointer.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 397 of file type_ptr.hpp.
+ +References glm::gtc::type_ptr::value_ptr().
+ +GLM_FUNC_QUALIFIER detail::tmat4x4<T> glm::gtc::type_ptr::make_mat4x4 | +( | +T const *const | +ptr | ) | ++ |
Build a matrix from a pointer.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 407 of file type_ptr.hpp.
+ +References glm::gtc::type_ptr::value_ptr().
+ +Referenced by glm::gtc::type_ptr::make_mat4().
+ +GLM_FUNC_QUALIFIER detail::tvec2<T> glm::gtc::type_ptr::make_vec2 | +( | +T const *const | +ptr | ) | ++ |
Build a vector from a pointer.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 296 of file type_ptr.hpp.
+ +References glm::gtc::type_ptr::value_ptr().
+ +GLM_FUNC_QUALIFIER detail::tvec3<T> glm::gtc::type_ptr::make_vec3 | +( | +T const *const | +ptr | ) | ++ |
Build a vector from a pointer.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 306 of file type_ptr.hpp.
+ +References glm::gtc::type_ptr::value_ptr().
+ +GLM_FUNC_QUALIFIER detail::tvec4<T> glm::gtc::type_ptr::make_vec4 | +( | +T const *const | +ptr | ) | ++ |
Build a vector from a pointer.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 316 of file type_ptr.hpp.
+ +References glm::gtc::type_ptr::value_ptr().
+ +GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr | +( | +detail::tmat4x4< T > & | +mat | ) | ++ |
Get the address of the matrix content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 157 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr | +( | +detail::tmat4x3< T > & | +mat | ) | ++ |
Get the address of the matrix content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 288 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr | +( | +detail::tmat4x3< T > const & | +mat | ) | ++ |
Get the const address of the matrix content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 278 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr | +( | +detail::tmat3x4< T > & | +mat | ) | ++ |
Get the address of the matrix content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 267 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr | +( | +detail::tmat3x4< T > const & | +mat | ) | ++ |
Get the const address of the matrix content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 256 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr | +( | +detail::tmat4x2< T > & | +mat | ) | ++ |
Get the address of the matrix content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 245 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr | +( | +detail::tmat2x4< T > & | +mat | ) | ++ |
Get the address of the matrix content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 223 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr | +( | +detail::tmat2x4< T > const & | +mat | ) | ++ |
Get the const address of the matrix content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 212 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr | +( | +detail::tmat2x2< T > & | +mat | ) | ++ |
Get the address of the matrix content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 113 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr | +( | +detail::tvec3< T > & | +vec | ) | ++ |
Get the address of the vector content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 69 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr | +( | +detail::tmat3x3< T > const & | +mat | ) | ++ |
Get the const address of the matrix content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 124 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr | +( | +detail::tvec2< T > & | +vec | ) | ++ |
Get the address of the vector content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 47 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr | +( | +detail::tvec2< T > const & | +vec | ) | ++ |
Get the const address of the vector content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 36 of file type_ptr.hpp.
+ +Referenced by glm::gtc::type_ptr::make_mat2x2(), glm::gtc::type_ptr::make_mat2x3(), glm::gtc::type_ptr::make_mat2x4(), glm::gtc::type_ptr::make_mat3x2(), glm::gtc::type_ptr::make_mat3x3(), glm::gtc::type_ptr::make_mat3x4(), glm::gtc::type_ptr::make_mat4x2(), glm::gtc::type_ptr::make_mat4x3(), glm::gtc::type_ptr::make_mat4x4(), glm::gtc::type_ptr::make_vec2(), glm::gtc::type_ptr::make_vec3(), and glm::gtc::type_ptr::make_vec4().
+ +GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr | +( | +detail::tvec4< T > & | +vec | ) | ++ |
Get the address of the vector content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 91 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr | +( | +detail::tmat4x4< T > const & | +mat | ) | ++ |
Get the const address of the matrix content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 146 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr | +( | +detail::tmat3x3< T > & | +mat | ) | ++ |
Get the address of the matrix content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 135 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr | +( | +detail::tmat4x2< T > const & | +mat | ) | ++ |
Get the const address of the matrix content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 234 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr | +( | +detail::tmat3x2< T > & | +mat | ) | ++ |
Get the address of the matrix content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 201 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T* glm::gtc::type_ptr::value_ptr | +( | +detail::tmat2x3< T > & | +mat | ) | ++ |
Get the address of the matrix content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 179 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr | +( | +detail::tvec3< T > const & | +vec | ) | ++ |
Get the const address of the vector content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 58 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr | +( | +detail::tvec4< T > const & | +vec | ) | ++ |
Get the const address of the vector content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 80 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr | +( | +detail::tmat3x2< T > const & | +mat | ) | ++ |
Get the const address of the matrix content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 190 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr | +( | +detail::tmat2x3< T > const & | +mat | ) | ++ |
Get the const address of the matrix content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 168 of file type_ptr.hpp.
+ +GLM_FUNC_QUALIFIER T const* glm::gtc::type_ptr::value_ptr | +( | +detail::tmat2x2< T > const & | +mat | ) | ++ |
Get the const address of the matrix content.
+From GLM_GTC_type_ptr extension.
+ +Definition at line 102 of file type_ptr.hpp.
+ ++ |
Functions and types that the GLSL specification doesn't define, but useful to have for a C++ program. +More...
+Functions and types that the GLSL specification doesn't define, but useful to have for a C++ program.
+Experimental extensions are useful functions and types, but the development of their API and functionality is not necessarily stable. They can change substantially between versions. Backwards compatibility is not much of an issue for them.
+Even if it's highly unrecommended, it's possible to include all the extensions at once by including <glm/ext.hpp>. Otherwise, each extension needs to be included a specific file.
++ |
Min and max functions that return associated values not the compared onces. <glm/gtx/associated_min_max.hpp> need to be included to use these functionalities. +More...
++Functions | |
+template<typename genTypeT , typename genTypeU > | |
genTypeU | associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b) |
+template<typename genTypeT , typename genTypeU > | |
genTypeU | associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c) |
+template<typename genTypeT , typename genTypeU > | |
genTypeU | associatedMax (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c, const genTypeT &w, const genTypeU &d) |
+template<typename genTypeT , typename genTypeU > | |
genTypeU | associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c) |
+template<typename genTypeT , typename genTypeU > | |
genTypeU | associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b) |
+template<typename genTypeT , typename genTypeU > | |
genTypeU | associatedMin (const genTypeT &x, const genTypeU &a, const genTypeT &y, const genTypeU &b, const genTypeT &z, const genTypeU &c, const genTypeT &w, const genTypeU &d) |
Min and max functions that return associated values not the compared onces. <glm/gtx/associated_min_max.hpp> need to be included to use these functionalities.
++ |
Allow to perform bit operations on integer values. +More...
++Functions | |
template<typename genType > | |
genType | bitRevert (genType const &value) |
template<typename genType > | |
genType | bitRotateLeft (genType const &In, std::size_t Shift) |
template<typename genType > | |
genType | bitRotateRight (genType const &In, std::size_t Shift) |
template<typename genIUType , typename sizeType > | |
genIUType | extractField (genIUType const &v, sizeType const &first, sizeType const &count) |
template<typename genType > | |
int | highestBit (genType const &value) |
template<typename genType > | |
genType | highestBitValue (genType const &value) |
template<typename genType > | |
bool | isPowerOfTwo (genType const &value) |
template<typename genType > | |
int | lowestBit (genType const &value) |
template<typename genIType > | |
genIType | mask (genIType const &count) |
template<typename genType > | |
genType | powerOfTwoAbove (genType const &value) |
template<typename genType > | |
genType | powerOfTwoBelow (genType const &value) |
template<typename genType > | |
genType | powerOfTwoNearest (genType const &value) |
Allow to perform bit operations on integer values.
+<glm/gtx/bit.hpp> need to be included to use these functionalities.
+genType glm::gtx::bit::bitRevert | +( | +genType const & | +value | ) | ++ |
Revert all bits of any integer based type.
+From GLM_GTX_bit extension.
+ +genType glm::gtx::bit::bitRotateLeft | +( | +genType const & | +In, | +
+ | + | std::size_t | +Shift | +
+ | ) | ++ |
Rotate all bits to the left.
+From GLM_GTX_bit extension.
+ +genType glm::gtx::bit::bitRotateRight | +( | +genType const & | +In, | +
+ | + | std::size_t | +Shift | +
+ | ) | ++ |
Rotate all bits to the right.
+From GLM_GTX_bit extension.
+ +genIUType glm::gtx::bit::extractField | +( | +genIUType const & | +v, | +
+ | + | sizeType const & | +first, | +
+ | + | sizeType const & | +count | +
+ | ) | ++ |
Component wise extraction of bit fields.
+genType and genIType could be a scalar or a vector. From GLM_GTX_bit extension.
+ +int glm::gtx::bit::highestBit | +( | +genType const & | +value | ) | ++ |
Find the highest bit set to 1 in a integer variable.
+From GLM_GTX_bit extension.
+ +genType glm::gtx::bit::highestBitValue | +( | +genType const & | +value | ) | ++ |
Find the highest bit set to 1 in a integer variable and return its value.
+From GLM_GTX_bit extension.
+ +bool glm::gtx::bit::isPowerOfTwo | +( | +genType const & | +value | ) | ++ |
Return true if the value is a power of two number.
+From GLM_GTX_bit extension.
+ +int glm::gtx::bit::lowestBit | +( | +genType const & | +value | ) | ++ |
Find the lowest bit set to 1 in a integer variable.
+From GLM_GTX_bit extension.
+ +genIType glm::gtx::bit::mask | +( | +genIType const & | +count | ) | ++ |
Build a mask of 'count' bits From GLM_GTX_bit extension.
+ +genType glm::gtx::bit::powerOfTwoAbove | +( | +genType const & | +value | ) | ++ |
Return the power of two number which value is just higher the input value.
+From GLM_GTX_bit extension.
+ +genType glm::gtx::bit::powerOfTwoBelow | +( | +genType const & | +value | ) | ++ |
Return the power of two number which value is just lower the input value.
+From GLM_GTX_bit extension.
+ +genType glm::gtx::bit::powerOfTwoNearest | +( | +genType const & | +value | ) | ++ |
Return the power of two number which value is the closet to the input value.
+From GLM_GTX_bit extension.
+ ++ |
Find the point on a straight line which is the closet of a point. +More...
++Functions | |
template<typename T > | |
detail::tvec3< T > | closestPointOnLine (detail::tvec3< T > const &point, detail::tvec3< T > const &a, detail::tvec3< T > const &b) |
Find the point on a straight line which is the closet of a point.
+<glm/gtx/closest_point.hpp> need to be included to use these functionalities.
+detail::tvec3<T> glm::gtx::closest_point::closestPointOnLine | +( | +detail::tvec3< T > const & | +point, | +
+ | + | detail::tvec3< T > const & | +a, | +
+ | + | detail::tvec3< T > const & | +b | +
+ | ) | ++ |
Find the point on a straight line which is the closet of a point.
+From GLM_GTX_closest_point extension.
+ ++ |
Conversion between two color types. +More...
++Functions | |
+template<typename T > | |
gtc::type_precision::f16vec4 | f16_abgr_cast (T c) |
+template<typename T > | |
gtc::type_precision::f16vec4 | f16_argb_cast (T c) |
+template<typename T > | |
gtc::type_precision::f16vec4 | f16_bgra_cast (T c) |
+template<typename T > | |
gtc::type_precision::f16vec3 | f16_bgrx_cast (T c) |
+template<typename T > | |
gtx::number_precision::f16vec1 | f16_channel_cast (T a) |
+template<typename T > | |
gtc::type_precision::f16vec4 | f16_rgba_cast (T c) |
+template<typename T > | |
gtc::type_precision::f16vec3 | f16_rgbx_cast (T c) |
+template<typename T > | |
gtc::type_precision::f16vec3 | f16_xbgr_cast (T c) |
+template<typename T > | |
gtc::type_precision::f16vec3 | f16_xrgb_cast (T c) |
+template<typename T > | |
gtc::type_precision::f32vec4 | f32_abgr_cast (T c) |
+template<typename T > | |
gtc::type_precision::f32vec4 | f32_argb_cast (T c) |
+template<typename T > | |
gtc::type_precision::f32vec4 | f32_bgra_cast (T c) |
+template<typename T > | |
gtc::type_precision::f32vec3 | f32_bgrx_cast (T c) |
+template<typename T > | |
gtx::number_precision::f32vec1 | f32_channel_cast (T a) |
+template<typename T > | |
gtc::type_precision::f32vec4 | f32_rgba_cast (T c) |
+template<typename T > | |
gtc::type_precision::f32vec3 | f32_rgbx_cast (T c) |
+template<typename T > | |
gtc::type_precision::f32vec3 | f32_xbgr_cast (T c) |
+template<typename T > | |
gtc::type_precision::f32vec3 | f32_xrgb_cast (T c) |
+template<typename T > | |
gtc::type_precision::f64vec4 | f64_abgr_cast (T c) |
+template<typename T > | |
gtc::type_precision::f64vec4 | f64_argb_cast (T c) |
+template<typename T > | |
gtc::type_precision::f64vec4 | f64_bgra_cast (T c) |
+template<typename T > | |
gtc::type_precision::f64vec3 | f64_bgrx_cast (T c) |
+template<typename T > | |
gtx::number_precision::f64vec1 | f64_channel_cast (T a) |
+template<typename T > | |
gtc::type_precision::f64vec4 | f64_rgba_cast (T c) |
+template<typename T > | |
gtc::type_precision::f64vec3 | f64_rgbx_cast (T c) |
+template<typename T > | |
gtc::type_precision::f64vec3 | f64_xbgr_cast (T c) |
+template<typename T > | |
gtc::type_precision::f64vec3 | f64_xrgb_cast (T c) |
template<typename valType > | |
gtc::type_precision::uint16 | u16channel_cast (valType a) |
+template<typename T > | |
gtc::type_precision::uint32 | u32_abgr_cast (const detail::tvec4< T > &c) |
+template<typename T > | |
gtc::type_precision::uint32 | u32_argb_cast (const detail::tvec4< T > &c) |
+template<typename T > | |
gtc::type_precision::uint32 | u32_bgra_cast (const detail::tvec4< T > &c) |
+template<typename T > | |
gtc::type_precision::uint32 | u32_bgrx_cast (const detail::tvec3< T > &c) |
+template<typename T > | |
gtc::type_precision::uint32 | u32_rgba_cast (const detail::tvec4< T > &c) |
+template<typename T > | |
gtc::type_precision::uint32 | u32_rgbx_cast (const detail::tvec3< T > &c) |
+template<typename T > | |
gtc::type_precision::uint32 | u32_xbgr_cast (const detail::tvec3< T > &c) |
+template<typename T > | |
gtc::type_precision::uint32 | u32_xrgb_cast (const detail::tvec3< T > &c) |
+template<typename T > | |
gtc::type_precision::uint64 | u64_abgr_cast (const detail::tvec4< T > &c) |
+template<typename T > | |
gtc::type_precision::uint64 | u64_argb_cast (const detail::tvec4< T > &c) |
+template<typename T > | |
gtc::type_precision::uint64 | u64_bgra_cast (const detail::tvec4< T > &c) |
+template<typename T > | |
gtc::type_precision::uint64 | u64_bgrx_cast (const detail::tvec3< T > &c) |
+template<typename T > | |
gtc::type_precision::uint64 | u64_rgba_cast (const detail::tvec4< T > &c) |
+template<typename T > | |
gtc::type_precision::uint64 | u64_rgbx_cast (const detail::tvec3< T > &c) |
+template<typename T > | |
gtc::type_precision::uint64 | u64_xbgr_cast (const detail::tvec3< T > &c) |
+template<typename T > | |
gtc::type_precision::uint64 | u64_xrgb_cast (const detail::tvec3< T > &c) |
template<typename valType > | |
gtc::type_precision::uint8 | u8channel_cast (valType a) |
Conversion between two color types.
+<glm/gtx/color_cast.hpp> need to be included to use these functionalities.
+gtc::type_precision::uint16 glm::gtx::color_cast::u16channel_cast | +( | +valType | +a | ) | ++ |
Conversion of a floating value into a 16bit unsigned int value.
+From GLM_GTX_color_cast extension.
+ +gtc::type_precision::uint8 glm::gtx::color_cast::u8channel_cast | +( | +valType | +a | ) | ++ |
Conversion of a floating value into a 8bit unsigned int value.
+From GLM_GTX_color_cast extension.
+ ++ |
Related to RGB to HSV conversions and operations. +More...
++Functions | |
template<typename valType > | |
detail::tvec3< valType > | hsvColor (detail::tvec3< valType > const &rgbValue) |
template<typename valType > | |
valType | luminosity (detail::tvec3< valType > const &color) |
template<typename valType > | |
detail::tvec3< valType > | rgbColor (detail::tvec3< valType > const &hsvValue) |
template<typename valType > | |
detail::tvec3< valType > | saturation (valType const s, detail::tvec3< valType > const &color) |
template<typename valType > | |
detail::tmat4x4< valType > | saturation (valType const s) |
template<typename valType > | |
detail::tvec4< valType > | saturation (valType const s, detail::tvec4< valType > const &color) |
Related to RGB to HSV conversions and operations.
+<glm/gtx/color_space.hpp> need to be included to use these functionalities.
+detail::tvec3<valType> glm::gtx::color_space::hsvColor | +( | +detail::tvec3< valType > const & | +rgbValue | ) | ++ |
Converts a color from RGB color space to its color in HSV color space.
+From GLM_GTX_color_space extension.
+ +valType glm::gtx::color_space::luminosity | +( | +detail::tvec3< valType > const & | +color | ) | ++ |
Compute color luminosity associating ratios (0.33, 0.59, 0.11) to RGB canals.
+From GLM_GTX_color_space extension.
+ +detail::tvec3<valType> glm::gtx::color_space::rgbColor | +( | +detail::tvec3< valType > const & | +hsvValue | ) | ++ |
Converts a color from HSV color space to its color in RGB color space.
+From GLM_GTX_color_space extension.
+ +detail::tvec3<valType> glm::gtx::color_space::saturation | +( | +valType const | +s, | +
+ | + | detail::tvec3< valType > const & | +color | +
+ | ) | ++ |
Modify the saturation of a color.
+From GLM_GTX_color_space extension.
+ +detail::tmat4x4<valType> glm::gtx::color_space::saturation | +( | +valType const | +s | ) | ++ |
Build a saturation matrix.
+From GLM_GTX_color_space extension
+ +detail::tvec4<valType> glm::gtx::color_space::saturation | +( | +valType const | +s, | +
+ | + | detail::tvec4< valType > const & | +color | +
+ | ) | ++ |
Modify the saturation of a color.
+From GLM_GTX_color_space extension.
+ ++ |
RGB to YCoCg conversions and operations. +More...
++Functions | |
template<typename valType > | |
detail::tvec3< valType > | rgb2YCoCg (detail::tvec3< valType > const &rgbColor) |
template<typename valType > | |
detail::tvec3< valType > | rgb2YCoCgR (detail::tvec3< valType > const &rgbColor) |
template<typename valType > | |
detail::tvec3< valType > | YCoCg2rgb (detail::tvec3< valType > const &YCoCgColor) |
template<typename valType > | |
detail::tvec3< valType > | YCoCgR2rgb (detail::tvec3< valType > const &YCoCgColor) |
RGB to YCoCg conversions and operations.
+<glm/gtx/color_space_YCoCg.hpp> need to be included to use these functionalities.
+detail::tvec3<valType> glm::gtx::color_space_YCoCg::rgb2YCoCg | +( | +detail::tvec3< valType > const & | +rgbColor | ) | ++ |
Convert a color from RGB color space to YCoCg color space.
+From GLM_GTX_color_space_YCoCg extension.
+ +detail::tvec3<valType> glm::gtx::color_space_YCoCg::rgb2YCoCgR | +( | +detail::tvec3< valType > const & | +rgbColor | ) | ++ |
Convert a color from RGB color space to YCoCgR color space.
+detail::tvec3<valType> glm::gtx::color_space_YCoCg::YCoCg2rgb | +( | +detail::tvec3< valType > const & | +YCoCgColor | ) | ++ |
Convert a color from YCoCg color space to RGB color space.
+From GLM_GTX_color_space_YCoCg extension.
+ +detail::tvec3<valType> glm::gtx::color_space_YCoCg::YCoCgR2rgb | +( | +detail::tvec3< valType > const & | +YCoCgColor | ) | ++ |
Convert a color from YCoCgR color space to RGB color space.
++ |
Provide functions to increase the compatibility with Cg and HLSL languages. +More...
++Typedefs | |
+typedef bool | bool1 |
+typedef bool | bool1x1 |
+typedef detail::tvec2< bool > | bool2 |
+typedef detail::tmat2x2< bool > | bool2x2 |
+typedef detail::tmat2x3< bool > | bool2x3 |
+typedef detail::tmat2x4< bool > | bool2x4 |
+typedef detail::tvec3< bool > | bool3 |
+typedef detail::tmat3x2< bool > | bool3x2 |
+typedef detail::tmat3x3< bool > | bool3x3 |
+typedef detail::tmat3x4< bool > | bool3x4 |
+typedef detail::tvec4< bool > | bool4 |
+typedef detail::tmat4x2< bool > | bool4x2 |
+typedef detail::tmat4x3< bool > | bool4x3 |
+typedef detail::tmat4x4< bool > | bool4x4 |
+typedef double | double1 |
+typedef double | double1x1 |
+typedef detail::tvec2< double > | double2 |
+typedef detail::tmat2x2< double > | double2x2 |
+typedef detail::tmat2x3< double > | double2x3 |
+typedef detail::tmat2x4< double > | double2x4 |
+typedef detail::tvec3< double > | double3 |
+typedef detail::tmat3x2< double > | double3x2 |
+typedef detail::tmat3x3< double > | double3x3 |
+typedef detail::tmat3x4< double > | double3x4 |
+typedef detail::tvec4< double > | double4 |
+typedef detail::tmat4x2< double > | double4x2 |
+typedef detail::tmat4x3< double > | double4x3 |
+typedef detail::tmat4x4< double > | double4x4 |
+typedef float | float1 |
+typedef float | float1x1 |
+typedef detail::tvec2< float > | float2 |
+typedef detail::tmat2x2< float > | float2x2 |
+typedef detail::tmat2x3< float > | float2x3 |
+typedef detail::tmat2x4< float > | float2x4 |
+typedef detail::tvec3< float > | float3 |
+typedef detail::tmat3x2< float > | float3x2 |
+typedef detail::tmat3x3< float > | float3x3 |
+typedef detail::tmat3x4< float > | float3x4 |
+typedef detail::tvec4< float > | float4 |
+typedef detail::tmat4x2< float > | float4x2 |
+typedef detail::tmat4x3< float > | float4x3 |
+typedef detail::tmat4x4< float > | float4x4 |
+typedef gtc::half_float::half | half1 |
+typedef gtc::half_float::half | half1x1 |
+typedef detail::tvec2 +< gtc::half_float::half > | half2 |
+typedef detail::tmat2x2 +< gtc::half_float::half > | half2x2 |
+typedef detail::tmat2x3 +< gtc::half_float::half > | half2x3 |
+typedef detail::tmat2x4 +< gtc::half_float::half > | half2x4 |
+typedef detail::tvec3 +< gtc::half_float::half > | half3 |
+typedef detail::tmat3x2 +< gtc::half_float::half > | half3x2 |
+typedef detail::tmat3x3 +< gtc::half_float::half > | half3x3 |
+typedef detail::tmat3x4 +< gtc::half_float::half > | half3x4 |
+typedef detail::tvec4 +< gtc::half_float::half > | half4 |
+typedef detail::tmat4x2 +< gtc::half_float::half > | half4x2 |
+typedef detail::tmat4x3 +< gtc::half_float::half > | half4x3 |
+typedef detail::tmat4x4 +< gtc::half_float::half > | half4x4 |
+typedef int | int1 |
+typedef int | int1x1 |
+typedef detail::tvec2< int > | int2 |
+typedef detail::tmat2x2< int > | int2x2 |
+typedef detail::tmat2x3< int > | int2x3 |
+typedef detail::tmat2x4< int > | int2x4 |
+typedef detail::tvec3< int > | int3 |
+typedef detail::tmat3x2< int > | int3x2 |
+typedef detail::tmat3x3< int > | int3x3 |
+typedef detail::tmat3x4< int > | int3x4 |
+typedef detail::tvec4< int > | int4 |
+typedef detail::tmat4x2< int > | int4x2 |
+typedef detail::tmat4x3< int > | int4x3 |
+typedef detail::tmat4x4< int > | int4x4 |
+Functions | |
+template<typename T > | |
GLM_FUNC_QUALIFIER T | atan2 (T x, T y) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec2< T > | atan2 (const detail::tvec2< T > &x, const detail::tvec2< T > &y) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec3< T > | atan2 (const detail::tvec3< T > &x, const detail::tvec3< T > &y) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec4< T > | atan2 (const detail::tvec4< T > &x, const detail::tvec4< T > &y) |
+template<typename genType > | |
bool | isfinite (genType const &x) |
+template<typename valType > | |
detail::tvec2< bool > | isfinite (const detail::tvec2< valType > &x) |
+template<typename valType > | |
detail::tvec3< bool > | isfinite (const detail::tvec3< valType > &x) |
+template<typename valType > | |
detail::tvec4< bool > | isfinite (const detail::tvec4< valType > &x) |
+template<typename genType > | |
detail::tvec4< bool > | isinf (const detail::tvec4< genType > &x) |
+template<typename genType > | |
bool | isinf (genType const &x) |
+template<typename genType > | |
detail::tvec2< bool > | isinf (const detail::tvec2< genType > &x) |
+template<typename genType > | |
detail::tvec3< bool > | isinf (const detail::tvec3< genType > &x) |
+template<typename genType > | |
bool | isnan (genType const &x) |
+template<typename genType > | |
detail::tvec2< bool > | isnan (const detail::tvec2< genType > &x) |
+template<typename genType > | |
detail::tvec3< bool > | isnan (const detail::tvec3< genType > &x) |
+template<typename genType > | |
detail::tvec4< bool > | isnan (const detail::tvec4< genType > &x) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec4< T > | lerp (const detail::tvec4< T > &x, const detail::tvec4< T > &y, T a) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec2< T > | lerp (const detail::tvec2< T > &x, const detail::tvec2< T > &y, const detail::tvec2< T > &a) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec2< T > | lerp (const detail::tvec2< T > &x, const detail::tvec2< T > &y, T a) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec3< T > | lerp (const detail::tvec3< T > &x, const detail::tvec3< T > &y, const detail::tvec3< T > &a) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec3< T > | lerp (const detail::tvec3< T > &x, const detail::tvec3< T > &y, T a) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec4< T > | lerp (const detail::tvec4< T > &x, const detail::tvec4< T > &y, const detail::tvec4< T > &a) |
+template<typename T > | |
GLM_FUNC_QUALIFIER T | lerp (T x, T y, T a) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec2< T > | saturate (const detail::tvec2< T > &x) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec3< T > | saturate (const detail::tvec3< T > &x) |
+template<typename T > | |
GLM_FUNC_QUALIFIER T | saturate (T x) |
+template<typename T > | |
GLM_FUNC_QUALIFIER +detail::tvec4< T > | saturate (const detail::tvec4< T > &x) |
Provide functions to increase the compatibility with Cg and HLSL languages.
+<glm/gtx/compatibility.hpp> need to be included to use these functionalities.
++ |
Operations between components of a type. +More...
++Functions | |
template<typename genType > | |
genType::value_type | compAdd (genType const &v) |
template<typename genType > | |
genType::value_type | compMax (genType const &v) |
template<typename genType > | |
genType::value_type | compMin (genType const &v) |
template<typename genType > | |
genType::value_type | compMul (genType const &v) |
Operations between components of a type.
+<glm/gtx/component_wise.hpp> need to be included to use these functionalities.
+genType::value_type glm::gtx::component_wise::compAdd | +( | +genType const & | +v | ) | ++ |
Add all vector components together.
+From GLM_GTX_component_wise extension.
+ +genType::value_type glm::gtx::component_wise::compMax | +( | +genType const & | +v | ) | ++ |
Find the maximum value between single vector components.
+From GLM_GTX_component_wise extension.
+ +genType::value_type glm::gtx::component_wise::compMin | +( | +genType const & | +v | ) | ++ |
Find the minimum value between single vector components.
+From GLM_GTX_component_wise extension.
+ +genType::value_type glm::gtx::component_wise::compMul | +( | +genType const & | +v | ) | ++ |
Multiply all vector components together.
+From GLM_GTX_component_wise extension.
+ ++ |
Comparison functions for a user defined epsilon values. +More...
++Functions | |
template<typename genTypeT , typename genTypeU > | |
bool | equalEpsilon (genTypeT const &x, genTypeT const &y, genTypeU const &epsilon) |
template<typename genTypeT , typename genTypeU > | |
bool | notEqualEpsilon (genTypeT const &x, genTypeT const &y, genTypeU const &epsilon) |
Comparison functions for a user defined epsilon values.
+<glm/gtx/epsilon.hpp> need to be included to use these functionalities.
+bool glm::gtx::epsilon::equalEpsilon | +( | +genTypeT const & | +x, | +
+ | + | genTypeT const & | +y, | +
+ | + | genTypeU const & | +epsilon | +
+ | ) | ++ |
Returns the component-wise compare of |x - y| < epsilon.
+From GLM_GTX_epsilon extension.
+ +bool glm::gtx::epsilon::notEqualEpsilon | +( | +genTypeT const & | +x, | +
+ | + | genTypeT const & | +y, | +
+ | + | genTypeU const & | +epsilon | +
+ | ) | ++ |
Returns the component-wise compare of |x - y| >= epsilon.
+From GLM_GTX_epsilon extension.
+ ++ |
Build matrices from Euler angles. +More...
++Functions | |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleX (valType const &angleX) |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleXY (valType const &angleX, valType const &angleY) |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleXZ (valType const &angleX, valType const &angleZ) |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleY (valType const &angleY) |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleYX (valType const &angleY, valType const &angleX) |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleYXZ (valType const &yaw, valType const &pitch, valType const &roll) |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleYZ (valType const &angleY, valType const &angleZ) |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleZ (valType const &angleZ) |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleZX (valType const &angleZ, valType const &angleX) |
template<typename valType > | |
detail::tmat4x4< valType > | eulerAngleZY (valType const &angleZ, valType const &angleY) |
template<typename T > | |
detail::tmat2x2< T > | orientate2 (T const &angle) |
template<typename T > | |
detail::tmat3x3< T > | orientate3 (detail::tvec3< T > const &angles) |
template<typename T > | |
detail::tmat3x3< T > | orientate3 (T const &angle) |
template<typename T > | |
detail::tmat4x4< T > | orientate4 (detail::tvec3< T > const &angles) |
template<typename valType > | |
detail::tmat4x4< valType > | yawPitchRoll (valType const &yaw, valType const &pitch, valType const &roll) |
Build matrices from Euler angles.
+<glm/gtx/euler_angles.hpp> need to be included to use these functionalities.
+detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleX | +( | +valType const & | +angleX | ) | ++ |
Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle X.
+From GLM_GTX_euler_angles extension.
+ +detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleXY | +( | +valType const & | +angleX, | +
+ | + | valType const & | +angleY | +
+ | ) | ++ |
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y).
+From GLM_GTX_euler_angles extension.
+ +detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleXZ | +( | +valType const & | +angleX, | +
+ | + | valType const & | +angleZ | +
+ | ) | ++ |
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z).
+From GLM_GTX_euler_angles extension.
+ +detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleY | +( | +valType const & | +angleY | ) | ++ |
Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Y.
+From GLM_GTX_euler_angles extension.
+ +detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleYX | +( | +valType const & | +angleY, | +
+ | + | valType const & | +angleX | +
+ | ) | ++ |
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X).
+From GLM_GTX_euler_angles extension.
+ +detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleYXZ | +( | +valType const & | +yaw, | +
+ | + | valType const & | +pitch, | +
+ | + | valType const & | +roll | +
+ | ) | ++ |
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
+From GLM_GTX_euler_angles extension.
+ +detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleYZ | +( | +valType const & | +angleY, | +
+ | + | valType const & | +angleZ | +
+ | ) | ++ |
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z).
+From GLM_GTX_euler_angles extension.
+ +detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleZ | +( | +valType const & | +angleZ | ) | ++ |
Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Z.
+From GLM_GTX_euler_angles extension.
+ +detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleZX | +( | +valType const & | +angleZ, | +
+ | + | valType const & | +angleX | +
+ | ) | ++ |
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X).
+From GLM_GTX_euler_angles extension.
+ +detail::tmat4x4<valType> glm::gtx::euler_angles::eulerAngleZY | +( | +valType const & | +angleZ, | +
+ | + | valType const & | +angleY | +
+ | ) | ++ |
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y).
+From GLM_GTX_euler_angles extension.
+ +detail::tmat2x2<T> glm::gtx::euler_angles::orientate2 | +( | +T const & | +angle | ) | ++ |
Creates a 2D 2 * 2 rotation matrix from an euler angle.
+From GLM_GTX_euler_angles extension.
+ +detail::tmat3x3<T> glm::gtx::euler_angles::orientate3 | +( | +detail::tvec3< T > const & | +angles | ) | ++ |
Creates a 3D 3 * 3 rotation matrix from euler angles (Y * X * Z).
+From GLM_GTX_euler_angles extension.
+ +detail::tmat3x3<T> glm::gtx::euler_angles::orientate3 | +( | +T const & | +angle | ) | ++ |
Creates a 2D 4 * 4 homogeneous rotation matrix from an euler angle.
+From GLM_GTX_euler_angles extension.
+ +detail::tmat4x4<T> glm::gtx::euler_angles::orientate4 | +( | +detail::tvec3< T > const & | +angles | ) | ++ |
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
+From GLM_GTX_euler_angles extension.
+ +detail::tmat4x4<valType> glm::gtx::euler_angles::yawPitchRoll | +( | +valType const & | +yaw, | +
+ | + | valType const & | +pitch, | +
+ | + | valType const & | +roll | +
+ | ) | ++ |
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
+From GLM_GTX_euler_angles extension.
+ ++ |
Extend a position from a source to a position at a defined length. +More...
++Functions | |
template<typename genType > | |
genType | extend (genType const &Origin, genType const &Source, typename genType::value_type const Length) |
Extend a position from a source to a position at a defined length.
+<glm/gtx/extend.hpp> need to be included to use these functionalities.
+genType glm::gtx::extend::extend | +( | +genType const & | +Origin, | +
+ | + | genType const & | +Source, | +
+ | + | typename genType::value_type const | +Length | +
+ | ) | ++ |
Extends of Length the Origin position using the (Source - Origin) direction.
+From GLM_GTX_extend extension.
+ ++ |
Min and max functions for 3 to 4 parameters. +More...
+Min and max functions for 3 to 4 parameters.
+<glm/gtx/extented_min_max.hpp> need to be included to use these functionalities.
++ |
Fast but less accurate implementations of exponential based functions. +More...
++Functions | |
template<typename T > | |
T | fastExp (const T &x) |
template<typename T > | |
T | fastExp2 (const T &x) |
template<typename T > | |
T | fastLn (const T &x) |
template<typename T > | |
T | fastLog (const T &x) |
template<typename T > | |
T | fastLog2 (const T &x) |
template<typename valType > | |
valType | fastPow (valType const &x, valType const &y) |
template<typename T , typename U > | |
T | fastPow (const T &x, const U &y) |
Fast but less accurate implementations of exponential based functions.
+<glm/gtx/fast_exponential.hpp> need to be included to use these functionalities.
+T glm::gtx::fast_exponential::fastExp | +( | +const T & | +x | ) | ++ |
Faster than the common exp function but less accurate.
+From GLM_GTX_fast_exponential extension.
+ +T glm::gtx::fast_exponential::fastExp2 | +( | +const T & | +x | ) | ++ |
Faster than the common exp2 function but less accurate.
+From GLM_GTX_fast_exponential extension.
+ +T glm::gtx::fast_exponential::fastLn | +( | +const T & | +x | ) | ++ |
Faster than the common ln function but less accurate.
+From GLM_GTX_fast_exponential extension.
+ +T glm::gtx::fast_exponential::fastLog | +( | +const T & | +x | ) | ++ |
Faster than the common log function but less accurate.
+From GLM_GTX_fast_exponential extension.
+ +T glm::gtx::fast_exponential::fastLog2 | +( | +const T & | +x | ) | ++ |
Faster than the common log2 function but less accurate.
+From GLM_GTX_fast_exponential extension.
+ +valType glm::gtx::fast_exponential::fastPow | +( | +valType const & | +x, | +
+ | + | valType const & | +y | +
+ | ) | ++ |
Faster than the common pow function but less accurate.
+From GLM_GTX_fast_exponential extension.
+ +T glm::gtx::fast_exponential::fastPow | +( | +const T & | +x, | +
+ | + | const U & | +y | +
+ | ) | ++ |
Faster than the common pow function but less accurate.
+From GLM_GTX_fast_exponential extension.
+ ++ |
Fast but less accurate implementations of square root based functions. +More...
++Functions | |
template<typename genType > | |
genType::value_type | fastDistance (genType const &x, genType const &y) |
template<typename genType > | |
genType | fastInverseSqrt (genType const &x) |
template<typename genType > | |
genType::value_type | fastLength (genType const &x) |
template<typename genType > | |
genType | fastNormalize (genType const &x) |
template<typename genType > | |
genType | fastSqrt (genType const &x) |
Fast but less accurate implementations of square root based functions.
+<glm/gtx/fast_square_root.hpp> need to be included to use these functionalities.
+genType::value_type glm::gtx::fast_square_root::fastDistance | +( | +genType const & | +x, | +
+ | + | genType const & | +y | +
+ | ) | ++ |
Faster than the common distance function but less accurate.
+From GLM_GTX_fast_square_root extension.
+ +genType glm::gtx::fast_square_root::fastInverseSqrt | +( | +genType const & | +x | ) | ++ |
Faster than the common inversesqrt function but less accurate.
+From GLM_GTX_fast_square_root extension.
+ +genType::value_type glm::gtx::fast_square_root::fastLength | +( | +genType const & | +x | ) | ++ |
Faster than the common length function but less accurate.
+From GLM_GTX_fast_square_root extension.
+ +genType glm::gtx::fast_square_root::fastNormalize | +( | +genType const & | +x | ) | ++ |
Faster than the common normalize function but less accurate.
+From GLM_GTX_fast_square_root extension.
+ +genType glm::gtx::fast_square_root::fastSqrt | +( | +genType const & | +x | ) | ++ |
Faster than the common sqrt function but less accurate.
+From GLM_GTX_fast_square_root extension.
+ ++ |
Fast but less accurate implementations of trigonometric functions. +More...
++Functions | |
template<typename T > | |
T | fastAcos (const T &angle) |
template<typename T > | |
T | fastAsin (const T &angle) |
template<typename T > | |
T | fastAtan (const T &angle) |
template<typename T > | |
T | fastAtan (const T &y, const T &x) |
template<typename T > | |
T | fastCos (const T &angle) |
template<typename T > | |
T | fastSin (const T &angle) |
template<typename T > | |
T | fastTan (const T &angle) |
Fast but less accurate implementations of trigonometric functions.
+<glm/gtx/fast_trigonometry.hpp> need to be included to use these functionalities.
+T glm::gtx::fast_trigonometry::fastAcos | +( | +const T & | +angle | ) | ++ |
Faster than the common acos function but less accurate.
+Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.
+ +T glm::gtx::fast_trigonometry::fastAsin | +( | +const T & | +angle | ) | ++ |
Faster than the common asin function but less accurate.
+Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.
+ +T glm::gtx::fast_trigonometry::fastAtan | +( | +const T & | +angle | ) | ++ |
Faster than the common atan function but less accurate.
+Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.
+ +T glm::gtx::fast_trigonometry::fastAtan | +( | +const T & | +y, | +
+ | + | const T & | +x | +
+ | ) | ++ |
Faster than the common atan function but less accurate.
+Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.
+ +T glm::gtx::fast_trigonometry::fastCos | +( | +const T & | +angle | ) | ++ |
Faster than the common cos function but less accurate.
+Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.
+ +T glm::gtx::fast_trigonometry::fastSin | +( | +const T & | +angle | ) | ++ |
Faster than the common sin function but less accurate.
+Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.
+ +T glm::gtx::fast_trigonometry::fastTan | +( | +const T & | +angle | ) | ++ |
Faster than the common tan function but less accurate.
+Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.
+ ++ |
To know if a set of three basis vectors defines a right or left-handed coordinate system. +More...
++Functions | |
template<typename T > | |
bool | leftHanded (detail::tvec3< T > const &tangent, detail::tvec3< T > const &binormal, detail::tvec3< T > const &normal) |
template<typename T > | |
bool | rightHanded (detail::tvec3< T > const &tangent, detail::tvec3< T > const &binormal, detail::tvec3< T > const &normal) |
To know if a set of three basis vectors defines a right or left-handed coordinate system.
+<glm/gtx/handed_coordinate_system.hpp> need to be included to use these functionalities.
+bool glm::gtx::handed_coordinate_space::leftHanded | +( | +detail::tvec3< T > const & | +tangent, | +
+ | + | detail::tvec3< T > const & | +binormal, | +
+ | + | detail::tvec3< T > const & | +normal | +
+ | ) | ++ |
Return if a trihedron left handed or not.
+From GLM_GTX_handed_coordinate_space extension.
+ +bool glm::gtx::handed_coordinate_space::rightHanded | +( | +detail::tvec3< T > const & | +tangent, | +
+ | + | detail::tvec3< T > const & | +binormal, | +
+ | + | detail::tvec3< T > const & | +normal | +
+ | ) | ++ |
Return if a trihedron right handed or not.
+From GLM_GTX_handed_coordinate_space extension.
+ ++ |
Create inertia matrices. +More...
++Functions | |
template<typename T > | |
detail::tmat3x3< T > | ballInertia3 (const T Mass, const T Radius) |
template<typename T > | |
detail::tmat4x4< T > | ballInertia4 (const T Mass, const T Radius) |
template<typename T > | |
detail::tmat3x3< T > | boxInertia3 (const T Mass, const detail::tvec3< T > &Scale) |
template<typename T > | |
detail::tmat4x4< T > | boxInertia4 (const T Mass, const detail::tvec3< T > &Scale) |
template<typename T > | |
detail::tmat3x3< T > | diskInertia3 (const T Mass, const T Radius) |
template<typename T > | |
detail::tmat4x4< T > | diskInertia4 (const T Mass, const T Radius) |
template<typename T > | |
detail::tmat3x3< T > | sphereInertia3 (const T Mass, const T Radius) |
template<typename T > | |
detail::tmat4x4< T > | sphereInertia4 (const T Mass, const T Radius) |
Create inertia matrices.
+<glm/gtx/inertia.hpp> need to be included to use these functionalities.
+detail::tmat3x3<T> glm::gtx::inertia::ballInertia3 | +( | +const T | +Mass, | +
+ | + | const T | +Radius | +
+ | ) | ++ |
Build an inertia matrix for a ball.
+From GLM_GTX_inertia extension.
+ +detail::tmat4x4<T> glm::gtx::inertia::ballInertia4 | +( | +const T | +Mass, | +
+ | + | const T | +Radius | +
+ | ) | ++ |
Build an inertia matrix for a ball.
+From GLM_GTX_inertia extension.
+ +detail::tmat3x3<T> glm::gtx::inertia::boxInertia3 | +( | +const T | +Mass, | +
+ | + | const detail::tvec3< T > & | +Scale | +
+ | ) | ++ |
Build an inertia matrix for a box.
+From GLM_GTX_inertia extension.
+ +detail::tmat4x4<T> glm::gtx::inertia::boxInertia4 | +( | +const T | +Mass, | +
+ | + | const detail::tvec3< T > & | +Scale | +
+ | ) | ++ |
Build an inertia matrix for a box.
+From GLM_GTX_inertia extension.
+ +detail::tmat3x3<T> glm::gtx::inertia::diskInertia3 | +( | +const T | +Mass, | +
+ | + | const T | +Radius | +
+ | ) | ++ |
Build an inertia matrix for a disk.
+From GLM_GTX_inertia extension.
+ +detail::tmat4x4<T> glm::gtx::inertia::diskInertia4 | +( | +const T | +Mass, | +
+ | + | const T | +Radius | +
+ | ) | ++ |
Build an inertia matrix for a disk.
+From GLM_GTX_inertia extension.
+ +detail::tmat3x3<T> glm::gtx::inertia::sphereInertia3 | +( | +const T | +Mass, | +
+ | + | const T | +Radius | +
+ | ) | ++ |
Build an inertia matrix for a sphere.
+From GLM_GTX_inertia extension.
+ +detail::tmat4x4<T> glm::gtx::inertia::sphereInertia4 | +( | +const T | +Mass, | +
+ | + | const T | +Radius | +
+ | ) | ++ |
Build an inertia matrix for a sphere.
+From GLM_GTX_inertia extension.
+ ++ |
Pack vector to 1010102 integers. Storage only. +More...
++Functions | |
dword | uint10_10_10_2_cast (glm::vec4 const &v) |
Pack vector to 1010102 integers. Storage only.
+<glm/gtx/int_10_10_10_2.hpp> need to be included to use these functionalities.
+dword glm::gtx::int_10_10_10_2::uint10_10_10_2_cast | +( | +glm::vec4 const & | +v | ) | ++ |
From GLM_GTX_int_10_10_10_2 extension.
+Cast a vec4 to an u_10_10_10_2.
+ ++ |
Add support for integer for core functions. +More...
++Functions | |
template<typename genType > | |
genType | factorial (genType const &x) |
int | mod (int x, int y) |
int | pow (int x, int y) |
int | sqrt (int x) |
Add support for integer for core functions.
+<glm/gtx/integer.hpp> need to be included to use these functionalities.
+genType glm::gtx::integer::factorial | +( | +genType const & | +x | ) | ++ |
Return the factorial value of a number (!12 max, integer only) From GLM_GTX_integer extension.
+ +int glm::gtx::integer::mod | +( | +int | +x, | +
+ | + | int | +y | +
+ | ) | ++ |
Modulus.
+Returns x - y * floor(x / y) for each component in x using the floating point value y. From GLM_GTX_integer extension.
+ +int glm::gtx::integer::pow | +( | +int | +x, | +
+ | + | int | +y | +
+ | ) | ++ |
Returns x raised to the y power.
+From GLM_GTX_integer extension.
+ +int glm::gtx::integer::sqrt | +( | +int | +x | ) | ++ |
Returns the positive square root of x.
+From GLM_GTX_integer extension.
+ ++ |
Add intersection functions. +More...
++Functions | |
template<typename genType > | |
bool | intersectLineSphere (genType const &point0, genType const &point1, genType const ¢er, typename genType::value_type radius, genType &position, genType &normal) |
template<typename genType > | |
bool | intersectLineTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &position) |
template<typename genType > | |
bool | intersectRaySphere (genType const &orig, genType const &dir, genType const ¢er, typename genType::value_type radius, genType &position, genType &normal) |
template<typename genType > | |
bool | intersectRayTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &baryPosition) |
Add intersection functions.
+<glm/gtx/intersect.hpp> need to be included to use these functionalities.
+bool glm::gtx::intersect::intersectLineSphere | +( | +genType const & | +point0, | +
+ | + | genType const & | +point1, | +
+ | + | genType const & | +center, | +
+ | + | typename genType::value_type | +radius, | +
+ | + | genType & | +position, | +
+ | + | genType & | +normal | +
+ | ) | ++ |
Compute the intersection of a line and a sphere.
+From GLM_GTX_intersect extension
+ +bool glm::gtx::intersect::intersectLineTriangle | +( | +genType const & | +orig, | +
+ | + | genType const & | +dir, | +
+ | + | genType const & | +vert0, | +
+ | + | genType const & | +vert1, | +
+ | + | genType const & | +vert2, | +
+ | + | genType & | +position | +
+ | ) | ++ |
Compute the intersection of a line and a triangle.
+From GLM_GTX_intersect extension.
+ +bool glm::gtx::intersect::intersectRaySphere | +( | +genType const & | +orig, | +
+ | + | genType const & | +dir, | +
+ | + | genType const & | +center, | +
+ | + | typename genType::value_type | +radius, | +
+ | + | genType & | +position, | +
+ | + | genType & | +normal | +
+ | ) | ++ |
Compute the intersection of a ray and a sphere.
+From GLM_GTX_intersect extension.
+ +bool glm::gtx::intersect::intersectRayTriangle | +( | +genType const & | +orig, | +
+ | + | genType const & | +dir, | +
+ | + | genType const & | +vert0, | +
+ | + | genType const & | +vert1, | +
+ | + | genType const & | +vert2, | +
+ | + | genType & | +baryPosition | +
+ | ) | ++ |
Compute the intersection of a ray and a triangle.
+From GLM_GTX_intersect extension.
+ ++ |
Logarithm for any base. base can be a vector or a scalar. +More...
++Functions | |
template<typename genType > | |
genType | log (genType const &x, genType const &base) |
Logarithm for any base. base can be a vector or a scalar.
+<glm/gtx/log_base.hpp> need to be included to use these functionalities.
+genType glm::gtx::log_base::log | +( | +genType const & | +x, | +
+ | + | genType const & | +base | +
+ | ) | ++ |
Logarithm for any base.
+From GLM_GTX_log_base.
+ ++ |
Build cross product matrices. +More...
++Functions | |
template<typename T > | |
detail::tmat3x3< T > | matrixCross3 (detail::tvec3< T > const &x) |
template<typename T > | |
detail::tmat4x4< T > | matrixCross4 (detail::tvec3< T > const &x) |
Build cross product matrices.
+<glm/gtx/matrix_cross_product.hpp> need to be included to use these functionalities.
+detail::tmat3x3<T> glm::gtx::matrix_cross_product::matrixCross3 | +( | +detail::tvec3< T > const & | +x | ) | ++ |
Build a cross product matrix.
+From GLM_GTX_matrix_cross_product extension.
+ +detail::tmat4x4<T> glm::gtx::matrix_cross_product::matrixCross4 | +( | +detail::tvec3< T > const & | +x | ) | ++ |
Build a cross product matrix.
+From GLM_GTX_matrix_cross_product extension.
+ ++ |
Build matrices with specific matrix order, row or column. +More...
++Functions | |
template<typename T > | |
detail::tmat2x2< T > | colMajor2 (const detail::tvec2< T > &v1, const detail::tvec2< T > &v2) |
template<typename T > | |
detail::tmat2x2< T > | colMajor2 (const detail::tmat2x2< T > &m) |
template<typename T > | |
detail::tmat3x3< T > | colMajor3 (const detail::tvec3< T > &v1, const detail::tvec3< T > &v2, const detail::tvec3< T > &v3) |
template<typename T > | |
detail::tmat3x3< T > | colMajor3 (const detail::tmat3x3< T > &m) |
template<typename T > | |
detail::tmat4x4< T > | colMajor4 (const detail::tvec4< T > &v1, const detail::tvec4< T > &v2, const detail::tvec4< T > &v3, const detail::tvec4< T > &v4) |
template<typename T > | |
detail::tmat4x4< T > | colMajor4 (const detail::tmat4x4< T > &m) |
template<typename T > | |
detail::tmat2x2< T > | rowMajor2 (const detail::tmat2x2< T > &m) |
template<typename T > | |
detail::tmat2x2< T > | rowMajor2 (const detail::tvec2< T > &v1, const detail::tvec2< T > &v2) |
template<typename T > | |
detail::tmat3x3< T > | rowMajor3 (const detail::tvec3< T > &v1, const detail::tvec3< T > &v2, const detail::tvec3< T > &v3) |
template<typename T > | |
detail::tmat3x3< T > | rowMajor3 (const detail::tmat3x3< T > &m) |
template<typename T > | |
detail::tmat4x4< T > | rowMajor4 (const detail::tmat4x4< T > &m) |
template<typename T > | |
detail::tmat4x4< T > | rowMajor4 (const detail::tvec4< T > &v1, const detail::tvec4< T > &v2, const detail::tvec4< T > &v3, const detail::tvec4< T > &v4) |
Build matrices with specific matrix order, row or column.
+<glm/gtx/matrix_major_storage.hpp> need to be included to use these functionalities.
+detail::tmat2x2<T> glm::gtx::matrix_major_storage::colMajor2 | +( | +const detail::tvec2< T > & | +v1, | +
+ | + | const detail::tvec2< T > & | +v2 | +
+ | ) | ++ |
Build a column major matrix from column vectors.
+From GLM_GTX_matrix_major_storage extension.
+ +detail::tmat2x2<T> glm::gtx::matrix_major_storage::colMajor2 | +( | +const detail::tmat2x2< T > & | +m | ) | ++ |
Build a column major matrix from other matrix.
+From GLM_GTX_matrix_major_storage extension.
+ +detail::tmat3x3<T> glm::gtx::matrix_major_storage::colMajor3 | +( | +const detail::tvec3< T > & | +v1, | +
+ | + | const detail::tvec3< T > & | +v2, | +
+ | + | const detail::tvec3< T > & | +v3 | +
+ | ) | ++ |
Build a column major matrix from column vectors.
+From GLM_GTX_matrix_major_storage extension.
+ +detail::tmat3x3<T> glm::gtx::matrix_major_storage::colMajor3 | +( | +const detail::tmat3x3< T > & | +m | ) | ++ |
Build a column major matrix from other matrix.
+From GLM_GTX_matrix_major_storage extension.
+ +detail::tmat4x4<T> glm::gtx::matrix_major_storage::colMajor4 | +( | +const detail::tvec4< T > & | +v1, | +
+ | + | const detail::tvec4< T > & | +v2, | +
+ | + | const detail::tvec4< T > & | +v3, | +
+ | + | const detail::tvec4< T > & | +v4 | +
+ | ) | ++ |
Build a column major matrix from column vectors.
+From GLM_GTX_matrix_major_storage extension.
+ +detail::tmat4x4<T> glm::gtx::matrix_major_storage::colMajor4 | +( | +const detail::tmat4x4< T > & | +m | ) | ++ |
Build a column major matrix from other matrix.
+From GLM_GTX_matrix_major_storage extension.
+ +detail::tmat2x2<T> glm::gtx::matrix_major_storage::rowMajor2 | +( | +const detail::tmat2x2< T > & | +m | ) | ++ |
Build a row major matrix from other matrix.
+From GLM_GTX_matrix_major_storage extension.
+ +detail::tmat2x2<T> glm::gtx::matrix_major_storage::rowMajor2 | +( | +const detail::tvec2< T > & | +v1, | +
+ | + | const detail::tvec2< T > & | +v2 | +
+ | ) | ++ |
Build a row major matrix from row vectors.
+From GLM_GTX_matrix_major_storage extension.
+ +detail::tmat3x3<T> glm::gtx::matrix_major_storage::rowMajor3 | +( | +const detail::tvec3< T > & | +v1, | +
+ | + | const detail::tvec3< T > & | +v2, | +
+ | + | const detail::tvec3< T > & | +v3 | +
+ | ) | ++ |
Build a row major matrix from row vectors.
+From GLM_GTX_matrix_major_storage extension.
+ +detail::tmat3x3<T> glm::gtx::matrix_major_storage::rowMajor3 | +( | +const detail::tmat3x3< T > & | +m | ) | ++ |
Build a row major matrix from other matrix.
+From GLM_GTX_matrix_major_storage extension.
+ +detail::tmat4x4<T> glm::gtx::matrix_major_storage::rowMajor4 | +( | +const detail::tmat4x4< T > & | +m | ) | ++ |
Build a row major matrix from other matrix.
+From GLM_GTX_matrix_major_storage extension.
+ +detail::tmat4x4<T> glm::gtx::matrix_major_storage::rowMajor4 | +( | +const detail::tvec4< T > & | +v1, | +
+ | + | const detail::tvec4< T > & | +v2, | +
+ | + | const detail::tvec4< T > & | +v3, | +
+ | + | const detail::tvec4< T > & | +v4 | +
+ | ) | ++ |
Build a row major matrix from row vectors.
+From GLM_GTX_matrix_major_storage extension.
+ ++ |
Build diagonal matrices from vectors. +More...
++Functions | |
template<typename valType > | |
detail::tmat2x2< valType > | diagonal2x2 (detail::tvec2< valType > const &v) |
template<typename valType > | |
detail::tmat2x3< valType > | diagonal2x3 (detail::tvec2< valType > const &v) |
template<typename valType > | |
detail::tmat2x4< valType > | diagonal2x4 (detail::tvec2< valType > const &v) |
template<typename valType > | |
detail::tmat3x2< valType > | diagonal3x2 (detail::tvec2< valType > const &v) |
template<typename valType > | |
detail::tmat3x3< valType > | diagonal3x3 (detail::tvec3< valType > const &v) |
template<typename valType > | |
detail::tmat3x4< valType > | diagonal3x4 (detail::tvec3< valType > const &v) |
template<typename valType > | |
detail::tmat4x2< valType > | diagonal4x2 (detail::tvec2< valType > const &v) |
template<typename valType > | |
detail::tmat4x3< valType > | diagonal4x3 (detail::tvec3< valType > const &v) |
template<typename valType > | |
detail::tmat4x4< valType > | diagonal4x4 (detail::tvec4< valType > const &v) |
Build diagonal matrices from vectors.
+<glm/gtx/matrix_operation.hpp> need to be included to use these functionalities.
+detail::tmat2x2<valType> glm::gtx::matrix_operation::diagonal2x2 | +( | +detail::tvec2< valType > const & | +v | ) | ++ |
Build a diagonal matrix.
+From GLM_GTX_matrix_operation extension.
+ +detail::tmat2x3<valType> glm::gtx::matrix_operation::diagonal2x3 | +( | +detail::tvec2< valType > const & | +v | ) | ++ |
Build a diagonal matrix.
+From GLM_GTX_matrix_operation extension.
+ +detail::tmat2x4<valType> glm::gtx::matrix_operation::diagonal2x4 | +( | +detail::tvec2< valType > const & | +v | ) | ++ |
Build a diagonal matrix.
+From GLM_GTX_matrix_operation extension.
+ +detail::tmat3x2<valType> glm::gtx::matrix_operation::diagonal3x2 | +( | +detail::tvec2< valType > const & | +v | ) | ++ |
Build a diagonal matrix.
+From GLM_GTX_matrix_operation extension.
+ +detail::tmat3x3<valType> glm::gtx::matrix_operation::diagonal3x3 | +( | +detail::tvec3< valType > const & | +v | ) | ++ |
Build a diagonal matrix.
+From GLM_GTX_matrix_operation extension.
+ +detail::tmat3x4<valType> glm::gtx::matrix_operation::diagonal3x4 | +( | +detail::tvec3< valType > const & | +v | ) | ++ |
Build a diagonal matrix.
+From GLM_GTX_matrix_operation extension.
+ +detail::tmat4x2<valType> glm::gtx::matrix_operation::diagonal4x2 | +( | +detail::tvec2< valType > const & | +v | ) | ++ |
Build a diagonal matrix.
+From GLM_GTX_matrix_operation extension.
+ +detail::tmat4x3<valType> glm::gtx::matrix_operation::diagonal4x3 | +( | +detail::tvec3< valType > const & | +v | ) | ++ |
Build a diagonal matrix.
+From GLM_GTX_matrix_operation extension.
+ +detail::tmat4x4<valType> glm::gtx::matrix_operation::diagonal4x4 | +( | +detail::tvec4< valType > const & | +v | ) | ++ |
Build a diagonal matrix.
+From GLM_GTX_matrix_operation extension.
+ ++ |
Query to evaluate matrix properties. +More...
++Functions | |
template<typename genType > | |
bool | isIdentity (const genType &m, const typename genType::value_type epsilon=std::numeric_limits< typename genType::value_type >::epsilon()) |
template<typename T > | |
bool | isNormalized (const detail::tmat2x2< T > &m, const T epsilon=std::numeric_limits< T >::epsilon()) |
template<typename T > | |
bool | isNormalized (const detail::tmat4x4< T > &m, const T epsilon=std::numeric_limits< T >::epsilon()) |
template<typename T > | |
bool | isNormalized (const detail::tmat3x3< T > &m, const T epsilon=std::numeric_limits< T >::epsilon()) |
template<typename T > | |
bool | isNull (const detail::tmat2x2< T > &m, const T epsilon=std::numeric_limits< T >::epsilon()) |
template<typename T > | |
bool | isNull (const detail::tmat3x3< T > &m, const T epsilon=std::numeric_limits< T >::epsilon()) |
template<typename T > | |
bool | isNull (const detail::tmat4x4< T > &m, const T epsilon=std::numeric_limits< T >::epsilon()) |
template<typename genType > | |
bool | isOrthogonal (const genType &m, const typename genType::value_type epsilon=std::numeric_limits< typename genType::value_type >::epsilon()) |
Query to evaluate matrix properties.
+<glm/gtx/matrix_query.hpp> need to be included to use these functionalities.
+bool glm::gtx::matrix_query::isIdentity | +( | +const genType & | +m, | +
+ | + | const typename genType::value_type | +epsilon = std::numeric_limits< typename genType::value_type >::epsilon() |
+
+ | ) | ++ |
Return if a matrix an identity matrix.
+From GLM_GTX_matrix_query extension.
+ +bool glm::gtx::matrix_query::isNormalized | +( | +const detail::tmat2x2< T > & | +m, | +
+ | + | const T | +epsilon = std::numeric_limits< T >::epsilon() |
+
+ | ) | ++ |
Return if a matrix a normalized matrix.
+From GLM_GTX_matrix_query extension.
+ +bool glm::gtx::matrix_query::isNormalized | +( | +const detail::tmat4x4< T > & | +m, | +
+ | + | const T | +epsilon = std::numeric_limits< T >::epsilon() |
+
+ | ) | ++ |
Return if a matrix a normalized matrix.
+From GLM_GTX_matrix_query extension.
+ +bool glm::gtx::matrix_query::isNormalized | +( | +const detail::tmat3x3< T > & | +m, | +
+ | + | const T | +epsilon = std::numeric_limits< T >::epsilon() |
+
+ | ) | ++ |
Return if a matrix a normalized matrix.
+From GLM_GTX_matrix_query extension.
+ +bool glm::gtx::matrix_query::isNull | +( | +const detail::tmat2x2< T > & | +m, | +
+ | + | const T | +epsilon = std::numeric_limits< T >::epsilon() |
+
+ | ) | ++ |
Return if a matrix a null matrix.
+From GLM_GTX_matrix_query extension.
+ +bool glm::gtx::matrix_query::isNull | +( | +const detail::tmat3x3< T > & | +m, | +
+ | + | const T | +epsilon = std::numeric_limits< T >::epsilon() |
+
+ | ) | ++ |
Return if a matrix a null matrix.
+From GLM_GTX_matrix_query extension.
+ +bool glm::gtx::matrix_query::isNull | +( | +const detail::tmat4x4< T > & | +m, | +
+ | + | const T | +epsilon = std::numeric_limits< T >::epsilon() |
+
+ | ) | ++ |
Return if a matrix a null matrix.
+From GLM_GTX_matrix_query extension.
+ +bool glm::gtx::matrix_query::isOrthogonal | +( | +const genType & | +m, | +
+ | + | const typename genType::value_type | +epsilon = std::numeric_limits< typename genType::value_type >::epsilon() |
+
+ | ) | ++ |
Return if a matrix an orthonormalized matrix.
+From GLM_GTX_matrix_query extension.
+ ++ |
Mixed product of 3 vectors. +More...
++Functions | |
+template<typename valType > | |
valType | mixedProduct (detail::tvec3< valType > const &v1, detail::tvec3< valType > const &v2, detail::tvec3< valType > const &v3) |
Mixed product of 3 vectors.
+<glm/gtx/mixed_product.hpp> need to be included to use these functionalities.
++ |
Find the closest number of a number multiple of other number. +More...
++Functions | |
template<typename genType > | |
genType | higherMultiple (genType const &Source, genType const &Multiple) |
template<typename genType > | |
genType | lowerMultiple (genType const &Source, genType const &Multiple) |
Find the closest number of a number multiple of other number.
+<glm/gtx/multiple.hpp> need to be included to use these functionalities.
+genType glm::gtx::multiple::higherMultiple | +( | +genType const & | +Source, | +
+ | + | genType const & | +Multiple | +
+ | ) | ++ |
Higher Multiple number of Source.
+From GLM_GTX_multiple extension.
+ +genType glm::gtx::multiple::lowerMultiple | +( | +genType const & | +Source, | +
+ | + | genType const & | +Multiple | +
+ | ) | ++ |
Lower Multiple number of Source.
+From GLM_GTX_multiple extension.
+ ++ |
Various way to compute vector norms. +More...
++Functions | |
template<typename T > | |
T | distance2 (const T p0, const T p1) |
template<typename T > | |
T | distance2 (const detail::tvec3< T > &p0, const detail::tvec3< T > &p1) |
template<typename T > | |
T | distance2 (const detail::tvec4< T > &p0, const detail::tvec4< T > &p1) |
template<typename T > | |
T | distance2 (const detail::tvec2< T > &p0, const detail::tvec2< T > &p1) |
template<typename T > | |
T | l1Norm (const detail::tvec3< T > &x, const detail::tvec3< T > &y) |
template<typename T > | |
T | l1Norm (const detail::tvec3< T > &v) |
template<typename T > | |
T | l2Norm (const detail::tvec3< T > &x) |
template<typename T > | |
T | l2Norm (const detail::tvec3< T > &x, const detail::tvec3< T > &y) |
template<typename T > | |
T | length2 (const detail::tvec4< T > &x) |
template<typename T > | |
T | length2 (const T x) |
template<typename T > | |
T | length2 (const detail::tvec2< T > &x) |
template<typename T > | |
T | length2 (const detail::tvec3< T > &x) |
template<typename T > | |
T | length2 (const detail::tquat< T > &q) |
template<typename T > | |
T | lxNorm (const detail::tvec3< T > &x, unsigned int Depth) |
template<typename T > | |
T | lxNorm (const detail::tvec3< T > &x, const detail::tvec3< T > &y, unsigned int Depth) |
Various way to compute vector norms.
+<glm/gtx/norm.hpp> need to be included to use these functionalities.
+T glm::gtx::norm::distance2 | +( | +const T | +p0, | +
+ | + | const T | +p1 | +
+ | ) | ++ |
Returns the squared distance between p0 and p1, i.e., length(p0 - p1).
+From GLM_GTX_norm extension.
+ +T glm::gtx::norm::distance2 | +( | +const detail::tvec3< T > & | +p0, | +
+ | + | const detail::tvec3< T > & | +p1 | +
+ | ) | ++ |
Returns the squared distance between p0 and p1, i.e., length(p0 - p1).
+From GLM_GTX_norm extension.
+ +T glm::gtx::norm::distance2 | +( | +const detail::tvec4< T > & | +p0, | +
+ | + | const detail::tvec4< T > & | +p1 | +
+ | ) | ++ |
Returns the squared distance between p0 and p1, i.e., length(p0 - p1).
+From GLM_GTX_norm extension.
+ +T glm::gtx::norm::distance2 | +( | +const detail::tvec2< T > & | +p0, | +
+ | + | const detail::tvec2< T > & | +p1 | +
+ | ) | ++ |
Returns the squared distance between p0 and p1, i.e., length(p0 - p1).
+From GLM_GTX_norm extension.
+ +T glm::gtx::norm::l1Norm | +( | +const detail::tvec3< T > & | +x, | +
+ | + | const detail::tvec3< T > & | +y | +
+ | ) | ++ |
Returns the L1 norm between x and y.
+From GLM_GTX_norm extension.
+ +T glm::gtx::norm::l1Norm | +( | +const detail::tvec3< T > & | +v | ) | ++ |
Returns the L1 norm of v.
+From GLM_GTX_norm extension.
+ +T glm::gtx::norm::l2Norm | +( | +const detail::tvec3< T > & | +x | ) | ++ |
Returns the L2 norm of v.
+From GLM_GTX_norm extension.
+ +T glm::gtx::norm::l2Norm | +( | +const detail::tvec3< T > & | +x, | +
+ | + | const detail::tvec3< T > & | +y | +
+ | ) | ++ |
Returns the L2 norm between x and y.
+From GLM_GTX_norm extension.
+ +T glm::gtx::norm::length2 | +( | +const detail::tvec4< T > & | +x | ) | ++ |
Returns the squared length of x.
+From GLM_GTX_norm extension.
+ +T glm::gtx::norm::length2 | +( | +const T | +x | ) | ++ |
Returns the squared length of x.
+From GLM_GTX_norm extension.
+ +T glm::gtx::norm::length2 | +( | +const detail::tvec2< T > & | +x | ) | ++ |
Returns the squared length of x.
+From GLM_GTX_norm extension.
+ +T glm::gtx::norm::length2 | +( | +const detail::tvec3< T > & | +x | ) | ++ |
Returns the squared length of x.
+From GLM_GTX_norm extension.
+ +T glm::gtx::norm::length2 | +( | +const detail::tquat< T > & | +q | ) | ++ |
Returns the squared length of x.
+From GLM_GTX_norm extension.
+ +T glm::gtx::norm::lxNorm | +( | +const detail::tvec3< T > & | +x, | +
+ | + | unsigned int | +Depth | +
+ | ) | ++ |
Returns the L norm of v.
+From GLM_GTX_norm extension.
+ +T glm::gtx::norm::lxNorm | +( | +const detail::tvec3< T > & | +x, | +
+ | + | const detail::tvec3< T > & | +y, | +
+ | + | unsigned int | +Depth | +
+ | ) | ++ |
Returns the L norm between x and y.
+From GLM_GTX_norm extension.
+ ++ |
Compute the normal of a triangle. +More...
++Functions | |
template<typename T > | |
detail::tvec3< T > | triangleNormal (detail::tvec3< T > const &p1, detail::tvec3< T > const &p2, detail::tvec3< T > const &p3) |
Compute the normal of a triangle.
+<glm/gtx/normal.hpp> need to be included to use these functionalities.
+detail::tvec3<T> glm::gtx::normal::triangleNormal | +( | +detail::tvec3< T > const & | +p1, | +
+ | + | detail::tvec3< T > const & | +p2, | +
+ | + | detail::tvec3< T > const & | +p3 | +
+ | ) | ++ |
Computes triangle normal from triangle points.
+From GLM_GTX_normal extension.
+ ++ |
Dot product of vectors that need to be normalize with a single square root. +More...
++Functions | |
template<typename genType > | |
genType::value_type | fastNormalizeDot (genType const &x, genType const &y) |
template<typename genType > | |
genType::value_type | normalizeDot (genType const &x, genType const &y) |
Dot product of vectors that need to be normalize with a single square root.
+<glm/gtx/normalized_dot.hpp> need to be included to use these functionalities.
+genType::value_type glm::gtx::normalize_dot::fastNormalizeDot | +( | +genType const & | +x, | +
+ | + | genType const & | +y | +
+ | ) | ++ |
Normalize parameters and returns the dot product of x and y.
+Faster that dot(fastNormalize(x), fastNormalize(y)). From GLM_GTX_normalize_dot extension.
+ +genType::value_type glm::gtx::normalize_dot::normalizeDot | +( | +genType const & | +x, | +
+ | + | genType const & | +y | +
+ | ) | ++ |
Normalize parameters and returns the dot product of x and y.
+It's faster that dot(normalize(x), normalize(y)). From GLM_GTX_normalize_dot extension.
+ ++ |
Defined size types. +More...
++Typedefs | |
+typedef f16 | f16mat1 |
+typedef f16 | f16mat1x1 |
+typedef f16 | f16vec1 |
+typedef f32 | f32mat1 |
+typedef f32 | f32mat1x1 |
+typedef f32 | f32vec1 |
+typedef f64 | f64mat1 |
+typedef f64 | f64mat1x1 |
+typedef f64 | f64vec1 |
+typedef u16 | u16vec1 |
+typedef u32 | u32vec1 |
+typedef u64 | u64vec1 |
+typedef u8 | u8vec1 |
Defined size types.
+<glm/gtx/number_precision.hpp> need to be included to use these functionalities.
++ |
OpenCL types. +More...
++Typedefs | |
+typedef detail::int8 | cl_char |
+typedef detail::int8 | cl_char1 |
+typedef detail::tvec2 +< detail::int8 > | cl_char2 |
+typedef detail::tvec3 +< detail::int8 > | cl_char3 |
+typedef detail::tvec4 +< detail::int8 > | cl_char4 |
+typedef detail::float32 | cl_float |
+typedef detail::float32 | cl_float1 |
+typedef detail::tvec2 +< detail::float32 > | cl_float2 |
+typedef detail::tvec3 +< detail::float32 > | cl_float3 |
+typedef detail::tvec4 +< detail::float32 > | cl_float4 |
+typedef detail::float16 | cl_half |
+typedef detail::int32 | cl_int |
+typedef detail::int32 | cl_int1 |
+typedef detail::tvec2 +< detail::int32 > | cl_int2 |
+typedef detail::tvec3 +< detail::int32 > | cl_int3 |
+typedef detail::tvec4 +< detail::int32 > | cl_int4 |
+typedef detail::int64 | cl_long |
+typedef detail::int64 | cl_long1 |
+typedef detail::tvec2 +< detail::int64 > | cl_long2 |
+typedef detail::tvec3 +< detail::int64 > | cl_long3 |
+typedef detail::tvec4 +< detail::int64 > | cl_long4 |
+typedef detail::int16 | cl_short |
+typedef detail::int16 | cl_short1 |
+typedef detail::tvec2 +< detail::int16 > | cl_short2 |
+typedef detail::tvec3 +< detail::int16 > | cl_short3 |
+typedef detail::tvec4 +< detail::int16 > | cl_short4 |
+typedef detail::uint8 | cl_uchar |
+typedef detail::uint8 | cl_uchar1 |
+typedef detail::tvec2 +< detail::uint8 > | cl_uchar2 |
+typedef detail::tvec3 +< detail::uint8 > | cl_uchar3 |
+typedef detail::tvec4 +< detail::uint8 > | cl_uchar4 |
+typedef detail::uint32 | cl_uint |
+typedef detail::uint32 | cl_uint1 |
+typedef detail::tvec2 +< detail::uint32 > | cl_uint2 |
+typedef detail::tvec3 +< detail::uint32 > | cl_uint3 |
+typedef detail::tvec4 +< detail::uint32 > | cl_uint4 |
+typedef detail::uint64 | cl_ulong |
+typedef detail::uint64 | cl_ulong1 |
+typedef detail::tvec2 +< detail::uint64 > | cl_ulong2 |
+typedef detail::tvec3 +< detail::uint64 > | cl_ulong3 |
+typedef detail::tvec4 +< detail::uint64 > | cl_ulong4 |
+typedef detail::uint16 | cl_ushort |
+typedef detail::uint16 | cl_ushort1 |
+typedef detail::tvec2 +< detail::uint16 > | cl_ushort2 |
+typedef detail::tvec3 +< detail::uint16 > | cl_ushort3 |
+typedef detail::tvec4 +< detail::uint16 > | cl_ushort4 |
OpenCL types.
+<glm/gtx/ocl_type.hpp> need to be included to use these functionalities.
++ |
Integer exponentiation of power functions. +More...
++Functions | |
template<typename genType > | |
genType | pow2 (const genType &x) |
template<typename genType > | |
genType | pow3 (const genType &x) |
template<typename genType > | |
genType | pow4 (const genType &x) |
detail::tvec2< bool > | powOfTwo (const detail::tvec2< int > &x) |
bool | powOfTwo (int num) |
detail::tvec3< bool > | powOfTwo (const detail::tvec3< int > &x) |
detail::tvec4< bool > | powOfTwo (const detail::tvec4< int > &x) |
Integer exponentiation of power functions.
+<glm/gtx/optimum_pow.hpp> need to be included to use these functionalities.
+genType glm::gtx::optimum_pow::pow2 | +( | +const genType & | +x | ) | ++ |
Returns x raised to the power of 2.
+From GLM_GTX_optimum_pow extension.
+ +genType glm::gtx::optimum_pow::pow3 | +( | +const genType & | +x | ) | ++ |
Returns x raised to the power of 3.
+From GLM_GTX_optimum_pow extension.
+ +genType glm::gtx::optimum_pow::pow4 | +( | +const genType & | +x | ) | ++ |
Returns x raised to the power of 4.
+From GLM_GTX_optimum_pow extension.
+ +detail::tvec2<bool> glm::gtx::optimum_pow::powOfTwo | +( | +const detail::tvec2< int > & | +x | ) | ++ |
Checks to determine if the parameter component are power of 2 numbers.
+From GLM_GTX_optimum_pow extension.
+ +bool glm::gtx::optimum_pow::powOfTwo | +( | +int | +num | ) | ++ |
Checks if the parameter is a power of 2 number.
+From GLM_GTX_optimum_pow extension.
+ +detail::tvec3<bool> glm::gtx::optimum_pow::powOfTwo | +( | +const detail::tvec3< int > & | +x | ) | ++ |
Checks to determine if the parameter component are power of 2 numbers.
+From GLM_GTX_optimum_pow extension.
+ +detail::tvec4<bool> glm::gtx::optimum_pow::powOfTwo | +( | +const detail::tvec4< int > & | +x | ) | ++ |
Checks to determine if the parameter component are power of 2 numbers.
+From GLM_GTX_optimum_pow extension.
+ ++ |
Orthonormalize matrices. +More...
++Functions | |
template<typename T > | |
detail::tmat3x3< T > | orthonormalize (const detail::tmat3x3< T > &m) |
template<typename T > | |
detail::tvec3< T > | orthonormalize (const detail::tvec3< T > &x, const detail::tvec3< T > &y) |
Orthonormalize matrices.
+<glm/gtx/orthonormalize.hpp> need to be included to use these functionalities.
+detail::tmat3x3<T> glm::gtx::orthonormalize::orthonormalize | +( | +const detail::tmat3x3< T > & | +m | ) | ++ |
Returns the orthonormalized matrix of m.
+From GLM_GTX_orthonormalize extension.
+ +detail::tvec3<T> glm::gtx::orthonormalize::orthonormalize | +( | +const detail::tvec3< T > & | +x, | +
+ | + | const detail::tvec3< T > & | +y | +
+ | ) | ++ |
Orthonormalizes x according y.
+From GLM_GTX_orthonormalize extension.
+ ++ |
Perpendicular of a vector from other one. +More...
++Functions | |
template<typename T > | |
detail::tvec2< T > | perp (detail::tvec2< T > const &x, detail::tvec2< T > const &Normal) |
template<typename T > | |
detail::tvec4< T > | perp (detail::tvec4< T > const &x, detail::tvec4< T > const &Normal) |
template<typename T > | |
detail::tvec3< T > | perp (detail::tvec3< T > const &x, detail::tvec3< T > const &Normal) |
Perpendicular of a vector from other one.
+<glm/gtx/perpendicular.hpp> need to be included to use these functionalities.
+detail::tvec2<T> glm::gtx::perpendicular::perp | +( | +detail::tvec2< T > const & | +x, | +
+ | + | detail::tvec2< T > const & | +Normal | +
+ | ) | ++ |
Projects x a perpendicular axis of Normal.
+From GLM_GTX_perpendicular extension.
+ +detail::tvec4<T> glm::gtx::perpendicular::perp | +( | +detail::tvec4< T > const & | +x, | +
+ | + | detail::tvec4< T > const & | +Normal | +
+ | ) | ++ |
Projects x a perpendicular axis of Normal.
+From GLM_GTX_perpendicular extension.
+ +detail::tvec3<T> glm::gtx::perpendicular::perp | +( | +detail::tvec3< T > const & | +x, | +
+ | + | detail::tvec3< T > const & | +Normal | +
+ | ) | ++ |
Projects x a perpendicular axis of Normal.
+From GLM_GTX_perpendicular extension.
+ ++ |
Conversion from Euclidean space to polar space and revert. +More...
++Functions | |
template<typename T > | |
detail::tvec3< T > | euclidean (const detail::tvec3< T > &polar) |
template<typename T > | |
detail::tvec3< T > | polar (const detail::tvec3< T > &euclidean) |
Conversion from Euclidean space to polar space and revert.
+<glm/gtx/polar_coordinates.hpp> need to be included to use these functionalities.
+detail::tvec3<T> glm::gtx::polar_coordinates::euclidean | +( | +const detail::tvec3< T > & | +polar | ) | ++ |
Convert Polar to Euclidean coordinates.
+From GLM_GTX_polar_coordinates extension.
+ +detail::tvec3<T> glm::gtx::polar_coordinates::polar | +( | +const detail::tvec3< T > & | +euclidean | ) | ++ |
Convert Euclidean to Polar coordinates, x is the xz distance, y, the latitude and z the longitude.
+From GLM_GTX_polar_coordinates extension.
+ ++ |
Projection of a vector to other one. +More...
++Functions | |
template<typename T > | |
detail::tvec2< T > | proj (detail::tvec2< T > const &x, detail::tvec2< T > const &Normal) |
template<typename T > | |
detail::tvec4< T > | proj (detail::tvec4< T > const &x, detail::tvec4< T > const &Normal) |
template<typename T > | |
detail::tvec3< T > | proj (detail::tvec3< T > const &x, detail::tvec3< T > const &Normal) |
Projection of a vector to other one.
+<glm/gtx/projection.hpp> need to be included to use these functionalities.
+detail::tvec2<T> glm::gtx::projection::proj | +( | +detail::tvec2< T > const & | +x, | +
+ | + | detail::tvec2< T > const & | +Normal | +
+ | ) | ++ |
Projects x on Normal.
+From GLM_GTX_projection extension.
+ +detail::tvec4<T> glm::gtx::projection::proj | +( | +detail::tvec4< T > const & | +x, | +
+ | + | detail::tvec4< T > const & | +Normal | +
+ | ) | ++ |
Projects x on Normal.
+From GLM_GTX_projection extension.
+ +detail::tvec3<T> glm::gtx::projection::proj | +( | +detail::tvec3< T > const & | +x, | +
+ | + | detail::tvec3< T > const & | +Normal | +
+ | ) | ++ |
Projects x on Normal.
+From GLM_GTX_projection extension.
+ ++ |
Extented quaternion types and functions. +More...
++Functions | |
template<typename valType > | |
valType | angle (detail::tquat< valType > const &x) |
template<typename valType > | |
detail::tquat< valType > | angleAxis (valType const &angle, valType const &x, valType const &y, valType const &z) |
template<typename valType > | |
detail::tquat< valType > | angleAxis (valType const &angle, detail::tvec3< valType > const &axis) |
template<typename valType > | |
detail::tvec3< valType > | axis (detail::tquat< valType > const &x) |
template<typename valType > | |
detail::tvec3< valType > | cross (detail::tquat< valType > const &q, detail::tvec3< valType > const &v) |
template<typename valType > | |
detail::tvec3< valType > | cross (detail::tvec3< valType > const &v, detail::tquat< valType > const &q) |
template<typename valType > | |
detail::tvec3< valType > | eulerAngles (detail::tquat< valType > const &x) |
template<typename valType > | |
detail::tquat< valType > | exp (detail::tquat< valType > const &q, valType const &exponent) |
template<typename valType > | |
valType | extractRealComponent (detail::tquat< valType > const &q) |
template<typename T > | |
detail::tquat< T > | fastMix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a) |
template<typename valType > | |
detail::tquat< valType > | intermediate (detail::tquat< valType > const &prev, detail::tquat< valType > const &curr, detail::tquat< valType > const &next) |
template<typename valType > | |
detail::tquat< valType > | log (detail::tquat< valType > const &q) |
template<typename valType > | |
valType | pitch (detail::tquat< valType > const &x) |
template<typename valType > | |
detail::tquat< valType > | pow (detail::tquat< valType > const &x, valType const &y) |
template<typename valType > | |
valType | roll (detail::tquat< valType > const &x) |
template<typename valType > | |
detail::tvec3< valType > | rotate (detail::tquat< valType > const &q, detail::tvec3< valType > const &v) |
template<typename valType > | |
detail::tvec4< valType > | rotate (detail::tquat< valType > const &q, detail::tvec4< valType > const &v) |
template<typename T > | |
detail::tquat< T > | shortMix (detail::tquat< T > const &x, detail::tquat< T > const &y, T const &a) |
template<typename valType > | |
detail::tquat< valType > | squad (detail::tquat< valType > const &q1, detail::tquat< valType > const &q2, detail::tquat< valType > const &s1, detail::tquat< valType > const &s2, valType const &h) |
template<typename valType > | |
detail::tmat3x3< valType > | toMat3 (detail::tquat< valType > const &x) |
template<typename valType > | |
detail::tmat4x4< valType > | toMat4 (detail::tquat< valType > const &x) |
template<typename valType > | |
detail::tquat< valType > | toQuat (detail::tmat4x4< valType > const &x) |
template<typename valType > | |
detail::tquat< valType > | toQuat (detail::tmat3x3< valType > const &x) |
template<typename valType > | |
valType | yaw (detail::tquat< valType > const &x) |
Extented quaternion types and functions.
+<glm/gtx/quaternion.hpp> need to be included to use these functionalities.
+valType glm::gtx::quaternion::angle | +( | +detail::tquat< valType > const & | +x | ) | ++ |
Returns the quaternion rotation angle.
+From GLM_GTX_quaternion extension.
+ +detail::tquat<valType> glm::gtx::quaternion::angleAxis | +( | +valType const & | +angle, | +
+ | + | valType const & | +x, | +
+ | + | valType const & | +y, | +
+ | + | valType const & | +z | +
+ | ) | ++ |
Build a quaternion from an angle and a normalized axis.
+From GLM_GTX_quaternion extension.
+ +detail::tquat<valType> glm::gtx::quaternion::angleAxis | +( | +valType const & | +angle, | +
+ | + | detail::tvec3< valType > const & | +axis | +
+ | ) | ++ |
Build a quaternion from an angle and a normalized axis.
+From GLM_GTX_quaternion extension.
+ +detail::tvec3<valType> glm::gtx::quaternion::axis | +( | +detail::tquat< valType > const & | +x | ) | ++ |
Returns the q rotation axis.
+From GLM_GTX_quaternion extension.
+ +detail::tvec3<valType> glm::gtx::quaternion::cross | +( | +detail::tquat< valType > const & | +q, | +
+ | + | detail::tvec3< valType > const & | +v | +
+ | ) | ++ |
Compute a cross product between a quaternion and a vector.
+From GLM_GTX_quaternion extension.
+ +detail::tvec3<valType> glm::gtx::quaternion::cross | +( | +detail::tvec3< valType > const & | +v, | +
+ | + | detail::tquat< valType > const & | +q | +
+ | ) | ++ |
Compute a cross product between a vector and a quaternion.
+From GLM_GTX_quaternion extension.
+ +detail::tvec3<valType> glm::gtx::quaternion::eulerAngles | +( | +detail::tquat< valType > const & | +x | ) | ++ |
Returns euler angles, yitch as x, yaw as y, roll as z.
+From GLM_GTX_quaternion extension.
+ +detail::tquat<valType> glm::gtx::quaternion::exp | +( | +detail::tquat< valType > const & | +q, | +
+ | + | valType const & | +exponent | +
+ | ) | ++ |
Returns a exp of a quaternion.
+From GLM_GTX_quaternion extension.
+ +valType glm::gtx::quaternion::extractRealComponent | +( | +detail::tquat< valType > const & | +q | ) | ++ |
Extract the real component of a quaternion.
+From GLM_GTX_quaternion extension.
+ +detail::tquat<T> glm::gtx::quaternion::fastMix | +( | +detail::tquat< T > const & | +x, | +
+ | + | detail::tquat< T > const & | +y, | +
+ | + | T const & | +a | +
+ | ) | ++ |
Quaternion normalized linear interpolation.
+From GLM_GTX_quaternion extension.
+ +detail::tquat<valType> glm::gtx::quaternion::intermediate | +( | +detail::tquat< valType > const & | +prev, | +
+ | + | detail::tquat< valType > const & | +curr, | +
+ | + | detail::tquat< valType > const & | +next | +
+ | ) | ++ |
Returns an intermediate control point for squad interpolation.
+From GLM_GTX_quaternion extension.
+ +detail::tquat<valType> glm::gtx::quaternion::log | +( | +detail::tquat< valType > const & | +q | ) | ++ |
Returns a log of a quaternion.
+From GLM_GTX_quaternion extension.
+ +valType glm::gtx::quaternion::pitch | +( | +detail::tquat< valType > const & | +x | ) | ++ |
Returns pitch value of euler angles in degrees.
+From GLM_GTX_quaternion extension.
+ +detail::tquat<valType> glm::gtx::quaternion::pow | +( | +detail::tquat< valType > const & | +x, | +
+ | + | valType const & | +y | +
+ | ) | ++ |
Returns x raised to the y power.
+From GLM_GTX_quaternion extension.
+ +valType glm::gtx::quaternion::roll | +( | +detail::tquat< valType > const & | +x | ) | ++ |
Returns roll value of euler angles in degrees.
+From GLM_GTX_quaternion extension.
+ +detail::tvec3<valType> glm::gtx::quaternion::rotate | +( | +detail::tquat< valType > const & | +q, | +
+ | + | detail::tvec3< valType > const & | +v | +
+ | ) | ++ |
Returns quarternion square root.
+From GLM_GTX_quaternion extension. Rotates a 3 components vector by a quaternion. From GLM_GTX_transform extension.
+ +detail::tvec4<valType> glm::gtx::quaternion::rotate | +( | +detail::tquat< valType > const & | +q, | +
+ | + | detail::tvec4< valType > const & | +v | +
+ | ) | ++ |
Rotates a 4 components vector by a quaternion.
+From GLM_GTX_transform extension.
+ +detail::tquat<T> glm::gtx::quaternion::shortMix | +( | +detail::tquat< T > const & | +x, | +
+ | + | detail::tquat< T > const & | +y, | +
+ | + | T const & | +a | +
+ | ) | ++ |
Quaternion interpolation using the rotation short path.
+From GLM_GTX_quaternion extension.
+ +detail::tquat<valType> glm::gtx::quaternion::squad | +( | +detail::tquat< valType > const & | +q1, | +
+ | + | detail::tquat< valType > const & | +q2, | +
+ | + | detail::tquat< valType > const & | +s1, | +
+ | + | detail::tquat< valType > const & | +s2, | +
+ | + | valType const & | +h | +
+ | ) | ++ |
Compute a point on a path according squad equation.
+q1 and q2 are control points; s1 and s2 are intermediate control points. From GLM_GTX_quaternion extension.
+ +detail::tmat3x3<valType> glm::gtx::quaternion::toMat3 | +( | +detail::tquat< valType > const & | +x | ) | ++ |
Converts a quaternion to a 3 * 3 matrix.
+From GLM_GTX_quaternion extension.
+ +Definition at line 171 of file gtx/quaternion.hpp.
+ +References glm::gtc::quaternion::mat3_cast().
+ +detail::tmat4x4<valType> glm::gtx::quaternion::toMat4 | +( | +detail::tquat< valType > const & | +x | ) | ++ |
Converts a quaternion to a 4 * 4 matrix.
+From GLM_GTX_quaternion extension.
+ +Definition at line 177 of file gtx/quaternion.hpp.
+ +References glm::gtc::quaternion::mat4_cast().
+ +detail::tquat<valType> glm::gtx::quaternion::toQuat | +( | +detail::tmat4x4< valType > const & | +x | ) | ++ |
Converts a 4 * 4 matrix to a quaternion.
+From GLM_GTX_quaternion extension.
+ +Definition at line 189 of file gtx/quaternion.hpp.
+ +References glm::gtc::quaternion::quat_cast().
+ +detail::tquat<valType> glm::gtx::quaternion::toQuat | +( | +detail::tmat3x3< valType > const & | +x | ) | ++ |
Converts a 3 * 3 matrix to a quaternion.
+From GLM_GTX_quaternion extension.
+ +Definition at line 183 of file gtx/quaternion.hpp.
+ +References glm::gtc::quaternion::quat_cast().
+ +valType glm::gtx::quaternion::yaw | +( | +detail::tquat< valType > const & | +x | ) | ++ |
Returns yaw value of euler angles in degrees.
+From GLM_GTX_quaternion extension.
+ ++ |
Generate random number from various distribution methods. +More...
++Functions | |
+template<typename T > | |
T | compRand1 () |
+template<typename T > | |
T | compRand1 (T Min, T Max) |
+template<typename T > | |
detail::tvec2< T > | compRand2 (T Min, T Max) |
+template<typename T > | |
detail::tvec2< T > | compRand2 (const detail::tvec2< T > &Min, const detail::tvec2< T > &Max) |
+template<typename T > | |
detail::tvec3< T > | compRand3 (T Min, T Max) |
+template<typename T > | |
detail::tvec3< T > | compRand3 (const detail::tvec3< T > &Min, const detail::tvec3< T > &Max) |
+template<typename T > | |
detail::tvec3< T > | compRand4 (const detail::tvec4< T > &Min, const detail::tvec4< T > &Max) |
+template<typename T > | |
detail::tvec4< T > | compRand4 (T Min, T Max) |
+template<typename T > | |
T | gaussRand1 (T mean, T std_deviation) |
+template<typename T > | |
detail::tvec2< T > | gaussRand2 (const detail::tvec2< T > &mean, const detail::tvec2< T > &std_deviation) |
+template<typename T > | |
detail::tvec2< T > | gaussRand2 (T mean, T std_deviation) |
+template<typename T > | |
detail::tvec2< T > | gaussRand2 (const detail::tvec2< T > &mean, T std_deviation) |
+template<typename T > | |
detail::tvec2< T > | gaussRand2 (T mean, const detail::tvec2< T > &std_deviation) |
+template<typename T > | |
detail::tvec3< T > | gaussRand3 (const detail::tvec3< T > &mean, const detail::tvec3< T > &std_deviation) |
+template<typename T > | |
detail::tvec3< T > | gaussRand3 (T mean, T std_deviation) |
+template<typename T > | |
detail::tvec3< T > | gaussRand3 (const detail::tvec3< T > &mean, T std_deviation) |
+template<typename T > | |
detail::tvec3< T > | gaussRand3 (T mean, const detail::tvec3< T > &std_deviation) |
+template<typename T > | |
detail::tvec4< T > | gaussRand4 (T mean, T std_deviation) |
+template<typename T > | |
detail::tvec4< T > | gaussRand4 (T mean, const detail::tvec4< T > &std_deviation) |
+template<typename T > | |
detail::tvec4< T > | gaussRand4 (const detail::tvec4< T > &mean, const detail::tvec4< T > &std_deviation) |
+template<typename T > | |
detail::tvec4< T > | gaussRand4 (const detail::tvec4< T > &mean, T std_deviation) |
+template<typename T > | |
detail::tvec2< T > | normalizedRand2 () |
+template<typename T > | |
detail::tvec2< T > | normalizedRand2 (T Min, T Max) |
+template<typename T > | |
detail::tvec3< T > | normalizedRand3 (T Min, T Max) |
+template<typename T > | |
detail::tvec3< T > | normalizedRand3 () |
template<typename T > | |
T | signedRand1 () |
+template<typename T > | |
detail::tvec2< T > | signedRand2 () |
+template<typename T > | |
detail::tvec3< T > | signedRand3 () |
+template<typename T > | |
detail::tvec4< T > | signedRand4 () |
+template<typename T > | |
detail::tvec2< T > | vecRand2 () |
+template<typename T > | |
detail::tvec2< T > | vecRand2 (T MinRadius, T MaxRadius) |
+template<typename T > | |
detail::tvec3< T > | vecRand3 () |
+template<typename T > | |
detail::tvec3< T > | vecRand3 (T MinRadius, T MaxRadius) |
+template<typename T > | |
detail::tvec4< T > | vecRand4 (T MinRadius, T MaxRadius) |
+template<typename T > | |
detail::tvec4< T > | vecRand4 () |
Generate random number from various distribution methods.
+<glm/gtx/random.hpp> need to be included to use these functionalities.
+T glm::gtx::random::signedRand1 | +( | +) | ++ |
Generate a random number in the interval [-1, 1], according a linear distribution.
+From GLM_GTX_random extension.
+ ++ |
Projection of a vector to other one. +More...
++Typedefs | |
typedef uint8 | byte |
typedef uint32 | dword |
typedef uint64 | qword |
typedef uint16 | word |
Projection of a vector to other one.
+<glm/gtx/raw_data.hpp> need to be included to use these functionalities.
+typedef uint8 byte | +
Type for byte numbers.
+From GLM_GTX_raw_data extension.
+ +Definition at line 35 of file raw_data.hpp.
+ +typedef uint32 dword | +
Type for dword numbers.
+From GLM_GTX_raw_data extension.
+ +Definition at line 43 of file raw_data.hpp.
+ +typedef uint64 qword | +
Type for qword numbers.
+From GLM_GTX_raw_data extension.
+ +Definition at line 47 of file raw_data.hpp.
+ +typedef uint16 word | +
Type for word numbers.
+From GLM_GTX_raw_data extension.
+ +Definition at line 39 of file raw_data.hpp.
+ ++ |
Define secant, cosecant and cotangent functions. +More...
++Functions | |
template<typename genType > | |
genType | acot (genType const &x) |
template<typename genType > | |
genType | acoth (genType const &x) |
template<typename genType > | |
genType | acsc (genType const &x) |
template<typename genType > | |
genType | acsch (genType const &x) |
template<typename genType > | |
genType | asec (genType const &x) |
template<typename genType > | |
genType | asech (genType const &x) |
template<typename genType > | |
genType | cot (genType const &angle) |
template<typename genType > | |
genType | coth (genType const &angle) |
template<typename genType > | |
genType | csc (genType const &angle) |
template<typename genType > | |
genType | csch (genType const &angle) |
template<typename genType > | |
genType | sec (genType const &angle) |
template<typename genType > | |
genType | sech (genType const &angle) |
Define secant, cosecant and cotangent functions.
+<glm/gtx/reciprocal.hpp> need to be included to use these functionalities.
+genType glm::gtx::reciprocal::acot | +( | +genType const & | +x | ) | ++ |
Inverse cotangent function.
+From GLM_GTX_reciprocal extension.
+ +genType glm::gtx::reciprocal::acoth | +( | +genType const & | +x | ) | ++ |
Inverse cotangent hyperbolic function.
+From GLM_GTX_reciprocal extension.
+ +genType glm::gtx::reciprocal::acsc | +( | +genType const & | +x | ) | ++ |
Inverse cosecant function.
+From GLM_GTX_reciprocal extension.
+ +genType glm::gtx::reciprocal::acsch | +( | +genType const & | +x | ) | ++ |
Inverse cosecant hyperbolic function.
+From GLM_GTX_reciprocal extension.
+ +genType glm::gtx::reciprocal::asec | +( | +genType const & | +x | ) | ++ |
Inverse secant function.
+From GLM_GTX_reciprocal extension.
+ +genType glm::gtx::reciprocal::asech | +( | +genType const & | +x | ) | ++ |
Inverse secant hyperbolic function.
+From GLM_GTX_reciprocal extension.
+ +genType glm::gtx::reciprocal::cot | +( | +genType const & | +angle | ) | ++ |
Cotangent function.
+adjacent / opposite or 1 / tan(x) From GLM_GTX_reciprocal extension.
+ +genType glm::gtx::reciprocal::coth | +( | +genType const & | +angle | ) | ++ |
Cotangent hyperbolic function.
+From GLM_GTX_reciprocal extension.
+ +genType glm::gtx::reciprocal::csc | +( | +genType const & | +angle | ) | ++ |
Cosecant function.
+hypotenuse / opposite or 1 / sin(x) From GLM_GTX_reciprocal extension.
+ +genType glm::gtx::reciprocal::csch | +( | +genType const & | +angle | ) | ++ |
Cosecant hyperbolic function.
+From GLM_GTX_reciprocal extension.
+ +genType glm::gtx::reciprocal::sec | +( | +genType const & | +angle | ) | ++ |
Secant function.
+hypotenuse / adjacent or 1 / cos(x) From GLM_GTX_reciprocal extension.
+ +genType glm::gtx::reciprocal::sech | +( | +genType const & | +angle | ) | ++ |
Secant hyperbolic function.
+From GLM_GTX_reciprocal extension.
+ ++ |
Function to directly rotate a vector. +More...
++Functions | |
template<typename T > | |
detail::tmat4x4< T > | orientation (detail::tvec3< T > const &Normal, detail::tvec3< T > const &Up) |
template<typename T > | |
detail::tvec2< T > | rotate (detail::tvec2< T > const &v, T const &angle) |
template<typename T > | |
detail::tvec3< T > | rotate (detail::tvec3< T > const &v, T const &angle, detail::tvec3< T > const &normal) |
template<typename T > | |
detail::tvec4< T > | rotate (detail::tvec4< T > const &v, T const &angle, detail::tvec3< T > const &normal) |
template<typename T > | |
detail::tvec3< T > | rotateX (detail::tvec3< T > const &v, T const &angle) |
template<typename T > | |
detail::tvec4< T > | rotateX (detail::tvec4< T > const &v, T const &angle) |
template<typename T > | |
detail::tvec3< T > | rotateY (detail::tvec3< T > const &v, T const &angle) |
template<typename T > | |
detail::tvec4< T > | rotateY (detail::tvec4< T > const &v, T const &angle) |
template<typename T > | |
detail::tvec3< T > | rotateZ (detail::tvec3< T > const &v, T const &angle) |
template<typename T > | |
detail::tvec4< T > | rotateZ (detail::tvec4< T > const &v, T const &angle) |
Function to directly rotate a vector.
+<glm/gtx/rotate_vector.hpp> need to be included to use these functionalities.
+detail::tmat4x4<T> glm::gtx::rotate_vector::orientation | +( | +detail::tvec3< T > const & | +Normal, | +
+ | + | detail::tvec3< T > const & | +Up | +
+ | ) | ++ |
Build a rotation matrix from a normal and a up vector.
+From GLM_GTX_rotate_vector extension.
+ +detail::tvec2<T> glm::gtx::rotate_vector::rotate | +( | +detail::tvec2< T > const & | +v, | +
+ | + | T const & | +angle | +
+ | ) | ++ |
Rotate a two dimensional vector.
+From GLM_GTX_rotate_vector extension.
+ +detail::tvec3<T> glm::gtx::rotate_vector::rotate | +( | +detail::tvec3< T > const & | +v, | +
+ | + | T const & | +angle, | +
+ | + | detail::tvec3< T > const & | +normal | +
+ | ) | ++ |
Rotate a three dimensional vector around an axis.
+From GLM_GTX_rotate_vector extension.
+ +detail::tvec4<T> glm::gtx::rotate_vector::rotate | +( | +detail::tvec4< T > const & | +v, | +
+ | + | T const & | +angle, | +
+ | + | detail::tvec3< T > const & | +normal | +
+ | ) | ++ |
Rotate a four dimensional vector around an axis.
+From GLM_GTX_rotate_vector extension.
+ +detail::tvec3<T> glm::gtx::rotate_vector::rotateX | +( | +detail::tvec3< T > const & | +v, | +
+ | + | T const & | +angle | +
+ | ) | ++ |
Rotate a three dimensional vector around the X axis.
+From GLM_GTX_rotate_vector extension.
+ +detail::tvec4<T> glm::gtx::rotate_vector::rotateX | +( | +detail::tvec4< T > const & | +v, | +
+ | + | T const & | +angle | +
+ | ) | ++ |
Rotate a four dimentionnals vector around the X axis.
+From GLM_GTX_rotate_vector extension.
+ +detail::tvec3<T> glm::gtx::rotate_vector::rotateY | +( | +detail::tvec3< T > const & | +v, | +
+ | + | T const & | +angle | +
+ | ) | ++ |
Rotate a three dimensional vector around the Y axis.
+From GLM_GTX_rotate_vector extension.
+ +detail::tvec4<T> glm::gtx::rotate_vector::rotateY | +( | +detail::tvec4< T > const & | +v, | +
+ | + | T const & | +angle | +
+ | ) | ++ |
Rotate a four dimensional vector around the X axis.
+From GLM_GTX_rotate_vector extension.
+ +detail::tvec3<T> glm::gtx::rotate_vector::rotateZ | +( | +detail::tvec3< T > const & | +v, | +
+ | + | T const & | +angle | +
+ | ) | ++ |
Rotate a three dimensional vector around the Z axis.
+From GLM_GTX_rotate_vector extension.
+ +detail::tvec4<T> glm::gtx::rotate_vector::rotateZ | +( | +detail::tvec4< T > const & | +v, | +
+ | + | T const & | +angle | +
+ | ) | ++ |
Rotate a four dimensional vector around the X axis.
+From GLM_GTX_rotate_vector extension.
+ ++ |
SIMD implementation of mat4 type. +More...
++Functions | |
float | determinant (detail::fmat4x4SIMD const &m) |
GLM_ALIGNED_STRUCT (16) fmat4x4SIMD | |
detail::fmat4x4SIMD | inverse (detail::fmat4x4SIMD const &m) |
detail::tmat4x4< float > | mat4_cast (detail::fmat4x4SIMD const &x) |
detail::fmat4x4SIMD | matrixCompMult (detail::fmat4x4SIMD const &x, detail::fmat4x4SIMD const &y) |
detail::fmat4x4SIMD | outerProduct (detail::fvec4SIMD const &c, detail::fvec4SIMD const &r) |
detail::fmat4x4SIMD | transpose (detail::fmat4x4SIMD const &x) |
SIMD implementation of mat4 type.
+<glm/gtx/simd_mat4.hpp> need to be included to use these functionalities.
+float glm::gtx::simd_mat4::determinant | +( | +detail::fmat4x4SIMD const & | +m | ) | ++ |
Return the determinant of a mat4 matrix.
+(From GLM_GTX_simd_mat4 extension).
+ +GLM_ALIGNED_STRUCT | +( | +16 | +) | ++ |
4x4 Matrix implemented using SIMD SEE intrinsics.
+4-dimensional vector implemented using SIMD SEE intrinsics.
+ +Definition at line 36 of file simd_mat4.hpp.
+ +detail::fmat4x4SIMD glm::gtx::simd_mat4::inverse | +( | +detail::fmat4x4SIMD const & | +m | ) | ++ |
Return the inverse of a mat4 matrix.
+(From GLM_GTX_simd_mat4 extension).
+ +detail::tmat4x4<float> glm::gtx::simd_mat4::mat4_cast | +( | +detail::fmat4x4SIMD const & | +x | ) | ++ |
Convert a simdMat4 to a mat4.
+(From GLM_GTX_simd_mat4 extension)
+ +detail::fmat4x4SIMD glm::gtx::simd_mat4::matrixCompMult | +( | +detail::fmat4x4SIMD const & | +x, | +
+ | + | detail::fmat4x4SIMD const & | +y | +
+ | ) | ++ |
Multiply matrix x by matrix y component-wise, i.e., result[i][j] is the scalar product of x[i][j] and y[i][j].
+(From GLM_GTX_simd_mat4 extension).
+ +detail::fmat4x4SIMD glm::gtx::simd_mat4::outerProduct | +( | +detail::fvec4SIMD const & | +c, | +
+ | + | detail::fvec4SIMD const & | +r | +
+ | ) | ++ |
Treats the first parameter c as a column vector and the second parameter r as a row vector and does a linear algebraic matrix multiply c * r.
+(From GLM_GTX_simd_mat4 extension).
+ +detail::fmat4x4SIMD glm::gtx::simd_mat4::transpose | +( | +detail::fmat4x4SIMD const & | +x | ) | ++ |
Returns the transposed matrix of x (From GLM_GTX_simd_mat4 extension).
+ ++ |
SIMD implementation of vec4 type. +More...
++Functions | |
detail::fvec4SIMD | abs (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | ceil (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | clamp (detail::fvec4SIMD const &x, detail::fvec4SIMD const &minVal, detail::fvec4SIMD const &maxVal) |
detail::fvec4SIMD | cross (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y) |
float | distance (detail::fvec4SIMD const &p0, detail::fvec4SIMD const &p1) |
detail::fvec4SIMD | distance4 (detail::fvec4SIMD const &p0, detail::fvec4SIMD const &p1) |
detail::fvec4SIMD | dot4 (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y) |
detail::fvec4SIMD | fastInversesqrt (detail::fvec4SIMD const &x) |
float | fastLength (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | fastLength4 (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | fastNormalize (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | fastSqrt (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | floor (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | fma (detail::fvec4SIMD const &a, detail::fvec4SIMD const &b, detail::fvec4SIMD const &c) |
detail::fvec4SIMD | fract (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | inversesqrt (detail::fvec4SIMD const &x) |
float | length (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | length4 (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | max (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y) |
detail::fvec4SIMD | min (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y) |
detail::fvec4SIMD | mix (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y, detail::fvec4SIMD const &a) |
detail::fvec4SIMD | mod (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y) |
detail::fvec4SIMD | mod (detail::fvec4SIMD const &x, float const &y) |
float | niceLength (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | niceLength4 (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | niceSqrt (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | normalize (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | reflect (detail::fvec4SIMD const &I, detail::fvec4SIMD const &N) |
detail::fvec4SIMD | refract (detail::fvec4SIMD const &I, detail::fvec4SIMD const &N, float const &eta) |
detail::fvec4SIMD | round (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | sign (detail::fvec4SIMD const &x) |
float | simdDot (detail::fvec4SIMD const &x, detail::fvec4SIMD const &y) |
detail::fvec4SIMD | simdFaceforward (detail::fvec4SIMD const &N, detail::fvec4SIMD const &I, detail::fvec4SIMD const &Nref) |
detail::fvec4SIMD | smoothstep (detail::fvec4SIMD const &edge0, detail::fvec4SIMD const &edge1, detail::fvec4SIMD const &x) |
detail::fvec4SIMD | sqrt (detail::fvec4SIMD const &x) |
detail::fvec4SIMD | step (detail::fvec4SIMD const &edge, detail::fvec4SIMD const &x) |
detail::fvec4SIMD | trunc (detail::fvec4SIMD const &x) |
detail::tvec4< float > | vec4_cast (detail::fvec4SIMD const &x) |
SIMD implementation of vec4 type.
+<glm/gtx/simd_vec4.hpp> need to be included to use these functionalities.
+detail::fvec4SIMD glm::gtx::simd_vec4::abs | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Returns x if x >= 0; otherwise, it returns -x.
+(From GLM_GTX_simd_vec4 extension, common function)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::ceil | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Returns a value equal to the nearest integer to x.
+A fractional part of 0.5 will round toward the nearest even integer. (Both 3.5 and 4.5 for x will return 4.0.) (From GLM_GTX_simd_vec4 extension, common function) Returns a value equal to the nearest integer that is greater than or equal to x. (From GLM_GTX_simd_vec4 extension, common function)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::clamp | +( | +detail::fvec4SIMD const & | +x, | +
+ | + | detail::fvec4SIMD const & | +minVal, | +
+ | + | detail::fvec4SIMD const & | +maxVal | +
+ | ) | ++ |
Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal and maxVal.
+(From GLM_GTX_simd_vec4 extension, common function)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::cross | +( | +detail::fvec4SIMD const & | +x, | +
+ | + | detail::fvec4SIMD const & | +y | +
+ | ) | ++ |
Returns the cross product of x and y.
+(From GLM_GTX_simd_vec4 extension, geometry functions)
+ +float glm::gtx::simd_vec4::distance | +( | +detail::fvec4SIMD const & | +p0, | +
+ | + | detail::fvec4SIMD const & | +p1 | +
+ | ) | ++ |
Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).
+(From GLM_GTX_simd_vec4 extension, geometry functions)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::distance4 | +( | +detail::fvec4SIMD const & | +p0, | +
+ | + | detail::fvec4SIMD const & | +p1 | +
+ | ) | ++ |
Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).
+(From GLM_GTX_simd_vec4 extension, geometry functions)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::dot4 | +( | +detail::fvec4SIMD const & | +x, | +
+ | + | detail::fvec4SIMD const & | +y | +
+ | ) | ++ |
Returns the dot product of x and y, i.e., result = x * y.
+(From GLM_GTX_simd_vec4 extension, geometry functions)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::fastInversesqrt | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Returns the reciprocal of the positive square root of x.
+Faster than inversesqrt but less accurate. (From GLM_GTX_simd_vec4 extension, exponential function)
+ +float glm::gtx::simd_vec4::fastLength | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Returns the length of x, i.e., sqrt(x * x).
+Less accurate but much faster than simdLength. (From GLM_GTX_simd_vec4 extension, geometry functions)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::fastLength4 | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Returns the length of x, i.e., sqrt(x * x).
+Less accurate but much faster than simdLength4. (From GLM_GTX_simd_vec4 extension, geometry functions)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::fastNormalize | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Returns a vector in the same direction as x but with length of 1.
+Less accurate but much faster than simdNormalize. (From GLM_GTX_simd_vec4 extension, geometry functions)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::fastSqrt | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Returns the positive square root of x Less accurate but much faster than sqrt.
+(From GLM_GTX_simd_vec4 extension, exponential function)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::floor | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Returns a value equal to the nearest integer that is less then or equal to x.
+(From GLM_GTX_simd_vec4 extension, common function)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::fma | +( | +detail::fvec4SIMD const & | +a, | +
+ | + | detail::fvec4SIMD const & | +b, | +
+ | + | detail::fvec4SIMD const & | +c | +
+ | ) | ++ |
Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of floating point representations.
+Returns false otherwise, including for implementations with no NaN representations. (From GLM_GTX_simd_vec4 extension, common function) Returns true if x holds a positive infinity or negative infinity representation in the underlying implementation's set of floating point representations. Returns false otherwise, including for implementations with no infinity representations. (From GLM_GTX_simd_vec4 extension, common function) Returns a signed or unsigned integer value representing the encoding of a floating-point value. The floatingpoint value's bit-level representation is preserved. (From GLM_GTX_simd_vec4 extension, common function) Returns a floating-point value corresponding to a signed or unsigned integer encoding of a floating-point value. If an inf or NaN is passed in, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit-level representation is preserved. (From GLM_GTX_simd_vec4 extension, common function) Computes and returns a * b + c. (From GLM_GTX_simd_vec4 extension, common function)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::fract | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Return x - floor(x).
+(From GLM_GTX_simd_vec4 extension, common function)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::inversesqrt | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Returns the reciprocal of the positive square root of x.
+(From GLM_GTX_simd_vec4 extension, exponential function)
+ +float glm::gtx::simd_vec4::length | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Splits x into a floating-point significand in the range [0.5, 1.0) and an integral exponent of two, such that: x = significand * exp(2, exponent) The significand is returned by the function and the exponent is returned in the parameter exp.
+For a floating-point value of zero, the significant and exponent are both zero. For a floating-point value that is an infinity or is not a number, the results are undefined. (From GLM_GTX_simd_vec4 extension, common function) Builds a floating-point number from x and the corresponding integral exponent of two in exp, returning: significand * exp(2, exponent) If this product is too large to be represented in the floating-point type, the result is undefined. (From GLM_GTX_simd_vec4 extension, common function) Returns the length of x, i.e., sqrt(x * x). (From GLM_GTX_simd_vec4 extension, geometry functions)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::length4 | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Returns the length of x, i.e., sqrt(x * x).
+(From GLM_GTX_simd_vec4 extension, geometry functions)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::max | +( | +detail::fvec4SIMD const & | +x, | +
+ | + | detail::fvec4SIMD const & | +y | +
+ | ) | ++ |
Returns y if x < y; otherwise, it returns x.
+(From GLM_GTX_simd_vec4 extension, common function)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::min | +( | +detail::fvec4SIMD const & | +x, | +
+ | + | detail::fvec4SIMD const & | +y | +
+ | ) | ++ |
Returns the fractional part of x and sets i to the integer part (as a whole number floating point value).
+Both the return value and the output parameter will have the same sign as x. (From GLM_GTX_simd_vec4 extension, common function) Returns y if y < x; otherwise, it returns x. (From GLM_GTX_simd_vec4 extension, common function)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::mix | +( | +detail::fvec4SIMD const & | +x, | +
+ | + | detail::fvec4SIMD const & | +y, | +
+ | + | detail::fvec4SIMD const & | +a | +
+ | ) | ++ |
(From GLM_GTX_simd_vec4 extension, common function)
+From GLSL 1.30.08 specification, section 8.3
+[in] | x | Floating point scalar or vector. |
[in] | y | Floating point scalar or vector. |
[in] | a | Floating point or boolean scalar or vector. |
detail::fvec4SIMD glm::gtx::simd_vec4::mod | +( | +detail::fvec4SIMD const & | +x, | +
+ | + | detail::fvec4SIMD const & | +y | +
+ | ) | ++ |
Modulus.
+Returns x - y * floor(x / y) for each component in x using the floating point value y. (From GLM_GTX_simd_vec4 extension, common function)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::mod | +( | +detail::fvec4SIMD const & | +x, | +
+ | + | float const & | +y | +
+ | ) | ++ |
Modulus.
+Returns x - y * floor(x / y) for each component in x using the floating point value y. (From GLM_GTX_simd_vec4 extension, common function)
+ +float glm::gtx::simd_vec4::niceLength | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Returns the length of x, i.e., sqrt(x * x).
+Slightly more accurate but much slower than simdLength. (From GLM_GTX_simd_vec4 extension, geometry functions)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::niceLength4 | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Returns the length of x, i.e., sqrt(x * x).
+Slightly more accurate but much slower than simdLength4. (From GLM_GTX_simd_vec4 extension, geometry functions)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::niceSqrt | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Returns the positive square root of x with the nicest quality but very slow.
+Slightly more accurate but much slower than simdSqrt. (From GLM_GTX_simd_vec4 extension, exponential function)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::normalize | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Returns a vector in the same direction as x but with length of 1.
+(From GLM_GTX_simd_vec4 extension, geometry functions)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::reflect | +( | +detail::fvec4SIMD const & | +I, | +
+ | + | detail::fvec4SIMD const & | +N | +
+ | ) | ++ |
For the incident vector I and surface orientation N, returns the reflection direction : result = I - 2.0 * dot(N, I) * N.
+(From GLM_GTX_simd_vec4 extension, geometry functions)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::refract | +( | +detail::fvec4SIMD const & | +I, | +
+ | + | detail::fvec4SIMD const & | +N, | +
+ | + | float const & | +eta | +
+ | ) | ++ |
For the incident vector I and surface normal N, and the ratio of indices of refraction eta, return the refraction vector.
+(From GLM_GTX_simd_vec4 extension, geometry functions)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::round | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Returns a value equal to the nearest integer to x.
+The fraction 0.5 will round in a direction chosen by the implementation, presumably the direction that is fastest. This includes the possibility that round(x) returns the same value as roundEven(x) for all values of x. (From GLM_GTX_simd_vec4 extension, common function)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::sign | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Returns 1.0 if x > 0, 0.0 if x = 0, or -1.0 if x < 0.
+(From GLM_GTX_simd_vec4 extension, common function)
+ +float glm::gtx::simd_vec4::simdDot | +( | +detail::fvec4SIMD const & | +x, | +
+ | + | detail::fvec4SIMD const & | +y | +
+ | ) | ++ |
Returns the dot product of x and y, i.e., result = x * y.
+(From GLM_GTX_simd_vec4 extension, geometry functions)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::simdFaceforward | +( | +detail::fvec4SIMD const & | +N, | +
+ | + | detail::fvec4SIMD const & | +I, | +
+ | + | detail::fvec4SIMD const & | +Nref | +
+ | ) | ++ |
If dot(Nref, I) < 0.0, return N, otherwise, return -N.
+(From GLM_GTX_simd_vec4 extension, geometry functions)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::smoothstep | +( | +detail::fvec4SIMD const & | +edge0, | +
+ | + | detail::fvec4SIMD const & | +edge1, | +
+ | + | detail::fvec4SIMD const & | +x | +
+ | ) | ++ |
Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and performs smooth Hermite interpolation between 0 and 1 when edge0 < x < edge1.
+This is useful in cases where you would want a threshold function with a smooth transition. This is equivalent to: genType t; t = clamp ((x – edge0) / (edge1 – edge0), 0, 1); return t * t * (3 – 2 * t); Results are undefined if edge0 >= edge1. (From GLM_GTX_simd_vec4 extension, common function)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::sqrt | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Returns the positive square root of x.
+(From GLM_GTX_simd_vec4 extension, exponential function)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::step | +( | +detail::fvec4SIMD const & | +edge, | +
+ | + | detail::fvec4SIMD const & | +x | +
+ | ) | ++ |
Returns 0.0 if x < edge, otherwise it returns 1.0.
+(From GLM_GTX_simd_vec4 extension, common function)
+ +detail::fvec4SIMD glm::gtx::simd_vec4::trunc | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Returns a value equal to the nearest integer to x whose absolute value is not larger than the absolute value of x.
+(From GLM_GTX_simd_vec4 extension, common function)
+ +detail::tvec4<float> glm::gtx::simd_vec4::vec4_cast | +( | +detail::fvec4SIMD const & | +x | ) | ++ |
Convert a simdVec4 to a vec4.
+(From GLM_GTX_simd_vec4 extension)
+ ++ |
Spline functions. +More...
++Functions | |
template<typename genType > | |
genType | catmullRom (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s) |
template<typename genType > | |
genType | cubic (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s) |
template<typename genType > | |
genType | hermite (genType const &v1, genType const &t1, genType const &v2, genType const &t2, typename genType::value_type const &s) |
Spline functions.
+<glm/gtx/spline.hpp> need to be included to use these functionalities.
+genType catmullRom | +( | +genType const & | +v1, | +
+ | + | genType const & | +v2, | +
+ | + | genType const & | +v3, | +
+ | + | genType const & | +v4, | +
+ | + | typename genType::value_type const & | +s | +
+ | ) | ++ |
Return a point from a catmull rom curve.
+From GLM_GTX_spline extension.
+ +genType cubic | +( | +genType const & | +v1, | +
+ | + | genType const & | +v2, | +
+ | + | genType const & | +v3, | +
+ | + | genType const & | +v4, | +
+ | + | typename genType::value_type const & | +s | +
+ | ) | ++ |
Return a point from a cubic curve.
+From GLM_GTX_spline extension.
+ +genType hermite | +( | +genType const & | +v1, | +
+ | + | genType const & | +t1, | +
+ | + | genType const & | +v2, | +
+ | + | genType const & | +t2, | +
+ | + | typename genType::value_type const & | +s | +
+ | ) | ++ |
Return a point from a hermite curve.
+From GLM_GTX_spline extension.
+ ++ |
Setup strings for GLM type values. +More...
++Functions | |
template<typename genType > | |
std::string | to_string (genType const &x) |
Setup strings for GLM type values.
+<glm/gtx/string_cast.hpp> need to be included to use these functionalities.
+std::string glm::gtx::string_cast::to_string | +( | +genType const & | +x | ) | ++ |
Create a string from a GLM type value.
+From GLM_GTX_string_cast extension.
+ ++ |
Add transformation matrices. +More...
++Functions | |
template<typename T > | |
detail::tmat4x4< T > | rotate (T angle, T x, T y, T z) |
template<typename T > | |
detail::tmat4x4< T > | rotate (T angle, detail::tvec3< T > const &v) |
template<typename T > | |
detail::tmat4x4< T > | rotate (detail::tmat4x4< T > const &m, T angle, T x, T y, T z) |
template<typename T > | |
detail::tmat4x4< T > | scale (detail::tvec3< T > const &v) |
template<typename T > | |
detail::tmat4x4< T > | scale (detail::tmat4x4< T > const &m, T x, T y, T z) |
template<typename T > | |
detail::tmat4x4< T > | scale (T x, T y, T z) |
template<typename T > | |
detail::tmat4x4< T > | translate (detail::tmat4x4< T > const &m, T x, T y, T z) |
template<typename T > | |
detail::tmat4x4< T > | translate (T x, T y, T z) |
template<typename T > | |
detail::tmat4x4< T > | translate (detail::tvec3< T > const &v) |
Add transformation matrices.
+<glm/gtx/transform.hpp> need to be included to use these functionalities.
+detail::tmat4x4<T> glm::gtx::transform::rotate | +( | +T | +angle, | +
+ | + | T | +x, | +
+ | + | T | +y, | +
+ | + | T | +z | +
+ | ) | ++ |
Builds a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in degrees.
+From GLM_GTX_transform extension.
+ +detail::tmat4x4<T> glm::gtx::transform::rotate | +( | +T | +angle, | +
+ | + | detail::tvec3< T > const & | +v | +
+ | ) | ++ |
Builds a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in degrees.
+From GLM_GTX_transform extension.
+ +detail::tmat4x4<T> glm::gtx::transform::rotate | +( | +detail::tmat4x4< T > const & | +m, | +
+ | + | T | +angle, | +
+ | + | T | +x, | +
+ | + | T | +y, | +
+ | + | T | +z | +
+ | ) | ++ |
Transforms a matrix with a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in degrees.
+From GLM_GTX_transform extension.
+ +detail::tmat4x4<T> glm::gtx::transform::scale | +( | +detail::tvec3< T > const & | +v | ) | ++ |
Transforms a matrix with a scale 4 * 4 matrix created from a vector of 3 components.
+From GLM_GTX_transform extension.
+ +detail::tmat4x4<T> glm::gtx::transform::scale | +( | +detail::tmat4x4< T > const & | +m, | +
+ | + | T | +x, | +
+ | + | T | +y, | +
+ | + | T | +z | +
+ | ) | ++ |
Transforms a matrix with a scale 4 * 4 matrix created from 3 scalars.
+From GLM_GTX_transform extension.
+ +detail::tmat4x4<T> glm::gtx::transform::scale | +( | +T | +x, | +
+ | + | T | +y, | +
+ | + | T | +z | +
+ | ) | ++ |
Builds a scale 4 * 4 matrix created from 3 scalars.
+From GLM_GTX_transform extension.
+ +detail::tmat4x4<T> glm::gtx::transform::translate | +( | +detail::tmat4x4< T > const & | +m, | +
+ | + | T | +x, | +
+ | + | T | +y, | +
+ | + | T | +z | +
+ | ) | ++ |
Transforms a matrix with a translation 4 * 4 matrix created from 3 scalars.
+From GLM_GTX_transform extension.
+ +detail::tmat4x4<T> glm::gtx::transform::translate | +( | +T | +x, | +
+ | + | T | +y, | +
+ | + | T | +z | +
+ | ) | ++ |
Builds a translation 4 * 4 matrix created from 3 scalars.
+From GLM_GTX_transform extension.
+ +detail::tmat4x4<T> glm::gtx::transform::translate | +( | +detail::tvec3< T > const & | +v | ) | ++ |
Transforms a matrix with a translation 4 * 4 matrix created from 3 scalars.
+From GLM_GTX_transform extension.
+ ++ |
Add extra transformation matrices. +More...
++Functions | |
template<typename T > | |
detail::tmat3x3< T > | proj2D (const detail::tmat3x3< T > &m, const detail::tvec3< T > &normal) |
template<typename T > | |
detail::tmat4x4< T > | proj3D (const detail::tmat4x4< T > &m, const detail::tvec3< T > &normal) |
template<typename valType > | |
detail::tmat4x4< valType > | scaleBias (valType scale, valType bias) |
template<typename valType > | |
detail::tmat4x4< valType > | scaleBias (detail::tmat4x4< valType > const &m, valType scale, valType bias) |
template<typename T > | |
detail::tmat3x3< T > | shearX2D (detail::tmat3x3< T > const &m, T y) |
template<typename T > | |
detail::tmat4x4< T > | shearX3D (const detail::tmat4x4< T > &m, T y, T z) |
template<typename T > | |
detail::tmat3x3< T > | shearY2D (detail::tmat3x3< T > const &m, T x) |
template<typename T > | |
detail::tmat4x4< T > | shearY3D (const detail::tmat4x4< T > &m, T x, T z) |
template<typename T > | |
detail::tmat4x4< T > | shearZ3D (const detail::tmat4x4< T > &m, T x, T y) |
Add extra transformation matrices.
+<glm/gtx/transform2.hpp> need to be included to use these functionalities.
+detail::tmat3x3<T> glm::gtx::transform2::proj2D | +( | +const detail::tmat3x3< T > & | +m, | +
+ | + | const detail::tvec3< T > & | +normal | +
+ | ) | ++ |
Build planar projection matrix along normal axis.
+From GLM_GTX_transform2 extension.
+ +detail::tmat4x4<T> glm::gtx::transform2::proj3D | +( | +const detail::tmat4x4< T > & | +m, | +
+ | + | const detail::tvec3< T > & | +normal | +
+ | ) | ++ |
Build planar projection matrix along normal axis.
+From GLM_GTX_transform2 extension.
+ +detail::tmat4x4<valType> glm::gtx::transform2::scaleBias | +( | +valType | +scale, | +
+ | + | valType | +bias | +
+ | ) | ++ |
Build a scale bias matrix.
+From GLM_GTX_transform2 extension.
+ +detail::tmat4x4<valType> glm::gtx::transform2::scaleBias | +( | +detail::tmat4x4< valType > const & | +m, | +
+ | + | valType | +scale, | +
+ | + | valType | +bias | +
+ | ) | ++ |
Build a scale bias matrix.
+From GLM_GTX_transform2 extension.
+ +detail::tmat3x3<T> glm::gtx::transform2::shearX2D | +( | +detail::tmat3x3< T > const & | +m, | +
+ | + | T | +y | +
+ | ) | ++ |
Transforms a matrix with a shearing on X axis.
+From GLM_GTX_transform2 extension.
+ +detail::tmat4x4<T> glm::gtx::transform2::shearX3D | +( | +const detail::tmat4x4< T > & | +m, | +
+ | + | T | +y, | +
+ | + | T | +z | +
+ | ) | ++ |
Transforms a matrix with a shearing on X axis From GLM_GTX_transform2 extension.
+ +detail::tmat3x3<T> glm::gtx::transform2::shearY2D | +( | +detail::tmat3x3< T > const & | +m, | +
+ | + | T | +x | +
+ | ) | ++ |
Transforms a matrix with a shearing on Y axis.
+From GLM_GTX_transform2 extension.
+ +detail::tmat4x4<T> glm::gtx::transform2::shearY3D | +( | +const detail::tmat4x4< T > & | +m, | +
+ | + | T | +x, | +
+ | + | T | +z | +
+ | ) | ++ |
Transforms a matrix with a shearing on Y axis.
+From GLM_GTX_transform2 extension.
+ +detail::tmat4x4<T> glm::gtx::transform2::shearZ3D | +( | +const detail::tmat4x4< T > & | +m, | +
+ | + | T | +x, | +
+ | + | T | +y | +
+ | ) | ++ |
Transforms a matrix with a shearing on Z axis.
+From GLM_GTX_transform2 extension.
+ ++ |
Add support for unsigned integer for core functions. +More...
++Typedefs | |
typedef signed int | sint |
+Functions | |
uint | mod (uint x, uint y) |
uint | pow (uint x, uint y) |
uint | sqrt (uint x) |
Add support for unsigned integer for core functions.
+<glm/gtx/unsigned_int.hpp> need to be included to use these functionalities.
+typedef signed int sint | +
32bit signed integer.
+From GLM_GTX_unsigned_int extension.
+ +Definition at line 36 of file unsigned_int.hpp.
+ +uint glm::gtx::unsigned_int::mod | +( | +uint | +x, | +
+ | + | uint | +y | +
+ | ) | ++ |
Modulus.
+Returns x - y * floor(x / y) for each component in x using the floating point value y. From GLM_GTX_unsigned_int extension.
+ +uint glm::gtx::unsigned_int::pow | +( | +uint | +x, | +
+ | + | uint | +y | +
+ | ) | ++ |
Returns x raised to the y power.
+From GLM_GTX_unsigned_int extension.
+ +uint glm::gtx::unsigned_int::sqrt | +( | +uint | +x | ) | ++ |
Returns the positive square root of x.
+From GLM_GTX_unsigned_int extension.
+ ++ |
Function to set values to vectors. +More...
++Functions | |
template<typename valType > | |
void | set (detail::tvec2< valType > &v, valType const &x, valType const &y) |
template<typename valType > | |
void | set (detail::tvec4< valType > &v, valType const &x, valType const &y, valType const &z, valType const &w) |
template<typename valType > | |
void | set (detail::tvec3< valType > &v, valType const &x, valType const &y, valType const &z) |
Function to set values to vectors.
+<glm/gtx/vector_access.hpp> need to be included to use these functionalities.
+void glm::gtx::vector_access::set | +( | +detail::tvec2< valType > & | +v, | +
+ | + | valType const & | +x, | +
+ | + | valType const & | +y | +
+ | ) | ++ |
Set values to a 2 components vector.
+From GLM_GTX_vector_access extension.
+ +void glm::gtx::vector_access::set | +( | +detail::tvec4< valType > & | +v, | +
+ | + | valType const & | +x, | +
+ | + | valType const & | +y, | +
+ | + | valType const & | +z, | +
+ | + | valType const & | +w | +
+ | ) | ++ |
Set values to a 4 components vector.
+From GLM_GTX_vector_access extension.
+ +void glm::gtx::vector_access::set | +( | +detail::tvec3< valType > & | +v, | +
+ | + | valType const & | +x, | +
+ | + | valType const & | +y, | +
+ | + | valType const & | +z | +
+ | ) | ++ |
Set values to a 3 components vector.
+From GLM_GTX_vector_access extension.
+ ++ |
Compute angle between vectors. +More...
++Functions | |
template<typename vecType > | |
GLM_FUNC_QUALIFIER +vecType::value_type | angle (vecType const &x, vecType const &y) |
template<typename T > | |
GLM_FUNC_QUALIFIER T | orientedAngle (detail::tvec3< T > const &x, detail::tvec3< T > const &y, detail::tvec3< T > const &ref) |
template<typename T > | |
GLM_FUNC_QUALIFIER T | orientedAngle (detail::tvec2< T > const &x, detail::tvec2< T > const &y) |
Compute angle between vectors.
+<glm/gtx/vector_angle.hpp> need to be included to use these functionalities.
+GLM_FUNC_QUALIFIER vecType::value_type glm::gtx::vector_angle::angle | +( | +vecType const & | +x, | +
+ | + | vecType const & | +y | +
+ | ) | ++ |
Returns the absolute angle between two vectors Parameters need to be normalized.
+From GLM_GTX_vector_angle extension
+ +GLM_FUNC_QUALIFIER T glm::gtx::vector_angle::orientedAngle | +( | +detail::tvec3< T > const & | +x, | +
+ | + | detail::tvec3< T > const & | +y, | +
+ | + | detail::tvec3< T > const & | +ref | +
+ | ) | ++ |
Returns the oriented angle between two 3d vectors based from a reference axis.
+Parameters need to be normalized. From GLM_GTX_vector_angle extension.
+ +GLM_FUNC_QUALIFIER T glm::gtx::vector_angle::orientedAngle | +( | +detail::tvec2< T > const & | +x, | +
+ | + | detail::tvec2< T > const & | +y | +
+ | ) | ++ |
Returns the oriented angle between two 2d vectors Parameters need to be normalized.
+From GLM_GTX_vector_angle extension.
+ ++ |
Query informations of vector types. +More...
++Functions | |
template<typename genType > | |
bool | areCollinear (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon()) |
template<typename genType > | |
bool | areOpposite (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon()) |
template<typename genType > | |
bool | areOrthogonal (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon()) |
template<typename genType > | |
bool | areOrthonormal (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon()) |
template<typename genType > | |
bool | areSimilar (genType const &v0, genType const &v1, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon()) |
template<typename genType > | |
bool | isNormalized (genType const &v, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon()) |
template<typename genType > | |
bool | isNull (genType const &v, typename genType::value_type const &epsilon=std::numeric_limits< typename genType::value_type >::epsilon()) |
Query informations of vector types.
+<glm/gtx/vector_query.hpp> need to be included to use these functionalities.
+bool glm::gtx::vector_query::areCollinear | +( | +genType const & | +v0, | +
+ | + | genType const & | +v1, | +
+ | + | typename genType::value_type const & | +epsilon = std::numeric_limits< typename genType::value_type >::epsilon() |
+
+ | ) | ++ |
Check if two vectors are collinears.
+From GLM_GTX_vector_query extensions.
+ +bool glm::gtx::vector_query::areOpposite | +( | +genType const & | +v0, | +
+ | + | genType const & | +v1, | +
+ | + | typename genType::value_type const & | +epsilon = std::numeric_limits< typename genType::value_type >::epsilon() |
+
+ | ) | ++ |
Check if two vectors are opposites.
+From GLM_GTX_vector_query extensions.
+ +bool glm::gtx::vector_query::areOrthogonal | +( | +genType const & | +v0, | +
+ | + | genType const & | +v1, | +
+ | + | typename genType::value_type const & | +epsilon = std::numeric_limits< typename genType::value_type >::epsilon() |
+
+ | ) | ++ |
Check if two vectors are orthogonals.
+From GLM_GTX_vector_query extensions.
+ +bool glm::gtx::vector_query::areOrthonormal | +( | +genType const & | +v0, | +
+ | + | genType const & | +v1, | +
+ | + | typename genType::value_type const & | +epsilon = std::numeric_limits< typename genType::value_type >::epsilon() |
+
+ | ) | ++ |
Check if two vectors are orthonormal.
+From GLM_GTX_vector_query extensions.
+ +bool glm::gtx::vector_query::areSimilar | +( | +genType const & | +v0, | +
+ | + | genType const & | +v1, | +
+ | + | typename genType::value_type const & | +epsilon = std::numeric_limits< typename genType::value_type >::epsilon() |
+
+ | ) | ++ |
Check if two vectors are similar.
+From GLM_GTX_vector_query extensions.
+ +bool glm::gtx::vector_query::isNormalized | +( | +genType const & | +v, | +
+ | + | typename genType::value_type const & | +epsilon = std::numeric_limits< typename genType::value_type >::epsilon() |
+
+ | ) | ++ |
Check if a vector is normalized.
+From GLM_GTX_vector_query extensions.
+ +bool glm::gtx::vector_query::isNull | +( | +genType const & | +v, | +
+ | + | typename genType::value_type const & | +epsilon = std::numeric_limits< typename genType::value_type >::epsilon() |
+
+ | ) | ++ |
Check if a vector is null.
+From GLM_GTX_vector_query extensions.
+ ++ |
Use words to replace operators. +More...
++Functions | |
template<typename genTypeT , typename genTypeU > | |
genTypeT | add (genTypeT const &a, genTypeU const &b) |
template<typename genTypeT , typename genTypeU > | |
genTypeT | div (genTypeT const &a, genTypeU const &b) |
template<typename genTypeT , typename genTypeU , typename genTypeV > | |
genTypeT | mad (genTypeT const &a, genTypeU const &b, genTypeV const &c) |
template<typename genTypeT , typename genTypeU > | |
genTypeT | mul (genTypeT const &a, genTypeU const &b) |
template<typename genTypeT , typename genTypeU > | |
genTypeT | sub (genTypeT const &a, genTypeU const &b) |
Use words to replace operators.
+<glm/gtx/verbose_operator.hpp> need to be included to use these functionalities.
+genTypeT glm::gtx::verbose_operator::add | +( | +genTypeT const & | +a, | +
+ | + | genTypeU const & | +b | +
+ | ) | ++ |
Addition of two values From GLM_GTX_verbose_operator extension.
+ +genTypeT glm::gtx::verbose_operator::div | +( | +genTypeT const & | +a, | +
+ | + | genTypeU const & | +b | +
+ | ) | ++ |
Division of two values From GLM_GTX_verbose_operator extension.
+ +genTypeT glm::gtx::verbose_operator::mad | +( | +genTypeT const & | +a, | +
+ | + | genTypeU const & | +b, | +
+ | + | genTypeV const & | +c | +
+ | ) | ++ |
Multiplication and addition of three values From GLM_GTX_verbose_operator extension.
+ +genTypeT glm::gtx::verbose_operator::mul | +( | +genTypeT const & | +a, | +
+ | + | genTypeU const & | +b | +
+ | ) | ++ |
Multiplication of two values From GLM_GTX_verbose_operator extension.
+ +genTypeT glm::gtx::verbose_operator::sub | +( | +genTypeT const & | +a, | +
+ | + | genTypeU const & | +b | +
+ | ) | ++ |
Substration of two values From GLM_GTX_verbose_operator extension.
+ ++ |
Wrapping mode of texture coordinates. +More...
++Functions | |
template<typename genType > | |
genType | clamp (genType const &Texcoord) |
template<typename genType > | |
genType | mirrorRepeat (genType const &Texcoord) |
template<typename genType > | |
genType | repeat (genType const &Texcoord) |
Wrapping mode of texture coordinates.
+<glm/gtx/wrap.hpp> need to be included to use these functionalities.
+genType glm::gtx::wrap::clamp | +( | +genType const & | +Texcoord | ) | ++ |
Simulate GL_CLAMP OpenGL wrap mode From GLM_GTX_wrap extension.
+ +genType glm::gtx::wrap::mirrorRepeat | +( | +genType const & | +Texcoord | ) | ++ |
Simulate GL_MIRROR_REPEAT OpenGL wrap mode From GLM_GTX_wrap extension.
+ +genType glm::gtx::wrap::repeat | +( | +genType const & | +Texcoord | ) | ++ |
Simulate GL_REPEAT OpenGL wrap mode From GLM_GTX_wrap extension.
+ ++ |
Extensions develop and maintain by Mathieu [matrem] Roumillac (http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showprofile&User=22660). +More...
++Modules | |
GLM_VIRTREV_xstream: xml like output |
Extensions develop and maintain by Mathieu [matrem] Roumillac (http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showprofile&User=22660).
++ |
Streaming vector and matrix in a xml way. +More...
+Streaming vector and matrix in a xml way.
+Include <glm/virtrev/xstream.hpp> for this functionality.
++ |
+ |
+Functions | |
template<typename T > | |
void | axisAngle (detail::tmat4x4< T > const &mat, detail::tvec3< T > &axis, T &angle) |
template<typename T > | |
detail::tmat4x4< T > | axisAngleMatrix (detail::tvec3< T > const &axis, T const angle) |
template<typename T > | |
detail::tmat4x4< T > | interpolate (detail::tmat4x4< T > const &m1, detail::tmat4x4< T > const &m2, T const delta) |
void glm::gtx::matrix_interpolation::axisAngle | +( | +detail::tmat4x4< T > const & | +mat, | +
+ | + | detail::tvec3< T > & | +axis, | +
+ | + | T & | +angle | +
+ | ) | ++ |
Get the axis and angle of the rotation from a matrix.
+From GLM_GTX_matrix_interpolation extension.
+ +detail::tmat4x4<T> glm::gtx::matrix_interpolation::axisAngleMatrix | +( | +detail::tvec3< T > const & | +axis, | +
+ | + | T const | +angle | +
+ | ) | ++ |
Build a matrix from axis and angle.
+From GLM_GTX_matrix_interpolation extension.
+ +detail::tmat4x4<T> glm::gtx::matrix_interpolation::interpolate | +( | +detail::tmat4x4< T > const & | +m1, | +
+ | + | detail::tmat4x4< T > const & | +m2, | +
+ | + | T const | +delta | +
+ | ) | ++ |
Build a interpolation of 4 * 4 matrixes.
+From GLM_GTX_matrix_interpolation extension. Warning! works only with rotation and/or translation matrixes, scale will generate unexpected results.
+ ++ |
+Functions | |
template<typename T , template< typename > class vecType> | |
T | perlin (vecType< T > const &p) |
template<typename T , template< typename > class vecType> | |
T | perlin (vecType< T > const &p, vecType< T > const &rep) |
template<typename T , template< typename > class vecType> | |
T | simplex (vecType< T > const &p) |
T glm::gtx::noise::perlin | +( | +vecType< T > const & | +p | ) | ++ |
Classic perlin noise.
+From GLM_GTX_noise extension.
+ +T glm::gtx::noise::perlin | +( | +vecType< T > const & | +p, | +
+ | + | vecType< T > const & | +rep | +
+ | ) | ++ |
Periodic perlin noise.
+From GLM_GTX_noise extension.
+ +T glm::gtx::noise::simplex | +( | +vecType< T > const & | +p | ) | ++ |
Simplex noise.
+From GLM_GTX_noise extension.
+ ++ |
+Functions | |
template<typename T > | |
uint | float_distance (T const &x, T const &y) |
template<typename T , template< typename > class vecType> | |
vecType< uint > | float_distance (vecType< T > const &x, vecType< T > const &y) |
template<typename genType > | |
genType | next_float (genType const &x) |
template<typename genType > | |
genType | next_float (genType const &x, uint const &Distance) |
template<typename genType > | |
genType | prev_float (genType const &x, uint const &Distance) |
template<typename genType > | |
genType | prev_float (genType const &x) |
uint glm::gtx::ulp::float_distance | +( | +T const & | +x, | +
+ | + | T const & | +y | +
+ | ) | ++ |
Return the distance in the number of ULP between 2 scalars.
+From GLM_GTX_ulp extension.
+ +vecType<uint> glm::gtx::ulp::float_distance | +( | +vecType< T > const & | +x, | +
+ | + | vecType< T > const & | +y | +
+ | ) | ++ |
Return the distance in the number of ULP between 2 vectors.
+From GLM_GTX_ulp extension.
+ +genType glm::gtx::ulp::next_float | +( | +genType const & | +x | ) | ++ |
Return the next ULP value(s) after the input value(s).
+From GLM_GTX_ulp extension.
+ +genType glm::gtx::ulp::next_float | +( | +genType const & | +x, | +
+ | + | uint const & | +Distance | +
+ | ) | ++ |
Return the value(s) ULP distance after the input value(s).
+From GLM_GTX_ulp extension.
+ +genType glm::gtx::ulp::prev_float | +( | +genType const & | +x, | +
+ | + | uint const & | +Distance | +
+ | ) | ++ |
Return the value(s) ULP distance before the input value(s).
+From GLM_GTX_ulp extension.
+ +genType glm::gtx::ulp::prev_float | +( | +genType const & | +x | ) | ++ |
Return the previous ULP value(s) before the input value(s).
+From GLM_GTX_ulp extension.
+ ++ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
tquat(tvec3< T > const &eulerAngles) | tquat< T > | [explicit] |
+ |
tvec2(U const &x) | tvec2< T > | [explicit] |
tvec2(U const &x, V const &y) | tvec2< T > | [explicit] |
tvec2(tvec2< U > const &v) | tvec2< T > | [explicit] |
tvec2(tvec3< U > const &v) | tvec2< T > | [explicit] |
tvec2(tvec4< U > const &v) | tvec2< T > | [explicit] |
+ |
tvec3(U const &x) | tvec3< T > | [explicit] |
tvec3(U const &x, V const &y, W const &z) | tvec3< T > | [explicit] |
tvec3(tvec2< A > const &v, B const &s) | tvec3< T > | [explicit] |
tvec3(A const &s, tvec2< B > const &v) | tvec3< T > | [explicit] |
tvec3(tvec3< U > const &v) | tvec3< T > | [explicit] |
tvec3(tvec4< U > const &v) | tvec3< T > | [explicit] |
+ |
tvec4(U const &x) | tvec4< T > | [explicit] |
tvec4(A const &x, B const &y, C const &z, D const &w) | tvec4< T > | [explicit] |
tvec4(tvec2< A > const &v, B const &s1, C const &s2) | tvec4< T > | [explicit] |
tvec4(A const &s1, tvec2< B > const &v, C const &s2) | tvec4< T > | [explicit] |
tvec4(A const &s1, B const &s2, tvec2< C > const &v) | tvec4< T > | [explicit] |
tvec4(tvec3< A > const &v, B const &s) | tvec4< T > | [explicit] |
tvec4(A const &s, tvec3< B > const &v) | tvec4< T > | [explicit] |
tvec4(tvec2< A > const &v1, tvec2< B > const &v2) | tvec4< T > | [explicit] |
tvec4(tvec4< U > const &v) | tvec4< T > | [explicit] |
tvec4(tref2< A > const &v, B const &s1, C const &s2) | tvec4< T > | [explicit] |
tvec4(A const &s1, tref2< B > const &v, C const &s2) | tvec4< T > | [explicit] |
tvec4(A const &s1, B const &s2, tref2< C > const &v) | tvec4< T > | [explicit] |
tvec4(tref3< A > const &v, B const &s) | tvec4< T > | [explicit] |
tvec4(A const &s, tref3< B > const &v) | tvec4< T > | [explicit] |
tvec4(tref2< A > const &v1, tref2< B > const &v2) | tvec4< T > | [explicit] |
tvec4(tvec2< A > const &v1, tref2< B > const &v2) | tvec4< T > | [explicit] |
tvec4(tref2< A > const &v1, tvec2< B > const &v2) | tvec4< T > | [explicit] |
+ |
thalf | 16-bit floating point type |
tmat2x2< T > | Template for 2 * 2 matrix of floating-point numbers |
tmat2x3< T > | Template for 2 columns and 3 rows matrix of floating-point numbers |
tmat2x4< T > | Template for 2 columns and 4 rows matrix of floating-point numbers |
tmat3x2< T > | Template for 3 columns and 2 rows matrix of floating-point numbers |
tmat3x3< T > | Template for 3 * 3 matrix of floating-point numbers |
tmat3x4< T > | Template for 3 columns and 4 rows matrix of floating-point numbers |
tmat4x2< T > | Template for 4 columns and 2 rows matrix of floating-point numbers |
tmat4x3< T > | Template for 4 columns and 3 rows matrix of floating-point numbers |
tmat4x4< T > | Template for 4 * 4 matrix of floating-point numbers |
tquat< T > | Template for quaternion |
tvec2< T > | The basic 2D vector type |
tvec3< T > | Basic 3D vector type |
tvec4< T > | Basic 4D vector type |
+ |
| tmat2x3 (glm::detail) | tmat3x3 (glm::detail) | tmat4x3 (glm::detail) | tvec2 (glm::detail) | |
thalf (glm::detail) | tmat2x4 (glm::detail) | tmat3x4 (glm::detail) | tmat4x4 (glm::detail) | tvec3 (glm::detail) | |
tmat2x2 (glm::detail) | tmat3x2 (glm::detail) | tmat4x2 (glm::detail) | tquat (glm::detail) | tvec4 (glm::detail) |
+ |
_detail.hpp [code] | |
_fixes.hpp [code] | |
_swizzle.hpp [code] | |
associated_min_max.hpp [code] | |
bit.hpp [code] | |
closest_point.hpp [code] | |
color_cast.hpp [code] | |
color_space.hpp [code] | |
color_space_YCoCg.hpp [code] | |
compatibility.hpp [code] | |
component_wise.hpp [code] | |
coreModules.doxy [code] | |
epsilon.hpp [code] | |
euler_angles.hpp [code] | |
ext.hpp [code] | |
extend.hpp [code] | |
extented_min_max.hpp [code] | |
fast_exponential.hpp [code] | |
fast_square_root.hpp [code] | |
fast_trigonometry.hpp [code] | |
func_common.hpp [code] | |
func_exponential.hpp [code] | |
func_geometric.hpp [code] | |
func_integer.hpp [code] | |
func_matrix.hpp [code] | |
func_noise.hpp [code] | |
func_packing.hpp [code] | |
func_trigonometric.hpp [code] | |
func_vector_relational.hpp [code] | |
glm.hpp [code] | |
gradient_paint.hpp [code] | |
gtcModules.doxy [code] | |
gtxModules.doxy [code] | |
half_float.hpp [code] | |
handed_coordinate_space.hpp [code] | |
hint.hpp [code] | |
inertia.hpp [code] | |
int_10_10_10_2.hpp [code] | |
integer.hpp [code] | |
intersect.hpp [code] | |
intrinsic_common.hpp [code] | |
intrinsic_exponential.hpp [code] | |
intrinsic_geometric.hpp [code] | |
intrinsic_matrix.hpp [code] | |
intrinsic_trigonometric.hpp [code] | |
intrinsic_vector_relational.hpp [code] | |
log_base.hpp [code] | |
man.doxy [code] | |
matrix_access.hpp [code] | |
matrix_cross_product.hpp [code] | |
matrix_integer.hpp [code] | |
matrix_interpolation.hpp [code] | |
matrix_inverse.hpp [code] | |
matrix_major_storage.hpp [code] | |
matrix_operation.hpp [code] | |
matrix_query.hpp [code] | |
matrix_transform.hpp [code] | |
mixed_product.hpp [code] | |
multiple.hpp [code] | |
noise.hpp [code] | |
norm.hpp [code] | |
normal.hpp [code] | |
normalize_dot.hpp [code] | |
number_precision.hpp [code] | |
ocl_type.hpp [code] | |
optimum_pow.hpp [code] | |
orthonormalize.hpp [code] | |
pages.doxy [code] | |
perpendicular.hpp [code] | |
polar_coordinates.hpp [code] | |
projection.hpp [code] | |
gtc/quaternion.hpp [code] | |
gtx/quaternion.hpp [code] | |
random.hpp [code] | |
raw_data.hpp [code] | |
reciprocal.hpp [code] | |
rotate_vector.hpp [code] | |
setup.hpp [code] | |
simd_mat4.hpp [code] | |
simd_vec4.hpp [code] | |
simplex.hpp [code] | |
spline.hpp [code] | |
std_based_type.hpp [code] | |
string_cast.hpp [code] | |
swizzle.hpp [code] | |
transform.hpp [code] | |
transform2.hpp [code] | |
type.hpp [code] | |
type_float.hpp [code] | |
type_gentype.hpp [code] | |
type_half.hpp [code] | |
type_int.hpp [code] | |
type_mat.hpp [code] | |
type_mat2x2.hpp [code] | |
type_mat2x3.hpp [code] | |
type_mat2x4.hpp [code] | |
type_mat3x2.hpp [code] | |
type_mat3x3.hpp [code] | |
type_mat3x4.hpp [code] | |
type_mat4x2.hpp [code] | |
type_mat4x3.hpp [code] | |
type_mat4x4.hpp [code] | |
type_precision.hpp [code] | |
type_ptr.hpp [code] | |
type_size.hpp [code] | |
type_vec.hpp [code] | |
type_vec1.hpp [code] | |
type_vec2.hpp [code] | |
type_vec3.hpp [code] | |
type_vec4.hpp [code] | |
ulp.hpp [code] | |
unsigned_int.hpp [code] | |
vec1.hpp [code] | |
vector_access.hpp [code] | |
vector_angle.hpp [code] | |
vector_query.hpp [code] | |
verbose_operator.hpp [code] | |
virtrevModules.doxy [code] | |
wrap.hpp [code] | |
xstream.hpp [code] |
+ |
+ |
+ |
OpenGL Mathematics (GLM) is a C++ mathematics library for graphics software based on the OpenGL Shading Language (GLSL) specification.
+GLM provides classes and functions designed and implemented with the same naming conventions and functionalities than GLSL so that when a programmer knows GLSL, he knows GLM as well which makes it really easy to use.
+This project isn't limited by GLSL features. An extension system, based on the GLSL extension conventions, provides extended capabilities: matrix transformations, quaternions, half-based types, random numbers, etc...
+This library works perfectly with OpenGL but it also ensures interoperability with other third party libraries and SDK. It is a good candidate for software rendering (Raytracing / Rasterisation), image processing, physic simulations and any context that requires a simple and convenient mathematics library.
+GLM is written as a platform independent library with no dependence and officially supports the following compilers: 1. Clang 2.0 and higher 2. CUDA 3.0 and higher 3. GCC 3.4 and higher 4. LLVM 2.3 through GCC 4.2 front-end and higher 5. Visual Studio 2005 and higher
+The source code is licenced under the MIT licence.
+Thanks for contributing to the project by submitting tickets for bug reports and feature requests. (SF.net account required). Any feedback is welcome at glm@g-truc.net.
+ +GLSL + Optional features = OpenGL Mathematics (GLM) A C++ mathematics library for graphics programming Compute a triangle normal:
|