Fixed merge

This commit is contained in:
Christophe Riccio 2011-02-08 12:10:15 +00:00
commit ac23e433f0
9 changed files with 240 additions and 115 deletions

View File

@ -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})

View File

@ -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

View File

@ -136,6 +136,14 @@ namespace glm
detail::tmat4x4<T> const & proj,
detail::tvec4<U> const & viewport);
//! Define a picking region
//! From GLM_GTC_matrix_transform extension.
template <typename T, typename U>
detail::tmat4x4<T> pickMatrix(
detail::tvec2<T> const & center,
detail::tvec2<T> const & delta,
detail::tvec4<U> const & viewport);
//! Build a look at view matrix.
//! From GLM_GTC_matrix_transform extension.
template <typename T>

View File

@ -324,6 +324,25 @@ namespace matrix_transform
return detail::tvec3<T>(obj);
}
template <typename T, typename U>
detail::tmat4x4<T> pickMatrix
(
detail::tvec2<T> const & center,
detail::tvec2<T> const & delta,
detail::tvec4<U> const & viewport
)
{
assert(delta.x > 0.0f && delta.y > 0.0f)
detail::tmat4x4<T> 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 <typename T>
inline detail::tmat4x4<T> lookAt(
const detail::tvec3<T>& eye,

View File

@ -154,7 +154,7 @@ namespace glm
detail::tquat<T> const & q1,
detail::tquat<T> 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 <typename T>
detail::tquat<T> mix(

View File

@ -369,6 +369,43 @@ namespace quaternion{
k0 * x.z + k1 * y2.z);
}
template <typename T>
inline detail::tquat<T> mix2
(
detail::tquat<T> const & x,
detail::tquat<T> 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 <typename T>
inline detail::tquat<T> conjugate
(

View File

@ -407,6 +407,27 @@ namespace glm
detail::fvec4SIMD const & N,
float const & eta);
//! Returns the positive square root of x.
//! (From GLM_GTX_simd_vec4 extension, exponential function)
detail::fvec4SIMD simdSqrt(
detail::fvec4SIMD const & x);
//! Returns the positive square root of x with an accuracy slight lower or equal than simdSqrt but much faster.
//! (From GLM_GTX_simd_vec4 extension, exponential function)
detail::fvec4SIMD simdFastSqrt(
detail::fvec4SIMD const & x);
//! Returns the reciprocal of the positive square root of x.
//! (From GLM_GTX_simd_vec4 extension, exponential function)
detail::fvec4SIMD simdInversesqrt(
detail::fvec4SIMD const & x);
//! Returns the reciprocal of the positive square root of x,
//! faster than simdInversesqrt but less accurate.
//! (From GLM_GTX_simd_vec4 extension, exponential function)
detail::fvec4SIMD simdFastInversesqrt(
detail::fvec4SIMD const & x);
///@}
}//namespace simd_vec4
}//namespace gtx

View File

@ -634,6 +634,34 @@ namespace glm
return detail::sse_rfa_ps(I.Data, N.Data, _mm_set1_ps(eta));
}
inline detail::fvec4SIMD simdSqrt(detail::fvec4SIMD const & x)
{
return _mm_sqrt_ps(x.Data);
}
inline detail::fvec4SIMD simdFastSqrt(detail::fvec4SIMD const & x)
{
}
// SSE scalar reciprocal sqrt using rsqrt op, plus one Newton-Rhaphson iteration
// By Elan Ruskin, http://assemblyrequired.crashworks.org/
inline detail::fvec4SIMD simdInversesqrt(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 simdFastInversesqrt(detail::fvec4SIMD const & x)
{
return _mm_rsqrt_ps(x.Data);
}
}//namespace simd_vec4
}//namespace gtx
}//namespace glm

View File

@ -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 <glm/glm.hpp>
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
================================================================================