23 Commits

Author SHA1 Message Date
Jesse Talavera-Greenberg
d1cdb46cfb Wrap tquat's, simdQuat's and simdVec4's static constants in GLM_STATIC_CONST_MEMBERS
- Also, fixed indentation
2015-10-05 18:27:07 -04:00
Jesse Talavera-Greenberg
a92ed0cdf5 Add static constants to quat, simdVec4, and simdQuat
- No tests, though
2015-10-02 18:36:27 -04:00
Christophe Riccio
afa193704c Fixed interactions with GLM_FORCE_NO_CTOR_INIT and default functions #366 2015-07-25 23:23:59 +02:00
Christophe Riccio
fc8b4404f0 Fixed faceforward build #289 2014-12-19 23:54:25 +01:00
Christophe Riccio
3f48ffefb0 Updated license 2014-11-26 00:27:12 +01:00
Christophe Riccio
bcd07b50f3 - Added GLM_FORCE_NO_CTOR_INIT 2014-10-19 03:33:14 +02:00
Christophe Riccio
f9484a6e9f - Moved template types from 'detail' to 'glm' namespace #239, #244 2014-10-05 19:37:07 +02:00
Christophe Riccio
10778448ef Fixed merge 2014-04-02 01:31:36 +02:00
David Reid
04d9fa2d45 Fix simd_quat build. 2014-03-21 18:49:27 +10:00
Christophe Riccio
8a5603342c Merge 0.9.5 2014-01-11 23:49:08 +01:00
Christophe Riccio
ccb25c84c7 Update copyright year 2014-01-04 22:32:28 +01:00
Christophe Riccio
0d5deadf02 Removed GLM_FORCE_RADIANS, now it's the default behaviour 2013-12-26 19:15:48 +01:00
Christophe Riccio
1909f512e7 Deprecated degrees, display a message for each function using it. 2013-12-26 18:58:44 +01:00
Christophe Riccio
b9266c07b0 Using C++ casts 2013-09-08 00:22:17 +02:00
Dave Reid
e0cfd7d672 Attempt a small optimization in operator*(fquatSIMD, fvec4SIMD). No big improvement. 2013-04-24 15:00:03 +10:00
Dave Reid
c08ea7656b Reorganize operator* to makes things a bit clearer. 2013-04-24 14:46:20 +10:00
Dave Reid
1eb88e4bc1 Cleanup. 2013-04-24 14:06:28 +10:00
Dave Reid
c1006718b3 Add fastMix() and fastSlerp() implementations.
These have stricter pre-conditions than standard mix() and slerp()
  - 1) Input quaternions must be unit length.
  - 2) The interpolation factor (a) must be in the range [0, 1]

None of these restrictions should be too bad. The reason for these is that it uses fastAcos()
and fastSin(), both of which have a limited allowable range.

In my contrived tests, I observed about a 10x improvement over the standard versions. This is
mostly because of the faster acos/sin operations. The fastSin(__m128) implementation also helps
here because it can do four fastSin() operations simultaneously using SSE (mix() and slerp()
each need three).
2013-04-24 13:55:38 +10:00
Dave Reid
d07496460a Add the ability to convert a SIMD quat to a standard mat4. 2013-04-24 09:54:28 +10:00
Dave Reid
942bf08fe3 Add the ability to convert standard mat4s and mat3s to SIMD quats. 2013-04-24 09:39:22 +10:00
Dave Reid
13837e1079 Remove the SSE3 implementation in operator*(fquatSIMD, fquatSIMD).
The SSE2 version is now running faster than the SSE3 version.
2013-04-24 08:51:17 +10:00
Dave Reid
197b6c96d8 Improve efficiency of operator*(fquatSIMD, fquatSIMD) in SSE4 mode.
Now only requires 3 shuffle, 4 mul and 4 dpps.
2013-04-24 07:58:41 +10:00
Dave Reid
7563a8bc4d Add initial implementation of SIMD optimized quaternions.
A few things here can probably be improved by people a lot smarter then
me, but for the most part things are generally faster.

A few notes:
 - A fquatSIMD can be converted to a fmat4x4SIMD using mat4SIMD_cast().
 - A tquat<float> can be converted to a fquatSIMD using quatSIMD_cast().
 - Some functions are virtually the same as their scalar counterparts
   because I've just not been able to get them faster.
 - Only the basic functions are implemented. Future plans include fast,
   approximate normalize, length and mix/slerp functions.
2013-04-23 15:36:12 +10:00