ezEngine Release 26.3
Loading...
Searching...
No Matches
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)
 Loads N floats from pFloats into the vector. N must be between 1 and 4. Unused components are set to zero.
 
template<int N>
void Store (float *pFloats) const
 Stores the first N components to pFloats. N must be between 1 and 4.
 
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 >())
 Normalizes the first N components if the squared length is greater than fEpsilon, otherwise sets the vector to zero.
 
template<int N, ezMathAcc::Enum acc = ezMathAcc::FULL>
void NormalizeIfNotZero (const ezSimdVec4f &vFallback, const ezSimdFloat &fEpsilon=ezMath::SmallEpsilon< float >())
 Normalizes the first N components if the squared length is greater than fEpsilon, otherwise sets the vector to vFallback.
 
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
 Creates an ezSimdFloat with all elements set to the given component.
 
ezSimdFloat GetComponent (int i) const
 Creates an ezSimdFloat with all elements set to the given component.
 
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
 Returns the sum of the first N components.
 
template<int N>
ezSimdFloat HorizontalMin () const
 Returns the minimum of the first N components.
 
template<int N>
ezSimdFloat HorizontalMax () const
 Returns the maximum of the first N components.
 
template<int N>
ezSimdFloat Dot (const ezSimdVec4f &v) const
 Returns the dot product of the first N components of this vector and v.
 
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, ezMathAcc::Enum acc>
EZ_ALWAYS_INLINE void NormalizeIfNotZero (const ezSimdVec4f &vFallback, const ezSimdFloat &fEpsilon)
 
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)
 Returns a * b + 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)
 Returns a * b - c.
 
static ezSimdVec4f MulSub (const ezSimdVec4f &a, const ezSimdFloat &b, const ezSimdVec4f &c)
 
static ezSimdVec4f CopySign (const ezSimdVec4f &vMagnitude, const ezSimdVec4f &vSign)
 Returns a vector with the magnitude from vMagnitude and the sign from 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: