diff --git a/doc/api-0.9.3/a00001.html b/doc/api-0.9.3/a00001.html new file mode 100644 index 00000000..79bf3712 --- /dev/null +++ b/doc/api-0.9.3/a00001.html @@ -0,0 +1,69 @@ + + +
+ + + ++ + + + + + + |
GLM comes very close to replicating GLSL, but it is not exact. Here is a list of differences between GLM and GLSL:
+Precision qualifiers. In GLSL numeric types can have qualifiers that define the precision of that type. While OpenGL's GLSL ignores these qualifiers, OpenGL ES's version of GLSL uses them.
+C++ has no language equivalent to precision qualifiers. Instead, GLM provides a set of typedefs for each kind of precision qualifier and type. These types can be found in their own section.
+Functions that take types tend to be templated on those types, so they can take these qualified types just as well as the regular ones.
++ + + + + + + |
16-bit floating point type.
+ +Definition at line 44 of file type_half.hpp.
++ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file _detail.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_detail +00030 #define glm_core_detail +00031 +00032 #include "setup.hpp" +00033 #include <cassert> +00034 #if(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) +00035 #include <cstdint> +00036 #endif +00037 +00038 namespace glm{ +00039 namespace detail +00040 { +00041 class half; +00042 +00043 #if(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) // C99 detected, 64 bit types available +00044 typedef int64_t sint64; +00045 typedef uint64_t uint64; +00046 #elif(GLM_COMPILER & GLM_COMPILER_VC) +00047 typedef signed __int64 sint64; +00048 typedef unsigned __int64 uint64; +00049 #elif(GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_LLVM_GCC | GLM_COMPILER_CLANG)) +00050 __extension__ typedef signed long long sint64; +00051 __extension__ typedef unsigned long long uint64; +00052 #elif(GLM_COMPILER & GLM_COMPILER_BC) +00053 typedef Int64 sint64; +00054 typedef Uint64 uint64; +00055 #else//unknown compiler +00056 typedef signed long long sint64; +00057 typedef unsigned long long uint64; +00058 #endif//GLM_COMPILER +00059 +00060 template<bool C> +00061 struct If +00062 { +00063 template<typename F, typename T> +00064 static GLM_FUNC_QUALIFIER T apply(F functor, const T& val) +00065 { +00066 return functor(val); +00067 } +00068 }; +00069 +00070 template<> +00071 struct If<false> +00072 { +00073 template<typename F, typename T> +00074 static GLM_FUNC_QUALIFIER T apply(F, const T& val) +00075 { +00076 return val; +00077 } +00078 }; +00079 +00080 //template <typename T> +00081 //struct traits +00082 //{ +00083 // static const bool is_signed = false; +00084 // static const bool is_float = false; +00085 // static const bool is_vector = false; +00086 // static const bool is_matrix = false; +00087 // static const bool is_genType = false; +00088 // static const bool is_genIType = false; +00089 // static const bool is_genUType = false; +00090 //}; +00091 +00092 //template <> +00093 //struct traits<half> +00094 //{ +00095 // static const bool is_float = true; +00096 // static const bool is_genType = true; +00097 //}; +00098 +00099 //template <> +00100 //struct traits<float> +00101 //{ +00102 // static const bool is_float = true; +00103 // static const bool is_genType = true; +00104 //}; +00105 +00106 //template <> +00107 //struct traits<double> +00108 //{ +00109 // static const bool is_float = true; +00110 // static const bool is_genType = true; +00111 //}; +00112 +00113 //template <typename genType> +00114 //struct desc +00115 //{ +00116 // typedef genType type; +00117 // typedef genType * pointer; +00118 // typedef genType const* const_pointer; +00119 // typedef genType const *const const_pointer_const; +00120 // typedef genType *const pointer_const; +00121 // typedef genType & reference; +00122 // typedef genType const& const_reference; +00123 // typedef genType const& param_type; +00124 +00125 // typedef typename genType::value_type value_type; +00126 // typedef typename genType::size_type size_type; +00127 // static const typename size_type value_size; +00128 //}; +00129 +00130 //template <typename genType> +00131 //const typename desc<genType>::size_type desc<genType>::value_size = genType::value_size(); +00132 +00133 union uif32 +00134 { +00135 GLM_FUNC_QUALIFIER uif32() : +00136 i(0) +00137 {} +00138 +00139 GLM_FUNC_QUALIFIER uif32(float f) : +00140 f(f) +00141 {} +00142 +00143 GLM_FUNC_QUALIFIER uif32(unsigned int i) : +00144 i(i) +00145 {} +00146 +00147 float f; +00148 unsigned int i; +00149 }; +00150 +00151 union uif64 +00152 { +00153 GLM_FUNC_QUALIFIER uif64() : +00154 i(0) +00155 {} +00156 +00157 GLM_FUNC_QUALIFIER uif64(double f) : +00158 f(f) +00159 {} +00160 +00161 GLM_FUNC_QUALIFIER uif64(uint64 i) : +00162 i(i) +00163 {} +00164 +00165 double f; +00166 uint64 i; +00167 }; +00168 +00169 typedef uif32 uif; +00170 +00172 // int +00173 +00174 template <typename T> +00175 struct is_int +00176 { +00177 enum is_int_enum +00178 { +00179 _YES = 0, +00180 _NO = 1 +00181 }; +00182 }; +00183 +00184 #define GLM_DETAIL_IS_INT(T) \ +00185 template <> \ +00186 struct is_int<T> \ +00187 { \ +00188 enum is_int_enum \ +00189 { \ +00190 _YES = 1, \ +00191 _NO = 0 \ +00192 }; \ +00193 } +00194 +00196 // uint +00197 +00198 template <typename T> +00199 struct is_uint +00200 { +00201 enum is_uint_enum +00202 { +00203 _YES = 0, +00204 _NO = 1 +00205 }; +00206 }; +00207 +00208 #define GLM_DETAIL_IS_UINT(T) \ +00209 template <> \ +00210 struct is_uint<T> \ +00211 { \ +00212 enum is_uint_enum \ +00213 { \ +00214 _YES = 1, \ +00215 _NO = 0 \ +00216 }; \ +00217 } +00218 +00219 //GLM_DETAIL_IS_UINT(unsigned long long) +00220 +00222 // float +00223 +00224 template <typename T> +00225 struct is_float +00226 { +00227 enum is_float_enum +00228 { +00229 _YES = 0, +00230 _NO = 1 +00231 }; +00232 }; +00233 +00234 #define GLM_DETAIL_IS_FLOAT(T) \ +00235 template <> \ +00236 struct is_float<T> \ +00237 { \ +00238 enum is_float_enum \ +00239 { \ +00240 _YES = 1, \ +00241 _NO = 0 \ +00242 }; \ +00243 } +00244 +00245 GLM_DETAIL_IS_FLOAT(detail::half); +00246 GLM_DETAIL_IS_FLOAT(float); +00247 GLM_DETAIL_IS_FLOAT(double); +00248 GLM_DETAIL_IS_FLOAT(long double); +00249 +00251 // bool +00252 +00253 template <typename T> +00254 struct is_bool +00255 { +00256 enum is_bool_enum +00257 { +00258 _YES = 0, +00259 _NO = 1 +00260 }; +00261 }; +00262 +00263 template <> +00264 struct is_bool<bool> +00265 { +00266 enum is_bool_enum +00267 { +00268 _YES = 1, +00269 _NO = 0 +00270 }; +00271 }; +00272 +00274 // vector +00275 +00276 template <typename T> +00277 struct is_vector +00278 { +00279 enum is_vector_enum +00280 { +00281 _YES = 0, +00282 _NO = 1 +00283 }; +00284 }; +00285 +00286 # define GLM_DETAIL_IS_VECTOR(TYPE) \ +00287 template <typename T> \ +00288 struct is_vector<TYPE<T> > \ +00289 { \ +00290 enum is_vector_enum \ +00291 { \ +00292 _YES = 1, \ +00293 _NO = 0 \ +00294 }; \ +00295 } +00296 +00298 // matrix +00299 +00300 template <typename T> +00301 struct is_matrix +00302 { +00303 enum is_matrix_enum +00304 { +00305 _YES = 0, +00306 _NO = 1 +00307 }; +00308 }; +00309 +00310 #define GLM_DETAIL_IS_MATRIX(T) \ +00311 template <> \ +00312 struct is_matrix \ +00313 { \ +00314 enum is_matrix_enum \ +00315 { \ +00316 _YES = 1, \ +00317 _NO = 0 \ +00318 }; \ +00319 } +00320 +00322 // type +00323 +00324 template <typename T> +00325 struct type +00326 { +00327 enum type_enum +00328 { +00329 is_float = is_float<T>::_YES, +00330 is_int = is_int<T>::_YES, +00331 is_uint = is_uint<T>::_YES, +00332 is_bool = is_bool<T>::_YES +00333 }; +00334 }; +00335 +00337 // type +00338 +00339 typedef signed char int8; +00340 typedef signed short int16; +00341 typedef signed int int32; +00342 typedef detail::sint64 int64; +00343 +00344 typedef unsigned char uint8; +00345 typedef unsigned short uint16; +00346 typedef unsigned int uint32; +00347 typedef detail::uint64 uint64; +00348 +00349 typedef detail::half float16; +00350 typedef float float32; +00351 typedef double float64; +00352 +00354 // float_or_int_trait +00355 +00356 struct float_or_int_value +00357 { +00358 enum +00359 { +00360 GLM_ERROR, +00361 GLM_FLOAT, +00362 GLM_INT +00363 }; +00364 }; +00365 +00366 template <typename T> +00367 struct float_or_int_trait +00368 { +00369 enum{ID = float_or_int_value::GLM_ERROR}; +00370 }; +00371 +00372 template <> +00373 struct float_or_int_trait<int8> +00374 { +00375 enum{ID = float_or_int_value::GLM_INT}; +00376 }; +00377 +00378 template <> +00379 struct float_or_int_trait<int16> +00380 { +00381 enum{ID = float_or_int_value::GLM_INT}; +00382 }; +00383 +00384 template <> +00385 struct float_or_int_trait<int32> +00386 { +00387 enum{ID = float_or_int_value::GLM_INT}; +00388 }; +00389 +00390 template <> +00391 struct float_or_int_trait<int64> +00392 { +00393 enum{ID = float_or_int_value::GLM_INT}; +00394 }; +00395 +00396 template <> +00397 struct float_or_int_trait<uint8> +00398 { +00399 enum{ID = float_or_int_value::GLM_INT}; +00400 }; +00401 +00402 template <> +00403 struct float_or_int_trait<uint16> +00404 { +00405 enum{ID = float_or_int_value::GLM_INT}; +00406 }; +00407 +00408 template <> +00409 struct float_or_int_trait<uint32> +00410 { +00411 enum{ID = float_or_int_value::GLM_INT}; +00412 }; +00413 +00414 template <> +00415 struct float_or_int_trait<uint64> +00416 { +00417 enum{ID = float_or_int_value::GLM_INT}; +00418 }; +00419 +00420 template <> +00421 struct float_or_int_trait<float16> +00422 { +00423 enum{ID = float_or_int_value::GLM_FLOAT}; +00424 }; +00425 +00426 template <> +00427 struct float_or_int_trait<float32> +00428 { +00429 enum{ID = float_or_int_value::GLM_FLOAT}; +00430 }; +00431 +00432 template <> +00433 struct float_or_int_trait<float64> +00434 { +00435 enum{ID = float_or_int_value::GLM_FLOAT}; +00436 }; +00437 +00438 }//namespace detail +00439 }//namespace glm +00440 +00441 #if((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2005)) +00442 # define GLM_DEPRECATED __declspec(deprecated) +00443 # define GLM_ALIGN(x) __declspec(align(x)) +00444 # define GLM_ALIGNED_STRUCT(x) __declspec(align(x)) struct +00445 # define GLM_RESTRICT __declspec(restrict) +00446 # define GLM_RESTRICT_VAR __restrict +00447 #elif((GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_LLVM_GCC)) && (GLM_COMPILER >= GLM_COMPILER_GCC31)) +00448 # define GLM_DEPRECATED __attribute__((__deprecated__)) +00449 # define GLM_ALIGN(x) __attribute__((aligned(x))) +00450 # define GLM_ALIGNED_STRUCT(x) struct __attribute__((aligned(x))) +00451 # if(GLM_COMPILER >= GLM_COMPILER_GCC33) +00452 # define GLM_RESTRICT __restrict__ +00453 # define GLM_RESTRICT_VAR __restrict__ +00454 # else +00455 # define GLM_RESTRICT +00456 # define GLM_RESTRICT_VAR +00457 # endif +00458 # define GLM_RESTRICT __restrict__ +00459 # define GLM_RESTRICT_VAR __restrict__ +00460 #else +00461 # define GLM_DEPRECATED +00462 # define GLM_ALIGN +00463 # define GLM_ALIGNED_STRUCT(x) +00464 # define GLM_RESTRICT +00465 # define GLM_RESTRICT_VAR +00466 #endif//GLM_COMPILER +00467 +00468 #endif//glm_core_detail +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file _fixes.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #include <cmath> +00030 +00032 #ifdef max +00033 #undef max +00034 #endif +00035 +00037 #ifdef min +00038 #undef min +00039 #endif +00040 +00042 #ifdef isnan +00043 #undef isnan +00044 #endif +00045 +00047 #ifdef isinf +00048 #undef isinf +00049 #endif +00050 +00052 #ifdef log2 +00053 #undef log2 +00054 #endif +00055 +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file _swizzle.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_swizzle +00030 #define glm_core_swizzle +00031 +00032 #include "_swizzle_func.hpp" +00033 +00034 namespace glm +00035 { +00036 enum comp +00037 { +00038 X = 0, +00039 R = 0, +00040 S = 0, +00041 Y = 1, +00042 G = 1, +00043 T = 1, +00044 Z = 2, +00045 B = 2, +00046 P = 2, +00047 W = 3, +00048 A = 3, +00049 Q = 3 +00050 }; +00051 }//namespace glm +00052 +00053 namespace glm{ +00054 namespace detail +00055 { +00056 // Internal class for implementing swizzle operators +00057 template <typename T, int N> +00058 struct _swizzle_base0 +00059 { +00060 typedef T value_type; +00061 +00062 protected: +00063 value_type& elem (size_t i) { return (reinterpret_cast<value_type*>(_buffer))[i]; } +00064 const value_type& elem (size_t i) const { return (reinterpret_cast<const value_type*>(_buffer))[i]; } +00065 +00066 // Use an opaque buffer to *ensure* the compiler doesn't call a constructor. +00067 // The size 1 buffer is assumed to aligned to the actual members so that the +00068 // elem() +00069 char _buffer[1]; +00070 }; +00071 +00072 template <typename T, typename V, int E0, int E1, int E2, int E3, int N> +00073 struct _swizzle_base1 : public _swizzle_base0<T,N> +00074 { +00075 }; +00076 +00077 template <typename T, typename V, int E0, int E1> +00078 struct _swizzle_base1<T,V,E0,E1,-1,-2,2> : public _swizzle_base0<T,2> +00079 { +00080 V operator ()() const { return V(this->elem(E0), this->elem(E1)); } +00081 }; +00082 +00083 template <typename T, typename V, int E0, int E1, int E2> +00084 struct _swizzle_base1<T,V,E0,E1,E2,-1,3> : public _swizzle_base0<T,3> +00085 { +00086 V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2)); } +00087 }; +00088 +00089 template <typename T, typename V, int E0, int E1, int E2, int E3> +00090 struct _swizzle_base1<T,V,E0,E1,E2,E3,4> : public _swizzle_base0<T,4> +00091 { +00092 V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2), this->elem(E3)); } +00093 }; +00094 +00095 // Internal class for implementing swizzle operators +00096 /* +00097 Template parameters: +00098 +00099 ValueType = type of scalar values (e.g. float, double) +00100 VecType = class the swizzle is applies to (e.g. tvec3<float>) +00101 N = number of components in the vector (e.g. 3) +00102 E0...3 = what index the n-th element of this swizzle refers to in the unswizzled vec +00103 +00104 DUPLICATE_ELEMENTS = 1 if there is a repeated element, 0 otherwise (used to specialize swizzles +00105 containing duplicate elements so that they cannot be used as r-values). +00106 */ +00107 template <typename ValueType, typename VecType, int N, int E0, int E1, int E2, int E3, int DUPLICATE_ELEMENTS> +00108 struct _swizzle_base2 : public _swizzle_base1<ValueType,VecType,E0,E1,E2,E3,N> +00109 { +00110 typedef VecType vec_type; +00111 typedef ValueType value_type; +00112 +00113 _swizzle_base2& operator= (const ValueType& t) +00114 { +00115 for (int i = 0; i < N; ++i) +00116 (*this)[i] = t; +00117 return *this; +00118 } +00119 +00120 _swizzle_base2& operator= (const VecType& that) +00121 { +00122 struct op { +00123 void operator() (value_type& e, value_type& t) { e = t; } +00124 }; +00125 _apply_op(that, op()); +00126 return *this; +00127 } +00128 +00129 void operator -= (const VecType& that) +00130 { +00131 struct op { +00132 void operator() (value_type& e, value_type& t) { e -= t; } +00133 }; +00134 _apply_op(that, op()); +00135 } +00136 +00137 void operator += (const VecType& that) +00138 { +00139 struct op { +00140 void operator() (value_type& e, value_type& t) { e += t; } +00141 }; +00142 _apply_op(that, op()); +00143 } +00144 +00145 void operator *= (const VecType& that) +00146 { +00147 struct op { +00148 void operator() (value_type& e, value_type& t) { e *= t; } +00149 }; +00150 _apply_op(that, op()); +00151 } +00152 +00153 void operator /= (const VecType& that) +00154 { +00155 struct op { +00156 void operator() (value_type& e, value_type& t) { e /= t; } +00157 }; +00158 _apply_op(that, op()); +00159 } +00160 +00161 value_type& operator[] (size_t i) +00162 { +00163 static const int offset_dst[4] = { E0, E1, E2, E3 }; +00164 return this->elem(offset_dst[i]); +00165 } +00166 value_type operator[] (size_t i) const +00167 { +00168 static const int offset_dst[4] = { E0, E1, E2, E3 }; +00169 return this->elem(offset_dst[i]); +00170 } +00171 protected: +00172 template <typename T> +00173 void _apply_op(const VecType& that, T op) +00174 { +00175 // Make a copy of the data in this == &that. +00176 // The copier should optimize out the copy in cases where the function is +00177 // properly inlined and the copy is not necessary. +00178 ValueType t[N]; +00179 for (int i = 0; i < N; ++i) +00180 t[i] = that[i]; +00181 for (int i = 0; i < N; ++i) +00182 op( (*this)[i], t[i] ); +00183 } +00184 }; +00185 +00186 // Specialization for swizzles containing duplicate elements. These cannot be modified. +00187 template <typename ValueType, typename VecType, int N, int E0, int E1, int E2, int E3> +00188 struct _swizzle_base2<ValueType,VecType,N,E0,E1,E2,E3,1> : public _swizzle_base1<ValueType,VecType,E0,E1,E2,E3,N> +00189 { +00190 typedef VecType vec_type; +00191 typedef ValueType value_type; +00192 +00193 struct Stub {}; +00194 _swizzle_base2& operator= (const Stub& that) {} +00195 +00196 value_type operator[] (size_t i) const +00197 { +00198 static const int offset_dst[4] = { E0, E1, E2, E3 }; +00199 return this->elem(offset_dst[i]); +00200 } +00201 }; +00202 +00203 template <int N,typename ValueType, typename VecType, int E0,int E1,int E2,int E3> +00204 struct swizzle : public _swizzle_base2<ValueType,VecType,N,E0,E1,E2,E3,(E0==E1||E0==E2||E0==E3||E1==E2||E1==E3||E2==E3)> +00205 { +00206 typedef _swizzle_base2<ValueType,VecType,N,E0,E1,E2,E3,(E0==E1||E0==E2||E0==E3||E1==E2||E1==E3||E2==E3)> base_type; +00207 +00208 using base_type::operator=; +00209 +00210 operator VecType () const { return (*this)(); } +00211 }; +00212 +00213 // +00214 // To prevent the C++ syntax from getting entirely overwhelming, define some alias macros +00215 // +00216 #define _GLM_SWIZZLE_TEMPLATE1 template <int N, typename T, typename V, int E0, int E1, int E2, int E3> +00217 #define _GLM_SWIZZLE_TEMPLATE2 template <int N, typename T, typename V, int E0, int E1, int E2, int E3, int F0, int F1, int F2, int F3> +00218 #define _GLM_SWIZZLE_TYPE1 glm::detail::swizzle<N,T,V,E0,E1,E2,E3> +00219 #define _GLM_SWIZZLE_TYPE2 glm::detail::swizzle<N,T,V,F0,F1,F2,F3> +00220 +00221 // +00222 // Wrapper for a binary operator (e.g. u.yy + v.zy) +00223 // +00224 #define _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \ +00225 _GLM_SWIZZLE_TEMPLATE2 \ +00226 V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \ +00227 { \ +00228 return a() OPERAND b(); \ +00229 } \ +00230 _GLM_SWIZZLE_TEMPLATE1 \ +00231 V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const V& b) \ +00232 { \ +00233 return a() OPERAND b; \ +00234 } \ +00235 _GLM_SWIZZLE_TEMPLATE1 \ +00236 V operator OPERAND ( const V& a, const _GLM_SWIZZLE_TYPE1& b) \ +00237 { \ +00238 return a OPERAND b(); \ +00239 } +00240 +00241 // +00242 // Wrapper for a operand between a swizzle and a binary (e.g. 1.0f - u.xyz) +00243 // +00244 #define _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \ +00245 _GLM_SWIZZLE_TEMPLATE1 \ +00246 V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const T& b) \ +00247 { \ +00248 return a() OPERAND b; \ +00249 } \ +00250 _GLM_SWIZZLE_TEMPLATE1 \ +00251 V operator OPERAND ( const T& a, const _GLM_SWIZZLE_TYPE1& b) \ +00252 { \ +00253 return a OPERAND b(); \ +00254 } +00255 +00256 // +00257 // Macro for wrapping a function taking one argument (e.g. abs()) +00258 // +00259 #define _GLM_SWIZZLE_FUNCTION_1_ARGS(RETURN_TYPE,FUNCTION) \ +00260 _GLM_SWIZZLE_TEMPLATE1 \ +00261 typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a) \ +00262 { \ +00263 return FUNCTION(a()); \ +00264 } +00265 +00266 // +00267 // Macro for wrapping a function taking two vector arguments (e.g. dot()). +00268 // +00269 #define _GLM_SWIZZLE_FUNCTION_2_ARGS(RETURN_TYPE,FUNCTION) \ +00270 _GLM_SWIZZLE_TEMPLATE2 \ +00271 typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \ +00272 { \ +00273 return FUNCTION(a(), b()); \ +00274 } \ +00275 _GLM_SWIZZLE_TEMPLATE1 \ +00276 typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b) \ +00277 { \ +00278 return FUNCTION(a(), b()); \ +00279 } \ +00280 _GLM_SWIZZLE_TEMPLATE1 \ +00281 typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename V& b) \ +00282 { \ +00283 return FUNCTION(a(), b); \ +00284 } \ +00285 _GLM_SWIZZLE_TEMPLATE1 \ +00286 typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const V& a, const _GLM_SWIZZLE_TYPE1& b) \ +00287 { \ +00288 return FUNCTION(a, b()); \ +00289 } +00290 +00291 // +00292 // Macro for wrapping a function take 2 vec arguments followed by a scalar (e.g. mix()). +00293 // +00294 #define _GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(RETURN_TYPE,FUNCTION) \ +00295 _GLM_SWIZZLE_TEMPLATE2 \ +00296 typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b, const T& c) \ +00297 { \ +00298 return FUNCTION(a(), b(), c); \ +00299 } \ +00300 _GLM_SWIZZLE_TEMPLATE1 \ +00301 typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \ +00302 { \ +00303 return FUNCTION(a(), b(), c); \ +00304 } \ +00305 _GLM_SWIZZLE_TEMPLATE1 \ +00306 typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename S0::vec_type& b, const T& c)\ +00307 { \ +00308 return FUNCTION(a(), b, c); \ +00309 } \ +00310 _GLM_SWIZZLE_TEMPLATE1 \ +00311 typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const typename V& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \ +00312 { \ +00313 return FUNCTION(a, b(), c); \ +00314 } +00315 +00316 }//namespace detail +00317 }//namespace glm +00318 +00319 namespace glm +00320 { +00321 namespace detail +00322 { +00323 _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(-) +00324 _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(*) +00325 +00326 _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(+) +00327 _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(-) +00328 _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(*) +00329 _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(/) +00330 } +00331 +00332 // +00333 // Swizzles are distinct types from the unswizzled type. The below macros will +00334 // provide template specializations for the swizzle types for the given functions +00335 // so that the compiler does not have any ambiguity to choosing how to handle +00336 // the function. +00337 // +00338 // The alternative is to use the operator()() when calling the function in order +00339 // to explicitly convert the swizzled type to the unswizzled type. +00340 // +00341 +00342 //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, abs); +00343 //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acos); +00344 //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acosh); +00345 //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, all); +00346 //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, any); +00347 +00348 //_GLM_SWIZZLE_FUNCTION_2_ARGS(value_type, dot); +00349 //_GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, cross); +00350 //_GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, step); +00351 //_GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(vec_type, mix); +00352 } +00353 +00354 #define _GLM_SWIZZLE2_2_MEMBERS(T,P,E0,E1) \ +00355 struct { glm::detail::swizzle<2,T,P,0,0,-1,-2> E0 ## E0; }; \ +00356 struct { glm::detail::swizzle<2,T,P,0,1,-1,-2> E0 ## E1; }; \ +00357 struct { glm::detail::swizzle<2,T,P,1,0,-1,-2> E1 ## E0; }; \ +00358 struct { glm::detail::swizzle<2,T,P,1,1,-1,-2> E1 ## E1; }; +00359 +00360 #define _GLM_SWIZZLE2_3_MEMBERS(T,P2,E0,E1) \ +00361 struct { glm::detail::swizzle<3,T,P2,0,0,0,-1> E0 ## E0 ## E0; }; \ +00362 struct { glm::detail::swizzle<3,T,P2,0,0,1,-1> E0 ## E0 ## E1; }; \ +00363 struct { glm::detail::swizzle<3,T,P2,0,1,0,-1> E0 ## E1 ## E0; }; \ +00364 struct { glm::detail::swizzle<3,T,P2,0,1,1,-1> E0 ## E1 ## E1; }; \ +00365 struct { glm::detail::swizzle<3,T,P2,1,0,0,-1> E1 ## E0 ## E0; }; \ +00366 struct { glm::detail::swizzle<3,T,P2,1,0,1,-1> E1 ## E0 ## E1; }; \ +00367 struct { glm::detail::swizzle<3,T,P2,1,1,0,-1> E1 ## E1 ## E0; }; \ +00368 struct { glm::detail::swizzle<3,T,P2,1,1,1,-1> E1 ## E1 ## E1; }; +00369 +00370 #define _GLM_SWIZZLE2_4_MEMBERS(T,P2,E0,E1) \ +00371 struct { glm::detail::swizzle<4,T,P2,0,0,0,0> E0 ## E0 ## E0 ## E0; }; \ +00372 struct { glm::detail::swizzle<4,T,P2,0,0,0,1> E0 ## E0 ## E0 ## E1; }; \ +00373 struct { glm::detail::swizzle<4,T,P2,0,0,1,0> E0 ## E0 ## E1 ## E0; }; \ +00374 struct { glm::detail::swizzle<4,T,P2,0,0,1,1> E0 ## E0 ## E1 ## E1; }; \ +00375 struct { glm::detail::swizzle<4,T,P2,0,1,0,0> E0 ## E1 ## E0 ## E0; }; \ +00376 struct { glm::detail::swizzle<4,T,P2,0,1,0,1> E0 ## E1 ## E0 ## E1; }; \ +00377 struct { glm::detail::swizzle<4,T,P2,0,1,1,0> E0 ## E1 ## E1 ## E0; }; \ +00378 struct { glm::detail::swizzle<4,T,P2,0,1,1,1> E0 ## E1 ## E1 ## E1; }; \ +00379 struct { glm::detail::swizzle<4,T,P2,1,0,0,0> E1 ## E0 ## E0 ## E0; }; \ +00380 struct { glm::detail::swizzle<4,T,P2,1,0,0,1> E1 ## E0 ## E0 ## E1; }; \ +00381 struct { glm::detail::swizzle<4,T,P2,1,0,1,0> E1 ## E0 ## E1 ## E0; }; \ +00382 struct { glm::detail::swizzle<4,T,P2,1,0,1,1> E1 ## E0 ## E1 ## E1; }; \ +00383 struct { glm::detail::swizzle<4,T,P2,1,1,0,0> E1 ## E1 ## E0 ## E0; }; \ +00384 struct { glm::detail::swizzle<4,T,P2,1,1,0,1> E1 ## E1 ## E0 ## E1; }; \ +00385 struct { glm::detail::swizzle<4,T,P2,1,1,1,0> E1 ## E1 ## E1 ## E0; }; \ +00386 struct { glm::detail::swizzle<4,T,P2,1,1,1,1> E1 ## E1 ## E1 ## E1; }; +00387 +00388 #define _GLM_SWIZZLE3_2_MEMBERS(T,P2,E0,E1,E2) \ +00389 struct { glm::detail::swizzle<2,T,P2,0,0,-1,-2> E0 ## E0; }; \ +00390 struct { glm::detail::swizzle<2,T,P2,0,1,-1,-2> E0 ## E1; }; \ +00391 struct { glm::detail::swizzle<2,T,P2,0,2,-1,-2> E0 ## E2; }; \ +00392 struct { glm::detail::swizzle<2,T,P2,1,0,-1,-2> E1 ## E0; }; \ +00393 struct { glm::detail::swizzle<2,T,P2,1,1,-1,-2> E1 ## E1; }; \ +00394 struct { glm::detail::swizzle<2,T,P2,1,2,-1,-2> E1 ## E2; }; \ +00395 struct { glm::detail::swizzle<2,T,P2,2,0,-1,-2> E2 ## E0; }; \ +00396 struct { glm::detail::swizzle<2,T,P2,2,1,-1,-2> E2 ## E1; }; \ +00397 struct { glm::detail::swizzle<2,T,P2,2,2,-1,-2> E2 ## E2; }; +00398 +00399 #define _GLM_SWIZZLE3_3_MEMBERS(T,P,E0,E1,E2) \ +00400 struct { glm::detail::swizzle<3,T,P,0,0,0,-1> E0 ## E0 ## E0; }; \ +00401 struct { glm::detail::swizzle<3,T,P,0,0,1,-1> E0 ## E0 ## E1; }; \ +00402 struct { glm::detail::swizzle<3,T,P,0,0,2,-1> E0 ## E0 ## E2; }; \ +00403 struct { glm::detail::swizzle<3,T,P,0,1,0,-1> E0 ## E1 ## E0; }; \ +00404 struct { glm::detail::swizzle<3,T,P,0,1,1,-1> E0 ## E1 ## E1; }; \ +00405 struct { glm::detail::swizzle<3,T,P,0,1,2,-1> E0 ## E1 ## E2; }; \ +00406 struct { glm::detail::swizzle<3,T,P,0,2,0,-1> E0 ## E2 ## E0; }; \ +00407 struct { glm::detail::swizzle<3,T,P,0,2,1,-1> E0 ## E2 ## E1; }; \ +00408 struct { glm::detail::swizzle<3,T,P,0,2,2,-1> E0 ## E2 ## E2; }; \ +00409 struct { glm::detail::swizzle<3,T,P,1,0,0,-1> E1 ## E0 ## E0; }; \ +00410 struct { glm::detail::swizzle<3,T,P,1,0,1,-1> E1 ## E0 ## E1; }; \ +00411 struct { glm::detail::swizzle<3,T,P,1,0,2,-1> E1 ## E0 ## E2; }; \ +00412 struct { glm::detail::swizzle<3,T,P,1,1,0,-1> E1 ## E1 ## E0; }; \ +00413 struct { glm::detail::swizzle<3,T,P,1,1,1,-1> E1 ## E1 ## E1; }; \ +00414 struct { glm::detail::swizzle<3,T,P,1,1,2,-1> E1 ## E1 ## E2; }; \ +00415 struct { glm::detail::swizzle<3,T,P,1,2,0,-1> E1 ## E2 ## E0; }; \ +00416 struct { glm::detail::swizzle<3,T,P,1,2,1,-1> E1 ## E2 ## E1; }; \ +00417 struct { glm::detail::swizzle<3,T,P,1,2,2,-1> E1 ## E2 ## E2; }; \ +00418 struct { glm::detail::swizzle<3,T,P,2,0,0,-1> E2 ## E0 ## E0; }; \ +00419 struct { glm::detail::swizzle<3,T,P,2,0,1,-1> E2 ## E0 ## E1; }; \ +00420 struct { glm::detail::swizzle<3,T,P,2,0,2,-1> E2 ## E0 ## E2; }; \ +00421 struct { glm::detail::swizzle<3,T,P,2,1,0,-1> E2 ## E1 ## E0; }; \ +00422 struct { glm::detail::swizzle<3,T,P,2,1,1,-1> E2 ## E1 ## E1; }; \ +00423 struct { glm::detail::swizzle<3,T,P,2,1,2,-1> E2 ## E1 ## E2; }; \ +00424 struct { glm::detail::swizzle<3,T,P,2,2,0,-1> E2 ## E2 ## E0; }; \ +00425 struct { glm::detail::swizzle<3,T,P,2,2,1,-1> E2 ## E2 ## E1; }; \ +00426 struct { glm::detail::swizzle<3,T,P,2,2,2,-1> E2 ## E2 ## E2; }; +00427 +00428 #define _GLM_SWIZZLE3_4_MEMBERS(T,P2,E0,E1,E2) \ +00429 struct { glm::detail::swizzle<4,T,P2,0,0,0,0> E0 ## E0 ## E0 ## E0; }; \ +00430 struct { glm::detail::swizzle<4,T,P2,0,0,0,1> E0 ## E0 ## E0 ## E1; }; \ +00431 struct { glm::detail::swizzle<4,T,P2,0,0,0,2> E0 ## E0 ## E0 ## E2; }; \ +00432 struct { glm::detail::swizzle<4,T,P2,0,0,1,0> E0 ## E0 ## E1 ## E0; }; \ +00433 struct { glm::detail::swizzle<4,T,P2,0,0,1,1> E0 ## E0 ## E1 ## E1; }; \ +00434 struct { glm::detail::swizzle<4,T,P2,0,0,1,2> E0 ## E0 ## E1 ## E2; }; \ +00435 struct { glm::detail::swizzle<4,T,P2,0,0,2,0> E0 ## E0 ## E2 ## E0; }; \ +00436 struct { glm::detail::swizzle<4,T,P2,0,0,2,1> E0 ## E0 ## E2 ## E1; }; \ +00437 struct { glm::detail::swizzle<4,T,P2,0,0,2,2> E0 ## E0 ## E2 ## E2; }; \ +00438 struct { glm::detail::swizzle<4,T,P2,0,1,0,0> E0 ## E1 ## E0 ## E0; }; \ +00439 struct { glm::detail::swizzle<4,T,P2,0,1,0,1> E0 ## E1 ## E0 ## E1; }; \ +00440 struct { glm::detail::swizzle<4,T,P2,0,1,0,2> E0 ## E1 ## E0 ## E2; }; \ +00441 struct { glm::detail::swizzle<4,T,P2,0,1,1,0> E0 ## E1 ## E1 ## E0; }; \ +00442 struct { glm::detail::swizzle<4,T,P2,0,1,1,1> E0 ## E1 ## E1 ## E1; }; \ +00443 struct { glm::detail::swizzle<4,T,P2,0,1,1,2> E0 ## E1 ## E1 ## E2; }; \ +00444 struct { glm::detail::swizzle<4,T,P2,0,1,2,0> E0 ## E1 ## E2 ## E0; }; \ +00445 struct { glm::detail::swizzle<4,T,P2,0,1,2,1> E0 ## E1 ## E2 ## E1; }; \ +00446 struct { glm::detail::swizzle<4,T,P2,0,1,2,2> E0 ## E1 ## E2 ## E2; }; \ +00447 struct { glm::detail::swizzle<4,T,P2,0,2,0,0> E0 ## E2 ## E0 ## E0; }; \ +00448 struct { glm::detail::swizzle<4,T,P2,0,2,0,1> E0 ## E2 ## E0 ## E1; }; \ +00449 struct { glm::detail::swizzle<4,T,P2,0,2,0,2> E0 ## E2 ## E0 ## E2; }; \ +00450 struct { glm::detail::swizzle<4,T,P2,0,2,1,0> E0 ## E2 ## E1 ## E0; }; \ +00451 struct { glm::detail::swizzle<4,T,P2,0,2,1,1> E0 ## E2 ## E1 ## E1; }; \ +00452 struct { glm::detail::swizzle<4,T,P2,0,2,1,2> E0 ## E2 ## E1 ## E2; }; \ +00453 struct { glm::detail::swizzle<4,T,P2,0,2,2,0> E0 ## E2 ## E2 ## E0; }; \ +00454 struct { glm::detail::swizzle<4,T,P2,0,2,2,1> E0 ## E2 ## E2 ## E1; }; \ +00455 struct { glm::detail::swizzle<4,T,P2,0,2,2,2> E0 ## E2 ## E2 ## E2; }; \ +00456 struct { glm::detail::swizzle<4,T,P2,1,0,0,0> E1 ## E0 ## E0 ## E0; }; \ +00457 struct { glm::detail::swizzle<4,T,P2,1,0,0,1> E1 ## E0 ## E0 ## E1; }; \ +00458 struct { glm::detail::swizzle<4,T,P2,1,0,0,2> E1 ## E0 ## E0 ## E2; }; \ +00459 struct { glm::detail::swizzle<4,T,P2,1,0,1,0> E1 ## E0 ## E1 ## E0; }; \ +00460 struct { glm::detail::swizzle<4,T,P2,1,0,1,1> E1 ## E0 ## E1 ## E1; }; \ +00461 struct { glm::detail::swizzle<4,T,P2,1,0,1,2> E1 ## E0 ## E1 ## E2; }; \ +00462 struct { glm::detail::swizzle<4,T,P2,1,0,2,0> E1 ## E0 ## E2 ## E0; }; \ +00463 struct { glm::detail::swizzle<4,T,P2,1,0,2,1> E1 ## E0 ## E2 ## E1; }; \ +00464 struct { glm::detail::swizzle<4,T,P2,1,0,2,2> E1 ## E0 ## E2 ## E2; }; \ +00465 struct { glm::detail::swizzle<4,T,P2,1,1,0,0> E1 ## E1 ## E0 ## E0; }; \ +00466 struct { glm::detail::swizzle<4,T,P2,1,1,0,1> E1 ## E1 ## E0 ## E1; }; \ +00467 struct { glm::detail::swizzle<4,T,P2,1,1,0,2> E1 ## E1 ## E0 ## E2; }; \ +00468 struct { glm::detail::swizzle<4,T,P2,1,1,1,0> E1 ## E1 ## E1 ## E0; }; \ +00469 struct { glm::detail::swizzle<4,T,P2,1,1,1,1> E1 ## E1 ## E1 ## E1; }; \ +00470 struct { glm::detail::swizzle<4,T,P2,1,1,1,2> E1 ## E1 ## E1 ## E2; }; \ +00471 struct { glm::detail::swizzle<4,T,P2,1,1,2,0> E1 ## E1 ## E2 ## E0; }; \ +00472 struct { glm::detail::swizzle<4,T,P2,1,1,2,1> E1 ## E1 ## E2 ## E1; }; \ +00473 struct { glm::detail::swizzle<4,T,P2,1,1,2,2> E1 ## E1 ## E2 ## E2; }; \ +00474 struct { glm::detail::swizzle<4,T,P2,1,2,0,0> E1 ## E2 ## E0 ## E0; }; \ +00475 struct { glm::detail::swizzle<4,T,P2,1,2,0,1> E1 ## E2 ## E0 ## E1; }; \ +00476 struct { glm::detail::swizzle<4,T,P2,1,2,0,2> E1 ## E2 ## E0 ## E2; }; \ +00477 struct { glm::detail::swizzle<4,T,P2,1,2,1,0> E1 ## E2 ## E1 ## E0; }; \ +00478 struct { glm::detail::swizzle<4,T,P2,1,2,1,1> E1 ## E2 ## E1 ## E1; }; \ +00479 struct { glm::detail::swizzle<4,T,P2,1,2,1,2> E1 ## E2 ## E1 ## E2; }; \ +00480 struct { glm::detail::swizzle<4,T,P2,1,2,2,0> E1 ## E2 ## E2 ## E0; }; \ +00481 struct { glm::detail::swizzle<4,T,P2,1,2,2,1> E1 ## E2 ## E2 ## E1; }; \ +00482 struct { glm::detail::swizzle<4,T,P2,1,2,2,2> E1 ## E2 ## E2 ## E2; }; \ +00483 struct { glm::detail::swizzle<4,T,P2,2,0,0,0> E2 ## E0 ## E0 ## E0; }; \ +00484 struct { glm::detail::swizzle<4,T,P2,2,0,0,1> E2 ## E0 ## E0 ## E1; }; \ +00485 struct { glm::detail::swizzle<4,T,P2,2,0,0,2> E2 ## E0 ## E0 ## E2; }; \ +00486 struct { glm::detail::swizzle<4,T,P2,2,0,1,0> E2 ## E0 ## E1 ## E0; }; \ +00487 struct { glm::detail::swizzle<4,T,P2,2,0,1,1> E2 ## E0 ## E1 ## E1; }; \ +00488 struct { glm::detail::swizzle<4,T,P2,2,0,1,2> E2 ## E0 ## E1 ## E2; }; \ +00489 struct { glm::detail::swizzle<4,T,P2,2,0,2,0> E2 ## E0 ## E2 ## E0; }; \ +00490 struct { glm::detail::swizzle<4,T,P2,2,0,2,1> E2 ## E0 ## E2 ## E1; }; \ +00491 struct { glm::detail::swizzle<4,T,P2,2,0,2,2> E2 ## E0 ## E2 ## E2; }; \ +00492 struct { glm::detail::swizzle<4,T,P2,2,1,0,0> E2 ## E1 ## E0 ## E0; }; \ +00493 struct { glm::detail::swizzle<4,T,P2,2,1,0,1> E2 ## E1 ## E0 ## E1; }; \ +00494 struct { glm::detail::swizzle<4,T,P2,2,1,0,2> E2 ## E1 ## E0 ## E2; }; \ +00495 struct { glm::detail::swizzle<4,T,P2,2,1,1,0> E2 ## E1 ## E1 ## E0; }; \ +00496 struct { glm::detail::swizzle<4,T,P2,2,1,1,1> E2 ## E1 ## E1 ## E1; }; \ +00497 struct { glm::detail::swizzle<4,T,P2,2,1,1,2> E2 ## E1 ## E1 ## E2; }; \ +00498 struct { glm::detail::swizzle<4,T,P2,2,1,2,0> E2 ## E1 ## E2 ## E0; }; \ +00499 struct { glm::detail::swizzle<4,T,P2,2,1,2,1> E2 ## E1 ## E2 ## E1; }; \ +00500 struct { glm::detail::swizzle<4,T,P2,2,1,2,2> E2 ## E1 ## E2 ## E2; }; \ +00501 struct { glm::detail::swizzle<4,T,P2,2,2,0,0> E2 ## E2 ## E0 ## E0; }; \ +00502 struct { glm::detail::swizzle<4,T,P2,2,2,0,1> E2 ## E2 ## E0 ## E1; }; \ +00503 struct { glm::detail::swizzle<4,T,P2,2,2,0,2> E2 ## E2 ## E0 ## E2; }; \ +00504 struct { glm::detail::swizzle<4,T,P2,2,2,1,0> E2 ## E2 ## E1 ## E0; }; \ +00505 struct { glm::detail::swizzle<4,T,P2,2,2,1,1> E2 ## E2 ## E1 ## E1; }; \ +00506 struct { glm::detail::swizzle<4,T,P2,2,2,1,2> E2 ## E2 ## E1 ## E2; }; \ +00507 struct { glm::detail::swizzle<4,T,P2,2,2,2,0> E2 ## E2 ## E2 ## E0; }; \ +00508 struct { glm::detail::swizzle<4,T,P2,2,2,2,1> E2 ## E2 ## E2 ## E1; }; \ +00509 struct { glm::detail::swizzle<4,T,P2,2,2,2,2> E2 ## E2 ## E2 ## E2; }; +00510 +00511 #define _GLM_SWIZZLE4_2_MEMBERS(T,P,E0,E1,E2,E3) \ +00512 struct { glm::detail::swizzle<2,T,P,0,0,-1,-2> E0 ## E0; }; \ +00513 struct { glm::detail::swizzle<2,T,P,0,1,-1,-2> E0 ## E1; }; \ +00514 struct { glm::detail::swizzle<2,T,P,0,2,-1,-2> E0 ## E2; }; \ +00515 struct { glm::detail::swizzle<2,T,P,0,3,-1,-2> E0 ## E3; }; \ +00516 struct { glm::detail::swizzle<2,T,P,1,0,-1,-2> E1 ## E0; }; \ +00517 struct { glm::detail::swizzle<2,T,P,1,1,-1,-2> E1 ## E1; }; \ +00518 struct { glm::detail::swizzle<2,T,P,1,2,-1,-2> E1 ## E2; }; \ +00519 struct { glm::detail::swizzle<2,T,P,1,3,-1,-2> E1 ## E3; }; \ +00520 struct { glm::detail::swizzle<2,T,P,2,0,-1,-2> E2 ## E0; }; \ +00521 struct { glm::detail::swizzle<2,T,P,2,1,-1,-2> E2 ## E1; }; \ +00522 struct { glm::detail::swizzle<2,T,P,2,2,-1,-2> E2 ## E2; }; \ +00523 struct { glm::detail::swizzle<2,T,P,2,3,-1,-2> E2 ## E3; }; \ +00524 struct { glm::detail::swizzle<2,T,P,3,0,-1,-2> E3 ## E0; }; \ +00525 struct { glm::detail::swizzle<2,T,P,3,1,-1,-2> E3 ## E1; }; \ +00526 struct { glm::detail::swizzle<2,T,P,3,2,-1,-2> E3 ## E2; }; \ +00527 struct { glm::detail::swizzle<2,T,P,3,3,-1,-2> E3 ## E3; }; +00528 +00529 #define _GLM_SWIZZLE4_3_MEMBERS(T,P,E0,E1,E2,E3) \ +00530 struct { glm::detail::swizzle<3,T,P,0,0,0,-1> E0 ## E0 ## E0; }; \ +00531 struct { glm::detail::swizzle<3,T,P,0,0,1,-1> E0 ## E0 ## E1; }; \ +00532 struct { glm::detail::swizzle<3,T,P,0,0,2,-1> E0 ## E0 ## E2; }; \ +00533 struct { glm::detail::swizzle<3,T,P,0,0,3,-1> E0 ## E0 ## E3; }; \ +00534 struct { glm::detail::swizzle<3,T,P,0,1,0,-1> E0 ## E1 ## E0; }; \ +00535 struct { glm::detail::swizzle<3,T,P,0,1,1,-1> E0 ## E1 ## E1; }; \ +00536 struct { glm::detail::swizzle<3,T,P,0,1,2,-1> E0 ## E1 ## E2; }; \ +00537 struct { glm::detail::swizzle<3,T,P,0,1,3,-1> E0 ## E1 ## E3; }; \ +00538 struct { glm::detail::swizzle<3,T,P,0,2,0,-1> E0 ## E2 ## E0; }; \ +00539 struct { glm::detail::swizzle<3,T,P,0,2,1,-1> E0 ## E2 ## E1; }; \ +00540 struct { glm::detail::swizzle<3,T,P,0,2,2,-1> E0 ## E2 ## E2; }; \ +00541 struct { glm::detail::swizzle<3,T,P,0,2,3,-1> E0 ## E2 ## E3; }; \ +00542 struct { glm::detail::swizzle<3,T,P,0,3,0,-1> E0 ## E3 ## E0; }; \ +00543 struct { glm::detail::swizzle<3,T,P,0,3,1,-1> E0 ## E3 ## E1; }; \ +00544 struct { glm::detail::swizzle<3,T,P,0,3,2,-1> E0 ## E3 ## E2; }; \ +00545 struct { glm::detail::swizzle<3,T,P,0,3,3,-1> E0 ## E3 ## E3; }; \ +00546 struct { glm::detail::swizzle<3,T,P,1,0,0,-1> E1 ## E0 ## E0; }; \ +00547 struct { glm::detail::swizzle<3,T,P,1,0,1,-1> E1 ## E0 ## E1; }; \ +00548 struct { glm::detail::swizzle<3,T,P,1,0,2,-1> E1 ## E0 ## E2; }; \ +00549 struct { glm::detail::swizzle<3,T,P,1,0,3,-1> E1 ## E0 ## E3; }; \ +00550 struct { glm::detail::swizzle<3,T,P,1,1,0,-1> E1 ## E1 ## E0; }; \ +00551 struct { glm::detail::swizzle<3,T,P,1,1,1,-1> E1 ## E1 ## E1; }; \ +00552 struct { glm::detail::swizzle<3,T,P,1,1,2,-1> E1 ## E1 ## E2; }; \ +00553 struct { glm::detail::swizzle<3,T,P,1,1,3,-1> E1 ## E1 ## E3; }; \ +00554 struct { glm::detail::swizzle<3,T,P,1,2,0,-1> E1 ## E2 ## E0; }; \ +00555 struct { glm::detail::swizzle<3,T,P,1,2,1,-1> E1 ## E2 ## E1; }; \ +00556 struct { glm::detail::swizzle<3,T,P,1,2,2,-1> E1 ## E2 ## E2; }; \ +00557 struct { glm::detail::swizzle<3,T,P,1,2,3,-1> E1 ## E2 ## E3; }; \ +00558 struct { glm::detail::swizzle<3,T,P,1,3,0,-1> E1 ## E3 ## E0; }; \ +00559 struct { glm::detail::swizzle<3,T,P,1,3,1,-1> E1 ## E3 ## E1; }; \ +00560 struct { glm::detail::swizzle<3,T,P,1,3,2,-1> E1 ## E3 ## E2; }; \ +00561 struct { glm::detail::swizzle<3,T,P,1,3,3,-1> E1 ## E3 ## E3; }; \ +00562 struct { glm::detail::swizzle<3,T,P,2,0,0,-1> E2 ## E0 ## E0; }; \ +00563 struct { glm::detail::swizzle<3,T,P,2,0,1,-1> E2 ## E0 ## E1; }; \ +00564 struct { glm::detail::swizzle<3,T,P,2,0,2,-1> E2 ## E0 ## E2; }; \ +00565 struct { glm::detail::swizzle<3,T,P,2,0,3,-1> E2 ## E0 ## E3; }; \ +00566 struct { glm::detail::swizzle<3,T,P,2,1,0,-1> E2 ## E1 ## E0; }; \ +00567 struct { glm::detail::swizzle<3,T,P,2,1,1,-1> E2 ## E1 ## E1; }; \ +00568 struct { glm::detail::swizzle<3,T,P,2,1,2,-1> E2 ## E1 ## E2; }; \ +00569 struct { glm::detail::swizzle<3,T,P,2,1,3,-1> E2 ## E1 ## E3; }; \ +00570 struct { glm::detail::swizzle<3,T,P,2,2,0,-1> E2 ## E2 ## E0; }; \ +00571 struct { glm::detail::swizzle<3,T,P,2,2,1,-1> E2 ## E2 ## E1; }; \ +00572 struct { glm::detail::swizzle<3,T,P,2,2,2,-1> E2 ## E2 ## E2; }; \ +00573 struct { glm::detail::swizzle<3,T,P,2,2,3,-1> E2 ## E2 ## E3; }; \ +00574 struct { glm::detail::swizzle<3,T,P,2,3,0,-1> E2 ## E3 ## E0; }; \ +00575 struct { glm::detail::swizzle<3,T,P,2,3,1,-1> E2 ## E3 ## E1; }; \ +00576 struct { glm::detail::swizzle<3,T,P,2,3,2,-1> E2 ## E3 ## E2; }; \ +00577 struct { glm::detail::swizzle<3,T,P,2,3,3,-1> E2 ## E3 ## E3; }; \ +00578 struct { glm::detail::swizzle<3,T,P,3,0,0,-1> E3 ## E0 ## E0; }; \ +00579 struct { glm::detail::swizzle<3,T,P,3,0,1,-1> E3 ## E0 ## E1; }; \ +00580 struct { glm::detail::swizzle<3,T,P,3,0,2,-1> E3 ## E0 ## E2; }; \ +00581 struct { glm::detail::swizzle<3,T,P,3,0,3,-1> E3 ## E0 ## E3; }; \ +00582 struct { glm::detail::swizzle<3,T,P,3,1,0,-1> E3 ## E1 ## E0; }; \ +00583 struct { glm::detail::swizzle<3,T,P,3,1,1,-1> E3 ## E1 ## E1; }; \ +00584 struct { glm::detail::swizzle<3,T,P,3,1,2,-1> E3 ## E1 ## E2; }; \ +00585 struct { glm::detail::swizzle<3,T,P,3,1,3,-1> E3 ## E1 ## E3; }; \ +00586 struct { glm::detail::swizzle<3,T,P,3,2,0,-1> E3 ## E2 ## E0; }; \ +00587 struct { glm::detail::swizzle<3,T,P,3,2,1,-1> E3 ## E2 ## E1; }; \ +00588 struct { glm::detail::swizzle<3,T,P,3,2,2,-1> E3 ## E2 ## E2; }; \ +00589 struct { glm::detail::swizzle<3,T,P,3,2,3,-1> E3 ## E2 ## E3; }; \ +00590 struct { glm::detail::swizzle<3,T,P,3,3,0,-1> E3 ## E3 ## E0; }; \ +00591 struct { glm::detail::swizzle<3,T,P,3,3,1,-1> E3 ## E3 ## E1; }; \ +00592 struct { glm::detail::swizzle<3,T,P,3,3,2,-1> E3 ## E3 ## E2; }; \ +00593 struct { glm::detail::swizzle<3,T,P,3,3,3,-1> E3 ## E3 ## E3; }; +00594 +00595 #define _GLM_SWIZZLE4_4_MEMBERS(T,P,E0,E1,E2,E3) \ +00596 struct { glm::detail::swizzle<4,T,P,0,0,0,0> E0 ## E0 ## E0 ## E0; }; \ +00597 struct { glm::detail::swizzle<4,T,P,0,0,0,1> E0 ## E0 ## E0 ## E1; }; \ +00598 struct { glm::detail::swizzle<4,T,P,0,0,0,2> E0 ## E0 ## E0 ## E2; }; \ +00599 struct { glm::detail::swizzle<4,T,P,0,0,0,3> E0 ## E0 ## E0 ## E3; }; \ +00600 struct { glm::detail::swizzle<4,T,P,0,0,1,0> E0 ## E0 ## E1 ## E0; }; \ +00601 struct { glm::detail::swizzle<4,T,P,0,0,1,1> E0 ## E0 ## E1 ## E1; }; \ +00602 struct { glm::detail::swizzle<4,T,P,0,0,1,2> E0 ## E0 ## E1 ## E2; }; \ +00603 struct { glm::detail::swizzle<4,T,P,0,0,1,3> E0 ## E0 ## E1 ## E3; }; \ +00604 struct { glm::detail::swizzle<4,T,P,0,0,2,0> E0 ## E0 ## E2 ## E0; }; \ +00605 struct { glm::detail::swizzle<4,T,P,0,0,2,1> E0 ## E0 ## E2 ## E1; }; \ +00606 struct { glm::detail::swizzle<4,T,P,0,0,2,2> E0 ## E0 ## E2 ## E2; }; \ +00607 struct { glm::detail::swizzle<4,T,P,0,0,2,3> E0 ## E0 ## E2 ## E3; }; \ +00608 struct { glm::detail::swizzle<4,T,P,0,0,3,0> E0 ## E0 ## E3 ## E0; }; \ +00609 struct { glm::detail::swizzle<4,T,P,0,0,3,1> E0 ## E0 ## E3 ## E1; }; \ +00610 struct { glm::detail::swizzle<4,T,P,0,0,3,2> E0 ## E0 ## E3 ## E2; }; \ +00611 struct { glm::detail::swizzle<4,T,P,0,0,3,3> E0 ## E0 ## E3 ## E3; }; \ +00612 struct { glm::detail::swizzle<4,T,P,0,1,0,0> E0 ## E1 ## E0 ## E0; }; \ +00613 struct { glm::detail::swizzle<4,T,P,0,1,0,1> E0 ## E1 ## E0 ## E1; }; \ +00614 struct { glm::detail::swizzle<4,T,P,0,1,0,2> E0 ## E1 ## E0 ## E2; }; \ +00615 struct { glm::detail::swizzle<4,T,P,0,1,0,3> E0 ## E1 ## E0 ## E3; }; \ +00616 struct { glm::detail::swizzle<4,T,P,0,1,1,0> E0 ## E1 ## E1 ## E0; }; \ +00617 struct { glm::detail::swizzle<4,T,P,0,1,1,1> E0 ## E1 ## E1 ## E1; }; \ +00618 struct { glm::detail::swizzle<4,T,P,0,1,1,2> E0 ## E1 ## E1 ## E2; }; \ +00619 struct { glm::detail::swizzle<4,T,P,0,1,1,3> E0 ## E1 ## E1 ## E3; }; \ +00620 struct { glm::detail::swizzle<4,T,P,0,1,2,0> E0 ## E1 ## E2 ## E0; }; \ +00621 struct { glm::detail::swizzle<4,T,P,0,1,2,1> E0 ## E1 ## E2 ## E1; }; \ +00622 struct { glm::detail::swizzle<4,T,P,0,1,2,2> E0 ## E1 ## E2 ## E2; }; \ +00623 struct { glm::detail::swizzle<4,T,P,0,1,2,3> E0 ## E1 ## E2 ## E3; }; \ +00624 struct { glm::detail::swizzle<4,T,P,0,1,3,0> E0 ## E1 ## E3 ## E0; }; \ +00625 struct { glm::detail::swizzle<4,T,P,0,1,3,1> E0 ## E1 ## E3 ## E1; }; \ +00626 struct { glm::detail::swizzle<4,T,P,0,1,3,2> E0 ## E1 ## E3 ## E2; }; \ +00627 struct { glm::detail::swizzle<4,T,P,0,1,3,3> E0 ## E1 ## E3 ## E3; }; \ +00628 struct { glm::detail::swizzle<4,T,P,0,2,0,0> E0 ## E2 ## E0 ## E0; }; \ +00629 struct { glm::detail::swizzle<4,T,P,0,2,0,1> E0 ## E2 ## E0 ## E1; }; \ +00630 struct { glm::detail::swizzle<4,T,P,0,2,0,2> E0 ## E2 ## E0 ## E2; }; \ +00631 struct { glm::detail::swizzle<4,T,P,0,2,0,3> E0 ## E2 ## E0 ## E3; }; \ +00632 struct { glm::detail::swizzle<4,T,P,0,2,1,0> E0 ## E2 ## E1 ## E0; }; \ +00633 struct { glm::detail::swizzle<4,T,P,0,2,1,1> E0 ## E2 ## E1 ## E1; }; \ +00634 struct { glm::detail::swizzle<4,T,P,0,2,1,2> E0 ## E2 ## E1 ## E2; }; \ +00635 struct { glm::detail::swizzle<4,T,P,0,2,1,3> E0 ## E2 ## E1 ## E3; }; \ +00636 struct { glm::detail::swizzle<4,T,P,0,2,2,0> E0 ## E2 ## E2 ## E0; }; \ +00637 struct { glm::detail::swizzle<4,T,P,0,2,2,1> E0 ## E2 ## E2 ## E1; }; \ +00638 struct { glm::detail::swizzle<4,T,P,0,2,2,2> E0 ## E2 ## E2 ## E2; }; \ +00639 struct { glm::detail::swizzle<4,T,P,0,2,2,3> E0 ## E2 ## E2 ## E3; }; \ +00640 struct { glm::detail::swizzle<4,T,P,0,2,3,0> E0 ## E2 ## E3 ## E0; }; \ +00641 struct { glm::detail::swizzle<4,T,P,0,2,3,1> E0 ## E2 ## E3 ## E1; }; \ +00642 struct { glm::detail::swizzle<4,T,P,0,2,3,2> E0 ## E2 ## E3 ## E2; }; \ +00643 struct { glm::detail::swizzle<4,T,P,0,2,3,3> E0 ## E2 ## E3 ## E3; }; \ +00644 struct { glm::detail::swizzle<4,T,P,1,0,0,0> E1 ## E0 ## E0 ## E0; }; \ +00645 struct { glm::detail::swizzle<4,T,P,1,0,0,1> E1 ## E0 ## E0 ## E1; }; \ +00646 struct { glm::detail::swizzle<4,T,P,1,0,0,2> E1 ## E0 ## E0 ## E2; }; \ +00647 struct { glm::detail::swizzle<4,T,P,1,0,0,3> E1 ## E0 ## E0 ## E3; }; \ +00648 struct { glm::detail::swizzle<4,T,P,1,0,1,0> E1 ## E0 ## E1 ## E0; }; \ +00649 struct { glm::detail::swizzle<4,T,P,1,0,1,1> E1 ## E0 ## E1 ## E1; }; \ +00650 struct { glm::detail::swizzle<4,T,P,1,0,1,2> E1 ## E0 ## E1 ## E2; }; \ +00651 struct { glm::detail::swizzle<4,T,P,1,0,1,3> E1 ## E0 ## E1 ## E3; }; \ +00652 struct { glm::detail::swizzle<4,T,P,1,0,2,0> E1 ## E0 ## E2 ## E0; }; \ +00653 struct { glm::detail::swizzle<4,T,P,1,0,2,1> E1 ## E0 ## E2 ## E1; }; \ +00654 struct { glm::detail::swizzle<4,T,P,1,0,2,2> E1 ## E0 ## E2 ## E2; }; \ +00655 struct { glm::detail::swizzle<4,T,P,1,0,2,3> E1 ## E0 ## E2 ## E3; }; \ +00656 struct { glm::detail::swizzle<4,T,P,1,0,3,0> E1 ## E0 ## E3 ## E0; }; \ +00657 struct { glm::detail::swizzle<4,T,P,1,0,3,1> E1 ## E0 ## E3 ## E1; }; \ +00658 struct { glm::detail::swizzle<4,T,P,1,0,3,2> E1 ## E0 ## E3 ## E2; }; \ +00659 struct { glm::detail::swizzle<4,T,P,1,0,3,3> E1 ## E0 ## E3 ## E3; }; \ +00660 struct { glm::detail::swizzle<4,T,P,1,1,0,0> E1 ## E1 ## E0 ## E0; }; \ +00661 struct { glm::detail::swizzle<4,T,P,1,1,0,1> E1 ## E1 ## E0 ## E1; }; \ +00662 struct { glm::detail::swizzle<4,T,P,1,1,0,2> E1 ## E1 ## E0 ## E2; }; \ +00663 struct { glm::detail::swizzle<4,T,P,1,1,0,3> E1 ## E1 ## E0 ## E3; }; \ +00664 struct { glm::detail::swizzle<4,T,P,1,1,1,0> E1 ## E1 ## E1 ## E0; }; \ +00665 struct { glm::detail::swizzle<4,T,P,1,1,1,1> E1 ## E1 ## E1 ## E1; }; \ +00666 struct { glm::detail::swizzle<4,T,P,1,1,1,2> E1 ## E1 ## E1 ## E2; }; \ +00667 struct { glm::detail::swizzle<4,T,P,1,1,1,3> E1 ## E1 ## E1 ## E3; }; \ +00668 struct { glm::detail::swizzle<4,T,P,1,1,2,0> E1 ## E1 ## E2 ## E0; }; \ +00669 struct { glm::detail::swizzle<4,T,P,1,1,2,1> E1 ## E1 ## E2 ## E1; }; \ +00670 struct { glm::detail::swizzle<4,T,P,1,1,2,2> E1 ## E1 ## E2 ## E2; }; \ +00671 struct { glm::detail::swizzle<4,T,P,1,1,2,3> E1 ## E1 ## E2 ## E3; }; \ +00672 struct { glm::detail::swizzle<4,T,P,1,1,3,0> E1 ## E1 ## E3 ## E0; }; \ +00673 struct { glm::detail::swizzle<4,T,P,1,1,3,1> E1 ## E1 ## E3 ## E1; }; \ +00674 struct { glm::detail::swizzle<4,T,P,1,1,3,2> E1 ## E1 ## E3 ## E2; }; \ +00675 struct { glm::detail::swizzle<4,T,P,1,1,3,3> E1 ## E1 ## E3 ## E3; }; \ +00676 struct { glm::detail::swizzle<4,T,P,1,2,0,0> E1 ## E2 ## E0 ## E0; }; \ +00677 struct { glm::detail::swizzle<4,T,P,1,2,0,1> E1 ## E2 ## E0 ## E1; }; \ +00678 struct { glm::detail::swizzle<4,T,P,1,2,0,2> E1 ## E2 ## E0 ## E2; }; \ +00679 struct { glm::detail::swizzle<4,T,P,1,2,0,3> E1 ## E2 ## E0 ## E3; }; \ +00680 struct { glm::detail::swizzle<4,T,P,1,2,1,0> E1 ## E2 ## E1 ## E0; }; \ +00681 struct { glm::detail::swizzle<4,T,P,1,2,1,1> E1 ## E2 ## E1 ## E1; }; \ +00682 struct { glm::detail::swizzle<4,T,P,1,2,1,2> E1 ## E2 ## E1 ## E2; }; \ +00683 struct { glm::detail::swizzle<4,T,P,1,2,1,3> E1 ## E2 ## E1 ## E3; }; \ +00684 struct { glm::detail::swizzle<4,T,P,1,2,2,0> E1 ## E2 ## E2 ## E0; }; \ +00685 struct { glm::detail::swizzle<4,T,P,1,2,2,1> E1 ## E2 ## E2 ## E1; }; \ +00686 struct { glm::detail::swizzle<4,T,P,1,2,2,2> E1 ## E2 ## E2 ## E2; }; \ +00687 struct { glm::detail::swizzle<4,T,P,1,2,2,3> E1 ## E2 ## E2 ## E3; }; \ +00688 struct { glm::detail::swizzle<4,T,P,1,2,3,0> E1 ## E2 ## E3 ## E0; }; \ +00689 struct { glm::detail::swizzle<4,T,P,1,2,3,1> E1 ## E2 ## E3 ## E1; }; \ +00690 struct { glm::detail::swizzle<4,T,P,1,2,3,2> E1 ## E2 ## E3 ## E2; }; \ +00691 struct { glm::detail::swizzle<4,T,P,1,2,3,3> E1 ## E2 ## E3 ## E3; }; \ +00692 struct { glm::detail::swizzle<4,T,P,1,3,0,0> E1 ## E3 ## E0 ## E0; }; \ +00693 struct { glm::detail::swizzle<4,T,P,1,3,0,1> E1 ## E3 ## E0 ## E1; }; \ +00694 struct { glm::detail::swizzle<4,T,P,1,3,0,2> E1 ## E3 ## E0 ## E2; }; \ +00695 struct { glm::detail::swizzle<4,T,P,1,3,0,3> E1 ## E3 ## E0 ## E3; }; \ +00696 struct { glm::detail::swizzle<4,T,P,1,3,1,0> E1 ## E3 ## E1 ## E0; }; \ +00697 struct { glm::detail::swizzle<4,T,P,1,3,1,1> E1 ## E3 ## E1 ## E1; }; \ +00698 struct { glm::detail::swizzle<4,T,P,1,3,1,2> E1 ## E3 ## E1 ## E2; }; \ +00699 struct { glm::detail::swizzle<4,T,P,1,3,1,3> E1 ## E3 ## E1 ## E3; }; \ +00700 struct { glm::detail::swizzle<4,T,P,1,3,2,0> E1 ## E3 ## E2 ## E0; }; \ +00701 struct { glm::detail::swizzle<4,T,P,1,3,2,1> E1 ## E3 ## E2 ## E1; }; \ +00702 struct { glm::detail::swizzle<4,T,P,1,3,2,2> E1 ## E3 ## E2 ## E2; }; \ +00703 struct { glm::detail::swizzle<4,T,P,1,3,2,3> E1 ## E3 ## E2 ## E3; }; \ +00704 struct { glm::detail::swizzle<4,T,P,1,3,3,0> E1 ## E3 ## E3 ## E0; }; \ +00705 struct { glm::detail::swizzle<4,T,P,1,3,3,1> E1 ## E3 ## E3 ## E1; }; \ +00706 struct { glm::detail::swizzle<4,T,P,1,3,3,2> E1 ## E3 ## E3 ## E2; }; \ +00707 struct { glm::detail::swizzle<4,T,P,1,3,3,3> E1 ## E3 ## E3 ## E3; }; \ +00708 struct { glm::detail::swizzle<4,T,P,2,0,0,0> E2 ## E0 ## E0 ## E0; }; \ +00709 struct { glm::detail::swizzle<4,T,P,2,0,0,1> E2 ## E0 ## E0 ## E1; }; \ +00710 struct { glm::detail::swizzle<4,T,P,2,0,0,2> E2 ## E0 ## E0 ## E2; }; \ +00711 struct { glm::detail::swizzle<4,T,P,2,0,0,3> E2 ## E0 ## E0 ## E3; }; \ +00712 struct { glm::detail::swizzle<4,T,P,2,0,1,0> E2 ## E0 ## E1 ## E0; }; \ +00713 struct { glm::detail::swizzle<4,T,P,2,0,1,1> E2 ## E0 ## E1 ## E1; }; \ +00714 struct { glm::detail::swizzle<4,T,P,2,0,1,2> E2 ## E0 ## E1 ## E2; }; \ +00715 struct { glm::detail::swizzle<4,T,P,2,0,1,3> E2 ## E0 ## E1 ## E3; }; \ +00716 struct { glm::detail::swizzle<4,T,P,2,0,2,0> E2 ## E0 ## E2 ## E0; }; \ +00717 struct { glm::detail::swizzle<4,T,P,2,0,2,1> E2 ## E0 ## E2 ## E1; }; \ +00718 struct { glm::detail::swizzle<4,T,P,2,0,2,2> E2 ## E0 ## E2 ## E2; }; \ +00719 struct { glm::detail::swizzle<4,T,P,2,0,2,3> E2 ## E0 ## E2 ## E3; }; \ +00720 struct { glm::detail::swizzle<4,T,P,2,0,3,0> E2 ## E0 ## E3 ## E0; }; \ +00721 struct { glm::detail::swizzle<4,T,P,2,0,3,1> E2 ## E0 ## E3 ## E1; }; \ +00722 struct { glm::detail::swizzle<4,T,P,2,0,3,2> E2 ## E0 ## E3 ## E2; }; \ +00723 struct { glm::detail::swizzle<4,T,P,2,0,3,3> E2 ## E0 ## E3 ## E3; }; \ +00724 struct { glm::detail::swizzle<4,T,P,2,1,0,0> E2 ## E1 ## E0 ## E0; }; \ +00725 struct { glm::detail::swizzle<4,T,P,2,1,0,1> E2 ## E1 ## E0 ## E1; }; \ +00726 struct { glm::detail::swizzle<4,T,P,2,1,0,2> E2 ## E1 ## E0 ## E2; }; \ +00727 struct { glm::detail::swizzle<4,T,P,2,1,0,3> E2 ## E1 ## E0 ## E3; }; \ +00728 struct { glm::detail::swizzle<4,T,P,2,1,1,0> E2 ## E1 ## E1 ## E0; }; \ +00729 struct { glm::detail::swizzle<4,T,P,2,1,1,1> E2 ## E1 ## E1 ## E1; }; \ +00730 struct { glm::detail::swizzle<4,T,P,2,1,1,2> E2 ## E1 ## E1 ## E2; }; \ +00731 struct { glm::detail::swizzle<4,T,P,2,1,1,3> E2 ## E1 ## E1 ## E3; }; \ +00732 struct { glm::detail::swizzle<4,T,P,2,1,2,0> E2 ## E1 ## E2 ## E0; }; \ +00733 struct { glm::detail::swizzle<4,T,P,2,1,2,1> E2 ## E1 ## E2 ## E1; }; \ +00734 struct { glm::detail::swizzle<4,T,P,2,1,2,2> E2 ## E1 ## E2 ## E2; }; \ +00735 struct { glm::detail::swizzle<4,T,P,2,1,2,3> E2 ## E1 ## E2 ## E3; }; \ +00736 struct { glm::detail::swizzle<4,T,P,2,1,3,0> E2 ## E1 ## E3 ## E0; }; \ +00737 struct { glm::detail::swizzle<4,T,P,2,1,3,1> E2 ## E1 ## E3 ## E1; }; \ +00738 struct { glm::detail::swizzle<4,T,P,2,1,3,2> E2 ## E1 ## E3 ## E2; }; \ +00739 struct { glm::detail::swizzle<4,T,P,2,1,3,3> E2 ## E1 ## E3 ## E3; }; \ +00740 struct { glm::detail::swizzle<4,T,P,2,2,0,0> E2 ## E2 ## E0 ## E0; }; \ +00741 struct { glm::detail::swizzle<4,T,P,2,2,0,1> E2 ## E2 ## E0 ## E1; }; \ +00742 struct { glm::detail::swizzle<4,T,P,2,2,0,2> E2 ## E2 ## E0 ## E2; }; \ +00743 struct { glm::detail::swizzle<4,T,P,2,2,0,3> E2 ## E2 ## E0 ## E3; }; \ +00744 struct { glm::detail::swizzle<4,T,P,2,2,1,0> E2 ## E2 ## E1 ## E0; }; \ +00745 struct { glm::detail::swizzle<4,T,P,2,2,1,1> E2 ## E2 ## E1 ## E1; }; \ +00746 struct { glm::detail::swizzle<4,T,P,2,2,1,2> E2 ## E2 ## E1 ## E2; }; \ +00747 struct { glm::detail::swizzle<4,T,P,2,2,1,3> E2 ## E2 ## E1 ## E3; }; \ +00748 struct { glm::detail::swizzle<4,T,P,2,2,2,0> E2 ## E2 ## E2 ## E0; }; \ +00749 struct { glm::detail::swizzle<4,T,P,2,2,2,1> E2 ## E2 ## E2 ## E1; }; \ +00750 struct { glm::detail::swizzle<4,T,P,2,2,2,2> E2 ## E2 ## E2 ## E2; }; \ +00751 struct { glm::detail::swizzle<4,T,P,2,2,2,3> E2 ## E2 ## E2 ## E3; }; \ +00752 struct { glm::detail::swizzle<4,T,P,2,2,3,0> E2 ## E2 ## E3 ## E0; }; \ +00753 struct { glm::detail::swizzle<4,T,P,2,2,3,1> E2 ## E2 ## E3 ## E1; }; \ +00754 struct { glm::detail::swizzle<4,T,P,2,2,3,2> E2 ## E2 ## E3 ## E2; }; \ +00755 struct { glm::detail::swizzle<4,T,P,2,2,3,3> E2 ## E2 ## E3 ## E3; }; \ +00756 struct { glm::detail::swizzle<4,T,P,2,3,0,0> E2 ## E3 ## E0 ## E0; }; \ +00757 struct { glm::detail::swizzle<4,T,P,2,3,0,1> E2 ## E3 ## E0 ## E1; }; \ +00758 struct { glm::detail::swizzle<4,T,P,2,3,0,2> E2 ## E3 ## E0 ## E2; }; \ +00759 struct { glm::detail::swizzle<4,T,P,2,3,0,3> E2 ## E3 ## E0 ## E3; }; \ +00760 struct { glm::detail::swizzle<4,T,P,2,3,1,0> E2 ## E3 ## E1 ## E0; }; \ +00761 struct { glm::detail::swizzle<4,T,P,2,3,1,1> E2 ## E3 ## E1 ## E1; }; \ +00762 struct { glm::detail::swizzle<4,T,P,2,3,1,2> E2 ## E3 ## E1 ## E2; }; \ +00763 struct { glm::detail::swizzle<4,T,P,2,3,1,3> E2 ## E3 ## E1 ## E3; }; \ +00764 struct { glm::detail::swizzle<4,T,P,2,3,2,0> E2 ## E3 ## E2 ## E0; }; \ +00765 struct { glm::detail::swizzle<4,T,P,2,3,2,1> E2 ## E3 ## E2 ## E1; }; \ +00766 struct { glm::detail::swizzle<4,T,P,2,3,2,2> E2 ## E3 ## E2 ## E2; }; \ +00767 struct { glm::detail::swizzle<4,T,P,2,3,2,3> E2 ## E3 ## E2 ## E3; }; \ +00768 struct { glm::detail::swizzle<4,T,P,2,3,3,0> E2 ## E3 ## E3 ## E0; }; \ +00769 struct { glm::detail::swizzle<4,T,P,2,3,3,1> E2 ## E3 ## E3 ## E1; }; \ +00770 struct { glm::detail::swizzle<4,T,P,2,3,3,2> E2 ## E3 ## E3 ## E2; }; \ +00771 struct { glm::detail::swizzle<4,T,P,2,3,3,3> E2 ## E3 ## E3 ## E3; }; \ +00772 struct { glm::detail::swizzle<4,T,P,3,0,0,0> E3 ## E0 ## E0 ## E0; }; \ +00773 struct { glm::detail::swizzle<4,T,P,3,0,0,1> E3 ## E0 ## E0 ## E1; }; \ +00774 struct { glm::detail::swizzle<4,T,P,3,0,0,2> E3 ## E0 ## E0 ## E2; }; \ +00775 struct { glm::detail::swizzle<4,T,P,3,0,0,3> E3 ## E0 ## E0 ## E3; }; \ +00776 struct { glm::detail::swizzle<4,T,P,3,0,1,0> E3 ## E0 ## E1 ## E0; }; \ +00777 struct { glm::detail::swizzle<4,T,P,3,0,1,1> E3 ## E0 ## E1 ## E1; }; \ +00778 struct { glm::detail::swizzle<4,T,P,3,0,1,2> E3 ## E0 ## E1 ## E2; }; \ +00779 struct { glm::detail::swizzle<4,T,P,3,0,1,3> E3 ## E0 ## E1 ## E3; }; \ +00780 struct { glm::detail::swizzle<4,T,P,3,0,2,0> E3 ## E0 ## E2 ## E0; }; \ +00781 struct { glm::detail::swizzle<4,T,P,3,0,2,1> E3 ## E0 ## E2 ## E1; }; \ +00782 struct { glm::detail::swizzle<4,T,P,3,0,2,2> E3 ## E0 ## E2 ## E2; }; \ +00783 struct { glm::detail::swizzle<4,T,P,3,0,2,3> E3 ## E0 ## E2 ## E3; }; \ +00784 struct { glm::detail::swizzle<4,T,P,3,0,3,0> E3 ## E0 ## E3 ## E0; }; \ +00785 struct { glm::detail::swizzle<4,T,P,3,0,3,1> E3 ## E0 ## E3 ## E1; }; \ +00786 struct { glm::detail::swizzle<4,T,P,3,0,3,2> E3 ## E0 ## E3 ## E2; }; \ +00787 struct { glm::detail::swizzle<4,T,P,3,0,3,3> E3 ## E0 ## E3 ## E3; }; \ +00788 struct { glm::detail::swizzle<4,T,P,3,1,0,0> E3 ## E1 ## E0 ## E0; }; \ +00789 struct { glm::detail::swizzle<4,T,P,3,1,0,1> E3 ## E1 ## E0 ## E1; }; \ +00790 struct { glm::detail::swizzle<4,T,P,3,1,0,2> E3 ## E1 ## E0 ## E2; }; \ +00791 struct { glm::detail::swizzle<4,T,P,3,1,0,3> E3 ## E1 ## E0 ## E3; }; \ +00792 struct { glm::detail::swizzle<4,T,P,3,1,1,0> E3 ## E1 ## E1 ## E0; }; \ +00793 struct { glm::detail::swizzle<4,T,P,3,1,1,1> E3 ## E1 ## E1 ## E1; }; \ +00794 struct { glm::detail::swizzle<4,T,P,3,1,1,2> E3 ## E1 ## E1 ## E2; }; \ +00795 struct { glm::detail::swizzle<4,T,P,3,1,1,3> E3 ## E1 ## E1 ## E3; }; \ +00796 struct { glm::detail::swizzle<4,T,P,3,1,2,0> E3 ## E1 ## E2 ## E0; }; \ +00797 struct { glm::detail::swizzle<4,T,P,3,1,2,1> E3 ## E1 ## E2 ## E1; }; \ +00798 struct { glm::detail::swizzle<4,T,P,3,1,2,2> E3 ## E1 ## E2 ## E2; }; \ +00799 struct { glm::detail::swizzle<4,T,P,3,1,2,3> E3 ## E1 ## E2 ## E3; }; \ +00800 struct { glm::detail::swizzle<4,T,P,3,1,3,0> E3 ## E1 ## E3 ## E0; }; \ +00801 struct { glm::detail::swizzle<4,T,P,3,1,3,1> E3 ## E1 ## E3 ## E1; }; \ +00802 struct { glm::detail::swizzle<4,T,P,3,1,3,2> E3 ## E1 ## E3 ## E2; }; \ +00803 struct { glm::detail::swizzle<4,T,P,3,1,3,3> E3 ## E1 ## E3 ## E3; }; \ +00804 struct { glm::detail::swizzle<4,T,P,3,2,0,0> E3 ## E2 ## E0 ## E0; }; \ +00805 struct { glm::detail::swizzle<4,T,P,3,2,0,1> E3 ## E2 ## E0 ## E1; }; \ +00806 struct { glm::detail::swizzle<4,T,P,3,2,0,2> E3 ## E2 ## E0 ## E2; }; \ +00807 struct { glm::detail::swizzle<4,T,P,3,2,0,3> E3 ## E2 ## E0 ## E3; }; \ +00808 struct { glm::detail::swizzle<4,T,P,3,2,1,0> E3 ## E2 ## E1 ## E0; }; \ +00809 struct { glm::detail::swizzle<4,T,P,3,2,1,1> E3 ## E2 ## E1 ## E1; }; \ +00810 struct { glm::detail::swizzle<4,T,P,3,2,1,2> E3 ## E2 ## E1 ## E2; }; \ +00811 struct { glm::detail::swizzle<4,T,P,3,2,1,3> E3 ## E2 ## E1 ## E3; }; \ +00812 struct { glm::detail::swizzle<4,T,P,3,2,2,0> E3 ## E2 ## E2 ## E0; }; \ +00813 struct { glm::detail::swizzle<4,T,P,3,2,2,1> E3 ## E2 ## E2 ## E1; }; \ +00814 struct { glm::detail::swizzle<4,T,P,3,2,2,2> E3 ## E2 ## E2 ## E2; }; \ +00815 struct { glm::detail::swizzle<4,T,P,3,2,2,3> E3 ## E2 ## E2 ## E3; }; \ +00816 struct { glm::detail::swizzle<4,T,P,3,2,3,0> E3 ## E2 ## E3 ## E0; }; \ +00817 struct { glm::detail::swizzle<4,T,P,3,2,3,1> E3 ## E2 ## E3 ## E1; }; \ +00818 struct { glm::detail::swizzle<4,T,P,3,2,3,2> E3 ## E2 ## E3 ## E2; }; \ +00819 struct { glm::detail::swizzle<4,T,P,3,2,3,3> E3 ## E2 ## E3 ## E3; }; \ +00820 struct { glm::detail::swizzle<4,T,P,3,3,0,0> E3 ## E3 ## E0 ## E0; }; \ +00821 struct { glm::detail::swizzle<4,T,P,3,3,0,1> E3 ## E3 ## E0 ## E1; }; \ +00822 struct { glm::detail::swizzle<4,T,P,3,3,0,2> E3 ## E3 ## E0 ## E2; }; \ +00823 struct { glm::detail::swizzle<4,T,P,3,3,0,3> E3 ## E3 ## E0 ## E3; }; \ +00824 struct { glm::detail::swizzle<4,T,P,3,3,1,0> E3 ## E3 ## E1 ## E0; }; \ +00825 struct { glm::detail::swizzle<4,T,P,3,3,1,1> E3 ## E3 ## E1 ## E1; }; \ +00826 struct { glm::detail::swizzle<4,T,P,3,3,1,2> E3 ## E3 ## E1 ## E2; }; \ +00827 struct { glm::detail::swizzle<4,T,P,3,3,1,3> E3 ## E3 ## E1 ## E3; }; \ +00828 struct { glm::detail::swizzle<4,T,P,3,3,2,0> E3 ## E3 ## E2 ## E0; }; \ +00829 struct { glm::detail::swizzle<4,T,P,3,3,2,1> E3 ## E3 ## E2 ## E1; }; \ +00830 struct { glm::detail::swizzle<4,T,P,3,3,2,2> E3 ## E3 ## E2 ## E2; }; \ +00831 struct { glm::detail::swizzle<4,T,P,3,3,2,3> E3 ## E3 ## E2 ## E3; }; \ +00832 struct { glm::detail::swizzle<4,T,P,3,3,3,0> E3 ## E3 ## E3 ## E0; }; \ +00833 struct { glm::detail::swizzle<4,T,P,3,3,3,1> E3 ## E3 ## E3 ## E1; }; \ +00834 struct { glm::detail::swizzle<4,T,P,3,3,3,2> E3 ## E3 ## E3 ## E2; }; \ +00835 struct { glm::detail::swizzle<4,T,P,3,3,3,3> E3 ## E3 ## E3 ## E3; }; +00836 +00837 #endif//glm_core_swizzle +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file _swizzle_func.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_swizzle_func +00030 #define glm_core_swizzle_func +00031 +00032 #define GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B) \ +00033 SWIZZLED_TYPE<TMPL_TYPE> A ## B() CONST \ +00034 { \ +00035 return SWIZZLED_TYPE<TMPL_TYPE>(this->A, this->B); \ +00036 } +00037 +00038 #define GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C) \ +00039 SWIZZLED_TYPE<TMPL_TYPE> A ## B ## C() CONST \ +00040 { \ +00041 return SWIZZLED_TYPE<TMPL_TYPE>(this->A, this->B, this->C); \ +00042 } +00043 +00044 #define GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C, D) \ +00045 SWIZZLED_TYPE<TMPL_TYPE> A ## B ## C ## D() CONST \ +00046 { \ +00047 return SWIZZLED_TYPE<TMPL_TYPE>(this->A, this->B, this->C, this->D); \ +00048 } +00049 +00050 #define GLM_SWIZZLE_GEN_VEC2_ENTRY_DEF(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B) \ +00051 template <typename TMPL_TYPE> \ +00052 SWIZZLED_TYPE<TMPL_TYPE> CLASS_TYPE<TMPL_TYPE>::A ## B() CONST \ +00053 { \ +00054 return SWIZZLED_TYPE<TMPL_TYPE>(this->A, this->B); \ +00055 } +00056 +00057 #define GLM_SWIZZLE_GEN_VEC3_ENTRY_DEF(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C) \ +00058 template <typename TMPL_TYPE> \ +00059 SWIZZLED_TYPE<TMPL_TYPE> CLASS_TYPE<TMPL_TYPE>::A ## B ## C() CONST \ +00060 { \ +00061 return SWIZZLED_TYPE<TMPL_TYPE>(this->A, this->B, this->C); \ +00062 } +00063 +00064 #define GLM_SWIZZLE_GEN_VEC4_ENTRY_DEF(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C, D) \ +00065 template <typename TMPL_TYPE> \ +00066 SWIZZLED_TYPE<TMPL_TYPE> CLASS_TYPE<TMPL_TYPE>::A ## B ## C ## D() CONST \ +00067 { \ +00068 return SWIZZLED_TYPE<TMPL_TYPE>(this->A, this->B, this->C, this->D); \ +00069 } +00070 +00071 #define GLM_MUTABLE +00072 +00073 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B) \ +00074 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \ +00075 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) +00076 +00077 #define GLM_SWIZZLE_GEN_REF_FROM_VEC2(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE) \ +00078 GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, x, y) \ +00079 GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, r, g) \ +00080 GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, s, t) +00081 +00082 //GLM_SWIZZLE_GEN_REF_FROM_VEC2(valType, detail::vec2, detail::ref2) +00083 +00084 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ +00085 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \ +00086 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C) \ +00087 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) \ +00088 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C) \ +00089 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A) \ +00090 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B) +00091 +00092 #define GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ +00093 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B, C) \ +00094 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C, B) \ +00095 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A, C) \ +00096 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C, A) \ +00097 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A, B) \ +00098 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B, A) +00099 +00100 #define GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \ +00101 GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \ +00102 GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C) +00103 +00104 #define GLM_SWIZZLE_GEN_REF_FROM_VEC3(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE) \ +00105 GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, x, y, z) \ +00106 GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, r, g, b) \ +00107 GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, s, t, q) +00108 +00109 //GLM_SWIZZLE_GEN_REF_FROM_VEC3(valType, detail::vec3, detail::ref2, detail::ref3) +00110 +00111 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ +00112 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \ +00113 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C) \ +00114 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, D) \ +00115 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) \ +00116 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C) \ +00117 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, D) \ +00118 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A) \ +00119 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B) \ +00120 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, D) \ +00121 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, A) \ +00122 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, B) \ +00123 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, C) +00124 +00125 #define GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ +00126 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, B, C) \ +00127 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, B, D) \ +00128 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, C, B) \ +00129 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, C, D) \ +00130 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, D, B) \ +00131 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, D, C) \ +00132 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, A, C) \ +00133 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, A, D) \ +00134 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, C, A) \ +00135 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, C, D) \ +00136 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, D, A) \ +00137 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, D, C) \ +00138 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, A, B) \ +00139 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, A, D) \ +00140 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, B, A) \ +00141 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, B, D) \ +00142 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, D, A) \ +00143 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, D, B) \ +00144 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, A, B) \ +00145 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, A, C) \ +00146 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, B, A) \ +00147 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, B, C) \ +00148 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, C, A) \ +00149 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, C, B) +00150 +00151 #define GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ +00152 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, C, B, D) \ +00153 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, C, D, B) \ +00154 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, D, B, C) \ +00155 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, D, C, B) \ +00156 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, B, D, C) \ +00157 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , A, B, C, D) \ +00158 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, C, A, D) \ +00159 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, C, D, A) \ +00160 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, D, A, C) \ +00161 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, D, C, A) \ +00162 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, A, D, C) \ +00163 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , B, A, C, D) \ +00164 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, B, A, D) \ +00165 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, B, D, A) \ +00166 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, D, A, B) \ +00167 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, D, B, A) \ +00168 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, A, D, B) \ +00169 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , C, A, B, D) \ +00170 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, C, B, A) \ +00171 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, C, A, B) \ +00172 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, A, B, C) \ +00173 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, A, C, B) \ +00174 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, B, A, C) \ +00175 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, , D, B, C, A) +00176 +00177 #define GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) \ +00178 GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C, D) \ +00179 GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C, D) \ +00180 GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) +00181 +00182 #define GLM_SWIZZLE_GEN_REF_FROM_VEC4(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \ +00183 GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z, w) \ +00184 GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b, a) \ +00185 GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, q, p) +00186 +00187 //GLM_SWIZZLE_GEN_REF_FROM_VEC4(valType, detail::vec4, detail::ref2, detail::ref3, detail::ref4) +00188 +00189 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B) \ +00190 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \ +00191 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \ +00192 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \ +00193 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) +00194 +00195 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B) \ +00196 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \ +00197 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \ +00198 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \ +00199 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \ +00200 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \ +00201 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \ +00202 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \ +00203 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) +00204 +00205 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B) \ +00206 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \ +00207 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \ +00208 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \ +00209 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \ +00210 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \ +00211 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \ +00212 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \ +00213 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \ +00214 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \ +00215 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \ +00216 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \ +00217 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \ +00218 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \ +00219 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \ +00220 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \ +00221 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) +00222 +00223 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B) \ +00224 GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B) \ +00225 GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B) \ +00226 GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B) +00227 +00228 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC2(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \ +00229 GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y) \ +00230 GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g) \ +00231 GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t) +00232 +00233 //GLM_SWIZZLE_GEN_VEC_FROM_VEC2(valType, detail::vec2, detail::vec2, detail::vec3, detail::vec4) +00234 +00235 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ +00236 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \ +00237 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \ +00238 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C) \ +00239 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \ +00240 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) \ +00241 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C) \ +00242 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A) \ +00243 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B) \ +00244 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C) +00245 +00246 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ +00247 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \ +00248 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \ +00249 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C) \ +00250 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \ +00251 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \ +00252 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C) \ +00253 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A) \ +00254 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B) \ +00255 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C) \ +00256 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \ +00257 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \ +00258 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C) \ +00259 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \ +00260 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) \ +00261 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C) \ +00262 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A) \ +00263 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B) \ +00264 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C) \ +00265 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A) \ +00266 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B) \ +00267 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C) \ +00268 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A) \ +00269 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B) \ +00270 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C) \ +00271 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A) \ +00272 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B) \ +00273 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C) +00274 +00275 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ +00276 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \ +00277 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \ +00278 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, C) \ +00279 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \ +00280 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \ +00281 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, C) \ +00282 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, A) \ +00283 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, B) \ +00284 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, C) \ +00285 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \ +00286 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \ +00287 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, C) \ +00288 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \ +00289 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \ +00290 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, C) \ +00291 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, A) \ +00292 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, B) \ +00293 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, C) \ +00294 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, A) \ +00295 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, B) \ +00296 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, C) \ +00297 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, A) \ +00298 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, B) \ +00299 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, C) \ +00300 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, A) \ +00301 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, B) \ +00302 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, C) \ +00303 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, A) \ +00304 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, B) \ +00305 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, C) \ +00306 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, A) \ +00307 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, B) \ +00308 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, C) \ +00309 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, A) \ +00310 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, B) \ +00311 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, C) \ +00312 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \ +00313 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \ +00314 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, C) \ +00315 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \ +00316 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \ +00317 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, C) \ +00318 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, A) \ +00319 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, B) \ +00320 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, C) \ +00321 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \ +00322 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \ +00323 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, C) \ +00324 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \ +00325 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) \ +00326 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, C) \ +00327 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, A) \ +00328 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, B) \ +00329 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, C) \ +00330 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, A) \ +00331 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, B) \ +00332 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, C) \ +00333 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, A) \ +00334 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, B) \ +00335 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, C) \ +00336 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, A) \ +00337 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, B) \ +00338 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, C) \ +00339 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, A) \ +00340 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, B) \ +00341 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, C) \ +00342 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, A) \ +00343 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, B) \ +00344 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, C) \ +00345 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, A) \ +00346 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, B) \ +00347 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, C) \ +00348 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, A) \ +00349 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, B) \ +00350 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, C) \ +00351 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, A) \ +00352 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, B) \ +00353 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, C) \ +00354 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, A) \ +00355 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, B) \ +00356 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, C) \ +00357 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, A) \ +00358 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, B) \ +00359 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, C) \ +00360 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, A) \ +00361 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, B) \ +00362 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, C) \ +00363 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, A) \ +00364 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, B) \ +00365 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, C) \ +00366 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, A) \ +00367 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, B) \ +00368 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, C) \ +00369 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, A) \ +00370 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, B) \ +00371 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, C) \ +00372 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, A) \ +00373 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, B) \ +00374 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, C) \ +00375 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, A) \ +00376 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, B) \ +00377 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, C) \ +00378 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, A) \ +00379 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, B) \ +00380 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, C) \ +00381 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, A) \ +00382 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, B) \ +00383 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, C) \ +00384 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, A) \ +00385 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, B) \ +00386 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, C) \ +00387 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, A) \ +00388 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, B) \ +00389 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, C) \ +00390 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, A) \ +00391 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, B) \ +00392 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, C) \ +00393 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, A) \ +00394 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, B) \ +00395 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, C) \ +00396 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, A) \ +00397 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, B) \ +00398 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, C) \ +00399 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, A) \ +00400 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, B) \ +00401 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, C) \ +00402 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, A) \ +00403 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, B) \ +00404 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, C) \ +00405 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, A) \ +00406 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, B) \ +00407 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, C) \ +00408 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, A) \ +00409 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, B) \ +00410 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, C) \ +00411 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, A) \ +00412 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, B) \ +00413 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, C) \ +00414 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, A) \ +00415 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, B) \ +00416 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, C) \ +00417 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, A) \ +00418 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, B) \ +00419 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, C) +00420 +00421 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C) \ +00422 GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C) \ +00423 GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \ +00424 GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C) +00425 +00426 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC3(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \ +00427 GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z) \ +00428 GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b) \ +00429 GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, q) +00430 +00431 //GLM_SWIZZLE_GEN_VEC_FROM_VEC3(valType, detail::vec3, detail::vec2, detail::vec3, detail::vec4) +00432 +00433 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ +00434 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \ +00435 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \ +00436 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C) \ +00437 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D) \ +00438 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \ +00439 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) \ +00440 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C) \ +00441 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D) \ +00442 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A) \ +00443 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B) \ +00444 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C) \ +00445 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D) \ +00446 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A) \ +00447 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B) \ +00448 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C) \ +00449 GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D) +00450 +00451 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ +00452 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \ +00453 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \ +00454 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C) \ +00455 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D) \ +00456 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \ +00457 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \ +00458 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C) \ +00459 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D) \ +00460 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A) \ +00461 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B) \ +00462 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C) \ +00463 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D) \ +00464 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A) \ +00465 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B) \ +00466 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C) \ +00467 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D) \ +00468 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \ +00469 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \ +00470 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C) \ +00471 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D) \ +00472 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \ +00473 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) \ +00474 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C) \ +00475 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D) \ +00476 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A) \ +00477 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B) \ +00478 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C) \ +00479 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D) \ +00480 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A) \ +00481 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B) \ +00482 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C) \ +00483 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D) \ +00484 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A) \ +00485 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B) \ +00486 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C) \ +00487 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D) \ +00488 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A) \ +00489 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B) \ +00490 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C) \ +00491 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D) \ +00492 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A) \ +00493 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B) \ +00494 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C) \ +00495 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D) \ +00496 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A) \ +00497 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B) \ +00498 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C) \ +00499 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D) \ +00500 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A) \ +00501 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B) \ +00502 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C) \ +00503 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D) \ +00504 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A) \ +00505 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B) \ +00506 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C) \ +00507 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D) \ +00508 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A) \ +00509 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B) \ +00510 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C) \ +00511 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D) \ +00512 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A) \ +00513 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B) \ +00514 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C) \ +00515 GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D) +00516 +00517 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ +00518 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \ +00519 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \ +00520 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, C) \ +00521 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, D) \ +00522 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \ +00523 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \ +00524 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, C) \ +00525 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, D) \ +00526 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, A) \ +00527 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, B) \ +00528 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, C) \ +00529 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, D) \ +00530 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, A) \ +00531 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, B) \ +00532 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, C) \ +00533 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, D) \ +00534 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \ +00535 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \ +00536 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, C) \ +00537 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, D) \ +00538 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \ +00539 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \ +00540 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, C) \ +00541 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, D) \ +00542 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, A) \ +00543 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, B) \ +00544 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, C) \ +00545 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, D) \ +00546 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, A) \ +00547 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, B) \ +00548 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, C) \ +00549 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, D) \ +00550 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, A) \ +00551 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, B) \ +00552 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, C) \ +00553 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, D) \ +00554 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, A) \ +00555 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, B) \ +00556 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, C) \ +00557 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, D) \ +00558 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, A) \ +00559 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, B) \ +00560 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, C) \ +00561 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, D) \ +00562 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, A) \ +00563 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, B) \ +00564 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, C) \ +00565 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, D) \ +00566 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, A) \ +00567 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, B) \ +00568 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, C) \ +00569 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, D) \ +00570 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, A) \ +00571 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, B) \ +00572 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, C) \ +00573 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, D) \ +00574 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, A) \ +00575 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, B) \ +00576 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, C) \ +00577 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, D) \ +00578 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, A) \ +00579 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, B) \ +00580 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, C) \ +00581 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, D) \ +00582 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \ +00583 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \ +00584 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, C) \ +00585 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, D) \ +00586 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \ +00587 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \ +00588 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, C) \ +00589 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, D) \ +00590 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, A) \ +00591 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, B) \ +00592 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, C) \ +00593 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, D) \ +00594 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, A) \ +00595 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, B) \ +00596 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, C) \ +00597 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, D) \ +00598 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \ +00599 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \ +00600 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, C) \ +00601 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, D) \ +00602 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \ +00603 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) \ +00604 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, C) \ +00605 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, D) \ +00606 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, A) \ +00607 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, B) \ +00608 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, C) \ +00609 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, D) \ +00610 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, A) \ +00611 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, B) \ +00612 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, C) \ +00613 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, D) \ +00614 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, A) \ +00615 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, B) \ +00616 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, C) \ +00617 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, D) \ +00618 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, A) \ +00619 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, B) \ +00620 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, C) \ +00621 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, D) \ +00622 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, A) \ +00623 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, B) \ +00624 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, C) \ +00625 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, D) \ +00626 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, A) \ +00627 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, B) \ +00628 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, C) \ +00629 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, D) \ +00630 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, A) \ +00631 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, B) \ +00632 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, C) \ +00633 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, D) \ +00634 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, A) \ +00635 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, B) \ +00636 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, C) \ +00637 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, D) \ +00638 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, A) \ +00639 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, B) \ +00640 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, C) \ +00641 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, D) \ +00642 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, A) \ +00643 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, B) \ +00644 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, C) \ +00645 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, D) \ +00646 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, A) \ +00647 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, B) \ +00648 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, C) \ +00649 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, D) \ +00650 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, A) \ +00651 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, B) \ +00652 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, C) \ +00653 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, D) \ +00654 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, A) \ +00655 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, B) \ +00656 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, C) \ +00657 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, D) \ +00658 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, A) \ +00659 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, B) \ +00660 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, C) \ +00661 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, D) \ +00662 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, A) \ +00663 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, B) \ +00664 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, C) \ +00665 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, D) \ +00666 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, A) \ +00667 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, B) \ +00668 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, C) \ +00669 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, D) \ +00670 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, A) \ +00671 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, B) \ +00672 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, C) \ +00673 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, D) \ +00674 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, A) \ +00675 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, B) \ +00676 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, C) \ +00677 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, D) \ +00678 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, A) \ +00679 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, B) \ +00680 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, C) \ +00681 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, D) \ +00682 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, A) \ +00683 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, B) \ +00684 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, C) \ +00685 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, D) \ +00686 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, A) \ +00687 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, B) \ +00688 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, C) \ +00689 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, D) \ +00690 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, A) \ +00691 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, B) \ +00692 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, C) \ +00693 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, D) \ +00694 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, A) \ +00695 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, B) \ +00696 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, C) \ +00697 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, D) \ +00698 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, A) \ +00699 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, B) \ +00700 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, C) \ +00701 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, D) \ +00702 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, A) \ +00703 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, B) \ +00704 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, C) \ +00705 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, D) \ +00706 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, A) \ +00707 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, B) \ +00708 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, C) \ +00709 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, D) \ +00710 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, A) \ +00711 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, B) \ +00712 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, C) \ +00713 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, D) \ +00714 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, A) \ +00715 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, B) \ +00716 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, C) \ +00717 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, D) \ +00718 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, A) \ +00719 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, B) \ +00720 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, C) \ +00721 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, D) \ +00722 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, A) \ +00723 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, B) \ +00724 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, C) \ +00725 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, D) \ +00726 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, A) \ +00727 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, B) \ +00728 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, C) \ +00729 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, D) \ +00730 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, A) \ +00731 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, B) \ +00732 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, C) \ +00733 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, D) \ +00734 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, A) \ +00735 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, B) \ +00736 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, C) \ +00737 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, D) \ +00738 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, A) \ +00739 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, B) \ +00740 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, C) \ +00741 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, D) \ +00742 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, A) \ +00743 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, B) \ +00744 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, C) \ +00745 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, D) \ +00746 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, A) \ +00747 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, B) \ +00748 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, C) \ +00749 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, D) \ +00750 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, A) \ +00751 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, B) \ +00752 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, C) \ +00753 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, D) \ +00754 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, A) \ +00755 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, B) \ +00756 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, C) \ +00757 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, D) \ +00758 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, A) \ +00759 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, B) \ +00760 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, C) \ +00761 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, D) \ +00762 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, A) \ +00763 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, B) \ +00764 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, C) \ +00765 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, D) \ +00766 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, A) \ +00767 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, B) \ +00768 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, C) \ +00769 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, D) \ +00770 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, A) \ +00771 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, B) \ +00772 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, C) \ +00773 GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, D) +00774 +00775 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) \ +00776 GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C, D) \ +00777 GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C, D) \ +00778 GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) +00779 +00780 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC4(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \ +00781 GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z, w) \ +00782 GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b, a) \ +00783 GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, q, p) +00784 +00785 //GLM_SWIZZLE_GEN_VEC_FROM_VEC4(valType, detail::vec4, detail::vec2, detail::vec3, detail::vec4) +00786 +00787 #endif//glm_core_swizzle_func +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file _vectorize.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #define VECTORIZE2_VEC(func) \ +00030 template <typename T> \ +00031 GLM_FUNC_QUALIFIER detail::tvec2<T> func( \ +00032 detail::tvec2<T> const & v) \ +00033 { \ +00034 return detail::tvec2<T>( \ +00035 func(v.x), \ +00036 func(v.y)); \ +00037 } +00038 +00039 #define VECTORIZE3_VEC(func) \ +00040 template <typename T> \ +00041 GLM_FUNC_QUALIFIER detail::tvec3<T> func( \ +00042 detail::tvec3<T> const & v) \ +00043 { \ +00044 return detail::tvec3<T>( \ +00045 func(v.x), \ +00046 func(v.y), \ +00047 func(v.z)); \ +00048 } +00049 +00050 #define VECTORIZE4_VEC(func) \ +00051 template <typename T> \ +00052 GLM_FUNC_QUALIFIER detail::tvec4<T> func( \ +00053 detail::tvec4<T> const & v) \ +00054 { \ +00055 return detail::tvec4<T>( \ +00056 func(v.x), \ +00057 func(v.y), \ +00058 func(v.z), \ +00059 func(v.w)); \ +00060 } +00061 +00062 #define VECTORIZE_VEC(func) \ +00063 VECTORIZE2_VEC(func) \ +00064 VECTORIZE3_VEC(func) \ +00065 VECTORIZE4_VEC(func) +00066 +00067 #define VECTORIZE2_VEC_SCA(func) \ +00068 template <typename T> \ +00069 GLM_FUNC_QUALIFIER detail::tvec2<T> func \ +00070 ( \ +00071 detail::tvec2<T> const & x, \ +00072 typename detail::tvec2<T>::value_type const & y \ +00073 ) \ +00074 { \ +00075 return detail::tvec2<T>( \ +00076 func(x.x, y), \ +00077 func(x.y, y)); \ +00078 } +00079 +00080 #define VECTORIZE3_VEC_SCA(func) \ +00081 template <typename T> \ +00082 GLM_FUNC_QUALIFIER detail::tvec3<T> func \ +00083 ( \ +00084 detail::tvec3<T> const & x, \ +00085 typename detail::tvec3<T>::value_type const & y \ +00086 ) \ +00087 { \ +00088 return detail::tvec3<T>( \ +00089 func(x.x, y), \ +00090 func(x.y, y), \ +00091 func(x.z, y)); \ +00092 } +00093 +00094 #define VECTORIZE4_VEC_SCA(func) \ +00095 template <typename T> \ +00096 GLM_FUNC_QUALIFIER detail::tvec4<T> func \ +00097 ( \ +00098 detail::tvec4<T> const & x, \ +00099 typename detail::tvec4<T>::value_type const & y \ +00100 ) \ +00101 { \ +00102 return detail::tvec4<T>( \ +00103 func(x.x, y), \ +00104 func(x.y, y), \ +00105 func(x.z, y), \ +00106 func(x.w, y)); \ +00107 } +00108 +00109 #define VECTORIZE_VEC_SCA(func) \ +00110 VECTORIZE2_VEC_SCA(func) \ +00111 VECTORIZE3_VEC_SCA(func) \ +00112 VECTORIZE4_VEC_SCA(func) +00113 +00114 #define VECTORIZE2_VEC_VEC(func) \ +00115 template <typename T> \ +00116 GLM_FUNC_QUALIFIER detail::tvec2<T> func \ +00117 ( \ +00118 detail::tvec2<T> const & x, \ +00119 detail::tvec2<T> const & y \ +00120 ) \ +00121 { \ +00122 return detail::tvec2<T>( \ +00123 func(x.x, y.x), \ +00124 func(x.y, y.y)); \ +00125 } +00126 +00127 #define VECTORIZE3_VEC_VEC(func) \ +00128 template <typename T> \ +00129 GLM_FUNC_QUALIFIER detail::tvec3<T> func \ +00130 ( \ +00131 detail::tvec3<T> const & x, \ +00132 detail::tvec3<T> const & y \ +00133 ) \ +00134 { \ +00135 return detail::tvec3<T>( \ +00136 func(x.x, y.x), \ +00137 func(x.y, y.y), \ +00138 func(x.z, y.z)); \ +00139 } +00140 +00141 #define VECTORIZE4_VEC_VEC(func) \ +00142 template <typename T> \ +00143 GLM_FUNC_QUALIFIER detail::tvec4<T> func \ +00144 ( \ +00145 detail::tvec4<T> const & x, \ +00146 detail::tvec4<T> const & y \ +00147 ) \ +00148 { \ +00149 return detail::tvec4<T>( \ +00150 func(x.x, y.x), \ +00151 func(x.y, y.y), \ +00152 func(x.z, y.z), \ +00153 func(x.w, y.w)); \ +00154 } +00155 +00156 #define VECTORIZE_VEC_VEC(func) \ +00157 VECTORIZE2_VEC_VEC(func) \ +00158 VECTORIZE3_VEC_VEC(func) \ +00159 VECTORIZE4_VEC_VEC(func) +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_associated_min_max: Associated Min/Max
+Definition in file associated_min_max.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_associated_min_max +00039 #define GLM_GTX_associated_min_max GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_associated_min_max extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00052 +00055 template<typename genTypeT, typename genTypeU> +00056 genTypeU associatedMin( +00057 const genTypeT& x, const genTypeU& a, +00058 const genTypeT& y, const genTypeU& b); +00059 +00062 template<typename genTypeT, typename genTypeU> +00063 genTypeU associatedMin( +00064 const genTypeT& x, const genTypeU& a, +00065 const genTypeT& y, const genTypeU& b, +00066 const genTypeT& z, const genTypeU& c); +00067 +00070 template<typename genTypeT, typename genTypeU> +00071 genTypeU associatedMin( +00072 const genTypeT& x, const genTypeU& a, +00073 const genTypeT& y, const genTypeU& b, +00074 const genTypeT& z, const genTypeU& c, +00075 const genTypeT& w, const genTypeU& d); +00076 +00079 template<typename genTypeT, typename genTypeU> +00080 genTypeU associatedMax( +00081 const genTypeT& x, const genTypeU& a, +00082 const genTypeT& y, const genTypeU& b); +00083 +00086 template<typename genTypeT, typename genTypeU> +00087 genTypeU associatedMax( +00088 const genTypeT& x, const genTypeU& a, +00089 const genTypeT& y, const genTypeU& b, +00090 const genTypeT& z, const genTypeU& c); +00091 +00094 template<typename genTypeT, typename genTypeU> +00095 genTypeU associatedMax( +00096 const genTypeT& x, const genTypeU& a, +00097 const genTypeT& y, const genTypeU& b, +00098 const genTypeT& z, const genTypeU& c, +00099 const genTypeT& w, const genTypeU& d); +00100 +00102 } //namespace glm +00103 +00104 #include "associated_min_max.inl" +00105 +00106 #endif//GLM_GTX_associated_min_max +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_bit: Extended bitwise operations
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_bit: Extended bitwise operations
+Definition in file bit.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_bit +00040 #define GLM_GTX_bit GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 #include "../gtc/half_float.hpp" +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_GTX_bit extension included") +00048 #endif +00049 +00050 namespace glm +00051 { +00054 +00057 template <typename genIType> +00058 genIType mask(genIType const & count); +00059 +00063 template <typename genIUType, typename sizeType> +00064 genIUType extractField( +00065 genIUType const & v, +00066 sizeType const & first, +00067 sizeType const & count); +00068 +00071 template <typename genType> +00072 int lowestBit(genType const & value); +00073 +00076 template <typename genType> +00077 int highestBit(genType const & value); +00078 +00081 template <typename genType> +00082 genType highestBitValue(genType const & value); +00083 +00086 template <typename genType> +00087 bool isPowerOfTwo(genType const & value); +00088 +00091 template <typename genType> +00092 genType powerOfTwoAbove(genType const & value); +00093 +00096 template <typename genType> +00097 genType powerOfTwoBelow(genType const & value); +00098 +00101 template <typename genType> +00102 genType powerOfTwoNearest(genType const & value); +00103 +00106 template <typename genType> +00107 genType bitRevert(genType const & value); +00108 +00111 template <typename genType> +00112 genType bitRotateRight(genType const & In, std::size_t Shift); +00113 +00116 template <typename genType> +00117 genType bitRotateLeft(genType const & In, std::size_t Shift); +00118 +00121 template <typename genIUType> +00122 genIUType fillBitfieldWithOne( +00123 genIUType const & Value, +00124 int const & FromBit, +00125 int const & ToBit); +00126 +00129 template <typename genIUType> +00130 genIUType fillBitfieldWithZero( +00131 genIUType const & Value, +00132 int const & FromBit, +00133 int const & ToBit); +00134 +00136 } //namespace glm +00137 +00138 #include "bit.inl" +00139 +00140 #endif//GLM_GTX_bit +
+ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_closest_point +00039 #define GLM_GTX_closest_point GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_closest_point extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00052 +00055 template <typename T> +00056 detail::tvec3<T> closestPointOnLine( +00057 detail::tvec3<T> const & point, +00058 detail::tvec3<T> const & a, +00059 detail::tvec3<T> const & b); +00060 +00062 }// namespace glm +00063 +00064 #include "closest_point.inl" +00065 +00066 #endif//GLM_GTX_closest_point +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_color_cast: Color conversion
+Definition in file color_cast.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_color_cast +00040 #define GLM_GTX_color_cast GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 #include "../gtx/number_precision.hpp" +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_GTX_color_cast extension included") +00048 #endif +00049 +00050 namespace glm +00051 { +00054 +00057 template <typename valType> uint8 u8channel_cast(valType a); +00058 +00061 template <typename valType> uint16 u16channel_cast(valType a); +00062 +00063 template <typename T> uint32 u32_rgbx_cast(const detail::tvec3<T>& c); +00064 template <typename T> uint32 u32_xrgb_cast(const detail::tvec3<T>& c); +00065 template <typename T> uint32 u32_bgrx_cast(const detail::tvec3<T>& c); +00066 template <typename T> uint32 u32_xbgr_cast(const detail::tvec3<T>& c); +00067 +00068 template <typename T> uint32 u32_rgba_cast(const detail::tvec4<T>& c); +00069 template <typename T> uint32 u32_argb_cast(const detail::tvec4<T>& c); +00070 template <typename T> uint32 u32_bgra_cast(const detail::tvec4<T>& c); +00071 template <typename T> uint32 u32_abgr_cast(const detail::tvec4<T>& c); +00072 +00073 template <typename T> uint64 u64_rgbx_cast(const detail::tvec3<T>& c); +00074 template <typename T> uint64 u64_xrgb_cast(const detail::tvec3<T>& c); +00075 template <typename T> uint64 u64_bgrx_cast(const detail::tvec3<T>& c); +00076 template <typename T> uint64 u64_xbgr_cast(const detail::tvec3<T>& c); +00077 +00078 template <typename T> uint64 u64_rgba_cast(const detail::tvec4<T>& c); +00079 template <typename T> uint64 u64_argb_cast(const detail::tvec4<T>& c); +00080 template <typename T> uint64 u64_bgra_cast(const detail::tvec4<T>& c); +00081 template <typename T> uint64 u64_abgr_cast(const detail::tvec4<T>& c); +00082 +00083 template <typename T> f16 f16_channel_cast(T a); +00084 +00085 template <typename T> f16vec3 f16_rgbx_cast(T c); +00086 template <typename T> f16vec3 f16_xrgb_cast(T c); +00087 template <typename T> f16vec3 f16_bgrx_cast(T c); +00088 template <typename T> f16vec3 f16_xbgr_cast(T c); +00089 +00090 template <typename T> f16vec4 f16_rgba_cast(T c); +00091 template <typename T> f16vec4 f16_argb_cast(T c); +00092 template <typename T> f16vec4 f16_bgra_cast(T c); +00093 template <typename T> f16vec4 f16_abgr_cast(T c); +00094 +00095 template <typename T> f32 f32_channel_cast(T a); +00096 +00097 template <typename T> f32vec3 f32_rgbx_cast(T c); +00098 template <typename T> f32vec3 f32_xrgb_cast(T c); +00099 template <typename T> f32vec3 f32_bgrx_cast(T c); +00100 template <typename T> f32vec3 f32_xbgr_cast(T c); +00101 +00102 template <typename T> f32vec4 f32_rgba_cast(T c); +00103 template <typename T> f32vec4 f32_argb_cast(T c); +00104 template <typename T> f32vec4 f32_bgra_cast(T c); +00105 template <typename T> f32vec4 f32_abgr_cast(T c); +00106 +00107 template <typename T> f64 f64_channel_cast(T a); +00108 +00109 template <typename T> f64vec3 f64_rgbx_cast(T c); +00110 template <typename T> f64vec3 f64_xrgb_cast(T c); +00111 template <typename T> f64vec3 f64_bgrx_cast(T c); +00112 template <typename T> f64vec3 f64_xbgr_cast(T c); +00113 +00114 template <typename T> f64vec4 f64_rgba_cast(T c); +00115 template <typename T> f64vec4 f64_argb_cast(T c); +00116 template <typename T> f64vec4 f64_bgra_cast(T c); +00117 template <typename T> f64vec4 f64_abgr_cast(T c); +00118 +00120 }//namespace glm +00121 +00122 #include "color_cast.inl" +00123 +00124 #endif//GLM_GTX_color_cast +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_color_space: RGB to HSV conversion
+Definition in file color_space.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_color_space +00039 #define GLM_GTX_color_space GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_color_space extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00052 +00055 template <typename valType> +00056 detail::tvec3<valType> rgbColor( +00057 detail::tvec3<valType> const & hsvValue); +00058 +00061 template <typename valType> +00062 detail::tvec3<valType> hsvColor( +00063 detail::tvec3<valType> const & rgbValue); +00064 +00067 template <typename valType> +00068 detail::tmat4x4<valType> saturation( +00069 valType const s); +00070 +00073 template <typename valType> +00074 detail::tvec3<valType> saturation( +00075 valType const s, +00076 detail::tvec3<valType> const & color); +00077 +00080 template <typename valType> +00081 detail::tvec4<valType> saturation( +00082 valType const s, +00083 detail::tvec4<valType> const & color); +00084 +00087 template <typename valType> +00088 valType luminosity( +00089 detail::tvec3<valType> const & color); +00090 +00092 }//namespace glm +00093 +00094 #include "color_space.inl" +00095 +00096 #endif//GLM_GTX_color_space +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_color_space_YCoCg: RGB to YCoCg conversion
+Definition in file color_space_YCoCg.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef glm_gtx_color_space_YCoCg +00039 #define glm_gtx_color_space_YCoCg GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_color_space_YCoCg extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00052 +00055 template <typename valType> +00056 detail::tvec3<valType> rgb2YCoCg( +00057 detail::tvec3<valType> const & rgbColor); +00058 +00061 template <typename valType> +00062 detail::tvec3<valType> YCoCg2rgb( +00063 detail::tvec3<valType> const & YCoCgColor); +00064 +00068 template <typename valType> +00069 detail::tvec3<valType> rgb2YCoCgR( +00070 detail::tvec3<valType> const & rgbColor); +00071 +00075 template <typename valType> +00076 detail::tvec3<valType> YCoCgR2rgb( +00077 detail::tvec3<valType> const & YCoCgColor); +00078 +00080 }//namespace glm +00081 +00082 #include "color_space_YCoCg.inl" +00083 +00084 #endif//glm_gtx_color_space_YCoCg +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_compatibility: Cg and HLSL compatibility
+Definition in file compatibility.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_compatibility +00040 #define GLM_GTX_compatibility GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 #include "../gtc/half_float.hpp" +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_GTX_compatibility extension included") +00048 #endif +00049 +00050 #if(GLM_COMPILER & GLM_COMPILER_VC) +00051 #include <cfloat> +00052 #elif(GLM_COMPILER & GLM_COMPILER_GCC) +00053 #include <cmath> +00054 #endif//GLM_COMPILER +00055 +00056 namespace glm +00057 { +00060 +00061 template <typename T> GLM_FUNC_QUALIFIER T lerp(T x, T y, T a){return mix(x, y, a);} +00062 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);} +00063 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);} +00064 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);} +00065 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);} +00066 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);} +00067 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);} +00068 +00069 template <typename T> GLM_FUNC_QUALIFIER T saturate(T x){return clamp(x, T(0), T(1));} +00070 template <typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> saturate(const detail::tvec2<T>& x){return clamp(x, T(0), T(1));} +00071 template <typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> saturate(const detail::tvec3<T>& x){return clamp(x, T(0), T(1));} +00072 template <typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> saturate(const detail::tvec4<T>& x){return clamp(x, T(0), T(1));} +00073 +00074 template <typename T> GLM_FUNC_QUALIFIER T atan2(T x, T y){return atan(x, y);} +00075 template <typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> atan2(const detail::tvec2<T>& x, const detail::tvec2<T>& y){return atan(x, y);} +00076 template <typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> atan2(const detail::tvec3<T>& x, const detail::tvec3<T>& y){return atan(x, y);} +00077 template <typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> atan2(const detail::tvec4<T>& x, const detail::tvec4<T>& y){return atan(x, y);} +00078 +00079 template <typename genType> bool isfinite(genType const & x); +00080 template <typename valType> detail::tvec2<bool> isfinite(const detail::tvec2<valType>& x); +00081 template <typename valType> detail::tvec3<bool> isfinite(const detail::tvec3<valType>& x); +00082 template <typename valType> detail::tvec4<bool> isfinite(const detail::tvec4<valType>& x); +00083 +00084 template <typename genType> bool isinf(genType const & x); +00085 template <typename genType> detail::tvec2<bool> isinf(const detail::tvec2<genType>& x); +00086 template <typename genType> detail::tvec3<bool> isinf(const detail::tvec3<genType>& x); +00087 template <typename genType> detail::tvec4<bool> isinf(const detail::tvec4<genType>& x); +00088 +00089 template <typename genType> bool isnan(genType const & x); +00090 template <typename genType> detail::tvec2<bool> isnan(const detail::tvec2<genType>& x); +00091 template <typename genType> detail::tvec3<bool> isnan(const detail::tvec3<genType>& x); +00092 template <typename genType> detail::tvec4<bool> isnan(const detail::tvec4<genType>& x); +00093 +00094 typedef bool bool1; +00095 typedef detail::tvec2<bool> bool2; +00096 typedef detail::tvec3<bool> bool3; +00097 typedef detail::tvec4<bool> bool4; +00098 +00099 typedef bool bool1x1; +00100 typedef detail::tmat2x2<bool> bool2x2; +00101 typedef detail::tmat2x3<bool> bool2x3; +00102 typedef detail::tmat2x4<bool> bool2x4; +00103 typedef detail::tmat3x2<bool> bool3x2; +00104 typedef detail::tmat3x3<bool> bool3x3; +00105 typedef detail::tmat3x4<bool> bool3x4; +00106 typedef detail::tmat4x2<bool> bool4x2; +00107 typedef detail::tmat4x3<bool> bool4x3; +00108 typedef detail::tmat4x4<bool> bool4x4; +00109 +00110 typedef int int1; +00111 typedef detail::tvec2<int> int2; +00112 typedef detail::tvec3<int> int3; +00113 typedef detail::tvec4<int> int4; +00114 +00115 typedef int int1x1; +00116 typedef detail::tmat2x2<int> int2x2; +00117 typedef detail::tmat2x3<int> int2x3; +00118 typedef detail::tmat2x4<int> int2x4; +00119 typedef detail::tmat3x2<int> int3x2; +00120 typedef detail::tmat3x3<int> int3x3; +00121 typedef detail::tmat3x4<int> int3x4; +00122 typedef detail::tmat4x2<int> int4x2; +00123 typedef detail::tmat4x3<int> int4x3; +00124 typedef detail::tmat4x4<int> int4x4; +00125 +00126 typedef detail::half half1; +00127 typedef detail::tvec2<detail::half> half2; +00128 typedef detail::tvec3<detail::half> half3; +00129 typedef detail::tvec4<detail::half> half4; +00130 +00131 typedef detail::half half1x1; +00132 typedef detail::tmat2x2<detail::half> half2x2; +00133 typedef detail::tmat2x3<detail::half> half2x3; +00134 typedef detail::tmat2x4<detail::half> half2x4; +00135 typedef detail::tmat3x2<detail::half> half3x2; +00136 typedef detail::tmat3x3<detail::half> half3x3; +00137 typedef detail::tmat3x4<detail::half> half3x4; +00138 typedef detail::tmat4x2<detail::half> half4x2; +00139 typedef detail::tmat4x3<detail::half> half4x3; +00140 typedef detail::tmat4x4<detail::half> half4x4; +00141 +00142 typedef float float1; +00143 typedef detail::tvec2<float> float2; +00144 typedef detail::tvec3<float> float3; +00145 typedef detail::tvec4<float> float4; +00146 +00147 typedef float float1x1; +00148 typedef detail::tmat2x2<float> float2x2; +00149 typedef detail::tmat2x3<float> float2x3; +00150 typedef detail::tmat2x4<float> float2x4; +00151 typedef detail::tmat3x2<float> float3x2; +00152 typedef detail::tmat3x3<float> float3x3; +00153 typedef detail::tmat3x4<float> float3x4; +00154 typedef detail::tmat4x2<float> float4x2; +00155 typedef detail::tmat4x3<float> float4x3; +00156 typedef detail::tmat4x4<float> float4x4; +00157 +00158 typedef double double1; +00159 typedef detail::tvec2<double> double2; +00160 typedef detail::tvec3<double> double3; +00161 typedef detail::tvec4<double> double4; +00162 +00163 typedef double double1x1; +00164 typedef detail::tmat2x2<double> double2x2; +00165 typedef detail::tmat2x3<double> double2x3; +00166 typedef detail::tmat2x4<double> double2x4; +00167 typedef detail::tmat3x2<double> double3x2; +00168 typedef detail::tmat3x3<double> double3x3; +00169 typedef detail::tmat3x4<double> double3x4; +00170 typedef detail::tmat4x2<double> double4x2; +00171 typedef detail::tmat4x3<double> double4x3; +00172 typedef detail::tmat4x4<double> double4x4; +00173 +00175 }//namespace glm +00176 +00177 #include "compatibility.inl" +00178 +00179 #endif//GLM_GTX_compatibility +00180 +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_component_wise: Component wise
+Definition in file component_wise.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_component_wise +00039 #define GLM_GTX_component_wise GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_component_wise extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00052 +00055 template <typename genType> +00056 typename genType::value_type compAdd( +00057 genType const & v); +00058 +00061 template <typename genType> +00062 typename genType::value_type compMul( +00063 genType const & v); +00064 +00067 template <typename genType> +00068 typename genType::value_type compMin( +00069 genType const & v); +00070 +00073 template <typename genType> +00074 typename genType::value_type compMax( +00075 genType const & v); +00076 +00078 }//namespace glm +00079 +00080 #include "component_wise.inl" +00081 +00082 #endif//GLM_GTX_component_wise +
+ + + + + + + |
Go to the source code of this file.
++Functions | |
template<typename T > | |
T | e () |
template<typename T > | |
T | epsilon () |
template<typename T > | |
T | euler () |
template<typename T > | |
T | golden_ratio () |
template<typename T > | |
T | half_pi () |
template<typename T > | |
T | ln_ln_two () |
template<typename T > | |
T | ln_ten () |
template<typename T > | |
T | ln_two () |
template<typename T > | |
T | one () |
template<typename T > | |
T | one_over_pi () |
template<typename T > | |
T | one_over_root_two () |
template<typename T > | |
T | pi () |
template<typename T > | |
T | quarter_pi () |
template<typename T > | |
T | root_five () |
template<typename T > | |
T | root_half_pi () |
template<typename T > | |
T | root_ln_four () |
template<typename T > | |
T | root_pi () |
template<typename T > | |
T | root_three () |
template<typename T > | |
T | root_two () |
template<typename T > | |
T | root_two_pi () |
template<typename T > | |
T | third () |
template<typename T > | |
T | two_over_pi () |
template<typename T > | |
T | two_over_root_pi () |
template<typename T > | |
T | two_thirds () |
template<typename T > | |
T | zero () |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_constants: Provide build-in constants
+Definition in file constants.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_constants +00040 #define GLM_GTX_constants GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 #include "../gtc/half_float.hpp" +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_GTX_constants extension included") +00048 #endif +00049 +00050 namespace glm +00051 { +00054 +00058 template <typename T> +00059 T epsilon(); +00060 +00063 template <typename T> +00064 T zero(); +00065 +00068 template <typename T> +00069 T one(); +00070 +00073 template <typename T> +00074 T pi(); +00075 +00078 template <typename T> +00079 T root_pi(); +00080 +00083 template <typename T> +00084 T half_pi(); +00085 +00088 template <typename T> +00089 T quarter_pi(); +00090 +00093 template <typename T> +00094 T one_over_pi(); +00095 +00098 template <typename T> +00099 T two_over_pi(); +00100 +00103 template <typename T> +00104 T two_over_root_pi(); +00105 +00108 template <typename T> +00109 T one_over_root_two(); +00110 +00113 template <typename T> +00114 T root_half_pi(); +00115 +00118 template <typename T> +00119 T root_two_pi(); +00120 +00123 template <typename T> +00124 T root_ln_four(); +00125 +00128 template <typename T> +00129 T e(); +00130 +00133 template <typename T> +00134 T euler(); +00135 +00138 template <typename T> +00139 T root_two(); +00140 +00143 template <typename T> +00144 T root_three(); +00145 +00148 template <typename T> +00149 T root_five(); +00150 +00153 template <typename T> +00154 T ln_two(); +00155 +00158 template <typename T> +00159 T ln_ten(); +00160 +00163 template <typename T> +00164 T ln_ln_two(); +00165 +00168 template <typename T> +00169 T third(); +00170 +00173 template <typename T> +00174 T two_thirds(); +00175 +00178 template <typename T> +00179 T golden_ratio(); +00180 +00182 } //namespace glm +00183 +00184 #include "constants.inl" +00185 +00186 #endif//GLM_GTX_constants +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_epsilon: Epsilon comparison
+Definition in file epsilon.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 +00040 #ifndef GLM_GTX_epsilon +00041 #define GLM_GTX_epsilon GLM_VERSION +00042 +00043 // Dependency: +00044 #include "../glm.hpp" +00045 #include "../gtc/half_float.hpp" +00046 #include "../gtc/quaternion.hpp" +00047 +00048 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00049 # pragma message("GLM: GLM_GTX_epsilon extension included") +00050 #endif +00051 +00052 namespace glm +00053 { +00056 +00059 template <typename genTypeT, typename genTypeU> +00060 bool equalEpsilon( +00061 genTypeT const & x, +00062 genTypeT const & y, +00063 genTypeU const & epsilon); +00064 +00067 template <typename genTypeT, typename genTypeU> +00068 bool notEqualEpsilon( +00069 genTypeT const & x, +00070 genTypeT const & y, +00071 genTypeU const & epsilon); +00072 +00074 }//namespace glm +00075 +00076 #include "epsilon.inl" +00077 +00078 #endif//GLM_GTX_epsilon +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_euler_angles: Matrix from euler angles
+Definition in file euler_angles.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_euler_angles +00040 #define GLM_GTX_euler_angles GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 #include "../gtc/half_float.hpp" +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_GTX_euler_angles extension included") +00048 #endif +00049 +00050 namespace glm +00051 { +00054 +00057 template <typename valType> +00058 detail::tmat4x4<valType> eulerAngleX( +00059 valType const & angleX); +00060 +00063 template <typename valType> +00064 detail::tmat4x4<valType> eulerAngleY( +00065 valType const & angleY); +00066 +00069 template <typename valType> +00070 detail::tmat4x4<valType> eulerAngleZ( +00071 valType const & angleZ); +00072 +00075 template <typename valType> +00076 detail::tmat4x4<valType> eulerAngleXY( +00077 valType const & angleX, +00078 valType const & angleY); +00079 +00082 template <typename valType> +00083 detail::tmat4x4<valType> eulerAngleYX( +00084 valType const & angleY, +00085 valType const & angleX); +00086 +00089 template <typename valType> +00090 detail::tmat4x4<valType> eulerAngleXZ( +00091 valType const & angleX, +00092 valType const & angleZ); +00093 +00096 template <typename valType> +00097 detail::tmat4x4<valType> eulerAngleZX( +00098 valType const & angleZ, +00099 valType const & angleX); +00100 +00103 template <typename valType> +00104 detail::tmat4x4<valType> eulerAngleYZ( +00105 valType const & angleY, +00106 valType const & angleZ); +00107 +00110 template <typename valType> +00111 detail::tmat4x4<valType> eulerAngleZY( +00112 valType const & angleZ, +00113 valType const & angleY); +00114 +00117 template <typename valType> +00118 detail::tmat4x4<valType> eulerAngleYXZ( +00119 valType const & yaw, +00120 valType const & pitch, +00121 valType const & roll); +00122 +00125 template <typename valType> +00126 detail::tmat4x4<valType> yawPitchRoll( +00127 valType const & yaw, +00128 valType const & pitch, +00129 valType const & roll); +00130 +00133 template <typename T> +00134 detail::tmat2x2<T> orientate2(T const & angle); +00135 +00138 template <typename T> +00139 detail::tmat3x3<T> orientate3(T const & angle); +00140 +00143 template <typename T> +00144 detail::tmat3x3<T> orientate3(detail::tvec3<T> const & angles); +00145 +00148 template <typename T> +00149 detail::tmat4x4<T> orientate4(detail::tvec3<T> const & angles); +00150 +00152 }//namespace glm +00153 +00154 #include "euler_angles.inl" +00155 +00156 #endif//GLM_GTX_euler_angles +
+ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 +00040 +00041 +00042 +00043 +00044 +00045 +00046 +00047 +00048 +00049 +00050 +00051 +00052 +00053 +00054 +00055 +00056 +00057 +00058 #ifndef glm_ext +00059 #define glm_ext +00060 +00061 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_EXT_INCLUDED_DISPLAYED)) +00062 # define GLM_MESSAGE_EXT_INCLUDED_DISPLAYED +00063 # pragma message("GLM: All extensions included (not recommanded)") +00064 #endif//GLM_MESSAGES +00065 +00066 #include "./gtc/half_float.hpp" +00067 #include "./gtc/matrix_access.hpp" +00068 #include "./gtc/matrix_integer.hpp" +00069 #include "./gtc/matrix_inverse.hpp" +00070 #include "./gtc/matrix_transform.hpp" +00071 #include "./gtc/quaternion.hpp" +00072 #include "./gtc/swizzle.hpp" +00073 #include "./gtc/type_precision.hpp" +00074 #include "./gtc/type_ptr.hpp" +00075 +00076 #include "./gtx/associated_min_max.hpp" +00077 #include "./gtx/bit.hpp" +00078 #include "./gtx/closest_point.hpp" +00079 #include "./gtx/color_cast.hpp" +00080 #include "./gtx/color_space.hpp" +00081 #include "./gtx/color_space_YCoCg.hpp" +00082 #include "./gtx/compatibility.hpp" +00083 #include "./gtx/component_wise.hpp" +00084 #include "./gtx/epsilon.hpp" +00085 #include "./gtx/euler_angles.hpp" +00086 #include "./gtx/extend.hpp" +00087 #include "./gtx/extented_min_max.hpp" +00088 #include "./gtx/fast_exponential.hpp" +00089 #include "./gtx/fast_square_root.hpp" +00090 #include "./gtx/fast_trigonometry.hpp" +00091 #include "./gtx/gradient_paint.hpp" +00092 #include "./gtx/handed_coordinate_space.hpp" +00093 #include "./gtx/inertia.hpp" +00094 #include "./gtx/int_10_10_10_2.hpp" +00095 #include "./gtx/integer.hpp" +00096 #include "./gtx/intersect.hpp" +00097 #include "./gtx/log_base.hpp" +00098 #include "./gtx/matrix_cross_product.hpp" +00099 #include "./gtx/matrix_interpolation.hpp" +00100 #include "./gtx/matrix_major_storage.hpp" +00101 #include "./gtx/matrix_operation.hpp" +00102 #include "./gtx/matrix_query.hpp" +00103 #include "./gtx/mixed_product.hpp" +00104 #include "./gtx/multiple.hpp" +00105 #include "./gtx/noise.hpp" +00106 #include "./gtx/norm.hpp" +00107 #include "./gtx/normal.hpp" +00108 #include "./gtx/normalize_dot.hpp" +00109 #include "./gtx/number_precision.hpp" +00110 #include "./gtx/ocl_type.hpp" +00111 #include "./gtx/optimum_pow.hpp" +00112 #include "./gtx/orthonormalize.hpp" +00113 #include "./gtx/perpendicular.hpp" +00114 #include "./gtx/polar_coordinates.hpp" +00115 #include "./gtx/projection.hpp" +00116 #include "./gtx/quaternion.hpp" +00117 #include "./gtx/random.hpp" +00118 #include "./gtx/raw_data.hpp" +00119 #include "./gtx/reciprocal.hpp" +00120 #include "./gtx/rotate_vector.hpp" +00121 #include "./gtx/spline.hpp" +00122 #include "./gtx/std_based_type.hpp" +00123 #include "./gtx/string_cast.hpp" +00124 #include "./gtx/transform.hpp" +00125 #include "./gtx/transform2.hpp" +00126 #include "./gtx/ulp.hpp" +00127 #include "./gtx/vec1.hpp" +00128 #include "./gtx/vector_access.hpp" +00129 #include "./gtx/vector_angle.hpp" +00130 #include "./gtx/vector_query.hpp" +00131 #include "./gtx/verbose_operator.hpp" +00132 #include "./gtx/wrap.hpp" +00133 +00134 #if(GLM_ARCH & GLM_ARCH_SSE2) +00135 # include "./gtx/simd_vec4.hpp" +00136 # include "./gtx/simd_mat4.hpp" +00137 #endif +00138 +00139 #include "./virtrev/xstream.hpp" +00140 +00141 //const float goldenRatio = 1.618033988749894848f; +00142 //const float pi = 3.141592653589793238f; +00143 +00144 #endif //glm_ext +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_extend: Position extending
+Definition in file extend.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_extend +00039 #define GLM_GTX_extend GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_extend extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00052 +00055 template <typename genType> +00056 genType extend( +00057 genType const & Origin, +00058 genType const & Source, +00059 typename genType::value_type const Length); +00060 +00062 }//namespace glm +00063 +00064 #include "extend.inl" +00065 +00066 #endif//GLM_GTX_extend +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_extented_min_max: Extended min max
+Definition in file extented_min_max.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_extented_min_max +00040 #define GLM_GTX_extented_min_max GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 #include "../gtc/half_float.hpp" +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_GTX_extented_min_max extension included") +00048 #endif +00049 +00050 namespace glm +00051 { +00054 +00057 template <typename T> +00058 T min( +00059 T const & x, +00060 T const & y, +00061 T const & z); +00062 +00065 template +00066 < +00067 typename T, +00068 template <typename> class C +00069 > +00070 C<T> min( +00071 C<T> const & x, +00072 typename C<T>::value_type const & y, +00073 typename C<T>::value_type const & z); +00074 +00077 template +00078 < +00079 typename T, +00080 template <typename> class C +00081 > +00082 C<T> min( +00083 C<T> const & x, +00084 C<T> const & y, +00085 C<T> const & z); +00086 +00089 template <typename T> +00090 T min( +00091 T const & x, +00092 T const & y, +00093 T const & z, +00094 T const & w); +00095 +00098 template +00099 < +00100 typename T, +00101 template <typename> class C +00102 > +00103 C<T> min( +00104 C<T> const & x, +00105 typename C<T>::value_type const & y, +00106 typename C<T>::value_type const & z, +00107 typename C<T>::value_type const & w); +00108 +00111 template +00112 < +00113 typename T, +00114 template <typename> class C +00115 > +00116 C<T> min( +00117 C<T> const & x, +00118 C<T> const & y, +00119 C<T> const & z, +00120 C<T> const & w); +00121 +00124 template <typename T> +00125 T max( +00126 T const & x, +00127 T const & y, +00128 T const & z); +00129 +00132 template +00133 < +00134 typename T, +00135 template <typename> class C +00136 > +00137 C<T> max( +00138 C<T> const & x, +00139 typename C<T>::value_type const & y, +00140 typename C<T>::value_type const & z); +00141 +00144 template +00145 < +00146 typename T, +00147 template <typename> class C +00148 > +00149 C<T> max( +00150 C<T> const & x, +00151 C<T> const & y, +00152 C<T> const & z); +00153 +00156 template <typename T> +00157 T max( +00158 T const & x, +00159 T const & y, +00160 T const & z, +00161 T const & w); +00162 +00165 template +00166 < +00167 typename T, +00168 template <typename> class C +00169 > +00170 C<T> max( +00171 C<T> const & x, +00172 typename C<T>::value_type const & y, +00173 typename C<T>::value_type const & z, +00174 typename C<T>::value_type const & w); +00175 +00178 template +00179 < +00180 typename T, +00181 template <typename> class C +00182 > +00183 C<T> max( +00184 C<T> const & x, +00185 C<T> const & y, +00186 C<T> const & z, +00187 C<T> const & w); +00188 +00190 }//namespace glm +00191 +00192 #include "extented_min_max.inl" +00193 +00194 #endif//GLM_GTX_extented_min_max +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_fast_exponential: Fast exponentiation functions
+Definition in file fast_exponential.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_fast_exponential +00040 #define GLM_GTX_fast_exponential GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 #include "../gtc/half_float.hpp" +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_GTX_fast_exponential extension included") +00048 #endif +00049 +00050 namespace glm +00051 { +00054 +00057 template <typename genType> +00058 genType fastPow( +00059 genType const & x, +00060 genType const & y); +00061 +00064 template <typename genTypeT, typename genTypeU> +00065 genTypeT fastPow( +00066 genTypeT const & x, +00067 genTypeU const & y); +00068 +00071 template <typename T> +00072 T fastExp(const T& x); +00073 +00076 template <typename T> +00077 T fastLog(const T& x); +00078 +00081 template <typename T> +00082 T fastExp2(const T& x); +00083 +00086 template <typename T> +00087 T fastLog2(const T& x); +00088 +00091 template <typename T> +00092 T fastLn(const T& x); +00093 +00095 }//namespace glm +00096 +00097 #include "fast_exponential.inl" +00098 +00099 #endif//GLM_GTX_fast_exponential +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_fast_square_root: Fast square root functions
+Definition in file fast_square_root.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 +00040 #ifndef GLM_GTX_fast_square_root +00041 #define GLM_GTX_fast_square_root GLM_VERSION +00042 +00043 // Dependency: +00044 #include "../glm.hpp" +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_GTX_fast_square_root extension included") +00048 #endif +00049 +00050 namespace glm +00051 { +00054 +00057 template <typename genType> +00058 genType fastSqrt(genType const & x); +00059 +00062 template <typename genType> +00063 genType fastInverseSqrt(genType const & x); +00064 +00067 template <typename genType> +00068 typename genType::value_type fastLength(genType const & x); +00069 +00072 template <typename genType> +00073 typename genType::value_type fastDistance(genType const & x, genType const & y); +00074 +00077 template <typename genType> +00078 genType fastNormalize(genType const & x); +00079 +00081 }// namespace glm +00082 +00083 #include "fast_square_root.inl" +00084 +00085 #endif//GLM_GTX_fast_square_root +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_fast_trigonometry: Fast trigonometric functions
+Definition in file fast_trigonometry.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_fast_trigonometry +00039 #define GLM_GTX_fast_trigonometry GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_fast_trigonometry extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00052 +00056 template <typename T> +00057 T fastSin(const T& angle); +00058 +00062 template <typename T> +00063 T fastCos(const T& angle); +00064 +00068 template <typename T> +00069 T fastTan(const T& angle); +00070 +00074 template <typename T> +00075 T fastAsin(const T& angle); +00076 +00080 template <typename T> +00081 T fastAcos(const T& angle); +00082 +00086 template <typename T> +00087 T fastAtan(const T& y, const T& x); +00088 +00092 template <typename T> +00093 T fastAtan(const T& angle); +00094 +00096 }//namespace glm +00097 +00098 #include "fast_trigonometry.inl" +00099 +00100 #endif//GLM_GTX_fast_trigonometry +
+ + + + + + + |
Go to the source code of this file.
++Functions | |
template<typename genType > | |
genType | abs (genType const &x) |
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 , 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 genType , typename genIType > | |
genType | intBitsToFloat (genIType const &value) |
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 | 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 | round (genType const &x) |
template<typename genType > | |
genType | roundEven (genType const &x) |
template<typename genType > | |
genType | sign (genType const &x) |
template<typename genType > | |
genType | smoothstep (genType const &edge0, genType const &edge1, genType const &x) |
template<typename genType > | |
genType | step (genType const &edge, genType const &x) |
template<typename genType > | |
genType | trunc (genType const &x) |
template<typename genType , typename genUType > | |
genType | uintBitsToFloat (genUType const &value) |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file func_common.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 #ifndef GLM_CORE_func_common +00037 #define GLM_CORE_func_common GLM_VERSION +00038 +00039 #include "_fixes.hpp" +00040 +00041 namespace glm +00042 { +00045 +00052 template <typename genType> +00053 genType abs(genType const & x); +00054 +00061 template <typename genType> +00062 genType sign(genType const & x); +00063 +00070 template <typename genType> +00071 genType floor(genType const & x); +00072 +00080 template <typename genType> +00081 genType trunc(genType const & x); +00082 +00093 template <typename genType> +00094 genType round(genType const & x); +00095 +00105 template <typename genType> +00106 genType roundEven(genType const & x); +00107 +00115 template <typename genType> +00116 genType ceil(genType const & x); +00117 +00124 template <typename genType> +00125 genType fract(genType const & x); +00126 +00134 template <typename genType> +00135 genType mod( +00136 genType const & x, +00137 genType const & y); +00138 +00146 template <typename genType> +00147 genType mod( +00148 genType const & x, +00149 typename genType::value_type const & y); +00150 +00160 template <typename genType> +00161 genType modf( +00162 genType const & x, +00163 genType & i); +00164 +00171 template <typename genType> +00172 genType min( +00173 genType const & x, +00174 genType const & y); +00175 +00176 template <typename genType> +00177 genType min( +00178 genType const & x, +00179 typename genType::value_type const & y); +00180 +00187 template <typename genType> +00188 genType max( +00189 genType const & x, +00190 genType const & y); +00191 +00192 template <typename genType> +00193 genType max( +00194 genType const & x, +00195 typename genType::value_type const & y); +00196 +00204 template <typename genType> +00205 genType clamp( +00206 genType const & x, +00207 genType const & minVal, +00208 genType const & maxVal); +00209 +00210 template <typename genType> +00211 genType clamp( +00212 genType const & x, +00213 typename genType::value_type const & minVal, +00214 typename genType::value_type const & maxVal); +00215 +00258 template <typename genTypeT, typename genTypeU> +00259 genTypeT mix(genTypeT const & x, genTypeT const & y, genTypeU const & a); +00260 +00265 template <typename genType> +00266 genType step( +00267 genType const & edge, +00268 genType const & x); +00269 +00270 template <typename genType> +00271 genType step( +00272 typename genType::value_type const & edge, +00273 genType const & x); +00274 +00289 template <typename genType> +00290 genType smoothstep( +00291 genType const & edge0, +00292 genType const & edge1, +00293 genType const & x); +00294 +00295 template <typename genType> +00296 genType smoothstep( +00297 typename genType::value_type const & edge0, +00298 typename genType::value_type const & edge1, +00299 genType const & x); +00300 +00311 template <typename genType> +00312 typename genType::bool_type isnan(genType const & x); +00313 +00324 template <typename genType> +00325 typename genType::bool_type isinf(genType const & x); +00326 +00336 template <typename genType, typename genIType> +00337 genIType floatBitsToInt(genType const & value); +00338 +00348 template <typename genType, typename genUType> +00349 genUType floatBitsToUint(genType const & value); +00350 +00364 template <typename genType, typename genIType> +00365 genType intBitsToFloat(genIType const & value); +00366 +00380 template <typename genType, typename genUType> +00381 genType uintBitsToFloat(genUType const & value); +00382 +00389 template <typename genType> +00390 genType fma(genType const & a, genType const & b, genType const & c); +00391 +00406 template <typename genType, typename genIType> +00407 genType frexp(genType const & x, genIType & exp); +00408 +00420 template <typename genType, typename genIType> +00421 genType ldexp(genType const & x, genIType const & exp); +00422 +00424 }//namespace glm +00425 +00426 #include "func_common.inl" +00427 +00428 #endif//GLM_CORE_func_common +
+ + + + + + + |
Go to the source code of this file.
++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) |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file func_exponential.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 #ifndef glm_core_func_exponential +00037 #define glm_core_func_exponential GLM_VERSION +00038 +00039 namespace glm +00040 { +00043 +00052 template <typename genType> +00053 genType pow(genType const & x, genType const & y); +00054 +00062 template <typename genType> +00063 genType exp(genType const & x); +00064 +00074 template <typename genType> +00075 genType log(genType const & x); +00076 +00084 template <typename genType> +00085 genType exp2(genType const & x); +00086 +00095 template <typename genType> +00096 genType log2(genType const & x); +00097 +00105 template <typename genType> +00106 genType sqrt(genType const & x); +00107 +00115 template <typename genType> +00116 genType inversesqrt(genType const & x); +00117 +00119 }//namespace glm +00120 +00121 #include "func_exponential.inl" +00122 +00123 #endif//glm_core_func_exponential +
+ + + + + + + |
Go to the source code of this file.
++Functions | |
template<typename valType > | |
detail::tvec3< valType > | cross (detail::tvec3< valType > const &x, detail::tvec3< valType > const &y) |
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 genType > | |
genType | faceforward (genType const &N, genType const &I, genType const &Nref) |
template<typename genType > | |
genType::value_type | length (genType const &x) |
template<typename genType > | |
genType | normalize (genType const &x) |
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) |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file func_geometric.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 #ifndef glm_core_func_geometric +00037 #define glm_core_func_geometric GLM_VERSION +00038 +00039 namespace glm +00040 { +00043 +00050 template <typename genType> +00051 typename genType::value_type length( +00052 genType const & x); +00053 +00060 template <typename genType> +00061 typename genType::value_type distance( +00062 genType const & p0, +00063 genType const & p1); +00064 +00071 template <typename genType> +00072 typename genType::value_type dot( +00073 genType const & x, +00074 genType const & y); +00075 +00082 template <typename valType> +00083 detail::tvec3<valType> cross( +00084 detail::tvec3<valType> const & x, +00085 detail::tvec3<valType> const & y); +00086 +00091 template <typename genType> +00092 genType normalize( +00093 genType const & x); +00094 +00101 template <typename genType> +00102 genType faceforward( +00103 genType const & N, +00104 genType const & I, +00105 genType const & Nref); +00106 +00114 template <typename genType> +00115 genType reflect( +00116 genType const & I, +00117 genType const & N); +00118 +00127 template <typename genType> +00128 genType refract( +00129 genType const & I, +00130 genType const & N, +00131 typename genType::value_type const & eta); +00132 +00134 }//namespace glm +00135 +00136 #include "func_geometric.inl" +00137 +00138 #endif//glm_core_func_geometric +
+ + + + + + + |
Go to the source code of this file.
++Functions | |
template<typename T , template< typename > class genIUType> | |
genIUType< T >::signed_type | bitCount (genIUType< 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 genIUType> | |
genIUType< T >::signed_type | findLSB (genIUType< T > const &Value) |
template<typename T , template< typename > class genIUType> | |
genIUType< T >::signed_type | findMSB (genIUType< 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) |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file func_integer.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef glm_core_func_integer +00039 #define glm_core_func_integer GLM_VERSION +00040 +00041 namespace glm +00042 { +00045 +00054 template <typename genUType> +00055 genUType uaddCarry( +00056 genUType const & x, +00057 genUType const & y, +00058 genUType & carry); +00059 +00068 template <typename genUType> +00069 genUType usubBorrow( +00070 genUType const & x, +00071 genUType const & y, +00072 genUType & borrow); +00073 +00082 template <typename genUType> +00083 void umulExtended( +00084 genUType const & x, +00085 genUType const & y, +00086 genUType & msb, +00087 genUType & lsb); +00088 +00097 template <typename genIType> +00098 void imulExtended( +00099 genIType const & x, +00100 genIType const & y, +00101 genIType & msb, +00102 genIType & lsb); +00103 +00119 template <typename genIUType> +00120 genIUType bitfieldExtract( +00121 genIUType const & Value, +00122 int const & Offset, +00123 int const & Bits); +00124 +00139 template <typename genIUType> +00140 genIUType bitfieldInsert( +00141 genIUType const & Base, +00142 genIUType const & Insert, +00143 int const & Offset, +00144 int const & Bits); +00145 +00154 template <typename genIUType> +00155 genIUType bitfieldReverse(genIUType const & value); +00156 +00165 template <typename T, template <typename> class genIUType> +00166 typename genIUType<T>::signed_type bitCount(genIUType<T> const & Value); +00167 +00178 template <typename T, template <typename> class genIUType> +00179 typename genIUType<T>::signed_type findLSB(genIUType<T> const & Value); +00180 +00192 template <typename T, template <typename> class genIUType> +00193 typename genIUType<T>::signed_type findMSB(genIUType<T> const & Value); +00194 +00196 }//namespace glm +00197 +00198 #include "func_integer.inl" +00199 +00200 #endif//glm_core_func_integer +00201 +
+ + + + + + + |
Go to the source code of this file.
++Functions | |
template<typename valType > | |
detail::tmat2x2< valType > +::value_type | determinant (detail::tmat2x2< valType > const &m) |
template<typename valType > | |
detail::tmat3x3< valType > +::value_type | determinant (detail::tmat3x3< valType > const &m) |
template<typename valType > | |
detail::tmat4x4< valType > +::value_type | determinant (detail::tmat4x4< valType > const &m) |
template<typename valType > | |
detail::tmat2x2< valType > | inverse (detail::tmat2x2< valType > const &m) |
template<typename valType > | |
detail::tmat3x3< valType > | inverse (detail::tmat3x3< valType > const &m) |
template<typename valType > | |
detail::tmat4x4< valType > | inverse (detail::tmat4x4< valType > 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) |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file func_matrix.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 +00040 #ifndef GLM_CORE_func_matrix +00041 #define GLM_CORE_func_matrix GLM_VERSION +00042 +00043 namespace glm +00044 { +00047 +00055 template <typename matType> +00056 matType matrixCompMult( +00057 matType const & x, +00058 matType const & y); +00059 +00070 template <typename vecType, typename matType> +00071 matType outerProduct( +00072 vecType const & c, +00073 vecType const & r); +00074 +00081 template <typename matType> +00082 typename matType::transpose_type transpose( +00083 matType const & x); +00084 +00091 template <typename valType> +00092 typename detail::tmat2x2<valType>::value_type determinant( +00093 detail::tmat2x2<valType> const & m); +00094 +00101 template <typename valType> +00102 typename detail::tmat3x3<valType>::value_type determinant( +00103 detail::tmat3x3<valType> const & m); +00104 +00111 template <typename valType> +00112 typename detail::tmat4x4<valType>::value_type determinant( +00113 detail::tmat4x4<valType> const & m); +00114 +00121 template <typename valType> +00122 detail::tmat2x2<valType> inverse( +00123 detail::tmat2x2<valType> const & m); +00124 +00131 template <typename valType> +00132 detail::tmat3x3<valType> inverse( +00133 detail::tmat3x3<valType> const & m); +00134 +00141 template <typename valType> +00142 detail::tmat4x4<valType> inverse( +00143 detail::tmat4x4<valType> const & m); +00144 +00146 }//namespace glm +00147 +00148 #include "func_matrix.inl" +00149 +00150 #endif//GLM_CORE_func_matrix +
+ + + + + + + |
Go to the source code of this file.
++Functions | |
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) |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file func_noise.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef glm_core_func_noise +00039 #define glm_core_func_noise GLM_VERSION +00040 +00041 namespace glm +00042 { +00045 +00052 template <typename genType> +00053 typename genType::value_type noise1(genType const & x); +00054 +00061 template <typename genType> +00062 detail::tvec2<typename genType::value_type> noise2(genType const & x); +00063 +00070 template <typename genType> +00071 detail::tvec3<typename genType::value_type> noise3(genType const & x); +00072 +00079 template <typename genType> +00080 detail::tvec4<typename genType::value_type> noise4(genType const & x); +00081 +00083 }//namespace glm +00084 +00085 #include "func_noise.inl" +00086 +00087 #endif//glm_core_func_noise +
+ + + + + + + |
Go to the source code of this file.
++Functions | |
double | packDouble2x32 (detail::tvec2< detail::uint32 > const &v) |
uint | packHalf2x16 (vec2 const &v) |
detail::uint32 | packSnorm2x16 (detail::tvec2< detail::float32 > 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) |
vec2 | unpackHalf2x16 (uint const &v) |
detail::tvec2< detail::float32 > | unpackSnorm2x16 (detail::uint32 const &p) |
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) |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file func_packing.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 #ifndef GLM_CORE_func_packing +00037 #define GLM_CORE_func_packing GLM_VERSION +00038 +00039 namespace glm +00040 { +00043 +00055 detail::uint32 packUnorm2x16(detail::tvec2<detail::float32> const & v); +00056 +00068 detail::uint32 packSnorm2x16(detail::tvec2<detail::float32> const & v); +00069 +00081 detail::uint32 packUnorm4x8(detail::tvec4<detail::float32> const & v); +00082 +00094 detail::uint32 packSnorm4x8(detail::tvec4<detail::float32> const & v); +00095 +00107 detail::tvec2<detail::float32> unpackUnorm2x16(detail::uint32 const & p); +00108 +00120 detail::tvec2<detail::float32> unpackSnorm2x16(detail::uint32 const & p); +00121 +00133 detail::tvec4<detail::float32> unpackUnorm4x8(detail::uint32 const & p); +00134 +00146 detail::tvec4<detail::float32> unpackSnorm4x8(detail::uint32 const & p); +00147 +00156 double packDouble2x32(detail::tvec2<detail::uint32> const & v); +00157 +00165 detail::tvec2<detail::uint32> unpackDouble2x32(double const & v); +00166 +00167 +00176 uint packHalf2x16(vec2 const & v); +00177 +00186 vec2 unpackHalf2x16(uint const & v); +00187 +00189 }//namespace glm +00190 +00191 #include "func_packing.inl" +00192 +00193 #endif//GLM_CORE_func_packing +00194 +
+ + + + + + + |
Go to the source code of this file.
++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) |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file func_trigonometric.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 +00040 #ifndef GLM_CORE_func_trigonometric +00041 #define GLM_CORE_func_trigonometric GLM_VERSION +00042 +00043 namespace glm +00044 { +00047 +00054 template <typename genType> +00055 genType radians(genType const & degrees); +00056 +00063 template <typename genType> +00064 genType degrees(genType const & radians); +00065 +00073 template <typename genType> +00074 genType sin(genType const & angle); +00075 +00083 template <typename genType> +00084 genType cos(genType const & angle); +00085 +00092 template <typename genType> +00093 genType tan(genType const & angle); +00094 +00103 template <typename genType> +00104 genType asin(genType const & x); +00105 +00114 template <typename genType> +00115 genType acos(genType const & x); +00116 +00127 template <typename genType> +00128 genType atan(genType const & y, genType const & x); +00129 +00137 template <typename genType> +00138 genType atan(genType const & y_over_x); +00139 +00146 template <typename genType> +00147 genType sinh(genType const & angle); +00148 +00155 template <typename genType> +00156 genType cosh(genType const & angle); +00157 +00164 template <typename genType> +00165 genType tanh(genType const & angle); +00166 +00173 template <typename genType> +00174 genType asinh(genType const & x); +00175 +00183 template <typename genType> +00184 genType acosh(genType const & x); +00185 +00193 template <typename genType> +00194 genType atanh(genType const & x); +00195 +00197 }//namespace glm +00198 +00199 #include "func_trigonometric.inl" +00200 +00201 #endif//GLM_CORE_func_trigonometric +00202 +00203 +
+ + + + + + + |
Go to the source code of this file.
++Functions | |
template<template< typename > class vecType> | |
bool | all (vecType< bool > const &v) |
template<template< typename > class vecType> | |
bool | any (vecType< bool > const &v) |
template<typename vecType > | |
vecType::bool_type | equal (vecType const &x, vecType const &y) |
template<typename vecType > | |
vecType::bool_type | greaterThan (vecType const &x, vecType const &y) |
template<typename vecType > | |
vecType::bool_type | greaterThanEqual (vecType const &x, vecType const &y) |
template<typename vecType > | |
vecType::bool_type | lessThan (vecType const &x, vecType const &y) |
template<typename vecType > | |
vecType::bool_type | lessThanEqual (vecType const &x, vecType const &y) |
template<template< typename > class vecType> | |
vecType< bool > | not_ (vecType< bool > const &v) |
template<typename vecType > | |
vecType::bool_type | notEqual (vecType const &x, vecType const &y) |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file func_vector_relational.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 +00040 +00041 #ifndef GLM_CORE_func_vector_relational +00042 #define GLM_CORE_func_vector_relational GLM_VERSION +00043 +00044 #include "_detail.hpp" +00045 +00046 namespace glm +00047 { +00050 +00057 template <typename vecType> +00058 typename vecType::bool_type lessThan(vecType const & x, vecType const & y); +00059 +00066 template <typename vecType> +00067 typename vecType::bool_type lessThanEqual(vecType const & x, vecType const & y); +00068 +00075 template <typename vecType> +00076 typename vecType::bool_type greaterThan(vecType const & x, vecType const & y); +00077 +00084 template <typename vecType> +00085 typename vecType::bool_type greaterThanEqual(vecType const & x, vecType const & y); +00086 +00093 template <typename vecType> +00094 typename vecType::bool_type equal(vecType const & x, vecType const & y); +00095 +00102 template <typename vecType> +00103 typename vecType::bool_type notEqual(vecType const & x, vecType const & y); +00104 +00111 template <template <typename> class vecType> +00112 bool any(vecType<bool> const & v); +00113 +00120 template <template <typename> class vecType> +00121 bool all(vecType<bool> const & v); +00122 +00130 template <template <typename> class vecType> +00131 vecType<bool> not_(vecType<bool> const & v); +00132 +00134 }//namespace glm +00135 +00136 #include "func_vector_relational.inl" +00137 +00138 #endif//GLM_CORE_func_vector_relational +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM Core (Dependence)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file glm.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 +00040 +00041 +00042 +00043 +00044 +00045 +00046 +00047 +00048 +00049 +00050 +00051 +00052 +00053 +00054 +00055 +00056 +00057 +00058 +00059 +00060 +00061 +00062 +00063 +00064 +00065 +00066 +00067 +00068 +00069 +00070 +00071 +00072 +00073 +00074 +00075 +00076 +00077 +00078 #include "core/_fixes.hpp" +00079 +00080 #ifndef glm_glm +00081 #define glm_glm +00082 +00083 #include <cmath> +00084 #include <climits> +00085 #include <cfloat> +00086 #include <limits> +00087 #include <cstdio> +00088 //#include <type_traits> +00089 #include "core/setup.hpp" +00090 +00091 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_CORE_INCLUDED_DISPLAYED)) +00092 # define GLM_MESSAGE_CORE_INCLUDED_DISPLAYED +00093 # pragma message("GLM: Core library included") +00094 #endif//GLM_MESSAGE +00095 +00096 #include "./core/_detail.hpp" +00097 #include "./core/type.hpp" +00098 +00099 #include "./core/func_trigonometric.hpp" +00100 #include "./core/func_exponential.hpp" +00101 #include "./core/func_common.hpp" +00102 #include "./core/func_packing.hpp" +00103 #include "./core/func_geometric.hpp" +00104 #include "./core/func_matrix.hpp" +00105 #include "./core/func_vector_relational.hpp" +00106 #include "./core/func_integer.hpp" +00107 #include "./core/func_noise.hpp" +00108 #include "./core/_swizzle.hpp" +00109 +00111 // check type sizes +00112 #ifndef GLM_STATIC_ASSERT_NULL +00113 GLM_STATIC_ASSERT(sizeof(glm::detail::int8) == 1, "int8 size isn't 1 byte on this platform"); +00114 GLM_STATIC_ASSERT(sizeof(glm::detail::int16) == 2, "int16 size isn't 2 bytes on this platform"); +00115 GLM_STATIC_ASSERT(sizeof(glm::detail::int32) == 4, "int32 size isn't 4 bytes on this platform"); +00116 GLM_STATIC_ASSERT(sizeof(glm::detail::int64) == 8, "int64 size isn't 8 bytes on this platform"); +00117 +00118 GLM_STATIC_ASSERT(sizeof(glm::detail::uint8) == 1, "uint8 size isn't 1 byte on this platform"); +00119 GLM_STATIC_ASSERT(sizeof(glm::detail::uint16) == 2, "uint16 size isn't 2 bytes on this platform"); +00120 GLM_STATIC_ASSERT(sizeof(glm::detail::uint32) == 4, "uint32 size isn't 4 bytes on this platform"); +00121 GLM_STATIC_ASSERT(sizeof(glm::detail::uint64) == 8, "uint64 size isn't 8 bytes on this platform"); +00122 +00123 GLM_STATIC_ASSERT(sizeof(glm::detail::float16) == 2, "float16 size isn't 2 bytes on this platform"); +00124 GLM_STATIC_ASSERT(sizeof(glm::detail::float32) == 4, "float32 size isn't 4 bytes on this platform"); +00125 GLM_STATIC_ASSERT(sizeof(glm::detail::float64) == 8, "float64 size isn't 8 bytes on this platform"); +00126 #endif//GLM_STATIC_ASSERT_NULL +00127 +00128 #endif//glm_glm +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_gradient_paint: Procedural gradient color
+Definition in file gradient_paint.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_gradient_paint +00039 #define GLM_GTX_gradient_paint GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 #include "../gtx/optimum_pow.hpp" +00044 +00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00046 # pragma message("GLM: GLM_GTX_gradient_paint extension included") +00047 #endif +00048 +00049 namespace glm +00050 { +00053 +00056 template <typename valType> +00057 valType radialGradient( +00058 detail::tvec2<valType> const & Center, +00059 valType const & Radius, +00060 detail::tvec2<valType> const & Focal, +00061 detail::tvec2<valType> const & Position); +00062 +00065 template <typename valType> +00066 valType linearGradient( +00067 detail::tvec2<valType> const & Point0, +00068 detail::tvec2<valType> const & Point1, +00069 detail::tvec2<valType> const & Position); +00070 +00072 }// namespace glm +00073 +00074 #include "gradient_paint.inl" +00075 +00076 #endif//GLM_GTX_gradient_paint +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTC_half_float: Half-precision floating-point based types and functions
+Definition in file half_float.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 #ifndef GLM_GTC_half_float +00038 #define GLM_GTC_half_float GLM_VERSION +00039 +00040 // Dependency: +00041 #include "../glm.hpp" +00042 +00043 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00044 # pragma message("GLM: GLM_GTC_half_float extension included") +00045 #endif +00046 +00047 namespace glm{ +00048 namespace detail +00049 { +00050 #if(!GLM_SUPPORT_ANONYMOUS_UNION_OF_STRUCTURE()) +00051 template <> +00052 struct tvec2<half> +00053 { +00054 enum ctor{null}; +00055 typedef half value_type; +00056 typedef std::size_t size_type; +00057 +00058 GLM_FUNC_DECL size_type length() const; +00059 static GLM_FUNC_DECL size_type value_size(); +00060 +00061 typedef tvec2<half> type; +00062 typedef tvec2<bool> bool_type; +00063 +00065 // Data +00066 +00067 half x, y; +00068 +00070 // Accesses +00071 +00072 half & operator[](size_type i); +00073 half const & operator[](size_type i) const; +00074 +00076 // Implicit basic constructors +00077 +00078 tvec2(); +00079 tvec2(tvec2<half> const & v); +00080 +00082 // Explicit basic constructors +00083 +00084 explicit tvec2(ctor); +00085 explicit tvec2( +00086 half const & s); +00087 explicit tvec2( +00088 half const & s1, +00089 half const & s2); +00090 +00092 // Swizzle constructors +00093 +00094 tvec2(tref2<half> const & r); +00095 +00097 // Convertion scalar constructors +00098 +00100 template <typename U> +00101 explicit tvec2(U const & x); +00103 template <typename U, typename V> +00104 explicit tvec2(U const & x, V const & y); +00105 +00107 // Convertion vector constructors +00108 +00110 template <typename U> +00111 explicit tvec2(tvec2<U> const & v); +00113 template <typename U> +00114 explicit tvec2(tvec3<U> const & v); +00116 template <typename U> +00117 explicit tvec2(tvec4<U> const & v); +00118 +00120 // Unary arithmetic operators +00121 +00122 tvec2<half>& operator= (tvec2<half> const & v); +00123 +00124 tvec2<half>& operator+=(half const & s); +00125 tvec2<half>& operator+=(tvec2<half> const & v); +00126 tvec2<half>& operator-=(half const & s); +00127 tvec2<half>& operator-=(tvec2<half> const & v); +00128 tvec2<half>& operator*=(half const & s); +00129 tvec2<half>& operator*=(tvec2<half> const & v); +00130 tvec2<half>& operator/=(half const & s); +00131 tvec2<half>& operator/=(tvec2<half> const & v); +00132 tvec2<half>& operator++(); +00133 tvec2<half>& operator--(); +00134 +00136 // Swizzle operators +00137 +00138 half swizzle(comp X) const; +00139 tvec2<half> swizzle(comp X, comp Y) const; +00140 tvec3<half> swizzle(comp X, comp Y, comp Z) const; +00141 tvec4<half> swizzle(comp X, comp Y, comp Z, comp W) const; +00142 tref2<half> swizzle(comp X, comp Y); +00143 }; +00144 +00145 template <> +00146 struct tvec3<half> +00147 { +00148 enum ctor{null}; +00149 typedef half value_type; +00150 typedef std::size_t size_type; +00151 GLM_FUNC_DECL size_type length() const; +00152 static GLM_FUNC_DECL size_type value_size(); +00153 +00154 typedef tvec3<half> type; +00155 typedef tvec3<bool> bool_type; +00156 +00158 // Data +00159 +00160 half x, y, z; +00161 +00163 // Accesses +00164 +00165 half & operator[](size_type i); +00166 half const & operator[](size_type i) const; +00167 +00169 // Implicit basic constructors +00170 +00171 tvec3(); +00172 tvec3(tvec3<half> const & v); +00173 +00175 // Explicit basic constructors +00176 +00177 explicit tvec3(ctor); +00178 explicit tvec3( +00179 half const & s); +00180 explicit tvec3( +00181 half const & s1, +00182 half const & s2, +00183 half const & s3); +00184 +00186 // Swizzle constructors +00187 +00188 tvec3(tref3<half> const & r); +00189 +00191 // Convertion scalar constructors +00192 +00194 template <typename U> +00195 explicit tvec3(U const & x); +00197 template <typename U, typename V, typename W> +00198 explicit tvec3(U const & x, V const & y, W const & z); +00199 +00201 // Convertion vector constructors +00202 +00204 template <typename A, typename B> +00205 explicit tvec3(tvec2<A> const & v, B const & s); +00207 template <typename A, typename B> +00208 explicit tvec3(A const & s, tvec2<B> const & v); +00210 template <typename U> +00211 explicit tvec3(tvec3<U> const & v); +00213 template <typename U> +00214 explicit tvec3(tvec4<U> const & v); +00215 +00217 // Unary arithmetic operators +00218 +00219 tvec3<half>& operator= (tvec3<half> const & v); +00220 +00221 tvec3<half>& operator+=(half const & s); +00222 tvec3<half>& operator+=(tvec3<half> const & v); +00223 tvec3<half>& operator-=(half const & s); +00224 tvec3<half>& operator-=(tvec3<half> const & v); +00225 tvec3<half>& operator*=(half const & s); +00226 tvec3<half>& operator*=(tvec3<half> const & v); +00227 tvec3<half>& operator/=(half const & s); +00228 tvec3<half>& operator/=(tvec3<half> const & v); +00229 tvec3<half>& operator++(); +00230 tvec3<half>& operator--(); +00231 +00233 // Swizzle operators +00234 +00235 half swizzle(comp X) const; +00236 tvec2<half> swizzle(comp X, comp Y) const; +00237 tvec3<half> swizzle(comp X, comp Y, comp Z) const; +00238 tvec4<half> swizzle(comp X, comp Y, comp Z, comp W) const; +00239 tref3<half> swizzle(comp X, comp Y, comp Z); +00240 }; +00241 +00242 template <> +00243 struct tvec4<half> +00244 { +00245 enum ctor{null}; +00246 typedef half value_type; +00247 typedef std::size_t size_type; +00248 GLM_FUNC_DECL size_type length() const; +00249 static GLM_FUNC_DECL size_type value_size(); +00250 +00251 typedef tvec4<half> type; +00252 typedef tvec4<bool> bool_type; +00253 +00255 // Data +00256 +00257 half x, y, z, w; +00258 +00260 // Accesses +00261 +00262 half & operator[](size_type i); +00263 half const & operator[](size_type i) const; +00264 +00266 // Implicit basic constructors +00267 +00268 tvec4(); +00269 tvec4(tvec4<half> const & v); +00270 +00272 // Explicit basic constructors +00273 +00274 explicit tvec4(ctor); +00275 explicit tvec4( +00276 half const & s); +00277 explicit tvec4( +00278 half const & s0, +00279 half const & s1, +00280 half const & s2, +00281 half const & s3); +00282 +00284 // Swizzle constructors +00285 +00286 tvec4(tref4<half> const & r); +00287 +00289 // Convertion scalar constructors +00290 +00292 template <typename U> +00293 explicit tvec4(U const & x); +00295 template <typename A, typename B, typename C, typename D> +00296 explicit tvec4(A const & x, B const & y, C const & z, D const & w); +00297 +00299 // Convertion vector constructors +00300 +00302 template <typename A, typename B, typename C> +00303 explicit tvec4(tvec2<A> const & v, B const & s1, C const & s2); +00305 template <typename A, typename B, typename C> +00306 explicit tvec4(A const & s1, tvec2<B> const & v, C const & s2); +00308 template <typename A, typename B, typename C> +00309 explicit tvec4(A const & s1, B const & s2, tvec2<C> const & v); +00311 template <typename A, typename B> +00312 explicit tvec4(tvec3<A> const & v, B const & s); +00314 template <typename A, typename B> +00315 explicit tvec4(A const & s, tvec3<B> const & v); +00317 template <typename A, typename B> +00318 explicit tvec4(tvec2<A> const & v1, tvec2<B> const & v2); +00320 template <typename U> +00321 explicit tvec4(tvec4<U> const & v); +00322 +00324 // Unary arithmetic operators +00325 +00326 tvec4<half>& operator= (tvec4<half> const & v); +00327 +00328 tvec4<half>& operator+=(half const & s); +00329 tvec4<half>& operator+=(tvec4<half> const & v); +00330 tvec4<half>& operator-=(half const & s); +00331 tvec4<half>& operator-=(tvec4<half> const & v); +00332 tvec4<half>& operator*=(half const & s); +00333 tvec4<half>& operator*=(tvec4<half> const & v); +00334 tvec4<half>& operator/=(half const & s); +00335 tvec4<half>& operator/=(tvec4<half> const & v); +00336 tvec4<half>& operator++(); +00337 tvec4<half>& operator--(); +00338 +00340 // Swizzle operators +00341 +00342 half swizzle(comp X) const; +00343 tvec2<half> swizzle(comp X, comp Y) const; +00344 tvec3<half> swizzle(comp X, comp Y, comp Z) const; +00345 tvec4<half> swizzle(comp X, comp Y, comp Z, comp W) const; +00346 tref4<half> swizzle(comp X, comp Y, comp Z, comp W); +00347 }; +00348 #endif//(!GLM_SUPPORT_ANONYMOUS_UNION_OF_STRUCTURE()) +00349 } +00350 //namespace detail +00351 +00354 +00357 typedef detail::half half; +00358 +00361 typedef detail::tvec2<detail::half> hvec2; +00362 +00365 typedef detail::tvec3<detail::half> hvec3; +00366 +00369 typedef detail::tvec4<detail::half> hvec4; +00370 +00373 typedef detail::tmat2x2<detail::half> hmat2; +00374 +00377 typedef detail::tmat3x3<detail::half> hmat3; +00378 +00381 typedef detail::tmat4x4<detail::half> hmat4; +00382 +00385 typedef detail::tmat2x2<detail::half> hmat2x2; +00386 +00389 typedef detail::tmat2x3<detail::half> hmat2x3; +00390 +00393 typedef detail::tmat2x4<detail::half> hmat2x4; +00394 +00397 typedef detail::tmat3x2<detail::half> hmat3x2; +00398 +00401 typedef detail::tmat3x3<detail::half> hmat3x3; +00402 +00405 typedef detail::tmat3x4<detail::half> hmat3x4; +00406 +00409 typedef detail::tmat4x2<detail::half> hmat4x2; +00410 +00413 typedef detail::tmat4x3<detail::half> hmat4x3; +00414 +00417 typedef detail::tmat4x4<detail::half> hmat4x4; +00418 +00420 }// namespace glm +00421 +00422 #include "half_float.inl" +00423 +00424 #endif//GLM_GTC_half_float +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_handed_coordinate_space: Space Handedness
+Definition in file handed_coordinate_space.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_handed_coordinate_space +00039 #define GLM_GTX_handed_coordinate_space GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_handed_coordinate_space extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00052 +00055 template <typename T> +00056 bool rightHanded( +00057 detail::tvec3<T> const & tangent, +00058 detail::tvec3<T> const & binormal, +00059 detail::tvec3<T> const & normal); +00060 +00063 template <typename T> +00064 bool leftHanded( +00065 detail::tvec3<T> const & tangent, +00066 detail::tvec3<T> const & binormal, +00067 detail::tvec3<T> const & normal); +00068 +00070 }// namespace glm +00071 +00072 #include "handed_coordinate_space.inl" +00073 +00074 #endif//GLM_GTX_handed_coordinate_space +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file hint.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type +00030 #define glm_core_type +00031 +00032 namespace glm +00033 { +00034 // Use dont_care, nicest and fastest to optimize implementations. +00035 class dont_care {}; +00036 class nicest {}; +00037 class fastest {}; +00038 }//namespace glm +00039 +00040 #endif//glm_core_type +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_inertia: Intertial matrix
+Definition in file inertia.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_inertia +00040 #define GLM_GTX_inertia GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 +00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00046 # pragma message("GLM: GLM_GTX_inertia extension included") +00047 #endif +00048 +00049 namespace glm +00050 { +00053 +00056 template <typename T> +00057 detail::tmat3x3<T> boxInertia3( +00058 T const & Mass, +00059 detail::tvec3<T> const & Scale); +00060 +00063 template <typename T> +00064 detail::tmat4x4<T> boxInertia4( +00065 T const & Mass, +00066 detail::tvec3<T> const & Scale); +00067 +00070 template <typename T> +00071 detail::tmat3x3<T> diskInertia3( +00072 T const & Mass, +00073 T const & Radius); +00074 +00077 template <typename T> +00078 detail::tmat4x4<T> diskInertia4( +00079 T const & Mass, +00080 T const & Radius); +00081 +00084 template <typename T> +00085 detail::tmat3x3<T> ballInertia3( +00086 T const & Mass, +00087 T const & Radius); +00088 +00091 template <typename T> +00092 detail::tmat4x4<T> ballInertia4( +00093 T const & Mass, +00094 T const & Radius); +00095 +00098 template <typename T> +00099 detail::tmat3x3<T> sphereInertia3( +00100 T const & Mass, +00101 T const & Radius); +00102 +00105 template <typename T> +00106 detail::tmat4x4<T> sphereInertia4( +00107 T const & Mass, +00108 T const & Radius); +00109 +00111 }// namespace glm +00112 +00113 #include "inertia.inl" +00114 +00115 #endif//GLM_GTX_inertia +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_int_10_10_10_2: Packed integer
+Definition in file int_10_10_10_2.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_int_10_10_10_2 +00040 #define GLM_GTX_int_10_10_10_2 GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 #include "../gtx/raw_data.hpp" +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_GTX_int_10_10_10_2 extension included") +00048 #endif +00049 +00050 namespace glm +00051 { +00054 +00057 dword uint10_10_10_2_cast(glm::vec4 const & v); +00058 +00060 }//namespace glm +00061 +00062 #include "int_10_10_10_2.inl" +00063 +00064 #endif//GLM_GTX_int_10_10_10_2 +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_integer: Extended integer functions
+Definition in file integer.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_integer +00039 #define GLM_GTX_integer GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_integer extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00052 +00055 int pow(int x, int y); +00056 +00059 int sqrt(int x); +00060 +00063 template <typename genIUType> +00064 genIUType log2(genIUType const & x); +00065 +00068 unsigned int floor_log2(unsigned int x); +00069 +00072 int mod(int x, int y); +00073 +00076 template <typename genType> +00077 genType factorial(genType const & x); +00078 +00081 typedef signed int sint; +00082 +00085 uint pow(uint x, uint y); +00086 +00089 uint sqrt(uint x); +00090 +00093 uint mod(uint x, uint y); +00094 +00097 uint nlz(uint x); +00098 +00100 }//namespace glm +00101 +00102 #include "integer.inl" +00103 +00104 #endif//GLM_GTX_integer +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_intersect: Intersection tests
+Definition in file intersect.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_intersect +00040 #define GLM_GTX_intersect GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 #include "../gtx/closest_point.hpp" +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_GTX_closest_point extension included") +00048 #endif +00049 +00050 namespace glm +00051 { +00054 +00057 template <typename genType> +00058 bool intersectRayTriangle( +00059 genType const & orig, genType const & dir, +00060 genType const & vert0, genType const & vert1, genType const & vert2, +00061 genType & baryPosition); +00062 +00065 template <typename genType> +00066 bool intersectLineTriangle( +00067 genType const & orig, genType const & dir, +00068 genType const & vert0, genType const & vert1, genType const & vert2, +00069 genType & position); +00070 +00073 template <typename genType> +00074 bool intersectRaySphere( +00075 genType const & orig, genType const & dir, +00076 genType const & center, typename genType::value_type radius, +00077 genType & position, genType & normal); +00078 +00081 template <typename genType> +00082 bool intersectLineSphere( +00083 genType const & point0, genType const & point1, +00084 genType const & center, typename genType::value_type radius, +00085 genType & position, genType & normal); +00086 +00088 }//namespace glm +00089 +00090 #include "intersect.inl" +00091 +00092 #endif//GLM_GTX_intersect +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file intrinsic_common.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_detail_intrinsic_common +00030 #define glm_detail_intrinsic_common +00031 +00032 #include "setup.hpp" +00033 +00034 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2) +00035 # error "SSE2 instructions not supported or enabled" +00036 #else +00037 +00038 namespace glm{ +00039 namespace detail +00040 { +00041 __m128 sse_abs_ps(__m128 x); +00042 +00043 __m128 sse_sgn_ps(__m128 x); +00044 +00045 //floor +00046 __m128 sse_flr_ps(__m128 v); +00047 +00048 //trunc +00049 __m128 sse_trc_ps(__m128 v); +00050 +00051 //round +00052 __m128 sse_nd_ps(__m128 v); +00053 +00054 //roundEven +00055 __m128 sse_rde_ps(__m128 v); +00056 +00057 __m128 sse_rnd_ps(__m128 x); +00058 +00059 __m128 sse_ceil_ps(__m128 v); +00060 +00061 __m128 sse_frc_ps(__m128 x); +00062 +00063 __m128 sse_mod_ps(__m128 x, __m128 y); +00064 +00065 __m128 sse_modf_ps(__m128 x, __m128i & i); +00066 +00067 //GLM_FUNC_QUALIFIER __m128 sse_min_ps(__m128 x, __m128 y) +00068 +00069 //GLM_FUNC_QUALIFIER __m128 sse_max_ps(__m128 x, __m128 y) +00070 +00071 __m128 sse_clp_ps(__m128 v, __m128 minVal, __m128 maxVal); +00072 +00073 __m128 sse_mix_ps(__m128 v1, __m128 v2, __m128 a); +00074 +00075 __m128 sse_stp_ps(__m128 edge, __m128 x); +00076 +00077 __m128 sse_ssp_ps(__m128 edge0, __m128 edge1, __m128 x); +00078 +00079 __m128 sse_nan_ps(__m128 x); +00080 +00081 __m128 sse_inf_ps(__m128 x); +00082 +00083 }//namespace detail +00084 }//namespace glm +00085 +00086 #include "intrinsic_common.inl" +00087 +00088 #endif//GLM_ARCH +00089 #endif//glm_detail_intrinsic_common +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file intrinsic_exponential.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_detail_intrinsic_exponential +00030 #define glm_detail_intrinsic_exponential +00031 +00032 #include "setup.hpp" +00033 +00034 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2) +00035 # error "SSE2 instructions not supported or enabled" +00036 #else +00037 +00038 namespace glm{ +00039 namespace detail +00040 { +00041 /* +00042 GLM_FUNC_QUALIFIER __m128 sse_rsqrt_nr_ss(__m128 const x) +00043 { +00044 __m128 recip = _mm_rsqrt_ss( x ); // "estimate" opcode +00045 const static __m128 three = { 3, 3, 3, 3 }; // aligned consts for fast load +00046 const static __m128 half = { 0.5,0.5,0.5,0.5 }; +00047 __m128 halfrecip = _mm_mul_ss( half, recip ); +00048 __m128 threeminus_xrr = _mm_sub_ss( three, _mm_mul_ss( x, _mm_mul_ss ( recip, recip ) ) ); +00049 return _mm_mul_ss( halfrecip, threeminus_xrr ); +00050 } +00051 +00052 GLM_FUNC_QUALIFIER __m128 sse_normalize_fast_ps( float * RESTRICT vOut, float * RESTRICT vIn ) +00053 { +00054 __m128 x = _mm_load_ss(&vIn[0]); +00055 __m128 y = _mm_load_ss(&vIn[1]); +00056 __m128 z = _mm_load_ss(&vIn[2]); +00057 +00058 const __m128 l = // compute x*x + y*y + z*z +00059 _mm_add_ss( +00060 _mm_add_ss( _mm_mul_ss(x,x), +00061 _mm_mul_ss(y,y) +00062 ), +00063 _mm_mul_ss( z, z ) +00064 ); +00065 +00066 +00067 const __m128 rsqt = _mm_rsqrt_nr_ss( l ); +00068 _mm_store_ss( &vOut[0] , _mm_mul_ss( rsqt, x ) ); +00069 _mm_store_ss( &vOut[1] , _mm_mul_ss( rsqt, y ) ); +00070 _mm_store_ss( &vOut[2] , _mm_mul_ss( rsqt, z ) ); +00071 +00072 return _mm_mul_ss( l , rsqt ); +00073 } +00074 */ +00075 }//namespace detail +00076 }//namespace glm +00077 +00078 #endif//GLM_ARCH +00079 #endif//glm_detail_intrinsic_exponential +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file intrinsic_geometric.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_intrinsic_geometric +00030 #define glm_core_intrinsic_geometric +00031 +00032 #include "setup.hpp" +00033 +00034 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2) +00035 # error "SSE2 instructions not supported or enabled" +00036 #else +00037 +00038 #include "intrinsic_common.hpp" +00039 +00040 namespace glm{ +00041 namespace detail +00042 { +00043 //length +00044 __m128 sse_len_ps(__m128 x); +00045 +00046 //distance +00047 __m128 sse_dst_ps(__m128 p0, __m128 p1); +00048 +00049 //dot +00050 __m128 sse_dot_ps(__m128 v1, __m128 v2); +00051 +00052 // SSE1 +00053 __m128 sse_dot_ss(__m128 v1, __m128 v2); +00054 +00055 //cross +00056 __m128 sse_xpd_ps(__m128 v1, __m128 v2); +00057 +00058 //normalize +00059 __m128 sse_nrm_ps(__m128 v); +00060 +00061 //faceforward +00062 __m128 sse_ffd_ps(__m128 N, __m128 I, __m128 Nref); +00063 +00064 //reflect +00065 __m128 sse_rfe_ps(__m128 I, __m128 N); +00066 +00067 //refract +00068 __m128 sse_rfa_ps(__m128 I, __m128 N, __m128 eta); +00069 +00070 }//namespace detail +00071 }//namespace glm +00072 +00073 #include "intrinsic_geometric.inl" +00074 +00075 #endif//GLM_ARCH +00076 #endif//glm_core_intrinsic_geometric +
+ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_detail_intrinsic_matrix +00030 #define glm_detail_intrinsic_matrix +00031 +00032 #include "setup.hpp" +00033 +00034 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2) +00035 # error "SSE2 instructions not supported or enabled" +00036 #else +00037 +00038 #include "intrinsic_geometric.hpp" +00039 +00040 namespace glm{ +00041 namespace detail +00042 { +00043 void sse_add_ps(__m128 in1[4], __m128 in2[4], __m128 out[4]); +00044 +00045 void sse_sub_ps(__m128 in1[4], __m128 in2[4], __m128 out[4]); +00046 +00047 __m128 sse_mul_ps(__m128 m[4], __m128 v); +00048 +00049 __m128 sse_mul_ps(__m128 v, __m128 m[4]); +00050 +00051 void sse_mul_ps(__m128 const in1[4], __m128 const in2[4], __m128 out[4]); +00052 +00053 void sse_transpose_ps(__m128 const in[4], __m128 out[4]); +00054 +00055 void sse_inverse_ps(__m128 const in[4], __m128 out[4]); +00056 +00057 void sse_rotate_ps(__m128 const in[4], float Angle, float const v[3], __m128 out[4]); +00058 +00059 __m128 sse_det_ps(__m128 const m[4]); +00060 +00061 __m128 sse_slow_det_ps(__m128 const m[4]); +00062 +00063 }//namespace detail +00064 }//namespace glm +00065 +00066 #include "intrinsic_matrix.inl" +00067 +00068 #endif//GLM_ARCH +00069 #endif//glm_detail_intrinsic_matrix +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file intrinsic_trigonometric.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_detail_intrinsic_trigonometric +00030 #define glm_detail_intrinsic_trigonometric +00031 +00032 #include "setup.hpp" +00033 +00034 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2) +00035 # error "SSE2 instructions not supported or enabled" +00036 #else +00037 +00038 namespace glm{ +00039 namespace detail +00040 { +00041 +00042 }//namespace detail +00043 }//namespace glm +00044 +00045 #include "intrinsic_trigonometric.inl" +00046 +00047 #endif//GLM_ARCH +00048 #endif//glm_detail_intrinsic_trigonometric +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file intrinsic_vector_relational.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_detail_intrinsic_vector_relational +00030 #define glm_detail_intrinsic_vector_relational +00031 +00032 #include "setup.hpp" +00033 +00034 #if((GLM_ARCH & GLM_ARCH_SSE2) != GLM_ARCH_SSE2) +00035 # error "SSE2 instructions not supported or enabled" +00036 #else +00037 +00038 namespace glm{ +00039 namespace detail +00040 { +00041 +00042 }//namespace detail +00043 }//namespace glm +00044 +00045 #include "intrinsic_vector_relational.inl" +00046 +00047 #endif//GLM_ARCH +00048 #endif//glm_detail_intrinsic_vector_relational +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_log_base: Log with base
+Definition in file log_base.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_log_base +00039 #define GLM_GTX_log_base GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_log_base extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00052 +00055 template <typename genType> +00056 genType log( +00057 genType const & x, +00058 genType const & base); +00059 +00061 }//namespace glm +00062 +00063 #include "log_base.inl" +00064 +00065 #endif//GLM_GTX_log_base +
+ + + + + + + |
00001 # Doxyfile 1.7.6 +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 sequence of words) that should +00026 # identify the project. Note that if you do not use Doxywizard you need +00027 # to put quotes around the project name if it contains spaces. +00028 +00029 PROJECT_NAME = +00030 +00031 # The PROJECT_NUMBER tag can be used to enter a project or revision number. +00032 # This could be handy for archiving the generated documentation or +00033 # if some version control system is used. +00034 +00035 PROJECT_NUMBER = 0.9.3 +00036 +00037 # Using the PROJECT_BRIEF tag one can provide an optional one line description +00038 # for a project that appears at the top of each page and should give viewer +00039 # a quick idea about the purpose of the project. Keep the description short. +00040 +00041 PROJECT_BRIEF = +00042 +00043 # With the PROJECT_LOGO tag one can specify an logo or icon that is +00044 # included in the documentation. The maximum height of the logo should not +00045 # exceed 55 pixels and the maximum width should not exceed 200 pixels. +00046 # Doxygen will copy the logo to the output directory. +00047 +00048 PROJECT_LOGO = ./image/logo-mini.png +00049 +00050 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +00051 # base path where the generated documentation will be put. +00052 # If a relative path is entered, it will be relative to the location +00053 # where doxygen was started. If left blank the current directory will be used. +00054 +00055 OUTPUT_DIRECTORY = . +00056 +00057 # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +00058 # 4096 sub-directories (in 2 levels) under the output directory of each output +00059 # format and will distribute the generated files over these directories. +00060 # Enabling this option can be useful when feeding doxygen a huge amount of +00061 # source files, where putting all generated files in the same directory would +00062 # otherwise cause performance problems for the file system. +00063 +00064 CREATE_SUBDIRS = NO +00065 +00066 # The OUTPUT_LANGUAGE tag is used to specify the language in which all +00067 # documentation generated by doxygen is written. Doxygen will use this +00068 # information to generate all constant output in the proper language. +00069 # The default language is English, other supported languages are: +00070 # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +00071 # Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +00072 # Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +00073 # messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, +00074 # Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, +00075 # Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. +00076 +00077 OUTPUT_LANGUAGE = English +00078 +00079 # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +00080 # include brief member descriptions after the members that are listed in +00081 # the file and class documentation (similar to JavaDoc). +00082 # Set to NO to disable this. +00083 +00084 BRIEF_MEMBER_DESC = NO +00085 +00086 # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +00087 # the brief description of a member or function before the detailed description. +00088 # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +00089 # brief descriptions will be completely suppressed. +00090 +00091 REPEAT_BRIEF = YES +00092 +00093 # This tag implements a quasi-intelligent brief description abbreviator +00094 # that is used to form the text in various listings. Each string +00095 # in this list, if found as the leading text of the brief description, will be +00096 # stripped from the text and the result after processing the whole list, is +00097 # used as the annotated text. Otherwise, the brief description is used as-is. +00098 # If left blank, the following values are used ("$name" is automatically +00099 # replaced with the name of the entity): "The $name class" "The $name widget" +00100 # "The $name file" "is" "provides" "specifies" "contains" +00101 # "represents" "a" "an" "the" +00102 +00103 ABBREVIATE_BRIEF = "The $name class " \ +00104 "The $name widget " \ +00105 "The $name file " \ +00106 is \ +00107 provides \ +00108 specifies \ +00109 contains \ +00110 represents \ +00111 a \ +00112 an \ +00113 the +00114 +00115 # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +00116 # Doxygen will generate a detailed section even if there is only a brief +00117 # description. +00118 +00119 ALWAYS_DETAILED_SEC = NO +00120 +00121 # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +00122 # inherited members of a class in the documentation of that class as if those +00123 # members were ordinary class members. Constructors, destructors and assignment +00124 # operators of the base classes will not be shown. +00125 +00126 INLINE_INHERITED_MEMB = NO +00127 +00128 # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +00129 # path before files name in the file list and in the header files. If set +00130 # to NO the shortest path that makes the file name unique will be used. +00131 +00132 FULL_PATH_NAMES = NO +00133 +00134 # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +00135 # can be used to strip a user-defined part of the path. Stripping is +00136 # only done if one of the specified strings matches the left-hand part of +00137 # the path. The tag can be used to show relative paths in the file list. +00138 # If left blank the directory from which doxygen is run is used as the +00139 # path to strip. +00140 +00141 STRIP_FROM_PATH = "C:/Documents and Settings/Groove/ " +00142 +00143 # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +00144 # the path mentioned in the documentation of a class, which tells +00145 # the reader which header file to include in order to use a class. +00146 # If left blank only the name of the header file containing the class +00147 # definition is used. Otherwise one should specify the include paths that +00148 # are normally passed to the compiler using the -I flag. +00149 +00150 STRIP_FROM_INC_PATH = +00151 +00152 # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +00153 # (but less readable) file names. This can be useful if your file system +00154 # doesn't support long names like on DOS, Mac, or CD-ROM. +00155 +00156 SHORT_NAMES = YES +00157 +00158 # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +00159 # will interpret the first line (until the first dot) of a JavaDoc-style +00160 # comment as the brief description. If set to NO, the JavaDoc +00161 # comments will behave just like regular Qt-style comments +00162 # (thus requiring an explicit @brief command for a brief description.) +00163 +00164 JAVADOC_AUTOBRIEF = YES +00165 +00166 # If the QT_AUTOBRIEF tag is set to YES then Doxygen will +00167 # interpret the first line (until the first dot) of a Qt-style +00168 # comment as the brief description. If set to NO, the comments +00169 # will behave just like regular Qt-style comments (thus requiring +00170 # an explicit \brief command for a brief description.) +00171 +00172 QT_AUTOBRIEF = NO +00173 +00174 # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +00175 # treat a multi-line C++ special comment block (i.e. a block of //! or /// +00176 # comments) as a brief description. This used to be the default behaviour. +00177 # The new default is to treat a multi-line C++ comment block as a detailed +00178 # description. Set this tag to YES if you prefer the old behaviour instead. +00179 +00180 MULTILINE_CPP_IS_BRIEF = NO +00181 +00182 # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +00183 # member inherits the documentation from any documented member that it +00184 # re-implements. +00185 +00186 INHERIT_DOCS = YES +00187 +00188 # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +00189 # a new page for each member. If set to NO, the documentation of a member will +00190 # be part of the file/class/namespace that contains it. +00191 +00192 SEPARATE_MEMBER_PAGES = NO +00193 +00194 # The TAB_SIZE tag can be used to set the number of spaces in a tab. +00195 # Doxygen uses this value to replace tabs by spaces in code fragments. +00196 +00197 TAB_SIZE = 8 +00198 +00199 # This tag can be used to specify a number of aliases that acts +00200 # as commands in the documentation. An alias has the form "name=value". +00201 # For example adding "sideeffect=\par Side Effects:\n" will allow you to +00202 # put the command \sideeffect (or @sideeffect) in the documentation, which +00203 # will result in a user-defined paragraph with heading "Side Effects:". +00204 # You can put \n's in the value part of an alias to insert newlines. +00205 +00206 ALIASES = +00207 +00208 # This tag can be used to specify a number of word-keyword mappings (TCL only). +00209 # A mapping has the form "name=value". For example adding +00210 # "class=itcl::class" will allow you to use the command class in the +00211 # itcl::class meaning. +00212 +00213 TCL_SUBST = +00214 +00215 # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +00216 # sources only. Doxygen will then generate output that is more tailored for C. +00217 # For instance, some of the names that are used will be different. The list +00218 # of all members will be omitted, etc. +00219 +00220 OPTIMIZE_OUTPUT_FOR_C = NO +00221 +00222 # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +00223 # sources only. Doxygen will then generate output that is more tailored for +00224 # Java. For instance, namespaces will be presented as packages, qualified +00225 # scopes will look different, etc. +00226 +00227 OPTIMIZE_OUTPUT_JAVA = NO +00228 +00229 # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +00230 # sources only. Doxygen will then generate output that is more tailored for +00231 # Fortran. +00232 +00233 OPTIMIZE_FOR_FORTRAN = NO +00234 +00235 # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +00236 # sources. Doxygen will then generate output that is tailored for +00237 # VHDL. +00238 +00239 OPTIMIZE_OUTPUT_VHDL = NO +00240 +00241 # Doxygen selects the parser to use depending on the extension of the files it +00242 # parses. With this tag you can assign which parser to use for a given extension. +00243 # Doxygen has a built-in mapping, but you can override or extend it using this +00244 # tag. The format is ext=language, where ext is a file extension, and language +00245 # is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, +00246 # C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make +00247 # doxygen treat .inc files as Fortran files (default is PHP), and .f files as C +00248 # (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions +00249 # you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. +00250 +00251 EXTENSION_MAPPING = +00252 +00253 # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +00254 # to include (a tag file for) the STL sources as input, then you should +00255 # set this tag to YES in order to let doxygen match functions declarations and +00256 # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +00257 # func(std::string) {}). This also makes the inheritance and collaboration +00258 # diagrams that involve STL classes more complete and accurate. +00259 +00260 BUILTIN_STL_SUPPORT = NO +00261 +00262 # If you use Microsoft's C++/CLI language, you should set this option to YES to +00263 # enable parsing support. +00264 +00265 CPP_CLI_SUPPORT = NO +00266 +00267 # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +00268 # Doxygen will parse them like normal C++ but will assume all classes use public +00269 # instead of private inheritance when no explicit protection keyword is present. +00270 +00271 SIP_SUPPORT = NO +00272 +00273 # For Microsoft's IDL there are propget and propput attributes to indicate getter +00274 # and setter methods for a property. Setting this option to YES (the default) +00275 # will make doxygen replace the get and set methods by a property in the +00276 # documentation. This will only work if the methods are indeed getting or +00277 # setting a simple type. If this is not the case, or you want to show the +00278 # methods anyway, you should set this option to NO. +00279 +00280 IDL_PROPERTY_SUPPORT = YES +00281 +00282 # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +00283 # tag is set to YES, then doxygen will reuse the documentation of the first +00284 # member in the group (if any) for the other members of the group. By default +00285 # all members of a group must be documented explicitly. +00286 +00287 DISTRIBUTE_GROUP_DOC = NO +00288 +00289 # Set the SUBGROUPING tag to YES (the default) to allow class member groups of +00290 # the same type (for instance a group of public functions) to be put as a +00291 # subgroup of that type (e.g. under the Public Functions section). Set it to +00292 # NO to prevent subgrouping. Alternatively, this can be done per class using +00293 # the \nosubgrouping command. +00294 +00295 SUBGROUPING = NO +00296 +00297 # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and +00298 # unions are shown inside the group in which they are included (e.g. using +00299 # @ingroup) instead of on a separate page (for HTML and Man pages) or +00300 # section (for LaTeX and RTF). +00301 +00302 INLINE_GROUPED_CLASSES = NO +00303 +00304 # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and +00305 # unions with only public data fields will be shown inline in the documentation +00306 # of the scope in which they are defined (i.e. file, namespace, or group +00307 # documentation), provided this scope is documented. If set to NO (the default), +00308 # structs, classes, and unions are shown on a separate page (for HTML and Man +00309 # pages) or section (for LaTeX and RTF). +00310 +00311 INLINE_SIMPLE_STRUCTS = NO +00312 +00313 # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +00314 # is documented as struct, union, or enum with the name of the typedef. So +00315 # typedef struct TypeS {} TypeT, will appear in the documentation as a struct +00316 # with name TypeT. When disabled the typedef will appear as a member of a file, +00317 # namespace, or class. And the struct will be named TypeS. This can typically +00318 # be useful for C code in case the coding convention dictates that all compound +00319 # types are typedef'ed and only the typedef is referenced, never the tag name. +00320 +00321 TYPEDEF_HIDES_STRUCT = NO +00322 +00323 # The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +00324 # determine which symbols to keep in memory and which to flush to disk. +00325 # When the cache is full, less often used symbols will be written to disk. +00326 # For small to medium size projects (<1000 input files) the default value is +00327 # probably good enough. For larger projects a too small cache size can cause +00328 # doxygen to be busy swapping symbols to and from disk most of the time +00329 # causing a significant performance penalty. +00330 # If the system has enough physical memory increasing the cache will improve the +00331 # performance by keeping more symbols in memory. Note that the value works on +00332 # a logarithmic scale so increasing the size by one will roughly double the +00333 # memory usage. The cache size is given by this formula: +00334 # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +00335 # corresponding to a cache size of 2^16 = 65536 symbols +00336 +00337 SYMBOL_CACHE_SIZE = 0 +00338 +00339 #--------------------------------------------------------------------------- +00340 # Build related configuration options +00341 #--------------------------------------------------------------------------- +00342 +00343 # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +00344 # documentation are documented, even if no documentation was available. +00345 # Private class members and static file members will be hidden unless +00346 # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES +00347 +00348 EXTRACT_ALL = NO +00349 +00350 # If the EXTRACT_PRIVATE tag is set to YES all private members of a class +00351 # will be included in the documentation. +00352 +00353 EXTRACT_PRIVATE = NO +00354 +00355 # If the EXTRACT_STATIC tag is set to YES all static members of a file +00356 # will be included in the documentation. +00357 +00358 EXTRACT_STATIC = YES +00359 +00360 # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +00361 # defined locally in source files will be included in the documentation. +00362 # If set to NO only classes defined in header files are included. +00363 +00364 EXTRACT_LOCAL_CLASSES = NO +00365 +00366 # This flag is only useful for Objective-C code. When set to YES local +00367 # methods, which are defined in the implementation section but not in +00368 # the interface are included in the documentation. +00369 # If set to NO (the default) only methods in the interface are included. +00370 +00371 EXTRACT_LOCAL_METHODS = NO +00372 +00373 # If this flag is set to YES, the members of anonymous namespaces will be +00374 # extracted and appear in the documentation as a namespace called +00375 # 'anonymous_namespace{file}', where file will be replaced with the base +00376 # name of the file that contains the anonymous namespace. By default +00377 # anonymous namespaces are hidden. +00378 +00379 EXTRACT_ANON_NSPACES = NO +00380 +00381 # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +00382 # undocumented members of documented classes, files or namespaces. +00383 # If set to NO (the default) these members will be included in the +00384 # various overviews, but no documentation section is generated. +00385 # This option has no effect if EXTRACT_ALL is enabled. +00386 +00387 HIDE_UNDOC_MEMBERS = YES +00388 +00389 # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +00390 # undocumented classes that are normally visible in the class hierarchy. +00391 # If set to NO (the default) these classes will be included in the various +00392 # overviews. This option has no effect if EXTRACT_ALL is enabled. +00393 +00394 HIDE_UNDOC_CLASSES = YES +00395 +00396 # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +00397 # friend (class|struct|union) declarations. +00398 # If set to NO (the default) these declarations will be included in the +00399 # documentation. +00400 +00401 HIDE_FRIEND_COMPOUNDS = YES +00402 +00403 # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +00404 # documentation blocks found inside the body of a function. +00405 # If set to NO (the default) these blocks will be appended to the +00406 # function's detailed documentation block. +00407 +00408 HIDE_IN_BODY_DOCS = YES +00409 +00410 # The INTERNAL_DOCS tag determines if documentation +00411 # that is typed after a \internal command is included. If the tag is set +00412 # to NO (the default) then the documentation will be excluded. +00413 # Set it to YES to include the internal documentation. +00414 +00415 INTERNAL_DOCS = NO +00416 +00417 # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +00418 # file names in lower-case letters. If set to YES upper-case letters are also +00419 # allowed. This is useful if you have classes or files whose names only differ +00420 # in case and if your file system supports case sensitive file names. Windows +00421 # and Mac users are advised to set this option to NO. +00422 +00423 CASE_SENSE_NAMES = YES +00424 +00425 # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +00426 # will show members with their full class and namespace scopes in the +00427 # documentation. If set to YES the scope will be hidden. +00428 +00429 HIDE_SCOPE_NAMES = YES +00430 +00431 # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +00432 # will put a list of the files that are included by a file in the documentation +00433 # of that file. +00434 +00435 SHOW_INCLUDE_FILES = NO +00436 +00437 # If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +00438 # will list include files with double quotes in the documentation +00439 # rather than with sharp brackets. +00440 +00441 FORCE_LOCAL_INCLUDES = NO +00442 +00443 # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +00444 # is inserted in the documentation for inline members. +00445 +00446 INLINE_INFO = NO +00447 +00448 # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +00449 # will sort the (detailed) documentation of file and class members +00450 # alphabetically by member name. If set to NO the members will appear in +00451 # declaration order. +00452 +00453 SORT_MEMBER_DOCS = YES +00454 +00455 # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +00456 # brief documentation of file, namespace and class members alphabetically +00457 # by member name. If set to NO (the default) the members will appear in +00458 # declaration order. +00459 +00460 SORT_BRIEF_DOCS = YES +00461 +00462 # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +00463 # will sort the (brief and detailed) documentation of class members so that +00464 # constructors and destructors are listed first. If set to NO (the default) +00465 # the constructors will appear in the respective orders defined by +00466 # SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +00467 # This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +00468 # and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. +00469 +00470 SORT_MEMBERS_CTORS_1ST = NO +00471 +00472 # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +00473 # hierarchy of group names into alphabetical order. If set to NO (the default) +00474 # the group names will appear in their defined order. +00475 +00476 SORT_GROUP_NAMES = NO +00477 +00478 # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +00479 # sorted by fully-qualified names, including namespaces. If set to +00480 # NO (the default), the class list will be sorted only by class name, +00481 # not including the namespace part. +00482 # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +00483 # Note: This option applies only to the class list, not to the +00484 # alphabetical list. +00485 +00486 SORT_BY_SCOPE_NAME = YES +00487 +00488 # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to +00489 # do proper type resolution of all parameters of a function it will reject a +00490 # match between the prototype and the implementation of a member function even +00491 # if there is only one candidate or it is obvious which candidate to choose +00492 # by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen +00493 # will still accept a match between prototype and implementation in such cases. +00494 +00495 STRICT_PROTO_MATCHING = NO +00496 +00497 # The GENERATE_TODOLIST tag can be used to enable (YES) or +00498 # disable (NO) the todo list. This list is created by putting \todo +00499 # commands in the documentation. +00500 +00501 GENERATE_TODOLIST = YES +00502 +00503 # The GENERATE_TESTLIST tag can be used to enable (YES) or +00504 # disable (NO) the test list. This list is created by putting \test +00505 # commands in the documentation. +00506 +00507 GENERATE_TESTLIST = YES +00508 +00509 # The GENERATE_BUGLIST tag can be used to enable (YES) or +00510 # disable (NO) the bug list. This list is created by putting \bug +00511 # commands in the documentation. +00512 +00513 GENERATE_BUGLIST = YES +00514 +00515 # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +00516 # disable (NO) the deprecated list. This list is created by putting +00517 # \deprecated commands in the documentation. +00518 +00519 GENERATE_DEPRECATEDLIST= YES +00520 +00521 # The ENABLED_SECTIONS tag can be used to enable conditional +00522 # documentation sections, marked by \if sectionname ... \endif. +00523 +00524 ENABLED_SECTIONS = +00525 +00526 # The MAX_INITIALIZER_LINES tag determines the maximum number of lines +00527 # the initial value of a variable or macro consists of for it to appear in +00528 # the documentation. If the initializer consists of more lines than specified +00529 # here it will be hidden. Use a value of 0 to hide initializers completely. +00530 # The appearance of the initializer of individual variables and macros in the +00531 # documentation can be controlled using \showinitializer or \hideinitializer +00532 # command in the documentation regardless of this setting. +00533 +00534 MAX_INITIALIZER_LINES = 30 +00535 +00536 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated +00537 # at the bottom of the documentation of classes and structs. If set to YES the +00538 # list will mention the files that were used to generate the documentation. +00539 +00540 SHOW_USED_FILES = NO +00541 +00542 # If the sources in your project are distributed over multiple directories +00543 # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +00544 # in the documentation. The default is NO. +00545 +00546 SHOW_DIRECTORIES = NO +00547 +00548 # Set the SHOW_FILES tag to NO to disable the generation of the Files page. +00549 # This will remove the Files entry from the Quick Index and from the +00550 # Folder Tree View (if specified). The default is YES. +00551 +00552 SHOW_FILES = YES +00553 +00554 # Set the SHOW_NAMESPACES tag to NO to disable the generation of the +00555 # Namespaces page. This will remove the Namespaces entry from the Quick Index +00556 # and from the Folder Tree View (if specified). The default is YES. +00557 +00558 SHOW_NAMESPACES = YES +00559 +00560 # The FILE_VERSION_FILTER tag can be used to specify a program or script that +00561 # doxygen should invoke to get the current version for each file (typically from +00562 # the version control system). Doxygen will invoke the program by executing (via +00563 # popen()) the command <command> <input-file>, where <command> is the value of +00564 # the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file +00565 # provided by doxygen. Whatever the program writes to standard output +00566 # is used as the file version. See the manual for examples. +00567 +00568 FILE_VERSION_FILTER = +00569 +00570 # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +00571 # by doxygen. The layout file controls the global structure of the generated +00572 # output files in an output format independent way. The create the layout file +00573 # that represents doxygen's defaults, run doxygen with the -l option. +00574 # You can optionally specify a file name after the option, if omitted +00575 # DoxygenLayout.xml will be used as the name of the layout file. +00576 +00577 LAYOUT_FILE = +00578 +00579 # The CITE_BIB_FILES tag can be used to specify one or more bib files +00580 # containing the references data. This must be a list of .bib files. The +00581 # .bib extension is automatically appended if omitted. Using this command +00582 # requires the bibtex tool to be installed. See also +00583 # http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style +00584 # of the bibliography can be controlled using LATEX_BIB_STYLE. To use this +00585 # feature you need bibtex and perl available in the search path. +00586 +00587 CITE_BIB_FILES = +00588 +00589 #--------------------------------------------------------------------------- +00590 # configuration options related to warning and progress messages +00591 #--------------------------------------------------------------------------- +00592 +00593 # The QUIET tag can be used to turn on/off the messages that are generated +00594 # by doxygen. Possible values are YES and NO. If left blank NO is used. +00595 +00596 QUIET = NO +00597 +00598 # The WARNINGS tag can be used to turn on/off the warning messages that are +00599 # generated by doxygen. Possible values are YES and NO. If left blank +00600 # NO is used. +00601 +00602 WARNINGS = YES +00603 +00604 # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +00605 # for undocumented members. If EXTRACT_ALL is set to YES then this flag will +00606 # automatically be disabled. +00607 +00608 WARN_IF_UNDOCUMENTED = YES +00609 +00610 # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +00611 # potential errors in the documentation, such as not documenting some +00612 # parameters in a documented function, or documenting parameters that +00613 # don't exist or using markup commands wrongly. +00614 +00615 WARN_IF_DOC_ERROR = YES +00616 +00617 # The WARN_NO_PARAMDOC option can be enabled to get warnings for +00618 # functions that are documented, but have no documentation for their parameters +00619 # or return value. If set to NO (the default) doxygen will only warn about +00620 # wrong or incomplete parameter documentation, but not about the absence of +00621 # documentation. +00622 +00623 WARN_NO_PARAMDOC = NO +00624 +00625 # The WARN_FORMAT tag determines the format of the warning messages that +00626 # doxygen can produce. The string should contain the $file, $line, and $text +00627 # tags, which will be replaced by the file and line number from which the +00628 # warning originated and the warning text. Optionally the format may contain +00629 # $version, which will be replaced by the version of the file (if it could +00630 # be obtained via FILE_VERSION_FILTER) +00631 +00632 WARN_FORMAT = "$file:$line: $text" +00633 +00634 # The WARN_LOGFILE tag can be used to specify a file to which warning +00635 # and error messages should be written. If left blank the output is written +00636 # to stderr. +00637 +00638 WARN_LOGFILE = +00639 +00640 #--------------------------------------------------------------------------- +00641 # configuration options related to the input files +00642 #--------------------------------------------------------------------------- +00643 +00644 # The INPUT tag can be used to specify the files and/or directories that contain +00645 # documented source files. You may enter file names like "myfile.cpp" or +00646 # directories like "/usr/src/myproject". Separate the files or directories +00647 # with spaces. +00648 +00649 INPUT = ../glm \ +00650 . +00651 +00652 # This tag can be used to specify the character encoding of the source files +00653 # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +00654 # also the default input encoding. Doxygen uses libiconv (or the iconv built +00655 # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +00656 # the list of possible encodings. +00657 +00658 INPUT_ENCODING = UTF-8 +00659 +00660 # If the value of the INPUT tag contains directories, you can use the +00661 # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +00662 # and *.h) to filter out the source-files in the directories. If left +00663 # blank the following patterns are tested: +00664 # *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh +00665 # *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py +00666 # *.f90 *.f *.for *.vhd *.vhdl +00667 +00668 FILE_PATTERNS = *.hpp \ +00669 *.doxy +00670 +00671 # The RECURSIVE tag can be used to turn specify whether or not subdirectories +00672 # should be searched for input files as well. Possible values are YES and NO. +00673 # If left blank NO is used. +00674 +00675 RECURSIVE = YES +00676 +00677 # The EXCLUDE tag can be used to specify files and/or directories that should be +00678 # excluded from the INPUT source files. This way you can easily exclude a +00679 # subdirectory from a directory tree whose root is specified with the INPUT tag. +00680 # Note that relative paths are relative to the directory from which doxygen is +00681 # run. +00682 +00683 EXCLUDE = +00684 +00685 # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +00686 # directories that are symbolic links (a Unix file system feature) are excluded +00687 # from the input. +00688 +00689 EXCLUDE_SYMLINKS = NO +00690 +00691 # If the value of the INPUT tag contains directories, you can use the +00692 # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +00693 # certain files from those directories. Note that the wildcards are matched +00694 # against the file with absolute path, so to exclude all test directories +00695 # for example use the pattern */test/* +00696 +00697 EXCLUDE_PATTERNS = +00698 +00699 # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +00700 # (namespaces, classes, functions, etc.) that should be excluded from the +00701 # output. The symbol name can be a fully qualified name, a word, or if the +00702 # wildcard * is used, a substring. Examples: ANamespace, AClass, +00703 # AClass::ANamespace, ANamespace::*Test +00704 +00705 EXCLUDE_SYMBOLS = +00706 +00707 # The EXAMPLE_PATH tag can be used to specify one or more files or +00708 # directories that contain example code fragments that are included (see +00709 # the \include command). +00710 +00711 EXAMPLE_PATH = +00712 +00713 # If the value of the EXAMPLE_PATH tag contains directories, you can use the +00714 # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +00715 # and *.h) to filter out the source-files in the directories. If left +00716 # blank all files are included. +00717 +00718 EXAMPLE_PATTERNS = * +00719 +00720 # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +00721 # searched for input files to be used with the \include or \dontinclude +00722 # commands irrespective of the value of the RECURSIVE tag. +00723 # Possible values are YES and NO. If left blank NO is used. +00724 +00725 EXAMPLE_RECURSIVE = NO +00726 +00727 # The IMAGE_PATH tag can be used to specify one or more files or +00728 # directories that contain image that are included in the documentation (see +00729 # the \image command). +00730 +00731 IMAGE_PATH = +00732 +00733 # The INPUT_FILTER tag can be used to specify a program that doxygen should +00734 # invoke to filter for each input file. Doxygen will invoke the filter program +00735 # by executing (via popen()) the command <filter> <input-file>, where <filter> +00736 # is the value of the INPUT_FILTER tag, and <input-file> is the name of an +00737 # input file. Doxygen will then use the output that the filter program writes +00738 # to standard output. If FILTER_PATTERNS is specified, this tag will be +00739 # ignored. +00740 +00741 INPUT_FILTER = +00742 +00743 # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +00744 # basis. Doxygen will compare the file name with each pattern and apply the +00745 # filter if there is a match. The filters are a list of the form: +00746 # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +00747 # info on how filters are used. If FILTER_PATTERNS is empty or if +00748 # non of the patterns match the file name, INPUT_FILTER is applied. +00749 +00750 FILTER_PATTERNS = +00751 +00752 # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +00753 # INPUT_FILTER) will be used to filter the input files when producing source +00754 # files to browse (i.e. when SOURCE_BROWSER is set to YES). +00755 +00756 FILTER_SOURCE_FILES = NO +00757 +00758 # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +00759 # pattern. A pattern will override the setting for FILTER_PATTERN (if any) +00760 # and it is also possible to disable source filtering for a specific pattern +00761 # using *.ext= (so without naming a filter). This option only has effect when +00762 # FILTER_SOURCE_FILES is enabled. +00763 +00764 FILTER_SOURCE_PATTERNS = +00765 +00766 #--------------------------------------------------------------------------- +00767 # configuration options related to source browsing +00768 #--------------------------------------------------------------------------- +00769 +00770 # If the SOURCE_BROWSER tag is set to YES then a list of source files will +00771 # be generated. Documented entities will be cross-referenced with these sources. +00772 # Note: To get rid of all source code in the generated output, make sure also +00773 # VERBATIM_HEADERS is set to NO. +00774 +00775 SOURCE_BROWSER = YES +00776 +00777 # Setting the INLINE_SOURCES tag to YES will include the body +00778 # of functions and classes directly in the documentation. +00779 +00780 INLINE_SOURCES = NO +00781 +00782 # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +00783 # doxygen to hide any special comment blocks from generated source code +00784 # fragments. Normal C and C++ comments will always remain visible. +00785 +00786 STRIP_CODE_COMMENTS = YES +00787 +00788 # If the REFERENCED_BY_RELATION tag is set to YES +00789 # then for each documented function all documented +00790 # functions referencing it will be listed. +00791 +00792 REFERENCED_BY_RELATION = YES +00793 +00794 # If the REFERENCES_RELATION tag is set to YES +00795 # then for each documented function all documented entities +00796 # called/used by that function will be listed. +00797 +00798 REFERENCES_RELATION = YES +00799 +00800 # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +00801 # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +00802 # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +00803 # link to the source code. Otherwise they will link to the documentation. +00804 +00805 REFERENCES_LINK_SOURCE = YES +00806 +00807 # If the USE_HTAGS tag is set to YES then the references to source code +00808 # will point to the HTML generated by the htags(1) tool instead of doxygen +00809 # built-in source browser. The htags tool is part of GNU's global source +00810 # tagging system (see http://www.gnu.org/software/global/global.html). You +00811 # will need version 4.8.6 or higher. +00812 +00813 USE_HTAGS = NO +00814 +00815 # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +00816 # will generate a verbatim copy of the header file for each class for +00817 # which an include is specified. Set to NO to disable this. +00818 +00819 VERBATIM_HEADERS = YES +00820 +00821 #--------------------------------------------------------------------------- +00822 # configuration options related to the alphabetical class index +00823 #--------------------------------------------------------------------------- +00824 +00825 # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +00826 # of all compounds will be generated. Enable this if the project +00827 # contains a lot of classes, structs, unions or interfaces. +00828 +00829 ALPHABETICAL_INDEX = NO +00830 +00831 # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +00832 # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +00833 # in which this list will be split (can be a number in the range [1..20]) +00834 +00835 COLS_IN_ALPHA_INDEX = 5 +00836 +00837 # In case all classes in a project start with a common prefix, all +00838 # classes will be put under the same header in the alphabetical index. +00839 # The IGNORE_PREFIX tag can be used to specify one or more prefixes that +00840 # should be ignored while generating the index headers. +00841 +00842 IGNORE_PREFIX = +00843 +00844 #--------------------------------------------------------------------------- +00845 # configuration options related to the HTML output +00846 #--------------------------------------------------------------------------- +00847 +00848 # If the GENERATE_HTML tag is set to YES (the default) Doxygen will +00849 # generate HTML output. +00850 +00851 GENERATE_HTML = YES +00852 +00853 # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +00854 # If a relative path is entered the value of OUTPUT_DIRECTORY will be +00855 # put in front of it. If left blank `html' will be used as the default path. +00856 +00857 HTML_OUTPUT = html +00858 +00859 # The HTML_FILE_EXTENSION tag can be used to specify the file extension for +00860 # each generated HTML page (for example: .htm,.php,.asp). If it is left blank +00861 # doxygen will generate files with .html extension. +00862 +00863 HTML_FILE_EXTENSION = .html +00864 +00865 # The HTML_HEADER tag can be used to specify a personal HTML header for +00866 # each generated HTML page. If it is left blank doxygen will generate a +00867 # standard header. Note that when using a custom header you are responsible +00868 # for the proper inclusion of any scripts and style sheets that doxygen +00869 # needs, which is dependent on the configuration options used. +00870 # It is advised to generate a default header using "doxygen -w html +00871 # header.html footer.html stylesheet.css YourConfigFile" and then modify +00872 # that header. Note that the header is subject to change so you typically +00873 # have to redo this when upgrading to a newer version of doxygen or when +00874 # changing the value of configuration settings such as GENERATE_TREEVIEW! +00875 +00876 HTML_HEADER = +00877 +00878 # The HTML_FOOTER tag can be used to specify a personal HTML footer for +00879 # each generated HTML page. If it is left blank doxygen will generate a +00880 # standard footer. +00881 +00882 HTML_FOOTER = +00883 +00884 # The HTML_STYLESHEET tag can be used to specify a user-defined cascading +00885 # style sheet that is used by each HTML page. It can be used to +00886 # fine-tune the look of the HTML output. If the tag is left blank doxygen +00887 # will generate a default style sheet. Note that doxygen will try to copy +00888 # the style sheet file to the HTML output directory, so don't put your own +00889 # style sheet in the HTML output directory as well, or it will be erased! +00890 +00891 HTML_STYLESHEET = +00892 +00893 # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +00894 # other source files which should be copied to the HTML output directory. Note +00895 # that these files will be copied to the base HTML output directory. Use the +00896 # $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +00897 # files. In the HTML_STYLESHEET file, use the file name only. Also note that +00898 # the files will be copied as-is; there are no commands or markers available. +00899 +00900 HTML_EXTRA_FILES = +00901 +00902 # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. +00903 # Doxygen will adjust the colors in the style sheet and background images +00904 # according to this color. Hue is specified as an angle on a colorwheel, +00905 # see http://en.wikipedia.org/wiki/Hue for more information. +00906 # For instance the value 0 represents red, 60 is yellow, 120 is green, +00907 # 180 is cyan, 240 is blue, 300 purple, and 360 is red again. +00908 # The allowed range is 0 to 359. +00909 +00910 HTML_COLORSTYLE_HUE = 220 +00911 +00912 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of +00913 # the colors in the HTML output. For a value of 0 the output will use +00914 # grayscales only. A value of 255 will produce the most vivid colors. +00915 +00916 HTML_COLORSTYLE_SAT = 100 +00917 +00918 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to +00919 # the luminance component of the colors in the HTML output. Values below +00920 # 100 gradually make the output lighter, whereas values above 100 make +00921 # the output darker. The value divided by 100 is the actual gamma applied, +00922 # so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, +00923 # and 100 does not change the gamma. +00924 +00925 HTML_COLORSTYLE_GAMMA = 80 +00926 +00927 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +00928 # page will contain the date and time when the page was generated. Setting +00929 # this to NO can help when comparing the output of multiple runs. +00930 +00931 HTML_TIMESTAMP = NO +00932 +00933 # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +00934 # files or namespaces will be aligned in HTML using tables. If set to +00935 # NO a bullet list will be used. +00936 +00937 HTML_ALIGN_MEMBERS = YES +00938 +00939 # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +00940 # documentation will contain sections that can be hidden and shown after the +00941 # page has loaded. For this to work a browser that supports +00942 # JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +00943 # Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). +00944 +00945 HTML_DYNAMIC_SECTIONS = NO +00946 +00947 # If the GENERATE_DOCSET tag is set to YES, additional index files +00948 # will be generated that can be used as input for Apple's Xcode 3 +00949 # integrated development environment, introduced with OSX 10.5 (Leopard). +00950 # To create a documentation set, doxygen will generate a Makefile in the +00951 # HTML output directory. Running make will produce the docset in that +00952 # directory and running "make install" will install the docset in +00953 # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +00954 # it at startup. +00955 # See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +00956 # for more information. +00957 +00958 GENERATE_DOCSET = NO +00959 +00960 # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +00961 # feed. A documentation feed provides an umbrella under which multiple +00962 # documentation sets from a single provider (such as a company or product suite) +00963 # can be grouped. +00964 +00965 DOCSET_FEEDNAME = "Doxygen generated docs" +00966 +00967 # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +00968 # should uniquely identify the documentation set bundle. This should be a +00969 # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +00970 # will append .docset to the name. +00971 +00972 DOCSET_BUNDLE_ID = org.doxygen.Project +00973 +00974 # When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify +00975 # the documentation publisher. This should be a reverse domain-name style +00976 # string, e.g. com.mycompany.MyDocSet.documentation. +00977 +00978 DOCSET_PUBLISHER_ID = org.doxygen.Publisher +00979 +00980 # The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. +00981 +00982 DOCSET_PUBLISHER_NAME = Publisher +00983 +00984 # If the GENERATE_HTMLHELP tag is set to YES, additional index files +00985 # will be generated that can be used as input for tools like the +00986 # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +00987 # of the generated HTML documentation. +00988 +00989 GENERATE_HTMLHELP = NO +00990 +00991 # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +00992 # be used to specify the file name of the resulting .chm file. You +00993 # can add a path in front of the file if the result should not be +00994 # written to the html output directory. +00995 +00996 CHM_FILE = +00997 +00998 # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +00999 # be used to specify the location (absolute path including file name) of +01000 # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +01001 # the HTML help compiler on the generated index.hhp. +01002 +01003 HHC_LOCATION = +01004 +01005 # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +01006 # controls if a separate .chi index file is generated (YES) or that +01007 # it should be included in the master .chm file (NO). +01008 +01009 GENERATE_CHI = NO +01010 +01011 # If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +01012 # is used to encode HtmlHelp index (hhk), content (hhc) and project file +01013 # content. +01014 +01015 CHM_INDEX_ENCODING = +01016 +01017 # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +01018 # controls whether a binary table of contents is generated (YES) or a +01019 # normal table of contents (NO) in the .chm file. +01020 +01021 BINARY_TOC = NO +01022 +01023 # The TOC_EXPAND flag can be set to YES to add extra items for group members +01024 # to the contents of the HTML help documentation and to the tree view. +01025 +01026 TOC_EXPAND = NO +01027 +01028 # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +01029 # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated +01030 # that can be used as input for Qt's qhelpgenerator to generate a +01031 # Qt Compressed Help (.qch) of the generated HTML documentation. +01032 +01033 GENERATE_QHP = NO +01034 +01035 # If the QHG_LOCATION tag is specified, the QCH_FILE tag can +01036 # be used to specify the file name of the resulting .qch file. +01037 # The path specified is relative to the HTML output folder. +01038 +01039 QCH_FILE = +01040 +01041 # The QHP_NAMESPACE tag specifies the namespace to use when generating +01042 # Qt Help Project output. For more information please see +01043 # http://doc.trolltech.com/qthelpproject.html#namespace +01044 +01045 QHP_NAMESPACE = org.doxygen.Project +01046 +01047 # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +01048 # Qt Help Project output. For more information please see +01049 # http://doc.trolltech.com/qthelpproject.html#virtual-folders +01050 +01051 QHP_VIRTUAL_FOLDER = doc +01052 +01053 # If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to +01054 # add. For more information please see +01055 # http://doc.trolltech.com/qthelpproject.html#custom-filters +01056 +01057 QHP_CUST_FILTER_NAME = +01058 +01059 # The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the +01060 # custom filter to add. For more information please see +01061 # <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters"> +01062 # Qt Help Project / Custom Filters</a>. +01063 +01064 QHP_CUST_FILTER_ATTRS = +01065 +01066 # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +01067 # project's +01068 # filter section matches. +01069 # <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes"> +01070 # Qt Help Project / Filter Attributes</a>. +01071 +01072 QHP_SECT_FILTER_ATTRS = +01073 +01074 # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +01075 # be used to specify the location of Qt's qhelpgenerator. +01076 # If non-empty doxygen will try to run qhelpgenerator on the generated +01077 # .qhp file. +01078 +01079 QHG_LOCATION = +01080 +01081 # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +01082 # will be generated, which together with the HTML files, form an Eclipse help +01083 # plugin. To install this plugin and make it available under the help contents +01084 # menu in Eclipse, the contents of the directory containing the HTML and XML +01085 # files needs to be copied into the plugins directory of eclipse. The name of +01086 # the directory within the plugins directory should be the same as +01087 # the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +01088 # the help appears. +01089 +01090 GENERATE_ECLIPSEHELP = NO +01091 +01092 # A unique identifier for the eclipse help plugin. When installing the plugin +01093 # the directory name containing the HTML and XML files should also have +01094 # this name. +01095 +01096 ECLIPSE_DOC_ID = org.doxygen.Project +01097 +01098 # The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) +01099 # at top of each HTML page. The value NO (the default) enables the index and +01100 # the value YES disables it. Since the tabs have the same information as the +01101 # navigation tree you can set this option to NO if you already set +01102 # GENERATE_TREEVIEW to YES. +01103 +01104 DISABLE_INDEX = NO +01105 +01106 # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +01107 # structure should be generated to display hierarchical information. +01108 # If the tag value is set to YES, a side panel will be generated +01109 # containing a tree-like index structure (just like the one that +01110 # is generated for HTML Help). For this to work a browser that supports +01111 # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +01112 # Windows users are probably better off using the HTML help feature. +01113 # Since the tree basically has the same information as the tab index you +01114 # could consider to set DISABLE_INDEX to NO when enabling this option. +01115 +01116 GENERATE_TREEVIEW = NO +01117 +01118 # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values +01119 # (range [0,1..20]) that doxygen will group on one line in the generated HTML +01120 # documentation. Note that a value of 0 will completely suppress the enum +01121 # values from appearing in the overview section. +01122 +01123 ENUM_VALUES_PER_LINE = 4 +01124 +01125 # By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, +01126 # and Class Hierarchy pages using a tree view instead of an ordered list. +01127 +01128 USE_INLINE_TREES = NO +01129 +01130 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +01131 # used to set the initial width (in pixels) of the frame in which the tree +01132 # is shown. +01133 +01134 TREEVIEW_WIDTH = 250 +01135 +01136 # When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open +01137 # links to external symbols imported via tag files in a separate window. +01138 +01139 EXT_LINKS_IN_WINDOW = NO +01140 +01141 # Use this tag to change the font size of Latex formulas included +01142 # as images in the HTML documentation. The default is 10. Note that +01143 # when you change the font size after a successful doxygen run you need +01144 # to manually remove any form_*.png images from the HTML output directory +01145 # to force them to be regenerated. +01146 +01147 FORMULA_FONTSIZE = 10 +01148 +01149 # Use the FORMULA_TRANPARENT tag to determine whether or not the images +01150 # generated for formulas are transparent PNGs. Transparent PNGs are +01151 # not supported properly for IE 6.0, but are supported on all modern browsers. +01152 # Note that when changing this option you need to delete any form_*.png files +01153 # in the HTML output before the changes have effect. +01154 +01155 FORMULA_TRANSPARENT = YES +01156 +01157 # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax +01158 # (see http://www.mathjax.org) which uses client side Javascript for the +01159 # rendering instead of using prerendered bitmaps. Use this if you do not +01160 # have LaTeX installed or if you want to formulas look prettier in the HTML +01161 # output. When enabled you also need to install MathJax separately and +01162 # configure the path to it using the MATHJAX_RELPATH option. +01163 +01164 USE_MATHJAX = NO +01165 +01166 # When MathJax is enabled you need to specify the location relative to the +01167 # HTML output directory using the MATHJAX_RELPATH option. The destination +01168 # directory should contain the MathJax.js script. For instance, if the mathjax +01169 # directory is located at the same level as the HTML output directory, then +01170 # MATHJAX_RELPATH should be ../mathjax. The default value points to the +01171 # mathjax.org site, so you can quickly see the result without installing +01172 # MathJax, but it is strongly recommended to install a local copy of MathJax +01173 # before deployment. +01174 +01175 MATHJAX_RELPATH = http://www.mathjax.org/mathjax +01176 +01177 # The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension +01178 # names that should be enabled during MathJax rendering. +01179 +01180 MATHJAX_EXTENSIONS = +01181 +01182 # When the SEARCHENGINE tag is enabled doxygen will generate a search box +01183 # for the HTML output. The underlying search engine uses javascript +01184 # and DHTML and should work on any modern browser. Note that when using +01185 # HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +01186 # (GENERATE_DOCSET) there is already a search function so this one should +01187 # typically be disabled. For large projects the javascript based search engine +01188 # can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. +01189 +01190 SEARCHENGINE = NO +01191 +01192 # When the SERVER_BASED_SEARCH tag is enabled the search engine will be +01193 # implemented using a PHP enabled web server instead of at the web client +01194 # using Javascript. Doxygen will generate the search PHP script and index +01195 # file to put on the web server. The advantage of the server +01196 # based approach is that it scales better to large projects and allows +01197 # full text search. The disadvantages are that it is more difficult to setup +01198 # and does not have live searching capabilities. +01199 +01200 SERVER_BASED_SEARCH = NO +01201 +01202 #--------------------------------------------------------------------------- +01203 # configuration options related to the LaTeX output +01204 #--------------------------------------------------------------------------- +01205 +01206 # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +01207 # generate Latex output. +01208 +01209 GENERATE_LATEX = NO +01210 +01211 # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +01212 # If a relative path is entered the value of OUTPUT_DIRECTORY will be +01213 # put in front of it. If left blank `latex' will be used as the default path. +01214 +01215 LATEX_OUTPUT = latex +01216 +01217 # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +01218 # invoked. If left blank `latex' will be used as the default command name. +01219 # Note that when enabling USE_PDFLATEX this option is only used for +01220 # generating bitmaps for formulas in the HTML output, but not in the +01221 # Makefile that is written to the output directory. +01222 +01223 LATEX_CMD_NAME = latex +01224 +01225 # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +01226 # generate index for LaTeX. If left blank `makeindex' will be used as the +01227 # default command name. +01228 +01229 MAKEINDEX_CMD_NAME = makeindex +01230 +01231 # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +01232 # LaTeX documents. This may be useful for small projects and may help to +01233 # save some trees in general. +01234 +01235 COMPACT_LATEX = NO +01236 +01237 # The PAPER_TYPE tag can be used to set the paper type that is used +01238 # by the printer. Possible values are: a4, letter, legal and +01239 # executive. If left blank a4wide will be used. +01240 +01241 PAPER_TYPE = a4wide +01242 +01243 # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +01244 # packages that should be included in the LaTeX output. +01245 +01246 EXTRA_PACKAGES = +01247 +01248 # The LATEX_HEADER tag can be used to specify a personal LaTeX header for +01249 # the generated latex document. The header should contain everything until +01250 # the first chapter. If it is left blank doxygen will generate a +01251 # standard header. Notice: only use this tag if you know what you are doing! +01252 +01253 LATEX_HEADER = +01254 +01255 # The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for +01256 # the generated latex document. The footer should contain everything after +01257 # the last chapter. If it is left blank doxygen will generate a +01258 # standard footer. Notice: only use this tag if you know what you are doing! +01259 +01260 LATEX_FOOTER = +01261 +01262 # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +01263 # is prepared for conversion to pdf (using ps2pdf). The pdf file will +01264 # contain links (just like the HTML output) instead of page references +01265 # This makes the output suitable for online browsing using a pdf viewer. +01266 +01267 PDF_HYPERLINKS = NO +01268 +01269 # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +01270 # plain latex in the generated Makefile. Set this option to YES to get a +01271 # higher quality PDF documentation. +01272 +01273 USE_PDFLATEX = YES +01274 +01275 # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +01276 # command to the generated LaTeX files. This will instruct LaTeX to keep +01277 # running if errors occur, instead of asking the user for help. +01278 # This option is also used when generating formulas in HTML. +01279 +01280 LATEX_BATCHMODE = NO +01281 +01282 # If LATEX_HIDE_INDICES is set to YES then doxygen will not +01283 # include the index chapters (such as File Index, Compound Index, etc.) +01284 # in the output. +01285 +01286 LATEX_HIDE_INDICES = NO +01287 +01288 # If LATEX_SOURCE_CODE is set to YES then doxygen will include +01289 # source code with syntax highlighting in the LaTeX output. +01290 # Note that which sources are shown also depends on other settings +01291 # such as SOURCE_BROWSER. +01292 +01293 LATEX_SOURCE_CODE = NO +01294 +01295 # The LATEX_BIB_STYLE tag can be used to specify the style to use for the +01296 # bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See +01297 # http://en.wikipedia.org/wiki/BibTeX for more info. +01298 +01299 LATEX_BIB_STYLE = plain +01300 +01301 #--------------------------------------------------------------------------- +01302 # configuration options related to the RTF output +01303 #--------------------------------------------------------------------------- +01304 +01305 # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +01306 # The RTF output is optimized for Word 97 and may not look very pretty with +01307 # other RTF readers or editors. +01308 +01309 GENERATE_RTF = NO +01310 +01311 # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +01312 # If a relative path is entered the value of OUTPUT_DIRECTORY will be +01313 # put in front of it. If left blank `rtf' will be used as the default path. +01314 +01315 RTF_OUTPUT = glm.rtf +01316 +01317 # If the COMPACT_RTF tag is set to YES Doxygen generates more compact +01318 # RTF documents. This may be useful for small projects and may help to +01319 # save some trees in general. +01320 +01321 COMPACT_RTF = NO +01322 +01323 # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +01324 # will contain hyperlink fields. The RTF file will +01325 # contain links (just like the HTML output) instead of page references. +01326 # This makes the output suitable for online browsing using WORD or other +01327 # programs which support those fields. +01328 # Note: wordpad (write) and others do not support links. +01329 +01330 RTF_HYPERLINKS = YES +01331 +01332 # Load style sheet definitions from file. Syntax is similar to doxygen's +01333 # config file, i.e. a series of assignments. You only have to provide +01334 # replacements, missing definitions are set to their default value. +01335 +01336 RTF_STYLESHEET_FILE = +01337 +01338 # Set optional variables used in the generation of an rtf document. +01339 # Syntax is similar to doxygen's config file. +01340 +01341 RTF_EXTENSIONS_FILE = +01342 +01343 #--------------------------------------------------------------------------- +01344 # configuration options related to the man page output +01345 #--------------------------------------------------------------------------- +01346 +01347 # If the GENERATE_MAN tag is set to YES (the default) Doxygen will +01348 # generate man pages +01349 +01350 GENERATE_MAN = NO +01351 +01352 # The MAN_OUTPUT tag is used to specify where the man pages will be put. +01353 # If a relative path is entered the value of OUTPUT_DIRECTORY will be +01354 # put in front of it. If left blank `man' will be used as the default path. +01355 +01356 MAN_OUTPUT = man +01357 +01358 # The MAN_EXTENSION tag determines the extension that is added to +01359 # the generated man pages (default is the subroutine's section .3) +01360 +01361 MAN_EXTENSION = .3 +01362 +01363 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, +01364 # then it will generate one additional man file for each entity +01365 # documented in the real man page(s). These additional files +01366 # only source the real man page, but without them the man command +01367 # would be unable to find the correct page. The default is NO. +01368 +01369 MAN_LINKS = NO +01370 +01371 #--------------------------------------------------------------------------- +01372 # configuration options related to the XML output +01373 #--------------------------------------------------------------------------- +01374 +01375 # If the GENERATE_XML tag is set to YES Doxygen will +01376 # generate an XML file that captures the structure of +01377 # the code including all documentation. +01378 +01379 GENERATE_XML = NO +01380 +01381 # The XML_OUTPUT tag is used to specify where the XML pages will be put. +01382 # If a relative path is entered the value of OUTPUT_DIRECTORY will be +01383 # put in front of it. If left blank `xml' will be used as the default path. +01384 +01385 XML_OUTPUT = xml +01386 +01387 # The XML_SCHEMA tag can be used to specify an XML schema, +01388 # which can be used by a validating XML parser to check the +01389 # syntax of the XML files. +01390 +01391 XML_SCHEMA = +01392 +01393 # The XML_DTD tag can be used to specify an XML DTD, +01394 # which can be used by a validating XML parser to check the +01395 # syntax of the XML files. +01396 +01397 XML_DTD = +01398 +01399 # If the XML_PROGRAMLISTING tag is set to YES Doxygen will +01400 # dump the program listings (including syntax highlighting +01401 # and cross-referencing information) to the XML output. Note that +01402 # enabling this will significantly increase the size of the XML output. +01403 +01404 XML_PROGRAMLISTING = YES +01405 +01406 #--------------------------------------------------------------------------- +01407 # configuration options for the AutoGen Definitions output +01408 #--------------------------------------------------------------------------- +01409 +01410 # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +01411 # generate an AutoGen Definitions (see autogen.sf.net) file +01412 # that captures the structure of the code including all +01413 # documentation. Note that this feature is still experimental +01414 # and incomplete at the moment. +01415 +01416 GENERATE_AUTOGEN_DEF = NO +01417 +01418 #--------------------------------------------------------------------------- +01419 # configuration options related to the Perl module output +01420 #--------------------------------------------------------------------------- +01421 +01422 # If the GENERATE_PERLMOD tag is set to YES Doxygen will +01423 # generate a Perl module file that captures the structure of +01424 # the code including all documentation. Note that this +01425 # feature is still experimental and incomplete at the +01426 # moment. +01427 +01428 GENERATE_PERLMOD = NO +01429 +01430 # If the PERLMOD_LATEX tag is set to YES Doxygen will generate +01431 # the necessary Makefile rules, Perl scripts and LaTeX code to be able +01432 # to generate PDF and DVI output from the Perl module output. +01433 +01434 PERLMOD_LATEX = NO +01435 +01436 # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +01437 # nicely formatted so it can be parsed by a human reader. This is useful +01438 # if you want to understand what is going on. On the other hand, if this +01439 # tag is set to NO the size of the Perl module output will be much smaller +01440 # and Perl will parse it just the same. +01441 +01442 PERLMOD_PRETTY = YES +01443 +01444 # The names of the make variables in the generated doxyrules.make file +01445 # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +01446 # This is useful so different doxyrules.make files included by the same +01447 # Makefile don't overwrite each other's variables. +01448 +01449 PERLMOD_MAKEVAR_PREFIX = +01450 +01451 #--------------------------------------------------------------------------- +01452 # Configuration options related to the preprocessor +01453 #--------------------------------------------------------------------------- +01454 +01455 # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +01456 # evaluate all C-preprocessor directives found in the sources and include +01457 # files. +01458 +01459 ENABLE_PREPROCESSING = YES +01460 +01461 # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +01462 # names in the source code. If set to NO (the default) only conditional +01463 # compilation will be performed. Macro expansion can be done in a controlled +01464 # way by setting EXPAND_ONLY_PREDEF to YES. +01465 +01466 MACRO_EXPANSION = NO +01467 +01468 # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +01469 # then the macro expansion is limited to the macros specified with the +01470 # PREDEFINED and EXPAND_AS_DEFINED tags. +01471 +01472 EXPAND_ONLY_PREDEF = NO +01473 +01474 # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +01475 # pointed to by INCLUDE_PATH will be searched when a #include is found. +01476 +01477 SEARCH_INCLUDES = YES +01478 +01479 # The INCLUDE_PATH tag can be used to specify one or more directories that +01480 # contain include files that are not input files but should be processed by +01481 # the preprocessor. +01482 +01483 INCLUDE_PATH = +01484 +01485 # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +01486 # patterns (like *.h and *.hpp) to filter out the header-files in the +01487 # directories. If left blank, the patterns specified with FILE_PATTERNS will +01488 # be used. +01489 +01490 INCLUDE_FILE_PATTERNS = +01491 +01492 # The PREDEFINED tag can be used to specify one or more macro names that +01493 # are defined before the preprocessor is started (similar to the -D option of +01494 # gcc). The argument of the tag is a list of macros of the form: name +01495 # or name=definition (no spaces). If the definition and the = are +01496 # omitted =1 is assumed. To prevent a macro definition from being +01497 # undefined via #undef or recursively expanded use the := operator +01498 # instead of the = operator. +01499 +01500 PREDEFINED = +01501 +01502 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +01503 # this tag can be used to specify a list of macro names that should be expanded. +01504 # The macro definition that is found in the sources will be used. +01505 # Use the PREDEFINED tag if you want to use a different macro definition that +01506 # overrules the definition found in the source code. +01507 +01508 EXPAND_AS_DEFINED = +01509 +01510 # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +01511 # doxygen's preprocessor will remove all references to function-like macros +01512 # that are alone on a line, have an all uppercase name, and do not end with a +01513 # semicolon, because these will confuse the parser if not removed. +01514 +01515 SKIP_FUNCTION_MACROS = YES +01516 +01517 #--------------------------------------------------------------------------- +01518 # Configuration::additions related to external references +01519 #--------------------------------------------------------------------------- +01520 +01521 # The TAGFILES option can be used to specify one or more tagfiles. +01522 # Optionally an initial location of the external documentation +01523 # can be added for each tagfile. The format of a tag file without +01524 # this location is as follows: +01525 # TAGFILES = file1 file2 ... +01526 # Adding location for the tag files is done as follows: +01527 # TAGFILES = file1=loc1 "file2 = loc2" ... +01528 # where "loc1" and "loc2" can be relative or absolute paths or +01529 # URLs. If a location is present for each tag, the installdox tool +01530 # does not have to be run to correct the links. +01531 # Note that each tag file must have a unique name +01532 # (where the name does NOT include the path) +01533 # If a tag file is not located in the directory in which doxygen +01534 # is run, you must also specify the path to the tagfile here. +01535 +01536 TAGFILES = +01537 +01538 # When a file name is specified after GENERATE_TAGFILE, doxygen will create +01539 # a tag file that is based on the input files it reads. +01540 +01541 GENERATE_TAGFILE = +01542 +01543 # If the ALLEXTERNALS tag is set to YES all external classes will be listed +01544 # in the class index. If set to NO only the inherited external classes +01545 # will be listed. +01546 +01547 ALLEXTERNALS = NO +01548 +01549 # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +01550 # in the modules index. If set to NO, only the current project's groups will +01551 # be listed. +01552 +01553 EXTERNAL_GROUPS = YES +01554 +01555 # The PERL_PATH should be the absolute path and name of the perl script +01556 # interpreter (i.e. the result of `which perl'). +01557 +01558 PERL_PATH = /usr/bin/perl +01559 +01560 #--------------------------------------------------------------------------- +01561 # Configuration options related to the dot tool +01562 #--------------------------------------------------------------------------- +01563 +01564 # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +01565 # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +01566 # or super classes. Setting the tag to NO turns the diagrams off. Note that +01567 # this option also works with HAVE_DOT disabled, but it is recommended to +01568 # install and use dot, since it yields more powerful graphs. +01569 +01570 CLASS_DIAGRAMS = YES +01571 +01572 # You can define message sequence charts within doxygen comments using the \msc +01573 # command. Doxygen will then run the mscgen tool (see +01574 # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +01575 # documentation. The MSCGEN_PATH tag allows you to specify the directory where +01576 # the mscgen tool resides. If left empty the tool is assumed to be found in the +01577 # default search path. +01578 +01579 MSCGEN_PATH = +01580 +01581 # If set to YES, the inheritance and collaboration graphs will hide +01582 # inheritance and usage relations if the target is undocumented +01583 # or is not a class. +01584 +01585 HIDE_UNDOC_RELATIONS = YES +01586 +01587 # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +01588 # available from the path. This tool is part of Graphviz, a graph visualization +01589 # toolkit from AT&T and Lucent Bell Labs. The other options in this section +01590 # have no effect if this option is set to NO (the default) +01591 +01592 HAVE_DOT = NO +01593 +01594 # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is +01595 # allowed to run in parallel. When set to 0 (the default) doxygen will +01596 # base this on the number of processors available in the system. You can set it +01597 # explicitly to a value larger than 0 to get control over the balance +01598 # between CPU load and processing speed. +01599 +01600 DOT_NUM_THREADS = 0 +01601 +01602 # By default doxygen will use the Helvetica font for all dot files that +01603 # doxygen generates. When you want a differently looking font you can specify +01604 # the font name using DOT_FONTNAME. You need to make sure dot is able to find +01605 # the font, which can be done by putting it in a standard location or by setting +01606 # the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the +01607 # directory containing the font. +01608 +01609 DOT_FONTNAME = FreeSans +01610 +01611 # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +01612 # The default size is 10pt. +01613 +01614 DOT_FONTSIZE = 10 +01615 +01616 # By default doxygen will tell dot to use the Helvetica font. +01617 # If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to +01618 # set the path where dot can find it. +01619 +01620 DOT_FONTPATH = +01621 +01622 # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +01623 # will generate a graph for each documented class showing the direct and +01624 # indirect inheritance relations. Setting this tag to YES will force the +01625 # CLASS_DIAGRAMS tag to NO. +01626 +01627 CLASS_GRAPH = YES +01628 +01629 # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +01630 # will generate a graph for each documented class showing the direct and +01631 # indirect implementation dependencies (inheritance, containment, and +01632 # class references variables) of the class with other documented classes. +01633 +01634 COLLABORATION_GRAPH = YES +01635 +01636 # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +01637 # will generate a graph for groups, showing the direct groups dependencies +01638 +01639 GROUP_GRAPHS = YES +01640 +01641 # If the UML_LOOK tag is set to YES doxygen will generate inheritance and +01642 # collaboration diagrams in a style similar to the OMG's Unified Modeling +01643 # Language. +01644 +01645 UML_LOOK = NO +01646 +01647 # If set to YES, the inheritance and collaboration graphs will show the +01648 # relations between templates and their instances. +01649 +01650 TEMPLATE_RELATIONS = NO +01651 +01652 # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +01653 # tags are set to YES then doxygen will generate a graph for each documented +01654 # file showing the direct and indirect include dependencies of the file with +01655 # other documented files. +01656 +01657 INCLUDE_GRAPH = YES +01658 +01659 # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +01660 # HAVE_DOT tags are set to YES then doxygen will generate a graph for each +01661 # documented header file showing the documented files that directly or +01662 # indirectly include this file. +01663 +01664 INCLUDED_BY_GRAPH = YES +01665 +01666 # If the CALL_GRAPH and HAVE_DOT options are set to YES then +01667 # doxygen will generate a call dependency graph for every global function +01668 # or class method. Note that enabling this option will significantly increase +01669 # the time of a run. So in most cases it will be better to enable call graphs +01670 # for selected functions only using the \callgraph command. +01671 +01672 CALL_GRAPH = YES +01673 +01674 # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +01675 # doxygen will generate a caller dependency graph for every global function +01676 # or class method. Note that enabling this option will significantly increase +01677 # the time of a run. So in most cases it will be better to enable caller +01678 # graphs for selected functions only using the \callergraph command. +01679 +01680 CALLER_GRAPH = YES +01681 +01682 # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +01683 # will generate a graphical hierarchy of all classes instead of a textual one. +01684 +01685 GRAPHICAL_HIERARCHY = YES +01686 +01687 # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +01688 # then doxygen will show the dependencies a directory has on other directories +01689 # in a graphical way. The dependency relations are determined by the #include +01690 # relations between the files in the directories. +01691 +01692 DIRECTORY_GRAPH = YES +01693 +01694 # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +01695 # generated by dot. Possible values are svg, png, jpg, or gif. +01696 # If left blank png will be used. If you choose svg you need to set +01697 # HTML_FILE_EXTENSION to xhtml in order to make the SVG files +01698 # visible in IE 9+ (other browsers do not have this requirement). +01699 +01700 DOT_IMAGE_FORMAT = png +01701 +01702 # If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to +01703 # enable generation of interactive SVG images that allow zooming and panning. +01704 # Note that this requires a modern browser other than Internet Explorer. +01705 # Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you +01706 # need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files +01707 # visible. Older versions of IE do not have SVG support. +01708 +01709 INTERACTIVE_SVG = NO +01710 +01711 # The tag DOT_PATH can be used to specify the path where the dot tool can be +01712 # found. If left blank, it is assumed the dot tool can be found in the path. +01713 +01714 DOT_PATH = +01715 +01716 # The DOTFILE_DIRS tag can be used to specify one or more directories that +01717 # contain dot files that are included in the documentation (see the +01718 # \dotfile command). +01719 +01720 DOTFILE_DIRS = +01721 +01722 # The MSCFILE_DIRS tag can be used to specify one or more directories that +01723 # contain msc files that are included in the documentation (see the +01724 # \mscfile command). +01725 +01726 MSCFILE_DIRS = +01727 +01728 # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +01729 # nodes that will be shown in the graph. If the number of nodes in a graph +01730 # becomes larger than this value, doxygen will truncate the graph, which is +01731 # visualized by representing a node as a red box. Note that doxygen if the +01732 # number of direct children of the root node in a graph is already larger than +01733 # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +01734 # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. +01735 +01736 DOT_GRAPH_MAX_NODES = 50 +01737 +01738 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +01739 # graphs generated by dot. A depth value of 3 means that only nodes reachable +01740 # from the root by following a path via at most 3 edges will be shown. Nodes +01741 # that lay further from the root node will be omitted. Note that setting this +01742 # option to 1 or 2 may greatly reduce the computation time needed for large +01743 # code bases. Also note that the size of a graph can be further restricted by +01744 # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. +01745 +01746 MAX_DOT_GRAPH_DEPTH = 1000 +01747 +01748 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +01749 # background. This is disabled by default, because dot on Windows does not +01750 # seem to support this out of the box. Warning: Depending on the platform used, +01751 # enabling this option may lead to badly anti-aliased labels on the edges of +01752 # a graph (i.e. they become hard to read). +01753 +01754 DOT_TRANSPARENT = NO +01755 +01756 # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +01757 # files in one run (i.e. multiple -o and -T options on the command line). This +01758 # makes dot run faster, but since only newer versions of dot (>1.8.10) +01759 # support this, this feature is disabled by default. +01760 +01761 DOT_MULTI_TARGETS = NO +01762 +01763 # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +01764 # generate a legend page explaining the meaning of the various boxes and +01765 # arrows in the dot generated graphs. +01766 +01767 GENERATE_LEGEND = YES +01768 +01769 # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +01770 # remove the intermediate dot files that are used to generate +01771 # the various graphs. +01772 +01773 DOT_CLEANUP = YES +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTC_matrix_access: Access matrix rows and columns
+Definition in file matrix_access.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 #ifndef GLM_GTC_matrix_access +00038 #define GLM_GTC_matrix_access GLM_VERSION +00039 +00040 // Dependency: +00041 #include "../glm.hpp" +00042 +00043 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00044 # pragma message("GLM: GLM_GTC_matrix_access extension included") +00045 #endif +00046 +00047 namespace glm +00048 { +00051 +00054 template <typename genType> +00055 typename genType::row_type row( +00056 genType const & m, +00057 int index); +00058 +00061 template <typename genType> +00062 genType row( +00063 genType const & m, +00064 int index, +00065 typename genType::row_type const & x); +00066 +00069 template <typename genType> +00070 typename genType::col_type column( +00071 genType const & m, +00072 int index); +00073 +00076 template <typename genType> +00077 genType column( +00078 genType const & m, +00079 int index, +00080 typename genType::col_type const & x); +00081 +00083 }//namespace glm +00084 +00085 #include "matrix_access.inl" +00086 +00087 #endif//GLM_GTC_matrix_access +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_matrix_cross_product: Cross product matrix form
+Definition in file matrix_cross_product.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_matrix_cross_product +00040 #define GLM_GTX_matrix_cross_product GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 +00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00046 # pragma message("GLM: GLM_GTX_matrix_cross_product extension included") +00047 #endif +00048 +00049 namespace glm +00050 { +00053 +00056 template <typename T> +00057 detail::tmat3x3<T> matrixCross3( +00058 detail::tvec3<T> const & x); +00059 +00062 template <typename T> +00063 detail::tmat4x4<T> matrixCross4( +00064 detail::tvec3<T> const & x); +00065 +00067 }//namespace glm +00068 +00069 #include "matrix_cross_product.inl" +00070 +00071 #endif//GLM_GTX_matrix_cross_product +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTC_matrix_integer: Integer matrix types
+Definition in file matrix_integer.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 #ifndef GLM_GTC_matrix_integer +00038 #define GLM_GTC_matrix_integer GLM_VERSION +00039 +00040 // Dependency: +00041 #include "../glm.hpp" +00042 +00043 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00044 # pragma message("GLM: GLM_GTC_matrix_integer extension included") +00045 #endif +00046 +00047 namespace glm +00048 { +00051 +00054 typedef detail::tmat2x2<highp_int> highp_imat2; +00055 +00058 typedef detail::tmat3x3<highp_int> highp_imat3; +00059 +00062 typedef detail::tmat4x4<highp_int> highp_imat4; +00063 +00066 typedef detail::tmat2x2<highp_int> highp_imat2x2; +00067 +00070 typedef detail::tmat2x3<highp_int> highp_imat2x3; +00071 +00074 typedef detail::tmat2x4<highp_int> highp_imat2x4; +00075 +00078 typedef detail::tmat3x2<highp_int> highp_imat3x2; +00079 +00082 typedef detail::tmat3x3<highp_int> highp_imat3x3; +00083 +00086 typedef detail::tmat3x4<highp_int> highp_imat3x4; +00087 +00090 typedef detail::tmat4x2<highp_int> highp_imat4x2; +00091 +00094 typedef detail::tmat4x3<highp_int> highp_imat4x3; +00095 +00098 typedef detail::tmat4x4<highp_int> highp_imat4x4; +00099 +00100 +00103 typedef detail::tmat2x2<mediump_int> mediump_imat2; +00104 +00107 typedef detail::tmat3x3<mediump_int> mediump_imat3; +00108 +00111 typedef detail::tmat4x4<mediump_int> mediump_imat4; +00112 +00113 +00116 typedef detail::tmat2x2<mediump_int> mediump_imat2x2; +00117 +00120 typedef detail::tmat2x3<mediump_int> mediump_imat2x3; +00121 +00124 typedef detail::tmat2x4<mediump_int> mediump_imat2x4; +00125 +00128 typedef detail::tmat3x2<mediump_int> mediump_imat3x2; +00129 +00132 typedef detail::tmat3x3<mediump_int> mediump_imat3x3; +00133 +00136 typedef detail::tmat3x4<mediump_int> mediump_imat3x4; +00137 +00140 typedef detail::tmat4x2<mediump_int> mediump_imat4x2; +00141 +00144 typedef detail::tmat4x3<mediump_int> mediump_imat4x3; +00145 +00148 typedef detail::tmat4x4<mediump_int> mediump_imat4x4; +00149 +00150 +00153 typedef detail::tmat2x2<lowp_int> lowp_imat2; +00154 +00157 typedef detail::tmat3x3<lowp_int> lowp_imat3; +00158 +00161 typedef detail::tmat4x4<lowp_int> lowp_imat4; +00162 +00163 +00166 typedef detail::tmat2x2<lowp_int> lowp_imat2x2; +00167 +00170 typedef detail::tmat2x3<lowp_int> lowp_imat2x3; +00171 +00174 typedef detail::tmat2x4<lowp_int> lowp_imat2x4; +00175 +00178 typedef detail::tmat3x2<lowp_int> lowp_imat3x2; +00179 +00182 typedef detail::tmat3x3<lowp_int> lowp_imat3x3; +00183 +00186 typedef detail::tmat3x4<lowp_int> lowp_imat3x4; +00187 +00190 typedef detail::tmat4x2<lowp_int> lowp_imat4x2; +00191 +00194 typedef detail::tmat4x3<lowp_int> lowp_imat4x3; +00195 +00198 typedef detail::tmat4x4<lowp_int> lowp_imat4x4; +00199 +00200 +00203 typedef detail::tmat2x2<highp_uint> highp_umat2; +00204 +00207 typedef detail::tmat3x3<highp_uint> highp_umat3; +00208 +00211 typedef detail::tmat4x4<highp_uint> highp_umat4; +00212 +00215 typedef detail::tmat2x2<highp_uint> highp_umat2x2; +00216 +00219 typedef detail::tmat2x3<highp_uint> highp_umat2x3; +00220 +00223 typedef detail::tmat2x4<highp_uint> highp_umat2x4; +00224 +00227 typedef detail::tmat3x2<highp_uint> highp_umat3x2; +00228 +00231 typedef detail::tmat3x3<highp_uint> highp_umat3x3; +00232 +00235 typedef detail::tmat3x4<highp_uint> highp_umat3x4; +00236 +00239 typedef detail::tmat4x2<highp_uint> highp_umat4x2; +00240 +00243 typedef detail::tmat4x3<highp_uint> highp_umat4x3; +00244 +00247 typedef detail::tmat4x4<highp_uint> highp_umat4x4; +00248 +00249 +00252 typedef detail::tmat2x2<mediump_uint> mediump_umat2; +00253 +00256 typedef detail::tmat3x3<mediump_uint> mediump_umat3; +00257 +00260 typedef detail::tmat4x4<mediump_uint> mediump_umat4; +00261 +00262 +00265 typedef detail::tmat2x2<mediump_uint> mediump_umat2x2; +00266 +00269 typedef detail::tmat2x3<mediump_uint> mediump_umat2x3; +00270 +00273 typedef detail::tmat2x4<mediump_uint> mediump_umat2x4; +00274 +00277 typedef detail::tmat3x2<mediump_uint> mediump_umat3x2; +00278 +00281 typedef detail::tmat3x3<mediump_uint> mediump_umat3x3; +00282 +00285 typedef detail::tmat3x4<mediump_uint> mediump_umat3x4; +00286 +00289 typedef detail::tmat4x2<mediump_uint> mediump_umat4x2; +00290 +00293 typedef detail::tmat4x3<mediump_uint> mediump_umat4x3; +00294 +00297 typedef detail::tmat4x4<mediump_uint> mediump_umat4x4; +00298 +00299 +00302 typedef detail::tmat2x2<lowp_uint> lowp_umat2; +00303 +00306 typedef detail::tmat3x3<lowp_uint> lowp_umat3; +00307 +00310 typedef detail::tmat4x4<lowp_uint> lowp_umat4; +00311 +00312 +00315 typedef detail::tmat2x2<lowp_uint> lowp_umat2x2; +00316 +00319 typedef detail::tmat2x3<lowp_uint> lowp_umat2x3; +00320 +00323 typedef detail::tmat2x4<lowp_uint> lowp_umat2x4; +00324 +00327 typedef detail::tmat3x2<lowp_uint> lowp_umat3x2; +00328 +00331 typedef detail::tmat3x3<lowp_uint> lowp_umat3x3; +00332 +00335 typedef detail::tmat3x4<lowp_uint> lowp_umat3x4; +00336 +00339 typedef detail::tmat4x2<lowp_uint> lowp_umat4x2; +00340 +00343 typedef detail::tmat4x3<lowp_uint> lowp_umat4x3; +00344 +00347 typedef detail::tmat4x4<lowp_uint> lowp_umat4x4; +00348 +00349 #if(defined(GLM_PRECISION_HIGHP_INT)) +00350 typedef highp_imat2 imat2; +00351 typedef highp_imat3 imat3; +00352 typedef highp_imat4 imat4; +00353 typedef highp_imat2x2 imat2x2; +00354 typedef highp_imat2x3 imat2x3; +00355 typedef highp_imat2x4 imat2x4; +00356 typedef highp_imat3x2 imat3x2; +00357 typedef highp_imat3x3 imat3x3; +00358 typedef highp_imat3x4 imat3x4; +00359 typedef highp_imat4x2 imat4x2; +00360 typedef highp_imat4x3 imat4x3; +00361 typedef highp_imat4x4 imat4x4; +00362 #elif(defined(GLM_PRECISION_LOWP_INT)) +00363 typedef lowp_imat2 imat2; +00364 typedef lowp_imat3 imat3; +00365 typedef lowp_imat4 imat4; +00366 typedef lowp_imat2x2 imat2x2; +00367 typedef lowp_imat2x3 imat2x3; +00368 typedef lowp_imat2x4 imat2x4; +00369 typedef lowp_imat3x2 imat3x2; +00370 typedef lowp_imat3x3 imat3x3; +00371 typedef lowp_imat3x4 imat3x4; +00372 typedef lowp_imat4x2 imat4x2; +00373 typedef lowp_imat4x3 imat4x3; +00374 typedef lowp_imat4x4 imat4x4; +00375 #else //if(defined(GLM_PRECISION_MEDIUMP_INT)) +00376 +00379 typedef mediump_imat2 imat2; +00380 +00383 typedef mediump_imat3 imat3; +00384 +00387 typedef mediump_imat4 imat4; +00388 +00391 typedef mediump_imat2x2 imat2x2; +00392 +00395 typedef mediump_imat2x3 imat2x3; +00396 +00399 typedef mediump_imat2x4 imat2x4; +00400 +00403 typedef mediump_imat3x2 imat3x2; +00404 +00407 typedef mediump_imat3x3 imat3x3; +00408 +00411 typedef mediump_imat3x4 imat3x4; +00412 +00415 typedef mediump_imat4x2 imat4x2; +00416 +00419 typedef mediump_imat4x3 imat4x3; +00420 +00423 typedef mediump_imat4x4 imat4x4; +00424 #endif//GLM_PRECISION +00425 +00426 #if(defined(GLM_PRECISION_HIGHP_UINT)) +00427 typedef highp_umat2 umat2; +00428 typedef highp_umat3 umat3; +00429 typedef highp_umat4 umat4; +00430 typedef highp_umat2x2 umat2x2; +00431 typedef highp_umat2x3 umat2x3; +00432 typedef highp_umat2x4 umat2x4; +00433 typedef highp_umat3x2 umat3x2; +00434 typedef highp_umat3x3 umat3x3; +00435 typedef highp_umat3x4 umat3x4; +00436 typedef highp_umat4x2 umat4x2; +00437 typedef highp_umat4x3 umat4x3; +00438 typedef highp_umat4x4 umat4x4; +00439 #elif(defined(GLM_PRECISION_LOWP_UINT)) +00440 typedef lowp_umat2 umat2; +00441 typedef lowp_umat3 umat3; +00442 typedef lowp_umat4 umat4; +00443 typedef lowp_umat2x2 umat2x2; +00444 typedef lowp_umat2x3 umat2x3; +00445 typedef lowp_umat2x4 umat2x4; +00446 typedef lowp_umat3x2 umat3x2; +00447 typedef lowp_umat3x3 umat3x3; +00448 typedef lowp_umat3x4 umat3x4; +00449 typedef lowp_umat4x2 umat4x2; +00450 typedef lowp_umat4x3 umat4x3; +00451 typedef lowp_umat4x4 umat4x4; +00452 #else //if(defined(GLM_PRECISION_MEDIUMP_UINT)) +00453 +00456 typedef mediump_umat2 umat2; +00457 +00460 typedef mediump_umat3 umat3; +00461 +00464 typedef mediump_umat4 umat4; +00465 +00468 typedef mediump_umat2x2 umat2x2; +00469 +00472 typedef mediump_umat2x3 umat2x3; +00473 +00476 typedef mediump_umat2x4 umat2x4; +00477 +00480 typedef mediump_umat3x2 umat3x2; +00481 +00484 typedef mediump_umat3x3 umat3x3; +00485 +00488 typedef mediump_umat3x4 umat3x4; +00489 +00492 typedef mediump_umat4x2 umat4x2; +00493 +00496 typedef mediump_umat4x3 umat4x3; +00497 +00500 typedef mediump_umat4x4 umat4x4; +00501 #endif//GLM_PRECISION +00502 +00504 }//namespace glm +00505 +00506 #endif//GLM_GTC_matrix_integer +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_matrix_interpolation: Rotation and translation matrix interpolation
+Definition in file matrix_interpolation.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_matrix_interpolation +00039 #define GLM_GTX_matrix_interpolation GLM_VERSION +00040 +00041 // Dependency: +00042 //#include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_matrix_interpolation extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00052 +00055 template <typename T> +00056 void axisAngle( +00057 detail::tmat4x4<T> const & mat, +00058 detail::tvec3<T> & axis, +00059 T & angle); +00060 +00063 template <typename T> +00064 detail::tmat4x4<T> axisAngleMatrix( +00065 detail::tvec3<T> const & axis, +00066 T const angle); +00067 +00071 template <typename T> +00072 detail::tmat4x4<T> interpolate( +00073 detail::tmat4x4<T> const & m1, +00074 detail::tmat4x4<T> const & m2, +00075 T const delta); +00076 +00078 }//namespace glm +00079 +00080 #include "matrix_interpolation.inl" +00081 +00082 #endif//GLM_GTX_matrix_interpolation +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTC_matrix_inverse: Additional matrix inverse function
+Definition in file matrix_inverse.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 #ifndef GLM_GTC_matrix_inverse +00038 #define GLM_GTC_matrix_inverse GLM_VERSION +00039 +00040 // Dependency: +00041 #include "../glm.hpp" +00042 +00043 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00044 # pragma message("GLM: GLM_GTC_matrix_inverse extension included") +00045 #endif +00046 +00047 namespace glm +00048 { +00051 +00057 template <typename genType> +00058 genType affineInverse(genType const & m); +00059 +00065 template <typename genType> +00066 GLM_FUNC_QUALIFIER typename genType::value_type inverseTranspose( +00067 genType const & m); +00068 +00070 }//namespace glm +00071 +00072 #include "matrix_inverse.inl" +00073 +00074 #endif//GLM_GTC_matrix_inverse +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_matrix_major_storage: Build matrix
+Definition in file matrix_major_storage.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_matrix_major_storage +00040 #define GLM_GTX_matrix_major_storage GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 +00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00046 # pragma message("GLM: GLM_GTX_matrix_major_storage extension included") +00047 #endif +00048 +00049 namespace glm +00050 { +00053 +00056 template <typename T> +00057 detail::tmat2x2<T> rowMajor2( +00058 detail::tvec2<T> const & v1, +00059 detail::tvec2<T> const & v2); +00060 +00063 template <typename T> +00064 detail::tmat2x2<T> rowMajor2( +00065 detail::tmat2x2<T> const & m); +00066 +00069 template <typename T> +00070 detail::tmat3x3<T> rowMajor3( +00071 detail::tvec3<T> const & v1, +00072 detail::tvec3<T> const & v2, +00073 detail::tvec3<T> const & v3); +00074 +00077 template <typename T> +00078 detail::tmat3x3<T> rowMajor3( +00079 detail::tmat3x3<T> const & m); +00080 +00083 template <typename T> +00084 detail::tmat4x4<T> rowMajor4( +00085 detail::tvec4<T> const & v1, +00086 detail::tvec4<T> const & v2, +00087 detail::tvec4<T> const & v3, +00088 detail::tvec4<T> const & v4); +00089 +00092 template <typename T> +00093 detail::tmat4x4<T> rowMajor4( +00094 detail::tmat4x4<T> const & m); +00095 +00098 template <typename T> +00099 detail::tmat2x2<T> colMajor2( +00100 detail::tvec2<T> const & v1, +00101 detail::tvec2<T> const & v2); +00102 +00105 template <typename T> +00106 detail::tmat2x2<T> colMajor2( +00107 detail::tmat2x2<T> const & m); +00108 +00111 template <typename T> +00112 detail::tmat3x3<T> colMajor3( +00113 detail::tvec3<T> const & v1, +00114 detail::tvec3<T> const & v2, +00115 detail::tvec3<T> const & v3); +00116 +00119 template <typename T> +00120 detail::tmat3x3<T> colMajor3( +00121 detail::tmat3x3<T> const & m); +00122 +00125 template <typename T> +00126 detail::tmat4x4<T> colMajor4( +00127 detail::tvec4<T> const & v1, +00128 detail::tvec4<T> const & v2, +00129 detail::tvec4<T> const & v3, +00130 detail::tvec4<T> const & v4); +00131 +00134 template <typename T> +00135 detail::tmat4x4<T> colMajor4( +00136 detail::tmat4x4<T> const & m); +00137 +00139 }//namespace glm +00140 +00141 #include "matrix_major_storage.inl" +00142 +00143 #endif//GLM_GTX_matrix_major_storage +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_matrix_operation: Extended matrix operations
+Definition in file matrix_operation.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_matrix_operation +00039 #define GLM_GTX_matrix_operation GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_matrix_operation extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00052 +00055 template <typename valType> +00056 detail::tmat2x2<valType> diagonal2x2( +00057 detail::tvec2<valType> const & v); +00058 +00061 template <typename valType> +00062 detail::tmat2x3<valType> diagonal2x3( +00063 detail::tvec2<valType> const & v); +00064 +00067 template <typename valType> +00068 detail::tmat2x4<valType> diagonal2x4( +00069 detail::tvec2<valType> const & v); +00070 +00073 template <typename valType> +00074 detail::tmat3x2<valType> diagonal3x2( +00075 detail::tvec2<valType> const & v); +00076 +00079 template <typename valType> +00080 detail::tmat3x3<valType> diagonal3x3( +00081 detail::tvec3<valType> const & v); +00082 +00085 template <typename valType> +00086 detail::tmat3x4<valType> diagonal3x4( +00087 detail::tvec3<valType> const & v); +00088 +00091 template <typename valType> +00092 detail::tmat4x2<valType> diagonal4x2( +00093 detail::tvec2<valType> const & v); +00094 +00097 template <typename valType> +00098 detail::tmat4x3<valType> diagonal4x3( +00099 detail::tvec3<valType> const & v); +00100 +00103 template <typename valType> +00104 detail::tmat4x4<valType> diagonal4x4( +00105 detail::tvec4<valType> const & v); +00106 +00108 }//namespace glm +00109 +00110 #include "matrix_operation.inl" +00111 +00112 #endif//GLM_GTX_matrix_operation +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_matrix_query: Query matrix properties
+Definition in file matrix_query.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_matrix_query +00040 #define GLM_GTX_matrix_query GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 #include "../gtx/vector_query.hpp" +00045 #include <limits> +00046 +00047 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00048 # pragma message("GLM: GLM_GTX_matrix_query extension included") +00049 #endif +00050 +00051 namespace glm +00052 { +00055 +00058 template<typename T> +00059 bool isNull( +00060 detail::tmat2x2<T> const & m, +00061 T const & epsilon/* = std::numeric_limits<T>::epsilon()*/); +00062 +00065 template<typename T> +00066 bool isNull( +00067 detail::tmat3x3<T> const & m, +00068 T const & epsilon/* = std::numeric_limits<T>::epsilon()*/); +00069 +00072 template<typename T> +00073 bool isNull( +00074 detail::tmat4x4<T> const & m, +00075 T const & epsilon/* = std::numeric_limits<T>::epsilon()*/); +00076 +00079 template<typename genType> +00080 bool isIdentity( +00081 genType const & m, +00082 typename genType::value_type const & epsilon/* = std::numeric_limits<typename genType::value_type>::epsilon()*/); +00083 +00086 template<typename valType> +00087 bool isNormalized( +00088 detail::tmat2x2<valType> const & m, +00089 valType const & epsilon/* = std::numeric_limits<valType>::epsilon()*/); +00090 +00093 template<typename valType> +00094 bool isNormalized( +00095 detail::tmat3x3<valType> const & m, +00096 valType const & epsilon/* = std::numeric_limits<valType>::epsilon()*/); +00097 +00100 template<typename valType> +00101 bool isNormalized( +00102 detail::tmat4x4<valType> const & m, +00103 valType const & epsilon/* = std::numeric_limits<valType>::epsilon()*/); +00104 +00107 template<typename valType, template <typename> class matType> +00108 bool isOrthogonal( +00109 matType<valType> const & m, +00110 valType const & epsilon/* = std::numeric_limits<genType>::epsilon()*/); +00111 +00113 }//namespace glm +00114 +00115 #include "matrix_query.inl" +00116 +00117 #endif//GLM_GTX_matrix_query +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTC_matrix_transform: Matrix transform functions
+Definition in file matrix_transform.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 +00040 +00041 +00042 +00043 +00044 +00045 +00046 #ifndef GLM_GTC_matrix_transform +00047 #define GLM_GTC_matrix_transform GLM_VERSION +00048 +00049 // Dependency: +00050 #include "../glm.hpp" +00051 +00052 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00053 # pragma message("GLM: GLM_GTC_matrix_transform extension included") +00054 #endif +00055 +00056 namespace glm +00057 { +00060 +00081 template <typename T> +00082 detail::tmat4x4<T> translate( +00083 detail::tmat4x4<T> const & m, +00084 detail::tvec3<T> const & v); +00085 +00097 template <typename T> +00098 detail::tmat4x4<T> rotate( +00099 detail::tmat4x4<T> const & m, +00100 T const & angle, +00101 detail::tvec3<T> const & axis); +00102 +00113 template <typename T> +00114 detail::tmat4x4<T> scale( +00115 detail::tmat4x4<T> const & m, +00116 detail::tvec3<T> const & v); +00117 +00129 template <typename T> +00130 detail::tmat4x4<T> ortho( +00131 T const & left, +00132 T const & right, +00133 T const & bottom, +00134 T const & top, +00135 T const & zNear, +00136 T const & zFar); +00137 +00147 template <typename T> +00148 detail::tmat4x4<T> ortho( +00149 T const & left, +00150 T const & right, +00151 T const & bottom, +00152 T const & top); +00153 +00164 template <typename T> +00165 detail::tmat4x4<T> frustum( +00166 T const & left, +00167 T const & right, +00168 T const & bottom, +00169 T const & top, +00170 T const & near, +00171 T const & far); +00172 +00181 template <typename T> +00182 detail::tmat4x4<T> perspective( +00183 T const & fovy, +00184 T const & aspect, +00185 T const & near, +00186 T const & far); +00187 +00197 template <typename valType> +00198 detail::tmat4x4<valType> perspectiveFov( +00199 valType const & fov, +00200 valType const & width, +00201 valType const & height, +00202 valType const & near, +00203 valType const & far); +00204 +00212 template <typename T> +00213 detail::tmat4x4<T> infinitePerspective( +00214 T fovy, T aspect, T near); +00215 +00223 template <typename T> +00224 detail::tmat4x4<T> tweakedInfinitePerspective( +00225 T fovy, T aspect, T near); +00226 +00236 template <typename T, typename U> +00237 detail::tvec3<T> project( +00238 detail::tvec3<T> const & obj, +00239 detail::tmat4x4<T> const & model, +00240 detail::tmat4x4<T> const & proj, +00241 detail::tvec4<U> const & viewport); +00242 +00252 template <typename T, typename U> +00253 detail::tvec3<T> unProject( +00254 detail::tvec3<T> const & win, +00255 detail::tmat4x4<T> const & model, +00256 detail::tmat4x4<T> const & proj, +00257 detail::tvec4<U> const & viewport); +00258 +00267 template <typename T, typename U> +00268 detail::tmat4x4<T> pickMatrix( +00269 detail::tvec2<T> const & center, +00270 detail::tvec2<T> const & delta, +00271 detail::tvec4<U> const & viewport); +00272 +00280 template <typename T> +00281 detail::tmat4x4<T> lookAt( +00282 detail::tvec3<T> const & eye, +00283 detail::tvec3<T> const & center, +00284 detail::tvec3<T> const & up); +00285 +00287 }//namespace glm +00288 +00289 #include "matrix_transform.inl" +00290 +00291 #endif//GLM_GTC_matrix_transform +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_mixed_producte: Mixed product
+Definition in file mixed_product.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_mixed_product +00039 #define GLM_GTX_mixed_product GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_mixed_product extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00052 +00054 template <typename valType> +00055 valType mixedProduct( +00056 detail::tvec3<valType> const & v1, +00057 detail::tvec3<valType> const & v2, +00058 detail::tvec3<valType> const & v3); +00059 +00061 }// namespace glm +00062 +00063 #include "mixed_product.inl" +00064 +00065 #endif//GLM_GTX_mixed_product +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file multiple.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_multiple +00040 #define GLM_GTX_multiple GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 +00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00046 # pragma message("GLM: GLM_GTX_multiple extension included") +00047 #endif +00048 +00049 namespace glm +00050 { +00053 +00056 template <typename genType> +00057 genType higherMultiple( +00058 genType const & Source, +00059 genType const & Multiple); +00060 +00063 template <typename genType> +00064 genType lowerMultiple( +00065 genType const & Source, +00066 genType const & Multiple); +00067 +00069 }//namespace glm +00070 +00071 #include "multiple.inl" +00072 +00073 #endif//GLM_GTX_multiple +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTC_noise: Procedural noise functions
+Definition in file gtc/noise.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 +00040 +00041 #ifndef GLM_GTC_noise +00042 #define GLM_GTC_noise GLM_VERSION +00043 +00044 // Dependency: +00045 #include "../glm.hpp" +00046 +00047 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00048 # pragma message("GLM: GLM_GTC_noise extension included") +00049 #endif +00050 +00051 namespace glm +00052 { +00055 +00058 template <typename T, template<typename> class vecType> +00059 T perlin( +00060 vecType<T> const & p); +00061 +00064 template <typename T, template<typename> class vecType> +00065 T perlin( +00066 vecType<T> const & p, +00067 vecType<T> const & rep); +00068 +00071 template <typename T, template<typename> class vecType> +00072 T simplex( +00073 vecType<T> const & p); +00074 +00076 }//namespace glm +00077 +00078 #include "noise.inl" +00079 +00080 #endif//GLM_GTC_noise +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_noise: Procedural noise functions
+Definition in file gtx/noise.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 +00040 +00041 +00042 #ifndef GLM_GTX_noise +00043 #define GLM_GTX_noise GLM_VERSION +00044 +00045 // Dependency: +00046 #include "../glm.hpp" +00047 #include "../gtc/noise.hpp" +00048 +00049 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00050 # pragma message("GLM: GLM_GTX_noise extension included") +00051 #endif +00052 +00053 namespace glm +00054 { +00057 +00059 }//namespace glm +00060 +00061 #include "noise.inl" +00062 +00063 #endif//glm_gtx_noise +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_norm: Vector norm calculations
+Definition in file norm.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_norm +00040 #define GLM_GTX_norm GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 #include "../gtx/quaternion.hpp" +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_GTX_norm extension included") +00048 #endif +00049 +00050 namespace glm +00051 { +00054 +00057 template <typename T> +00058 T length2( +00059 T const & x); +00060 +00063 template <typename genType> +00064 typename genType::value_type length2( +00065 genType const & x); +00066 +00069 template <typename T> +00070 T length2( +00071 detail::tquat<T> const & q); +00072 +00075 template <typename T> +00076 T distance2( +00077 T const & p0, +00078 T const & p1); +00079 +00082 template <typename genType> +00083 typename genType::value_type distance2( +00084 genType const & p0, +00085 genType const & p1); +00086 +00089 template <typename T> +00090 T l1Norm( +00091 detail::tvec3<T> const & x, +00092 detail::tvec3<T> const & y); +00093 +00096 template <typename T> +00097 T l1Norm( +00098 detail::tvec3<T> const & v); +00099 +00102 template <typename T> +00103 T l2Norm( +00104 detail::tvec3<T> const & x, +00105 detail::tvec3<T> const & y); +00106 +00109 template <typename T> +00110 T l2Norm( +00111 detail::tvec3<T> const & x); +00112 +00115 template <typename T> +00116 T lxNorm( +00117 detail::tvec3<T> const & x, +00118 detail::tvec3<T> const & y, +00119 unsigned int Depth); +00120 +00123 template <typename T> +00124 T lxNorm( +00125 detail::tvec3<T> const & x, +00126 unsigned int Depth); +00127 +00129 }//namespace glm +00130 +00131 #include "norm.inl" +00132 +00133 #endif//GLM_GTX_norm +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_normal: Compute normals
+Definition in file normal.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_normal +00040 #define GLM_GTX_normal GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 +00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00046 # pragma message("GLM: GLM_GTX_normal extension included") +00047 #endif +00048 +00049 namespace glm +00050 { +00053 +00056 template <typename T> +00057 detail::tvec3<T> triangleNormal( +00058 detail::tvec3<T> const & p1, +00059 detail::tvec3<T> const & p2, +00060 detail::tvec3<T> const & p3); +00061 +00063 }//namespace glm +00064 +00065 #include "normal.inl" +00066 +00067 #endif//GLM_GTX_normal +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_normalize_dot: Normalize dot product
+Definition in file normalize_dot.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_normalize_dot +00040 #define GLM_GTX_normalize_dot GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 #include "../gtx/fast_square_root.hpp" +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_GTX_normalize_dot extension included") +00048 #endif +00049 +00050 namespace glm +00051 { +00054 +00058 template <typename genType> +00059 typename genType::value_type normalizeDot( +00060 genType const & x, +00061 genType const & y); +00062 +00066 template <typename genType> +00067 typename genType::value_type fastNormalizeDot( +00068 genType const & x, +00069 genType const & y); +00070 +00072 }//namespace glm +00073 +00074 #include "normalize_dot.inl" +00075 +00076 #endif//GLM_GTX_normalize_dot +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_number_precision: Number precision
+Definition in file number_precision.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 +00040 #ifndef GLM_GTX_number_precision +00041 #define GLM_GTX_number_precision GLM_VERSION +00042 +00043 // Dependency: +00044 #include "../glm.hpp" +00045 #include "../gtc/type_precision.hpp" +00046 +00047 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00048 # pragma message("GLM: GLM_GTX_number_precision extension included") +00049 #endif +00050 +00051 namespace glm{ +00052 namespace gtx +00053 { +00055 // Unsigned int vector types +00056 +00059 +00060 typedef u8 u8vec1; +00061 typedef u16 u16vec1; +00062 typedef u32 u32vec1; +00063 typedef u64 u64vec1; +00064 +00066 // Float vector types +00067 +00068 typedef f16 f16vec1; +00069 typedef f32 f32vec1; +00070 typedef f64 f64vec1; +00071 +00073 // Float matrix types +00074 +00075 typedef f16 f16mat1; +00076 typedef f16 f16mat1x1; +00077 typedef f32 f32mat1; +00078 typedef f32 f32mat1x1; +00079 typedef f64 f64mat1; +00080 typedef f64 f64mat1x1; +00081 +00083 }//namespace gtx +00084 }//namespace glm +00085 +00086 #include "number_precision.inl" +00087 +00088 #endif//GLM_GTX_number_precision +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_ocl_type: OpenCL types
+Definition in file ocl_type.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_ocl_type +00040 #define GLM_GTX_ocl_type GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 +00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00046 # pragma message("GLM: GLM_GTX_ocl_type extension included") +00047 #endif +00048 +00049 namespace glm{ +00050 namespace gtx +00051 { +00053 // Scalar types +00054 +00057 +00058 typedef detail::int8 cl_char; +00059 typedef detail::int16 cl_short; +00060 typedef detail::int32 cl_int; +00061 typedef detail::int64 cl_long; +00062 +00063 typedef detail::uint8 cl_uchar; +00064 typedef detail::uint16 cl_ushort; +00065 typedef detail::uint32 cl_uint; +00066 typedef detail::uint64 cl_ulong; +00067 +00068 typedef detail::float16 cl_half; +00069 typedef detail::float32 cl_float; +00070 +00071 +00072 typedef detail::int8 cl_char1; +00073 typedef detail::int16 cl_short1; +00074 typedef detail::int32 cl_int1; +00075 typedef detail::int64 cl_long1; +00076 +00077 typedef detail::uint8 cl_uchar1; +00078 typedef detail::uint16 cl_ushort1; +00079 typedef detail::uint32 cl_uint1; +00080 typedef detail::uint64 cl_ulong1; +00081 +00082 //typedef detail::float16 cl_half1; //!< \brief Half-precision floating-point scalar. (from GLM_GTX_ocl_type extension) +00083 typedef detail::float32 cl_float1; +00084 +00085 +00086 typedef detail::tvec2<detail::int8> cl_char2; +00087 typedef detail::tvec2<detail::int16> cl_short2; +00088 typedef detail::tvec2<detail::int32> cl_int2; +00089 typedef detail::tvec2<detail::int64> cl_long2; +00090 +00091 typedef detail::tvec2<detail::uint8> cl_uchar2; +00092 typedef detail::tvec2<detail::uint16> cl_ushort2; +00093 typedef detail::tvec2<detail::uint32> cl_uint2; +00094 typedef detail::tvec2<detail::uint64> cl_ulong2; +00095 +00096 //typedef detail::tvec2<detail::float16> cl_half2; //!< \brief Half-precision floating-point scalar. (from GLM_GTX_ocl_type extension) +00097 typedef detail::tvec2<detail::float32> cl_float2; +00098 +00099 +00100 typedef detail::tvec3<detail::int8> cl_char3; +00101 typedef detail::tvec3<detail::int16> cl_short3; +00102 typedef detail::tvec3<detail::int32> cl_int3; +00103 typedef detail::tvec3<detail::int64> cl_long3; +00104 +00105 typedef detail::tvec3<detail::uint8> cl_uchar3; +00106 typedef detail::tvec3<detail::uint16> cl_ushort3; +00107 typedef detail::tvec3<detail::uint32> cl_uint3; +00108 typedef detail::tvec3<detail::uint64> cl_ulong3; +00109 +00110 //typedef detail::tvec3<detail::float16> cl_half3; //!< \brief Half-precision floating-point scalar. (from GLM_GTX_ocl_type extension) +00111 typedef detail::tvec3<detail::float32> cl_float3; +00112 +00113 +00114 typedef detail::tvec4<detail::int8> cl_char4; +00115 typedef detail::tvec4<detail::int16> cl_short4; +00116 typedef detail::tvec4<detail::int32> cl_int4; +00117 typedef detail::tvec4<detail::int64> cl_long4; +00118 typedef detail::tvec4<detail::uint8> cl_uchar4; +00119 typedef detail::tvec4<detail::uint16> cl_ushort4; +00120 typedef detail::tvec4<detail::uint32> cl_uint4; +00121 typedef detail::tvec4<detail::uint64> cl_ulong4; +00122 +00123 //typedef detail::tvec4<detail::float16> cl_half4; //!< \brief Half-precision floating-point scalar. (from GLM_GTX_ocl_type extension) +00124 typedef detail::tvec4<detail::float32> cl_float4; +00125 +00127 }//namespace gtx +00128 }//namespace glm +00129 +00130 #include "ocl_type.inl" +00131 +00132 #endif//GLM_GTX_ocl_type +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_optimum_pow: Optimum pow
+Definition in file optimum_pow.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_optimum_pow +00039 #define GLM_GTX_optimum_pow GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_optimum_pow extension included") +00046 #endif +00047 +00048 namespace glm{ +00049 namespace gtx +00050 { +00053 +00056 template <typename genType> +00057 genType pow2(const genType& x); +00058 +00061 template <typename genType> +00062 genType pow3(const genType& x); +00063 +00066 template <typename genType> +00067 genType pow4(const genType& x); +00068 +00071 bool powOfTwo(int num); +00072 +00075 detail::tvec2<bool> powOfTwo(const detail::tvec2<int>& x); +00076 +00079 detail::tvec3<bool> powOfTwo(const detail::tvec3<int>& x); +00080 +00083 detail::tvec4<bool> powOfTwo(const detail::tvec4<int>& x); +00084 +00086 }//namespace gtx +00087 }//namespace glm +00088 +00089 #include "optimum_pow.inl" +00090 +00091 #endif//GLM_GTX_optimum_pow +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_orthonormalize: Orthonormalize
+Definition in file orthonormalize.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_orthonormalize +00040 #define GLM_GTX_orthonormalize GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 +00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00046 # pragma message("GLM: GLM_GTX_orthonormalize extension included") +00047 #endif +00048 +00049 namespace glm +00050 { +00053 +00056 template <typename T> +00057 detail::tmat3x3<T> orthonormalize( +00058 const detail::tmat3x3<T>& m); +00059 +00062 template <typename T> +00063 detail::tvec3<T> orthonormalize( +00064 const detail::tvec3<T>& x, +00065 const detail::tvec3<T>& y); +00066 +00068 }//namespace glm +00069 +00070 #include "orthonormalize.inl" +00071 +00072 #endif//GLM_GTX_orthonormalize +
+ + + + + + + |
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_perpendicular: Perpendicular
+Definition in file perpendicular.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_perpendicular +00040 #define GLM_GTX_perpendicular GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 #include "../gtx/projection.hpp" +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_GTX_perpendicular extension included") +00048 #endif +00049 +00050 namespace glm +00051 { +00054 +00057 template <typename vecType> +00058 vecType perp( +00059 vecType const & x, +00060 vecType const & Normal); +00061 +00063 }//namespace glm +00064 +00065 #include "perpendicular.inl" +00066 +00067 #endif//GLM_GTX_perpendicular +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_polar_coordinates: Polar coordinates
+Definition in file polar_coordinates.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_polar_coordinates +00039 #define GLM_GTX_polar_coordinates GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_polar_coordinates extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00052 +00055 template <typename T> +00056 detail::tvec3<T> polar( +00057 detail::tvec3<T> const & euclidean); +00058 +00061 template <typename T> +00062 detail::tvec3<T> euclidean( +00063 detail::tvec3<T> const & polar); +00064 +00066 }//namespace glm +00067 +00068 #include "polar_coordinates.inl" +00069 +00070 #endif//GLM_GTX_polar_coordinates +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_projection: Projection
+Definition in file projection.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_projection +00039 #define GLM_GTX_projection GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_projection extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00052 +00055 template <typename vecType> +00056 vecType proj( +00057 vecType const & x, +00058 vecType const & Normal); +00059 +00061 }//namespace glm +00062 +00063 #include "projection.inl" +00064 +00065 #endif//GLM_GTX_projection +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTC_quaternion: Quaternion types and functions
+Definition in file gtc/quaternion.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTC_quaternion +00040 #define GLM_GTC_quaternion GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 #include "../gtc/half_float.hpp" +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_GTC_quaternion extension included") +00048 #endif +00049 +00050 namespace glm{ +00051 namespace detail +00052 { +00056 template <typename T> +00057 struct tquat// : public genType<T, tquat> +00058 { +00059 enum ctor{null}; +00060 +00061 typedef T value_type; +00062 typedef std::size_t size_type; +00063 +00064 public: +00065 value_type x, y, z, w; +00066 +00067 GLM_FUNC_DECL size_type length() const; +00068 +00069 // Constructors +00070 tquat(); +00071 explicit tquat( +00072 value_type const & s, +00073 glm::detail::tvec3<T> const & v); +00074 explicit tquat( +00075 value_type const & w, +00076 value_type const & x, +00077 value_type const & y, +00078 value_type const & z); +00079 +00080 // Convertions +00081 //explicit tquat(valType const & pitch, valType const & yaw, valType const & roll); +00083 explicit tquat( +00084 tvec3<T> const & eulerAngles); +00085 explicit tquat( +00086 tmat3x3<T> const & m); +00087 explicit tquat( +00088 tmat4x4<T> const & m); +00089 +00090 // Accesses +00091 value_type & operator[](int i); +00092 value_type const & operator[](int i) const; +00093 +00094 // Operators +00095 tquat<T> & operator*=(value_type const & s); +00096 tquat<T> & operator/=(value_type const & s); +00097 }; +00098 +00099 template <typename T> +00100 detail::tquat<T> operator- ( +00101 detail::tquat<T> const & q); +00102 +00103 template <typename T> +00104 detail::tquat<T> operator+ ( +00105 detail::tquat<T> const & q, +00106 detail::tquat<T> const & p); +00107 +00108 template <typename T> +00109 detail::tquat<T> operator* ( +00110 detail::tquat<T> const & q, +00111 detail::tquat<T> const & p); +00112 +00113 template <typename T> +00114 detail::tvec3<T> operator* ( +00115 detail::tquat<T> const & q, +00116 detail::tvec3<T> const & v); +00117 +00118 template <typename T> +00119 detail::tvec3<T> operator* ( +00120 detail::tvec3<T> const & v, +00121 detail::tquat<T> const & q); +00122 +00123 template <typename T> +00124 detail::tvec4<T> operator* ( +00125 detail::tquat<T> const & q, +00126 detail::tvec4<T> const & v); +00127 +00128 template <typename T> +00129 detail::tvec4<T> operator* ( +00130 detail::tvec4<T> const & v, +00131 detail::tquat<T> const & q); +00132 +00133 template <typename T> +00134 detail::tquat<T> operator* ( +00135 detail::tquat<T> const & q, +00136 typename detail::tquat<T>::value_type const & s); +00137 +00138 template <typename T> +00139 detail::tquat<T> operator* ( +00140 typename detail::tquat<T>::value_type const & s, +00141 detail::tquat<T> const & q); +00142 +00143 template <typename T> +00144 detail::tquat<T> operator/ ( +00145 detail::tquat<T> const & q, +00146 typename detail::tquat<T>::value_type const & s); +00147 +00148 } //namespace detail +00149 +00152 +00156 template <typename T> +00157 T length( +00158 detail::tquat<T> const & q); +00159 +00163 template <typename T> +00164 detail::tquat<T> normalize( +00165 detail::tquat<T> const & q); +00166 +00170 template <typename T> +00171 T dot( +00172 detail::tquat<T> const & q1, +00173 detail::tquat<T> const & q2); +00174 +00178 template <typename T> +00179 detail::tquat<T> mix( +00180 detail::tquat<T> const & x, +00181 detail::tquat<T> const & y, +00182 T const & a); +00183 +00187 template <typename T> +00188 detail::tquat<T> conjugate( +00189 detail::tquat<T> const & q); +00190 +00194 template <typename T> +00195 detail::tquat<T> inverse( +00196 detail::tquat<T> const & q); +00197 +00201 template <typename T> +00202 detail::tquat<T> rotate( +00203 detail::tquat<T> const & q, +00204 typename detail::tquat<T>::value_type const & angle, +00205 detail::tvec3<T> const & v); +00206 +00210 template <typename T> +00211 detail::tmat3x3<T> mat3_cast( +00212 detail::tquat<T> const & x); +00213 +00217 template <typename T> +00218 detail::tmat4x4<T> mat4_cast( +00219 detail::tquat<T> const & x); +00220 +00224 template <typename T> +00225 detail::tquat<T> quat_cast( +00226 detail::tmat3x3<T> const & x); +00227 +00231 template <typename T> +00232 detail::tquat<T> quat_cast( +00233 detail::tmat4x4<T> const & x); +00234 +00238 typedef detail::tquat<float> quat; +00239 +00243 typedef detail::tquat<detail::half> hquat; +00244 +00248 typedef detail::tquat<float> fquat; +00249 +00253 typedef detail::tquat<double> dquat; +00254 +00258 typedef detail::tquat<lowp_float> lowp_quat; +00259 +00263 typedef detail::tquat<mediump_float> mediump_quat; +00264 +00268 typedef detail::tquat<highp_float> highp_quat; +00269 +00271 } //namespace glm +00272 +00273 #include "quaternion.inl" +00274 +00275 #endif//GLM_GTC_quaternion +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_quaternion: Extented quaternion types and functions
+Definition in file gtx/quaternion.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_quaternion +00040 #define GLM_GTX_quaternion GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 #include "../gtc/quaternion.hpp" +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_GTX_quaternion extension included") +00048 #endif +00049 +00050 namespace glm +00051 { +00054 +00057 template <typename valType> +00058 detail::tvec3<valType> cross( +00059 detail::tquat<valType> const & q, +00060 detail::tvec3<valType> const & v); +00061 +00064 template <typename valType> +00065 detail::tvec3<valType> cross( +00066 detail::tvec3<valType> const & v, +00067 detail::tquat<valType> const & q); +00068 +00072 template <typename valType> +00073 detail::tquat<valType> squad( +00074 detail::tquat<valType> const & q1, +00075 detail::tquat<valType> const & q2, +00076 detail::tquat<valType> const & s1, +00077 detail::tquat<valType> const & s2, +00078 valType const & h); +00079 +00082 template <typename valType> +00083 detail::tquat<valType> intermediate( +00084 detail::tquat<valType> const & prev, +00085 detail::tquat<valType> const & curr, +00086 detail::tquat<valType> const & next); +00087 +00090 template <typename valType> +00091 detail::tquat<valType> exp( +00092 detail::tquat<valType> const & q, +00093 valType const & exponent); +00094 +00097 template <typename valType> +00098 detail::tquat<valType> log( +00099 detail::tquat<valType> const & q); +00100 +00103 template <typename valType> +00104 detail::tquat<valType> pow( +00105 detail::tquat<valType> const & x, +00106 valType const & y); +00107 +00110 //template <typename valType> +00111 //detail::tquat<valType> sqrt( +00112 // detail::tquat<valType> const & q); +00113 +00116 template <typename valType> +00117 detail::tvec3<valType> rotate( +00118 detail::tquat<valType> const & q, +00119 detail::tvec3<valType> const & v); +00120 +00123 template <typename valType> +00124 detail::tvec4<valType> rotate( +00125 detail::tquat<valType> const & q, +00126 detail::tvec4<valType> const & v); +00127 +00130 template <typename valType> +00131 valType angle( +00132 detail::tquat<valType> const & x); +00133 +00136 template <typename valType> +00137 detail::tvec3<valType> axis( +00138 detail::tquat<valType> const & x); +00139 +00142 template <typename valType> +00143 detail::tquat<valType> angleAxis( +00144 valType const & angle, +00145 valType const & x, +00146 valType const & y, +00147 valType const & z); +00148 +00151 template <typename valType> +00152 detail::tquat<valType> angleAxis( +00153 valType const & angle, +00154 detail::tvec3<valType> const & axis); +00155 +00158 template <typename valType> +00159 valType extractRealComponent( +00160 detail::tquat<valType> const & q); +00161 +00164 template <typename valType> +00165 valType roll( +00166 detail::tquat<valType> const & x); +00167 +00170 template <typename valType> +00171 valType pitch( +00172 detail::tquat<valType> const & x); +00173 +00176 template <typename valType> +00177 valType yaw( +00178 detail::tquat<valType> const & x); +00179 +00182 template <typename valType> +00183 detail::tvec3<valType> eulerAngles( +00184 detail::tquat<valType> const & x); +00185 +00188 template <typename valType> +00189 detail::tmat3x3<valType> toMat3( +00190 detail::tquat<valType> const & x){return mat3_cast(x);} +00191 +00194 template <typename valType> +00195 detail::tmat4x4<valType> toMat4( +00196 detail::tquat<valType> const & x){return mat4_cast(x);} +00197 +00200 template <typename valType> +00201 detail::tquat<valType> toQuat( +00202 detail::tmat3x3<valType> const & x){return quat_cast(x);} +00203 +00206 template <typename valType> +00207 detail::tquat<valType> toQuat( +00208 detail::tmat4x4<valType> const & x){return quat_cast(x);} +00209 +00212 template <typename T> +00213 detail::tquat<T> shortMix( +00214 detail::tquat<T> const & x, +00215 detail::tquat<T> const & y, +00216 T const & a); +00217 +00220 template <typename T> +00221 detail::tquat<T> fastMix( +00222 detail::tquat<T> const & x, +00223 detail::tquat<T> const & y, +00224 T const & a); +00225 +00227 }//namespace glm +00228 +00229 #include "quaternion.inl" +00230 +00231 #endif//GLM_GTX_quaternion +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTC_random: Random number generation
+Definition in file gtc/random.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 +00040 #ifndef GLM_GTC_random +00041 #define GLM_GTC_random GLM_VERSION +00042 +00043 // Dependency: +00044 #include "../glm.hpp" +00045 #include "../gtc/half_float.hpp" +00046 +00047 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00048 # pragma message("GLM: GLM_GTC_random extension included") +00049 #endif +00050 +00051 namespace glm +00052 { +00055 +00062 template <typename genType> +00063 genType linearRand( +00064 genType const & Min, +00065 genType const & Max); +00066 +00072 template <typename genType> +00073 genType gaussRand( +00074 genType const & Mean, +00075 genType const & Deviation); +00076 +00081 template <typename T> +00082 detail::tvec2<T> circularRand( +00083 T const & Radius); +00084 +00089 template <typename T> +00090 detail::tvec3<T> sphericalRand( +00091 T const & Radius); +00092 +00097 template <typename T> +00098 detail::tvec2<T> diskRand( +00099 T const & Radius); +00100 +00105 template <typename T> +00106 GLM_FUNC_QUALIFIER detail::tvec3<T> ballRand( +00107 T const & Radius); +00108 +00110 }//namespace glm +00111 +00112 #include "random.inl" +00113 +00114 #endif//GLM_GTC_random +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file gtx/random.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_random +00040 #define GLM_GTX_random GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 #include "../gtc/random.hpp" +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_GTX_random extension included") +00048 #endif +00049 +00050 namespace glm +00051 { +00054 +00057 template <typename T> T signedRand1(); +00058 +00059 template <> float signedRand1(); +00060 template <> double signedRand1(); +00061 template <typename T> detail::tvec2<T> signedRand2(); +00062 template <typename T> detail::tvec3<T> signedRand3(); +00063 template <typename T> detail::tvec4<T> signedRand4(); +00064 +00065 template <typename T> detail::tvec2<T> normalizedRand2(); +00066 template <typename T> detail::tvec2<T> normalizedRand2(T Min, T Max); +00067 template <typename T> detail::tvec3<T> normalizedRand3(); +00068 template <typename T> detail::tvec3<T> normalizedRand3(T Min, T Max); +00069 +00070 template <typename T> T compRand1(); +00071 template <> float compRand1(); +00072 template <> double compRand1(); +00073 template <typename T> T compRand1(T Min, T Max); +00074 template <typename T> detail::tvec2<T> compRand2(T Min, T Max); +00075 template <typename T> detail::tvec3<T> compRand3(T Min, T Max); +00076 template <typename T> detail::tvec4<T> compRand4(T Min, T Max); +00077 template <typename T> detail::tvec2<T> compRand2(const detail::tvec2<T>& Min, const detail::tvec2<T>& Max); +00078 template <typename T> detail::tvec3<T> compRand3(const detail::tvec3<T>& Min, const detail::tvec3<T>& Max); +00079 template <typename T> detail::tvec3<T> compRand4(const detail::tvec4<T>& Min, const detail::tvec4<T>& Max); +00080 +00081 template <typename T> detail::tvec2<T> vecRand2(); +00082 template <typename T> detail::tvec2<T> vecRand2(T MinRadius, T MaxRadius); +00083 template <typename T> detail::tvec3<T> vecRand3(); +00084 template <typename T> detail::tvec3<T> vecRand3(T MinRadius, T MaxRadius); +00085 template <typename T> detail::tvec4<T> vecRand4(); +00086 template <typename T> detail::tvec4<T> vecRand4(T MinRadius, T MaxRadius); +00087 +00088 template <typename T> T gaussRand1(T mean, T std_deviation); +00089 template <typename T> detail::tvec2<T> gaussRand2(T mean, T std_deviation); +00090 template <typename T> detail::tvec3<T> gaussRand3(T mean, T std_deviation); +00091 template <typename T> detail::tvec4<T> gaussRand4(T mean, T std_deviation); +00092 template <typename T> detail::tvec2<T> gaussRand2(const detail::tvec2<T>& mean, T std_deviation); +00093 template <typename T> detail::tvec3<T> gaussRand3(const detail::tvec3<T>& mean, T std_deviation); +00094 template <typename T> detail::tvec4<T> gaussRand4(const detail::tvec4<T>& mean, T std_deviation); +00095 template <typename T> detail::tvec2<T> gaussRand2(T mean, const detail::tvec2<T>& std_deviation); +00096 template <typename T> detail::tvec3<T> gaussRand3(T mean, const detail::tvec3<T>& std_deviation); +00097 template <typename T> detail::tvec4<T> gaussRand4(T mean, const detail::tvec4<T>& std_deviation); +00098 template <typename T> detail::tvec2<T> gaussRand2(const detail::tvec2<T>& mean, const detail::tvec2<T>& std_deviation); +00099 template <typename T> detail::tvec3<T> gaussRand3(const detail::tvec3<T>& mean, const detail::tvec3<T>& std_deviation); +00100 template <typename T> detail::tvec4<T> gaussRand4(const detail::tvec4<T>& mean, const detail::tvec4<T>& std_deviation); +00101 +00103 }//namespace glm +00104 +00105 #include "random.inl" +00106 +00107 #endif//GLM_GTX_random +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file raw_data.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_raw_data +00039 #define GLM_GTX_raw_data GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 #include "../gtc/type_precision.hpp" +00044 +00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00046 # pragma message("GLM: GLM_GTX_raw_data extension included") +00047 #endif +00048 +00049 namespace glm +00050 { +00053 +00056 typedef uint8 byte; +00057 +00060 typedef uint16 word; +00061 +00064 typedef uint32 dword; +00065 +00068 typedef uint64 qword; +00069 +00071 }// namespace glm +00072 +00073 #include "raw_data.inl" +00074 +00075 #endif//GLM_GTX_raw_data +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_reciprocal: Reciprocal
+Definition in file reciprocal.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_reciprocal +00039 #define GLM_GTX_reciprocal GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_reciprocal extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00052 +00056 template <typename genType> +00057 genType sec(genType const & angle); +00058 +00062 template <typename genType> +00063 genType csc(genType const & angle); +00064 +00068 template <typename genType> +00069 genType cot(genType const & angle); +00070 +00073 template <typename genType> +00074 genType asec(genType const & x); +00075 +00078 template <typename genType> +00079 genType acsc(genType const & x); +00080 +00083 template <typename genType> +00084 genType acot(genType const & x); +00085 +00088 template <typename genType> +00089 genType sech(genType const & angle); +00090 +00093 template <typename genType> +00094 genType csch(genType const & angle); +00095 +00098 template <typename genType> +00099 genType coth(genType const & angle); +00100 +00103 template <typename genType> +00104 genType asech(genType const & x); +00105 +00108 template <typename genType> +00109 genType acsch(genType const & x); +00110 +00113 template <typename genType> +00114 genType acoth(genType const & x); +00115 +00117 }//namespace glm +00118 +00119 #include "reciprocal.inl" +00120 +00121 #endif//GLM_GTX_reciprocal +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_rotate_vector: Rotate vector
+Definition in file rotate_vector.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_rotate_vector +00040 #define GLM_GTX_rotate_vector GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 #include "../gtx/transform.hpp" +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_GTX_rotate_vector extension included") +00048 #endif +00049 +00050 namespace glm +00051 { +00054 +00057 template <typename T> +00058 detail::tvec2<T> rotate( +00059 detail::tvec2<T> const & v, +00060 T const & angle); +00061 +00064 template <typename T> +00065 detail::tvec3<T> rotate( +00066 detail::tvec3<T> const & v, +00067 T const & angle, +00068 detail::tvec3<T> const & normal); +00069 +00072 template <typename T> +00073 detail::tvec4<T> rotate( +00074 detail::tvec4<T> const & v, +00075 T const & angle, +00076 detail::tvec3<T> const & normal); +00077 +00080 template <typename T> +00081 detail::tvec3<T> rotateX( +00082 detail::tvec3<T> const & v, +00083 T const & angle); +00084 +00087 template <typename T> +00088 detail::tvec3<T> rotateY( +00089 detail::tvec3<T> const & v, +00090 T const & angle); +00091 +00094 template <typename T> +00095 detail::tvec3<T> rotateZ( +00096 detail::tvec3<T> const & v, +00097 T const & angle); +00098 +00101 template <typename T> +00102 detail::tvec4<T> rotateX( +00103 detail::tvec4<T> const & v, +00104 T const & angle); +00105 +00108 template <typename T> +00109 detail::tvec4<T> rotateY( +00110 detail::tvec4<T> const & v, +00111 T const & angle); +00112 +00115 template <typename T> +00116 detail::tvec4<T> rotateZ( +00117 detail::tvec4<T> const & v, +00118 T const & angle); +00119 +00122 template <typename T> +00123 detail::tmat4x4<T> orientation( +00124 detail::tvec3<T> const & Normal, +00125 detail::tvec3<T> const & Up); +00126 +00128 }//namespace glm +00129 +00130 #include "rotate_vector.inl" +00131 +00132 #endif//GLM_GTX_rotate_vector +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file setup.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_setup +00030 #define glm_setup +00031 +00033 // Version +00034 +00035 #define GLM_VERSION 93 +00036 #define GLM_VERSION_MAJOR 0 +00037 #define GLM_VERSION_MINOR 9 +00038 #define GLM_VERSION_PATCH 3 +00039 #define GLM_VERSION_REVISION 1 +00040 +00042 // Platform +00043 +00044 #define GLM_PLATFORM_UNKNOWN 0x00000000 +00045 #define GLM_PLATFORM_WINDOWS 0x00010000 +00046 #define GLM_PLATFORM_LINUX 0x00020000 +00047 #define GLM_PLATFORM_APPLE 0x00040000 +00048 //#define GLM_PLATFORM_IOS 0x00080000 +00049 #define GLM_PLATFORM_ANDROID 0x00100000 +00050 #define GLM_PLATFORM_CHROME_NACL 0x00200000 +00051 #define GLM_PLATFORM_UNIX 0x00400000 +00052 +00053 #ifdef GLM_FORCE_PLATFORM_UNKNOWN +00054 # define GLM_PLATFORM GLM_PLATFORM_UNKNOWN +00055 #elif defined(__APPLE__) +00056 # define GLM_PLATFORM GLM_PLATFORM_APPLE +00057 #elif defined(_WIN32) +00058 # define GLM_PLATFORM GLM_PLATFORM_WINDOWS +00059 #elif defined(__native_client__) +00060 # define GLM_PLATFORM GLM_PLATFORM_CHROME_NACL +00061 #elif defined(ANDROID) +00062 # define GLM_PLATFORM GLM_PLATFORM_ANDROID +00063 #elif defined(__linux) +00064 # define GLM_PLATFORM GLM_PLATFORM_LINUX +00065 #elif defined(__unix) +00066 # define GLM_PLATFORM GLM_PLATFORM_UNIX +00067 #else +00068 # define GLM_PLATFORM GLM_PLATFORM_UNKNOWN +00069 #endif// +00070 +00071 // Report platform detection +00072 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_PLATFORM_DISPLAYED)) +00073 # define GLM_MESSAGE_PLATFORM_DISPLAYED +00074 # if(GLM_PLATFORM & GLM_PLATFORM_WINDOWS) +00075 # pragma message("GLM: Windows platform detected") +00076 //# elif(GLM_PLATFORM & GLM_PLATFORM_IOS) +00077 //# pragma message("GLM: iOS platform detected") +00078 # elif(GLM_PLATFORM & GLM_PLATFORM_APPLE) +00079 # pragma message("GLM: Apple platform detected") +00080 # elif(GLM_PLATFORM & GLM_PLATFORM_LINUX) +00081 # pragma message("GLM: Linux platform detected") +00082 # elif(GLM_PLATFORM & GLM_PLATFORM_UNIX) +00083 # pragma message("GLM: UNIX platform detected") +00084 # elif(GLM_PLATFORM & GLM_PLATFORM_ANDROID) +00085 # pragma message("GLM: Android platform detected") +00086 # elif(GLM_PLATFORM & GLM_PLATFORM_CHROME_NACL) +00087 # pragma message("GLM: Chrone Native Client detected") +00088 # elif(GLM_PLATFORM & GLM_PLATFORM_UNKNOWN) +00089 # pragma message("GLM: platform unknown") +00090 # else +00091 # pragma message("GLM: platform not detected") +00092 # endif +00093 #endif//GLM_MESSAGE +00094 +00096 // Compiler +00097 +00098 // User defines: GLM_FORCE_COMPILER_UNKNOWN +00099 // TODO ? __llvm__ +00100 +00101 #define GLM_COMPILER_UNKNOWN 0x00000000 +00102 +00103 // Visual C++ defines +00104 #define GLM_COMPILER_VC 0x01000000 +00105 #define GLM_COMPILER_VC2 0x01000010 +00106 #define GLM_COMPILER_VC4 0x01000020 +00107 #define GLM_COMPILER_VC5 0x01000030 +00108 #define GLM_COMPILER_VC6 0x01000040 +00109 #define GLM_COMPILER_VC2002 0x01000050 +00110 #define GLM_COMPILER_VC2003 0x01000060 +00111 #define GLM_COMPILER_VC2005 0x01000070 +00112 #define GLM_COMPILER_VC2008 0x01000080 +00113 #define GLM_COMPILER_VC2010 0x01000090 +00114 #define GLM_COMPILER_VC2011 0x010000A0 +00115 +00116 // GCC defines +00117 #define GLM_COMPILER_GCC 0x02000000 +00118 #define GLM_COMPILER_GCC_LLVM 0x02000001 +00119 #define GLM_COMPILER_GCC_CLANG 0x02000002 +00120 #define GLM_COMPILER_GCC30 0x02000010 +00121 #define GLM_COMPILER_GCC31 0x02000020 +00122 #define GLM_COMPILER_GCC32 0x02000030 +00123 #define GLM_COMPILER_GCC33 0x02000040 +00124 #define GLM_COMPILER_GCC34 0x02000050 +00125 #define GLM_COMPILER_GCC35 0x02000060 +00126 #define GLM_COMPILER_GCC40 0x02000070 +00127 #define GLM_COMPILER_GCC41 0x02000080 +00128 #define GLM_COMPILER_GCC42 0x02000090 +00129 #define GLM_COMPILER_GCC43 0x020000A0 +00130 #define GLM_COMPILER_GCC44 0x020000B0 +00131 #define GLM_COMPILER_GCC45 0x020000C0 +00132 #define GLM_COMPILER_GCC46 0x020000D0 +00133 #define GLM_COMPILER_GCC47 0x020000E0 +00134 #define GLM_COMPILER_GCC48 0x020000F0 +00135 #define GLM_COMPILER_GCC49 0x02000100 +00136 #define GLM_COMPILER_GCC50 0x02000200 +00137 +00138 // G++ command line to display defined +00139 // echo "" | g++ -E -dM -x c++ - | sort +00140 +00141 // Borland C++ defines. How to identify BC? +00142 #define GLM_COMPILER_BC 0x04000000 +00143 #define GLM_COMPILER_BCB4 0x04000100 +00144 #define GLM_COMPILER_BCB5 0x04000200 +00145 #define GLM_COMPILER_BCB6 0x04000300 +00146 //#define GLM_COMPILER_BCBX 0x04000400 // What's the version value? +00147 #define GLM_COMPILER_BCB2009 0x04000500 +00148 +00149 // CodeWarrior +00150 #define GLM_COMPILER_CODEWARRIOR 0x08000000 +00151 +00152 // CUDA +00153 #define GLM_COMPILER_CUDA 0x10000000 +00154 #define GLM_COMPILER_CUDA30 0x10000010 +00155 #define GLM_COMPILER_CUDA31 0x10000020 +00156 #define GLM_COMPILER_CUDA32 0x10000030 +00157 #define GLM_COMPILER_CUDA40 0x10000040 +00158 #define GLM_COMPILER_CUDA41 0x10000050 +00159 #define GLM_COMPILER_CUDA42 0x10000060 +00160 +00161 // Clang +00162 #define GLM_COMPILER_CLANG 0x20000000 +00163 #define GLM_COMPILER_CLANG26 0x20000010 +00164 #define GLM_COMPILER_CLANG27 0x20000020 +00165 #define GLM_COMPILER_CLANG28 0x20000030 +00166 #define GLM_COMPILER_CLANG29 0x20000040 +00167 #define GLM_COMPILER_CLANG30 0x20000050 +00168 #define GLM_COMPILER_CLANG31 0x20000060 +00169 #define GLM_COMPILER_CLANG32 0x20000070 +00170 #define GLM_COMPILER_CLANG33 0x20000080 +00171 +00172 // LLVM GCC +00173 #define GLM_COMPILER_LLVM_GCC 0x40000000 +00174 +00175 // Intel +00176 #define GLM_COMPILER_INTEL 0x80000000 +00177 #define GLM_COMPILER_INTEL9 0x80000010 +00178 #define GLM_COMPILER_INTEL10_0 0x80000020 +00179 #define GLM_COMPILER_INTEL10_1 0x80000030 +00180 #define GLM_COMPILER_INTEL11_0 0x80000040 +00181 #define GLM_COMPILER_INTEL11_1 0x80000050 +00182 #define GLM_COMPILER_INTEL12_0 0x80000060 +00183 #define GLM_COMPILER_INTEL12_1 0x80000070 +00184 #define GLM_COMPILER_INTEL13_0 0x80000080 +00185 +00186 // Build model +00187 #define GLM_MODEL_32 0x00000010 +00188 #define GLM_MODEL_64 0x00000020 +00189 +00190 // Force generic C++ compiler +00191 #ifdef GLM_FORCE_COMPILER_UNKNOWN +00192 # define GLM_COMPILER GLM_COMPILER_UNKNOWN +00193 +00194 #elif defined(__INTEL_COMPILER) +00195 # if __INTEL_COMPILER == 900 +00196 # define GLM_COMPILER GLM_COMPILER_INTEL9 +00197 # elif __INTEL_COMPILER == 1000 +00198 # define GLM_COMPILER GLM_COMPILER_INTEL10_0 +00199 # elif __INTEL_COMPILER == 1010 +00200 # define GLM_COMPILER GLM_COMPILER_INTEL10_1 +00201 # elif __INTEL_COMPILER == 1100 +00202 # define GLM_COMPILER GLM_COMPILER_INTEL11_0 +00203 # elif __INTEL_COMPILER == 1110 +00204 # define GLM_COMPILER GLM_COMPILER_INTEL11_1 +00205 # elif __INTEL_COMPILER == 1200 +00206 # define GLM_COMPILER GLM_COMPILER_INTEL12_0 +00207 # elif __INTEL_COMPILER == 1210 +00208 # define GLM_COMPILER GLM_COMPILER_INTEL12_1 +00209 # elif __INTEL_COMPILER == 1300 +00210 # define GLM_COMPILER GLM_COMPILER_INTEL13_0 +00211 # else +00212 # define GLM_COMPILER GLM_COMPILER_INTEL +00213 # endif +00214 +00215 // CUDA +00216 #elif defined(__CUDACC__) +00217 # define GLM_COMPILER GLM_COMPILER_CUDA +00218 /* +00219 # if CUDA_VERSION < 3000 +00220 # error "GLM requires CUDA 3.0 or higher" +00221 # elif CUDA_VERSION == 3000 +00222 # define GLM_COMPILER GLM_COMPILER_CUDA30 +00223 # elif CUDA_VERSION == 3010 +00224 # define GLM_COMPILER GLM_COMPILER_CUDA31 +00225 # elif CUDA_VERSION == 3020 +00226 # define GLM_COMPILER GLM_COMPILER_CUDA32 +00227 # elif CUDA_VERSION == 4000 +00228 # define GLM_COMPILER GLM_COMPILER_CUDA40 +00229 # elif CUDA_VERSION == 4010 +00230 # define GLM_COMPILER GLM_COMPILER_CUDA41 +00231 # elif CUDA_VERSION == 4020 +00232 # define GLM_COMPILER GLM_COMPILER_CUDA42 +00233 # else +00234 # define GLM_COMPILER GLM_COMPILER_CUDA +00235 # endif +00236 */ +00237 +00238 // Visual C++ +00239 #elif defined(_MSC_VER) +00240 # if _MSC_VER == 900 +00241 # define GLM_COMPILER GLM_COMPILER_VC2 +00242 # elif _MSC_VER == 1000 +00243 # define GLM_COMPILER GLM_COMPILER_VC4 +00244 # elif _MSC_VER == 1100 +00245 # define GLM_COMPILER GLM_COMPILER_VC5 +00246 # elif _MSC_VER == 1200 +00247 # define GLM_COMPILER GLM_COMPILER_VC6 +00248 # elif _MSC_VER == 1300 +00249 # define GLM_COMPILER GLM_COMPILER_VC2002 +00250 # elif _MSC_VER == 1310 +00251 # define GLM_COMPILER GLM_COMPILER_VC2003 +00252 # elif _MSC_VER == 1400 +00253 # define GLM_COMPILER GLM_COMPILER_VC2005 +00254 # elif _MSC_VER == 1500 +00255 # define GLM_COMPILER GLM_COMPILER_VC2008 +00256 # elif _MSC_VER == 1600 +00257 # define GLM_COMPILER GLM_COMPILER_VC2010 +00258 # elif _MSC_VER == 1700 +00259 # define GLM_COMPILER GLM_COMPILER_VC2011 +00260 # else//_MSC_VER +00261 # define GLM_COMPILER GLM_COMPILER_VC +00262 # endif//_MSC_VER +00263 +00264 // Clang +00265 #elif defined(__clang__) +00266 # if(CLANG_VERSION_MAJOR == 2) && (CLANG_VERSION_MINOR == 6) +00267 # define GLM_COMPILER GLM_COMPILER_CLANG26 +00268 # elif(CLANG_VERSION_MAJOR == 2) && (CLANG_VERSION_MINOR == 7) +00269 # define GLM_COMPILER GLM_COMPILER_CLANG27 +00270 # elif(CLANG_VERSION_MAJOR == 2) && (CLANG_VERSION_MINOR == 8) +00271 # define GLM_COMPILER GLM_COMPILER_CLANG28 +00272 # elif(CLANG_VERSION_MAJOR == 2) && (CLANG_VERSION_MINOR == 9) +00273 # define GLM_COMPILER GLM_COMPILER_CLANG29 +00274 # elif(CLANG_VERSION_MAJOR == 3) && (CLANG_VERSION_MINOR == 0) +00275 # define GLM_COMPILER GLM_COMPILER_CLANG30 +00276 # elif(CLANG_VERSION_MAJOR == 3) && (CLANG_VERSION_MINOR == 1) +00277 # define GLM_COMPILER GLM_COMPILER_CLANG31 +00278 # elif(CLANG_VERSION_MAJOR == 3) && (CLANG_VERSION_MINOR == 2) +00279 # define GLM_COMPILER GLM_COMPILER_CLANG32 +00280 # elif(CLANG_VERSION_MAJOR == 3) && (CLANG_VERSION_MINOR == 3) +00281 # define GLM_COMPILER GLM_COMPILER_CLANG33 +00282 # else +00283 # define GLM_COMPILER GLM_COMPILER_CLANG +00284 # endif +00285 +00286 // G++ +00287 #elif(defined(__GNUC__) || defined(__MINGW32__))// || defined(__llvm__) || defined(__clang__) +00288 # if defined (__llvm__) +00289 # define GLM_COMPILER_GCC_EXTRA GLM_COMPILER_GCC_LLVM +00290 # elif defined (__clang__) +00291 # define GLM_COMPILER_GCC_EXTRA GLM_COMPILER_GCC_CLANG +00292 # else +00293 # define GLM_COMPILER_GCC_EXTRA 0 +00294 # endif +00295 # +00296 # if (__GNUC__ == 3) && (__GNUC_MINOR__ == 2) +00297 # define GLM_COMPILER GLM_COMPILER_GCC32 +00298 # elif (__GNUC__ == 3) && (__GNUC_MINOR__ == 3) +00299 # define GLM_COMPILER GLM_COMPILER_GCC33 +00300 # elif (__GNUC__ == 3) && (__GNUC_MINOR__ == 4) +00301 # define GLM_COMPILER GLM_COMPILER_GCC34 +00302 # elif (__GNUC__ == 3) && (__GNUC_MINOR__ == 5) +00303 # define GLM_COMPILER GLM_COMPILER_GCC35 +00304 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 0) +00305 # define GLM_COMPILER (GLM_COMPILER_GCC40 | GLM_COMPILER_GCC_EXTRA) +00306 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 1) +00307 # define GLM_COMPILER (GLM_COMPILER_GCC41 | GLM_COMPILER_GCC_EXTRA) +00308 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 2) +00309 # define GLM_COMPILER (GLM_COMPILER_GCC42 | GLM_COMPILER_GCC_EXTRA) +00310 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 3) +00311 # define GLM_COMPILER (GLM_COMPILER_GCC43 | GLM_COMPILER_GCC_EXTRA) +00312 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 4) +00313 # define GLM_COMPILER (GLM_COMPILER_GCC44 | GLM_COMPILER_GCC_EXTRA) +00314 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 5) +00315 # define GLM_COMPILER (GLM_COMPILER_GCC45 | GLM_COMPILER_GCC_EXTRA) +00316 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 6) +00317 # define GLM_COMPILER (GLM_COMPILER_GCC46 | GLM_COMPILER_GCC_EXTRA) +00318 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 7) +00319 # define GLM_COMPILER (GLM_COMPILER_GCC47 | GLM_COMPILER_GCC_EXTRA) +00320 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 8) +00321 # define GLM_COMPILER (GLM_COMPILER_GCC48 | GLM_COMPILER_GCC_EXTRA) +00322 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 9) +00323 # define GLM_COMPILER (GLM_COMPILER_GCC49 | GLM_COMPILER_GCC_EXTRA) +00324 # elif (__GNUC__ == 5) && (__GNUC_MINOR__ == 0) +00325 # define GLM_COMPILER (GLM_COMPILER_GCC50 | GLM_COMPILER_GCC_EXTRA) +00326 # else +00327 # define GLM_COMPILER (GLM_COMPILER_GCC | GLM_COMPILER_GCC_EXTRA) +00328 # endif +00329 +00330 // Borland C++ +00331 #elif defined(_BORLANDC_) +00332 # if defined(VER125) +00333 # define GLM_COMPILER GLM_COMPILER_BCB4 +00334 # elif defined(VER130) +00335 # define GLM_COMPILER GLM_COMPILER_BCB5 +00336 # elif defined(VER140) +00337 # define GLM_COMPILER GLM_COMPILER_BCB6 +00338 # elif defined(VER200) +00339 # define GLM_COMPILER GLM_COMPILER_BCB2009 +00340 # else +00341 # define GLM_COMPILER GLM_COMPILER_BC +00342 # endif +00343 +00344 // Codewarrior +00345 #elif defined(__MWERKS__) +00346 # define GLM_COMPILER GLM_COMPILER_CODEWARRIOR +00347 +00348 #else +00349 # define GLM_COMPILER GLM_COMPILER_UNKNOWN +00350 #endif +00351 +00352 #ifndef GLM_COMPILER +00353 #error "GLM_COMPILER undefined, your compiler may not be supported by GLM. Add #define GLM_COMPILER 0 to ignore this message." +00354 #endif//GLM_COMPILER +00355 +00356 // Report compiler detection +00357 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_COMPILER_DISPLAYED)) +00358 # define GLM_MESSAGE_COMPILER_DISPLAYED +00359 # if(GLM_COMPILER & GLM_COMPILER_CUDA) +00360 # pragma message("GLM: CUDA compiler detected") +00361 # elif(GLM_COMPILER & GLM_COMPILER_VC) +00362 # pragma message("GLM: Visual C++ compiler detected") +00363 # elif(GLM_COMPILER & GLM_COMPILER_CLANG) +00364 # pragma message("GLM: Clang compiler detected") +00365 # elif(GLM_COMPILER & GLM_COMPILER_LLVM_GCC) +00366 # pragma message("GLM: LLVM GCC compiler detected") +00367 # elif(GLM_COMPILER & GLM_COMPILER_GCC) +00368 # if(GLM_COMPILER == GLM_COMPILER_GCC_LLVM) +00369 # pragma message("GLM: LLVM GCC compiler detected") +00370 # elif(GLM_COMPILER == GLM_COMPILER_GCC_CLANG) +00371 # pragma message("GLM: CLANG compiler detected") +00372 # else +00373 # pragma message("GLM: GCC compiler detected") +00374 # endif +00375 # elif(GLM_COMPILER & GLM_COMPILER_BC) +00376 # pragma message("GLM: Borland compiler detected but not supported") +00377 # elif(GLM_COMPILER & GLM_COMPILER_CODEWARRIOR) +00378 # pragma message("GLM: Codewarrior compiler detected but not supported") +00379 # else +00380 # pragma message("GLM: Compiler not detected") +00381 # endif +00382 #endif//GLM_MESSAGE +00383 +00385 // Build model // +00386 +00387 #if((defined(__WORDSIZE) && (__WORDSIZE == 64)) || defined(__arch64__) || defined(__LP64__) || defined(_M_X64) || defined(__ppc64__) || defined(__x86_64__)) +00388 # define GLM_MODEL GLM_MODEL_64 +00389 #elif(defined(__i386__) || defined(__ppc__)) +00390 # define GLM_MODEL GLM_MODEL_32 +00391 #else +00392 # define GLM_MODEL GLM_MODEL_32 +00393 #endif// +00394 +00395 #if(!defined(GLM_MODEL) && GLM_COMPILER != 0) +00396 #error "GLM_MODEL undefined, your compiler may not be supported by GLM. Add #define GLM_MODEL 0 to ignore this message." +00397 #endif//GLM_MODEL +00398 +00399 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_MODEL_DISPLAYED)) +00400 # define GLM_MESSAGE_MODEL_DISPLAYED +00401 # if(GLM_MODEL == GLM_MODEL_64) +00402 # pragma message("GLM: 64 bits model") +00403 # elif(GLM_MODEL == GLM_MODEL_32) +00404 # pragma message("GLM: 32 bits model") +00405 # endif//GLM_MODEL +00406 #endif//GLM_MESSAGE +00407 +00409 // C++ Version // +00410 +00411 // User defines: GLM_FORCE_CXX98 +00412 +00413 #define GLM_LANG_CXX (0 << 0) +00414 #define GLM_LANG_CXX98 ((1 << 1) | GLM_LANG_CXX) +00415 #define GLM_LANG_CXX03 ((1 << 2) | GLM_LANG_CXX98) +00416 #define GLM_LANG_CXX0X ((1 << 3) | GLM_LANG_CXX03) +00417 #define GLM_LANG_CXX11 ((1 << 4) | GLM_LANG_CXX0X) +00418 #define GLM_LANG_CXXMS (1 << 5) +00419 #define GLM_LANG_CXXGNU (1 << 6) +00420 +00421 #if(defined(GLM_FORCE_CXX11)) +00422 # define GLM_LANG GLM_LANG_CXX11 +00423 #elif(defined(GLM_FORCE_CXX03)) +00424 # define GLM_LANG GLM_LANG_CXX03 +00425 #elif(defined(GLM_FORCE_CXX98)) +00426 # define GLM_LANG GLM_LANG_CXX98 +00427 #else +00428 // -std=c++0x or -std=gnu++0x +00429 # if(((GLM_COMPILER & GLM_COMPILER_GCC) == GLM_COMPILER_GCC) && defined(__GXX_EXPERIMENTAL_CXX0X__)) +00430 # define GLM_LANG GLM_LANG_CXX0X +00431 # elif(((GLM_COMPILER & GLM_COMPILER_VC) == GLM_COMPILER_VC) && defined(_MSC_EXTENSIONS)) +00432 # define GLM_LANG GLM_LANG_CXXMS +00433 # elif(((GLM_COMPILER & GLM_COMPILER_VC) == GLM_COMPILER_VC) && !defined(_MSC_EXTENSIONS)) +00434 # if(GLM_COMPILER >= GLM_COMPILER_VC2010) +00435 # define GLM_LANG GLM_LANG_CXX0X +00436 # else +00437 # define GLM_LANG GLM_LANG_CXX98 +00438 # endif//(GLM_COMPILER == GLM_COMPILER_VC2010) +00439 # elif((GLM_COMPILER & GLM_COMPILER_GCC) == GLM_COMPILER_GCC) //&& defined(__STRICT_ANSI__)) +00440 # define GLM_LANG GLM_LANG_CXX98 +00441 # elif((GLM_COMPILER & GLM_COMPILER_CLANG) == GLM_COMPILER_CLANG) +00442 # define GLM_LANG GLM_LANG_CXX98 +00443 # else +00444 # define GLM_LANG GLM_LANG_CXX +00445 # endif +00446 #endif +00447 +00448 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_LANG_DISPLAYED)) +00449 # define GLM_MESSAGE_LANG_DISPLAYED +00450 # if(GLM_LANG == GLM_LANG_CXX98) +00451 # pragma message("GLM: C++98") +00452 # elif(GLM_LANG == GLM_LANG_CXX03) +00453 # pragma message("GLM: C++03") +00454 # elif(GLM_LANG == GLM_LANG_CXX0X) +00455 # pragma message("GLM: C++0x") +00456 # elif(GLM_LANG == GLM_LANG_CXX11) +00457 # pragma message("GLM: C++11") +00458 # elif(GLM_LANG == GLM_LANG_CXXGNU) +00459 # pragma message("GLM: C++ with GNU language extensions") +00460 # elif(GLM_LANG == GLM_LANG_CXXMS) +00461 # pragma message("GLM: C++ with VC language extensions") +00462 # else +00463 # pragma message("GLM: C++ language undetected") +00464 # endif//GLM_MODEL +00465 #endif//GLM_MESSAGE +00466 +00468 // Platform +00469 +00470 // User defines: GLM_FORCE_PURE GLM_FORCE_SSE2 GLM_FORCE_AVX +00471 +00472 #define GLM_ARCH_PURE 0x0000 //(0x0000) +00473 #define GLM_ARCH_SSE2 0x0001 //(0x0001) +00474 #define GLM_ARCH_SSE3 0x0003 //(0x0002 | GLM_ARCH_SSE2) +00475 #define GLM_ARCH_AVX 0x0007 //(0x0004 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2) +00476 +00477 #if(defined(GLM_FORCE_PURE)) +00478 # define GLM_ARCH GLM_ARCH_PURE +00479 #elif(defined(GLM_FORCE_AVX)) +00480 # define GLM_ARCH GLM_ARCH_AVX +00481 #elif(defined(GLM_FORCE_SSE3)) +00482 # define GLM_ARCH GLM_ARCH_SSE3 +00483 #elif(defined(GLM_FORCE_SSE2)) +00484 # define GLM_ARCH GLM_ARCH_SSE2 +00485 #elif((GLM_COMPILER & GLM_COMPILER_VC) && (defined(_M_IX86) || defined(_M_X64))) +00486 # if(defined(_M_CEE_PURE)) +00487 # define GLM_ARCH GLM_ARCH_PURE +00488 # elif(GLM_COMPILER >= GLM_COMPILER_VC2010) +00489 # if(_MSC_FULL_VER >= 160031118) //160031118: VC2010 SP1 beta full version +00490 # define GLM_ARCH GLM_ARCH_AVX //GLM_ARCH_AVX (Require SP1) +00491 # else +00492 # define GLM_ARCH GLM_ARCH_SSE3 +00493 # endif +00494 # elif(GLM_COMPILER >= GLM_COMPILER_VC2008) +00495 # define GLM_ARCH GLM_ARCH_SSE3 +00496 # elif(GLM_COMPILER >= GLM_COMPILER_VC2005) +00497 # define GLM_ARCH GLM_ARCH_SSE2 +00498 # else +00499 # define GLM_ARCH GLM_ARCH_PURE +00500 # endif +00501 #elif(GLM_COMPILER & GLM_COMPILER_LLVM_GCC) +00502 # if(defined(__AVX__)) +00503 # define GLM_ARCH GLM_ARCH_AVX +00504 # elif(defined(__SSE3__)) +00505 # define GLM_ARCH GLM_ARCH_SSE3 +00506 # elif(defined(__SSE2__)) +00507 # define GLM_ARCH GLM_ARCH_SSE2 +00508 # else +00509 # define GLM_ARCH GLM_ARCH_PURE +00510 # endif +00511 #elif((GLM_COMPILER & GLM_COMPILER_GCC) && (defined(__i386__) || defined(__x86_64__))) +00512 # if(defined(__AVX__)) +00513 # define GLM_ARCH GLM_ARCH_AVX +00514 # elif(defined(__SSE3__)) +00515 # define GLM_ARCH GLM_ARCH_SSE3 +00516 # elif(defined(__SSE2__)) +00517 # define GLM_ARCH GLM_ARCH_SSE2 +00518 # else +00519 # define GLM_ARCH GLM_ARCH_PURE +00520 # endif +00521 #else +00522 # define GLM_ARCH GLM_ARCH_PURE +00523 #endif +00524 +00525 #if(GLM_ARCH != GLM_ARCH_PURE) +00526 #if((GLM_ARCH & GLM_ARCH_AVX) == GLM_ARCH_AVX) +00527 # include <immintrin.h> +00528 #endif//GLM_ARCH +00529 #if((GLM_ARCH & GLM_ARCH_SSE3) == GLM_ARCH_SSE3) +00530 # include <pmmintrin.h> +00531 #endif//GLM_ARCH +00532 #if((GLM_ARCH & GLM_ARCH_SSE2) == GLM_ARCH_SSE2) +00533 # include <emmintrin.h> +00534 #endif//GLM_ARCH +00535 #endif//(GLM_ARCH != GLM_ARCH_PURE) +00536 +00537 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_ARCH_DISPLAYED)) +00538 # define GLM_MESSAGE_ARCH_DISPLAYED +00539 # if(GLM_ARCH == GLM_ARCH_PURE) +00540 # pragma message("GLM: Platform independent") +00541 # elif(GLM_ARCH == GLM_ARCH_SSE2) +00542 # pragma message("GLM: SSE2 instruction set") +00543 # elif(GLM_ARCH == GLM_ARCH_SSE3) +00544 # pragma message("GLM: SSE3 instruction set") +00545 # elif(GLM_ARCH == GLM_ARCH_AVX) +00546 # pragma message("GLM: AVX instruction set") +00547 # endif//GLM_ARCH +00548 #endif//GLM_MESSAGE +00549 +00551 // Support check macros +00552 +00553 #define GLM_SUPPORT_ANONYMOUS_UNION() \ +00554 ((GLM_LANG & GLM_LANG_CXX98) == GLM_LANG_CXX98) +00555 +00556 #define GLM_SUPPORT_ANONYMOUS_UNION_OF_STRUCTURE() \ +00557 (((GLM_LANG & GLM_LANG_CXX11) == GLM_LANG_CXX11) || ((GLM_LANG & GLM_LANG_CXXMS) == GLM_LANG_CXXMS) || ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_LANG == GLM_LANG_CXX0X))) +00558 +00559 #define GLM_SUPPORT_SWIZZLE_OPERATOR() \ +00560 (/*defined(GLM_SWIZZLE) && */GLM_SUPPORT_ANONYMOUS_UNION_OF_STRUCTURE()) +00561 +00562 #define GLM_SUPPORT_SWIZZLE_FUNCTION() defined(GLM_SWIZZLE) +00563 +00565 // Components +00566 +00567 //#define GLM_FORCE_ONLY_XYZW +00568 #define GLM_COMPONENT_ONLY_XYZW 0 // To disable multiple vector component names access. +00569 #define GLM_COMPONENT_CXX98 1 // +00570 #define GLM_COMPONENT_CXX11 2 // To use anonymous union to provide multiple component names access for class valType. Visual C++ only. +00571 +00572 #if(GLM_SUPPORT_ANONYMOUS_UNION_OF_STRUCTURE() && !defined(GLM_FORCE_ONLY_XYZW)) +00573 # define GLM_COMPONENT GLM_COMPONENT_CXX11 +00574 #elif(GLM_SUPPORT_ANONYMOUS_UNION() && !defined(GLM_FORCE_ONLY_XYZW)) +00575 # define GLM_COMPONENT GLM_COMPONENT_CXX98 +00576 #else +00577 # define GLM_COMPONENT GLM_COMPONENT_ONLY_XYZW +00578 #endif +00579 +00580 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_COMPONENT_DISPLAYED)) +00581 # define GLM_MESSAGE_COMPONENT_DISPLAYED +00582 # if(GLM_COMPONENT == GLM_COMPONENT_CXX98) +00583 # pragma message("GLM: x,y,z,w; r,g,b,a; s,t,p,q component names except of half based vector types") +00584 # elif(GLM_COMPONENT == GLM_COMPONENT_ONLY_XYZW) +00585 # pragma message("GLM: x,y,z,w component names for all vector types") +00586 # elif(GLM_COMPONENT == GLM_COMPONENT_CXX11) +00587 # pragma message("GLM: x,y,z,w; r,g,b,a; s,t,p,q component names for all vector types") +00588 # else +00589 # error "GLM: GLM_COMPONENT value unknown" +00590 # endif//GLM_MESSAGE_COMPONENT_DISPLAYED +00591 #endif//GLM_MESSAGE +00592 +00594 // Static assert +00595 +00596 #if(GLM_LANG == GLM_LANG_CXX0X) +00597 # define GLM_STATIC_ASSERT(x, message) static_assert(x, message) +00598 #elif(defined(BOOST_STATIC_ASSERT)) +00599 # define GLM_STATIC_ASSERT(x, message) BOOST_STATIC_ASSERT(x) +00600 #elif(GLM_COMPILER & GLM_COMPILER_VC) +00601 # define GLM_STATIC_ASSERT(x, message) typedef char __CASSERT__##__LINE__[(x) ? 1 : -1] +00602 #else +00603 # define GLM_STATIC_ASSERT(x, message) +00604 # define GLM_STATIC_ASSERT_NULL +00605 #endif//GLM_LANG +00606 +00608 // Qualifiers +00609 +00610 // User defines: GLM_FORCE_INLINE GLM_FORCE_CUDA +00611 +00612 #if(defined(GLM_FORCE_CUDA) || (GLM_COMPILER & GLM_COMPILER_CUDA)) +00613 # define GLM_CUDA_FUNC_DEF __device__ __host__ +00614 # define GLM_CUDA_FUNC_DECL __device__ __host__ +00615 #else +00616 # define GLM_CUDA_FUNC_DEF +00617 # define GLM_CUDA_FUNC_DECL +00618 #endif +00619 +00620 #if GLM_COMPILER & GLM_COMPILER_GCC +00621 #define GLM_VAR_USED __attribute__ ((unused)) +00622 #else +00623 #define GLM_VAR_USED +00624 #endif +00625 +00626 #if(defined(GLM_FORCE_INLINE)) +00627 # if((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2005)) +00628 # define GLM_INLINE __forceinline +00629 # elif((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC34)) +00630 # define GLM_INLINE __attribute__((always_inline)) +00631 # else +00632 # define GLM_INLINE inline +00633 # endif//GLM_COMPILER +00634 #else +00635 # define GLM_INLINE inline +00636 #endif//defined(GLM_FORCE_INLINE) +00637 +00638 #define GLM_FUNC_DECL GLM_CUDA_FUNC_DECL +00639 #define GLM_FUNC_QUALIFIER GLM_CUDA_FUNC_DEF GLM_INLINE +00640 +00642 // Swizzle operators +00643 +00644 // User defines: GLM_SWIZZLE +00645 +00646 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_SWIZZLE_DISPLAYED)) +00647 # define GLM_MESSAGE_SWIZZLE_DISPLAYED +00648 # if(GLM_SUPPORT_SWIZZLE_OPERATOR()) +00649 # pragma message("GLM: Swizzling operators enabled") +00650 # elif(GLM_SUPPORT_SWIZZLE_FUNCTION()) +00651 # pragma message("GLM: Swizzling operators supported through swizzling functions") +00652 # else +00653 # pragma message("GLM: Swizzling operators disabled") +00654 # endif +00655 #endif//GLM_MESSAGE +00656 +00657 #endif//glm_setup +
+ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_simd_mat4 +00039 #define GLM_GTX_simd_mat4 GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(GLM_ARCH != GLM_ARCH_PURE) +00045 +00046 #if(GLM_ARCH & GLM_ARCH_SSE2) +00047 # include "../core/intrinsic_matrix.hpp" +00048 # include "../gtx/simd_vec4.hpp" +00049 #else +00050 # error "GLM: GLM_GTX_simd_mat4 requires compiler support of SSE2 through intrinsics" +00051 #endif +00052 +00053 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00054 # pragma message("GLM: GLM_GTX_simd_mat4 extension included") +00055 #endif +00056 +00057 namespace glm{ +00058 namespace detail +00059 { +00062 GLM_ALIGNED_STRUCT(16) fmat4x4SIMD +00063 { +00064 enum ctor{null}; +00065 +00066 typedef float value_type; +00067 typedef fvec4SIMD col_type; +00068 typedef fvec4SIMD row_type; +00069 typedef std::size_t size_type; +00070 static size_type value_size(); +00071 static size_type col_size(); +00072 static size_type row_size(); +00073 static bool is_matrix(); +00074 +00075 fvec4SIMD Data[4]; +00076 +00078 // Constructors +00079 +00080 fmat4x4SIMD(); +00081 explicit fmat4x4SIMD(float const & s); +00082 explicit fmat4x4SIMD( +00083 float const & x0, float const & y0, float const & z0, float const & w0, +00084 float const & x1, float const & y1, float const & z1, float const & w1, +00085 float const & x2, float const & y2, float const & z2, float const & w2, +00086 float const & x3, float const & y3, float const & z3, float const & w3); +00087 explicit fmat4x4SIMD( +00088 fvec4SIMD const & v0, +00089 fvec4SIMD const & v1, +00090 fvec4SIMD const & v2, +00091 fvec4SIMD const & v3); +00092 explicit fmat4x4SIMD( +00093 tmat4x4<float> const & m); +00094 +00095 // Conversions +00096 //template <typename U> +00097 //explicit tmat4x4(tmat4x4<U> const & m); +00098 +00099 //explicit tmat4x4(tmat2x2<T> const & x); +00100 //explicit tmat4x4(tmat3x3<T> const & x); +00101 //explicit tmat4x4(tmat2x3<T> const & x); +00102 //explicit tmat4x4(tmat3x2<T> const & x); +00103 //explicit tmat4x4(tmat2x4<T> const & x); +00104 //explicit tmat4x4(tmat4x2<T> const & x); +00105 //explicit tmat4x4(tmat3x4<T> const & x); +00106 //explicit tmat4x4(tmat4x3<T> const & x); +00107 +00108 // Accesses +00109 fvec4SIMD & operator[](size_type i); +00110 fvec4SIMD const & operator[](size_type i) const; +00111 +00112 // Unary updatable operators +00113 fmat4x4SIMD & operator= (fmat4x4SIMD const & m); +00114 fmat4x4SIMD & operator+= (float const & s); +00115 fmat4x4SIMD & operator+= (fmat4x4SIMD const & m); +00116 fmat4x4SIMD & operator-= (float const & s); +00117 fmat4x4SIMD & operator-= (fmat4x4SIMD const & m); +00118 fmat4x4SIMD & operator*= (float const & s); +00119 fmat4x4SIMD & operator*= (fmat4x4SIMD const & m); +00120 fmat4x4SIMD & operator/= (float const & s); +00121 fmat4x4SIMD & operator/= (fmat4x4SIMD const & m); +00122 fmat4x4SIMD & operator++ (); +00123 fmat4x4SIMD & operator-- (); +00124 }; +00125 +00126 // Binary operators +00127 fmat4x4SIMD operator+ (fmat4x4SIMD const & m, float const & s); +00128 fmat4x4SIMD operator+ (float const & s, fmat4x4SIMD const & m); +00129 fmat4x4SIMD operator+ (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2); +00130 +00131 fmat4x4SIMD operator- (fmat4x4SIMD const & m, float const & s); +00132 fmat4x4SIMD operator- (float const & s, fmat4x4SIMD const & m); +00133 fmat4x4SIMD operator- (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2); +00134 +00135 fmat4x4SIMD operator* (fmat4x4SIMD const & m, float const & s); +00136 fmat4x4SIMD operator* (float const & s, fmat4x4SIMD const & m); +00137 +00138 fvec4SIMD operator* (fmat4x4SIMD const & m, fvec4SIMD const & v); +00139 fvec4SIMD operator* (fvec4SIMD const & v, fmat4x4SIMD const & m); +00140 +00141 fmat4x4SIMD operator* (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2); +00142 +00143 fmat4x4SIMD operator/ (fmat4x4SIMD const & m, float const & s); +00144 fmat4x4SIMD operator/ (float const & s, fmat4x4SIMD const & m); +00145 +00146 fvec4SIMD operator/ (fmat4x4SIMD const & m, fvec4SIMD const & v); +00147 fvec4SIMD operator/ (fvec4SIMD const & v, fmat4x4SIMD const & m); +00148 +00149 fmat4x4SIMD operator/ (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2); +00150 +00151 // Unary constant operators +00152 fmat4x4SIMD const operator- (fmat4x4SIMD const & m); +00153 fmat4x4SIMD const operator-- (fmat4x4SIMD const & m, int); +00154 fmat4x4SIMD const operator++ (fmat4x4SIMD const & m, int); +00155 }//namespace detail +00156 +00157 typedef detail::fmat4x4SIMD simdMat4; +00158 +00161 +00164 detail::tmat4x4<float> mat4_cast( +00165 detail::fmat4x4SIMD const & x); +00166 +00170 detail::fmat4x4SIMD matrixCompMult( +00171 detail::fmat4x4SIMD const & x, +00172 detail::fmat4x4SIMD const & y); +00173 +00178 detail::fmat4x4SIMD outerProduct( +00179 detail::fvec4SIMD const & c, +00180 detail::fvec4SIMD const & r); +00181 +00184 detail::fmat4x4SIMD transpose( +00185 detail::fmat4x4SIMD const & x); +00186 +00189 float determinant( +00190 detail::fmat4x4SIMD const & m); +00191 +00194 detail::fmat4x4SIMD inverse( +00195 detail::fmat4x4SIMD const & m); +00196 +00198 }// namespace glm +00199 +00200 #include "simd_mat4.inl" +00201 +00202 #endif//(GLM_ARCH != GLM_ARCH_PURE) +00203 +00204 #endif//GLM_GTX_simd_mat4 +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_simd_vec4: SIMD vec4 type and functions
+Definition in file simd_vec4.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_simd_vec4 +00039 #define GLM_GTX_simd_vec4 GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(GLM_ARCH != GLM_ARCH_PURE) +00045 +00046 #if(GLM_ARCH & GLM_ARCH_SSE2) +00047 # include "../core/intrinsic_common.hpp" +00048 # include "../core/intrinsic_geometric.hpp" +00049 #else +00050 # error "GLM: GLM_GTX_simd_vec4 requires compiler support of SSE2 through intrinsics" +00051 #endif +00052 +00053 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00054 # pragma message("GLM: GLM_GTX_simd_vec4 extension included") +00055 #endif +00056 +00057 namespace glm{ +00058 namespace detail +00059 { +00062 GLM_ALIGNED_STRUCT(16) fvec4SIMD +00063 { +00064 enum ctor{null}; +00065 typedef __m128 value_type; +00066 typedef std::size_t size_type; +00067 static size_type value_size(); +00068 +00069 typedef fvec4SIMD type; +00070 typedef tvec4<bool> bool_type; +00071 +00072 __m128 Data; +00073 +00075 // Implicit basic constructors +00076 +00077 fvec4SIMD(); +00078 fvec4SIMD(__m128 const & Data); +00079 fvec4SIMD(fvec4SIMD const & v); +00080 +00082 // Explicit basic constructors +00083 +00084 explicit fvec4SIMD( +00085 ctor); +00086 explicit fvec4SIMD( +00087 float const & s); +00088 explicit fvec4SIMD( +00089 float const & x, +00090 float const & y, +00091 float const & z, +00092 float const & w); +00093 explicit fvec4SIMD( +00094 tvec4<float> const & v); +00095 +00098 +00099 fvec4SIMD(vec2 const & v, float const & s1, float const & s2); +00100 fvec4SIMD(float const & s1, vec2 const & v, float const & s2); +00101 fvec4SIMD(float const & s1, float const & s2, vec2 const & v); +00102 fvec4SIMD(vec3 const & v, float const & s); +00103 fvec4SIMD(float const & s, vec3 const & v); +00104 fvec4SIMD(vec2 const & v1, vec2 const & v2); +00105 //fvec4SIMD(ivec4SIMD const & v); +00106 +00108 // Unary arithmetic operators +00109 +00110 fvec4SIMD& operator= (fvec4SIMD const & v); +00111 fvec4SIMD& operator+=(fvec4SIMD const & v); +00112 fvec4SIMD& operator-=(fvec4SIMD const & v); +00113 fvec4SIMD& operator*=(fvec4SIMD const & v); +00114 fvec4SIMD& operator/=(fvec4SIMD const & v); +00115 +00116 fvec4SIMD& operator+=(float const & s); +00117 fvec4SIMD& operator-=(float const & s); +00118 fvec4SIMD& operator*=(float const & s); +00119 fvec4SIMD& operator/=(float const & s); +00120 +00121 fvec4SIMD& operator++(); +00122 fvec4SIMD& operator--(); +00123 +00125 // Swizzle operators +00126 +00127 template <comp X, comp Y, comp Z, comp W> +00128 fvec4SIMD& swizzle(); +00129 template <comp X, comp Y, comp Z, comp W> +00130 fvec4SIMD swizzle() const; +00131 template <comp X, comp Y, comp Z> +00132 fvec4SIMD swizzle() const; +00133 template <comp X, comp Y> +00134 fvec4SIMD swizzle() const; +00135 template <comp X> +00136 fvec4SIMD swizzle() const; +00137 }; +00138 }//namespace detail +00139 +00140 typedef glm::detail::fvec4SIMD simdVec4; +00141 +00144 +00147 detail::tvec4<float> vec4_cast( +00148 detail::fvec4SIMD const & x); +00149 +00152 detail::fvec4SIMD abs(detail::fvec4SIMD const & x); +00153 +00156 detail::fvec4SIMD sign(detail::fvec4SIMD const & x); +00157 +00160 detail::fvec4SIMD floor(detail::fvec4SIMD const & x); +00161 +00165 detail::fvec4SIMD trunc(detail::fvec4SIMD const & x); +00166 +00173 detail::fvec4SIMD round(detail::fvec4SIMD const & x); +00174 +00179 //detail::fvec4SIMD roundEven(detail::fvec4SIMD const & x); +00180 +00184 detail::fvec4SIMD ceil(detail::fvec4SIMD const & x); +00185 +00188 detail::fvec4SIMD fract(detail::fvec4SIMD const & x); +00189 +00193 detail::fvec4SIMD mod( +00194 detail::fvec4SIMD const & x, +00195 detail::fvec4SIMD const & y); +00196 +00200 detail::fvec4SIMD mod( +00201 detail::fvec4SIMD const & x, +00202 float const & y); +00203 +00209 //detail::fvec4SIMD modf( +00210 // detail::fvec4SIMD const & x, +00211 // detail::fvec4SIMD & i); +00212 +00215 detail::fvec4SIMD min( +00216 detail::fvec4SIMD const & x, +00217 detail::fvec4SIMD const & y); +00218 +00219 detail::fvec4SIMD min( +00220 detail::fvec4SIMD const & x, +00221 float const & y); +00222 +00225 detail::fvec4SIMD max( +00226 detail::fvec4SIMD const & x, +00227 detail::fvec4SIMD const & y); +00228 +00229 detail::fvec4SIMD max( +00230 detail::fvec4SIMD const & x, +00231 float const & y); +00232 +00236 detail::fvec4SIMD clamp( +00237 detail::fvec4SIMD const & x, +00238 detail::fvec4SIMD const & minVal, +00239 detail::fvec4SIMD const & maxVal); +00240 +00241 detail::fvec4SIMD clamp( +00242 detail::fvec4SIMD const & x, +00243 float const & minVal, +00244 float const & maxVal); +00245 +00269 // \todo Test when 'a' is a boolean. +00271 detail::fvec4SIMD mix( +00272 detail::fvec4SIMD const & x, +00273 detail::fvec4SIMD const & y, +00274 detail::fvec4SIMD const & a); +00275 +00278 detail::fvec4SIMD step( +00279 detail::fvec4SIMD const & edge, +00280 detail::fvec4SIMD const & x); +00281 +00282 detail::fvec4SIMD step( +00283 float const & edge, +00284 detail::fvec4SIMD const & x); +00285 +00296 detail::fvec4SIMD smoothstep( +00297 detail::fvec4SIMD const & edge0, +00298 detail::fvec4SIMD const & edge1, +00299 detail::fvec4SIMD const & x); +00300 +00301 detail::fvec4SIMD smoothstep( +00302 float const & edge0, +00303 float const & edge1, +00304 detail::fvec4SIMD const & x); +00305 +00312 //bvec4 isnan(detail::fvec4SIMD const & x); +00313 +00320 //bvec4 isinf(detail::fvec4SIMD const & x); +00321 +00326 //detail::ivec4SIMD floatBitsToInt(detail::fvec4SIMD const & value); +00327 +00334 //detail::fvec4SIMD intBitsToFloat(detail::ivec4SIMD const & value); +00335 +00338 detail::fvec4SIMD fma( +00339 detail::fvec4SIMD const & a, +00340 detail::fvec4SIMD const & b, +00341 detail::fvec4SIMD const & c); +00342 +00352 //detail::fvec4SIMD frexp(detail::fvec4SIMD const & x, detail::ivec4SIMD & exp); +00353 +00360 //detail::fvec4SIMD ldexp(detail::fvec4SIMD const & x, detail::ivec4SIMD const & exp); +00361 +00364 float length( +00365 detail::fvec4SIMD const & x); +00366 +00370 float fastLength( +00371 detail::fvec4SIMD const & x); +00372 +00376 float niceLength( +00377 detail::fvec4SIMD const & x); +00378 +00381 detail::fvec4SIMD length4( +00382 detail::fvec4SIMD const & x); +00383 +00387 detail::fvec4SIMD fastLength4( +00388 detail::fvec4SIMD const & x); +00389 +00393 detail::fvec4SIMD niceLength4( +00394 detail::fvec4SIMD const & x); +00395 +00398 float distance( +00399 detail::fvec4SIMD const & p0, +00400 detail::fvec4SIMD const & p1); +00401 +00404 detail::fvec4SIMD distance4( +00405 detail::fvec4SIMD const & p0, +00406 detail::fvec4SIMD const & p1); +00407 +00410 float simdDot( +00411 detail::fvec4SIMD const & x, +00412 detail::fvec4SIMD const & y); +00413 +00416 detail::fvec4SIMD dot4( +00417 detail::fvec4SIMD const & x, +00418 detail::fvec4SIMD const & y); +00419 +00422 detail::fvec4SIMD cross( +00423 detail::fvec4SIMD const & x, +00424 detail::fvec4SIMD const & y); +00425 +00428 detail::fvec4SIMD normalize( +00429 detail::fvec4SIMD const & x); +00430 +00434 detail::fvec4SIMD fastNormalize( +00435 detail::fvec4SIMD const & x); +00436 +00439 detail::fvec4SIMD simdFaceforward( +00440 detail::fvec4SIMD const & N, +00441 detail::fvec4SIMD const & I, +00442 detail::fvec4SIMD const & Nref); +00443 +00447 detail::fvec4SIMD reflect( +00448 detail::fvec4SIMD const & I, +00449 detail::fvec4SIMD const & N); +00450 +00455 detail::fvec4SIMD refract( +00456 detail::fvec4SIMD const & I, +00457 detail::fvec4SIMD const & N, +00458 float const & eta); +00459 +00462 detail::fvec4SIMD sqrt( +00463 detail::fvec4SIMD const & x); +00464 +00468 detail::fvec4SIMD niceSqrt( +00469 detail::fvec4SIMD const & x); +00470 +00474 detail::fvec4SIMD fastSqrt( +00475 detail::fvec4SIMD const & x); +00476 +00479 detail::fvec4SIMD inversesqrt( +00480 detail::fvec4SIMD const & x); +00481 +00485 detail::fvec4SIMD fastInversesqrt( +00486 detail::fvec4SIMD const & x); +00487 +00489 }//namespace glm +00490 +00491 #include "simd_vec4.inl" +00492 +00493 #endif//(GLM_ARCH != GLM_ARCH_PURE) +00494 +00495 #endif//GLM_GTX_simd_vec4 +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file spline.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_spline +00039 #define GLM_GTX_spline GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 #include "../gtx/optimum_pow.hpp" +00044 +00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00046 # pragma message("GLM: GLM_GTX_spline extension included") +00047 #endif +00048 +00049 namespace glm +00050 { +00053 +00056 template <typename genType> +00057 genType catmullRom( +00058 genType const & v1, +00059 genType const & v2, +00060 genType const & v3, +00061 genType const & v4, +00062 typename genType::value_type const & s); +00063 +00066 template <typename genType> +00067 genType hermite( +00068 genType const & v1, +00069 genType const & t1, +00070 genType const & v2, +00071 genType const & t2, +00072 typename genType::value_type const & s); +00073 +00076 template <typename genType> +00077 genType cubic( +00078 genType const & v1, +00079 genType const & v2, +00080 genType const & v3, +00081 genType const & v4, +00082 typename genType::value_type const & s); +00083 +00085 }//namespace glm +00086 +00087 #include "spline.inl" +00088 +00089 #endif//GLM_GTX_spline +00090 +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_std_based_type: Add types based on STL
+Definition in file std_based_type.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_std_based_type +00039 #define GLM_GTX_std_based_type GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 #include <cstdlib> +00044 +00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00046 # pragma message("GLM: GLM_GTX_std_based_type extension included") +00047 #endif +00048 +00049 namespace glm +00050 { +00053 +00056 typedef detail::tvec2<std::size_t> size2; +00057 +00060 typedef detail::tvec3<std::size_t> size3; +00061 +00064 typedef detail::tvec4<std::size_t> size4; +00065 +00068 typedef detail::tvec2<std::size_t> size2_t; +00069 +00072 typedef detail::tvec3<std::size_t> size3_t; +00073 +00076 typedef detail::tvec4<std::size_t> size4_t; +00077 +00079 }//namespace glm +00080 +00081 #include "std_based_type.inl" +00082 +00083 #endif//GLM_GTX_std_based_type +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_string_cast: String cast
+Definition in file string_cast.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 +00040 +00041 #ifndef GLM_GTX_string_cast +00042 #define GLM_GTX_string_cast GLM_VERSION +00043 +00044 // Dependency: +00045 #include "../glm.hpp" +00046 #include "../gtc/half_float.hpp" +00047 #include "../gtx/integer.hpp" +00048 #include "../gtx/quaternion.hpp" +00049 #include <string> +00050 +00051 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00052 # pragma message("GLM: GLM_GTX_string_cast extension included") +00053 #endif +00054 +00055 namespace glm +00056 { +00059 +00062 template <typename genType> +00063 std::string to_string(genType const & x); +00064 +00066 }//namespace glm +00067 +00068 #include "string_cast.inl" +00069 +00070 #endif//GLM_GTX_string_cast +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTC_swizzle: Swizzle 'operator' implementation
+Definition in file swizzle.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTC_swizzle +00039 #define GLM_GTC_swizzle GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 #include "../gtc/type_precision.hpp" +00044 +00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00046 # pragma message("GLM: GLM_GTC_swizzle extension included") +00047 #endif +00048 +00049 namespace glm +00050 { +00053 +00054 +00055 template <typename T, template <typename> class vecType> +00056 T const & swizzle( +00057 vecType<T> const & v, +00058 comp x); +00059 +00067 template <typename T, template <typename> class vecType> +00068 detail::tvec2<T> const & swizzle( +00069 vecType<T> const & v, +00070 comp x, comp y); +00071 +00072 template <typename T, template <typename> class vecType> +00073 detail::tvec3<T> const & swizzle( +00074 vecType<T> const & v, +00075 comp x, comp y, comp z); +00076 +00077 template <typename T, template <typename> class vecType> +00078 detail::tvec4<T> const & swizzle( +00079 vecType<T> const & v, +00080 comp x, comp y, comp z, comp w); +00081 +00082 template <typename T, template <typename> class vecType> +00083 T & swizzle( +00084 vecType<T> & v, +00085 comp x); +00086 +00087 template <typename T, template <typename> class vecType> +00088 detail::tref2<T> swizzle( +00089 vecType<T> & v, +00090 comp x, comp y); +00091 +00092 template <typename T, template <typename> class vecType> +00093 detail::tref3<T> swizzle( +00094 vecType<T> & v, +00095 comp x, comp y, comp z); +00096 +00097 template <typename T, template <typename> class vecType> +00098 detail::tref4<T> swizzle( +00099 vecType<T> & v, +00100 comp x, comp y, comp z, comp w); +00101 +00102 # define static_swizzle1_const(TYPE, SIZE) \ +00103 template <comp x> \ +00104 GLM_FUNC_QUALIFIER TYPE swizzle(detail::tvec##SIZE<TYPE> const & v) \ +00105 {return v[x];} +00106 +00107 # define static_swizzle1_ref(TYPE, SIZE) \ +00108 template <comp x> \ +00109 GLM_FUNC_QUALIFIER TYPE& swizzle(detail::tvec##SIZE<TYPE> & v) \ +00110 {return v[x];} +00111 +00112 static_swizzle1_ref(detail::float16, 2) +00113 static_swizzle1_ref(detail::float16, 3) +00114 static_swizzle1_ref(detail::float16, 4) +00115 static_swizzle1_ref(detail::float32, 2) +00116 static_swizzle1_ref(detail::float32, 3) +00117 static_swizzle1_ref(detail::float32, 4) +00118 static_swizzle1_ref(detail::float64, 2) +00119 static_swizzle1_ref(detail::float64, 3) +00120 static_swizzle1_ref(detail::float64, 4) +00121 +00122 static_swizzle1_ref(detail::int8, 2) +00123 static_swizzle1_ref(detail::int8, 3) +00124 static_swizzle1_ref(detail::int8, 4) +00125 static_swizzle1_ref(detail::int16, 2) +00126 static_swizzle1_ref(detail::int16, 3) +00127 static_swizzle1_ref(detail::int16, 4) +00128 static_swizzle1_ref(detail::int32, 2) +00129 static_swizzle1_ref(detail::int32, 3) +00130 static_swizzle1_ref(detail::int32, 4) +00131 static_swizzle1_ref(detail::int64, 2) +00132 static_swizzle1_ref(detail::int64, 3) +00133 static_swizzle1_ref(detail::int64, 4) +00134 +00135 static_swizzle1_ref(detail::uint8, 2) +00136 static_swizzle1_ref(detail::uint8, 3) +00137 static_swizzle1_ref(detail::uint8, 4) +00138 static_swizzle1_ref(detail::uint16, 2) +00139 static_swizzle1_ref(detail::uint16, 3) +00140 static_swizzle1_ref(detail::uint16, 4) +00141 static_swizzle1_ref(detail::uint32, 2) +00142 static_swizzle1_ref(detail::uint32, 3) +00143 static_swizzle1_ref(detail::uint32, 4) +00144 static_swizzle1_ref(detail::uint64, 2) +00145 static_swizzle1_ref(detail::uint64, 3) +00146 static_swizzle1_ref(detail::uint64, 4) +00147 /* +00148 # define static_swizzle2_const(TYPE) \ +00149 template <comp x, comp y> \ +00150 GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \ +00151 {return TYPE(v[x], v[y]);} +00152 +00153 # define static_swizzle3_const(TYPE) \ +00154 template <comp x, comp y, comp z> \ +00155 GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \ +00156 {return TYPE(v[x], v[y], v[z]);} +00157 +00158 # define static_swizzle4_const(TYPE) \ +00159 template <comp x, comp y, comp z, comp w> \ +00160 GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \ +00161 {return TYPE(v[x], v[y], v[z], v[w]);} +00162 */ +00163 +00164 # define static_swizzle2_const(TYPE, SIZE) \ +00165 template <comp x, comp y> \ +00166 GLM_FUNC_QUALIFIER detail::tvec2<TYPE> swizzle(detail::tvec##SIZE<TYPE> const & v) \ +00167 {return detail::tvec2<TYPE>(v[x], v[y]);} +00168 +00169 # define static_swizzle3_const(TYPE, SIZE) \ +00170 template <comp x, comp y, comp z> \ +00171 GLM_FUNC_QUALIFIER detail::tvec3<TYPE> swizzle(detail::tvec##SIZE<TYPE> const & v) \ +00172 {return detail::tvec3<TYPE>(v[x], v[y], v[z]);} +00173 +00174 # define static_swizzle4_const(TYPE, SIZE) \ +00175 template <comp x, comp y, comp z, comp w> \ +00176 GLM_FUNC_QUALIFIER detail::tvec4<TYPE> swizzle(detail::tvec##SIZE<TYPE> const & v) \ +00177 {return detail::tvec4<TYPE>(v[x], v[y], v[z], v[w]);} +00178 +00179 +00180 static_swizzle2_const(glm::f16, 2) +00181 static_swizzle2_const(glm::f16, 3) +00182 static_swizzle2_const(glm::f16, 4) +00183 static_swizzle2_const(glm::f32, 2) +00184 static_swizzle2_const(glm::f32, 3) +00185 static_swizzle2_const(glm::f32, 4) +00186 static_swizzle2_const(glm::f64, 2) +00187 static_swizzle2_const(glm::f64, 3) +00188 static_swizzle2_const(glm::f64, 4) +00189 +00190 static_swizzle2_const(glm::i8, 2) +00191 static_swizzle2_const(glm::i8, 3) +00192 static_swizzle2_const(glm::i8, 4) +00193 static_swizzle2_const(glm::i16, 2) +00194 static_swizzle2_const(glm::i16, 3) +00195 static_swizzle2_const(glm::i16, 4) +00196 static_swizzle2_const(glm::i32, 2) +00197 static_swizzle2_const(glm::i32, 3) +00198 static_swizzle2_const(glm::i32, 4) +00199 static_swizzle2_const(glm::i64, 2) +00200 static_swizzle2_const(glm::i64, 3) +00201 static_swizzle2_const(glm::i64, 4) +00202 +00203 static_swizzle2_const(glm::u8, 2) +00204 static_swizzle2_const(glm::u8, 3) +00205 static_swizzle2_const(glm::u8, 4) +00206 static_swizzle2_const(glm::u16, 2) +00207 static_swizzle2_const(glm::u16, 3) +00208 static_swizzle2_const(glm::u16, 4) +00209 static_swizzle2_const(glm::u32, 2) +00210 static_swizzle2_const(glm::u32, 3) +00211 static_swizzle2_const(glm::u32, 4) +00212 static_swizzle2_const(glm::u64, 2) +00213 static_swizzle2_const(glm::u64, 3) +00214 static_swizzle2_const(glm::u64, 4) +00215 +00216 static_swizzle3_const(glm::f16, 2) +00217 static_swizzle3_const(glm::f16, 3) +00218 static_swizzle3_const(glm::f16, 4) +00219 static_swizzle3_const(glm::f32, 2) +00220 static_swizzle3_const(glm::f32, 3) +00221 static_swizzle3_const(glm::f32, 4) +00222 static_swizzle3_const(glm::f64, 2) +00223 static_swizzle3_const(glm::f64, 3) +00224 static_swizzle3_const(glm::f64, 4) +00225 +00226 static_swizzle3_const(glm::i8, 2) +00227 static_swizzle3_const(glm::i8, 3) +00228 static_swizzle3_const(glm::i8, 4) +00229 static_swizzle3_const(glm::i16, 2) +00230 static_swizzle3_const(glm::i16, 3) +00231 static_swizzle3_const(glm::i16, 4) +00232 static_swizzle3_const(glm::i32, 2) +00233 static_swizzle3_const(glm::i32, 3) +00234 static_swizzle3_const(glm::i32, 4) +00235 static_swizzle3_const(glm::i64, 2) +00236 static_swizzle3_const(glm::i64, 3) +00237 static_swizzle3_const(glm::i64, 4) +00238 +00239 static_swizzle3_const(glm::u8, 2) +00240 static_swizzle3_const(glm::u8, 3) +00241 static_swizzle3_const(glm::u8, 4) +00242 static_swizzle3_const(glm::u16, 2) +00243 static_swizzle3_const(glm::u16, 3) +00244 static_swizzle3_const(glm::u16, 4) +00245 static_swizzle3_const(glm::u32, 2) +00246 static_swizzle3_const(glm::u32, 3) +00247 static_swizzle3_const(glm::u32, 4) +00248 static_swizzle3_const(glm::u64, 2) +00249 static_swizzle3_const(glm::u64, 3) +00250 static_swizzle3_const(glm::u64, 4) +00251 +00252 static_swizzle4_const(glm::f16, 2) +00253 static_swizzle4_const(glm::f16, 3) +00254 static_swizzle4_const(glm::f16, 4) +00255 static_swizzle4_const(glm::f32, 2) +00256 static_swizzle4_const(glm::f32, 3) +00257 static_swizzle4_const(glm::f32, 4) +00258 static_swizzle4_const(glm::f64, 2) +00259 static_swizzle4_const(glm::f64, 3) +00260 static_swizzle4_const(glm::f64, 4) +00261 +00262 static_swizzle4_const(glm::i8, 2) +00263 static_swizzle4_const(glm::i8, 3) +00264 static_swizzle4_const(glm::i8, 4) +00265 static_swizzle4_const(glm::i16, 2) +00266 static_swizzle4_const(glm::i16, 3) +00267 static_swizzle4_const(glm::i16, 4) +00268 static_swizzle4_const(glm::i32, 2) +00269 static_swizzle4_const(glm::i32, 3) +00270 static_swizzle4_const(glm::i32, 4) +00271 static_swizzle4_const(glm::i64, 2) +00272 static_swizzle4_const(glm::i64, 3) +00273 static_swizzle4_const(glm::i64, 4) +00274 +00275 static_swizzle4_const(glm::u8, 2) +00276 static_swizzle4_const(glm::u8, 3) +00277 static_swizzle4_const(glm::u8, 4) +00278 static_swizzle4_const(glm::u16, 2) +00279 static_swizzle4_const(glm::u16, 3) +00280 static_swizzle4_const(glm::u16, 4) +00281 static_swizzle4_const(glm::u32, 2) +00282 static_swizzle4_const(glm::u32, 3) +00283 static_swizzle4_const(glm::u32, 4) +00284 static_swizzle4_const(glm::u64, 2) +00285 static_swizzle4_const(glm::u64, 3) +00286 static_swizzle4_const(glm::u64, 4) +00287 +00288 # define static_swizzle2_ref(TYPE, SIZE) \ +00289 template <glm::comp x, glm::comp y> \ +00290 GLM_FUNC_QUALIFIER glm::detail::tref2<TYPE> swizzle(detail::tvec##SIZE<TYPE> & v) \ +00291 {return glm::detail::tref2<TYPE>(v[x], v[y]);} +00292 +00293 # define static_swizzle3_ref(TYPE, SIZE) \ +00294 template <glm::comp x, glm::comp y, glm::comp z> \ +00295 GLM_FUNC_QUALIFIER glm::detail::tref3<TYPE> swizzle(detail::tvec##SIZE<TYPE> & v) \ +00296 {return glm::detail::tref3<TYPE>(v[x], v[y], v[z]);} +00297 +00298 # define static_swizzle4_ref(TYPE, SIZE) \ +00299 template <glm::comp x, glm::comp y, glm::comp z, glm::comp w> \ +00300 GLM_FUNC_QUALIFIER glm::detail::tref4<TYPE> swizzle(detail::tvec##SIZE<TYPE> & v) \ +00301 {return glm::detail::tref4<TYPE>(v[x], v[y], v[z], v[w]);} +00302 +00303 static_swizzle2_ref(glm::f16, 2) +00304 static_swizzle2_ref(glm::f16, 3) +00305 static_swizzle2_ref(glm::f16, 4) +00306 static_swizzle2_ref(glm::f32, 2) +00307 static_swizzle2_ref(glm::f32, 3) +00308 static_swizzle2_ref(glm::f32, 4) +00309 static_swizzle2_ref(glm::f64, 2) +00310 static_swizzle2_ref(glm::f64, 3) +00311 static_swizzle2_ref(glm::f64, 4) +00312 +00313 static_swizzle2_ref(glm::i8, 2) +00314 static_swizzle2_ref(glm::i8, 3) +00315 static_swizzle2_ref(glm::i8, 4) +00316 static_swizzle2_ref(glm::i16, 2) +00317 static_swizzle2_ref(glm::i16, 3) +00318 static_swizzle2_ref(glm::i16, 4) +00319 static_swizzle2_ref(glm::i32, 2) +00320 static_swizzle2_ref(glm::i32, 3) +00321 static_swizzle2_ref(glm::i32, 4) +00322 static_swizzle2_ref(glm::i64, 2) +00323 static_swizzle2_ref(glm::i64, 3) +00324 static_swizzle2_ref(glm::i64, 4) +00325 +00326 static_swizzle2_ref(glm::u8, 2) +00327 static_swizzle2_ref(glm::u8, 3) +00328 static_swizzle2_ref(glm::u8, 4) +00329 static_swizzle2_ref(glm::u16, 2) +00330 static_swizzle2_ref(glm::u16, 3) +00331 static_swizzle2_ref(glm::u16, 4) +00332 static_swizzle2_ref(glm::u32, 2) +00333 static_swizzle2_ref(glm::u32, 3) +00334 static_swizzle2_ref(glm::u32, 4) +00335 static_swizzle2_ref(glm::u64, 2) +00336 static_swizzle2_ref(glm::u64, 3) +00337 static_swizzle2_ref(glm::u64, 4) +00338 +00339 static_swizzle3_ref(glm::f16, 3) +00340 static_swizzle3_ref(glm::f16, 4) +00341 static_swizzle3_ref(glm::f32, 3) +00342 static_swizzle3_ref(glm::f32, 4) +00343 static_swizzle3_ref(glm::f64, 3) +00344 static_swizzle3_ref(glm::f64, 4) +00345 +00346 static_swizzle3_ref(glm::i8, 3) +00347 static_swizzle3_ref(glm::i8, 4) +00348 static_swizzle3_ref(glm::i16, 3) +00349 static_swizzle3_ref(glm::i16, 4) +00350 static_swizzle3_ref(glm::i32, 3) +00351 static_swizzle3_ref(glm::i32, 4) +00352 static_swizzle3_ref(glm::i64, 3) +00353 static_swizzle3_ref(glm::i64, 4) +00354 +00355 static_swizzle3_ref(glm::u8, 3) +00356 static_swizzle3_ref(glm::u8, 4) +00357 static_swizzle3_ref(glm::u16, 3) +00358 static_swizzle3_ref(glm::u16, 4) +00359 static_swizzle3_ref(glm::u32, 3) +00360 static_swizzle3_ref(glm::u32, 4) +00361 static_swizzle3_ref(glm::u64, 3) +00362 static_swizzle3_ref(glm::u64, 4) +00363 +00364 static_swizzle4_ref(glm::f16, 4) +00365 static_swizzle4_ref(glm::f32, 4) +00366 static_swizzle4_ref(glm::f64, 4) +00367 +00368 static_swizzle4_ref(glm::i8, 4) +00369 static_swizzle4_ref(glm::i16, 4) +00370 static_swizzle4_ref(glm::i32, 4) +00371 static_swizzle4_ref(glm::i64, 4) +00372 +00373 static_swizzle4_ref(glm::u8, 4) +00374 static_swizzle4_ref(glm::u16, 4) +00375 static_swizzle4_ref(glm::u32, 4) +00376 static_swizzle4_ref(glm::u64, 4) +00377 +00379 }//namespace glm +00380 +00381 #include "swizzle.inl" +00382 +00383 #endif//GLM_GTC_swizzle +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_transform: Extented transformation matrices
+Definition in file transform.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 +00040 +00041 #ifndef GLM_GTX_transform +00042 #define GLM_GTX_transform GLM_VERSION +00043 +00044 // Dependency: +00045 #include "../glm.hpp" +00046 #include "../gtc/matrix_transform.hpp" +00047 +00048 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00049 # pragma message("GLM: GLM_GTX_transform extension included") +00050 #endif +00051 +00052 namespace glm +00053 { +00056 +00059 // - See also: \link glm::translate GLM_GTC_matrix_transform \endlink +00060 template <typename T> +00061 detail::tmat4x4<T> translate( +00062 T x, T y, T z); +00063 +00066 // - See also: \link glm::translate GLM_GTC_matrix_transform \endlink +00067 template <typename T> +00068 detail::tmat4x4<T> translate( +00069 detail::tmat4x4<T> const & m, +00070 T x, T y, T z); +00071 +00074 // - See also: \link glm::translate GLM_GTC_matrix_transform \endlink +00075 template <typename T> +00076 detail::tmat4x4<T> translate( +00077 detail::tvec3<T> const & v); +00078 +00081 // - See also: \link glm::rotate GLM_GTC_matrix_transform \endlink +00082 template <typename T> +00083 detail::tmat4x4<T> rotate( +00084 T angle, +00085 T x, T y, T z); +00086 +00089 // - See also: \link glm::rotate GLM_GTC_matrix_transform \endlink +00090 template <typename T> +00091 detail::tmat4x4<T> rotate( +00092 T angle, +00093 detail::tvec3<T> const & v); +00094 +00097 // - See also: \link glm::rotate GLM_GTC_matrix_transform \endlink +00098 template <typename T> +00099 detail::tmat4x4<T> rotate( +00100 detail::tmat4x4<T> const & m, +00101 T angle, +00102 T x, T y, T z); +00103 +00106 // - See also: \link glm::scale GLM_GTC_matrix_transform \endlink +00107 template <typename T> +00108 detail::tmat4x4<T> scale( +00109 T x, T y, T z); +00110 +00113 // - See also: \link glm::scale GLM_GTC_matrix_transform \endlink +00114 template <typename T> +00115 detail::tmat4x4<T> scale( +00116 detail::tmat4x4<T> const & m, +00117 T x, T y, T z); +00118 +00121 // - See also: \link glm::scale GLM_GTC_matrix_transform \endlink +00122 template <typename T> +00123 detail::tmat4x4<T> scale( +00124 detail::tvec3<T> const & v); +00125 +00127 }// namespace glm +00128 +00129 #include "transform.inl" +00130 +00131 #endif//GLM_GTX_transform +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_transform2: Extra transformation matrices
+Definition in file transform2.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_transform2 +00040 #define GLM_GTX_transform2 GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 #include "../gtx/transform.hpp" +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_GTX_transform2 extension included") +00048 #endif +00049 +00050 namespace glm +00051 { +00054 +00057 template <typename T> +00058 detail::tmat3x3<T> shearX2D( +00059 detail::tmat3x3<T> const & m, +00060 T y); +00061 +00064 template <typename T> +00065 detail::tmat3x3<T> shearY2D( +00066 detail::tmat3x3<T> const & m, +00067 T x); +00068 +00071 template <typename T> +00072 detail::tmat4x4<T> shearX3D( +00073 const detail::tmat4x4<T> & m, +00074 T y, +00075 T z); +00076 +00079 template <typename T> +00080 detail::tmat4x4<T> shearY3D( +00081 const detail::tmat4x4<T> & m, +00082 T x, +00083 T z); +00084 +00087 template <typename T> +00088 detail::tmat4x4<T> shearZ3D( +00089 const detail::tmat4x4<T> & m, +00090 T x, +00091 T y); +00092 +00093 //template <typename T> GLM_FUNC_QUALIFIER detail::tmat4x4<T> shear(const detail::tmat4x4<T> & m, shearPlane, planePoint, angle) +00094 // Identity + tan(angle) * cross(Normal, OnPlaneVector) 0 +00095 // - dot(PointOnPlane, normal) * OnPlaneVector 1 +00096 +00097 // Reflect functions seem to don't work +00098 //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) +00099 //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) +00100 +00103 template <typename T> +00104 detail::tmat3x3<T> proj2D( +00105 const detail::tmat3x3<T> & m, +00106 const detail::tvec3<T>& normal); +00107 +00110 template <typename T> +00111 detail::tmat4x4<T> proj3D( +00112 const detail::tmat4x4<T> & m, +00113 const detail::tvec3<T>& normal); +00114 +00117 template <typename valType> +00118 detail::tmat4x4<valType> scaleBias( +00119 valType scale, +00120 valType bias); +00121 +00124 template <typename valType> +00125 detail::tmat4x4<valType> scaleBias( +00126 detail::tmat4x4<valType> const & m, +00127 valType scale, +00128 valType bias); +00129 +00131 }// namespace glm +00132 +00133 #include "transform2.inl" +00134 +00135 #endif//GLM_GTX_transform2 +
+ + + + + + + |
Go to the source code of this file.
++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 mediump_ivec2 | ivec2 |
typedef mediump_ivec3 | ivec3 |
typedef mediump_ivec4 | ivec4 |
typedef mat2x2 | mat2 |
typedef mediump_mat2x2 | mat2x2 |
typedef mediump_mat2x3 | mat2x3 |
typedef mediump_mat2x4 | mat2x4 |
typedef mat3x3 | mat3 |
typedef mediump_mat3x2 | mat3x2 |
typedef mediump_mat3x3 | mat3x3 |
typedef mediump_mat3x4 | mat3x4 |
typedef mat4x4 | mat4 |
typedef mediump_mat4x2 | mat4x2 |
typedef mediump_mat4x3 | mat4x3 |
typedef mediump_mat4x4 | mat4x4 |
typedef mediump_uvec2 | uvec2 |
typedef mediump_uvec3 | uvec3 |
typedef mediump_uvec4 | uvec4 |
typedef mediump_vec2 | vec2 |
typedef mediump_vec3 | vec3 |
typedef mediump_vec4 | vec4 |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type +00030 #define glm_core_type +00031 +00032 #include "type_half.hpp" +00033 #include "type_float.hpp" +00034 #include "type_int.hpp" +00035 +00036 #include "type_gentype.hpp" +00037 +00038 #include "type_vec1.hpp" +00039 #include "type_vec2.hpp" +00040 #include "type_vec3.hpp" +00041 #include "type_vec4.hpp" +00042 +00043 #include "type_mat2x2.hpp" +00044 #include "type_mat2x3.hpp" +00045 #include "type_mat2x4.hpp" +00046 #include "type_mat3x2.hpp" +00047 #include "type_mat3x3.hpp" +00048 #include "type_mat3x4.hpp" +00049 #include "type_mat4x2.hpp" +00050 #include "type_mat4x3.hpp" +00051 #include "type_mat4x4.hpp" +00052 +00053 namespace glm +00054 { +00057 +00059 // Float definition +00060 +00061 #if(defined(GLM_PRECISION_HIGHP_FLOAT)) +00062 typedef highp_vec2 vec2; +00063 typedef highp_vec3 vec3; +00064 typedef highp_vec4 vec4; +00065 typedef highp_mat2x2 mat2x2; +00066 typedef highp_mat2x3 mat2x3; +00067 typedef highp_mat2x4 mat2x4; +00068 typedef highp_mat3x2 mat3x2; +00069 typedef highp_mat3x3 mat3x3; +00070 typedef highp_mat3x4 mat3x4; +00071 typedef highp_mat4x2 mat4x2; +00072 typedef highp_mat4x3 mat4x3; +00073 typedef highp_mat4x4 mat4x4; +00074 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT)) +00075 typedef mediump_vec2 vec2; +00076 typedef mediump_vec3 vec3; +00077 typedef mediump_vec4 vec4; +00078 typedef mediump_mat2x2 mat2x2; +00079 typedef mediump_mat2x3 mat2x3; +00080 typedef mediump_mat2x4 mat2x4; +00081 typedef mediump_mat3x2 mat3x2; +00082 typedef mediump_mat3x3 mat3x3; +00083 typedef mediump_mat3x4 mat3x4; +00084 typedef mediump_mat4x2 mat4x2; +00085 typedef mediump_mat4x3 mat4x3; +00086 typedef mediump_mat4x4 mat4x4; +00087 #elif(defined(GLM_PRECISION_LOWP_FLOAT)) +00088 typedef lowp_vec2 vec2; +00089 typedef lowp_vec3 vec3; +00090 typedef lowp_vec4 vec4; +00091 typedef lowp_mat2x2 mat2x2; +00092 typedef lowp_mat2x3 mat2x3; +00093 typedef lowp_mat2x4 mat2x4; +00094 typedef lowp_mat3x2 mat3x2; +00095 typedef lowp_mat3x3 mat3x3; +00096 typedef lowp_mat3x4 mat3x4; +00097 typedef lowp_mat4x2 mat4x2; +00098 typedef lowp_mat4x3 mat4x3; +00099 typedef lowp_mat4x4 mat4x4; +00100 #else +00101 +00102 +00103 +00104 typedef mediump_vec2 vec2; +00105 +00109 typedef mediump_vec3 vec3; +00110 +00114 typedef mediump_vec4 vec4; +00115 +00119 typedef mediump_mat2x2 mat2x2; +00120 +00124 typedef mediump_mat2x3 mat2x3; +00125 +00129 typedef mediump_mat2x4 mat2x4; +00130 +00134 typedef mediump_mat3x2 mat3x2; +00135 +00139 typedef mediump_mat3x3 mat3x3; +00140 +00144 typedef mediump_mat3x4 mat3x4; +00145 +00149 typedef mediump_mat4x2 mat4x2; +00150 +00154 typedef mediump_mat4x3 mat4x3; +00155 +00159 typedef mediump_mat4x4 mat4x4; +00160 +00161 #endif//GLM_PRECISION +00162 +00166 typedef mat2x2 mat2; +00167 +00171 typedef mat3x3 mat3; +00172 +00176 typedef mat4x4 mat4; +00177 +00179 // Signed integer definition +00180 +00181 #if(defined(GLM_PRECISION_HIGHP_INT)) +00182 typedef highp_ivec2 ivec2; +00183 typedef highp_ivec3 ivec3; +00184 typedef highp_ivec4 ivec4; +00185 #elif(defined(GLM_PRECISION_MEDIUMP_INT)) +00186 typedef mediump_ivec2 ivec2; +00187 typedef mediump_ivec3 ivec3; +00188 typedef mediump_ivec4 ivec4; +00189 #elif(defined(GLM_PRECISION_LOWP_INT)) +00190 typedef lowp_ivec2 ivec2; +00191 typedef lowp_ivec3 ivec3; +00192 typedef lowp_ivec4 ivec4; +00193 #else +00194 +00195 +00196 +00197 typedef mediump_ivec2 ivec2; +00198 +00202 typedef mediump_ivec3 ivec3; +00203 +00207 typedef mediump_ivec4 ivec4; +00208 #endif//GLM_PRECISION +00209 +00211 // Unsigned integer definition +00212 +00213 #if(defined(GLM_PRECISION_HIGHP_UINT)) +00214 typedef highp_uvec2 uvec2; +00215 typedef highp_uvec3 uvec3; +00216 typedef highp_uvec4 uvec4; +00217 #elif(defined(GLM_PRECISION_MEDIUMP_UINT)) +00218 typedef mediump_uvec2 uvec2; +00219 typedef mediump_uvec3 uvec3; +00220 typedef mediump_uvec4 uvec4; +00221 #elif(defined(GLM_PRECISION_LOWP_UINT)) +00222 typedef lowp_uvec2 uvec2; +00223 typedef lowp_uvec3 uvec3; +00224 typedef lowp_uvec4 uvec4; +00225 #else +00226 +00227 +00228 +00229 typedef mediump_uvec2 uvec2; +00230 +00234 typedef mediump_uvec3 uvec3; +00235 +00239 typedef mediump_uvec4 uvec4; +00240 #endif//GLM_PRECISION +00241 +00243 // Boolean definition +00244 +00248 typedef detail::tvec2<bool> bvec2; +00249 +00253 typedef detail::tvec3<bool> bvec3; +00254 +00258 typedef detail::tvec4<bool> bvec4; +00259 +00261 // Double definition +00262 +00266 typedef detail::tvec2<double> dvec2; +00267 +00271 typedef detail::tvec3<double> dvec3; +00272 +00276 typedef detail::tvec4<double> dvec4; +00277 +00281 typedef detail::tmat2x2<double> dmat2; +00282 +00286 typedef detail::tmat3x3<double> dmat3; +00287 +00291 typedef detail::tmat4x4<double> dmat4; +00292 +00296 typedef detail::tmat2x2<double> dmat2x2; +00297 +00301 typedef detail::tmat2x3<double> dmat2x3; +00302 +00306 typedef detail::tmat2x4<double> dmat2x4; +00307 +00311 typedef detail::tmat3x2<double> dmat3x2; +00312 +00316 typedef detail::tmat3x3<double> dmat3x3; +00317 +00321 typedef detail::tmat3x4<double> dmat3x4; +00322 +00326 typedef detail::tmat4x2<double> dmat4x2; +00327 +00331 typedef detail::tmat4x3<double> dmat4x3; +00332 +00336 typedef detail::tmat4x4<double> dmat4x4; +00337 +00339 }//namespace glm +00340 +00341 #endif//glm_core_type +
+ + + + + + + |
Go to the source code of this file.
++Typedefs | |
typedef highp_float_t | highp_float |
typedef lowp_float_t | lowp_float |
typedef mediump_float_t | mediump_float |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_float.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_float +00030 #define glm_core_type_float +00031 +00032 #include "type_half.hpp" +00033 #include "setup.hpp" +00034 +00035 namespace glm +00036 { +00037 #ifdef GLM_USE_HALF_SCALAR +00038 typedef detail::half lowp_float_t; +00039 #else//GLM_USE_HALF_SCALAR +00040 typedef float lowp_float_t; +00041 #endif//GLM_USE_HALF_SCALAR +00042 typedef float mediump_float_t; +00043 typedef double highp_float_t; +00044 +00047 +00053 typedef lowp_float_t lowp_float; +00054 +00060 typedef mediump_float_t mediump_float; +00061 +00067 typedef highp_float_t highp_float; +00068 +00069 #if(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT)) +00070 typedef mediump_float float_t; +00071 #elif(defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT)) +00072 typedef highp_float float_t; +00073 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT)) +00074 typedef mediump_float float_t; +00075 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && defined(GLM_PRECISION_LOWP_FLOAT)) +00076 typedef lowp_float float_t; +00077 #else +00078 # error "GLM error: multiple default precision requested for floating-point types" +00079 #endif +00080 +00082 }//namespace glm +00083 +00084 #endif//glm_core_type_float +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_gentype.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_gentype +00030 #define glm_core_type_gentype +00031 +00032 #include "type_size.hpp" +00033 +00034 namespace glm +00035 { +00036 enum profile +00037 { +00038 nice, +00039 fast, +00040 simd +00041 }; +00042 +00043 namespace detail +00044 { +00045 template +00046 < +00047 typename VALTYPE, +00048 template <typename> class TYPE +00049 > +00050 struct genType +00051 { +00052 public: +00053 enum ctor{null}; +00054 +00055 typedef VALTYPE value_type; +00056 typedef VALTYPE & value_reference; +00057 typedef VALTYPE * value_pointer; +00058 typedef VALTYPE const * value_const_pointer; +00059 typedef TYPE<bool> bool_type; +00060 +00061 typedef sizeType size_type; +00062 static bool is_vector(); +00063 static bool is_matrix(); +00064 +00065 typedef TYPE<VALTYPE> type; +00066 typedef TYPE<VALTYPE> * pointer; +00067 typedef TYPE<VALTYPE> const * const_pointer; +00068 typedef TYPE<VALTYPE> const * const const_pointer_const; +00069 typedef TYPE<VALTYPE> * const pointer_const; +00070 typedef TYPE<VALTYPE> & reference; +00071 typedef TYPE<VALTYPE> const & const_reference; +00072 typedef TYPE<VALTYPE> const & param_type; +00073 +00075 // Address (Implementation details) +00076 +00077 value_const_pointer value_address() const{return value_pointer(this);} +00078 value_pointer value_address(){return value_pointer(this);} +00079 +00080 //protected: +00081 // enum kind +00082 // { +00083 // GEN_TYPE, +00084 // VEC_TYPE, +00085 // MAT_TYPE +00086 // }; +00087 +00088 // typedef typename TYPE::kind kind; +00089 }; +00090 +00091 template +00092 < +00093 typename VALTYPE, +00094 template <typename> class TYPE +00095 > +00096 bool genType<VALTYPE, TYPE>::is_vector() +00097 { +00098 return true; +00099 } +00100 /* +00101 template <typename valTypeT, unsigned int colT, unsigned int rowT, profile proT = nice> +00102 class base +00103 { +00104 public: +00106 // Traits +00107 +00108 typedef sizeType size_type; +00109 typedef valTypeT value_type; +00110 +00111 typedef base<value_type, colT, rowT> class_type; +00112 +00113 typedef base<bool, colT, rowT> bool_type; +00114 typedef base<value_type, rowT, 1> col_type; +00115 typedef base<value_type, colT, 1> row_type; +00116 typedef base<value_type, rowT, colT> transpose_type; +00117 +00118 static size_type col_size(); +00119 static size_type row_size(); +00120 static size_type value_size(); +00121 static bool is_scalar(); +00122 static bool is_vector(); +00123 static bool is_matrix(); +00124 +00125 private: +00126 // Data +00127 col_type value[colT]; +00128 +00129 public: +00131 // Constructors +00132 base(); +00133 base(class_type const & m); +00134 +00135 explicit base(value_type const & x); +00136 explicit base(value_type const * const x); +00137 explicit base(col_type const * const x); +00138 +00140 // Conversions +00141 template <typename vU, uint cU, uint rU, profile pU> +00142 explicit base(base<vU, cU, rU, pU> const & m); +00143 +00145 // Accesses +00146 col_type& operator[](size_type i); +00147 col_type const & operator[](size_type i) const; +00148 +00150 // Unary updatable operators +00151 class_type& operator= (class_type const & x); +00152 class_type& operator+= (value_type const & x); +00153 class_type& operator+= (class_type const & x); +00154 class_type& operator-= (value_type const & x); +00155 class_type& operator-= (class_type const & x); +00156 class_type& operator*= (value_type const & x); +00157 class_type& operator*= (class_type const & x); +00158 class_type& operator/= (value_type const & x); +00159 class_type& operator/= (class_type const & x); +00160 class_type& operator++ (); +00161 class_type& operator-- (); +00162 }; +00163 */ +00164 }//namespace detail +00165 }//namespace glm +00166 +00167 //#include "type_gentype.inl" +00168 +00169 #endif//glm_core_type_gentype +
+ + + + + + + |
Go to the source code of this file.
++Classes | |
class | half |
16-bit floating point type. More... |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_half.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_half +00030 #define glm_core_type_half +00031 +00032 #include <cstdlib> +00033 +00034 namespace glm{ +00035 namespace detail +00036 { +00037 typedef short hdata; +00038 +00039 float toFloat32(hdata value); +00040 hdata toFloat16(float const & value); +00041 +00044 class half +00045 { +00046 public: +00047 // Constructors +00048 GLM_FUNC_DECL half(); +00049 GLM_FUNC_DECL half(half const & s); +00050 +00051 template <typename U> +00052 GLM_FUNC_DECL explicit half(U const & s); +00053 +00054 // Cast +00055 template <typename U> +00056 GLM_FUNC_DECL operator U() const; +00057 +00058 // Unary updatable operators +00059 GLM_FUNC_DECL half& operator= (half const & s); +00060 GLM_FUNC_DECL half& operator+=(half const & s); +00061 GLM_FUNC_DECL half& operator-=(half const & s); +00062 GLM_FUNC_DECL half& operator*=(half const & s); +00063 GLM_FUNC_DECL half& operator/=(half const & s); +00064 GLM_FUNC_DECL half& operator++(); +00065 GLM_FUNC_DECL half& operator--(); +00066 +00067 GLM_FUNC_DECL float toFloat() const{return toFloat32(data);} +00068 +00069 GLM_FUNC_DECL hdata _data() const{return data;} +00070 +00071 private: +00072 hdata data; +00073 }; +00074 +00075 half operator+ (half const & s1, half const & s2); +00076 +00077 half operator- (half const & s1, half const & s2); +00078 +00079 half operator* (half const & s1, half const & s2); +00080 +00081 half operator/ (half const & s1, half const & s2); +00082 +00083 // Unary constant operators +00084 half operator- (half const & s); +00085 +00086 half operator-- (half const & s, int); +00087 +00088 half operator++ (half const & s, int); +00089 +00090 bool operator==( +00091 detail::half const & x, +00092 detail::half const & y); +00093 +00094 bool operator!=( +00095 detail::half const & x, +00096 detail::half const & y); +00097 +00098 bool operator<( +00099 detail::half const & x, +00100 detail::half const & y); +00101 +00102 bool operator<=( +00103 detail::half const & x, +00104 detail::half const & y); +00105 +00106 bool operator>( +00107 detail::half const & x, +00108 detail::half const & y); +00109 +00110 bool operator>=( +00111 detail::half const & x, +00112 detail::half const & y); +00113 +00114 }//namespace detail +00115 }//namespace glm +00116 +00117 #include "type_half.inl" +00118 +00119 #endif//glm_core_type_half +
+ + + + + + + |
Go to the source code of this file.
++Typedefs | |
typedef detail::highp_int_t | highp_int |
typedef detail::highp_uint_t | highp_uint |
typedef detail::lowp_int_t | lowp_int |
typedef detail::lowp_uint_t | lowp_uint |
typedef detail::mediump_int_t | mediump_int |
typedef detail::mediump_uint_t | mediump_uint |
typedef uint_t | uint |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_int.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_int +00030 #define glm_core_type_int +00031 +00032 #include "setup.hpp" +00033 #include "_detail.hpp" +00034 +00035 namespace glm{ +00036 namespace detail +00037 { +00038 typedef signed short lowp_int_t; +00039 typedef signed int mediump_int_t; +00040 typedef sint64 highp_int_t; +00041 +00042 typedef unsigned short lowp_uint_t; +00043 typedef unsigned int mediump_uint_t; +00044 typedef uint64 highp_uint_t; +00045 +00046 GLM_DETAIL_IS_INT(signed char); +00047 GLM_DETAIL_IS_INT(signed short); +00048 GLM_DETAIL_IS_INT(signed int); +00049 GLM_DETAIL_IS_INT(signed long); +00050 GLM_DETAIL_IS_INT(highp_int_t); +00051 +00052 GLM_DETAIL_IS_UINT(unsigned char); +00053 GLM_DETAIL_IS_UINT(unsigned short); +00054 GLM_DETAIL_IS_UINT(unsigned int); +00055 GLM_DETAIL_IS_UINT(unsigned long); +00056 GLM_DETAIL_IS_UINT(highp_uint_t); +00057 }//namespace detail +00058 +00061 +00067 typedef detail::lowp_int_t lowp_int; +00068 +00074 typedef detail::mediump_int_t mediump_int; +00075 +00081 typedef detail::highp_int_t highp_int; +00082 +00088 typedef detail::lowp_uint_t lowp_uint; +00089 +00095 typedef detail::mediump_uint_t mediump_uint; +00096 +00102 typedef detail::highp_uint_t highp_uint; +00103 +00104 #if(!defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT)) +00105 typedef mediump_int int_t; +00106 #elif(defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT)) +00107 typedef highp_int int_t; +00108 #elif(!defined(GLM_PRECISION_HIGHP_INT) && defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT)) +00109 typedef mediump_int int_t; +00110 #elif(!defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && defined(GLM_PRECISION_LOWP_INT)) +00111 typedef lowp_int int_t; +00112 #else +00113 # error "GLM error: multiple default precision requested for signed interger types" +00114 #endif +00115 +00116 #if(!defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT)) +00117 typedef mediump_uint uint_t; +00118 #elif(defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT)) +00119 typedef highp_uint uint_t; +00120 #elif(!defined(GLM_PRECISION_HIGHP_UINT) && defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT)) +00121 typedef mediump_uint uint_t; +00122 #elif(!defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && defined(GLM_PRECISION_LOWP_UINT)) +00123 typedef lowp_uint uint_t; +00124 #else +00125 # error "GLM error: multiple default precision requested for unsigned interger types" +00126 #endif +00127 +00131 typedef uint_t uint; +00132 +00134 +00135 }//namespace glm +00136 +00137 #endif//glm_core_type_int +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_mat.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_mat +00030 #define glm_core_type_mat +00031 +00032 #include "type_gentype.hpp" +00033 +00034 namespace glm{ +00035 namespace detail +00036 { +00037 //template +00038 //< +00039 // typename T, +00040 // template <typename> class C, +00041 // template <typename> class R +00042 //> +00043 //struct matType +00044 //{ +00045 // enum ctor{null}; +00046 // typedef T value_type; +00047 // typedef std::size_t size_type; +00048 // typedef C<T> col_type; +00049 // typedef R<T> row_type; +00050 // static size_type const col_size; +00051 // static size_type const row_size; +00052 //}; +00053 +00054 //template +00055 //< +00056 // typename T, +00057 // template <typename> class C, +00058 // template <typename> class R +00059 //> +00060 //typename matType<T, C, R>::size_type const +00061 //matType<T, C, R>::col_size = matType<T, C, R>::col_type::value_size; +00062 +00063 //template +00064 //< +00065 // typename T, +00066 // template <typename> class C, +00067 // template <typename> class R +00068 //> +00069 //typename matType<T, C, R>::size_type const +00070 //matType<T, C, R>::row_size = matType<T, C, R>::row_type::value_size; +00071 +00072 }//namespace detail +00073 }//namespace glm +00074 +00075 #endif//glm_core_type_mat +
+ + + + + + + |
Go to the source code of this file.
++Typedefs | |
typedef detail::tmat2x2 +< highp_float > | highp_mat2 |
typedef detail::tmat2x2 +< highp_float > | highp_mat2x2 |
typedef detail::tmat2x2 +< lowp_float > | lowp_mat2 |
typedef detail::tmat2x2 +< lowp_float > | lowp_mat2x2 |
typedef detail::tmat2x2 +< mediump_float > | mediump_mat2 |
typedef detail::tmat2x2 +< mediump_float > | mediump_mat2x2 |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_mat2x2.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_mat2x2 +00030 #define glm_core_type_mat2x2 +00031 +00032 #include "type_mat.hpp" +00033 +00034 namespace glm{ +00035 namespace detail +00036 { +00037 template <typename T> struct tvec1; +00038 template <typename T> struct tvec2; +00039 template <typename T> struct tvec3; +00040 template <typename T> struct tvec4; +00041 template <typename T> struct tmat2x2; +00042 template <typename T> struct tmat2x3; +00043 template <typename T> struct tmat2x4; +00044 template <typename T> struct tmat3x2; +00045 template <typename T> struct tmat3x3; +00046 template <typename T> struct tmat3x4; +00047 template <typename T> struct tmat4x2; +00048 template <typename T> struct tmat4x3; +00049 template <typename T> struct tmat4x4; +00050 +00051 // @brief Template for 2 * 2 matrix of floating-point numbers. +00052 // @ingroup core_template +00053 template <typename T> +00054 struct tmat2x2 +00055 { +00056 // Implementation detail +00057 enum ctor{null}; +00058 typedef T value_type; +00059 typedef std::size_t size_type; +00060 typedef tvec2<T> col_type; +00061 typedef tvec2<T> row_type; +00062 static GLM_FUNC_DECL size_type col_size(); +00063 static GLM_FUNC_DECL size_type row_size(); +00064 +00065 typedef tmat2x2<T> type; +00066 typedef tmat2x2<T> transpose_type; +00067 +00068 GLM_FUNC_DECL size_type length() const; +00069 +00070 public: +00071 // Implementation detail +00072 GLM_FUNC_DECL tmat2x2<T> _inverse() const; +00073 +00074 private: +00076 // Implementation detail +00077 col_type value[2]; +00078 +00079 public: +00081 // Constructors +00082 GLM_FUNC_DECL tmat2x2(); +00083 GLM_FUNC_DECL tmat2x2( +00084 tmat2x2 const & m); +00085 +00086 GLM_FUNC_DECL explicit tmat2x2( +00087 ctor Null); +00088 GLM_FUNC_DECL explicit tmat2x2( +00089 value_type const & x); +00090 GLM_FUNC_DECL explicit tmat2x2( +00091 value_type const & x1, value_type const & y1, +00092 value_type const & x2, value_type const & y2); +00093 GLM_FUNC_DECL explicit tmat2x2( +00094 col_type const & v1, +00095 col_type const & v2); +00096 +00098 // Conversions +00099 template <typename U> +00100 GLM_FUNC_DECL explicit tmat2x2( +00101 U const & x); +00102 +00103 template <typename U, typename V, typename M, typename N> +00104 GLM_FUNC_DECL explicit tmat2x2( +00105 U const & x1, V const & y1, +00106 M const & x2, N const & y2); +00107 +00108 template <typename U, typename V> +00109 GLM_FUNC_DECL explicit tmat2x2( +00110 tvec2<U> const & v1, +00111 tvec2<V> const & v2); +00112 +00114 // Matrix conversions +00115 template <typename U> +00116 GLM_FUNC_DECL explicit tmat2x2(tmat2x2<U> const & m); +00117 +00118 GLM_FUNC_DECL explicit tmat2x2(tmat3x3<T> const & x); +00119 GLM_FUNC_DECL explicit tmat2x2(tmat4x4<T> const & x); +00120 GLM_FUNC_DECL explicit tmat2x2(tmat2x3<T> const & x); +00121 GLM_FUNC_DECL explicit tmat2x2(tmat3x2<T> const & x); +00122 GLM_FUNC_DECL explicit tmat2x2(tmat2x4<T> const & x); +00123 GLM_FUNC_DECL explicit tmat2x2(tmat4x2<T> const & x); +00124 GLM_FUNC_DECL explicit tmat2x2(tmat3x4<T> const & x); +00125 GLM_FUNC_DECL explicit tmat2x2(tmat4x3<T> const & x); +00126 +00128 // Accesses +00129 +00130 GLM_FUNC_DECL col_type & operator[](size_type i); +00131 GLM_FUNC_DECL col_type const & operator[](size_type i) const; +00132 +00133 // Unary updatable operators +00134 GLM_FUNC_DECL tmat2x2<T> & operator=(tmat2x2<T> const & m); +00135 template <typename U> +00136 GLM_FUNC_DECL tmat2x2<T> & operator=(tmat2x2<U> const & m); +00137 template <typename U> +00138 GLM_FUNC_DECL tmat2x2<T> & operator+=(U const & s); +00139 template <typename U> +00140 GLM_FUNC_DECL tmat2x2<T> & operator+=(tmat2x2<U> const & m); +00141 template <typename U> +00142 GLM_FUNC_DECL tmat2x2<T> & operator-=(U const & s); +00143 template <typename U> +00144 GLM_FUNC_DECL tmat2x2<T> & operator-=(tmat2x2<U> const & m); +00145 template <typename U> +00146 GLM_FUNC_DECL tmat2x2<T> & operator*=(U const & s); +00147 template <typename U> +00148 GLM_FUNC_DECL tmat2x2<T> & operator*=(tmat2x2<U> const & m); +00149 template <typename U> +00150 GLM_FUNC_DECL tmat2x2<T> & operator/=(U const & s); +00151 template <typename U> +00152 GLM_FUNC_DECL tmat2x2<T> & operator/=(tmat2x2<U> const & m); +00153 GLM_FUNC_DECL tmat2x2<T> & operator++(); +00154 GLM_FUNC_DECL tmat2x2<T> & operator--(); +00155 }; +00156 +00157 // Binary operators +00158 template <typename T> +00159 tmat2x2<T> operator+ ( +00160 tmat2x2<T> const & m, +00161 typename tmat2x2<T>::value_type const & s); +00162 +00163 template <typename T> +00164 tmat2x2<T> operator+ ( +00165 typename tmat2x2<T>::value_type const & s, +00166 tmat2x2<T> const & m); +00167 +00168 template <typename T> +00169 tmat2x2<T> operator+ ( +00170 tmat2x2<T> const & m1, +00171 tmat2x2<T> const & m2); +00172 +00173 template <typename T> +00174 tmat2x2<T> operator- ( +00175 tmat2x2<T> const & m, +00176 typename tmat2x2<T>::value_type const & s); +00177 +00178 template <typename T> +00179 tmat2x2<T> operator- ( +00180 typename tmat2x2<T>::value_type const & s, +00181 tmat2x2<T> const & m); +00182 +00183 template <typename T> +00184 tmat2x2<T> operator- ( +00185 tmat2x2<T> const & m1, +00186 tmat2x2<T> const & m2); +00187 +00188 template <typename T> +00189 tmat2x2<T> operator* ( +00190 tmat2x2<T> const & m, +00191 typename tmat2x2<T>::value_type const & s); +00192 +00193 template <typename T> +00194 tmat2x2<T> operator* ( +00195 typename tmat2x2<T>::value_type const & s, +00196 tmat2x2<T> const & m); +00197 +00198 template <typename T> +00199 typename tmat2x2<T>::col_type operator* ( +00200 tmat2x2<T> const & m, +00201 typename tmat2x2<T>::row_type const & v); +00202 +00203 template <typename T> +00204 typename tmat2x2<T>::row_type operator* ( +00205 typename tmat2x2<T>::col_type const & v, +00206 tmat2x2<T> const & m); +00207 +00208 template <typename T> +00209 tmat2x2<T> operator* ( +00210 tmat2x2<T> const & m1, +00211 tmat2x2<T> const & m2); +00212 +00213 template <typename T> +00214 tmat3x2<T> operator* ( +00215 tmat2x2<T> const & m1, +00216 tmat3x2<T> const & m2); +00217 +00218 template <typename T> +00219 tmat4x2<T> operator* ( +00220 tmat2x2<T> const & m1, +00221 tmat4x2<T> const & m2); +00222 +00223 template <typename T> +00224 tmat2x2<T> operator/ ( +00225 tmat2x2<T> const & m, +00226 typename tmat2x2<T>::value_type const & s); +00227 +00228 template <typename T> +00229 tmat2x2<T> operator/ ( +00230 typename tmat2x2<T>::value_type const & s, +00231 tmat2x2<T> const & m); +00232 +00233 template <typename T> +00234 typename tmat2x2<T>::col_type operator/ ( +00235 tmat2x2<T> const & m, +00236 typename tmat2x2<T>::row_type const & v); +00237 +00238 template <typename T> +00239 typename tmat2x2<T>::row_type operator/ ( +00240 typename tmat2x2<T>::col_type const & v, +00241 tmat2x2<T> const & m); +00242 +00243 template <typename T> +00244 tmat2x2<T> operator/ ( +00245 tmat2x2<T> const & m1, +00246 tmat2x2<T> const & m2); +00247 +00248 // Unary constant operators +00249 template <typename T> +00250 tmat2x2<T> const operator- ( +00251 tmat2x2<T> const & m); +00252 +00253 template <typename T> +00254 tmat2x2<T> const operator-- ( +00255 tmat2x2<T> const & m, +00256 int); +00257 +00258 template <typename T> +00259 tmat2x2<T> const operator++ ( +00260 tmat2x2<T> const & m, +00261 int); +00262 } //namespace detail +00263 +00266 +00272 typedef detail::tmat2x2<lowp_float> lowp_mat2; +00273 +00279 typedef detail::tmat2x2<mediump_float> mediump_mat2; +00280 +00286 typedef detail::tmat2x2<highp_float> highp_mat2; +00287 +00293 typedef detail::tmat2x2<lowp_float> lowp_mat2x2; +00294 +00300 typedef detail::tmat2x2<mediump_float> mediump_mat2x2; +00301 +00307 typedef detail::tmat2x2<highp_float> highp_mat2x2; +00308 +00310 }//namespace glm +00311 +00312 #ifndef GLM_EXTERNAL_TEMPLATE +00313 #include "type_mat2x2.inl" +00314 #endif +00315 +00316 #endif //glm_core_type_mat2x2 +
+ + + + + + + |
Go to the source code of this file.
++Typedefs | |
typedef detail::tmat2x3 +< highp_float > | highp_mat2x3 |
typedef detail::tmat2x3 +< lowp_float > | lowp_mat2x3 |
typedef detail::tmat2x3 +< mediump_float > | mediump_mat2x3 |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_mat2x3.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_mat2x3 +00030 #define glm_core_type_mat2x3 +00031 +00032 #include "type_mat.hpp" +00033 +00034 namespace glm{ +00035 namespace detail +00036 { +00037 template <typename T> struct tvec1; +00038 template <typename T> struct tvec2; +00039 template <typename T> struct tvec3; +00040 template <typename T> struct tvec4; +00041 template <typename T> struct tmat2x2; +00042 template <typename T> struct tmat2x3; +00043 template <typename T> struct tmat2x4; +00044 template <typename T> struct tmat3x2; +00045 template <typename T> struct tmat3x3; +00046 template <typename T> struct tmat3x4; +00047 template <typename T> struct tmat4x2; +00048 template <typename T> struct tmat4x3; +00049 template <typename T> struct tmat4x4; +00050 +00051 // \brief Template for 2 columns and 3 rows matrix of floating-point numbers. +00052 // \ingroup core_template +00053 template <typename T> +00054 struct tmat2x3 +00055 { +00056 enum ctor{null}; +00057 typedef T value_type; +00058 typedef std::size_t size_type; +00059 typedef tvec3<T> col_type; +00060 typedef tvec2<T> row_type; +00061 GLM_FUNC_DECL size_type length() const; +00062 static GLM_FUNC_DECL size_type col_size(); +00063 static GLM_FUNC_DECL size_type row_size(); +00064 +00065 typedef tmat2x3<T> type; +00066 typedef tmat3x2<T> transpose_type; +00067 +00068 private: +00069 // Data +00070 col_type value[2]; +00071 +00072 public: +00073 // Constructors +00074 GLM_FUNC_DECL tmat2x3(); +00075 GLM_FUNC_DECL tmat2x3(tmat2x3 const & m); +00076 +00077 GLM_FUNC_DECL explicit tmat2x3( +00078 ctor); +00079 GLM_FUNC_DECL explicit tmat2x3( +00080 value_type const & s); +00081 GLM_FUNC_DECL explicit tmat2x3( +00082 value_type const & x0, value_type const & y0, value_type const & z0, +00083 value_type const & x1, value_type const & y1, value_type const & z1); +00084 GLM_FUNC_DECL explicit tmat2x3( +00085 col_type const & v0, +00086 col_type const & v1); +00087 +00089 // Conversions +00090 template <typename U> +00091 GLM_FUNC_DECL explicit tmat2x3( +00092 U const & x); +00093 +00094 template <typename X1, typename Y1, typename Z1, typename X2, typename Y2, typename Z2> +00095 GLM_FUNC_DECL explicit tmat2x3( +00096 X1 const & x1, Y1 const & y1, Z1 const & z1, +00097 X2 const & x2, Y2 const & y2, Z2 const & z2); +00098 +00099 template <typename U, typename V> +00100 GLM_FUNC_DECL explicit tmat2x3( +00101 tvec3<U> const & v1, +00102 tvec3<V> const & v2); +00103 +00105 // Matrix conversion +00106 template <typename U> +00107 GLM_FUNC_DECL explicit tmat2x3(tmat2x3<U> const & m); +00108 +00109 GLM_FUNC_DECL explicit tmat2x3(tmat2x2<T> const & x); +00110 GLM_FUNC_DECL explicit tmat2x3(tmat3x3<T> const & x); +00111 GLM_FUNC_DECL explicit tmat2x3(tmat4x4<T> const & x); +00112 GLM_FUNC_DECL explicit tmat2x3(tmat2x4<T> const & x); +00113 GLM_FUNC_DECL explicit tmat2x3(tmat3x2<T> const & x); +00114 GLM_FUNC_DECL explicit tmat2x3(tmat3x4<T> const & x); +00115 GLM_FUNC_DECL explicit tmat2x3(tmat4x2<T> const & x); +00116 GLM_FUNC_DECL explicit tmat2x3(tmat4x3<T> const & x); +00117 +00118 // Accesses +00119 col_type & operator[](size_type i); +00120 col_type const & operator[](size_type i) const; +00121 +00122 // Unary updatable operators +00123 GLM_FUNC_DECL tmat2x3<T> & operator= (tmat2x3<T> const & m); +00124 template <typename U> +00125 GLM_FUNC_DECL tmat2x3<T> & operator= (tmat2x3<U> const & m); +00126 template <typename U> +00127 GLM_FUNC_DECL tmat2x3<T> & operator+= (U const & s); +00128 template <typename U> +00129 GLM_FUNC_DECL tmat2x3<T> & operator+= (tmat2x3<U> const & m); +00130 template <typename U> +00131 GLM_FUNC_DECL tmat2x3<T> & operator-= (U const & s); +00132 template <typename U> +00133 GLM_FUNC_DECL tmat2x3<T> & operator-= (tmat2x3<U> const & m); +00134 template <typename U> +00135 GLM_FUNC_DECL tmat2x3<T> & operator*= (U const & s); +00136 template <typename U> +00137 GLM_FUNC_DECL tmat2x3<T> & operator*= (tmat2x3<U> const & m); +00138 template <typename U> +00139 GLM_FUNC_DECL tmat2x3<T> & operator/= (U const & s); +00140 +00141 GLM_FUNC_DECL tmat2x3<T> & operator++ (); +00142 GLM_FUNC_DECL tmat2x3<T> & operator-- (); +00143 }; +00144 +00145 // Binary operators +00146 template <typename T> +00147 tmat2x3<T> operator+ ( +00148 tmat2x3<T> const & m, +00149 typename tmat2x3<T>::value_type const & s); +00150 +00151 template <typename T> +00152 tmat2x3<T> operator+ ( +00153 tmat2x3<T> const & m1, +00154 tmat2x3<T> const & m2); +00155 +00156 template <typename T> +00157 tmat2x3<T> operator- ( +00158 tmat2x3<T> const & m, +00159 typename tmat2x3<T>::value_type const & s); +00160 +00161 template <typename T> +00162 tmat2x3<T> operator- ( +00163 tmat2x3<T> const & m1, +00164 tmat2x3<T> const & m2); +00165 +00166 template <typename T> +00167 tmat2x3<T> operator* ( +00168 tmat2x3<T> const & m, +00169 typename tmat2x3<T>::value_type const & s); +00170 +00171 template <typename T> +00172 tmat2x3<T> operator* ( +00173 typename tmat2x3<T>::value_type const & s, +00174 tmat2x3<T> const & m); +00175 +00176 template <typename T> +00177 typename tmat2x3<T>::col_type operator* ( +00178 tmat2x3<T> const & m, +00179 typename tmat2x3<T>::row_type const & v); +00180 +00181 template <typename T> +00182 typename tmat2x3<T>::row_type operator* ( +00183 typename tmat2x3<T>::col_type const & v, +00184 tmat2x3<T> const & m); +00185 +00186 template <typename T> +00187 tmat2x3<T> operator* ( +00188 tmat2x3<T> const & m1, +00189 tmat2x2<T> const & m2); +00190 +00191 template <typename T> +00192 tmat3x3<T> operator* ( +00193 tmat2x3<T> const & m1, +00194 tmat3x2<T> const & m2); +00195 +00196 template <typename T> +00197 tmat4x3<T> operator* ( +00198 tmat2x3<T> const & m1, +00199 tmat4x2<T> const & m2); +00200 +00201 template <typename T> +00202 tmat2x3<T> operator/ ( +00203 tmat2x3<T> const & m, +00204 typename tmat2x3<T>::value_type const & s); +00205 +00206 template <typename T> +00207 tmat2x3<T> operator/ ( +00208 typename tmat2x3<T>::value_type const & s, +00209 tmat2x3<T> const & m); +00210 +00211 // Unary constant operators +00212 template <typename T> +00213 tmat2x3<T> const operator- ( +00214 tmat2x3<T> const & m); +00215 +00216 template <typename T> +00217 tmat2x3<T> const operator-- ( +00218 tmat2x3<T> const & m, +00219 int); +00220 +00221 template <typename T> +00222 tmat2x3<T> const operator++ ( +00223 tmat2x3<T> const & m, +00224 int); +00225 +00226 } //namespace detail +00227 +00230 +00236 typedef detail::tmat2x3<lowp_float> lowp_mat2x3; +00237 +00243 typedef detail::tmat2x3<mediump_float> mediump_mat2x3; +00244 +00250 typedef detail::tmat2x3<highp_float> highp_mat2x3; +00251 +00253 }//namespace glm +00254 +00255 #ifndef GLM_EXTERNAL_TEMPLATE +00256 #include "type_mat2x3.inl" +00257 #endif +00258 +00259 #endif //glm_core_type_mat2x3 +
+ + + + + + + |
Go to the source code of this file.
++Typedefs | |
typedef detail::tmat2x4 +< highp_float > | highp_mat2x4 |
typedef detail::tmat2x4 +< lowp_float > | lowp_mat2x4 |
typedef detail::tmat2x4 +< mediump_float > | mediump_mat2x4 |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_mat2x4.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_mat2x4 +00030 #define glm_core_type_mat2x4 +00031 +00032 #include "type_mat.hpp" +00033 +00034 namespace glm{ +00035 namespace detail +00036 { +00037 template <typename T> struct tvec1; +00038 template <typename T> struct tvec2; +00039 template <typename T> struct tvec3; +00040 template <typename T> struct tvec4; +00041 template <typename T> struct tmat2x2; +00042 template <typename T> struct tmat2x3; +00043 template <typename T> struct tmat2x4; +00044 template <typename T> struct tmat3x2; +00045 template <typename T> struct tmat3x3; +00046 template <typename T> struct tmat3x4; +00047 template <typename T> struct tmat4x2; +00048 template <typename T> struct tmat4x3; +00049 template <typename T> struct tmat4x4; +00050 +00051 // Template for 2 columns and 4 rows matrix of floating-point numbers. +00052 // \ingroup core_template +00053 template <typename T> +00054 struct tmat2x4 +00055 { +00056 enum ctor{null}; +00057 typedef T value_type; +00058 typedef std::size_t size_type; +00059 typedef tvec4<T> col_type; +00060 typedef tvec2<T> row_type; +00061 GLM_FUNC_DECL size_type length() const; +00062 static GLM_FUNC_DECL size_type col_size(); +00063 static GLM_FUNC_DECL size_type row_size(); +00064 +00065 typedef tmat2x4<T> type; +00066 typedef tmat4x2<T> transpose_type; +00067 +00068 private: +00069 // Data +00070 col_type value[2]; +00071 +00072 public: +00073 // Constructors +00074 GLM_FUNC_DECL tmat2x4(); +00075 GLM_FUNC_DECL tmat2x4(tmat2x4 const & m); +00076 +00077 GLM_FUNC_DECL explicit tmat2x4( +00078 ctor); +00079 GLM_FUNC_DECL explicit tmat2x4( +00080 value_type const & s); +00081 GLM_FUNC_DECL explicit tmat2x4( +00082 value_type const & x0, value_type const & y0, value_type const & z0, value_type const & w0, +00083 value_type const & x1, value_type const & y1, value_type const & z1, value_type const & w1); +00084 GLM_FUNC_DECL explicit tmat2x4( +00085 col_type const & v0, +00086 col_type const & v1); +00087 +00089 // Conversions +00090 template <typename U> +00091 GLM_FUNC_DECL explicit tmat2x4( +00092 U const & x); +00093 +00094 template < +00095 typename X1, typename Y1, typename Z1, typename W1, +00096 typename X2, typename Y2, typename Z2, typename W2> +00097 GLM_FUNC_DECL explicit tmat2x4( +00098 X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1, +00099 X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2); +00100 +00101 template <typename U, typename V> +00102 GLM_FUNC_DECL explicit tmat2x4( +00103 tvec4<U> const & v1, +00104 tvec4<V> const & v2); +00105 +00107 // Matrix conversions +00108 template <typename U> +00109 GLM_FUNC_DECL explicit tmat2x4(tmat2x4<U> const & m); +00110 +00111 GLM_FUNC_DECL explicit tmat2x4(tmat2x2<T> const & x); +00112 GLM_FUNC_DECL explicit tmat2x4(tmat3x3<T> const & x); +00113 GLM_FUNC_DECL explicit tmat2x4(tmat4x4<T> const & x); +00114 GLM_FUNC_DECL explicit tmat2x4(tmat2x3<T> const & x); +00115 GLM_FUNC_DECL explicit tmat2x4(tmat3x2<T> const & x); +00116 GLM_FUNC_DECL explicit tmat2x4(tmat3x4<T> const & x); +00117 GLM_FUNC_DECL explicit tmat2x4(tmat4x2<T> const & x); +00118 GLM_FUNC_DECL explicit tmat2x4(tmat4x3<T> const & x); +00119 +00120 // Accesses +00121 GLM_FUNC_DECL col_type & operator[](size_type i); +00122 GLM_FUNC_DECL col_type const & operator[](size_type i) const; +00123 +00124 // Unary updatable operators +00125 GLM_FUNC_DECL tmat2x4<T>& operator= (tmat2x4<T> const & m); +00126 template <typename U> +00127 GLM_FUNC_DECL tmat2x4<T>& operator= (tmat2x4<U> const & m); +00128 template <typename U> +00129 GLM_FUNC_DECL tmat2x4<T>& operator+= (U const & s); +00130 template <typename U> +00131 GLM_FUNC_DECL tmat2x4<T>& operator+= (tmat2x4<U> const & m); +00132 template <typename U> +00133 GLM_FUNC_DECL tmat2x4<T>& operator-= (U const & s); +00134 template <typename U> +00135 GLM_FUNC_DECL tmat2x4<T>& operator-= (tmat2x4<U> const & m); +00136 template <typename U> +00137 GLM_FUNC_DECL tmat2x4<T>& operator*= (U const & s); +00138 template <typename U> +00139 GLM_FUNC_DECL tmat2x4<T>& operator*= (tmat2x4<U> const & m); +00140 template <typename U> +00141 GLM_FUNC_DECL tmat2x4<T>& operator/= (U const & s); +00142 +00143 GLM_FUNC_DECL tmat2x4<T>& operator++ (); +00144 GLM_FUNC_DECL tmat2x4<T>& operator-- (); +00145 }; +00146 +00147 // Binary operators +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 tmat2x4<T> const & m1, +00156 tmat2x4<T> const & m2); +00157 +00158 template <typename T> +00159 tmat2x4<T> operator- ( +00160 tmat2x4<T> const & m, +00161 typename tmat2x4<T>::value_type const & s); +00162 +00163 template <typename T> +00164 tmat2x4<T> operator- ( +00165 tmat2x4<T> const & m1, +00166 tmat2x4<T> const & m2); +00167 +00168 template <typename T> +00169 tmat2x4<T> operator* ( +00170 tmat2x4<T> const & m, +00171 typename tmat2x4<T>::value_type const & s); +00172 +00173 template <typename T> +00174 tmat2x4<T> operator* ( +00175 typename tmat2x4<T>::value_type const & s, +00176 tmat2x4<T> const & m); +00177 +00178 template <typename T> +00179 typename tmat2x4<T>::col_type operator* ( +00180 tmat2x4<T> const & m, +00181 typename tmat2x4<T>::row_type const & v); +00182 +00183 template <typename T> +00184 typename tmat2x4<T>::row_type operator* ( +00185 typename tmat2x4<T>::col_type const & v, +00186 tmat2x4<T> const & m); +00187 +00188 template <typename T> +00189 tmat4x4<T> operator* ( +00190 tmat2x4<T> const & m1, +00191 tmat4x2<T> const & m2); +00192 +00193 template <typename T> +00194 tmat2x4<T> operator* ( +00195 tmat2x4<T> const & m1, +00196 tmat2x2<T> const & m2); +00197 +00198 template <typename T> +00199 tmat3x4<T> operator* ( +00200 tmat2x4<T> const & m1, +00201 tmat3x2<T> const & m2); +00202 +00203 template <typename T> +00204 tmat2x4<T> operator/ ( +00205 tmat2x4<T> const & m, +00206 typename tmat2x4<T>::value_type const & s); +00207 +00208 template <typename T> +00209 tmat2x4<T> operator/ ( +00210 typename tmat2x4<T>::value_type const & s, +00211 tmat2x4<T> const & m); +00212 +00213 // Unary constant operators +00214 template <typename T> +00215 tmat2x4<T> const operator- ( +00216 tmat2x4<T> const & m); +00217 +00218 template <typename T> +00219 tmat2x4<T> const operator-- ( +00220 tmat2x4<T> const & m, +00221 int); +00222 +00223 template <typename T> +00224 tmat2x4<T> const operator++ ( +00225 tmat2x4<T> const & m, +00226 int); +00227 +00228 } //namespace detail +00229 +00232 +00238 typedef detail::tmat2x4<lowp_float> lowp_mat2x4; +00239 +00245 typedef detail::tmat2x4<mediump_float> mediump_mat2x4; +00246 +00252 typedef detail::tmat2x4<highp_float> highp_mat2x4; +00253 +00255 }//namespace glm +00256 +00257 #ifndef GLM_EXTERNAL_TEMPLATE +00258 #include "type_mat2x4.inl" +00259 #endif +00260 +00261 #endif //glm_core_type_mat2x4 +
+ + + + + + + |
Go to the source code of this file.
++Typedefs | |
typedef detail::tmat3x2 +< highp_float > | highp_mat3x2 |
typedef detail::tmat3x2 +< lowp_float > | lowp_mat3x2 |
typedef detail::tmat3x2 +< mediump_float > | mediump_mat3x2 |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_mat3x2.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_mat3x2 +00030 #define glm_core_type_mat3x2 +00031 +00032 #include "type_mat.hpp" +00033 +00034 namespace glm{ +00035 namespace detail +00036 { +00037 template <typename T> struct tvec1; +00038 template <typename T> struct tvec2; +00039 template <typename T> struct tvec3; +00040 template <typename T> struct tvec4; +00041 template <typename T> struct tmat2x2; +00042 template <typename T> struct tmat2x3; +00043 template <typename T> struct tmat2x4; +00044 template <typename T> struct tmat3x2; +00045 template <typename T> struct tmat3x3; +00046 template <typename T> struct tmat3x4; +00047 template <typename T> struct tmat4x2; +00048 template <typename T> struct tmat4x3; +00049 template <typename T> struct tmat4x4; +00050 +00051 // \brief Template for 3 columns and 2 rows matrix of floating-point numbers. +00052 // \ingroup core_template +00053 template <typename T> +00054 struct tmat3x2 +00055 { +00056 enum ctor{null}; +00057 typedef T value_type; +00058 typedef std::size_t size_type; +00059 typedef tvec2<T> col_type; +00060 typedef tvec3<T> row_type; +00061 GLM_FUNC_DECL size_type length() const; +00062 static GLM_FUNC_DECL size_type col_size(); +00063 static GLM_FUNC_DECL size_type row_size(); +00064 +00065 typedef tmat3x2<T> type; +00066 typedef tmat2x3<T> transpose_type; +00067 +00068 private: +00069 // Data +00070 col_type value[3]; +00071 +00072 public: +00073 // Constructors +00074 GLM_FUNC_DECL tmat3x2(); +00075 GLM_FUNC_DECL tmat3x2(tmat3x2 const & m); +00076 +00077 GLM_FUNC_DECL explicit tmat3x2( +00078 ctor); +00079 GLM_FUNC_DECL explicit tmat3x2( +00080 value_type const & s); +00081 GLM_FUNC_DECL explicit tmat3x2( +00082 value_type const & x0, value_type const & y0, +00083 value_type const & x1, value_type const & y1, +00084 value_type const & x2, value_type const & y2); +00085 GLM_FUNC_DECL explicit tmat3x2( +00086 col_type const & v0, +00087 col_type const & v1, +00088 col_type const & v2); +00089 +00091 // Conversions +00092 template <typename U> +00093 GLM_FUNC_DECL explicit tmat3x2( +00094 U const & x); +00095 +00096 template +00097 < +00098 typename X1, typename Y1, +00099 typename X2, typename Y2, +00100 typename X3, typename Y3 +00101 > +00102 GLM_FUNC_DECL explicit tmat3x2( +00103 X1 const & x1, Y1 const & y1, +00104 X2 const & x2, Y2 const & y2, +00105 X3 const & x3, Y3 const & y3); +00106 +00107 template <typename V1, typename V2, typename V3> +00108 GLM_FUNC_DECL explicit tmat3x2( +00109 tvec2<V1> const & v1, +00110 tvec2<V2> const & v2, +00111 tvec2<V3> const & v3); +00112 +00113 // Matrix conversions +00114 template <typename U> +00115 GLM_FUNC_DECL explicit tmat3x2(tmat3x2<U> const & m); +00116 +00117 GLM_FUNC_DECL explicit tmat3x2(tmat2x2<T> const & x); +00118 GLM_FUNC_DECL explicit tmat3x2(tmat3x3<T> const & x); +00119 GLM_FUNC_DECL explicit tmat3x2(tmat4x4<T> const & x); +00120 GLM_FUNC_DECL explicit tmat3x2(tmat2x3<T> const & x); +00121 GLM_FUNC_DECL explicit tmat3x2(tmat2x4<T> const & x); +00122 GLM_FUNC_DECL explicit tmat3x2(tmat3x4<T> const & x); +00123 GLM_FUNC_DECL explicit tmat3x2(tmat4x2<T> const & x); +00124 GLM_FUNC_DECL explicit tmat3x2(tmat4x3<T> const & x); +00125 +00126 // Accesses +00127 GLM_FUNC_DECL col_type & operator[](size_type i); +00128 GLM_FUNC_DECL col_type const & operator[](size_type i) const; +00129 +00130 // Unary updatable operators +00131 GLM_FUNC_DECL tmat3x2<T> & operator= (tmat3x2<T> const & m); +00132 template <typename U> +00133 GLM_FUNC_DECL tmat3x2<T> & operator= (tmat3x2<U> const & m); +00134 template <typename U> +00135 GLM_FUNC_DECL tmat3x2<T> & operator+= (U const & s); +00136 template <typename U> +00137 GLM_FUNC_DECL tmat3x2<T> & operator+= (tmat3x2<U> const & m); +00138 template <typename U> +00139 GLM_FUNC_DECL tmat3x2<T> & operator-= (U const & s); +00140 template <typename U> +00141 GLM_FUNC_DECL tmat3x2<T> & operator-= (tmat3x2<U> const & m); +00142 template <typename U> +00143 GLM_FUNC_DECL tmat3x2<T> & operator*= (U const & s); +00144 template <typename U> +00145 GLM_FUNC_DECL tmat3x2<T> & operator*= (tmat3x2<U> const & m); +00146 template <typename U> +00147 GLM_FUNC_DECL tmat3x2<T> & operator/= (U const & s); +00148 +00149 GLM_FUNC_DECL tmat3x2<T> & operator++ (); +00150 GLM_FUNC_DECL tmat3x2<T> & operator-- (); +00151 }; +00152 +00153 // Binary operators +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 tmat3x2<T> const & m1, +00162 tmat3x2<T> const & m2); +00163 +00164 template <typename T> +00165 tmat3x2<T> operator- ( +00166 tmat3x2<T> const & m, +00167 typename tmat3x2<T>::value_type const & s); +00168 +00169 template <typename T> +00170 tmat3x2<T> operator- ( +00171 tmat3x2<T> const & m1, +00172 tmat3x2<T> const & m2); +00173 +00174 template <typename T> +00175 tmat3x2<T> operator* ( +00176 tmat3x2<T> const & m, +00177 typename tmat3x2<T>::value_type const & s); +00178 +00179 template <typename T> +00180 tmat3x2<T> operator* ( +00181 typename tmat3x2<T>::value_type const & s, +00182 tmat3x2<T> const & m); +00183 +00184 template <typename T> +00185 typename tmat3x2<T>::col_type operator* ( +00186 tmat3x2<T> const & m, +00187 typename tmat3x2<T>::row_type const & v); +00188 +00189 template <typename T> +00190 typename tmat3x2<T>::row_type operator* ( +00191 typename tmat3x2<T>::col_type const & v, +00192 tmat3x2<T> const & m); +00193 +00194 template <typename T> +00195 tmat2x2<T> operator* ( +00196 tmat3x2<T> const & m1, +00197 tmat2x3<T> const & m2); +00198 +00199 template <typename T> +00200 tmat3x2<T> operator* ( +00201 tmat3x2<T> const & m1, +00202 tmat3x3<T> const & m2); +00203 +00204 template <typename T> +00205 tmat4x2<T> operator* ( +00206 tmat3x2<T> const & m1, +00207 tmat4x3<T> const & m2); +00208 +00209 template <typename T> +00210 tmat3x2<T> operator/ ( +00211 tmat3x2<T> const & m, +00212 typename tmat3x2<T>::value_type const & s); +00213 +00214 template <typename T> +00215 tmat3x2<T> operator/ ( +00216 typename tmat3x2<T>::value_type const & s, +00217 tmat3x2<T> const & m); +00218 +00219 // Unary constant operators +00220 template <typename T> +00221 tmat3x2<T> const operator- ( +00222 tmat3x2<T> const & m); +00223 +00224 template <typename T> +00225 tmat3x2<T> const operator-- ( +00226 tmat3x2<T> const & m, +00227 int); +00228 +00229 template <typename T> +00230 tmat3x2<T> const operator++ ( +00231 tmat3x2<T> const & m, +00232 int); +00233 +00234 } //namespace detail +00235 +00238 +00244 typedef detail::tmat3x2<lowp_float> lowp_mat3x2; +00245 +00251 typedef detail::tmat3x2<mediump_float> mediump_mat3x2; +00252 +00258 typedef detail::tmat3x2<highp_float> highp_mat3x2; +00259 +00261 }//namespace glm +00262 +00263 #ifndef GLM_EXTERNAL_TEMPLATE +00264 #include "type_mat3x2.inl" +00265 #endif +00266 +00267 #endif //glm_core_type_mat3x2 +
+ + + + + + + |
Go to the source code of this file.
++Typedefs | |
typedef detail::tmat3x3 +< highp_float > | highp_mat3 |
typedef detail::tmat3x3 +< highp_float > | highp_mat3x3 |
typedef detail::tmat3x3 +< lowp_float > | lowp_mat3 |
typedef detail::tmat3x3 +< lowp_float > | lowp_mat3x3 |
typedef detail::tmat3x3 +< mediump_float > | mediump_mat3 |
typedef detail::tmat3x3 +< mediump_float > | mediump_mat3x3 |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_mat3x3.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_mat3x3 +00030 #define glm_core_type_mat3x3 +00031 +00032 #include "type_mat.hpp" +00033 +00034 namespace glm{ +00035 namespace detail +00036 { +00037 template <typename T> struct tvec1; +00038 template <typename T> struct tvec2; +00039 template <typename T> struct tvec3; +00040 template <typename T> struct tvec4; +00041 template <typename T> struct tmat2x2; +00042 template <typename T> struct tmat2x3; +00043 template <typename T> struct tmat2x4; +00044 template <typename T> struct tmat3x2; +00045 template <typename T> struct tmat3x3; +00046 template <typename T> struct tmat3x4; +00047 template <typename T> struct tmat4x2; +00048 template <typename T> struct tmat4x3; +00049 template <typename T> struct tmat4x4; +00050 +00051 // @brief Template for 3 * 3 matrix of floating-point numbers. +00052 // @ingroup core_template +00053 template <typename T> +00054 struct tmat3x3 +00055 { +00056 enum ctor{null}; +00057 typedef T value_type; +00058 typedef std::size_t size_type; +00059 typedef tvec3<T> col_type; +00060 typedef tvec3<T> row_type; +00061 GLM_FUNC_DECL size_type length() const; +00062 static GLM_FUNC_DECL size_type col_size(); +00063 static GLM_FUNC_DECL size_type row_size(); +00064 +00065 typedef tmat3x3<T> type; +00066 typedef tmat3x3<T> transpose_type; +00067 +00068 public: +00071 GLM_FUNC_DECL tmat3x3<T> _inverse() const; +00073 +00074 private: +00075 // Data +00076 col_type value[3]; +00077 +00078 public: +00079 // Constructors +00080 GLM_FUNC_DECL tmat3x3(); +00081 GLM_FUNC_DECL tmat3x3(tmat3x3 const & m); +00082 +00083 GLM_FUNC_DECL explicit tmat3x3( +00084 ctor Null); +00085 GLM_FUNC_DECL explicit tmat3x3( +00086 value_type const & s); +00087 GLM_FUNC_DECL explicit tmat3x3( +00088 value_type const & x0, value_type const & y0, value_type const & z0, +00089 value_type const & x1, value_type const & y1, value_type const & z1, +00090 value_type const & x2, value_type const & y2, value_type const & z2); +00091 GLM_FUNC_DECL explicit tmat3x3( +00092 col_type const & v0, +00093 col_type const & v1, +00094 col_type const & v2); +00095 +00097 // Conversions +00098 template <typename U> +00099 GLM_FUNC_DECL explicit tmat3x3( +00100 U const & x); +00101 +00102 template +00103 < +00104 typename X1, typename Y1, typename Z1, +00105 typename X2, typename Y2, typename Z2, +00106 typename X3, typename Y3, typename Z3 +00107 > +00108 GLM_FUNC_DECL explicit tmat3x3( +00109 X1 const & x1, Y1 const & y1, Z1 const & z1, +00110 X2 const & x2, Y2 const & y2, Z2 const & z2, +00111 X3 const & x3, Y3 const & y3, Z3 const & z3); +00112 +00113 template <typename V1, typename V2, typename V3> +00114 GLM_FUNC_DECL explicit tmat3x3( +00115 tvec3<V1> const & v1, +00116 tvec3<V2> const & v2, +00117 tvec3<V3> const & v3); +00118 +00119 // Matrix conversions +00120 template <typename U> +00121 GLM_FUNC_DECL explicit tmat3x3(tmat3x3<U> const & m); +00122 +00123 GLM_FUNC_DECL explicit tmat3x3(tmat2x2<T> const & x); +00124 GLM_FUNC_DECL explicit tmat3x3(tmat4x4<T> const & x); +00125 GLM_FUNC_DECL explicit tmat3x3(tmat2x3<T> const & x); +00126 GLM_FUNC_DECL explicit tmat3x3(tmat3x2<T> const & x); +00127 GLM_FUNC_DECL explicit tmat3x3(tmat2x4<T> const & x); +00128 GLM_FUNC_DECL explicit tmat3x3(tmat4x2<T> const & x); +00129 GLM_FUNC_DECL explicit tmat3x3(tmat3x4<T> const & x); +00130 GLM_FUNC_DECL explicit tmat3x3(tmat4x3<T> const & x); +00131 +00132 // Accesses +00133 GLM_FUNC_DECL col_type & operator[](size_type i); +00134 GLM_FUNC_DECL col_type const & operator[](size_type i) const; +00135 +00136 // Unary updatable operators +00137 GLM_FUNC_DECL tmat3x3<T>& operator= (tmat3x3<T> const & m); +00138 template <typename U> +00139 GLM_FUNC_DECL tmat3x3<T>& operator= (tmat3x3<U> const & m); +00140 template <typename U> +00141 GLM_FUNC_DECL tmat3x3<T>& operator+= (U const & s); +00142 template <typename U> +00143 GLM_FUNC_DECL tmat3x3<T>& operator+= (tmat3x3<U> const & m); +00144 template <typename U> +00145 GLM_FUNC_DECL tmat3x3<T>& operator-= (U const & s); +00146 template <typename U> +00147 GLM_FUNC_DECL tmat3x3<T>& operator-= (tmat3x3<U> const & m); +00148 template <typename U> +00149 GLM_FUNC_DECL tmat3x3<T>& operator*= (U const & s); +00150 template <typename U> +00151 GLM_FUNC_DECL tmat3x3<T>& operator*= (tmat3x3<U> const & m); +00152 template <typename U> +00153 GLM_FUNC_DECL tmat3x3<T>& operator/= (U const & s); +00154 template <typename U> +00155 GLM_FUNC_DECL tmat3x3<T>& operator/= (tmat3x3<U> const & m); +00156 GLM_FUNC_DECL tmat3x3<T>& operator++ (); +00157 GLM_FUNC_DECL tmat3x3<T>& operator-- (); +00158 }; +00159 +00160 // Binary operators +00161 template <typename T> +00162 tmat3x3<T> operator+ ( +00163 tmat3x3<T> const & m, +00164 typename tmat3x3<T>::value_type const & s); +00165 +00166 template <typename T> +00167 tmat3x3<T> operator+ ( +00168 typename tmat3x3<T>::value_type const & s, +00169 tmat3x3<T> const & m); +00170 +00171 template <typename T> +00172 tmat3x3<T> operator+ ( +00173 tmat3x3<T> const & m1, +00174 tmat3x3<T> const & m2); +00175 +00176 template <typename T> +00177 tmat3x3<T> operator- ( +00178 tmat3x3<T> const & m, +00179 typename tmat3x3<T>::value_type const & s); +00180 +00181 template <typename T> +00182 tmat3x3<T> operator- ( +00183 typename tmat3x3<T>::value_type const & s, +00184 tmat3x3<T> const & m); +00185 +00186 template <typename T> +00187 tmat3x3<T> operator- ( +00188 tmat3x3<T> const & m1, +00189 tmat3x3<T> const & m2); +00190 +00191 template <typename T> +00192 tmat3x3<T> operator* ( +00193 tmat3x3<T> const & m, +00194 typename tmat3x3<T>::value_type const & s); +00195 +00196 template <typename T> +00197 tmat3x3<T> operator* ( +00198 typename tmat3x3<T>::value_type const & s, +00199 tmat3x3<T> const & m); +00200 +00201 template <typename T> +00202 typename tmat3x3<T>::col_type operator* ( +00203 tmat3x3<T> const & m, +00204 typename tmat3x3<T>::row_type const & v); +00205 +00206 template <typename T> +00207 typename tmat3x3<T>::row_type operator* ( +00208 typename tmat3x3<T>::col_type const & v, +00209 tmat3x3<T> const & m); +00210 +00211 template <typename T> +00212 tmat3x3<T> operator* ( +00213 tmat3x3<T> const & m1, +00214 tmat3x3<T> const & m2); +00215 +00216 template <typename T> +00217 tmat2x3<T> operator* ( +00218 tmat3x3<T> const & m1, +00219 tmat2x3<T> const & m2); +00220 +00221 template <typename T> +00222 tmat4x3<T> operator* ( +00223 tmat3x3<T> const & m1, +00224 tmat4x3<T> const & m2); +00225 +00226 template <typename T> +00227 tmat3x3<T> operator/ ( +00228 tmat3x3<T> const & m, +00229 typename tmat3x3<T>::value_type const & s); +00230 +00231 template <typename T> +00232 tmat3x3<T> operator/ ( +00233 typename tmat3x3<T>::value_type const & s, +00234 tmat3x3<T> const & m); +00235 +00236 template <typename T> +00237 typename tmat3x3<T>::col_type operator/ ( +00238 tmat3x3<T> const & m, +00239 typename tmat3x3<T>::row_type const & v); +00240 +00241 template <typename T> +00242 typename tmat3x3<T>::row_type operator/ ( +00243 typename tmat3x3<T>::col_type const & v, +00244 tmat3x3<T> const & m); +00245 +00246 template <typename T> +00247 tmat3x3<T> operator/ ( +00248 tmat3x3<T> const & m1, +00249 tmat3x3<T> const & m2); +00250 +00251 // Unary constant operators +00252 template <typename T> +00253 tmat3x3<T> const operator- ( +00254 tmat3x3<T> const & m); +00255 +00256 template <typename T> +00257 tmat3x3<T> const operator-- ( +00258 tmat3x3<T> const & m, +00259 int); +00260 +00261 template <typename T> +00262 tmat3x3<T> const operator++ ( +00263 tmat3x3<T> const & m, +00264 int); +00265 +00266 } //namespace detail +00267 +00270 +00276 typedef detail::tmat3x3<lowp_float> lowp_mat3; +00277 +00283 typedef detail::tmat3x3<mediump_float> mediump_mat3; +00284 +00290 typedef detail::tmat3x3<highp_float> highp_mat3; +00291 +00297 typedef detail::tmat3x3<lowp_float> lowp_mat3x3; +00298 +00304 typedef detail::tmat3x3<mediump_float> mediump_mat3x3; +00305 +00311 typedef detail::tmat3x3<highp_float> highp_mat3x3; +00312 +00314 }//namespace glm +00315 +00316 #ifndef GLM_EXTERNAL_TEMPLATE +00317 #include "type_mat3x3.inl" +00318 #endif +00319 +00320 #endif //glm_core_type_mat3x3 +
+ + + + + + + |
Go to the source code of this file.
++Typedefs | |
typedef detail::tmat3x4 +< highp_float > | highp_mat3x4 |
typedef detail::tmat3x4 +< lowp_float > | lowp_mat3x4 |
typedef detail::tmat3x4 +< mediump_float > | mediump_mat3x4 |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_mat3x4.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_mat3x4 +00030 #define glm_core_type_mat3x4 +00031 +00032 #include "type_mat.hpp" +00033 +00034 namespace glm{ +00035 namespace detail +00036 { +00037 template <typename T> struct tvec1; +00038 template <typename T> struct tvec2; +00039 template <typename T> struct tvec3; +00040 template <typename T> struct tvec4; +00041 template <typename T> struct tmat2x2; +00042 template <typename T> struct tmat2x3; +00043 template <typename T> struct tmat2x4; +00044 template <typename T> struct tmat3x2; +00045 template <typename T> struct tmat3x3; +00046 template <typename T> struct tmat3x4; +00047 template <typename T> struct tmat4x2; +00048 template <typename T> struct tmat4x3; +00049 template <typename T> struct tmat4x4; +00050 +00051 // \brief Template for 3 columns and 4 rows matrix of floating-point numbers. +00052 // \ingroup core_template +00053 template <typename T> +00054 struct tmat3x4 +00055 { +00056 enum ctor{null}; +00057 typedef T value_type; +00058 typedef std::size_t size_type; +00059 typedef tvec4<T> col_type; +00060 typedef tvec3<T> row_type; +00061 GLM_FUNC_DECL size_type length() const; +00062 static GLM_FUNC_DECL size_type col_size(); +00063 static GLM_FUNC_DECL size_type row_size(); +00064 +00065 typedef tmat3x4<T> type; +00066 typedef tmat4x3<T> transpose_type; +00067 +00068 private: +00069 // Data +00070 col_type value[3]; +00071 +00072 public: +00073 // Constructors +00074 GLM_FUNC_DECL tmat3x4(); +00075 GLM_FUNC_DECL tmat3x4(tmat3x4 const & m); +00076 +00077 GLM_FUNC_DECL explicit tmat3x4( +00078 ctor Null); +00079 GLM_FUNC_DECL explicit tmat3x4( +00080 value_type const & s); +00081 GLM_FUNC_DECL explicit tmat3x4( +00082 value_type const & x0, value_type const & y0, value_type const & z0, value_type const & w0, +00083 value_type const & x1, value_type const & y1, value_type const & z1, value_type const & w1, +00084 value_type const & x2, value_type const & y2, value_type const & z2, value_type const & w2); +00085 GLM_FUNC_DECL explicit tmat3x4( +00086 col_type const & v0, +00087 col_type const & v1, +00088 col_type const & v2); +00089 +00091 // Conversions +00092 template <typename U> +00093 GLM_FUNC_DECL explicit tmat3x4( +00094 U const & x); +00095 +00096 template +00097 < +00098 typename X1, typename Y1, typename Z1, typename W1, +00099 typename X2, typename Y2, typename Z2, typename W2, +00100 typename X3, typename Y3, typename Z3, typename W3 +00101 > +00102 GLM_FUNC_DECL explicit tmat3x4( +00103 X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1, +00104 X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2, +00105 X3 const & x3, Y3 const & y3, Z3 const & z3, W3 const & w3); +00106 +00107 template <typename V1, typename V2, typename V3> +00108 GLM_FUNC_DECL explicit tmat3x4( +00109 tvec4<V1> const & v1, +00110 tvec4<V2> const & v2, +00111 tvec4<V3> const & v3); +00112 +00113 // Matrix conversion +00114 template <typename U> +00115 GLM_FUNC_DECL explicit tmat3x4(tmat3x4<U> const & m); +00116 +00117 GLM_FUNC_DECL explicit tmat3x4(tmat2x2<T> const & x); +00118 GLM_FUNC_DECL explicit tmat3x4(tmat3x3<T> const & x); +00119 GLM_FUNC_DECL explicit tmat3x4(tmat4x4<T> const & x); +00120 GLM_FUNC_DECL explicit tmat3x4(tmat2x3<T> const & x); +00121 GLM_FUNC_DECL explicit tmat3x4(tmat3x2<T> const & x); +00122 GLM_FUNC_DECL explicit tmat3x4(tmat2x4<T> const & x); +00123 GLM_FUNC_DECL explicit tmat3x4(tmat4x2<T> const & x); +00124 GLM_FUNC_DECL explicit tmat3x4(tmat4x3<T> const & x); +00125 +00126 // Accesses +00127 col_type & operator[](size_type i); +00128 col_type const & operator[](size_type i) const; +00129 +00130 // Unary updatable operators +00131 GLM_FUNC_DECL tmat3x4<T> & operator= (tmat3x4<T> const & m); +00132 template <typename U> +00133 GLM_FUNC_DECL tmat3x4<T> & operator= (tmat3x4<U> const & m); +00134 template <typename U> +00135 GLM_FUNC_DECL tmat3x4<T> & operator+= (U const & s); +00136 template <typename U> +00137 GLM_FUNC_DECL tmat3x4<T> & operator+= (tmat3x4<U> const & m); +00138 template <typename U> +00139 GLM_FUNC_DECL tmat3x4<T> & operator-= (U const & s); +00140 template <typename U> +00141 GLM_FUNC_DECL tmat3x4<T> & operator-= (tmat3x4<U> const & m); +00142 template <typename U> +00143 GLM_FUNC_DECL tmat3x4<T> & operator*= (U const & s); +00144 template <typename U> +00145 GLM_FUNC_DECL tmat3x4<T> & operator*= (tmat3x4<U> const & m); +00146 template <typename U> +00147 GLM_FUNC_DECL tmat3x4<T> & operator/= (U const & s); +00148 +00149 GLM_FUNC_DECL tmat3x4<T> & operator++ (); +00150 GLM_FUNC_DECL tmat3x4<T> & operator-- (); +00151 }; +00152 +00153 // Binary operators +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 tmat3x4<T> const & m1, +00162 tmat3x4<T> const & m2); +00163 +00164 template <typename T> +00165 tmat3x4<T> operator- ( +00166 tmat3x4<T> const & m, +00167 typename tmat3x4<T>::value_type const & s); +00168 +00169 template <typename T> +00170 tmat3x4<T> operator- ( +00171 tmat3x4<T> const & m1, +00172 tmat3x4<T> const & m2); +00173 +00174 template <typename T> +00175 tmat3x4<T> operator* ( +00176 tmat3x4<T> const & m, +00177 typename tmat3x4<T>::value_type const & s); +00178 +00179 template <typename T> +00180 tmat3x4<T> operator* ( +00181 typename tmat3x4<T>::value_type const & s, +00182 tmat3x4<T> const & m); +00183 +00184 template <typename T> +00185 typename tmat3x4<T>::col_type operator* ( +00186 tmat3x4<T> const & m, +00187 typename tmat3x4<T>::row_type const & v); +00188 +00189 template <typename T> +00190 typename tmat3x4<T>::row_type operator* ( +00191 typename tmat3x4<T>::col_type const & v, +00192 tmat3x4<T> const & m); +00193 +00194 template <typename T> +00195 tmat4x4<T> operator* ( +00196 tmat3x4<T> const & m1, +00197 tmat4x3<T> const & m2); +00198 +00199 template <typename T> +00200 tmat2x4<T> operator* ( +00201 tmat3x4<T> const & m1, +00202 tmat2x3<T> const & m2); +00203 +00204 template <typename T> +00205 tmat3x4<T> operator* ( +00206 tmat3x4<T> const & m1, +00207 tmat3x3<T> const & m2); +00208 +00209 template <typename T> +00210 tmat3x4<T> operator/ ( +00211 tmat3x4<T> const & m, +00212 typename tmat3x4<T>::value_type const & s); +00213 +00214 template <typename T> +00215 tmat3x4<T> operator/ ( +00216 typename tmat3x4<T>::value_type const & s, +00217 tmat3x4<T> const & m); +00218 +00219 // Unary constant operators +00220 template <typename T> +00221 tmat3x4<T> const operator- ( +00222 tmat3x4<T> const & m); +00223 +00224 template <typename T> +00225 tmat3x4<T> const operator-- ( +00226 tmat3x4<T> const & m, +00227 int); +00228 +00229 template <typename T> +00230 tmat3x4<T> const operator++ ( +00231 tmat3x4<T> const & m, +00232 int); +00233 +00234 }//namespace detail +00235 +00238 +00244 typedef detail::tmat3x4<lowp_float> lowp_mat3x4; +00245 +00251 typedef detail::tmat3x4<mediump_float> mediump_mat3x4; +00252 +00258 typedef detail::tmat3x4<highp_float> highp_mat3x4; +00259 +00261 }//namespace glm +00262 +00263 #ifndef GLM_EXTERNAL_TEMPLATE +00264 #include "type_mat3x4.inl" +00265 #endif +00266 +00267 #endif //glm_core_type_mat3x4 +
+ + + + + + + |
Go to the source code of this file.
++Typedefs | |
typedef detail::tmat4x2 +< highp_float > | highp_mat4x2 |
typedef detail::tmat4x2 +< lowp_float > | lowp_mat4x2 |
typedef detail::tmat4x2 +< mediump_float > | mediump_mat4x2 |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_mat4x2.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_mat4x2 +00030 #define glm_core_type_mat4x2 +00031 +00032 #include "type_mat.hpp" +00033 +00034 namespace glm{ +00035 namespace detail +00036 { +00037 template <typename T> struct tvec1; +00038 template <typename T> struct tvec2; +00039 template <typename T> struct tvec3; +00040 template <typename T> struct tvec4; +00041 template <typename T> struct tmat2x2; +00042 template <typename T> struct tmat2x3; +00043 template <typename T> struct tmat2x4; +00044 template <typename T> struct tmat3x2; +00045 template <typename T> struct tmat3x3; +00046 template <typename T> struct tmat3x4; +00047 template <typename T> struct tmat4x2; +00048 template <typename T> struct tmat4x3; +00049 template <typename T> struct tmat4x4; +00050 +00051 // \brief Template for 4 columns and 2 rows matrix of floating-point numbers. +00052 // \ingroup core_template +00053 template <typename T> +00054 struct tmat4x2 +00055 { +00056 enum ctor{null}; +00057 typedef T value_type; +00058 typedef std::size_t size_type; +00059 typedef tvec2<T> col_type; +00060 typedef tvec4<T> row_type; +00061 GLM_FUNC_DECL size_type length() const; +00062 static GLM_FUNC_DECL size_type col_size(); +00063 static GLM_FUNC_DECL size_type row_size(); +00064 +00065 typedef tmat4x2<T> type; +00066 typedef tmat2x4<T> transpose_type; +00067 +00068 private: +00069 // Data +00070 col_type value[4]; +00071 +00072 public: +00073 // Constructors +00074 GLM_FUNC_DECL tmat4x2(); +00075 GLM_FUNC_DECL tmat4x2(tmat4x2 const & m); +00076 +00077 GLM_FUNC_DECL explicit tmat4x2( +00078 ctor Null); +00079 GLM_FUNC_DECL explicit tmat4x2( +00080 value_type const & x); +00081 GLM_FUNC_DECL explicit tmat4x2( +00082 value_type const & x0, value_type const & y0, +00083 value_type const & x1, value_type const & y1, +00084 value_type const & x2, value_type const & y2, +00085 value_type const & x3, value_type const & y3); +00086 GLM_FUNC_DECL explicit tmat4x2( +00087 col_type const & v0, +00088 col_type const & v1, +00089 col_type const & v2, +00090 col_type const & v3); +00091 +00093 // Conversions +00094 template <typename U> +00095 GLM_FUNC_DECL explicit tmat4x2( +00096 U const & x); +00097 +00098 template +00099 < +00100 typename X1, typename Y1, +00101 typename X2, typename Y2, +00102 typename X3, typename Y3, +00103 typename X4, typename Y4 +00104 > +00105 GLM_FUNC_DECL explicit tmat4x2( +00106 X1 const & x1, Y1 const & y1, +00107 X2 const & x2, Y2 const & y2, +00108 X3 const & x3, Y3 const & y3, +00109 X4 const & x4, Y4 const & y4); +00110 +00111 template <typename V1, typename V2, typename V3, typename V4> +00112 GLM_FUNC_DECL explicit tmat4x2( +00113 tvec2<V1> const & v1, +00114 tvec2<V2> const & v2, +00115 tvec2<V3> const & v3, +00116 tvec2<V4> const & v4); +00117 +00118 // Matrix conversions +00119 template <typename U> +00120 GLM_FUNC_DECL explicit tmat4x2(tmat4x2<U> const & m); +00121 +00122 GLM_FUNC_DECL explicit tmat4x2(tmat2x2<T> const & x); +00123 GLM_FUNC_DECL explicit tmat4x2(tmat3x3<T> const & x); +00124 GLM_FUNC_DECL explicit tmat4x2(tmat4x4<T> const & x); +00125 GLM_FUNC_DECL explicit tmat4x2(tmat2x3<T> const & x); +00126 GLM_FUNC_DECL explicit tmat4x2(tmat3x2<T> const & x); +00127 GLM_FUNC_DECL explicit tmat4x2(tmat2x4<T> const & x); +00128 GLM_FUNC_DECL explicit tmat4x2(tmat4x3<T> const & x); +00129 GLM_FUNC_DECL explicit tmat4x2(tmat3x4<T> const & x); +00130 +00131 // Accesses +00132 GLM_FUNC_DECL col_type & operator[](size_type i); +00133 GLM_FUNC_DECL col_type const & operator[](size_type i) const; +00134 +00135 // Unary updatable operators +00136 GLM_FUNC_DECL tmat4x2<T>& operator= (tmat4x2<T> const & m); +00137 template <typename U> +00138 GLM_FUNC_DECL tmat4x2<T>& operator= (tmat4x2<U> const & m); +00139 template <typename U> +00140 GLM_FUNC_DECL tmat4x2<T>& operator+= (U const & s); +00141 template <typename U> +00142 GLM_FUNC_DECL tmat4x2<T>& operator+= (tmat4x2<U> const & m); +00143 template <typename U> +00144 GLM_FUNC_DECL tmat4x2<T>& operator-= (U const & s); +00145 template <typename U> +00146 GLM_FUNC_DECL tmat4x2<T>& operator-= (tmat4x2<U> const & m); +00147 template <typename U> +00148 GLM_FUNC_DECL tmat4x2<T>& operator*= (U const & s); +00149 template <typename U> +00150 GLM_FUNC_DECL tmat4x2<T>& operator*= (tmat4x2<U> const & m); +00151 template <typename U> +00152 GLM_FUNC_DECL tmat4x2<T>& operator/= (U const & s); +00153 +00154 GLM_FUNC_DECL tmat4x2<T>& operator++ (); +00155 GLM_FUNC_DECL tmat4x2<T>& operator-- (); +00156 }; +00157 +00158 // Binary operators +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 tmat4x2<T> const & m1, +00167 tmat4x2<T> const & m2); +00168 +00169 template <typename T> +00170 tmat4x2<T> operator- ( +00171 tmat4x2<T> const & m, +00172 typename tmat4x2<T>::value_type const & s); +00173 +00174 template <typename T> +00175 tmat4x2<T> operator- ( +00176 tmat4x2<T> const & m1, +00177 tmat4x2<T> const & m2); +00178 +00179 template <typename T> +00180 tmat4x2<T> operator* ( +00181 tmat4x2<T> const & m, +00182 typename tmat4x2<T>::value_type const & s); +00183 +00184 template <typename T> +00185 tmat4x2<T> operator* ( +00186 typename tmat4x2<T>::value_type const & s, +00187 tmat4x2<T> const & m); +00188 +00189 template <typename T> +00190 typename tmat4x2<T>::col_type operator* ( +00191 tmat4x2<T> const & m, +00192 typename tmat4x2<T>::row_type const & v); +00193 +00194 template <typename T> +00195 typename tmat4x2<T>::row_type operator* ( +00196 typename tmat4x2<T>::col_type const & v, +00197 tmat4x2<T> const & m); +00198 +00199 template <typename T> +00200 tmat3x2<T> operator* ( +00201 tmat4x2<T> const & m1, +00202 tmat3x4<T> const & m2); +00203 +00204 template <typename T> +00205 tmat4x2<T> operator* ( +00206 tmat4x2<T> const & m1, +00207 tmat4x4<T> const & m2); +00208 +00209 template <typename T> +00210 tmat2x3<T> operator* ( +00211 tmat4x3<T> const & m1, +00212 tmat2x4<T> const & m2); +00213 +00214 template <typename T> +00215 tmat4x2<T> operator/ ( +00216 tmat4x2<T> const & m, +00217 typename tmat4x2<T>::value_type const & s); +00218 +00219 template <typename T> +00220 tmat4x2<T> operator/ ( +00221 typename tmat4x2<T>::value_type const & s, +00222 tmat4x2<T> const & m); +00223 +00224 // Unary constant operators +00225 template <typename T> +00226 tmat4x2<T> const operator- ( +00227 tmat4x2<T> const & m); +00228 +00229 template <typename T> +00230 tmat4x2<T> const operator-- ( +00231 tmat4x2<T> const & m, +00232 int); +00233 +00234 template <typename T> +00235 tmat4x2<T> const operator++ ( +00236 tmat4x2<T> const & m, +00237 int); +00238 +00239 } //namespace detail +00240 +00243 +00249 typedef detail::tmat4x2<lowp_float> lowp_mat4x2; +00250 +00256 typedef detail::tmat4x2<mediump_float> mediump_mat4x2; +00257 +00263 typedef detail::tmat4x2<highp_float> highp_mat4x2; +00264 +00266 }//namespace glm +00267 +00268 #ifndef GLM_EXTERNAL_TEMPLATE +00269 #include "type_mat4x2.inl" +00270 #endif +00271 +00272 #endif //glm_core_type_mat4x2 +
+ + + + + + + |
Go to the source code of this file.
++Typedefs | |
typedef detail::tmat4x3 +< highp_float > | highp_mat4x3 |
typedef detail::tmat4x3 +< lowp_float > | lowp_mat4x3 |
typedef detail::tmat4x3 +< mediump_float > | mediump_mat4x3 |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_mat4x3.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_mat4x3 +00030 #define glm_core_type_mat4x3 +00031 +00032 #include "type_mat.hpp" +00033 +00034 namespace glm{ +00035 namespace detail +00036 { +00037 template <typename T> struct tvec1; +00038 template <typename T> struct tvec2; +00039 template <typename T> struct tvec3; +00040 template <typename T> struct tvec4; +00041 template <typename T> struct tmat2x2; +00042 template <typename T> struct tmat2x3; +00043 template <typename T> struct tmat2x4; +00044 template <typename T> struct tmat3x2; +00045 template <typename T> struct tmat3x3; +00046 template <typename T> struct tmat3x4; +00047 template <typename T> struct tmat4x2; +00048 template <typename T> struct tmat4x3; +00049 template <typename T> struct tmat4x4; +00050 +00051 // \brief Template for 4 columns and 3 rows matrix of floating-point numbers. +00052 // \ingroup core_template +00053 template <typename T> +00054 struct tmat4x3 +00055 { +00056 enum ctor{null}; +00057 typedef T value_type; +00058 typedef std::size_t size_type; +00059 typedef tvec3<T> col_type; +00060 typedef tvec4<T> row_type; +00061 GLM_FUNC_DECL size_type length() const; +00062 static GLM_FUNC_DECL size_type col_size(); +00063 static GLM_FUNC_DECL size_type row_size(); +00064 +00065 typedef tmat4x3<T> type; +00066 typedef tmat3x4<T> transpose_type; +00067 +00068 private: +00069 // Data +00070 col_type value[4]; +00071 +00072 public: +00073 // Constructors +00074 GLM_FUNC_DECL tmat4x3(); +00075 GLM_FUNC_DECL tmat4x3(tmat4x3 const & m); +00076 +00077 GLM_FUNC_DECL explicit tmat4x3( +00078 ctor Null); +00079 GLM_FUNC_DECL explicit tmat4x3( +00080 value_type const & x); +00081 GLM_FUNC_DECL explicit tmat4x3( +00082 value_type const & x0, value_type const & y0, value_type const & z0, +00083 value_type const & x1, value_type const & y1, value_type const & z1, +00084 value_type const & x2, value_type const & y2, value_type const & z2, +00085 value_type const & x3, value_type const & y3, value_type const & z3); +00086 GLM_FUNC_DECL explicit tmat4x3( +00087 col_type const & v0, +00088 col_type const & v1, +00089 col_type const & v2, +00090 col_type const & v3); +00091 +00093 // Conversions +00094 template <typename U> +00095 GLM_FUNC_DECL explicit tmat4x3( +00096 U const & x); +00097 +00098 template < +00099 typename X1, typename Y1, typename Z1, +00100 typename X2, typename Y2, typename Z2, +00101 typename X3, typename Y3, typename Z3, +00102 typename X4, typename Y4, typename Z4> +00103 GLM_FUNC_DECL explicit tmat4x3( +00104 X1 const & x1, Y1 const & y1, Z1 const & z1, +00105 X2 const & x2, Y2 const & y2, Z2 const & z2, +00106 X3 const & x3, Y3 const & y3, Z3 const & z3, +00107 X4 const & x4, Y4 const & y4, Z4 const & z4); +00108 +00109 template <typename V1, typename V2, typename V3, typename V4> +00110 GLM_FUNC_DECL explicit tmat4x3( +00111 tvec3<V1> const & v1, +00112 tvec3<V2> const & v2, +00113 tvec3<V3> const & v3, +00114 tvec3<V4> const & v4); +00115 +00116 // Matrix conversions +00117 template <typename U> +00118 GLM_FUNC_DECL explicit tmat4x3(tmat4x3<U> const & m); +00119 +00120 GLM_FUNC_DECL explicit tmat4x3(tmat2x2<T> const & x); +00121 GLM_FUNC_DECL explicit tmat4x3(tmat3x3<T> const & x); +00122 GLM_FUNC_DECL explicit tmat4x3(tmat4x4<T> const & x); +00123 GLM_FUNC_DECL explicit tmat4x3(tmat2x3<T> const & x); +00124 GLM_FUNC_DECL explicit tmat4x3(tmat3x2<T> const & x); +00125 GLM_FUNC_DECL explicit tmat4x3(tmat2x4<T> const & x); +00126 GLM_FUNC_DECL explicit tmat4x3(tmat4x2<T> const & x); +00127 GLM_FUNC_DECL explicit tmat4x3(tmat3x4<T> const & x); +00128 +00129 // Accesses +00130 col_type & operator[](size_type i); +00131 col_type const & operator[](size_type i) const; +00132 +00133 // Unary updatable operators +00134 GLM_FUNC_DECL tmat4x3<T> & operator= (tmat4x3<T> const & m); +00135 template <typename U> +00136 GLM_FUNC_DECL tmat4x3<T> & operator= (tmat4x3<U> const & m); +00137 template <typename U> +00138 GLM_FUNC_DECL tmat4x3<T> & operator+= (U const & s); +00139 template <typename U> +00140 GLM_FUNC_DECL tmat4x3<T> & operator+= (tmat4x3<U> const & m); +00141 template <typename U> +00142 GLM_FUNC_DECL tmat4x3<T> & operator-= (U const & s); +00143 template <typename U> +00144 GLM_FUNC_DECL tmat4x3<T> & operator-= (tmat4x3<U> const & m); +00145 template <typename U> +00146 GLM_FUNC_DECL tmat4x3<T> & operator*= (U const & s); +00147 template <typename U> +00148 GLM_FUNC_DECL tmat4x3<T> & operator*= (tmat4x3<U> const & m); +00149 template <typename U> +00150 GLM_FUNC_DECL tmat4x3<T> & operator/= (U const & s); +00151 +00152 GLM_FUNC_DECL tmat4x3<T> & operator++ (); +00153 GLM_FUNC_DECL tmat4x3<T> & operator-- (); +00154 }; +00155 +00156 // Binary operators +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 tmat4x3<T> const & m1, +00165 tmat4x3<T> const & m2); +00166 +00167 template <typename T> +00168 tmat4x3<T> operator- ( +00169 tmat4x3<T> const & m, +00170 typename tmat4x3<T>::value_type const & s); +00171 +00172 template <typename T> +00173 tmat4x3<T> operator- ( +00174 tmat4x3<T> const & m1, +00175 tmat4x3<T> const & m2); +00176 +00177 template <typename T> +00178 tmat4x3<T> operator* ( +00179 tmat4x3<T> const & m, +00180 typename tmat4x3<T>::value_type const & s); +00181 +00182 template <typename T> +00183 tmat4x3<T> operator* ( +00184 typename tmat4x3<T>::value_type const & s, +00185 tmat4x3<T> const & m); +00186 +00187 template <typename T> +00188 typename tmat4x3<T>::col_type operator* ( +00189 tmat4x3<T> const & m, +00190 typename tmat4x3<T>::row_type const & v); +00191 +00192 template <typename T> +00193 typename tmat4x3<T>::row_type operator* ( +00194 typename tmat4x3<T>::col_type const & v, +00195 tmat4x3<T> const & m); +00196 +00197 template <typename T> +00198 tmat2x3<T> operator* ( +00199 tmat4x3<T> const & m1, +00200 tmat2x4<T> const & m2); +00201 +00202 template <typename T> +00203 tmat3x3<T> operator* ( +00204 tmat4x3<T> const & m1, +00205 tmat3x4<T> const & m2); +00206 +00207 template <typename T> +00208 tmat4x3<T> operator* ( +00209 tmat4x3<T> const & m1, +00210 tmat4x4<T> const & m2); +00211 +00212 template <typename T> +00213 tmat4x3<T> operator/ ( +00214 tmat4x3<T> const & m, +00215 typename tmat4x3<T>::value_type const & s); +00216 +00217 template <typename T> +00218 tmat4x3<T> operator/ ( +00219 typename tmat4x3<T>::value_type const & s, +00220 tmat4x3<T> const & m); +00221 +00222 // Unary constant operators +00223 template <typename T> +00224 tmat4x3<T> const operator- ( +00225 tmat4x3<T> const & m); +00226 +00227 template <typename T> +00228 tmat4x3<T> const operator-- ( +00229 tmat4x3<T> const & m, +00230 int); +00231 +00232 template <typename T> +00233 tmat4x3<T> const operator++ ( +00234 tmat4x3<T> const & m, +00235 int); +00236 +00237 }//namespace detail +00238 +00241 +00247 typedef detail::tmat4x3<lowp_float> lowp_mat4x3; +00248 +00254 typedef detail::tmat4x3<mediump_float> mediump_mat4x3; +00255 +00261 typedef detail::tmat4x3<highp_float> highp_mat4x3; +00262 +00264 }//namespace glm +00265 +00266 #ifndef GLM_EXTERNAL_TEMPLATE +00267 #include "type_mat4x3.inl" +00268 #endif //GLM_EXTERNAL_TEMPLATE +00269 +00270 #endif//glm_core_type_mat4x3 +
+ + + + + + + |
Go to the source code of this file.
++Typedefs | |
typedef detail::tmat4x4 +< highp_float > | highp_mat4 |
typedef detail::tmat4x4 +< highp_float > | highp_mat4x4 |
typedef detail::tmat4x4 +< lowp_float > | lowp_mat4 |
typedef detail::tmat4x4 +< lowp_float > | lowp_mat4x4 |
typedef detail::tmat4x4 +< mediump_float > | mediump_mat4 |
typedef detail::tmat4x4 +< mediump_float > | mediump_mat4x4 |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_mat4x4.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_mat4x4 +00030 #define glm_core_type_mat4x4 +00031 +00032 #include "type_mat.hpp" +00033 +00034 namespace glm{ +00035 namespace detail +00036 { +00037 template <typename T> struct tvec1; +00038 template <typename T> struct tvec2; +00039 template <typename T> struct tvec3; +00040 template <typename T> struct tvec4; +00041 template <typename T> struct tmat2x2; +00042 template <typename T> struct tmat2x3; +00043 template <typename T> struct tmat2x4; +00044 template <typename T> struct tmat3x2; +00045 template <typename T> struct tmat3x3; +00046 template <typename T> struct tmat3x4; +00047 template <typename T> struct tmat4x2; +00048 template <typename T> struct tmat4x3; +00049 template <typename T> struct tmat4x4; +00050 +00051 // \brief Template for 4 * 4 matrix of floating-point numbers. +00052 // \ingroup core_template +00053 template <typename T> +00054 struct tmat4x4 +00055 { +00056 enum ctor{null}; +00057 typedef T value_type; +00058 typedef std::size_t size_type; +00059 typedef tvec4<T> col_type; +00060 typedef tvec4<T> row_type; +00061 GLM_FUNC_DECL size_type length() const; +00062 static GLM_FUNC_DECL size_type col_size(); +00063 static GLM_FUNC_DECL size_type row_size(); +00064 +00065 typedef tmat4x4<T> type; +00066 typedef tmat4x4<T> transpose_type; +00067 +00068 public: +00071 GLM_FUNC_DECL tmat4x4<T> _inverse() const; +00073 +00074 private: +00075 // Data +00076 col_type value[4]; +00077 +00078 public: +00079 // Constructors +00080 GLM_FUNC_DECL tmat4x4(); +00081 GLM_FUNC_DECL tmat4x4(tmat4x4 const & m); +00082 +00083 GLM_FUNC_DECL explicit tmat4x4( +00084 ctor Null); +00085 GLM_FUNC_DECL explicit tmat4x4( +00086 value_type const & x); +00087 GLM_FUNC_DECL explicit tmat4x4( +00088 value_type const & x0, value_type const & y0, value_type const & z0, value_type const & w0, +00089 value_type const & x1, value_type const & y1, value_type const & z1, value_type const & w1, +00090 value_type const & x2, value_type const & y2, value_type const & z2, value_type const & w2, +00091 value_type const & x3, value_type const & y3, value_type const & z3, value_type const & w3); +00092 GLM_FUNC_DECL explicit tmat4x4( +00093 col_type const & v0, +00094 col_type const & v1, +00095 col_type const & v2, +00096 col_type const & v3); +00097 +00099 // Conversions +00100 template <typename U> +00101 GLM_FUNC_DECL explicit tmat4x4( +00102 U const & x); +00103 +00104 template < +00105 typename X1, typename Y1, typename Z1, typename W1, +00106 typename X2, typename Y2, typename Z2, typename W2, +00107 typename X3, typename Y3, typename Z3, typename W3, +00108 typename X4, typename Y4, typename Z4, typename W4> +00109 GLM_FUNC_DECL explicit tmat4x4( +00110 X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1, +00111 X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2, +00112 X3 const & x3, Y3 const & y3, Z3 const & z3, W3 const & w3, +00113 X4 const & x4, Y4 const & y4, Z4 const & z4, W4 const & w4); +00114 +00115 template <typename V1, typename V2, typename V3, typename V4> +00116 GLM_FUNC_DECL explicit tmat4x4( +00117 tvec4<V1> const & v1, +00118 tvec4<V2> const & v2, +00119 tvec4<V3> const & v3, +00120 tvec4<V4> const & v4); +00121 +00122 // Matrix conversions +00123 template <typename U> +00124 GLM_FUNC_DECL explicit tmat4x4(tmat4x4<U> const & m); +00125 +00126 GLM_FUNC_DECL explicit tmat4x4(tmat2x2<T> const & x); +00127 GLM_FUNC_DECL explicit tmat4x4(tmat3x3<T> const & x); +00128 GLM_FUNC_DECL explicit tmat4x4(tmat2x3<T> const & x); +00129 GLM_FUNC_DECL explicit tmat4x4(tmat3x2<T> const & x); +00130 GLM_FUNC_DECL explicit tmat4x4(tmat2x4<T> const & x); +00131 GLM_FUNC_DECL explicit tmat4x4(tmat4x2<T> const & x); +00132 GLM_FUNC_DECL explicit tmat4x4(tmat3x4<T> const & x); +00133 GLM_FUNC_DECL explicit tmat4x4(tmat4x3<T> const & x); +00134 +00135 // Accesses +00136 GLM_FUNC_DECL col_type & operator[](size_type i); +00137 GLM_FUNC_DECL col_type const & operator[](size_type i) const; +00138 +00139 // Unary updatable operators +00140 GLM_FUNC_DECL tmat4x4<T> & operator= (tmat4x4<T> const & m); +00141 template <typename U> +00142 GLM_FUNC_DECL tmat4x4<T> & operator= (tmat4x4<U> const & m); +00143 template <typename U> +00144 GLM_FUNC_DECL tmat4x4<T> & operator+= (U const & s); +00145 template <typename U> +00146 GLM_FUNC_DECL tmat4x4<T> & operator+= (tmat4x4<U> const & m); +00147 template <typename U> +00148 GLM_FUNC_DECL tmat4x4<T> & operator-= (U const & s); +00149 template <typename U> +00150 GLM_FUNC_DECL tmat4x4<T> & operator-= (tmat4x4<U> const & m); +00151 template <typename U> +00152 GLM_FUNC_DECL tmat4x4<T> & operator*= (U const & s); +00153 template <typename U> +00154 GLM_FUNC_DECL tmat4x4<T> & operator*= (tmat4x4<U> const & m); +00155 template <typename U> +00156 GLM_FUNC_DECL tmat4x4<T> & operator/= (U const & s); +00157 template <typename U> +00158 GLM_FUNC_DECL tmat4x4<T> & operator/= (tmat4x4<U> const & m); +00159 GLM_FUNC_DECL tmat4x4<T> & operator++ (); +00160 GLM_FUNC_DECL tmat4x4<T> & operator-- (); +00161 }; +00162 +00163 // Binary operators +00164 template <typename T> +00165 tmat4x4<T> operator+ ( +00166 tmat4x4<T> const & m, +00167 typename tmat4x4<T>::value_type const & s); +00168 +00169 template <typename T> +00170 tmat4x4<T> operator+ ( +00171 typename tmat4x4<T>::value_type const & s, +00172 tmat4x4<T> const & m); +00173 +00174 template <typename T> +00175 tmat4x4<T> operator+ ( +00176 tmat4x4<T> const & m1, +00177 tmat4x4<T> const & m2); +00178 +00179 template <typename T> +00180 tmat4x4<T> operator- ( +00181 tmat4x4<T> const & m, +00182 typename tmat4x4<T>::value_type const & s); +00183 +00184 template <typename T> +00185 tmat4x4<T> operator- ( +00186 typename tmat4x4<T>::value_type const & s, +00187 tmat4x4<T> const & m); +00188 +00189 template <typename T> +00190 tmat4x4<T> operator- ( +00191 tmat4x4<T> const & m1, +00192 tmat4x4<T> const & m2); +00193 +00194 template <typename T> +00195 tmat4x4<T> operator* ( +00196 tmat4x4<T> const & m, +00197 typename tmat4x4<T>::value_type const & s); +00198 +00199 template <typename T> +00200 tmat4x4<T> operator* ( +00201 typename tmat4x4<T>::value_type const & s, +00202 tmat4x4<T> const & m); +00203 +00204 template <typename T> +00205 typename tmat4x4<T>::col_type operator* ( +00206 tmat4x4<T> const & m, +00207 typename tmat4x4<T>::row_type const & v); +00208 +00209 template <typename T> +00210 typename tmat4x4<T>::row_type operator* ( +00211 typename tmat4x4<T>::col_type const & v, +00212 tmat4x4<T> const & m); +00213 +00214 template <typename T> +00215 tmat2x4<T> operator* ( +00216 tmat4x4<T> const & m1, +00217 tmat2x4<T> const & m2); +00218 +00219 template <typename T> +00220 tmat3x4<T> operator* ( +00221 tmat4x4<T> const & m1, +00222 tmat3x4<T> const & m2); +00223 +00224 template <typename T> +00225 tmat4x4<T> operator* ( +00226 tmat4x4<T> const & m1, +00227 tmat4x4<T> const & m2); +00228 +00229 template <typename T> +00230 tmat4x4<T> operator/ ( +00231 tmat4x4<T> const & m, +00232 typename tmat4x4<T>::value_type const & s); +00233 +00234 template <typename T> +00235 tmat4x4<T> operator/ ( +00236 typename tmat4x4<T>::value_type const & s, +00237 tmat4x4<T> const & m); +00238 +00239 template <typename T> +00240 typename tmat4x4<T>::col_type operator/ ( +00241 tmat4x4<T> const & m, +00242 typename tmat4x4<T>::row_type const & v); +00243 +00244 template <typename T> +00245 typename tmat4x4<T>::row_type operator/ ( +00246 typename tmat4x4<T>::col_type & v, +00247 tmat4x4<T> const & m); +00248 +00249 template <typename T> +00250 tmat4x4<T> operator/ ( +00251 tmat4x4<T> const & m1, +00252 tmat4x4<T> const & m2); +00253 +00254 // Unary constant operators +00255 template <typename T> +00256 tmat4x4<T> const operator- ( +00257 tmat4x4<T> const & m); +00258 +00259 template <typename T> +00260 tmat4x4<T> const operator-- ( +00261 tmat4x4<T> const & m, int); +00262 +00263 template <typename T> +00264 tmat4x4<T> const operator++ ( +00265 tmat4x4<T> const & m, int); +00266 +00267 } //namespace detail +00268 +00271 +00277 typedef detail::tmat4x4<lowp_float> lowp_mat4; +00278 +00284 typedef detail::tmat4x4<mediump_float> mediump_mat4; +00285 +00291 typedef detail::tmat4x4<highp_float> highp_mat4; +00292 +00298 typedef detail::tmat4x4<lowp_float> lowp_mat4x4; +00299 +00305 typedef detail::tmat4x4<mediump_float> mediump_mat4x4; +00306 +00312 typedef detail::tmat4x4<highp_float> highp_mat4x4; +00313 +00315 }//namespace glm +00316 +00317 #ifndef GLM_EXTERNAL_TEMPLATE +00318 #include "type_mat4x4.inl" +00319 #endif//GLM_EXTERNAL_TEMPLATE +00320 +00321 #endif//glm_core_type_mat4x4 +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTC_type_precision: Vector and matrix types with defined precisions
+Definition in file type_precision.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 +00040 +00041 +00042 +00043 #ifndef GLM_GTC_type_precision +00044 #define GLM_GTC_type_precision GLM_VERSION +00045 +00046 // Dependency: +00047 #include "../glm.hpp" +00048 #include "../gtc/half_float.hpp" +00049 #include "../gtc/quaternion.hpp" +00050 +00051 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00052 # pragma message("GLM: GLM_GTC_type_precision extension included") +00053 #endif +00054 +00055 namespace glm +00056 { +00058 // Signed int vector types +00059 +00062 +00065 typedef detail::int8 int8; +00066 +00069 typedef detail::int16 int16; +00070 +00073 typedef detail::int32 int32; +00074 +00077 typedef detail::int64 int64; +00078 +00079 +00082 typedef detail::int8 int8_t; +00083 +00086 typedef detail::int16 int16_t; +00087 +00090 typedef detail::int32 int32_t; +00091 +00094 typedef detail::int64 int64_t; +00095 +00096 +00099 typedef detail::int8 i8; +00100 +00103 typedef detail::int16 i16; +00104 +00107 typedef detail::int32 i32; +00108 +00111 typedef detail::int64 i64; +00112 +00113 +00116 typedef detail::tvec1<i8> i8vec1; +00117 +00120 typedef detail::tvec2<i8> i8vec2; +00121 +00124 typedef detail::tvec3<i8> i8vec3; +00125 +00128 typedef detail::tvec4<i8> i8vec4; +00129 +00130 +00133 typedef detail::tvec1<i16> i16vec1; +00134 +00137 typedef detail::tvec2<i16> i16vec2; +00138 +00141 typedef detail::tvec3<i16> i16vec3; +00142 +00145 typedef detail::tvec4<i16> i16vec4; +00146 +00147 +00150 typedef detail::tvec1<i32> i32vec1; +00151 +00154 typedef detail::tvec2<i32> i32vec2; +00155 +00158 typedef detail::tvec3<i32> i32vec3; +00159 +00162 typedef detail::tvec4<i32> i32vec4; +00163 +00164 +00167 typedef detail::tvec1<i64> i64vec1; +00168 +00171 typedef detail::tvec2<i64> i64vec2; +00172 +00175 typedef detail::tvec3<i64> i64vec3; +00176 +00179 typedef detail::tvec4<i64> i64vec4; +00180 +00181 +00183 // Unsigned int vector types +00184 +00187 typedef detail::uint8 uint8; +00188 +00191 typedef detail::uint16 uint16; +00192 +00195 typedef detail::uint32 uint32; +00196 +00199 typedef detail::uint64 uint64; +00200 +00201 +00204 typedef detail::uint8 uint8_t; +00205 +00208 typedef detail::uint16 uint16_t; +00209 +00212 typedef detail::uint32 uint32_t; +00213 +00216 typedef detail::uint64 uint64_t; +00217 +00218 +00221 typedef detail::uint8 u8; +00222 +00225 typedef detail::uint16 u16; +00226 +00229 typedef detail::uint32 u32; +00230 +00233 typedef detail::uint64 u64; +00234 +00235 +00238 typedef detail::tvec1<u8> u8vec1; +00239 +00242 typedef detail::tvec2<u8> u8vec2; +00243 +00246 typedef detail::tvec3<u8> u8vec3; +00247 +00250 typedef detail::tvec4<u8> u8vec4; +00251 +00252 +00255 typedef detail::tvec1<u16> u16vec1; +00256 +00259 typedef detail::tvec2<u16> u16vec2; +00260 +00263 typedef detail::tvec3<u16> u16vec3; +00264 +00267 typedef detail::tvec4<u16> u16vec4; +00268 +00269 +00272 typedef detail::tvec1<u32> u32vec1; +00273 +00276 typedef detail::tvec2<u32> u32vec2; +00277 +00280 typedef detail::tvec3<u32> u32vec3; +00281 +00284 typedef detail::tvec4<u32> u32vec4; +00285 +00286 +00289 typedef detail::tvec1<u64> u64vec1; +00290 +00293 typedef detail::tvec2<u64> u64vec2; +00294 +00297 typedef detail::tvec3<u64> u64vec3; +00298 +00301 typedef detail::tvec4<u64> u64vec4; +00302 +00303 +00305 // Float vector types +00306 +00309 typedef detail::float16 float16; +00310 +00313 typedef detail::float32 float32; +00314 +00317 typedef detail::float64 float64; +00318 +00319 +00322 typedef detail::float16 float16_t; +00323 +00326 typedef detail::float32 float32_t; +00327 +00330 typedef detail::float64 float64_t; +00331 +00332 +00335 typedef float16 f16; +00336 +00339 typedef float32 f32; +00340 +00343 typedef float64 f64; +00344 +00345 +00348 typedef detail::tvec1<float> fvec1; +00349 +00352 typedef detail::tvec2<float> fvec2; +00353 +00356 typedef detail::tvec3<float> fvec3; +00357 +00360 typedef detail::tvec4<float> fvec4; +00361 +00362 +00365 typedef detail::tvec1<f16> f16vec1; +00366 +00369 typedef detail::tvec2<f16> f16vec2; +00370 +00373 typedef detail::tvec3<f16> f16vec3; +00374 +00377 typedef detail::tvec4<f16> f16vec4; +00378 +00379 +00382 typedef detail::tvec1<f32> f32vec1; +00383 +00386 typedef detail::tvec2<f32> f32vec2; +00387 +00390 typedef detail::tvec3<f32> f32vec3; +00391 +00394 typedef detail::tvec4<f32> f32vec4; +00395 +00396 +00399 typedef detail::tvec1<f64> f64vec1; +00400 +00403 typedef detail::tvec2<f64> f64vec2; +00404 +00407 typedef detail::tvec3<f64> f64vec3; +00408 +00411 typedef detail::tvec4<f64> f64vec4; +00412 +00413 +00415 // Float matrix types +00416 +00419 //typedef detail::tmat1x1<f32> fmat1; +00420 +00423 typedef detail::tmat2x2<f32> fmat2; +00424 +00427 typedef detail::tmat3x3<f32> fmat3; +00428 +00431 typedef detail::tmat4x4<f32> fmat4; +00432 +00433 +00436 //typedef f32 fmat1x1; +00437 +00440 typedef detail::tmat2x2<f32> fmat2x2; +00441 +00444 typedef detail::tmat2x3<f32> fmat2x3; +00445 +00448 typedef detail::tmat2x4<f32> fmat2x4; +00449 +00452 typedef detail::tmat3x2<f32> fmat3x2; +00453 +00456 typedef detail::tmat3x3<f32> fmat3x3; +00457 +00460 typedef detail::tmat3x4<f32> fmat3x4; +00461 +00464 typedef detail::tmat4x2<f32> fmat4x2; +00465 +00468 typedef detail::tmat4x3<f32> fmat4x3; +00469 +00472 typedef detail::tmat4x4<f32> fmat4x4; +00473 +00474 +00477 //typedef detail::tmat1x1<f16> f16mat1; +00478 +00481 typedef detail::tmat2x2<f16> f16mat2; +00482 +00485 typedef detail::tmat3x3<f16> f16mat3; +00486 +00489 typedef detail::tmat4x4<f16> f16mat4; +00490 +00491 +00494 //typedef f16 f16mat1x1; +00495 +00498 typedef detail::tmat2x2<f16> f16mat2x2; +00499 +00502 typedef detail::tmat2x3<f16> f16mat2x3; +00503 +00506 typedef detail::tmat2x4<f16> f16mat2x4; +00507 +00510 typedef detail::tmat3x2<f16> f16mat3x2; +00511 +00514 typedef detail::tmat3x3<f16> f16mat3x3; +00515 +00518 typedef detail::tmat3x4<f16> f16mat3x4; +00519 +00522 typedef detail::tmat4x2<f16> f16mat4x2; +00523 +00526 typedef detail::tmat4x3<f16> f16mat4x3; +00527 +00530 typedef detail::tmat4x4<f16> f16mat4x4; +00531 +00532 +00535 //typedef detail::tmat1x1<f32> f32mat1; +00536 +00539 typedef detail::tmat2x2<f32> f32mat2; +00540 +00543 typedef detail::tmat3x3<f32> f32mat3; +00544 +00547 typedef detail::tmat4x4<f32> f32mat4; +00548 +00549 +00552 //typedef f32 f32mat1x1; +00553 +00556 typedef detail::tmat2x2<f32> f32mat2x2; +00557 +00560 typedef detail::tmat2x3<f32> f32mat2x3; +00561 +00564 typedef detail::tmat2x4<f32> f32mat2x4; +00565 +00568 typedef detail::tmat3x2<f32> f32mat3x2; +00569 +00572 typedef detail::tmat3x3<f32> f32mat3x3; +00573 +00576 typedef detail::tmat3x4<f32> f32mat3x4; +00577 +00580 typedef detail::tmat4x2<f32> f32mat4x2; +00581 +00584 typedef detail::tmat4x3<f32> f32mat4x3; +00585 +00588 typedef detail::tmat4x4<f32> f32mat4x4; +00589 +00590 +00593 //typedef detail::tmat1x1<f64> f64mat1; +00594 +00597 typedef detail::tmat2x2<f64> f64mat2; +00598 +00601 typedef detail::tmat3x3<f64> f64mat3; +00602 +00605 typedef detail::tmat4x4<f64> f64mat4; +00606 +00607 +00610 //typedef f64 f64mat1x1; +00611 +00614 typedef detail::tmat2x2<f64> f64mat2x2; +00615 +00618 typedef detail::tmat2x3<f64> f64mat2x3; +00619 +00622 typedef detail::tmat2x4<f64> f64mat2x4; +00623 +00626 typedef detail::tmat3x2<f64> f64mat3x2; +00627 +00630 typedef detail::tmat3x3<f64> f64mat3x3; +00631 +00634 typedef detail::tmat3x4<f64> f64mat3x4; +00635 +00638 typedef detail::tmat4x2<f64> f64mat4x2; +00639 +00642 typedef detail::tmat4x3<f64> f64mat4x3; +00643 +00646 typedef detail::tmat4x4<f64> f64mat4x4; +00647 +00648 +00650 // Quaternion types +00651 +00654 typedef detail::tquat<f16> f16quat; +00655 +00658 typedef detail::tquat<f32> f32quat; +00659 +00662 typedef detail::tquat<f64> f64quat; +00663 +00665 }//namespace glm +00666 +00667 #include "type_precision.inl" +00668 +00669 #endif//GLM_GTC_type_precision +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTC_type_ptr: Memory layout access
+Definition in file type_ptr.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 +00040 +00041 +00042 +00043 +00044 +00045 +00046 +00047 +00048 +00049 +00050 +00051 +00052 +00053 +00054 +00055 +00056 +00057 +00058 +00059 #ifndef GLM_GTC_type_ptr +00060 #define GLM_GTC_type_ptr GLM_VERSION +00061 +00062 // Dependency: +00063 #include "../glm.hpp" +00064 #include "../gtc/half_float.hpp" +00065 #include "../gtc/quaternion.hpp" +00066 #include <cstring> +00067 +00068 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00069 # pragma message("GLM: GLM_GTC_type_ptr extension included") +00070 #endif +00071 +00072 namespace glm +00073 { +00076 +00079 template<typename genType> +00080 typename genType::value_type const * value_ptr(genType const & vec); +00081 +00084 template<typename T> +00085 detail::tvec2<T> make_vec2(T const * const ptr); +00086 +00089 template<typename T> +00090 detail::tvec3<T> make_vec3(T const * const ptr); +00091 +00094 template<typename T> +00095 detail::tvec4<T> make_vec4(T const * const ptr); +00096 +00099 template<typename T> +00100 detail::tmat2x2<T> make_mat2x2(T const * const ptr); +00101 +00104 template<typename T> +00105 detail::tmat2x3<T> make_mat2x3(T const * const ptr); +00106 +00109 template<typename T> +00110 detail::tmat2x4<T> make_mat2x4(T const * const ptr); +00111 +00114 template<typename T> +00115 detail::tmat3x2<T> make_mat3x2(T const * const ptr); +00116 +00119 template<typename T> +00120 detail::tmat3x3<T> make_mat3x3(T const * const ptr); +00121 +00124 template<typename T> +00125 detail::tmat3x4<T> make_mat3x4(T const * const ptr); +00126 +00129 template<typename T> +00130 detail::tmat4x2<T> make_mat4x2( +00131 T const * const ptr); +00132 +00135 template<typename T> +00136 detail::tmat4x3<T> make_mat4x3(T const * const ptr); +00137 +00140 template<typename T> +00141 detail::tmat4x4<T> make_mat4x4(T const * const ptr); +00142 +00145 template<typename T> +00146 detail::tmat2x2<T> make_mat2(T const * const ptr); +00147 +00150 template<typename T> +00151 detail::tmat3x3<T> make_mat3(T const * const ptr); +00152 +00155 template<typename T> +00156 detail::tmat4x4<T> make_mat4(T const * const ptr); +00157 +00160 template<typename T> +00161 detail::tquat<T> make_quat(T const * const ptr); +00162 +00164 }//namespace glm +00165 +00166 #include "type_ptr.inl" +00167 +00168 #endif//GLM_GTC_type_ptr +00169 +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_size.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_size +00030 #define glm_core_type_size +00031 +00032 #include <cstdlib> +00033 +00034 namespace glm{ +00035 namespace detail +00036 { +00037 //typedef std::size_t size_t; +00038 typedef int sizeType; +00039 +00040 }//namespace detail +00041 }//namespace glm +00042 +00043 #endif//glm_core_type_size +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_vec.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_vec +00030 #define glm_core_type_vec +00031 +00032 #include "type_gentype.hpp" +00033 +00034 namespace glm{ +00035 namespace detail +00036 { +00037 +00038 }//namespace detail +00039 }//namespace glm +00040 +00041 #endif//glm_core_type_vec +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_vec1.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_gentype1 +00030 #define glm_core_type_gentype1 +00031 +00032 #include "type_vec.hpp" +00033 #include "type_float.hpp" +00034 #include "type_int.hpp" +00035 #include "type_size.hpp" +00036 #include "_swizzle.hpp" +00037 +00038 namespace glm{ +00039 namespace detail +00040 { +00041 template <typename T> struct tref1; +00042 template <typename T> struct tref2; +00043 template <typename T> struct tref3; +00044 template <typename T> struct tref4; +00045 template <typename T> struct tvec1; +00046 template <typename T> struct tvec2; +00047 template <typename T> struct tvec3; +00048 template <typename T> struct tvec4; +00049 +00050 template <typename T> +00051 struct tvec1 +00052 { +00053 enum ctor{null}; +00054 +00055 typedef T value_type; +00056 typedef std::size_t size_type; +00057 GLM_FUNC_DECL size_type length() const; +00058 +00059 typedef tvec1<T> type; +00060 typedef tvec1<bool> bool_type; +00061 +00063 // Data +00064 +00065 # if(GLM_COMPONENT == GLM_COMPONENT_ONLY_XYZW) +00066 value_type x; +00067 # else//(GLM_COMPONENT == GLM_COMPONENT_GLSL_NAMES) +00068 union {value_type x, r, s;}; +00069 # endif//GLM_COMPONENT +00070 +00072 // Accesses +00073 +00074 GLM_FUNC_DECL value_type & operator[](size_type i); +00075 GLM_FUNC_DECL value_type const & operator[](size_type i) const; +00076 +00078 // Implicit basic constructors +00079 +00080 GLM_FUNC_DECL tvec1(); +00081 GLM_FUNC_DECL tvec1(tvec1<T> const & v); +00082 +00084 // Explicit basic constructors +00085 +00086 GLM_FUNC_DECL explicit tvec1( +00087 ctor); +00088 GLM_FUNC_DECL explicit tvec1( +00089 value_type const & s); +00090 +00092 // Swizzle constructors +00093 +00094 GLM_FUNC_DECL tvec1(tref1<T> const & r); +00095 +00097 // Convertion scalar constructors +00098 +00100 template <typename U> +00101 GLM_FUNC_DECL explicit tvec1(U const & s); +00102 +00104 // Convertion vector constructors +00105 +00107 template <typename U> +00108 GLM_FUNC_DECL explicit tvec1(tvec2<U> const & v); +00110 template <typename U> +00111 GLM_FUNC_DECL explicit tvec1(tvec3<U> const & v); +00113 template <typename U> +00114 GLM_FUNC_DECL explicit tvec1(tvec4<U> const & v); +00115 +00117 // Unary arithmetic operators +00118 +00119 GLM_FUNC_DECL tvec1<T> & operator= (tvec1<T> const & v); +00120 template <typename U> +00121 GLM_FUNC_DECL tvec1<T> & operator= (tvec1<U> const & v); +00122 +00123 template <typename U> +00124 GLM_FUNC_DECL tvec1<T> & operator+=(U const & s); +00125 template <typename U> +00126 GLM_FUNC_DECL tvec1<T> & operator+=(tvec1<U> const & v); +00127 template <typename U> +00128 GLM_FUNC_DECL tvec1<T> & operator-=(U const & s); +00129 template <typename U> +00130 GLM_FUNC_DECL tvec1<T> & operator-=(tvec1<U> const & v); +00131 template <typename U> +00132 GLM_FUNC_DECL tvec1<T> & operator*=(U const & s); +00133 template <typename U> +00134 GLM_FUNC_DECL tvec1<T> & operator*=(tvec1<U> const & v); +00135 template <typename U> +00136 GLM_FUNC_DECL tvec1<T> & operator/=(U const & s); +00137 template <typename U> +00138 GLM_FUNC_DECL tvec1<T> & operator/=(tvec1<U> const & v); +00139 GLM_FUNC_DECL tvec1<T> & operator++(); +00140 GLM_FUNC_DECL tvec1<T> & operator--(); +00141 +00143 // Unary bit operators +00144 +00145 template <typename U> +00146 GLM_FUNC_DECL tvec1<T> & operator%=(U const & s); +00147 template <typename U> +00148 GLM_FUNC_DECL tvec1<T> & operator%=(tvec1<U> const & v); +00149 template <typename U> +00150 GLM_FUNC_DECL tvec1<T> & operator&=(U const & s); +00151 template <typename U> +00152 GLM_FUNC_DECL tvec1<T> & operator&=(tvec1<U> const & v); +00153 template <typename U> +00154 GLM_FUNC_DECL tvec1<T> & operator|=(U const & s); +00155 template <typename U> +00156 GLM_FUNC_DECL tvec1<T> & operator|=(tvec1<U> const & v); +00157 template <typename U> +00158 GLM_FUNC_DECL tvec1<T> & operator^=(U const & s); +00159 template <typename U> +00160 GLM_FUNC_DECL tvec1<T> & operator^=(tvec1<U> const & v); +00161 template <typename U> +00162 GLM_FUNC_DECL tvec1<T> & operator<<=(U const & s); +00163 template <typename U> +00164 GLM_FUNC_DECL tvec1<T> & operator<<=(tvec1<U> const & v); +00165 template <typename U> +00166 GLM_FUNC_DECL tvec1<T> & operator>>=(U const & s); +00167 template <typename U> +00168 GLM_FUNC_DECL tvec1<T> & operator>>=(tvec1<U> const & v); +00169 +00171 // Swizzle operators +00172 +00173 GLM_FUNC_DECL value_type swizzle(comp X) const; +00174 GLM_FUNC_DECL tvec2<T> swizzle(comp X, comp Y) const; +00175 GLM_FUNC_DECL tvec3<T> swizzle(comp X, comp Y, comp Z) const; +00176 GLM_FUNC_DECL tvec4<T> swizzle(comp X, comp Y, comp Z, comp W) const; +00177 GLM_FUNC_DECL tref1<T> swizzle(comp X); +00178 }; +00179 +00180 template <typename T> +00181 struct tref1 +00182 { +00183 GLM_FUNC_DECL tref1(T & x); +00184 GLM_FUNC_DECL tref1(tref1<T> const & r); +00185 GLM_FUNC_DECL tref1(tvec1<T> const & v); +00186 +00187 GLM_FUNC_DECL tref1<T> & operator= (tref1<T> const & r); +00188 GLM_FUNC_DECL tref1<T> & operator= (tvec1<T> const & v); +00189 +00190 T& x; +00191 }; +00192 +00193 GLM_DETAIL_IS_VECTOR(tvec1); +00194 +00195 typedef detail::tvec1<highp_float> highp_vec1_t; +00196 typedef detail::tvec1<mediump_float> mediump_vec1_t; +00197 typedef detail::tvec1<lowp_float> lowp_vec1_t; +00198 typedef detail::tvec1<highp_int> highp_ivec1_t; +00199 typedef detail::tvec1<mediump_int> mediump_ivec1_t; +00200 typedef detail::tvec1<lowp_int> lowp_ivec1_t; +00201 typedef detail::tvec1<highp_uint> highp_uvec1_t; +00202 typedef detail::tvec1<mediump_uint> mediump_uvec1_t; +00203 typedef detail::tvec1<lowp_uint> lowp_uvec1_t; +00204 +00205 }//namespace detail +00206 }//namespace glm +00207 +00208 #ifndef GLM_EXTERNAL_TEMPLATE +00209 #include "type_vec1.inl" +00210 #endif//GLM_EXTERNAL_TEMPLATE +00211 +00212 #endif//glm_core_type_gentype1 +
+ + + + + + + |
Go to the source code of this file.
++Typedefs | |
typedef detail::tvec2< highp_int > | highp_ivec2 |
typedef detail::tvec2< highp_uint > | highp_uvec2 |
typedef detail::tvec2 +< highp_float > | highp_vec2 |
typedef detail::tvec2< lowp_int > | lowp_ivec2 |
typedef detail::tvec2< lowp_uint > | lowp_uvec2 |
typedef detail::tvec2< lowp_float > | lowp_vec2 |
typedef detail::tvec2 +< mediump_int > | mediump_ivec2 |
typedef detail::tvec2 +< mediump_uint > | mediump_uvec2 |
typedef detail::tvec2 +< mediump_float > | mediump_vec2 |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_vec2.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_gentype2 +00030 #define glm_core_type_gentype2 +00031 +00032 #include "type_vec.hpp" +00033 #include "type_float.hpp" +00034 #include "type_int.hpp" +00035 #include "type_size.hpp" +00036 #include "_swizzle.hpp" +00037 +00038 namespace glm{ +00039 namespace detail +00040 { +00041 template <typename T> struct tref2; +00042 template <typename T> struct tref3; +00043 template <typename T> struct tref4; +00044 template <typename T> struct tvec3; +00045 template <typename T> struct tvec4; +00046 +00047 // The basic 2D vector type. +00048 // \ingroup core_template +00049 template <typename T> +00050 struct tvec2 +00051 { +00052 enum ctor{null}; +00053 +00054 typedef T value_type; +00055 typedef std::size_t size_type; +00056 GLM_FUNC_DECL size_type length() const; +00057 +00058 typedef tvec2<T> type; +00059 typedef tvec2<bool> bool_type; +00060 +00062 // Data +00063 +00064 # if(GLM_COMPONENT == GLM_COMPONENT_CXX11) +00065 union +00066 { +00067 # if(defined(GLM_SWIZZLE)) +00068 _GLM_SWIZZLE2_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, x, y) +00069 _GLM_SWIZZLE2_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, r, g) +00070 _GLM_SWIZZLE2_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, s, t) +00071 _GLM_SWIZZLE2_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, x, y) +00072 _GLM_SWIZZLE2_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, r, g) +00073 _GLM_SWIZZLE2_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, s, t) +00074 _GLM_SWIZZLE2_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, x, y) +00075 _GLM_SWIZZLE2_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, r, g) +00076 _GLM_SWIZZLE2_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, s, t) +00077 # endif//(defined(GLM_SWIZZLE)) +00078 +00079 struct{value_type r, g;}; +00080 struct{value_type s, t;}; +00081 struct{value_type x, y;}; +00082 }; +00083 # elif(GLM_COMPONENT == GLM_COMPONENT_CXX98) +00084 union {value_type x, r, s;}; +00085 union {value_type y, g, t;}; +00086 +00087 # if(defined(GLM_SWIZZLE)) +00088 // Defines all he swizzle operator as functions +00089 GLM_SWIZZLE_GEN_REF_FROM_VEC2(value_type, detail::tvec2, detail::tref2) +00090 GLM_SWIZZLE_GEN_VEC_FROM_VEC2(value_type, detail::tvec2, detail::tvec2, detail::tvec3, detail::tvec4) +00091 # endif//(defined(GLM_SWIZZLE)) +00092 # else //(GLM_COMPONENT == GLM_COMPONENT_ONLY_XYZW) +00093 value_type x, y; +00094 +00095 # if(defined(GLM_SWIZZLE)) +00096 // Defines all he swizzle operator as functions +00097 GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(value_type, detail::tvec2, detail::tref2, x, y) +00098 GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(value_type, detail::tvec2, detail::tvec2, detail::tvec3, detail::tvec4, x, y) +00099 # endif//(defined(GLM_SWIZZLE)) +00100 # endif//GLM_COMPONENT +00101 +00103 // Accesses +00104 +00105 GLM_FUNC_DECL value_type & operator[](size_type i); +00106 GLM_FUNC_DECL value_type const & operator[](size_type i) const; +00107 +00109 // Implicit basic constructors +00110 +00111 GLM_FUNC_DECL tvec2(); +00112 GLM_FUNC_DECL tvec2(tvec2<T> const & v); +00113 +00115 // Explicit basic constructors +00116 +00117 GLM_FUNC_DECL explicit tvec2( +00118 ctor); +00119 GLM_FUNC_DECL explicit tvec2( +00120 value_type const & s); +00121 GLM_FUNC_DECL explicit tvec2( +00122 value_type const & s1, +00123 value_type const & s2); +00124 +00126 // Swizzle constructors +00127 +00128 tvec2(tref2<T> const & r); +00129 +00130 template <int E0, int E1> +00131 GLM_FUNC_DECL tvec2(const glm::detail::swizzle<2,T,tvec2<T>,E0,E1,-1,-2>& that) +00132 { +00133 *this = that(); +00134 } +00135 +00137 // Convertion constructors +00138 +00140 template <typename U> +00141 GLM_FUNC_DECL explicit tvec2( +00142 U const & x); +00144 template <typename U, typename V> +00145 GLM_FUNC_DECL explicit tvec2( +00146 U const & x, +00147 V const & y); +00148 +00150 // Convertion vector constructors +00151 +00153 template <typename U> +00154 GLM_FUNC_DECL explicit tvec2(tvec2<U> const & v); +00156 template <typename U> +00157 GLM_FUNC_DECL explicit tvec2(tvec3<U> const & v); +00159 template <typename U> +00160 GLM_FUNC_DECL explicit tvec2(tvec4<U> const & v); +00161 +00163 // Unary arithmetic operators +00164 +00165 GLM_FUNC_DECL tvec2<T> & operator= (tvec2<T> const & v); +00166 template <typename U> +00167 GLM_FUNC_DECL tvec2<T> & operator= (tvec2<U> const & v); +00168 +00169 template <typename U> +00170 GLM_FUNC_DECL tvec2<T> & operator+=(U const & s); +00171 template <typename U> +00172 GLM_FUNC_DECL tvec2<T> & operator+=(tvec2<U> const & v); +00173 template <typename U> +00174 GLM_FUNC_DECL tvec2<T> & operator-=(U const & s); +00175 template <typename U> +00176 GLM_FUNC_DECL tvec2<T> & operator-=(tvec2<U> const & v); +00177 template <typename U> +00178 GLM_FUNC_DECL tvec2<T> & operator*=(U const & s); +00179 template <typename U> +00180 GLM_FUNC_DECL tvec2<T> & operator*=(tvec2<U> const & v); +00181 template <typename U> +00182 GLM_FUNC_DECL tvec2<T> & operator/=(U const & s); +00183 template <typename U> +00184 GLM_FUNC_DECL tvec2<T> & operator/=(tvec2<U> const & v); +00185 GLM_FUNC_DECL tvec2<T> & operator++(); +00186 GLM_FUNC_DECL tvec2<T> & operator--(); +00187 +00189 // Unary bit operators +00190 +00191 template <typename U> +00192 GLM_FUNC_DECL tvec2<T> & operator%= (U const & s); +00193 template <typename U> +00194 GLM_FUNC_DECL tvec2<T> & operator%= (tvec2<U> const & v); +00195 template <typename U> +00196 GLM_FUNC_DECL tvec2<T> & operator&= (U const & s); +00197 template <typename U> +00198 GLM_FUNC_DECL tvec2<T> & operator&= (tvec2<U> const & v); +00199 template <typename U> +00200 GLM_FUNC_DECL tvec2<T> & operator|= (U const & s); +00201 template <typename U> +00202 GLM_FUNC_DECL tvec2<T> & operator|= (tvec2<U> const & v); +00203 template <typename U> +00204 GLM_FUNC_DECL tvec2<T> & operator^= (U const & s); +00205 template <typename U> +00206 GLM_FUNC_DECL tvec2<T> & operator^= (tvec2<U> const & v); +00207 template <typename U> +00208 GLM_FUNC_DECL tvec2<T> & operator<<=(U const & s); +00209 template <typename U> +00210 GLM_FUNC_DECL tvec2<T> & operator<<=(tvec2<U> const & v); +00211 template <typename U> +00212 GLM_FUNC_DECL tvec2<T> & operator>>=(U const & s); +00213 template <typename U> +00214 GLM_FUNC_DECL tvec2<T> & operator>>=(tvec2<U> const & v); +00215 +00217 // Swizzle operators +00218 +00219 GLM_FUNC_DECL value_type swizzle(comp X) const; +00220 GLM_FUNC_DECL tvec2<T> swizzle(comp X, comp Y) const; +00221 GLM_FUNC_DECL tvec3<T> swizzle(comp X, comp Y, comp Z) const; +00222 GLM_FUNC_DECL tvec4<T> swizzle(comp X, comp Y, comp Z, comp W) const; +00223 GLM_FUNC_DECL tref2<T> swizzle(comp X, comp Y); +00224 }; +00225 +00226 template <typename T> +00227 struct tref2 +00228 { +00229 GLM_FUNC_DECL tref2(T & x, T & y); +00230 GLM_FUNC_DECL tref2(tref2<T> const & r); +00231 GLM_FUNC_DECL explicit tref2(tvec2<T> const & v); +00232 +00233 GLM_FUNC_DECL tref2<T> & operator= (tref2<T> const & r); +00234 GLM_FUNC_DECL tref2<T> & operator= (tvec2<T> const & v); +00235 +00236 GLM_FUNC_DECL tvec2<T> operator() (); +00237 +00238 T & x; +00239 T & y; +00240 }; +00241 +00242 GLM_DETAIL_IS_VECTOR(tvec2); +00243 +00244 } //namespace detail +00245 +00248 +00254 typedef detail::tvec2<highp_float> highp_vec2; +00255 +00261 typedef detail::tvec2<mediump_float> mediump_vec2; +00262 +00268 typedef detail::tvec2<lowp_float> lowp_vec2; +00269 +00275 typedef detail::tvec2<highp_int> highp_ivec2; +00276 +00282 typedef detail::tvec2<mediump_int> mediump_ivec2; +00283 +00289 typedef detail::tvec2<lowp_int> lowp_ivec2; +00290 +00296 typedef detail::tvec2<highp_uint> highp_uvec2; +00297 +00303 typedef detail::tvec2<mediump_uint> mediump_uvec2; +00304 +00310 typedef detail::tvec2<lowp_uint> lowp_uvec2; +00311 +00313 }//namespace glm +00314 +00315 #ifndef GLM_EXTERNAL_TEMPLATE +00316 #include "type_vec2.inl" +00317 #endif//GLM_EXTERNAL_TEMPLATE +00318 +00319 #endif//glm_core_type_gentype2 +
+ + + + + + + |
Go to the source code of this file.
++Typedefs | |
typedef detail::tvec3< highp_int > | highp_ivec3 |
typedef detail::tvec3< highp_uint > | highp_uvec3 |
typedef detail::tvec3 +< highp_float > | highp_vec3 |
typedef detail::tvec3< lowp_int > | lowp_ivec3 |
typedef detail::tvec3< lowp_uint > | lowp_uvec3 |
typedef detail::tvec3< lowp_float > | lowp_vec3 |
typedef detail::tvec3 +< mediump_int > | mediump_ivec3 |
typedef detail::tvec3 +< mediump_uint > | mediump_uvec3 |
typedef detail::tvec3 +< mediump_float > | mediump_vec3 |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_vec3.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_gentype3 +00030 #define glm_core_type_gentype3 +00031 +00032 #include "type_vec.hpp" +00033 #include "type_float.hpp" +00034 #include "type_int.hpp" +00035 #include "type_size.hpp" +00036 #include "_swizzle.hpp" +00037 +00038 namespace glm{ +00039 namespace detail +00040 { +00041 template <typename T> struct tref2; +00042 template <typename T> struct tref3; +00043 template <typename T> struct tref4; +00044 template <typename T> struct tvec2; +00045 template <typename T> struct tvec4; +00046 +00047 // Basic 3D vector type. +00048 // \ingroup core_template +00049 template <typename T> +00050 struct tvec3 +00051 { +00052 enum ctor{null}; +00053 +00054 typedef T value_type; +00055 typedef std::size_t size_type; +00056 GLM_FUNC_DECL size_type length() const; +00057 +00058 typedef tvec3<T> type; +00059 typedef tvec3<bool> bool_type; +00060 +00062 // Data +00063 +00064 # if(GLM_COMPONENT == GLM_COMPONENT_CXX11) +00065 union +00066 { +00067 # if(defined(GLM_SWIZZLE)) +00068 _GLM_SWIZZLE3_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, x, y, z) +00069 _GLM_SWIZZLE3_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, r, g, b) +00070 _GLM_SWIZZLE3_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, s, t, p) +00071 _GLM_SWIZZLE3_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, x, y, z) +00072 _GLM_SWIZZLE3_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, r, g, b) +00073 _GLM_SWIZZLE3_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, s, t, p) +00074 _GLM_SWIZZLE3_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, x, y, z) +00075 _GLM_SWIZZLE3_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, r, g, b) +00076 _GLM_SWIZZLE3_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, s, t, p) +00077 # endif//(defined(GLM_SWIZZLE)) +00078 +00079 struct{value_type r, g, b;}; +00080 struct{value_type s, t, p;}; +00081 struct{value_type x, y, z;}; +00082 }; +00083 # elif(GLM_COMPONENT == GLM_COMPONENT_CXX98) +00084 union {value_type x, r, s;}; +00085 union {value_type y, g, t;}; +00086 union {value_type z, b, p;}; +00087 +00088 # if(defined(GLM_SWIZZLE)) +00089 // Defines all he swizzle operator as functions +00090 GLM_SWIZZLE_GEN_REF_FROM_VEC3(T, detail::tvec3, detail::tref2, detail::tref3) +00091 GLM_SWIZZLE_GEN_VEC_FROM_VEC3(T, detail::tvec3, detail::tvec2, detail::tvec3, detail::tvec4) +00092 # endif//(defined(GLM_SWIZZLE)) +00093 # else //(GLM_COMPONENT == GLM_COMPONENT_ONLY_XYZW) +00094 value_type x, y, z; +00095 +00096 # if(defined(GLM_SWIZZLE)) +00097 // Defines all he swizzle operator as functions +00098 GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, detail::tvec3, detail::tref2, detail::tref3, x, y, z) +00099 GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, detail::tvec3, detail::tvec2, detail::tvec3, detail::tvec4, x, y, z) +00100 # endif//(defined(GLM_SWIZZLE)) +00101 # endif//GLM_COMPONENT +00102 +00104 // Accesses +00105 +00106 GLM_FUNC_DECL value_type & operator[](size_type i); +00107 GLM_FUNC_DECL value_type const & operator[](size_type i) const; +00108 +00110 // Implicit basic constructors +00111 +00112 GLM_FUNC_DECL tvec3(); +00113 GLM_FUNC_DECL tvec3(tvec3<T> const & v); +00114 +00116 // Explicit basic constructors +00117 +00118 GLM_FUNC_DECL explicit tvec3( +00119 ctor); +00120 GLM_FUNC_DECL explicit tvec3( +00121 value_type const & s); +00122 GLM_FUNC_DECL explicit tvec3( +00123 value_type const & s1, +00124 value_type const & s2, +00125 value_type const & s3); +00126 +00128 // Convertion scalar constructors +00129 +00131 template <typename U> +00132 GLM_FUNC_DECL explicit tvec3( +00133 U const & x); +00135 template <typename U, typename V, typename W> +00136 GLM_FUNC_DECL explicit tvec3( +00137 U const & x, +00138 V const & y, +00139 W const & z); +00140 +00142 // Convertion vector constructors +00143 +00145 template <typename A, typename B> +00146 GLM_FUNC_DECL explicit tvec3(tvec2<A> const & v, B const & s); +00148 template <typename A, typename B> +00149 GLM_FUNC_DECL explicit tvec3(A const & s, tvec2<B> const & v); +00151 template <typename U> +00152 GLM_FUNC_DECL explicit tvec3(tvec3<U> const & v); +00154 template <typename U> +00155 GLM_FUNC_DECL explicit tvec3(tvec4<U> const & v); +00156 +00158 // Swizzle constructors +00159 +00160 GLM_FUNC_DECL tvec3(tref3<T> const & r); +00161 +00162 template <typename A, typename B> +00163 GLM_FUNC_DECL explicit tvec3(tref2<A> const & v, B const & s); +00164 +00165 template <typename A, typename B> +00166 GLM_FUNC_DECL explicit tvec3(A const & s, tref2<B> const & v); +00167 +00168 template <int E0, int E1, int E2> +00169 GLM_FUNC_DECL tvec3(glm::detail::swizzle<3, T, tvec3<T>, E0, E1, E2, -1> const & that) +00170 { +00171 *this = that(); +00172 } +00173 +00174 template <int E0, int E1> +00175 GLM_FUNC_DECL tvec3(glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v, T const & s) +00176 { +00177 *this = tvec3<T>(v(), s); +00178 } +00179 +00180 template <int E0, int E1> +00181 GLM_FUNC_DECL tvec3(T const & s, glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v) +00182 { +00183 *this = tvec3<T>(s, v()); +00184 } +00185 +00187 // Unary arithmetic operators +00188 +00189 GLM_FUNC_DECL tvec3<T> & operator= (tvec3<T> const & v); +00190 template <typename U> +00191 GLM_FUNC_DECL tvec3<T> & operator= (tvec3<U> const & v); +00192 +00193 template <typename U> +00194 GLM_FUNC_DECL tvec3<T> & operator+=(U const & s); +00195 template <typename U> +00196 GLM_FUNC_DECL tvec3<T> & operator+=(tvec3<U> const & v); +00197 template <typename U> +00198 GLM_FUNC_DECL tvec3<T> & operator-=(U const & s); +00199 template <typename U> +00200 GLM_FUNC_DECL tvec3<T> & operator-=(tvec3<U> const & v); +00201 template <typename U> +00202 GLM_FUNC_DECL tvec3<T> & operator*=(U const & s); +00203 template <typename U> +00204 GLM_FUNC_DECL tvec3<T> & operator*=(tvec3<U> const & v); +00205 template <typename U> +00206 GLM_FUNC_DECL tvec3<T> & operator/=(U const & s); +00207 template <typename U> +00208 GLM_FUNC_DECL tvec3<T> & operator/=(tvec3<U> const & v); +00209 GLM_FUNC_DECL tvec3<T> & operator++(); +00210 GLM_FUNC_DECL tvec3<T> & operator--(); +00211 +00213 // Unary bit operators +00214 +00215 template <typename U> +00216 GLM_FUNC_DECL tvec3<T> & operator%= (U const & s); +00217 template <typename U> +00218 GLM_FUNC_DECL tvec3<T> & operator%= (tvec3<U> const & v); +00219 template <typename U> +00220 GLM_FUNC_DECL tvec3<T> & operator&= (U const & s); +00221 template <typename U> +00222 GLM_FUNC_DECL tvec3<T> & operator&= (tvec3<U> const & v); +00223 template <typename U> +00224 GLM_FUNC_DECL tvec3<T> & operator|= (U const & s); +00225 template <typename U> +00226 GLM_FUNC_DECL tvec3<T> & operator|= (tvec3<U> const & v); +00227 template <typename U> +00228 GLM_FUNC_DECL tvec3<T> & operator^= (U const & s); +00229 template <typename U> +00230 GLM_FUNC_DECL tvec3<T> & operator^= (tvec3<U> const & v); +00231 template <typename U> +00232 GLM_FUNC_DECL tvec3<T> & operator<<=(U const & s); +00233 template <typename U> +00234 GLM_FUNC_DECL tvec3<T> & operator<<=(tvec3<U> const & v); +00235 template <typename U> +00236 GLM_FUNC_DECL tvec3<T> & operator>>=(U const & s); +00237 template <typename U> +00238 GLM_FUNC_DECL tvec3<T> & operator>>=(tvec3<U> const & v); +00239 +00241 // Swizzle operators +00242 +00243 GLM_FUNC_DECL value_type swizzle(comp X) const; +00244 GLM_FUNC_DECL tvec2<T> swizzle(comp X, comp Y) const; +00245 GLM_FUNC_DECL tvec3<T> swizzle(comp X, comp Y, comp Z) const; +00246 GLM_FUNC_DECL tvec4<T> swizzle(comp X, comp Y, comp Z, comp W) const; +00247 GLM_FUNC_DECL tref2<T> swizzle(comp X, comp Y); +00248 GLM_FUNC_DECL tref3<T> swizzle(comp X, comp Y, comp Z); +00249 }; +00250 +00251 template <typename T> +00252 struct tref3 +00253 { +00254 GLM_FUNC_DECL tref3(T & x, T & y, T & z); +00255 GLM_FUNC_DECL tref3(tref3<T> const & r); +00256 GLM_FUNC_DECL explicit tref3(tvec3<T> const & v); +00257 +00258 GLM_FUNC_DECL tref3<T> & operator= (tref3<T> const & r); +00259 GLM_FUNC_DECL tref3<T> & operator= (tvec3<T> const & v); +00260 +00261 GLM_FUNC_DECL tvec3<T> operator() (); +00262 +00263 T & x; +00264 T & y; +00265 T & z; +00266 }; +00267 +00268 GLM_DETAIL_IS_VECTOR(tvec3); +00269 } //namespace detail +00270 +00273 +00279 typedef detail::tvec3<highp_float> highp_vec3; +00280 +00286 typedef detail::tvec3<mediump_float> mediump_vec3; +00287 +00293 typedef detail::tvec3<lowp_float> lowp_vec3; +00294 +00300 typedef detail::tvec3<highp_int> highp_ivec3; +00301 +00307 typedef detail::tvec3<mediump_int> mediump_ivec3; +00308 +00314 typedef detail::tvec3<lowp_int> lowp_ivec3; +00315 +00321 typedef detail::tvec3<highp_uint> highp_uvec3; +00322 +00328 typedef detail::tvec3<mediump_uint> mediump_uvec3; +00329 +00335 typedef detail::tvec3<lowp_uint> lowp_uvec3; +00336 +00338 }//namespace glm +00339 +00340 #ifndef GLM_EXTERNAL_TEMPLATE +00341 #include "type_vec3.inl" +00342 #endif//GLM_EXTERNAL_TEMPLATE +00343 +00344 #endif//glm_core_type_gentype3 +
+ + + + + + + |
Go to the source code of this file.
++Typedefs | |
typedef detail::tvec4< highp_int > | highp_ivec4 |
typedef detail::tvec4< highp_uint > | highp_uvec4 |
typedef detail::tvec4 +< highp_float > | highp_vec4 |
typedef detail::tvec4< lowp_int > | lowp_ivec4 |
typedef detail::tvec4< lowp_uint > | lowp_uvec4 |
typedef detail::tvec4< lowp_float > | lowp_vec4 |
typedef detail::tvec4 +< mediump_int > | mediump_ivec4 |
typedef detail::tvec4 +< mediump_uint > | mediump_uvec4 |
typedef detail::tvec4 +< mediump_float > | mediump_vec4 |
OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file type_vec4.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 #ifndef glm_core_type_gentype4 +00030 #define glm_core_type_gentype4 +00031 +00032 #include "type_vec.hpp" +00033 #include "type_float.hpp" +00034 #include "type_int.hpp" +00035 #include "type_size.hpp" +00036 #include "_swizzle.hpp" +00037 +00038 namespace glm{ +00039 namespace detail +00040 { +00041 template <typename T> struct tref2; +00042 template <typename T> struct tref3; +00043 template <typename T> struct tref4; +00044 template <typename T> struct tvec2; +00045 template <typename T> struct tvec3; +00046 +00047 // Basic 4D vector type. +00048 // @ingroup core_template +00049 template <typename T> +00050 struct tvec4 +00051 { +00052 enum ctor{null}; +00053 +00054 typedef T value_type; +00055 typedef std::size_t size_type; +00056 GLM_FUNC_DECL size_type length() const; +00057 +00058 typedef tvec4<T> type; +00059 typedef tvec4<bool> bool_type; +00060 +00062 // Data +00063 +00064 # if(GLM_COMPONENT == GLM_COMPONENT_CXX11) +00065 union +00066 { +00067 # if(defined(GLM_SWIZZLE)) +00068 _GLM_SWIZZLE4_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, x, y, z, w) +00069 _GLM_SWIZZLE4_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, r, g, b, a) +00070 _GLM_SWIZZLE4_2_MEMBERS(value_type, glm::detail::tvec2<value_type>, s, t, p, q) +00071 _GLM_SWIZZLE4_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, x, y, z, w) +00072 _GLM_SWIZZLE4_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, r, g, b, a) +00073 _GLM_SWIZZLE4_3_MEMBERS(value_type, glm::detail::tvec3<value_type>, s, t, p, q) +00074 _GLM_SWIZZLE4_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, x, y, z, w) +00075 _GLM_SWIZZLE4_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, r, g, b, a) +00076 _GLM_SWIZZLE4_4_MEMBERS(value_type, glm::detail::tvec4<value_type>, s, t, p, q) +00077 # endif//(defined(GLM_SWIZZLE)) +00078 +00079 struct{value_type r, g, b, a;}; +00080 struct{value_type s, t, p, q;}; +00081 struct{value_type x, y, z, w;}; +00082 }; +00083 # elif(GLM_COMPONENT == GLM_COMPONENT_CXX98) +00084 union {value_type x, r, s;}; +00085 union {value_type y, g, t;}; +00086 union {value_type z, b, p;}; +00087 union {value_type w, a, q;}; +00088 +00089 # if(defined(GLM_SWIZZLE)) +00090 // Defines all he swizzle operator as functions +00091 GLM_SWIZZLE_GEN_REF_FROM_VEC4(T, detail::tvec4, detail::tref2, detail::tref3, detail::tref4) +00092 GLM_SWIZZLE_GEN_VEC_FROM_VEC4(T, detail::tvec4, detail::tvec2, detail::tvec3, detail::tvec4) +00093 # endif//(defined(GLM_SWIZZLE)) +00094 # else //(GLM_COMPONENT == GLM_COMPONENT_ONLY_XYZW) +00095 value_type x, y, z, w; +00096 +00097 # if(defined(GLM_SWIZZLE)) +00098 // Defines all he swizzle operator as functions +00099 GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, detail::tvec4, detail::tref2, detail::tref3, detail::tref4, x, y, z, w) +00100 GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, detail::tvec4, detail::tvec2, detail::tvec3, detail::tvec4, x, y, z, w) +00101 # endif//(defined(GLM_SWIZZLE)) +00102 # endif//GLM_COMPONENT +00103 +00105 // Accesses +00106 +00107 GLM_FUNC_DECL value_type & operator[](size_type i); +00108 GLM_FUNC_DECL value_type const & operator[](size_type i) const; +00109 +00111 // Implicit basic constructors +00112 +00113 GLM_FUNC_DECL tvec4(); +00114 GLM_FUNC_DECL tvec4(type const & v); +00115 +00117 // Explicit basic constructors +00118 +00119 GLM_FUNC_DECL explicit tvec4( +00120 ctor); +00121 GLM_FUNC_DECL explicit tvec4( +00122 value_type const & s); +00123 GLM_FUNC_DECL explicit tvec4( +00124 value_type const & s0, +00125 value_type const & s1, +00126 value_type const & s2, +00127 value_type const & s3); +00128 +00130 // Convertion scalar constructors +00131 +00133 template <typename U> +00134 GLM_FUNC_DECL explicit tvec4( +00135 U const & x); +00137 template <typename A, typename B, typename C, typename D> +00138 GLM_FUNC_DECL explicit tvec4( +00139 A const & x, +00140 B const & y, +00141 C const & z, +00142 D const & w); +00143 +00145 // Convertion vector constructors +00146 +00148 template <typename A, typename B, typename C> +00149 GLM_FUNC_DECL explicit tvec4(tvec2<A> const & v, B const & s1, C const & s2); +00151 template <typename A, typename B, typename C> +00152 GLM_FUNC_DECL explicit tvec4(A const & s1, tvec2<B> const & v, C const & s2); +00154 template <typename A, typename B, typename C> +00155 GLM_FUNC_DECL explicit tvec4(A const & s1, B const & s2, tvec2<C> const & v); +00157 template <typename A, typename B> +00158 GLM_FUNC_DECL explicit tvec4(tvec3<A> const & v, B const & s); +00160 template <typename A, typename B> +00161 GLM_FUNC_DECL explicit tvec4(A const & s, tvec3<B> const & v); +00163 template <typename A, typename B> +00164 GLM_FUNC_DECL explicit tvec4(tvec2<A> const & v1, tvec2<B> const & v2); +00166 template <typename U> +00167 GLM_FUNC_DECL explicit tvec4(tvec4<U> const & v); +00168 +00169 template <int E0, int E1, int E2, int E3> +00170 GLM_FUNC_DECL tvec4(glm::detail::swizzle<4, T, tvec4<T>, E0, E1, E2, E3> const & that) +00171 { +00172 *this = that(); +00173 } +00174 +00175 template <int E0, int E1, int F0, int F1> +00176 GLM_FUNC_DECL tvec4(glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v, glm::detail::swizzle<2, T, tvec2<T>, F0, F1, -1, -2> const & u) +00177 { +00178 *this = tvec4<T>(v(), u()); +00179 } +00180 +00181 template <int E0, int E1> +00182 GLM_FUNC_DECL tvec4(T const & x, T const & y, glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v) +00183 { +00184 *this = tvec4<T>(x, y, v()); +00185 } +00186 +00187 template <int E0, int E1> +00188 GLM_FUNC_DECL tvec4(T const & x, glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v, T const & w) +00189 { +00190 *this = tvec4<T>(x, v(), w); +00191 } +00192 +00193 template <int E0, int E1> +00194 GLM_FUNC_DECL tvec4(glm::detail::swizzle<2, T, tvec2<T>, E0, E1, -1, -2> const & v, T const & z, T const & w) +00195 { +00196 *this = tvec4<T>(v(), z, w); +00197 } +00198 +00199 template <int E0, int E1, int E2> +00200 GLM_FUNC_DECL tvec4(glm::detail::swizzle<3, T, tvec3<T>, E0, E1, E2, -1> const & v, T const & w) +00201 { +00202 *this = tvec4<T>(v(), w); +00203 } +00204 +00205 template <int E0, int E1, int E2> +00206 GLM_FUNC_DECL tvec4(T const & x, glm::detail::swizzle<3, T, tvec3<T>, E0, E1, E2, -1> const & v) +00207 { +00208 *this = tvec4<T>(x, v()); +00209 } +00210 +00212 // Swizzle constructors +00213 +00214 GLM_FUNC_DECL tvec4(tref4<T> const & r); +00215 +00217 template <typename A, typename B, typename C> +00218 GLM_FUNC_DECL explicit tvec4(tref2<A> const & v, B const & s1, C const & s2); +00220 template <typename A, typename B, typename C> +00221 GLM_FUNC_DECL explicit tvec4(A const & s1, tref2<B> const & v, C const & s2); +00223 template <typename A, typename B, typename C> +00224 GLM_FUNC_DECL explicit tvec4(A const & s1, B const & s2, tref2<C> const & v); +00226 template <typename A, typename B> +00227 GLM_FUNC_DECL explicit tvec4(tref3<A> const & v, B const & s); +00229 template <typename A, typename B> +00230 GLM_FUNC_DECL explicit tvec4(A const & s, tref3<B> const & v); +00232 template <typename A, typename B> +00233 GLM_FUNC_DECL explicit tvec4(tref2<A> const & v1, tref2<B> const & v2); +00235 template <typename A, typename B> +00236 GLM_FUNC_DECL explicit tvec4(tvec2<A> const & v1, tref2<B> const & v2); +00238 template <typename A, typename B> +00239 GLM_FUNC_DECL explicit tvec4(tref2<A> const & v1, tvec2<B> const & v2); +00240 +00242 // Unary arithmetic operators +00243 +00244 GLM_FUNC_DECL tvec4<T> & operator= (tvec4<T> const & v); +00245 template <typename U> +00246 GLM_FUNC_DECL tvec4<T> & operator= (tvec4<U> const & v); +00247 +00248 template <typename U> +00249 GLM_FUNC_DECL tvec4<T> & operator+=(U const & s); +00250 template <typename U> +00251 GLM_FUNC_DECL tvec4<T> & operator+=(tvec4<U> const & v); +00252 template <typename U> +00253 GLM_FUNC_DECL tvec4<T> & operator-=(U const & s); +00254 template <typename U> +00255 GLM_FUNC_DECL tvec4<T> & operator-=(tvec4<U> const & v); +00256 template <typename U> +00257 GLM_FUNC_DECL tvec4<T> & operator*=(U const & s); +00258 template <typename U> +00259 GLM_FUNC_DECL tvec4<T> & operator*=(tvec4<U> const & v); +00260 template <typename U> +00261 GLM_FUNC_DECL tvec4<T> & operator/=(U const & s); +00262 template <typename U> +00263 GLM_FUNC_DECL tvec4<T> & operator/=(tvec4<U> const & v); +00264 GLM_FUNC_DECL tvec4<T> & operator++(); +00265 GLM_FUNC_DECL tvec4<T> & operator--(); +00266 +00268 // Unary bit operators +00269 +00270 template <typename U> +00271 GLM_FUNC_DECL tvec4<T> & operator%= (U const & s); +00272 template <typename U> +00273 GLM_FUNC_DECL tvec4<T> & operator%= (tvec4<U> const & v); +00274 template <typename U> +00275 GLM_FUNC_DECL tvec4<T> & operator&= (U const & s); +00276 template <typename U> +00277 GLM_FUNC_DECL tvec4<T> & operator&= (tvec4<U> const & v); +00278 template <typename U> +00279 GLM_FUNC_DECL tvec4<T> & operator|= (U const & s); +00280 template <typename U> +00281 GLM_FUNC_DECL tvec4<T> & operator|= (tvec4<U> const & v); +00282 template <typename U> +00283 GLM_FUNC_DECL tvec4<T> & operator^= (U const & s); +00284 template <typename U> +00285 GLM_FUNC_DECL tvec4<T> & operator^= (tvec4<U> const & v); +00286 template <typename U> +00287 GLM_FUNC_DECL tvec4<T> & operator<<=(U const & s); +00288 template <typename U> +00289 GLM_FUNC_DECL tvec4<T> & operator<<=(tvec4<U> const & v); +00290 template <typename U> +00291 GLM_FUNC_DECL tvec4<T> & operator>>=(U const & s); +00292 template <typename U> +00293 GLM_FUNC_DECL tvec4<T> & operator>>=(tvec4<U> const & v); +00294 +00296 // Swizzle operators +00297 +00298 GLM_FUNC_DECL value_type swizzle(comp X) const; +00299 GLM_FUNC_DECL tvec2<T> swizzle(comp X, comp Y) const; +00300 GLM_FUNC_DECL tvec3<T> swizzle(comp X, comp Y, comp Z) const; +00301 GLM_FUNC_DECL tvec4<T> swizzle(comp X, comp Y, comp Z, comp W) const; +00302 GLM_FUNC_DECL tref2<T> swizzle(comp X, comp Y); +00303 GLM_FUNC_DECL tref3<T> swizzle(comp X, comp Y, comp Z); +00304 GLM_FUNC_DECL tref4<T> swizzle(comp X, comp Y, comp Z, comp W); +00305 }; +00306 +00307 template <typename T> +00308 struct tref4 +00309 { +00310 GLM_FUNC_DECL tref4(T & x, T & y, T & z, T & w); +00311 GLM_FUNC_DECL tref4(tref4<T> const & r); +00312 GLM_FUNC_DECL explicit tref4(tvec4<T> const & v); +00313 +00314 GLM_FUNC_DECL tref4<T> & operator= (tref4<T> const & r); +00315 GLM_FUNC_DECL tref4<T> & operator= (tvec4<T> const & v); +00316 +00317 GLM_FUNC_DECL tvec4<T> operator() (); +00318 +00319 T & x; +00320 T & y; +00321 T & z; +00322 T & w; +00323 }; +00324 +00325 GLM_DETAIL_IS_VECTOR(tvec4); +00326 }//namespace detail +00327 +00330 +00336 typedef detail::tvec4<highp_float> highp_vec4; +00337 +00343 typedef detail::tvec4<mediump_float> mediump_vec4; +00344 +00350 typedef detail::tvec4<lowp_float> lowp_vec4; +00351 +00357 typedef detail::tvec4<highp_int> highp_ivec4; +00358 +00364 typedef detail::tvec4<mediump_int> mediump_ivec4; +00365 +00371 typedef detail::tvec4<lowp_int> lowp_ivec4; +00372 +00378 typedef detail::tvec4<highp_uint> highp_uvec4; +00379 +00385 typedef detail::tvec4<mediump_uint> mediump_uvec4; +00386 +00392 typedef detail::tvec4<lowp_uint> lowp_uvec4; +00393 +00395 }//namespace glm +00396 +00397 #ifndef GLM_EXTERNAL_TEMPLATE +00398 #include "type_vec4.inl" +00399 #endif//GLM_EXTERNAL_TEMPLATE +00400 +00401 #endif//glm_core_type_gentype4 +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_ulp: Accuracy measurement
+Definition in file ulp.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_GTX_ulp +00040 #define GLM_GTX_ulp GLM_VERSION +00041 +00042 // Dependency: +00043 #include "../glm.hpp" +00044 +00045 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00046 # pragma message("GLM: GLM_GTX_ulp extension included") +00047 #endif +00048 +00049 namespace glm +00050 { +00053 +00056 template <typename genType> +00057 genType next_float(genType const & x); +00058 +00061 template <typename genType> +00062 genType prev_float(genType const & x); +00063 +00066 template <typename genType> +00067 genType next_float(genType const & x, uint const & Distance); +00068 +00071 template <typename genType> +00072 genType prev_float(genType const & x, uint const & Distance); +00073 +00076 template <typename T> +00077 uint float_distance(T const & x, T const & y); +00078 +00081 template<typename T, template<typename> class vecType> +00082 vecType<uint> float_distance(vecType<T> const & x, vecType<T> const & y); +00083 +00085 }// namespace glm +00086 +00087 #include "ulp.inl" +00088 +00089 #endif//GLM_GTX_ulp +00090 +
+ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 #if(defined(GLM_MESSAGES)) +00025 # pragma message("GLM: GLM_GTX_unsigned_int extension is deprecated, include GLM_GTX_integer instead") +00026 #endif +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ +Definition in file vec1.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 #ifndef GLM_GTX_vec1 +00038 #define GLM_GTX_vec1 GLM_VERSION +00039 +00040 // Dependency: +00041 #include "../glm.hpp" +00042 #include "../core/type_vec1.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_vec1 extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00053 typedef detail::highp_vec1_t highp_vec1; +00057 typedef detail::mediump_vec1_t mediump_vec1; +00061 typedef detail::lowp_vec1_t lowp_vec1; +00062 +00066 typedef detail::highp_ivec1_t highp_ivec1; +00070 typedef detail::mediump_ivec1_t mediump_ivec1; +00074 typedef detail::lowp_ivec1_t lowp_ivec1; +00075 +00079 typedef detail::highp_uvec1_t highp_uvec1; +00083 typedef detail::mediump_uvec1_t mediump_uvec1; +00087 typedef detail::lowp_uvec1_t lowp_uvec1; +00088 +00090 // vec1 definition +00091 +00094 typedef detail::tvec1<bool> bvec1; +00095 +00096 #if(defined(GLM_PRECISION_HIGHP_FLOAT)) +00097 typedef highp_vec1 vec1; +00098 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT)) +00099 typedef mediump_vec1 vec1; +00100 #elif(defined(GLM_PRECISION_LOWP_FLOAT)) +00101 typedef lowp_vec1 vec1; +00102 #else +00103 +00104 +00105 typedef mediump_vec1 vec1; +00106 #endif//GLM_PRECISION +00107 +00108 #if(defined(GLM_PRECISION_HIGHP_INT)) +00109 typedef highp_ivec1 ivec1; +00110 #elif(defined(GLM_PRECISION_MEDIUMP_INT)) +00111 typedef mediump_ivec1 ivec1; +00112 #elif(defined(GLM_PRECISION_LOWP_INT)) +00113 typedef lowp_ivec1 ivec1; +00114 #else +00115 +00116 +00117 typedef mediump_ivec1 ivec1; +00118 #endif//GLM_PRECISION +00119 +00120 #if(defined(GLM_PRECISION_HIGHP_UINT)) +00121 typedef highp_uvec1 uvec1; +00122 #elif(defined(GLM_PRECISION_MEDIUMP_UINT)) +00123 typedef mediump_uvec1 uvec1; +00124 #elif(defined(GLM_PRECISION_LOWP_UINT)) +00125 typedef lowp_uvec1 uvec1; +00126 #else +00127 +00128 +00129 typedef mediump_uvec1 uvec1; +00130 #endif//GLM_PRECISION +00131 +00132 }// namespace glm +00133 +00134 #include "vec1.inl" +00135 +00136 #endif//GLM_GTX_vec1 +00137 +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_vector_access: Vector access
+Definition in file vector_access.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_vector_access +00039 #define GLM_GTX_vector_access GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_vector_access extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00052 +00055 template <typename valType> +00056 void set( +00057 detail::tvec2<valType> & v, +00058 valType const & x, +00059 valType const & y); +00060 +00063 template <typename valType> +00064 void set( +00065 detail::tvec3<valType> & v, +00066 valType const & x, +00067 valType const & y, +00068 valType const & z); +00069 +00072 template <typename valType> +00073 void set( +00074 detail::tvec4<valType> & v, +00075 valType const & x, +00076 valType const & y, +00077 valType const & z, +00078 valType const & w); +00079 +00081 }//namespace glm +00082 +00083 #include "vector_access.inl" +00084 +00085 #endif//GLM_GTX_vector_access +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_vector_angle: Vector angle
+Definition in file vector_angle.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 +00040 #ifndef GLM_GTX_vector_angle +00041 #define GLM_GTX_vector_angle GLM_VERSION +00042 +00043 // Dependency: +00044 #include "../glm.hpp" +00045 #include "../gtx/epsilon.hpp" +00046 #include "../gtx/quaternion.hpp" +00047 #include "../gtx/rotate_vector.hpp" +00048 +00049 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00050 # pragma message("GLM: GLM_GTX_vector_angle extension included") +00051 #endif +00052 +00053 namespace glm +00054 { +00057 +00061 template <typename vecType> +00062 GLM_FUNC_QUALIFIER typename vecType::value_type angle( +00063 vecType const & x, +00064 vecType const & y); +00065 +00069 template <typename T> +00070 GLM_FUNC_QUALIFIER T orientedAngle( +00071 detail::tvec2<T> const & x, +00072 detail::tvec2<T> const & y); +00073 +00077 template <typename T> +00078 GLM_FUNC_QUALIFIER T orientedAngle( +00079 detail::tvec3<T> const & x, +00080 detail::tvec3<T> const & y, +00081 detail::tvec3<T> const & ref); +00082 +00084 }// namespace glm +00085 +00086 #include "vector_angle.inl" +00087 +00088 #endif//GLM_GTX_vector_angle +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_vector_query: Vector query
+Definition in file vector_query.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_vector_query +00039 #define GLM_GTX_vector_query GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 #include <cfloat> +00044 #include <limits> +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_GTX_vector_query extension included") +00048 #endif +00049 +00050 namespace glm +00051 { +00054 +00057 template <typename genType> +00058 bool areCollinear( +00059 genType const & v0, +00060 genType const & v1, +00061 typename genType::value_type const & epsilon/* = std::numeric_limits<typename genType::value_type>::epsilon()*/); +00062 +00065 template <typename genType> +00066 bool areOrthogonal( +00067 genType const & v0, +00068 genType const & v1, +00069 typename genType::value_type const & epsilon/* = std::numeric_limits<typename genType::value_type>::epsilon()*/); +00070 +00073 template <typename genType, template <typename> class vecType> +00074 bool isNormalized( +00075 vecType<genType> const & v, +00076 genType const & epsilon/* = std::numeric_limits<genType>::epsilon()*/); +00077 +00080 template <typename valType> +00081 bool isNull( +00082 detail::tvec2<valType> const & v, +00083 valType const & epsilon/* = std::numeric_limits<typename genType::value_type>::epsilon()*/); +00084 +00087 template <typename valType> +00088 bool isNull( +00089 detail::tvec3<valType> const & v, +00090 valType const & epsilon/* = std::numeric_limits<typename genType::value_type>::epsilon()*/); +00091 +00094 template <typename valType> +00095 bool isNull( +00096 detail::tvec4<valType> const & v, +00097 valType const & epsilon/* = std::numeric_limits<typename genType::value_type>::epsilon()*/); +00098 +00101 template <typename genType> +00102 bool areOrthonormal( +00103 genType const & v0, +00104 genType const & v1, +00105 typename genType::value_type const & epsilon/* = std::numeric_limits<typename genType::value_type>::epsilon()*/); +00106 +00108 }// namespace glm +00109 +00110 #include "vector_query.inl" +00111 +00112 #endif//GLM_GTX_vector_query +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_verbose_operator: Verbose operator
+Definition in file verbose_operator.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_verbose_operator +00039 #define GLM_GTX_verbose_operator GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_verbose_operator extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00052 +00055 template <typename genTypeT, typename genTypeU> +00056 genTypeT add(genTypeT const & a, genTypeU const & b); +00057 +00060 template <typename genTypeT, typename genTypeU> +00061 genTypeT sub(genTypeT const & a, genTypeU const & b); +00062 +00065 template <typename genTypeT, typename genTypeU> +00066 genTypeT mul(genTypeT const & a, genTypeU const & b); +00067 +00070 template <typename genTypeT, typename genTypeU> +00071 genTypeT div(genTypeT const & a, genTypeU const & b); +00072 +00075 template <typename genTypeT, typename genTypeU, typename genTypeV> +00076 genTypeT mad(genTypeT const & a, genTypeU const & b, genTypeV const & c); +00077 +00079 }// namespace glm +00080 +00081 #include "verbose_operator.inl" +00082 +00083 #endif//GLM_GTX_verbose_operator +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_GTX_wrap: Texture coordinate wrap modes
+Definition in file wrap.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 #ifndef GLM_GTX_wrap +00039 #define GLM_GTX_wrap GLM_VERSION +00040 +00041 // Dependency: +00042 #include "../glm.hpp" +00043 +00044 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00045 # pragma message("GLM: GLM_GTX_wrap extension included") +00046 #endif +00047 +00048 namespace glm +00049 { +00052 +00055 template <typename genType> +00056 genType clamp(genType const & Texcoord); +00057 +00060 template <typename genType> +00061 genType repeat(genType const & Texcoord); +00062 +00065 template <typename genType> +00066 genType mirrorRepeat(genType const & Texcoord); +00067 +00069 }// namespace glm +00070 +00071 #include "wrap.inl" +00072 +00073 #endif//GLM_GTX_wrap +
+ + + + + + + |
Go to the source code of this file.
+OpenGL Mathematics (glm.g-truc.net)
+Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+GLM_VIRTREV_xstream: xml like output
+Definition in file xstream.hpp.
++ + + + + + + |
00001 +00002 +00003 +00004 +00005 +00006 +00007 +00008 +00009 +00010 +00011 +00012 +00013 +00014 +00015 +00016 +00017 +00018 +00019 +00020 +00021 +00022 +00023 +00024 +00025 +00026 +00027 +00028 +00029 +00030 +00031 +00032 +00033 +00034 +00035 +00036 +00037 +00038 +00039 #ifndef GLM_VIRTREV_xstream +00040 #define GLM_VIRTREV_xstream GLM_VERSION +00041 +00042 #include "../glm.hpp" +00043 #include "../gtc/matrix_access.hpp" +00044 #include <iostream> +00045 +00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) +00047 # pragma message("GLM: GLM_VIRTREV_xstream extension included") +00048 #endif +00049 +00050 namespace glm +00051 { +00052 template<typename T> +00053 std::ostream & operator << (std::ostream & stream, glm::detail::tvec2<T> const & vec) +00054 { +00055 stream << "<glm_vec2 "; +00056 stream << "x=\"" << vec.x << "\" "; +00057 stream << "y=\"" << vec.y << "\" "; +00058 stream << "/>"; +00059 +00060 return stream; +00061 } +00062 +00063 template<typename T> +00064 std::ostream & operator << (std::ostream & stream, glm::detail::tvec3<T> const & vec) +00065 { +00066 stream << "<glm_vec3 "; +00067 stream << "x=\"" << vec.x << "\" "; +00068 stream << "y=\"" << vec.y << "\" "; +00069 stream << "z=\"" << vec.z << "\" "; +00070 stream << "/>"; +00071 +00072 return stream; +00073 } +00074 +00075 template<typename T> +00076 std::ostream & operator << (std::ostream & stream, glm::detail::tvec4<T> const & vec) +00077 { +00078 stream << "<glm_vec4 "; +00079 stream << "x=\"" << vec.x << "\" "; +00080 stream << "y=\"" << vec.y << "\" "; +00081 stream << "z=\"" << vec.z << "\" "; +00082 stream << "w=\"" << vec.w << "\" "; +00083 stream << "/>"; +00084 +00085 return stream; +00086 } +00087 +00088 template<typename T> +00089 std::ostream & operator << (std::ostream & stream, glm::detail::tmat2x2<T> const & mat) +00090 { +00091 stream << "<glm_mat2>" << std::endl; +00092 stream << "<row "; +00093 stream << "x=\"" << glm::row(mat, 0)[0] << "\" "; +00094 stream << "y=\"" << glm::row(mat, 0)[1] << "\" "; +00095 stream << "/>" << std::endl; +00096 stream << "<row "; +00097 stream << "x=\"" << glm::row(mat, 1)[0] << "\" "; +00098 stream << "y=\"" << glm::row(mat, 1)[1] << "\" "; +00099 stream << "/>" << std::endl; +00100 stream << "</glm_mat2>"; +00101 +00102 return stream; +00103 } +00104 +00105 template<typename T> +00106 std::ostream & operator << (std::ostream & stream, glm::detail::tmat3x3<T> const & mat) +00107 { +00108 stream << "<glm_mat3>" << std::endl; +00109 stream << "<row "; +00110 stream << "x=\"" << glm::row(mat, 0)[0] << "\" "; +00111 stream << "y=\"" << glm::row(mat, 0)[1] << "\" "; +00112 stream << "z=\"" << glm::row(mat, 0)[2] << "\" "; +00113 stream << "/>" << std::endl; +00114 stream << "<row "; +00115 stream << "x=\"" << glm::row(mat, 1)[0] << "\" "; +00116 stream << "y=\"" << glm::row(mat, 1)[1] << "\" "; +00117 stream << "z=\"" << glm::row(mat, 1)[2] << "\" "; +00118 stream << "/>" << std::endl; +00119 stream << "<row "; +00120 stream << "x=\"" << glm::row(mat, 2)[0] << "\" "; +00121 stream << "y=\"" << glm::row(mat, 2)[1] << "\" "; +00122 stream << "z=\"" << glm::row(mat, 2)[2] << "\" "; +00123 stream << "/>" << std::endl; +00124 stream << "</glm_mat3>"; +00125 +00126 return stream; +00127 } +00128 +00129 template<typename T> +00130 std::ostream & operator << (std::ostream & stream, glm::detail::tmat4x4<T> const & mat) +00131 { +00132 stream << "<glm_mat4>" << std::endl; +00133 stream << "<row "; +00134 stream << "x=\"" << glm::row(mat, 0)[0] << "\" "; +00135 stream << "y=\"" << glm::row(mat, 0)[1] << "\" "; +00136 stream << "z=\"" << glm::row(mat, 0)[2] << "\" "; +00137 stream << "w=\"" << glm::row(mat, 0)[3] << "\" "; +00138 stream << "/>" << std::endl; +00139 stream << "<row "; +00140 stream << "x=\"" << glm::row(mat, 1)[0] << "\" "; +00141 stream << "y=\"" << glm::row(mat, 1)[1] << "\" "; +00142 stream << "z=\"" << glm::row(mat, 1)[2] << "\" "; +00143 stream << "w=\"" << glm::row(mat, 1)[3] << "\" "; +00144 stream << "/>" << std::endl; +00145 stream << "<row "; +00146 stream << "x=\"" << glm::row(mat, 2)[0] << "\" "; +00147 stream << "y=\"" << glm::row(mat, 2)[1] << "\" "; +00148 stream << "z=\"" << glm::row(mat, 2)[2] << "\" "; +00149 stream << "w=\"" << glm::row(mat, 2)[3] << "\" "; +00150 stream << "/>" << std::endl; +00151 stream << "<row "; +00152 stream << "x=\"" << glm::row(mat, 3)[0] << "\" "; +00153 stream << "y=\"" << glm::row(mat, 3)[1] << "\" "; +00154 stream << "z=\"" << glm::row(mat, 3)[2] << "\" "; +00155 stream << "w=\"" << glm::row(mat, 3)[3] << "\" "; +00156 stream << "/>" << std::endl; +00157 stream << "</glm_mat4>"; +00158 +00159 return stream; +00160 } +00161 +00162 }//namespace glm +00163 +00164 #endif//GLM_VIRTREV_xstream +
+ + + + + + + |
+Functions | |
template<typename genType > | |
genType | abs (genType const &x) |
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 , 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 genType , typename genIType > | |
genType | intBitsToFloat (genIType const &value) |
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 | 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 | round (genType const &x) |
template<typename genType > | |
genType | roundEven (genType const &x) |
template<typename genType > | |
genType | sign (genType const &x) |
template<typename genType > | |
genType | smoothstep (genType const &edge0, genType const &edge1, genType const &x) |
template<typename genType > | |
genType | step (genType const &edge, genType const &x) |
template<typename genType > | |
genType | trunc (genType const &x) |
template<typename genType , typename genUType > | |
genType | uintBitsToFloat (genUType const &value) |
These all operate component-wise.
+The description is per component.
+genType glm::abs | +( | +genType const & | +x | ) | ++ |
Returns x if x >= 0; otherwise, it returns -x.
+genType | floating-point or signed integer; scalar or vector types. |
genType glm::ceil | +( | +genType const & | +x | ) | ++ |
Returns a value equal to the nearest integer that is greater than or equal to x.
+genType | Floating-point scalar or vector types. |
genType glm::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.
+genType | Floating-point or integer; scalar or vector types. |
genIType glm::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.
+genType | Single-precision floating-point scalar or vector types. |
genIType | Signed integer scalar or vector types. |
genUType glm::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 | Single-precision floating-point scalar or vector types. |
genUType | Unsigned integer scalar or vector types. |
genType glm::floor | +( | +genType const & | +x | ) | ++ |
Returns a value equal to the nearest integer that is less then or equal to x.
+genType | Floating-point scalar or vector types. |
genType glm::fma | +( | +genType const & | +a, | +
+ | + | genType const & | +b, | +
+ | + | genType const & | +c | +
+ | ) | ++ |
Computes and returns a * b + c.
+genType | Floating-point scalar or vector types. |
genType glm::fract | +( | +genType const & | +x | ) | ++ |
Return x - floor(x).
+genType | Floating-point scalar or vector types. |
genType glm::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.
+genType | Floating-point scalar or vector types. |
genType glm::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.
+genType | Single-precision floating-point scalar or vector types. |
genIType | Signed integer scalar or vector types. |
genType::bool_type glm::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 | Floating-point scalar or vector types. |
genType::bool_type glm::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 | Floating-point scalar or vector types. |
genType glm::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 | Floating-point scalar or vector types. |
genType glm::max | +( | +genType const & | +x, | +
+ | + | genType const & | +y | +
+ | ) | ++ |
Returns y if x < y; otherwise, it returns x.
+genType | Floating-point or integer; scalar or vector types. |
genType glm::min | +( | +genType const & | +x, | +
+ | + | genType const & | +y | +
+ | ) | ++ |
Returns y if y < x; otherwise, it returns x.
+genType | Floating-point or integer; scalar or vector types. |
genTypeT glm::mix | +( | +genTypeT const & | +x, | +
+ | + | genTypeT const & | +y, | +
+ | + | genTypeU const & | +a | +
+ | ) | ++ |
[in] | x | Value to interpolate. |
[in] | y | Value to interpolate. |
[in] | a | Interpolant. |
genTypeT | Floating point scalar or vector. |
genTypeU | Floating point or boolean scalar or vector. It can't be a vector if it is the length of genTypeT. |
#include <glm/glm.hpp> + ... + float a; + bool b; + glm::dvec3 e; + glm::dvec3 f; + glm::vec4 g; + glm::vec4 h; + ... + glm::vec4 r = glm::mix(g, h, a); // Interpolate with a floating-point scalar two vectors. + glm::vec4 s = glm::mix(g, h, b); // Teturns g or h; + glm::dvec3 t = glm::mix(e, f, a); // Types of the third parameter is not required to match with the first and the second. + glm::vec4 u = glm::mix(g, h, r); // Interpolations can be perform per component with a vector for the last parameter. +
genType glm::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 | Floating-point scalar or vector types. |
genType glm::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 | Floating-point scalar or vector types. |
genType glm::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 | Floating-point scalar or vector types. |
genType glm::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 | Floating-point scalar or vector types. |
genType glm::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.)
+genType | Floating-point scalar or vector types. |
genType glm::sign | +( | +genType const & | +x | ) | ++ |
Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0.
+genType | Floating-point or signed integer; scalar or vector types. |
genType glm::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 | Floating-point scalar or vector types. |
genType glm::step | +( | +genType const & | +edge, | +
+ | + | genType const & | +x | +
+ | ) | ++ |
Returns 0.0 if x < edge, otherwise it returns 1.0.
+ + +genType glm::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.
+genType | Floating-point scalar or vector types. |
genType glm::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.
+genType | Single-precision floating-point scalar or vector types. |
genUType | Unsigned integer scalar or vector types. |
+ + + + + + + |
+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) |
These all operate component-wise.
+The description is per component.
+genType glm::exp | +( | +genType const & | +x | ) | ++ |
Returns the natural exponentiation of x, i.e., e^x.
+x | exp function is defined for input values of x defined in the range (inf-, inf+) in the limit of the type precision. |
genType | Floating-point scalar or vector types. |
genType glm::exp2 | +( | +genType const & | +x | ) | ++ |
Returns 2 raised to the x power.
+x | exp2 function is defined for input values of x defined in the range (inf-, inf+) in the limit of the type precision. |
genType | Floating-point scalar or vector types. |
genType glm::inversesqrt | +( | +genType const & | +x | ) | ++ |
Returns the reciprocal of the positive square root of x.
+x | inversesqrt function is defined for input values of x defined in the range [0, inf+) in the limit of the type precision. |
genType | Floating-point scalar or vector types. |
genType glm::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.
+x | log function is defined for input values of x defined in the range (0, inf+) in the limit of the type precision. |
genType | Floating-point scalar or vector types. |
genType glm::log2 | +( | +genType const & | +x | ) | ++ |
Returns the base 2 log of x, i.e., returns the value y, which satisfies the equation x = 2 ^ y.
+x | log2 function is defined for input values of x defined in the range (0, inf+) in the limit of the type precision. |
genType | Floating-point scalar or vector types. |
genType glm::pow | +( | +genType const & | +x, | +
+ | + | genType const & | +y | +
+ | ) | ++ |
Returns x raised to the y power.
+x | pow function is defined for input values of x defined in the range (inf-, inf+) in the limit of the type precision. |
y |
genType | Floating-point scalar or vector types. |
genType glm::sqrt | +( | +genType const & | +x | ) | ++ |
Returns the positive square root of x.
+x | sqrt function is defined for input values of x defined in the range [0, inf+) in the limit of the type precision. |
genType | Floating-point scalar or vector types. |
+ + + + + + + |
+Functions | |
template<typename valType > | |
detail::tvec3< valType > | cross (detail::tvec3< valType > const &x, detail::tvec3< valType > const &y) |
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 genType > | |
genType | faceforward (genType const &N, genType const &I, genType const &Nref) |
template<typename genType > | |
genType::value_type | length (genType const &x) |
template<typename genType > | |
genType | normalize (genType const &x) |
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) |
These operate on vectors as vectors, not component-wise.
+detail::tvec3<valType> glm::cross | +( | +detail::tvec3< valType > const & | +x, | +
+ | + | detail::tvec3< valType > const & | +y | +
+ | ) | ++ |
Returns the cross product of x and y.
+valType | Floating-point scalar types. |
genType::value_type glm::distance | +( | +genType const & | +p0, | +
+ | + | genType const & | +p1 | +
+ | ) | ++ |
Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).
+genType | Floating-point vector types. |
genType::value_type glm::dot | +( | +genType const & | +x, | +
+ | + | genType const & | +y | +
+ | ) | ++ |
Returns the dot product of x and y, i.e., result = x * y.
+genType | Floating-point vector types. |
genType glm::faceforward | +( | +genType const & | +N, | +
+ | + | genType const & | +I, | +
+ | + | genType const & | +Nref | +
+ | ) | ++ |
If dot(Nref, I) < 0.0, return N, otherwise, return -N.
+genType | Floating-point vector types. |
genType::value_type glm::length | +( | +genType const & | +x | ) | ++ |
Returns the length of x, i.e., sqrt(x * x).
+genType | Floating-point vector types. |
genType glm::normalize | +( | +genType const & | +x | ) | ++ |
Returns a vector in the same direction as x but with length of 1.
+ + +genType glm::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 | Floating-point vector types. |
genType glm::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 | Floating-point vector types. |
+ + + + + + + |
+Functions | |
template<typename T , template< typename > class genIUType> | |
genIUType< T >::signed_type | bitCount (genIUType< 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 genIUType> | |
genIUType< T >::signed_type | findLSB (genIUType< T > const &Value) |
template<typename T , template< typename > class genIUType> | |
genIUType< T >::signed_type | findMSB (genIUType< 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) |
These all operate component-wise.
+The description is per component. The notation [a, b] means the set of bits from bit-number a through bit-number b, inclusive. The lowest-order bit is bit 0.
+genIUType<T>::signed_type glm::bitCount | +( | +genIUType< T > const & | +Value | ) | ++ |
Returns the number of bits set to 1 in the binary representation of value.
+genIUType | Signed or unsigned integer scalar or vector types. |
genIUType glm::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 | Signed or unsigned integer scalar or vector types. |
genIUType glm::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 | Signed or unsigned integer scalar or vector types. |
genIUType glm::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.
+genIUType | Signed or unsigned integer scalar or vector types. |
genIUType<T>::signed_type glm::findLSB | +( | +genIUType< 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.
+genIUType | Signed or unsigned integer scalar or vector types. |
genIUType<T>::signed_type glm::findMSB | +( | +genIUType< 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.
+genIUType | Signed or unsigned integer scalar or vector types. |
void glm::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.
+genIType | Signed integer scalar or vector types. |
genUType glm::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.
+genUType | Unsigned integer scalar or vector types. |
void glm::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.
+genUType | Unsigned integer scalar or vector types. |
genUType glm::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.
+genUType | Unsigned integer scalar or vector types. |
+ + + + + + + |
+Functions | |
template<typename valType > | |
detail::tmat2x2< valType > +::value_type | determinant (detail::tmat2x2< valType > const &m) |
template<typename valType > | |
detail::tmat3x3< valType > +::value_type | determinant (detail::tmat3x3< valType > const &m) |
template<typename valType > | |
detail::tmat4x4< valType > +::value_type | determinant (detail::tmat4x4< valType > const &m) |
template<typename valType > | |
detail::tmat2x2< valType > | inverse (detail::tmat2x2< valType > const &m) |
template<typename valType > | |
detail::tmat3x3< valType > | inverse (detail::tmat3x3< valType > const &m) |
template<typename valType > | |
detail::tmat4x4< valType > | inverse (detail::tmat4x4< valType > 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) |
For each of the following built-in matrix functions, there is both a single-precision floating point version, where all arguments and return values are single precision, and a double-precision floating version, where all arguments and return values are double precision.
+Only the single-precision floating point version is shown.
+detail::tmat2x2<valType>::value_type glm::determinant | +( | +detail::tmat2x2< valType > const & | +m | ) | ++ |
Return the determinant of a mat2 matrix.
+valType | Floating-point scalar types. |
detail::tmat3x3<valType>::value_type glm::determinant | +( | +detail::tmat3x3< valType > const & | +m | ) | ++ |
Return the determinant of a mat3 matrix.
+valType | Floating-point scalar types. |
detail::tmat4x4<valType>::value_type glm::determinant | +( | +detail::tmat4x4< valType > const & | +m | ) | ++ |
Return the determinant of a mat4 matrix.
+valType | Floating-point scalar types. |
detail::tmat2x2<valType> glm::inverse | +( | +detail::tmat2x2< valType > const & | +m | ) | ++ |
Return the inverse of a mat2 matrix.
+valType | Floating-point scalar types. |
detail::tmat3x3<valType> glm::inverse | +( | +detail::tmat3x3< valType > const & | +m | ) | ++ |
Return the inverse of a mat3 matrix.
+valType | Floating-point scalar types. |
detail::tmat4x4<valType> glm::inverse | +( | +detail::tmat4x4< valType > const & | +m | ) | ++ |
Return the inverse of a mat4 matrix.
+valType | Floating-point scalar types. |
matType glm::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].
+matType | Floating-point matrix types. |
matType glm::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.
+matType | Floating-point matrix types. |
matType::transpose_type glm::transpose | +( | +matType const & | +x | ) | ++ |
Returns the transposed matrix of x.
+matType | Floating-point matrix types. |
+ + + + + + + |
+Functions | |
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) |
Noise functions are stochastic functions that can be used to increase visual complexity.
+Values returned by the following noise functions give the appearance of randomness, but are not truly random.
+genType::value_type glm::noise1 | +( | +genType const & | +x | ) | ++ |
Returns a 1D noise value based on the input value x.
+genType | Floating-point scalar or vector types. |
detail::tvec2<typename genType::value_type> glm::noise2 | +( | +genType const & | +x | ) | ++ |
Returns a 2D noise value based on the input value x.
+genType | Floating-point scalar or vector types. |
detail::tvec3<typename genType::value_type> glm::noise3 | +( | +genType const & | +x | ) | ++ |
Returns a 3D noise value based on the input value x.
+genType | Floating-point scalar or vector types. |
detail::tvec4<typename genType::value_type> glm::noise4 | +( | +genType const & | +x | ) | ++ |
Returns a 4D noise value based on the input value x.
+genType | Floating-point scalar or vector types. |
+ + + + + + + |
+Functions | |
double | packDouble2x32 (detail::tvec2< detail::uint32 > const &v) |
uint | packHalf2x16 (vec2 const &v) |
detail::uint32 | packSnorm2x16 (detail::tvec2< detail::float32 > 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) |
vec2 | unpackHalf2x16 (uint const &v) |
detail::tvec2< detail::float32 > | unpackSnorm2x16 (detail::uint32 const &p) |
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) |
These functions do not operate component-wise, rather as described in each case.
+double glm::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.
+ + +uint glm::packHalf2x16 | +( | +vec2 const & | +v | ) | ++ |
Returns an unsigned integer obtained by converting the components of a two-component floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification, and then packing these two 16- bit integers into a 32-bit unsigned integer.
+The first vector component specifies the 16 least-significant bits of the result; the second component specifies the 16 most-significant bits.
+ + +detail::uint32 glm::packSnorm2x16 | +( | +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: packSnorm2x16: round(clamp(v, -1, +1) * 32767.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::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::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::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.
+ + +detail::tvec2<detail::uint32> glm::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.
+ + +vec2 glm::unpackHalf2x16 | +( | +uint const & | +v | ) | ++ |
Returns a two-component floating-point vector with components obtained by unpacking a 32-bit unsigned integer into a pair of 16-bit values, interpreting those values as 16-bit floating-point numbers according to the OpenGL Specification, and converting them to 32-bit floating-point values.
+The first component of the vector is obtained from the 16 least-significant bits of v; the second component is obtained from the 16 most-significant bits of v.
+ + +detail::tvec2<detail::float32> glm::unpackSnorm2x16 | +( | +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: unpackSnorm2x16: clamp(f / 32767.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::tvec4<detail::float32> glm::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::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::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.
+ + ++ + + + + + + |
+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) |
Function parameters specified as angle are assumed to be in units of radians.
+In no case will any of these functions result in a divide by zero error. If the divisor of a ratio is 0, then results will be undefined.
+These all operate component-wise. The description is per component.
+genType glm::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 | Floating-point scalar or vector types. |
genType glm::acosh | +( | +genType const & | +x | ) | ++ |
Arc hyperbolic cosine; returns the non-negative inverse of cosh.
+Results are undefined if x < 1.
+genType | Floating-point scalar or vector types. |
genType glm::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 | Floating-point scalar or vector types. |
genType glm::asinh | +( | +genType const & | +x | ) | ++ |
Arc hyperbolic sine; returns the inverse of sinh.
+genType | Floating-point scalar or vector types. |
genType glm::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.
+genType | Floating-point scalar or vector types. |
genType glm::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 | Floating-point scalar or vector types. |
genType glm::atanh | +( | +genType const & | +x | ) | ++ |
Arc hyperbolic tangent; returns the inverse of tanh.
+Results are undefined if abs(x) >= 1.
+genType | Floating-point scalar or vector types. |
genType glm::cos | +( | +genType const & | +angle | ) | ++ |
The standard trigonometric cosine function.
+The values returned by this function will range from [-1, 1].
+genType | Floating-point scalar or vector types. |
genType glm::cosh | +( | +genType const & | +angle | ) | ++ |
Returns the hyperbolic cosine function, (exp(x) + exp(-x)) / 2.
+genType | Floating-point scalar or vector types. |
genType glm::degrees | +( | +genType const & | +radians | ) | ++ |
Converts radians to degrees and returns the result.
+genType | Floating-point scalar or vector types. |
genType glm::radians | +( | +genType const & | +degrees | ) | ++ |
Converts degrees to radians and returns the result.
+genType | Floating-point scalar or vector types. |
genType glm::sin | +( | +genType const & | +angle | ) | ++ |
The standard trigonometric sine function.
+The values returned by this function will range from [-1, 1].
+genType | Floating-point scalar or vector types. |
genType glm::sinh | +( | +genType const & | +angle | ) | ++ |
Returns the hyperbolic sine function, (exp(x) - exp(-x)) / 2.
+genType | Floating-point scalar or vector types. |
genType glm::tan | +( | +genType const & | +angle | ) | ++ |
The standard trigonometric tangent function.
+genType | Floating-point scalar or vector types. |
genType glm::tanh | +( | +genType const & | +angle | ) | ++ |
Returns the hyperbolic tangent function, sinh(angle) / cosh(angle)
+genType | Floating-point scalar or vector types. |
+ + + + + + + |
+Functions | |
template<template< typename > class vecType> | |
bool | all (vecType< bool > const &v) |
template<template< typename > class vecType> | |
bool | any (vecType< bool > const &v) |
template<typename vecType > | |
vecType::bool_type | equal (vecType const &x, vecType const &y) |
template<typename vecType > | |
vecType::bool_type | greaterThan (vecType const &x, vecType const &y) |
template<typename vecType > | |
vecType::bool_type | greaterThanEqual (vecType const &x, vecType const &y) |
template<typename vecType > | |
vecType::bool_type | lessThan (vecType const &x, vecType const &y) |
template<typename vecType > | |
vecType::bool_type | lessThanEqual (vecType const &x, vecType const &y) |
template<template< typename > class vecType> | |
vecType< bool > | not_ (vecType< bool > const &v) |
template<typename vecType > | |
vecType::bool_type | notEqual (vecType const &x, vecType const &y) |
Relational and equality operators (<, <=, >, >=, ==, !=) are defined to operate on scalars and produce scalar Boolean results.
+For vector results, use the following built-in functions.
+In all cases, the sizes of all the input and return vectors for any particular call must match.
+bool glm::all | +( | +vecType< bool > const & | +v | ) | ++ |
Returns true if all components of x are true.
+vecType | Boolean vector types. |
bool glm::any | +( | +vecType< bool > const & | +v | ) | ++ |
Returns true if any component of x is true.
+vecType | Boolean vector types. |
vecType::bool_type glm::equal | +( | +vecType const & | +x, | +
+ | + | vecType const & | +y | +
+ | ) | ++ |
Returns the component-wise comparison of result x == y.
+vecType | Floating-point, integer or boolean vector types. |
vecType::bool_type glm::greaterThan | +( | +vecType const & | +x, | +
+ | + | vecType const & | +y | +
+ | ) | ++ |
Returns the component-wise comparison of result x > y.
+vecType | Floating-point or integer vector types. |
vecType::bool_type glm::greaterThanEqual | +( | +vecType const & | +x, | +
+ | + | vecType const & | +y | +
+ | ) | ++ |
Returns the component-wise comparison of result x >= y.
+vecType | Floating-point or integer vector types. |
vecType::bool_type glm::lessThan | +( | +vecType const & | +x, | +
+ | + | vecType const & | +y | +
+ | ) | ++ |
Returns the component-wise comparison result of x < y.
+vecType | Floating-point or integer vector types. |
vecType::bool_type glm::lessThanEqual | +( | +vecType const & | +x, | +
+ | + | vecType const & | +y | +
+ | ) | ++ |
Returns the component-wise comparison of result x <= y.
+vecType | Floating-point or integer vector types. |
vecType<bool> glm::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.
+vecType | Boolean vector types. |
vecType::bool_type glm::notEqual | +( | +vecType const & | +x, | +
+ | + | vecType const & | +y | +
+ | ) | ++ |
Returns the component-wise comparison of result x != y.
+vecType | Floating-point, integer or boolean vector types. |
+ + + + + + + |
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.
++ + + + + + + |
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.
++ + + + + + + |
+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).
++ + + + + + + |
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 and 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.2 (pdf file). There are a few differences between GLM core and GLSL.
+GLM core functionnalities require <glm/glm.hpp> to be included to be used.
++ + + + + + + |
+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 mediump_ivec2 | ivec2 |
typedef mediump_ivec3 | ivec3 |
typedef mediump_ivec4 | ivec4 |
typedef mat2x2 | mat2 |
typedef mediump_mat2x2 | mat2x2 |
typedef mediump_mat2x3 | mat2x3 |
typedef mediump_mat2x4 | mat2x4 |
typedef mat3x3 | mat3 |
typedef mediump_mat3x2 | mat3x2 |
typedef mediump_mat3x3 | mat3x3 |
typedef mediump_mat3x4 | mat3x4 |
typedef mat4x4 | mat4 |
typedef mediump_mat4x2 | mat4x2 |
typedef mediump_mat4x3 | mat4x3 |
typedef mediump_mat4x4 | mat4x4 |
typedef mediump_uvec2 | uvec2 |
typedef mediump_uvec3 | uvec3 |
typedef mediump_uvec4 | uvec4 |
typedef mediump_vec2 | vec2 |
typedef mediump_vec3 | vec3 |
typedef 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 | +
2 components vector of boolean.
+ + + + +typedef detail::tvec3<bool> bvec3 | +
3 components vector of boolean.
+ + + + +typedef detail::tvec4<bool> bvec4 | +
4 components vector of boolean.
+ + + + +typedef detail::tmat2x2<double> dmat2 | +
2 * 2 matrix of double-precision floating-point numbers.
+ + + + +typedef detail::tmat2x2<double> dmat2x2 | +
2 * 2 matrix of double-precision floating-point numbers.
+ + + + +typedef detail::tmat2x3<double> dmat2x3 | +
2 * 3 matrix of double-precision floating-point numbers.
+ + + + +typedef detail::tmat2x4<double> dmat2x4 | +
2 * 4 matrix of double-precision floating-point numbers.
+ + + + +typedef detail::tmat3x3<double> dmat3 | +
3 * 3 matrix of double-precision floating-point numbers.
+ + + + +typedef detail::tmat3x2<double> dmat3x2 | +
3 * 2 matrix of double-precision floating-point numbers.
+ + + + +typedef detail::tmat3x3<double> dmat3x3 | +
3 * 3 matrix of double-precision floating-point numbers.
+ + + + +typedef detail::tmat3x4<double> dmat3x4 | +
3 * 4 matrix of double-precision floating-point numbers.
+ + + + +typedef detail::tmat4x4<double> dmat4 | +
4 * 4 matrix of double-precision floating-point numbers.
+ + + + +typedef detail::tmat4x2<double> dmat4x2 | +
4 * 2 matrix of double-precision floating-point numbers.
+ + + + +typedef detail::tmat4x3<double> dmat4x3 | +
4 * 3 matrix of double-precision floating-point numbers.
+ + + + +typedef detail::tmat4x4<double> dmat4x4 | +
4 * 4 matrix of double-precision floating-point numbers.
+ + + + +typedef detail::tvec2<double> dvec2 | +
Vector of 2 double-precision floating-point numbers.
+ + + + +typedef detail::tvec3<double> dvec3 | +
Vector of 3 double-precision floating-point numbers.
+ + + + +typedef detail::tvec4<double> dvec4 | +
Vector of 4 double-precision floating-point numbers.
+ + + + +typedef mediump_ivec2 ivec2 | +
2 components vector of signed integer numbers.
+ + + + +typedef mediump_ivec3 ivec3 | +
3 components vector of signed integer numbers.
+ + + + +typedef mediump_ivec4 ivec4 | +
4 components vector of signed integer numbers.
+ + + + +typedef mat2x2 mat2 | +
2 columns of 2 components matrix of floating-point numbers.
+ + + + +typedef mediump_mat2x2 mat2x2 | +
2 columns of 2 components matrix of floating-point numbers.
+ + + + +typedef mediump_mat2x3 mat2x3 | +
2 columns of 3 components matrix of floating-point numbers.
+ + + + +typedef mediump_mat2x4 mat2x4 | +
2 columns of 4 components matrix of floating-point numbers.
+ + + + +typedef mat3x3 mat3 | +
3 columns of 3 components matrix of floating-point numbers.
+ + + + +typedef mediump_mat3x2 mat3x2 | +
3 columns of 2 components matrix of floating-point numbers.
+ + + + +typedef mediump_mat3x3 mat3x3 | +
3 columns of 3 components matrix of floating-point numbers.
+ + + + +typedef mediump_mat3x4 mat3x4 | +
3 columns of 4 components matrix of floating-point numbers.
+ + + + +typedef mat4x4 mat4 | +
4 columns of 4 components matrix of floating-point numbers.
+ + + + +typedef mediump_mat4x2 mat4x2 | +
4 columns of 2 components matrix of floating-point numbers.
+ + + + +typedef mediump_mat4x3 mat4x3 | +
4 columns of 3 components matrix of floating-point numbers.
+ + + + +typedef mediump_mat4x4 mat4x4 | +
4 columns of 4 components matrix of floating-point numbers.
+ + + + +typedef mediump_uvec2 uvec2 | +
2 components vector of unsigned integer numbers.
+ + + + +typedef mediump_uvec3 uvec3 | +
3 components vector of unsigned integer numbers.
+ + + + +typedef mediump_uvec4 uvec4 | +
4 components vector of unsigned integer numbers.
+ + + + +typedef mediump_vec2 vec2 | +
2 components vector of floating-point numbers.
+ + + + +typedef mediump_vec3 vec3 | +
3 components vector of floating-point numbers.
+ + + + +typedef mediump_vec4 vec4 | +
4 components vector of floating-point numbers.
+ + + + ++ + + + + + + |
+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::tmat2x4 +< highp_float > | highp_mat2x4 |
typedef detail::tmat3x3 +< highp_float > | highp_mat3 |
typedef detail::tmat3x2 +< highp_float > | highp_mat3x2 |
typedef detail::tmat3x3 +< highp_float > | highp_mat3x3 |
typedef detail::tmat3x4 +< highp_float > | highp_mat3x4 |
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::tmat2x4 +< lowp_float > | lowp_mat2x4 |
typedef detail::tmat3x3 +< lowp_float > | lowp_mat3 |
typedef detail::tmat3x2 +< lowp_float > | lowp_mat3x2 |
typedef detail::tmat3x3 +< lowp_float > | lowp_mat3x3 |
typedef detail::tmat3x4 +< lowp_float > | lowp_mat3x4 |
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::tmat2x4 +< mediump_float > | mediump_mat2x4 |
typedef detail::tmat3x3 +< mediump_float > | mediump_mat3 |
typedef detail::tmat3x2 +< mediump_float > | mediump_mat3x2 |
typedef detail::tmat3x3 +< mediump_float > | mediump_mat3x3 |
typedef detail::tmat3x4 +< mediump_float > | mediump_mat3x4 |
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 |
typedef uint_t | uint |
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.
+Definition at line 67 of file type_float.hpp.
+ +typedef detail::highp_int_t highp_int | +
High precision signed integer.
+There is no guarantee on the actual precision.
+Definition at line 81 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.
+Definition at line 275 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.
+Definition at line 300 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.
+Definition at line 357 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.
+Definition at line 286 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.
+Definition at line 307 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.
+Definition at line 250 of file type_mat2x3.hpp.
+ +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.
+Definition at line 252 of file type_mat2x4.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.
+Definition at line 290 of file type_mat3x3.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.
+Definition at line 258 of file type_mat3x2.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.
+Definition at line 311 of file type_mat3x3.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.
+Definition at line 258 of file type_mat3x4.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.
+Definition at line 291 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.
+Definition at line 263 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.
+Definition at line 261 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.
+Definition at line 312 of file type_mat4x4.hpp.
+ +typedef detail::highp_uint_t highp_uint | +
High precision unsigned integer.
+There is no guarantee on the actual precision.
+Definition at line 102 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.
+Definition at line 296 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.
+Definition at line 321 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.
+Definition at line 378 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.
+Definition at line 254 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.
+Definition at line 279 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.
+Definition at line 336 of file type_vec4.hpp.
+ +typedef lowp_float_t lowp_float | +
Low precision floating-point numbers.
+There is no guarantee on the actual precision.
+Definition at line 53 of file type_float.hpp.
+ +typedef detail::lowp_int_t lowp_int | +
Low precision signed integer.
+There is no guarantee on the actual precision.
+Definition at line 67 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.
+Definition at line 289 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.
+Definition at line 314 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.
+Definition at line 371 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.
+Definition at line 272 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.
+Definition at line 293 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.
+Definition at line 236 of file type_mat2x3.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.
+Definition at line 238 of file type_mat2x4.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.
+Definition at line 276 of file type_mat3x3.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.
+Definition at line 244 of file type_mat3x2.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.
+Definition at line 297 of file type_mat3x3.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.
+Definition at line 244 of file type_mat3x4.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.
+Definition at line 277 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.
+Definition at line 249 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.
+Definition at line 247 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.
+Definition at line 298 of file type_mat4x4.hpp.
+ +typedef detail::lowp_uint_t lowp_uint | +
Low precision unsigned integer.
+There is no guarantee on the actual precision.
+Definition at line 88 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.
+Definition at line 310 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.
+Definition at line 335 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.
+Definition at line 392 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.
+Definition at line 268 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.
+Definition at line 293 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.
+Definition at line 350 of file type_vec4.hpp.
+ +typedef mediump_float_t mediump_float | +
Medium precision floating-point numbers.
+There is no guarantee on the actual precision.
+Definition at line 60 of file type_float.hpp.
+ +typedef detail::mediump_int_t mediump_int | +
Medium precision signed integer.
+There is no guarantee on the actual precision.
+Definition at line 74 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.
+Definition at line 282 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.
+Definition at line 307 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.
+Definition at line 364 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.
+Definition at line 279 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.
+Definition at line 300 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.
+Definition at line 243 of file type_mat2x3.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.
+Definition at line 245 of file type_mat2x4.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.
+Definition at line 283 of file type_mat3x3.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.
+Definition at line 251 of file type_mat3x2.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.
+Definition at line 304 of file type_mat3x3.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.
+Definition at line 251 of file type_mat3x4.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.
+Definition at line 284 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.
+Definition at line 256 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.
+Definition at line 254 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.
+Definition at line 305 of file type_mat4x4.hpp.
+ +typedef detail::mediump_uint_t mediump_uint | +
Medium precision unsigned integer.
+There is no guarantee on the actual precision.
+Definition at line 95 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.
+Definition at line 303 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.
+Definition at line 328 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.
+Definition at line 385 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.
+Definition at line 261 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.
+Definition at line 286 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.
+Definition at line 343 of file type_vec4.hpp.
+ +typedef uint_t uint | +
Unsigned integer type.
+ + +Definition at line 131 of file type_int.hpp.
+ ++ + + + + + + |
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.
++ + + + + + + |
+Classes | |
class | half |
16-bit floating point type. More... |
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.
++ + + + + + + |
Defines functions to access rows or columns of a matrix easily.
+<glm/gtc/matrix_access.hpp> need to be included to use these functionalities.
++ + + + + + + |
Defines a number of matrices with integer types.
+<glm/gtc/matrix_integer.hpp> need to be included to use these functionalities.
++ + + + + + + |
Defines additional matrix inverting functions.
+<glm/gtc/matrix_inverse.hpp> need to be included to use these functionalities.
++ + + + + + + |
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.
++ + + + + + + |
Defines 2D, 3D and 4D procedural noise functions Based on the work of Stefan Gustavson and Ashima Arts on "webgl-noise": https://github.com/ashima/webgl-noise Following Stefan Gustavson's paper "Simplex noise demystified": http://www.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf <glm/gtc/noise.hpp> need to be included to use these functionalities.
++ + + + + + + |
Defines a templated quaternion type and several quaternion operations.
+<glm/gtc/quaternion.hpp> need to be included to use these functionalities.
++ + + + + + + |
Generate random number from various distribution methods.
+<glm/gtc/random.hpp> need to be included to use these functionalities.
++ + + + + + + |
Provide functions to emulate GLSL swizzle operator fonctionalities.
+<glm/gtc/swizzle.hpp> need to be included to use these functionalities.
++ + + + + + + |
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.
++ + + + + + + |
Handles the interaction between pointers and vector, matrix types.
+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.
++ + + + + + + |
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.
+<glm/gtx/bit.hpp> need to be included to use these functionalities.
++ + + + + + + |
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.
++ + + + + + + |
Conversion between two color types.
+<glm/gtx/color_cast.hpp> need to be included to use these functionalities.
++ + + + + + + |
Related to RGB to HSV conversions and operations.
+<glm/gtx/color_space.hpp> need to be included to use these functionalities.
++ + + + + + + |
RGB to YCoCg conversions and operations.
+<glm/gtx/color_space_YCoCg.hpp> need to be included to use these functionalities.
++ + + + + + + |
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.
+<glm/gtx/component_wise.hpp> need to be included to use these functionalities.
++ + + + + + + |
+Functions | |
template<typename T > | |
T | e () |
template<typename T > | |
T | epsilon () |
template<typename T > | |
T | euler () |
template<typename T > | |
T | golden_ratio () |
template<typename T > | |
T | half_pi () |
template<typename T > | |
T | ln_ln_two () |
template<typename T > | |
T | ln_ten () |
template<typename T > | |
T | ln_two () |
template<typename T > | |
T | one () |
template<typename T > | |
T | one_over_pi () |
template<typename T > | |
T | one_over_root_two () |
template<typename T > | |
T | pi () |
template<typename T > | |
T | quarter_pi () |
template<typename T > | |
T | root_five () |
template<typename T > | |
T | root_half_pi () |
template<typename T > | |
T | root_ln_four () |
template<typename T > | |
T | root_pi () |
template<typename T > | |
T | root_three () |
template<typename T > | |
T | root_two () |
template<typename T > | |
T | root_two_pi () |
template<typename T > | |
T | third () |
template<typename T > | |
T | two_over_pi () |
template<typename T > | |
T | two_over_root_pi () |
template<typename T > | |
T | two_thirds () |
template<typename T > | |
T | zero () |
Allow to perform bit operations on integer values.
+<glm/gtx/constants.hpp> need to be included to use these functionalities.
+T glm::e | +( | +) | ++ |
Return e constant.
+ + +T glm::epsilon | +( | +) | ++ |
Return the epsilon constant for floating point types.
+T glm::euler | +( | +) | ++ |
Return Euler's constant.
+ + +T glm::golden_ratio | +( | +) | ++ |
Return the golden ratio constant.
+ + +T glm::half_pi | +( | +) | ++ |
Return pi / 2.
+ + +T glm::ln_ln_two | +( | +) | ++ |
Return ln(ln(2)).
+ + +T glm::ln_ten | +( | +) | ++ |
Return ln(10).
+ + +T glm::ln_two | +( | +) | ++ |
Return ln(2).
+ + +T glm::one | +( | +) | ++ |
Return 1.
+ + +T glm::one_over_pi | +( | +) | ++ |
Return 1 / pi.
+ + +T glm::one_over_root_two | +( | +) | ++ |
Return 1 / sqrt(2).
+ + +T glm::pi | +( | +) | ++ |
Return the pi constant.
+ + +T glm::quarter_pi | +( | +) | ++ |
Return pi / 4.
+ + +T glm::root_five | +( | +) | ++ |
Return sqrt(5).
+ + +T glm::root_half_pi | +( | +) | ++ |
Return sqrt(pi / 2).
+ + +T glm::root_ln_four | +( | +) | ++ |
Return sqrt(ln(4)).
+ + +T glm::root_pi | +( | +) | ++ |
Return square root of pi.
+ + +T glm::root_three | +( | +) | ++ |
Return sqrt(3).
+ + +T glm::root_two | +( | +) | ++ |
Return sqrt(2).
+ + +T glm::root_two_pi | +( | +) | ++ |
Return sqrt(2 * pi).
+ + +T glm::third | +( | +) | ++ |
Return 1 / 3.
+ + +T glm::two_over_pi | +( | +) | ++ |
Return 2 / pi.
+ + +T glm::two_over_root_pi | +( | +) | ++ |
Return 2 / sqrt(pi).
+ + +T glm::two_thirds | +( | +) | ++ |
Return 2 / 3.
+ + +T glm::zero | +( | +) | ++ |
Return 0.
+ + ++ + + + + + + |
Comparison functions for a user defined epsilon values.
+<glm/gtx/epsilon.hpp> need to be included to use these functionalities.
++ + + + + + + |
Build matrices from Euler angles.
+<glm/gtx/euler_angles.hpp> need to be included to use these functionalities.
++ + + + + + + |
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.
++ + + + + + + |
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.
+<glm/gtx/fast_exponential.hpp> need to be included to use these functionalities.
++ + + + + + + |
Fast but less accurate implementations of square root based functions.
+<glm/gtx/fast_square_root.hpp> need to be included to use these functionalities.
++ + + + + + + |
Fast but less accurate implementations of trigonometric functions.
+<glm/gtx/fast_trigonometry.hpp> need to be included to use these functionalities.
++ + + + + + + |
Functions that return the color of procedural gradient for specific coordinates.
+<glm/gtx/gradient_paint.hpp> need to be included to use these functionalities.
++ + + + + + + |
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.
++ + + + + + + |
Create inertia matrices.
+<glm/gtx/inertia.hpp> need to be included to use these functionalities.
++ + + + + + + |
Pack vector to 1010102 integers.
+Storage only.
+<glm/gtx/int_10_10_10_2.hpp> need to be included to use these functionalities.
++ + + + + + + |
Add support for integer for core functions.
+<glm/gtx/integer.hpp> need to be included to use these functionalities.
++ + + + + + + |
Add intersection functions.
+<glm/gtx/intersect.hpp> need to be included to use these functionalities.
++ + + + + + + |
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.
++ + + + + + + |
Build cross product matrices.
+<glm/gtx/matrix_cross_product.hpp> need to be included to use these functionalities.
++ + + + + + + |
Allows to directly interpolate two exiciting matrices.
+<glm/gtx/matrix_interpolation.hpp> need to be included to use these functionalities.
++ + + + + + + |
Build matrices with specific matrix order, row or column.
+<glm/gtx/matrix_major_storage.hpp> need to be included to use these functionalities.
++ + + + + + + |
Build diagonal matrices from vectors.
+<glm/gtx/matrix_operation.hpp> need to be included to use these functionalities.
++ + + + + + + |
Query to evaluate matrix properties.
+<glm/gtx/matrix_query.hpp> need to be included to use these functionalities.
++ + + + + + + |
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.
+<glm/gtx/multiple.hpp> need to be included to use these functionalities.
++ + + + + + + |
Defines 2D, 3D and 4D procedural noise functions Based on the work of Stefan Gustavson and Ashima Arts on "webgl-noise": https://github.com/ashima/webgl-noise Following Stefan Gustavson's paper "Simplex noise demystified": http://www.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf Defines the half-precision floating-point type, along with various typedefs for vectors and matrices.
+<glm/gtx/noise.hpp> need to be included to use these functionalities.
++ + + + + + + |
Various way to compute vector norms.
+<glm/gtx/norm.hpp> need to be included to use these functionalities.
++ + + + + + + |
Compute the normal of a triangle.
+<glm/gtx/normal.hpp> need to be included to use these functionalities.
++ + + + + + + |
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.
++ + + + + + + |
Defined size types.
+<glm/gtx/number_precision.hpp> need to be included to use these functionalities.
++ + + + + + + |
OpenCL types.
+<glm/gtx/ocl_type.hpp> need to be included to use these functionalities.
++ + + + + + + |
Integer exponentiation of power functions.
+<glm/gtx/optimum_pow.hpp> need to be included to use these functionalities.
++ + + + + + + |
Orthonormalize matrices.
+<glm/gtx/orthonormalize.hpp> need to be included to use these functionalities.
++ + + + + + + |
Perpendicular of a vector from other one.
+<glm/gtx/perpendicular.hpp> need to be included to use these functionalities.
++ + + + + + + |
Conversion from Euclidean space to polar space and revert.
+<glm/gtx/polar_coordinates.hpp> need to be included to use these functionalities.
++ + + + + + + |
Projection of a vector to other one.
+<glm/gtx/projection.hpp> need to be included to use these functionalities.
++ + + + + + + |
Extented quaternion types and functions.
+<glm/gtx/quaternion.hpp> need to be included to use these functionalities.
++ + + + + + + |
Generate random number from various distribution methods.
+<glm/gtx/random.hpp> need to be included to use these functionalities.
++ + + + + + + |
Projection of a vector to other one.
+<glm/gtx/raw_data.hpp> need to be included to use these functionalities.
++ + + + + + + |
Define secant, cosecant and cotangent functions.
+<glm/gtx/reciprocal.hpp> need to be included to use these functionalities.
++ + + + + + + |
Function to directly rotate a vector.
+<glm/gtx/rotate_vector.hpp> need to be included to use these functionalities.
++ + + + + + + |
SIMD implementation of mat4 type.
+<glm/gtx/simd_mat4.hpp> need to be included to use these functionalities.
++ + + + + + + |
SIMD implementation of vec4 type.
+<glm/gtx/simd_vec4.hpp> need to be included to use these functionalities.
++ + + + + + + |
Spline functions.
+<glm/gtx/spline.hpp> need to be included to use these functionalities.
++ + + + + + + |
Adds vector types based on STL value types.
+<glm/gtx/std_based_type.hpp> need to be included to use these functionalities.
++ + + + + + + |
Setup strings for GLM type values.
+<glm/gtx/string_cast.hpp> need to be included to use these functionalities.
++ + + + + + + |
Add transformation matrices.
+<glm/gtx/transform.hpp> need to be included to use these functionalities.
++ + + + + + + |
Add extra transformation matrices.
+<glm/gtx/transform2.hpp> need to be included to use these functionalities.
++ + + + + + + |
Allow the measurement of the accuracy of a function against a reference implementation.
+This extension works on floating-point data and provide results in ULP. <glm/gtx/ulp.hpp> need to be included to use these functionalities.
++ + + + + + + |
Add vec1, ivec1, uvec1 and bvec1 types.
+<glm/gtx/vec1.hpp> need to be included to use these functionalities.
++ + + + + + + |
Function to set values to vectors.
+<glm/gtx/vector_access.hpp> need to be included to use these functionalities.
++ + + + + + + |
Compute angle between vectors.
+<glm/gtx/vector_angle.hpp> need to be included to use these functionalities.
++ + + + + + + |
Query informations of vector types.
+<glm/gtx/vector_query.hpp> need to be included to use these functionalities.
++ + + + + + + |
Use words to replace operators.
+<glm/gtx/verbose_operator.hpp> need to be included to use these functionalities.
++ + + + + + + |
Wrapping mode of texture coordinates.
+<glm/gtx/wrap.hpp> need to be included to use these functionalities.
++ + + + + + + |
Streaming vector and matrix in a xml way.
+Include <glm/virtrev/xstream.hpp> for this functionality.
++ + + + + + + |
+ + + + + + + |
+ + + + + + + |
half | 16-bit floating point type |
+ + + + + + + |
+ + + + + + + |
_detail.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
_fixes.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
_swizzle.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
_swizzle_func.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
_vectorize.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
associated_min_max.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
bit.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
closest_point.hpp [code] | |
color_cast.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
color_space.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
color_space_YCoCg.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
compatibility.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
component_wise.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
constants.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
epsilon.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
euler_angles.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
ext.hpp [code] | |
extend.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
extented_min_max.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
fast_exponential.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
fast_square_root.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
fast_trigonometry.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
func_common.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
func_exponential.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
func_geometric.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
func_integer.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
func_matrix.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
func_noise.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
func_packing.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
func_trigonometric.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
func_vector_relational.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
glm.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
gradient_paint.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
half_float.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
handed_coordinate_space.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
hint.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
inertia.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
int_10_10_10_2.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
integer.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
intersect.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
intrinsic_common.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
intrinsic_exponential.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
intrinsic_geometric.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
intrinsic_matrix.hpp [code] | |
intrinsic_trigonometric.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
intrinsic_vector_relational.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
log_base.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
man.doxy [code] | |
matrix_access.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
matrix_cross_product.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
matrix_integer.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
matrix_interpolation.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
matrix_inverse.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
matrix_major_storage.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
matrix_operation.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
matrix_query.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
matrix_transform.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
mixed_product.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
multiple.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
gtc/noise.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
gtx/noise.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
norm.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
normal.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
normalize_dot.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
number_precision.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
ocl_type.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
optimum_pow.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
orthonormalize.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
pages.doxy [code] | |
perpendicular.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
polar_coordinates.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
projection.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
gtc/quaternion.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
gtx/quaternion.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
gtc/random.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
gtx/random.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
raw_data.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
reciprocal.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
rotate_vector.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
setup.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
simd_mat4.hpp [code] | |
simd_vec4.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
spline.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
std_based_type.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
string_cast.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
swizzle.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
transform.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
transform2.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_float.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_gentype.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_half.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_int.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_mat.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_mat2x2.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_mat2x3.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_mat2x4.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_mat3x2.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_mat3x3.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_mat3x4.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_mat4x2.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_mat4x3.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_mat4x4.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_precision.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_ptr.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_size.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_vec.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_vec1.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_vec2.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_vec3.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
type_vec4.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
ulp.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
unsigned_int.hpp [code] | |
vec1.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
vector_access.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
vector_angle.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
vector_query.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
verbose_operator.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
wrap.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
xstream.hpp [code] | OpenGL Mathematics (glm.g-truc.net) |
+ + + + + + + |
OpenGL Mathematics (GLM) is a header only 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 to GLSL features. An extension system, based on the GLSL extension conventions, provides extended capabilities: matrix transformations, quaternions, half-based types, random numbers, procedural noise functions, etc...
+This library works perfectly with OpenGL but it also ensures interoperability with third party libraries and SDKs. 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 in C++98 but can take advantage of C++11 when supported by the compiler. It is a platform independent library with no dependence and officially supports the following compilers:
+The source code is licenced under the MIT licence.
+These pages are the API reference only. For more information about how to use GLM, please have a look at the manual.
+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.
+