ezEngine  Release 25.03
ezSimdVec4f Class Reference

A 4-component SIMD vector class. More...

#include <SimdVec4f.h>

Public Member Functions

 EZ_DECLARE_POD_TYPE ()
 
 ezSimdVec4f (float fXyzw)
 
 ezSimdVec4f (const ezSimdFloat &fXyzw)
 
 ezSimdVec4f (float x, float y, float z, float w=1.0f)
 
 ezSimdVec4f (ezInternal::QuadFloat v)
 
void Set (float fXyzw)
 
void Set (float x, float y, float z, float w)
 
void SetX (const ezSimdFloat &f)
 
void SetY (const ezSimdFloat &f)
 
void SetZ (const ezSimdFloat &f)
 
void SetW (const ezSimdFloat &f)
 
void SetZero ()
 
template<int N>
void Load (const float *pFloats)
 
template<int N>
void Store (float *pFloats) const
 
template<ezMathAcc::Enum acc = ezMathAcc::FULL>
ezSimdVec4f GetReciprocal () const
 
template<ezMathAcc::Enum acc = ezMathAcc::FULL>
ezSimdVec4f GetSqrt () const
 
template<ezMathAcc::Enum acc = ezMathAcc::FULL>
ezSimdVec4f GetInvSqrt () const
 
template<int N, ezMathAcc::Enum acc = ezMathAcc::FULL>
ezSimdFloat GetLength () const
 
template<int N, ezMathAcc::Enum acc = ezMathAcc::FULL>
ezSimdFloat GetInvLength () const
 
template<int N>
ezSimdFloat GetLengthSquared () const
 
template<int N, ezMathAcc::Enum acc = ezMathAcc::FULL>
ezSimdFloat GetLengthAndNormalize ()
 
template<int N, ezMathAcc::Enum acc = ezMathAcc::FULL>
ezSimdVec4f GetNormalized () const
 
template<int N, ezMathAcc::Enum acc = ezMathAcc::FULL>
void Normalize ()
 
template<int N, ezMathAcc::Enum acc = ezMathAcc::FULL>
void NormalizeIfNotZero (const ezSimdFloat &fEpsilon=ezMath::SmallEpsilon< float >())
 
template<int N>
bool IsZero () const
 
template<int N>
bool IsZero (const ezSimdFloat &fEpsilon) const
 
template<int N>
bool IsNormalized (const ezSimdFloat &fEpsilon=ezMath::HugeEpsilon< float >()) const
 
template<int N>
bool IsNaN () const
 
template<int N>
bool IsValid () const
 
template<int N>
ezSimdFloat GetComponent () const
 
ezSimdFloat GetComponent (int i) const
 
ezSimdFloat x () const
 
ezSimdFloat y () const
 
ezSimdFloat z () const
 
ezSimdFloat w () const
 
template<ezSwizzle::Enum s>
ezSimdVec4f Get () const
 
template<ezSwizzle::Enum s>
ezSimdVec4f GetCombined (const ezSimdVec4f &other) const
 x = this[s0], y = this[s1], z = other[s2], w = other[s3]
 
ezSimdVec4f operator- () const
 
ezSimdVec4f operator+ (const ezSimdVec4f &v) const
 
ezSimdVec4f operator- (const ezSimdVec4f &v) const
 
ezSimdVec4f operator* (const ezSimdFloat &f) const
 
ezSimdVec4f operator/ (const ezSimdFloat &f) const
 
ezSimdVec4f CompMul (const ezSimdVec4f &v) const
 
template<ezMathAcc::Enum acc = ezMathAcc::FULL>
ezSimdVec4f CompDiv (const ezSimdVec4f &v) const
 
ezSimdVec4f CompMin (const ezSimdVec4f &rhs) const
 
ezSimdVec4f CompMax (const ezSimdVec4f &rhs) const
 
ezSimdVec4f Abs () const
 
ezSimdVec4f Round () const
 
ezSimdVec4f Floor () const
 
ezSimdVec4f Ceil () const
 
ezSimdVec4f Trunc () const
 
ezSimdVec4f Fraction () const
 
ezSimdVec4f FlipSign (const ezSimdVec4b &vCmp) const
 
ezSimdVec4foperator+= (const ezSimdVec4f &v)
 
ezSimdVec4foperator-= (const ezSimdVec4f &v)
 
ezSimdVec4foperator*= (const ezSimdFloat &f)
 
ezSimdVec4foperator/= (const ezSimdFloat &f)
 
ezSimdVec4b IsEqual (const ezSimdVec4f &rhs, const ezSimdFloat &fEpsilon) const
 
ezSimdVec4b operator== (const ezSimdVec4f &v) const
 
ezSimdVec4b operator!= (const ezSimdVec4f &v) const
 
ezSimdVec4b operator<= (const ezSimdVec4f &v) const
 
ezSimdVec4b operator< (const ezSimdVec4f &v) const
 
ezSimdVec4b operator>= (const ezSimdVec4f &v) const
 
ezSimdVec4b operator> (const ezSimdVec4f &v) const
 
template<int N>
ezSimdFloat HorizontalSum () const
 
template<int N>
ezSimdFloat HorizontalMin () const
 
template<int N>
ezSimdFloat HorizontalMax () const
 
template<int N>
ezSimdFloat Dot (const ezSimdVec4f &v) const
 
ezSimdVec4f CrossRH (const ezSimdVec4f &v) const
 3D cross product, w is ignored.
 
ezSimdVec4f GetOrthogonalVector () const
 Generates an arbitrary vector such that Dot<3>(GetOrthogonalVector()) == 0.
 
template<int N>
EZ_ALWAYS_INLINE void Load (const float *pFloats)
 
