diff --git a/CMakeLists.txt b/CMakeLists.txt index 9579aeba..07e3e428 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ project(glm) add_definitions(-D_CRT_SECURE_NO_WARNINGS) #add_definitions(-S) #add_definitions(-s) -add_definitions(-msse2) +#add_definitions(-msse2) #add_definitions(-m32) #add_definitions(-mfpmath=387) #add_definitions(-ffast-math) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 6d9f918b..da40c39e 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -1,10 +1,12 @@ set(NAME glm-doc) +file(GLOB ROOT_TXT doxyfile ../*.txt) file(GLOB ROOT_CPP src/*.cpp) file(GLOB ROOT_XML src/*.xml) file(GLOB ROOT_XSL src/*.xsl) +source_group("TXT Files" FILES ${ROOT_TXT}) source_group("XML Files" FILES ${ROOT_XML}) source_group("XSL Files" FILES ${ROOT_XSL}) -add_executable(${NAME} ${ROOT_CPP} ${ROOT_XML} ${ROOT_XSL}) +add_executable(${NAME} ${ROOT_CPP} ${ROOT_XML} ${ROOT_XSL} ${ROOT_TXT}) diff --git a/glm/core/_detail.hpp b/glm/core/_detail.hpp index 9c826409..7cdc2ed0 100644 --- a/glm/core/_detail.hpp +++ b/glm/core/_detail.hpp @@ -327,7 +327,7 @@ namespace detail # define GLM_RESTRICT_VAR __restrict #elif((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC31)) # define GLM_DEPRECATED __attribute__((__deprecated__)) -# define GLM_ALIGN(x) __attribute__(aligned(x)) +# define GLM_ALIGN(x) __attribute__((aligned(x))) # if(GLM_COMPILER >= GLM_COMPILER_GCC33) # define GLM_RESTRICT __restrict__ # define GLM_RESTRICT_VAR __restrict__ diff --git a/glm/core/intrinsic_common.inl b/glm/core/intrinsic_common.inl index b11f000d..fd031ef8 100644 --- a/glm/core/intrinsic_common.inl +++ b/glm/core/intrinsic_common.inl @@ -258,7 +258,7 @@ inline __m128 sse_inf_ps(__m128 x) } // SSE scalar reciprocal sqrt using rsqrt op, plus one Newton-Rhaphson iteration -// By Elan Ruskin, +// By Elan Ruskin, http://assemblyrequired.crashworks.org/ inline __m128 sse_sqrt_wip_ss(__m128 const & x) { __m128 recip = _mm_rsqrt_ss(x); // "estimate" opcode diff --git a/glm/gtc/matrix_transform.hpp b/glm/gtc/matrix_transform.hpp index 477dc2eb..f7d466f8 100644 --- a/glm/gtc/matrix_transform.hpp +++ b/glm/gtc/matrix_transform.hpp @@ -133,6 +133,14 @@ namespace glm detail::tmat4x4 const & proj, detail::tvec4 const & viewport); + //! Define a picking region + //! From GLM_GTC_matrix_transform extension. + template + detail::tmat4x4 pickMatrix( + detail::tvec2 const & center, + detail::tvec2 const & delta, + detail::tvec4 const & viewport); + //! Build a look at view matrix. //! From GLM_GTC_matrix_transform extension. template diff --git a/glm/gtc/matrix_transform.inl b/glm/gtc/matrix_transform.inl index 858fa68c..b8e79ca2 100644 --- a/glm/gtc/matrix_transform.inl +++ b/glm/gtc/matrix_transform.inl @@ -324,6 +324,25 @@ namespace matrix_transform return detail::tvec3(obj); } + template + detail::tmat4x4 pickMatrix + ( + detail::tvec2 const & center, + detail::tvec2 const & delta, + detail::tvec4 const & viewport + ) + { + assert(delta.x > 0.0f && delta.y > 0.0f) + detail::tmat4x4 Result(1.0f); + + if(!(delta.x > 0.0f && delta.y > 0.0f)) + return Result; // Error + + // Translate and scale the picked region to the entire window + Result = translate(Result, (T(viewport[2]) - T(2) * (x - T(viewport[0]))) / delta.x, (T(viewport[3]) - T(2) * (y - T(viewport[1]))) / delta.y, T(0)); + return scale(Result, T(viewport[2]) / delta.x, T(viewport[3]) / delta.y, T(1)); + } + template inline detail::tmat4x4 lookAt( const detail::tvec3& eye, diff --git a/glm/gtc/quaternion.hpp b/glm/gtc/quaternion.hpp index 34da0401..df475421 100644 --- a/glm/gtc/quaternion.hpp +++ b/glm/gtc/quaternion.hpp @@ -150,7 +150,7 @@ namespace glm detail::tquat const & q1, detail::tquat const & q2); - //! Returns a LERP interpolated quaternion of x and y according a. + //! Returns a SLERP interpolated quaternion of x and y according a. //! From GLM_GTC_quaternion extension. template detail::tquat mix( diff --git a/glm/gtc/quaternion.inl b/glm/gtc/quaternion.inl index df9d65d4..ee1e804a 100644 --- a/glm/gtc/quaternion.inl +++ b/glm/gtc/quaternion.inl @@ -370,6 +370,43 @@ namespace quaternion{ k0 * x.z + k1 * y2.z); } + template + inline detail::tquat mix2 + ( + detail::tquat const & x, + detail::tquat const & y, + T const & a + ) + { + bool flip = false; + if(a <= T(0)) return x; + if(a >= T(1)) return y; + + T cos_t = dot(x, y); + if(cos_t < T(0)) + { + cos_t = -cos_t; + flip = true; + } + + T alpha(0), beta(0); + + if(T(1) - cos_t < 1e-7) + beta = T(1) - alpha; + else + { + T theta = acos(cos_t); + T sin_t = sin(theta); + beta = sin(theta * (T(1) - alpha)) / sin_t; + alpha = sin(alpha * theta) / sin_t; + } + + if(flip) + alpha = -alpha; + + return normalize(beta * x + alpha * y2); + } + template inline detail::tquat conjugate ( diff --git a/glm/gtx/simd_mat4.hpp b/glm/gtx/simd_mat4.hpp index f48df975..95923aaa 100644 --- a/glm/gtx/simd_mat4.hpp +++ b/glm/gtx/simd_mat4.hpp @@ -142,7 +142,7 @@ namespace glm //! Multiply matrix x by matrix y component-wise, i.e., //! result[i][j] is the scalar product of x[i][j] and y[i][j]. //! (From GLM_GTX_simd_mat4 extension). - detail::fmat4x4SIMD simdMatrixCompMult( + detail::fmat4x4SIMD matrixCompMult( detail::fmat4x4SIMD const & x, detail::fmat4x4SIMD const & y); @@ -150,23 +150,23 @@ namespace glm //! and the second parameter r as a row vector //! and does a linear algebraic matrix multiply c * r. //! (From GLM_GTX_simd_mat4 extension). - detail::fmat4x4SIMD simdOuterProduct( + detail::fmat4x4SIMD outerProduct( detail::fvec4SIMD const & c, detail::fvec4SIMD const & r); //! Returns the transposed matrix of x //! (From GLM_GTX_simd_mat4 extension). - detail::fmat4x4SIMD simdTranspose( + detail::fmat4x4SIMD transpose( detail::fmat4x4SIMD const & x); //! Return the determinant of a mat4 matrix. //! (From GLM_GTX_simd_mat4 extension). - float simdDeterminant( + float determinant( detail::fmat4x4SIMD const & m); //! Return the inverse of a mat4 matrix. //! (From GLM_GTX_simd_mat4 extension). - detail::fmat4x4SIMD simdInverse( + detail::fmat4x4SIMD inverse( detail::fmat4x4SIMD const & m); }//namespace simd_mat4 diff --git a/glm/gtx/simd_mat4.inl b/glm/gtx/simd_mat4.inl index 59d1065e..c9b6f450 100644 --- a/glm/gtx/simd_mat4.inl +++ b/glm/gtx/simd_mat4.inl @@ -242,7 +242,7 @@ namespace simd_mat4 detail::fmat4x4SIMD const & x ) { - detail::tmat4x4 Result; + GLM_ALIGN(16) detail::tmat4x4 Result; _mm_store_ps(&Result[0][0], x.Data[0].Data); _mm_store_ps(&Result[1][0], x.Data[1].Data); _mm_store_ps(&Result[2][0], x.Data[2].Data); @@ -250,7 +250,7 @@ namespace simd_mat4 return Result; } - inline detail::fmat4x4SIMD simdMatrixCompMult + inline detail::fmat4x4SIMD matrixCompMult ( detail::fmat4x4SIMD const & x, detail::fmat4x4SIMD const & y @@ -264,30 +264,40 @@ namespace simd_mat4 return result; } - inline detail::fmat4x4SIMD simdOuterProduct + inline detail::fmat4x4SIMD outerProduct ( detail::fvec4SIMD const & c, detail::fvec4SIMD const & r ) { + __m128 Shu0 = _mm_shuffle_ps(r.Data, r.Data, _MM_SHUFFLE(0, 0, 0, 0)); + __m128 Shu1 = _mm_shuffle_ps(r.Data, r.Data, _MM_SHUFFLE(1, 1, 1, 1)); + __m128 Shu2 = _mm_shuffle_ps(r.Data, r.Data, _MM_SHUFFLE(2, 2, 2, 2)); + __m128 Shu3 = _mm_shuffle_ps(r.Data, r.Data, _MM_SHUFFLE(3, 3, 3, 3)); + detail::fmat4x4SIMD result(detail::fmat4x4SIMD::null); + result[0].Data = _mm_mul_ps(c.Data, Shu0); + result[1].Data = _mm_mul_ps(c.Data, Shu1); + result[2].Data = _mm_mul_ps(c.Data, Shu2); + result[3].Data = _mm_mul_ps(c.Data, Shu3); + return result; } - inline detail::fmat4x4SIMD simdTranspose(detail::fmat4x4SIMD const & m) + inline detail::fmat4x4SIMD transpose(detail::fmat4x4SIMD const & m) { detail::fmat4x4SIMD result; detail::sse_transpose_ps(&m[0].Data, &result[0].Data); return result; } - inline float simdDeterminant(detail::fmat4x4SIMD const & m) + inline float determinant(detail::fmat4x4SIMD const & m) { float Result; _mm_store_ss(&Result, detail::sse_det_ps(&m[0].Data)); return Result; } - inline detail::fmat4x4SIMD simdInverse(detail::fmat4x4SIMD const & m) + inline detail::fmat4x4SIMD inverse(detail::fmat4x4SIMD const & m) { detail::fmat4x4SIMD result; detail::sse_inverse_ps(&m[0].Data, &result[0].Data); diff --git a/glm/gtx/simd_vec4.hpp b/glm/gtx/simd_vec4.hpp index 186fd045..83691a80 100644 --- a/glm/gtx/simd_vec4.hpp +++ b/glm/gtx/simd_vec4.hpp @@ -336,23 +336,47 @@ namespace glm //! Returns the length of x, i.e., sqrt(x * x). //! (From GLM_GTX_simd_vec4 extension, geometry functions) - float simdLength( + float length( + detail::fvec4SIMD const & x); + + //! Returns the length of x, i.e., sqrt(x * x). + //! Less accurate but much faster than simdLength. + //! (From GLM_GTX_simd_vec4 extension, geometry functions) + float fastLength( + detail::fvec4SIMD const & x); + + //! Returns the length of x, i.e., sqrt(x * x). + //! Slightly more accurate but much slower than simdLength. + //! (From GLM_GTX_simd_vec4 extension, geometry functions) + float niceLength( detail::fvec4SIMD const & x); //! Returns the length of x, i.e., sqrt(x * x). //! (From GLM_GTX_simd_vec4 extension, geometry functions) - detail::fvec4SIMD simdLength4( + detail::fvec4SIMD length4( + detail::fvec4SIMD const & x); + + //! Returns the length of x, i.e., sqrt(x * x). + //! Less accurate but much faster than simdLength4. + //! (From GLM_GTX_simd_vec4 extension, geometry functions) + detail::fvec4SIMD fastLength4( + detail::fvec4SIMD const & x); + + //! Returns the length of x, i.e., sqrt(x * x). + //! Slightly more accurate but much slower than simdLength4. + //! (From GLM_GTX_simd_vec4 extension, geometry functions) + detail::fvec4SIMD niceLength4( detail::fvec4SIMD const & x); //! Returns the distance betwwen p0 and p1, i.e., length(p0 - p1). //! (From GLM_GTX_simd_vec4 extension, geometry functions) - float simdDistance( + float distance( detail::fvec4SIMD const & p0, detail::fvec4SIMD const & p1); //! Returns the distance betwwen p0 and p1, i.e., length(p0 - p1). //! (From GLM_GTX_simd_vec4 extension, geometry functions) - detail::fvec4SIMD simdDistance4( + detail::fvec4SIMD distance4( detail::fvec4SIMD const & p0, detail::fvec4SIMD const & p1); @@ -364,19 +388,25 @@ namespace glm //! Returns the dot product of x and y, i.e., result = x * y. //! (From GLM_GTX_simd_vec4 extension, geometry functions) - detail::fvec4SIMD simdDot4( + detail::fvec4SIMD dot4( detail::fvec4SIMD const & x, detail::fvec4SIMD const & y); //! Returns the cross product of x and y. //! (From GLM_GTX_simd_vec4 extension, geometry functions) - detail::fvec4SIMD simdCross( + detail::fvec4SIMD cross( detail::fvec4SIMD const & x, detail::fvec4SIMD const & y); //! Returns a vector in the same direction as x but with length of 1. //! (From GLM_GTX_simd_vec4 extension, geometry functions) - detail::fvec4SIMD simdNormalize( + detail::fvec4SIMD normalize( + detail::fvec4SIMD const & x); + + //! Returns a vector in the same direction as x but with length of 1. + //! Less accurate but much faster than simdNormalize. + //! (From GLM_GTX_simd_vec4 extension, geometry functions) + detail::fvec4SIMD fastNormalize( detail::fvec4SIMD const & x); //! If dot(Nref, I) < 0.0, return N, otherwise, return -N. @@ -389,7 +419,7 @@ namespace glm //! For the incident vector I and surface orientation N, //! returns the reflection direction : result = I - 2.0 * dot(N, I) * N. //! (From GLM_GTX_simd_vec4 extension, geometry functions) - detail::fvec4SIMD simdReflect( + detail::fvec4SIMD reflect( detail::fvec4SIMD const & I, detail::fvec4SIMD const & N); @@ -397,10 +427,39 @@ namespace glm //! and the ratio of indices of refraction eta, //! return the refraction vector. //! (From GLM_GTX_simd_vec4 extension, geometry functions) - detail::fvec4SIMD simdRefract( + detail::fvec4SIMD refract( detail::fvec4SIMD const & I, detail::fvec4SIMD const & N, float const & eta); + + //! Returns the positive square root of x. + //! (From GLM_GTX_simd_vec4 extension, exponential function) + detail::fvec4SIMD sqrt( + detail::fvec4SIMD const & x); + + //! Returns the positive square root of x with the nicest quality but very slow. + //! Slightly more accurate but much slower than simdSqrt. + //! (From GLM_GTX_simd_vec4 extension, exponential function) + detail::fvec4SIMD niceSqrt( + detail::fvec4SIMD const & x); + + //! Returns the positive square root of x + //! Less accurate but much faster than sqrt. + //! (From GLM_GTX_simd_vec4 extension, exponential function) + detail::fvec4SIMD fastSqrt( + detail::fvec4SIMD const & x); + + //! Returns the reciprocal of the positive square root of x. + //! (From GLM_GTX_simd_vec4 extension, exponential function) + detail::fvec4SIMD inversesqrt( + detail::fvec4SIMD const & x); + + //! Returns the reciprocal of the positive square root of x. + //! Faster than inversesqrt but less accurate. + //! (From GLM_GTX_simd_vec4 extension, exponential function) + detail::fvec4SIMD fastInversesqrt( + detail::fvec4SIMD const & x); + }//namespace simd_vec4 }//namespace gtx }//namespace glm diff --git a/glm/gtx/simd_vec4.inl b/glm/gtx/simd_vec4.inl index 28b44eb0..ae5a250f 100644 --- a/glm/gtx/simd_vec4.inl +++ b/glm/gtx/simd_vec4.inl @@ -275,7 +275,7 @@ namespace glm detail::fvec4SIMD const & x ) { - detail::tvec4 Result; + GLM_ALIGN(4) detail::tvec4 Result; _mm_store_ps(&Result[0], x.Data); return Result; } @@ -530,25 +530,67 @@ namespace glm return _mm_add_ps(_mm_mul_ps(a.Data, b.Data), c.Data); } - inline float simdLength + inline float length ( detail::fvec4SIMD const & x ) { + detail::fvec4SIMD dot0 = detail::sse_dot_ss(x.Data, x.Data); + detail::fvec4SIMD sqt0 = sqrt(dot0); float Result = 0; - _mm_store_ss(&Result, detail::sse_len_ps(x.Data)); + _mm_store_ss(&Result, sqt0.Data); return Result; } - inline detail::fvec4SIMD simdLength4 + inline float fastLength ( detail::fvec4SIMD const & x ) { - return detail::sse_len_ps(x.Data); + detail::fvec4SIMD dot0 = detail::sse_dot_ss(x.Data, x.Data); + detail::fvec4SIMD sqt0 = fastSqrt(dot0); + float Result = 0; + _mm_store_ss(&Result, sqt0.Data); + return Result; } - inline float simdDistance + inline float niceLength + ( + detail::fvec4SIMD const & x + ) + { + detail::fvec4SIMD dot0 = detail::sse_dot_ss(x.Data, x.Data); + detail::fvec4SIMD sqt0 = niceSqrt(dot0); + float Result = 0; + _mm_store_ss(&Result, sqt0.Data); + return Result; + } + + inline detail::fvec4SIMD length4 + ( + detail::fvec4SIMD const & x + ) + { + return sqrt(dot4(x, x)); + } + + inline detail::fvec4SIMD fastLength4 + ( + detail::fvec4SIMD const & x + ) + { + return fastSqrt(dot4(x, x)); + } + + inline detail::fvec4SIMD niceLength4 + ( + detail::fvec4SIMD const & x + ) + { + return niceSqrt(dot4(x, x)); + } + + inline float distance ( detail::fvec4SIMD const & p0, detail::fvec4SIMD const & p1 @@ -559,7 +601,7 @@ namespace glm return Result; } - inline detail::fvec4SIMD simdDistance4 + inline detail::fvec4SIMD distance4 ( detail::fvec4SIMD const & p0, detail::fvec4SIMD const & p1 @@ -568,7 +610,7 @@ namespace glm return detail::sse_dst_ps(p0.Data, p1.Data); } - inline float simdDot + inline float dot ( detail::fvec4SIMD const & x, detail::fvec4SIMD const & y @@ -579,16 +621,16 @@ namespace glm return Result; } - inline detail::fvec4SIMD simdDot4 + inline detail::fvec4SIMD dot4 ( detail::fvec4SIMD const & x, detail::fvec4SIMD const & y ) { - return detail::sse_dot_ss(x.Data, y.Data); + return detail::sse_dot_ps(x.Data, y.Data); } - inline detail::fvec4SIMD simdCross + inline detail::fvec4SIMD cross ( detail::fvec4SIMD const & x, detail::fvec4SIMD const & y @@ -597,15 +639,29 @@ namespace glm return detail::sse_xpd_ps(x.Data, y.Data); } - inline detail::fvec4SIMD simdNormalize + inline detail::fvec4SIMD normalize ( detail::fvec4SIMD const & x ) { - return detail::sse_nrm_ps(x.Data); + __m128 dot0 = detail::sse_dot_ps(x.Data, x.Data); + __m128 isr0 = inversesqrt(dot0).Data; + __m128 mul0 = _mm_mul_ps(x.Data, isr0); + return mul0; } - inline detail::fvec4SIMD simdFaceforward + inline detail::fvec4SIMD fastNormalize + ( + detail::fvec4SIMD const & x + ) + { + __m128 dot0 = detail::sse_dot_ps(x.Data, x.Data); + __m128 isr0 = fastInversesqrt(dot0).Data; + __m128 mul0 = _mm_mul_ps(x.Data, isr0); + return mul0; + } + + inline detail::fvec4SIMD faceforward ( detail::fvec4SIMD const & N, detail::fvec4SIMD const & I, @@ -615,7 +671,7 @@ namespace glm return detail::sse_ffd_ps(N.Data, I.Data, Nref.Data); } - inline detail::fvec4SIMD simdReflect + inline detail::fvec4SIMD reflect ( detail::fvec4SIMD const & I, detail::fvec4SIMD const & N @@ -624,7 +680,7 @@ namespace glm return detail::sse_rfe_ps(I.Data, N.Data); } - inline detail::fvec4SIMD simdRefract + inline detail::fvec4SIMD refract ( detail::fvec4SIMD const & I, detail::fvec4SIMD const & N, @@ -634,6 +690,39 @@ namespace glm return detail::sse_rfa_ps(I.Data, N.Data, _mm_set1_ps(eta)); } + inline detail::fvec4SIMD sqrt(detail::fvec4SIMD const & x) + { + return _mm_mul_ps(inversesqrt(x.Data).Data, x.Data); + } + + inline detail::fvec4SIMD niceSqrt(detail::fvec4SIMD const & x) + { + return _mm_sqrt_ps(x.Data); + } + + inline detail::fvec4SIMD fastSqrt(detail::fvec4SIMD const & x) + { + return _mm_mul_ps(fastInversesqrt(x.Data).Data, x.Data); + } + + // SSE scalar reciprocal sqrt using rsqrt op, plus one Newton-Rhaphson iteration + // By Elan Ruskin, http://assemblyrequired.crashworks.org/ + inline detail::fvec4SIMD inversesqrt(detail::fvec4SIMD const & x) + { + GLM_ALIGN(4) static const __m128 three = {3, 3, 3, 3}; // aligned consts for fast load + GLM_ALIGN(4) static const __m128 half = {0.5,0.5,0.5,0.5}; + + __m128 recip = _mm_rsqrt_ps(x.Data); // "estimate" opcode + __m128 halfrecip = _mm_mul_ps(half, recip); + __m128 threeminus_xrr = _mm_sub_ps(three, _mm_mul_ps(x.Data, _mm_mul_ps(recip, recip))); + return _mm_mul_ps(halfrecip, threeminus_xrr); + } + + inline detail::fvec4SIMD fastInversesqrt(detail::fvec4SIMD const & x) + { + return _mm_rsqrt_ps(x.Data); + } + }//namespace simd_vec4 }//namespace gtx }//namespace glm diff --git a/readme.txt b/readme.txt index cca9974b..f5819bc4 100644 --- a/readme.txt +++ b/readme.txt @@ -1,12 +1,21 @@ -============================= +================================================================================ G-Truc Creation ------------------------------ +-------------------------------------------------------------------------------- www.g-truc.net glm@g-truc.net -============================= +================================================================================ +GLM Usage +-------------------------------------------------------------------------------- +GLM is a header only library, there is nothing to build, just include it. +#include + +More informations in GLM manual: +http://glm.g-truc.net/glm-manual.pdf + +================================================================================ GLM 0.9.1.A: 2010-01-31 ------------------------------ +-------------------------------------------------------------------------------- - Added SIMD support - Added new swizzle functions - Improved static assert error message with C++0x static_assert @@ -14,314 +23,315 @@ GLM 0.9.1.A: 2010-01-31 - Reduced branching - Fixed trunc implementation -============================= -GLM 0.9.0.7: 2010-01-30 ------------------------------ -- Added == and != operator for *mat* and *vec* +================================================================================ +GLM 0.9.0.7: 2011-01-30 +-------------------------------------------------------------------------------- - Added GLSL 4.10 packing functions +- Added == and != operators for every types. -============================= +================================================================================ GLM 0.9.0.6: 2010-12-21 ------------------------------ +-------------------------------------------------------------------------------- - Many matrices bugs fixed -============================= +================================================================================ GLM 0.9.0.5: 2010-11-01 ------------------------------ +-------------------------------------------------------------------------------- - Improved Clang support - Fixed bugs -============================= +================================================================================ GLM 0.9.0.4: 2010-10-04 ------------------------------ +-------------------------------------------------------------------------------- - Added autoexp for GLM - Fixed bugs -============================= +================================================================================ GLM 0.9.0.3: 2010-08-26 ------------------------------ +-------------------------------------------------------------------------------- - Fixed non-squared matrix operators -============================= +================================================================================ GLM 0.9.0.2: 2010-07-08 ------------------------------ +-------------------------------------------------------------------------------- - Added GLM_GTX_int_10_10_10_2 - Fixed bugs -============================= +================================================================================ GLM 0.9.0.1: 2010-06-21 ------------------------------ +-------------------------------------------------------------------------------- - Fixed extensions errors -============================= +================================================================================ GLM 0.9.0.0: 2010-05-25 ------------------------------ +-------------------------------------------------------------------------------- - Objective-C support - Fixed warnings - Updated documentation -============================= +================================================================================ GLM 0.9.B.2: 2010-04-30 ------------------------------ +-------------------------------------------------------------------------------- - Git transition - Removed experimental code from releases - Fixed bugs -============================= +================================================================================ GLM 0.9.B.1: 2010-04-03 ------------------------------ +-------------------------------------------------------------------------------- - Based on GLSL 4.00 specification - Added the new core functions - Added some implicit conversion support -============================= +================================================================================ GLM 0.9.A.2: 2010-02-20 ------------------------------ +-------------------------------------------------------------------------------- - Improved some possible errors messages - Improved declarations and definitions match -============================= +================================================================================ GLM 0.9.A.1: 2010-02-09 ------------------------------ +-------------------------------------------------------------------------------- - Removed deprecated features - Internal redesign -============================= +================================================================================ GLM 0.8.4.4 final: 2010-01-25 ------------------------------ +-------------------------------------------------------------------------------- - Fixed warnings -============================= +================================================================================ GLM 0.8.4.3 final: 2009-11-16 ------------------------------ +-------------------------------------------------------------------------------- - Fixed Half float arithmetic - Fixed setup defines -============================= +================================================================================ GLM 0.8.4.2 final: 2009-10-19 ------------------------------ +-------------------------------------------------------------------------------- - Fixed Half float adds -============================= +================================================================================ GLM 0.8.4.1 final: 2009-10-05 ------------------------------ +-------------------------------------------------------------------------------- - Updated documentation - Fixed MacOS X build -============================= +================================================================================ GLM 0.8.4.0 final: 2009-09-16 ------------------------------ +-------------------------------------------------------------------------------- - Added GCC 4.4 and VC2010 support - Added matrix optimizations -============================= +================================================================================ GLM 0.8.3.5 final: 2009-08-11 ------------------------------ +-------------------------------------------------------------------------------- - Fixed bugs -============================= +================================================================================ GLM 0.8.3.4 final: 2009-08-10 ------------------------------ +-------------------------------------------------------------------------------- - Updated GLM according GLSL 1.5 spec - Fixed bugs -============================= +================================================================================ GLM 0.8.3.3 final: 2009-06-25 ------------------------------ +-------------------------------------------------------------------------------- - Fixed bugs -============================= +================================================================================ GLM 0.8.3.2 final: 2009-06-04 ------------------------------ +-------------------------------------------------------------------------------- - Added GLM_GTC_quaternion - Added GLM_GTC_type_precision -============================= +================================================================================ GLM 0.8.3.1 final: 2009-05-21 ------------------------------ +-------------------------------------------------------------------------------- - Fixed old extension system. -============================= +================================================================================ GLM 0.8.3.0 final: 2009-05-06 ------------------------------ +-------------------------------------------------------------------------------- - Added stable extensions. - Added new extension system. -============================= +================================================================================ GLM 0.8.2.3 final: 2009-04-01 ------------------------------ +-------------------------------------------------------------------------------- - Fixed bugs. -============================= +================================================================================ GLM 0.8.2.2 final: 2009-02-24 ------------------------------ +-------------------------------------------------------------------------------- - Fixed bugs. -============================= +================================================================================ GLM 0.8.2.1 final: 2009-02-13 ------------------------------ +-------------------------------------------------------------------------------- - Fixed bugs. -============================= +================================================================================ GLM 0.8.2 final: 2009-01-21 ------------------------------ +-------------------------------------------------------------------------------- - Fixed bugs. -============================= +================================================================================ GLM 0.8.1 final: 2008-10-30 ------------------------------ +-------------------------------------------------------------------------------- - Fixed bugs. -============================= +================================================================================ GLM 0.8.0 final: 2008-10-23 ------------------------------ +-------------------------------------------------------------------------------- - New method to use extension. -============================= +================================================================================ GLM 0.8.0 beta3: 2008-10-10 ------------------------------ +-------------------------------------------------------------------------------- - Added CMake support for GLM tests. -============================= +================================================================================ GLM 0.8.0 beta2: 2008-10-04 ------------------------------ +-------------------------------------------------------------------------------- - Improved half scalars and vectors support. -============================= +================================================================================ GLM 0.8.0 beta1: 2008-09-26 ------------------------------ +-------------------------------------------------------------------------------- - Improved GLSL conformance - Added GLSL 1.30 support - Improved API documentation -============================= +================================================================================ GLM 0.7.6 final: 2008-08-08 ---------------------------- +-------------------------------------------------------------------------------- - Improved C++ standard comformance - Added Static assert for types checking -=========================== +================================================================================ GLM 0.7.5 final: 2008-07-05 ---------------------------- +-------------------------------------------------------------------------------- - Added build message system with Visual Studio - Pedantic build with GCC -=========================== +================================================================================ GLM 0.7.4 final: 2008-06-01 ---------------------------- +-------------------------------------------------------------------------------- - Added external dependencies system. -=========================== +================================================================================ GLM 0.7.3 final: 2008-05-24 ---------------------------- +-------------------------------------------------------------------------------- - Fixed bugs - Added new extension group -=========================== +================================================================================ GLM 0.7.2 final: 2008-04-27 ---------------------------- +-------------------------------------------------------------------------------- - Updated documentation - Added preprocessor options -=========================== +================================================================================ GLM 0.7.1 final: 2008-03-24 ---------------------------- +-------------------------------------------------------------------------------- - Disabled half on GCC - Fixed extensions -=========================== +================================================================================ GLM 0.7.0 final: 2008-03-22 ---------------------------- +-------------------------------------------------------------------------------- - Changed to MIT license - Added new documentation -=========================== +================================================================================ GLM 0.6.4 : 2007-12-10 ---------------------------- +-------------------------------------------------------------------------------- - Fixed swizzle operators -=========================== +================================================================================ GLM 0.6.3 : 2007-11-05 ---------------------------- +-------------------------------------------------------------------------------- - Fixed type data accesses - Fixed 3DSMax sdk conflict -=========================== +================================================================================ GLM 0.6.2 : 2007-10-08 ---------------------------- +-------------------------------------------------------------------------------- - Fixed extension -=========================== +================================================================================ GLM 0.6.1 : 2007-10-07 ---------------------------- +-------------------------------------------------------------------------------- - Fixed a namespace error - Added extensions -=========================== +================================================================================ GLM 0.6.0 : 2007-09-16 ---------------------------- +-------------------------------------------------------------------------------- - Added new extension namespace mecanium - Added Automatic compiler detection -=========================== +================================================================================ GLM 0.5.1 : 2007-02-19 ---------------------------- +-------------------------------------------------------------------------------- - Fixed swizzle operators -=========================== +================================================================================ GLM 0.5.0 : 2007-01-06 ---------------------------- +-------------------------------------------------------------------------------- - Upgrated to GLSL 1.2 - Added swizzle operators - Added setup settings -=========================== +================================================================================ GLM 0.4.1 : 2006-05-22 ---------------------------- +-------------------------------------------------------------------------------- - Added OpenGL examples -=========================== +================================================================================ GLM 0.4.0 : 2006-05-17 ---------------------------- +-------------------------------------------------------------------------------- - Added missing operators to vec* and mat* - Added first GLSL 1.2 features - Fixed windows.h before glm.h when windows.h required -=========================== +================================================================================ GLM 0.3.2 : 2006-04-21 ---------------------------- +-------------------------------------------------------------------------------- - Fixed texcoord components access. - Fixed mat4 and imat4 division operators. -=========================== +================================================================================ GLM 0.3.1 : 2006-03-28 ---------------------------- +-------------------------------------------------------------------------------- - Added GCC 4.0 support under MacOS X. - Added GCC 4.0 and 4.1 support under Linux. - Added code optimisations. -=========================== +================================================================================ GLM 0.3 : 2006-02-19 ---------------------------- +-------------------------------------------------------------------------------- - Improved GLSL type conversion and construction compliance. - Added experimental extensions. - Added Doxygen Documentation. - Added code optimisations. - Fixed bugs. -=========================== +================================================================================ GLM 0.2: 2005-05-05 ---------------------------- +-------------------------------------------------------------------------------- - Improve adaptative from GLSL. - Add experimental extensions based on OpenGL extension process. - Fixe bugs. -=========================== +================================================================================ GLM 0.1: 2005-02-21 ---------------------------- +-------------------------------------------------------------------------------- - Add vec2, vec3, vec4 GLSL types - Add ivec2, ivec3, ivec4 GLSL types - Add bvec2, bvec3, bvec4 GLSL types - Add mat2, mat3, mat4 GLSL types - Add almost all functions +================================================================================ diff --git a/test/gtx/gtx-simd-mat4.cpp b/test/gtx/gtx-simd-mat4.cpp index e9a56aae..ae976be5 100644 --- a/test/gtx/gtx-simd-mat4.cpp +++ b/test/gtx/gtx-simd-mat4.cpp @@ -28,7 +28,7 @@ std::vector test_detA(std::vector const & Data) Test[i] = glm::determinant(Data[i]); std::clock_t TimeEnd = clock(); - printf("Det A: %d\n", TimeEnd - TimeStart); + printf("Det A: %ld\n", TimeEnd - TimeStart); return Test; } @@ -49,7 +49,7 @@ std::vector test_detB(std::vector const & Data) } std::clock_t TimeEnd = clock(); - printf("Det B: %d\n", TimeEnd - TimeStart); + printf("Det B: %ld\n", TimeEnd - TimeStart); return Test; } @@ -70,7 +70,7 @@ std::vector test_detC(std::vector const & Data) } std::clock_t TimeEnd = clock(); - printf("Det C: %d\n", TimeEnd - TimeStart); + printf("Det C: %ld\n", TimeEnd - TimeStart); return Test; } @@ -91,7 +91,7 @@ std::vector test_detD(std::vector const & Data) } std::clock_t TimeEnd = clock(); - printf("Det D: %d\n", TimeEnd - TimeStart); + printf("Det D: %ld\n", TimeEnd - TimeStart); return Test; } @@ -109,7 +109,7 @@ void test_invA(std::vector const & Data, std::vector & Out } std::clock_t TimeEnd = clock(); - printf("Inv A: %d\n", TimeEnd - TimeStart); + printf("Inv A: %ld\n", TimeEnd - TimeStart); } void test_invC(std::vector const & Data, std::vector & Out) @@ -129,7 +129,7 @@ void test_invC(std::vector const & Data, std::vector & Out } std::clock_t TimeEnd = clock(); - printf("Inv C: %d\n", TimeEnd - TimeStart); + printf("Inv C: %ld\n", TimeEnd - TimeStart); } void test_invD(std::vector const & Data, std::vector & Out) @@ -149,7 +149,7 @@ void test_invD(std::vector const & Data, std::vector & Out } std::clock_t TimeEnd = clock(); - printf("Inv D: %d\n", TimeEnd - TimeStart); + printf("Inv D: %ld\n", TimeEnd - TimeStart); } void test_mulA(std::vector const & Data, std::vector & Out) @@ -165,7 +165,7 @@ void test_mulA(std::vector const & Data, std::vector & Out } std::clock_t TimeEnd = clock(); - printf("Mul A: %d\n", TimeEnd - TimeStart); + printf("Mul A: %ld\n", TimeEnd - TimeStart); } void test_mulD(std::vector const & Data, std::vector & Out) @@ -183,7 +183,7 @@ void test_mulD(std::vector const & Data, std::vector & Out } std::clock_t TimeEnd = clock(); - printf("Mul D: %d\n", TimeEnd - TimeStart); + printf("Mul D: %ld\n", TimeEnd - TimeStart); } int test_compute_glm() @@ -222,7 +222,7 @@ int test_compute_gtx() } std::clock_t TimeEnd = clock(); - printf("test_compute_gtx: %d\n", TimeEnd - TimeStart); + printf("test_compute_gtx: %ld\n", TimeEnd - TimeStart); return Output.size() != 0; } @@ -280,8 +280,8 @@ int main() Failed += test_compute_glm(); Failed += test_compute_gtx(); - float Det = glm::simdDeterminant(glm::simdMat4(1.0)); - glm::simdMat4 D = glm::simdMatrixCompMult(glm::simdMat4(1.0), glm::simdMat4(1.0)); + float Det = glm::determinant(glm::simdMat4(1.0)); + glm::simdMat4 D = glm::matrixCompMult(glm::simdMat4(1.0), glm::simdMat4(1.0)); system("pause");