![]() |
ezEngine Release 26.3
|
A 4-component SIMD vector class using doubles. More...
#include <SimdVec4d.h>
Public Member Functions | |
| EZ_DECLARE_POD_TYPE () | |
| ezSimdVec4d (float fXyzw) | |
| ezSimdVec4d (double fXyzw) | |
| ezSimdVec4d (const ezSimdDouble &fXyzw) | |
| ezSimdVec4d (int x, int y, int z, int w=1) | |
| ezSimdVec4d (float x, float y, float z, float w=1.0f) | |
| ezSimdVec4d (double x, double y, double z, double w=1.0) | |
| ezSimdVec4d (ezInternal::QuadDouble v) | |
| void | Set (float fXyzw) |
| void | Set (double fXyzw) |
| void | Set (int x, int y, int z, int w) |
| void | Set (float x, float y, float z, float w) |
| void | Set (double x, double y, double z, double w) |
| void | SetX (const ezSimdDouble &f) |
| void | SetY (const ezSimdDouble &f) |
| void | SetZ (const ezSimdDouble &f) |
| void | SetW (const ezSimdDouble &f) |
| void | SetZero () |
| template<int N> | |
| void | Load (const float *pFloats) |
| Loads N floats from pFloats, converts them to double, and stores in the vector. N must be between 1 and 4. Unused components are set to zero. | |
| template<int N> | |
| void | Load (const double *pDoubles) |
| Loads N doubles from pDoubles into the vector. N must be between 1 and 4. Unused components are set to zero. | |
| template<int N> | |
| void | Store (float *pFloats) const |
| Converts the first N components to float and stores them to pFloats. N must be between 1 and 4. | |
| template<int N> | |
| void | Store (double *pDoubles) const |
| Stores the first N components to pDoubles. N must be between 1 and 4. | |
| ezSimdVec4d | GetReciprocal () const |
| ezSimdVec4d | GetSqrt () const |
| ezSimdVec4d | GetInvSqrt () const |
| template<int N> | |
| ezSimdDouble | GetLength () const |
| template<int N> | |
| ezSimdDouble | GetInvLength () const |
| template<int N> | |
| ezSimdDouble | GetLengthSquared () const |
| template<int N> | |
| ezSimdDouble | GetLengthAndNormalize () |
| template<int N> | |
| ezSimdVec4d | GetNormalized () const |
| template<int N> | |
| void | Normalize () |
| template<int N> | |
| void | NormalizeIfNotZero (const ezSimdDouble &fEpsilon=ezMath::SmallEpsilon< double >()) |
| Normalizes the first N components if the squared length is greater than fEpsilon, otherwise sets the vector to zero. | |
| template<int N> | |
| void | NormalizeIfNotZero (const ezSimdVec4d &vFallback, const ezSimdDouble &fEpsilon=ezMath::SmallEpsilon< double >()) |
| 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 ezSimdDouble &fEpsilon) const |
| template<int N> | |
| bool | IsNormalized (const ezSimdDouble &fEpsilon=ezMath::HugeEpsilon< double >()) const |
| template<int N> | |
| bool | IsNaN () const |
| template<int N> | |
| bool | IsValid () const |
| template<int N> | |
| ezSimdDouble | GetComponent () const |
| ezSimdDouble | GetComponent (int i) const |
| ezSimdDouble | x () const |
| ezSimdDouble | y () const |
| ezSimdDouble | z () const |
| ezSimdDouble | w () const |
| template<ezSwizzle::Enum s> | |
| ezSimdVec4d | Get () const |
| template<ezSwizzle::Enum s> | |
| ezSimdVec4d | GetCombined (const ezSimdVec4d &other) const |
| x = this[s0], y = this[s1], z = other[s2], w = other[s3] | |
| ezSimdVec4d | operator- () const |
| ezSimdVec4d | operator+ (const ezSimdVec4d &v) const |
| ezSimdVec4d | operator- (const ezSimdVec4d &v) const |
| ezSimdVec4d | operator* (const ezSimdDouble &f) const |
| ezSimdVec4d | operator/ (const ezSimdDouble &f) const |
| ezSimdVec4d | CompMul (const ezSimdVec4d &v) const |
| ezSimdVec4d | CompDiv (const ezSimdVec4d &v) const |
| ezSimdVec4d | CompMin (const ezSimdVec4d &rhs) const |
| ezSimdVec4d | CompMax (const ezSimdVec4d &rhs) const |
| ezSimdVec4d | Abs () const |
| ezSimdVec4d | Round () const |
| ezSimdVec4d | Floor () const |
| ezSimdVec4d | Ceil () const |
| ezSimdVec4d | Trunc () const |
| ezSimdVec4d | Fraction () const |
| ezSimdVec4d | FlipSign (const ezSimdVec4bWide &vCmp) const |
| ezSimdVec4d & | operator+= (const ezSimdVec4d &v) |
| ezSimdVec4d & | operator-= (const ezSimdVec4d &v) |
| ezSimdVec4d & | operator*= (const ezSimdDouble &f) |
| ezSimdVec4d & | operator/= (const ezSimdDouble &f) |
| ezSimdVec4bWide | IsEqual (const ezSimdVec4d &rhs, const ezSimdDouble &fEpsilon) const |
| ezSimdVec4bWide | operator== (const ezSimdVec4d &v) const |
| ezSimdVec4bWide | operator!= (const ezSimdVec4d &v) const |
| ezSimdVec4bWide | operator<= (const ezSimdVec4d &v) const |
| ezSimdVec4bWide | operator< (const ezSimdVec4d &v) const |
| ezSimdVec4bWide | operator>= (const ezSimdVec4d &v) const |
| ezSimdVec4bWide | operator> (const ezSimdVec4d &v) const |
| template<int N> | |
| ezSimdDouble | HorizontalSum () const |
| Returns the sum of the first N components. | |
| template<int N> | |
| ezSimdDouble | HorizontalMin () const |
| Returns the minimum of the first N components. | |
| template<int N> | |
| ezSimdDouble | HorizontalMax () const |
| Returns the maximum of the first N components. | |
| template<int N> | |
| ezSimdDouble | Dot (const ezSimdVec4d &v) const |
| Returns the dot product of the first N components of this vector and v. | |
| ezSimdVec4d | CrossRH (const ezSimdVec4d &v) const |
| 3D cross product, w is ignored. | |
| ezSimdVec4d | GetOrthogonalVector () const |
| Generates an arbitrary vector such that Dot<3>(GetOrthogonalVector()) == 0. | |
| template<int N> | |
| EZ_ALWAYS_INLINE void | Load (const double *pDoubles) |
| template<int N> | |
| EZ_ALWAYS_INLINE void | Store (double *pDoubles) const |
| template<int N> | |
| EZ_ALWAYS_INLINE void | Load (const float *pFloats) |
| template<int N> | |
| EZ_ALWAYS_INLINE void | Store (float *pFloats) const |
| template<int N> | |
| EZ_ALWAYS_INLINE bool | IsZero () const |
| template<int N> | |
| EZ_ALWAYS_INLINE bool | IsZero (const ezSimdDouble &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 ezSimdDouble | GetComponent () const |
| template<ezSwizzle::Enum s> | |
| EZ_ALWAYS_INLINE ezSimdVec4d | Get () const |
| template<ezSwizzle::Enum s> | |
| EZ_ALWAYS_INLINE ezSimdVec4d | GetCombined (const ezSimdVec4d &other) const |
| x = this[s0], y = this[s1], z = other[s2], w = other[s3] | |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalSum () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalSum () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalSum () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalMin () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalMin () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalMin () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalMax () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalMax () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalMax () const |
| template<int N> | |
| EZ_ALWAYS_INLINE ezSimdDouble | Dot (const ezSimdVec4d &v) const |
| template<> | |
| EZ_ALWAYS_INLINE void | Load (const double *pDoubles) |
| template<> | |
| EZ_ALWAYS_INLINE void | Load (const double *pDoubles) |
| template<> | |
| EZ_ALWAYS_INLINE void | Load (const double *pDoubles) |
| template<> | |
| EZ_ALWAYS_INLINE void | Load (const double *pDoubles) |
| template<> | |
| EZ_ALWAYS_INLINE void | Load (const float *pFloats) |
| template<> | |
| EZ_ALWAYS_INLINE void | Load (const float *pFloats) |
| template<> | |
| EZ_ALWAYS_INLINE void | Load (const float *pFloats) |
| template<> | |
| EZ_ALWAYS_INLINE void | Load (const float *pFloats) |
| template<> | |
| EZ_ALWAYS_INLINE void | Store (double *pDoubles) const |
| template<> | |
| EZ_ALWAYS_INLINE void | Store (double *pDoubles) const |
| template<> | |
| EZ_ALWAYS_INLINE void | Store (double *pDoubles) const |
| template<> | |
| EZ_ALWAYS_INLINE void | Store (double *pDoubles) const |
| template<> | |
| EZ_ALWAYS_INLINE void | Store (float *pFloats) const |
| template<> | |
| EZ_ALWAYS_INLINE void | Store (float *pFloats) const |
| template<> | |
| EZ_ALWAYS_INLINE void | Store (float *pFloats) const |
| template<> | |
| EZ_ALWAYS_INLINE void | Store (float *pFloats) const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalSum () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalSum () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalSum () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalMin () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalMin () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalMin () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalMax () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalMax () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalMax () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | Dot (const ezSimdVec4d &v) const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | Dot (const ezSimdVec4d &v) const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | Dot (const ezSimdVec4d &v) const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | Dot (const ezSimdVec4d &v) const |
| template<int N> | |
| EZ_ALWAYS_INLINE ezSimdDouble | GetLength () const |
| template<int N> | |
| EZ_ALWAYS_INLINE ezSimdDouble | GetInvLength () const |
| template<int N> | |
| EZ_ALWAYS_INLINE ezSimdDouble | GetLengthSquared () const |
| template<int N> | |
| EZ_ALWAYS_INLINE ezSimdDouble | GetLengthAndNormalize () |
| template<int N> | |
| EZ_ALWAYS_INLINE ezSimdVec4d | GetNormalized () const |
| template<int N> | |
| EZ_ALWAYS_INLINE void | Normalize () |
| template<int N> | |
| EZ_ALWAYS_INLINE void | NormalizeIfNotZero (const ezSimdVec4d &vFallback, const ezSimdDouble &fEpsilon) |
| template<int N> | |
| EZ_ALWAYS_INLINE bool | IsNormalized (const ezSimdDouble &fEpsilon) const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalSum () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalMin () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | 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 | Load (const double *pDouble) |
| template<> | |
| EZ_ALWAYS_INLINE void | Load (const double *pDouble) |
| template<> | |
| EZ_ALWAYS_INLINE void | Load (const double *pDouble) |
| template<> | |
| EZ_ALWAYS_INLINE void | Load (const double *pDouble) |
| 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 void | Store (double *pDouble) const |
| template<> | |
| EZ_ALWAYS_INLINE void | Store (double *pDouble) const |
| template<> | |
| EZ_ALWAYS_INLINE void | Store (double *pDouble) const |
| template<> | |
| EZ_ALWAYS_INLINE void | Store (double *pDouble) const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalSum () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalSum () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalSum () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalMin () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalMin () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalMin () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalMax () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalMax () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | HorizontalMax () const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | Dot (const ezSimdVec4d &v) const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | Dot (const ezSimdVec4d &v) const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | Dot (const ezSimdVec4d &v) const |
| template<> | |
| EZ_ALWAYS_INLINE ezSimdDouble | Dot (const ezSimdVec4d &v) const |
Static Public Member Functions | |
| static ezSimdVec4d | MakeZero () |
| Creates an ezSimdVec4d that is initialized to zero. | |
| static ezSimdVec4d | MakeNaN () |
| Creates an ezSimdVec4d that is initialized to Not-A-Number (NaN). | |
| static ezSimdVec4d | Select (const ezSimdVec4bWide &vCmp, const ezSimdVec4d &vTrue, const ezSimdVec4d &vFalse) |
| static ezSimdVec4d | Lerp (const ezSimdVec4d &a, const ezSimdVec4d &b, const ezSimdVec4d &t) |
| static ezSimdVec4d | MulAdd (const ezSimdVec4d &a, const ezSimdVec4d &b, const ezSimdVec4d &c) |
| Returns a * b + c. | |
| static ezSimdVec4d | MulAdd (const ezSimdVec4d &a, const ezSimdDouble &b, const ezSimdVec4d &c) |
| static ezSimdVec4d | MulSub (const ezSimdVec4d &a, const ezSimdVec4d &b, const ezSimdVec4d &c) |
| Returns a * b - c. | |
| static ezSimdVec4d | MulSub (const ezSimdVec4d &a, const ezSimdDouble &b, const ezSimdVec4d &c) |
| static ezSimdVec4d | CopySign (const ezSimdVec4d &vMagnitude, const ezSimdVec4d &vSign) |
| Returns a vector with the magnitude from vMagnitude and the sign from vSign. | |
Public Attributes | |
| ezInternal::QuadDouble | m_v |
A 4-component SIMD vector class using doubles.