Plasma Engine  2.0
Loading...
Searching...
No Matches
plSimdVec4f Class Reference

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
 
plSimdVec4foperator+= (const plSimdVec4f &v)
 
plSimdVec4foperator-= (const plSimdVec4f &v)
 
plSimdVec4foperator*= (const plSimdFloat &f)
 
plSimdVec4foperator/= (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
 

Detailed Description

A 4-component SIMD vector class.


The documentation for this class was generated from the following files: