diff options
author | James Cook <james@lindenlab.com> | 2007-07-02 23:52:40 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2007-07-02 23:52:40 +0000 |
commit | 1a33bc19b4ce94ab210749911dff14409b4454dd (patch) | |
tree | b674d97d37240a29c0a6671adfe950a506ef0ea4 /indra/llmath/llv4vector3.h | |
parent | e5124431b54d4342d4677371fccca5bc7250c079 (diff) |
svn merge -r 62595:62596 and 62598:63308 sse-skinning-3 for faster software avatar rendering. Visual Studio 2005 project file fixed pending.
Diffstat (limited to 'indra/llmath/llv4vector3.h')
-rw-r--r-- | indra/llmath/llv4vector3.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/indra/llmath/llv4vector3.h b/indra/llmath/llv4vector3.h new file mode 100644 index 0000000000..7bf8c5ce91 --- /dev/null +++ b/indra/llmath/llv4vector3.h @@ -0,0 +1,62 @@ +/** + * @file llviewerjointmesh.cpp + * @brief LLV4* class header file - vector processor enabled math + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#ifndef LL_LLV4VECTOR3_H +#define LL_LLV4VECTOR3_H + +#include "llv4math.h" + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +// LLV4Vector3 +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- + +LL_LLV4MATH_ALIGN_PREFIX + +class LLV4Vector3 +{ +public: + union { + F32 mV[LLV4_NUM_AXIS]; + V4F32 v; + }; + + enum { + ALIGNMENT = 16 + }; + + void setVec(F32 x, F32 y, F32 z); + void setVec(F32 a); +} + +LL_LLV4MATH_ALIGN_POSTFIX; + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +// LLV4Vector3 +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- + +inline void LLV4Vector3::setVec(F32 x, F32 y, F32 z) +{ + mV[VX] = x; + mV[VY] = y; + mV[VZ] = z; +} + +inline void LLV4Vector3::setVec(F32 a) +{ +#if LL_VECTORIZE + v = _mm_set1_ps(a); +#else + setVec(a, a, a); +#endif +} + +#endif |