![]() |
Plasma Engine
2.0
|
A 4-component SIMD vector class. More...
#include <SimdVec4f.h>
Public Member Functions | |
PL_DECLARE_POD_TYPE () | |
plSimdVec4f (float fXyzw) | |
plSimdVec4f (const plSimdFloat &fXyzw) | |
plSimdVec4f (float x, float y, float z, float w=1.0f) | |
plSimdVec4f (plInternal::QuadFloat v) | |
void | Set (float fXyzw) |
void | Set (float x, float y, float z, float w) |
void | SetX (const plSimdFloat &f) |
void | SetY (const plSimdFloat &f) |
void | SetZ (const plSimdFloat &f) |
void | SetW (const plSimdFloat &f) |
void | SetZero () |
template<int N> | |
void | Load (const float *pFloats) |
template<int N> | |
void | Store (float *pFloats) const |
template<plMathAcc::Enum acc = plMathAcc::FULL> | |
plSimdVec4f | GetReciprocal () const |
template<plMathAcc::Enum acc = plMathAcc::FULL> | |
plSimdVec4f | GetSqrt () const |
template<plMathAcc::Enum acc = plMathAcc::FULL> | |
plSimdVec4f | GetInvSqrt () const |
template<int N, plMathAcc::Enum acc = plMathAcc::FULL> | |
plSimdFloat | GetLength () const |
template<int N, plMathAcc::Enum acc = plMathAcc::FULL> | |
plSimdFloat | GetInvLength () const |
template<int N> | |
plSimdFloat | GetLengthSquared () const |
template<int N, plMathAcc::Enum acc = plMathAcc::FULL> | |
plSimdFloat | GetLengthAndNormalize () |
template<int N, plMathAcc::Enum acc = plMathAcc::FULL> | |
plSimdVec4f | GetNormalized () const |
template<int N, plMathAcc::Enum acc = plMathAcc::FULL> | |
void | Normalize () |
template<int N, plMathAcc::Enum acc = plMathAcc::FULL> | |
void | NormalizeIfNotZero (const plSimdFloat &fEpsilon=plMath::SmallEpsilon< float >()) |
template<int N> | |
bool | IsZero () const |
template<int N> | |
bool | IsZero (const plSimdFloat &fEpsilon) const |
template<int N> | |
bool | IsNormalized (const plSimdFloat &fEpsilon=plMath::HugeEpsilon< float >()) const |
template<int N> | |
bool | IsNaN () const |
template<int N> | |
bool | IsValid () const |
template<int N> | |
plSimdFloat | GetComponent () const |
plSimdFloat | GetComponent (int i) const |
plSimdFloat | x () const |
plSimdFloat | y () const |
plSimdFloat | z () const |
plSimdFloat | w () const |
template<plSwizzle::Enum s> | |
plSimdVec4f | Get () const |
template<plSwizzle::Enum s> | |
plSimdVec4f | GetCombined (const plSimdVec4f &other) const |
x = this[s0], y = this[s1], z = other[s2], w = other[s3] | |
plSimdVec4f | operator- () const |
plSimdVec4f | operator+ (const plSimdVec4f &v) const |
plSimdVec4f | operator- (const plSimdVec4f &v) const |
plSimdVec4f | operator* (const plSimdFloat &f) const |
plSimdVec4f | operator/ (const plSimdFloat &f) const |
plSimdVec4f | CompMul (const plSimdVec4f &v) const |
template<plMathAcc::Enum acc = plMathAcc::FULL> | |
plSimdVec4f | CompDiv (const plSimdVec4f &v) const |
plSimdVec4f | CompMin (const plSimdVec4f &rhs) const |
plSimdVec4f | CompMax (const plSimdVec4f &rhs) const |
plSimdVec4f | Abs () const |
plSimdVec4f | Round () const |
plSimdVec4f | Floor () const |
plSimdVec4f | Ceil () const |
plSimdVec4f | Trunc () const |
plSimdVec4f | Fraction () const |
plSimdVec4f | FlipSign (const plSimdVec4b &vCmp) const |
plSimdVec4f & | operator+= (const plSimdVec4f &v) |
plSimdVec4f & | operator-= (const plSimdVec4f &v) |
plSimdVec4f & | operator*= (const plSimdFloat &f) |
plSimdVec4f & | operator/= (const plSimdFloat &f) |
plSimdVec4b | IsEqual (const plSimdVec4f &rhs, const plSimdFloat &fEpsilon) const |
plSimdVec4b | operator== (const plSimdVec4f &v) const |
plSimdVec4b | operator!= (const plSimdVec4f &v) const |
plSimdVec4b | operator<= (const plSimdVec4f &v) const |
plSimdVec4b | operator< (const plSimdVec4f &v) const |
plSimdVec4b | operator>= (const plSimdVec4f &v) const |
plSimdVec4b | operator> (const plSimdVec4f &v) const |
template<int N> | |
plSimdFloat | HorizontalSum () const |
template<int N> | |
plSimdFloat | HorizontalMin () const |
template<int N> | |
plSimdFloat | HorizontalMax () const |
template<int N> | |
plSimdFloat | Dot (const plSimdVec4f &v) const |
plSimdVec4f | CrossRH (const plSimdVec4f &v) const |
3D cross product, w is ignored. | |
plSimdVec4f | GetOrthogonalVector () const |
Generates an arbitrary vector such that Dot<3>(GetOrthogonalVector()) == 0. | |
template<int N> | |
PL_ALWAYS_INLINE void | Load (const float *pFloats) |
template<int N> | |
PL_ALWAYS_INLINE void | Store (float *pFloats) const |
template<plMathAcc::Enum acc> | |
PL_ALWAYS_INLINE plSimdVec4f | GetReciprocal () const |
template<plMathAcc::Enum acc> | |
PL_ALWAYS_INLINE plSimdVec4f | GetSqrt () const |
template<int N> | |
PL_ALWAYS_INLINE bool | IsZero () const |
template<int N> | |
PL_ALWAYS_INLINE bool | IsZero (const plSimdFloat &fEpsilon) const |
template<int N> | |
PL_ALWAYS_INLINE bool | IsNaN () const |
template<int N> | |
PL_ALWAYS_INLINE bool | IsValid () const |
template<int N> | |
PL_ALWAYS_INLINE plSimdFloat | GetComponent () const |
template<plSwizzle::Enum s> | |
PL_ALWAYS_INLINE plSimdVec4f | Get () const |
template<plSwizzle::Enum s> | |
PL_ALWAYS_INLINE plSimdVec4f | GetCombined (const plSimdVec4f &other) const |
template<plMathAcc::Enum acc> | |
PL_ALWAYS_INLINE plSimdVec4f | CompDiv (const plSimdVec4f &v) const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalSum () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalSum () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalSum () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMin () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMin () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMin () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMax () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMax () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMax () const |
template<int N> | |
PL_ALWAYS_INLINE plSimdFloat | Dot (const plSimdVec4f &v) const |
template<> | |
PL_ALWAYS_INLINE void | Load (const float *pFloat) |
template<> | |
PL_ALWAYS_INLINE void | Load (const float *pFloat) |
template<> | |
PL_ALWAYS_INLINE void | Load (const float *pFloat) |
template<> | |
PL_ALWAYS_INLINE void | Load (const float *pFloat) |
template<> | |
PL_ALWAYS_INLINE void | Store (float *pFloat) const |
template<> | |
PL_ALWAYS_INLINE void | Store (float *pFloat) const |
template<> | |
PL_ALWAYS_INLINE void | Store (float *pFloat) const |
template<> | |
PL_ALWAYS_INLINE void | Store (float *pFloat) const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalSum () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalSum () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalSum () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMin () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMin () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMin () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMax () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMax () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMax () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | Dot (const plSimdVec4f &v) const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | Dot (const plSimdVec4f &v) const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | Dot (const plSimdVec4f &v) const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | Dot (const plSimdVec4f &v) const |
template<int N, plMathAcc::Enum acc> | |
PL_ALWAYS_INLINE plSimdFloat | GetLength () const |
template<int N, plMathAcc::Enum acc> | |
PL_ALWAYS_INLINE plSimdFloat | GetInvLength () const |
template<int N> | |
PL_ALWAYS_INLINE plSimdFloat | GetLengthSquared () const |
template<int N, plMathAcc::Enum acc> | |
PL_ALWAYS_INLINE plSimdFloat | GetLengthAndNormalize () |
template<int N, plMathAcc::Enum acc> | |
PL_ALWAYS_INLINE plSimdVec4f | GetNormalized () const |
template<int N, plMathAcc::Enum acc> | |
PL_ALWAYS_INLINE void | Normalize () |
template<int N> | |
PL_ALWAYS_INLINE bool | IsNormalized (const plSimdFloat &fEpsilon) const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalSum () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMin () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMax () const |
template<> | |
PL_ALWAYS_INLINE void | Load (const float *pFloat) |
template<> | |
PL_ALWAYS_INLINE void | Load (const float *pFloat) |
template<> | |
PL_ALWAYS_INLINE void | Load (const float *pFloat) |
template<> | |
PL_ALWAYS_INLINE void | Load (const float *pFloat) |
template<> | |
PL_ALWAYS_INLINE void | Store (float *pFloat) const |
template<> | |
PL_ALWAYS_INLINE void | Store (float *pFloat) const |
template<> | |
PL_ALWAYS_INLINE void | Store (float *pFloat) const |
template<> | |
PL_ALWAYS_INLINE void | Store (float *pFloat) const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalSum () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalSum () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalSum () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMin () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMin () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMin () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMax () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMax () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | HorizontalMax () const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | Dot (const plSimdVec4f &v) const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | Dot (const plSimdVec4f &v) const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | Dot (const plSimdVec4f &v) const |
template<> | |
PL_ALWAYS_INLINE plSimdFloat | Dot (const plSimdVec4f &v) const |
Static Public Member Functions | |
static plSimdVec4f | MakeZero () |
Creates an plSimdVec4f that is initialized to zero. | |
static plSimdVec4f | MakeNaN () |
Creates an plSimdVec4f that is initialized to Not-A-Number (NaN). | |
static plSimdVec4f | Select (const plSimdVec4b &vCmp, const plSimdVec4f &vTrue, const plSimdVec4f &vFalse) |
static plSimdVec4f | Lerp (const plSimdVec4f &a, const plSimdVec4f &b, const plSimdVec4f &t) |
static plSimdVec4f | MulAdd (const plSimdVec4f &a, const plSimdVec4f &b, const plSimdVec4f &c) |
static plSimdVec4f | MulAdd (const plSimdVec4f &a, const plSimdFloat &b, const plSimdVec4f &c) |
static plSimdVec4f | MulSub (const plSimdVec4f &a, const plSimdVec4f &b, const plSimdVec4f &c) |
static plSimdVec4f | MulSub (const plSimdVec4f &a, const plSimdFloat &b, const plSimdVec4f &c) |
static plSimdVec4f | CopySign (const plSimdVec4f &vMagnitude, const plSimdVec4f &vSign) |
Public Attributes | |
plInternal::QuadFloat | m_v |
A 4-component SIMD vector class.