template<int N>
EZ_ALWAYS_INLINE void Store (float *pFloats) const
 
template<ezMathAcc::Enum acc>
EZ_ALWAYS_INLINE ezSimdVec4f GetReciprocal () const
 
template<ezMathAcc::Enum acc>
EZ_ALWAYS_INLINE ezSimdVec4f GetSqrt () const
 
template<int N>
EZ_ALWAYS_INLINE bool IsZero () const
 
template<int N>
EZ_ALWAYS_INLINE bool IsZero (const ezSimdFloat &fEpsilon) const
 
template<int N>
EZ_ALWAYS_INLINE bool IsNaN () const
 
template<int N>
EZ_ALWAYS_INLINE bool IsValid () const
 
template<int N>
EZ_ALWAYS_INLINE ezSimdFloat GetComponent () const
 
template<ezSwizzle::Enum s>
EZ_ALWAYS_INLINE ezSimdVec4f Get () const
 
template<ezSwizzle::Enum s>
EZ_ALWAYS_INLINE ezSimdVec4f GetCombined (const ezSimdVec4f &other) const
 
template<ezMathAcc::Enum acc>
EZ_ALWAYS_INLINE ezSimdVec4f CompDiv (const ezSimdVec4f &v) const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMax () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMax () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMax () const
 
template<int N>
EZ_ALWAYS_INLINE ezSimdFloat Dot (const ezSimdVec4f &v) const
 
template<>
EZ_ALWAYS_INLINE void Load (const float *pFloat)
 
template<>
EZ_ALWAYS_INLINE void Load (const float *pFloat)
 
template<>
EZ_ALWAYS_INLINE void Load (const float *pFloat)
 
template<>
EZ_ALWAYS_INLINE void Load (const float *pFloat)
 
template<>
EZ_ALWAYS_INLINE void Store (float *pFloat) const
 
template<>
EZ_ALWAYS_INLINE void Store (float *pFloat) const
 
template<>
EZ_ALWAYS_INLINE void Store (float *pFloat) const
 
template<>
EZ_ALWAYS_INLINE void Store (float *pFloat) const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMax () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMax () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMax () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat Dot (const ezSimdVec4f &v) const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat Dot (const ezSimdVec4f &v) const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat Dot (const ezSimdVec4f &v) const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat Dot (const ezSimdVec4f &v) const
 
template<int N, ezMathAcc::Enum acc>
EZ_ALWAYS_INLINE ezSimdFloat GetLength () const
 
template<int N, ezMathAcc::Enum acc>
EZ_ALWAYS_INLINE ezSimdFloat GetInvLength () const
 
template<int N>
EZ_ALWAYS_INLINE ezSimdFloat GetLengthSquared () const
 
template<int N, ezMathAcc::Enum acc>
EZ_ALWAYS_INLINE ezSimdFloat GetLengthAndNormalize ()
 
template<int N, ezMathAcc::Enum acc>
EZ_ALWAYS_INLINE ezSimdVec4f GetNormalized () const
 
template<int N, ezMathAcc::Enum acc>
EZ_ALWAYS_INLINE void Normalize ()
 
template<int N>
EZ_ALWAYS_INLINE bool IsNormalized (const ezSimdFloat &fEpsilon) const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMax () const
 
template<>
EZ_ALWAYS_INLINE void Load (const float *pFloat)
 
template<>
EZ_ALWAYS_INLINE void Load (const float *pFloat)
 
template<>
EZ_ALWAYS_INLINE void Load (const float *pFloat)
 
template<>
EZ_ALWAYS_INLINE void Load (const float *pFloat)
 
template<>
EZ_ALWAYS_INLINE void Store (float *pFloat) const
 
template<>
EZ_ALWAYS_INLINE void Store (float *pFloat) const
 
template<>
EZ_ALWAYS_INLINE void Store (float *pFloat) const
 
template<>
EZ_ALWAYS_INLINE void Store (float *pFloat) const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMax () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMax () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat HorizontalMax () const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat Dot (const ezSimdVec4f &v) const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat Dot (const ezSimdVec4f &v) const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat Dot (const ezSimdVec4f &v) const
 
template<>
EZ_ALWAYS_INLINE ezSimdFloat Dot (const ezSimdVec4f &v) const
 

Static Public Member Functions

static ezSimdVec4f MakeZero ()
 Creates an ezSimdVec4f that is initialized to zero.
 
static ezSimdVec4f MakeNaN ()
 Creates an ezSimdVec4f that is initialized to Not-A-Number (NaN).
 
static ezSimdVec4f Select (const ezSimdVec4b &vCmp, const ezSimdVec4f &vTrue, const ezSimdVec4f &vFalse)
 
static ezSimdVec4f Lerp (const ezSimdVec4f &a, const ezSimdVec4f &b, const ezSimdVec4f &t)
 
static ezSimdVec4f MulAdd (const ezSimdVec4f &a, const ezSimdVec4f &b, const ezSimdVec4f &c)
 
static ezSimdVec4f MulAdd (const ezSimdVec4f &a, const ezSimdFloat &b, const ezSimdVec4f &c)
 
static ezSimdVec4f MulSub (const ezSimdVec4f &a, const ezSimdVec4f &b, const ezSimdVec4f &c)
 
static ezSimdVec4f MulSub (const ezSimdVec4f &a, const ezSimdFloat &b, const ezSimdVec4f &c)
 
static ezSimdVec4f CopySign (const ezSimdVec4f &vMagnitude, const ezSimdVec4f &vSign)
 

Public Attributes

ezInternal::QuadFloat m_v
 

Detailed Description

A 4-component SIMD vector class.


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