Minimal Vec3 class for SIMD operations on 4 Vec3 at a time.
More...
#include <JPLSpatial/Math/Vec3Pack.h>
|
| | Vec3Pack ()=default |
| |
| JPL_INLINE | Vec3Pack (float x, float y, float z) noexcept |
| |
| JPL_INLINE | Vec3Pack (const float *x, const float *y, const float *z) noexcept |
| |
| JPL_INLINE | Vec3Pack (simd x, simd y, simd z) noexcept |
| |
| template<CVec3 Vec3Type> |
| JPL_INLINE | Vec3Pack (const Vec3Type &vec) noexcept |
| |
| JPL_INLINE | Vec3Pack (const simd &axis) noexcept |
| |
| template<CVec3 Vec3Type> |
| JPL_INLINE | Vec3Pack (const Vec3Type &vec1, const Vec3Type &vec2, const Vec3Type &vec3, const Vec3Type &vec4) |
| |
| template<CVec3 Vec3Type> |
| JPL_INLINE void | load (std::span< const Vec3Type > inVecs) |
| |
| JPL_INLINE void | store (float *outX, float *outY, float *outZ) const |
| | Pointers must point to storate allocated for at least simd::size() num of floats each.
|
| |
| template<CVec3 Vec3Type> |
| JPL_INLINE void | store (std::span< Vec3Type > outVecs) const |
| |
| JPL_INLINE simd | LengthSquared () const noexcept |
| |
| JPL_INLINE simd | Length () const noexcept |
| |
| JPL_INLINE Vec3Pack & | Normalize () noexcept |
| |
| JPL_INLINE bool | IsEqual (const Vec3Pack &other) const |
| | Check if all components of all lanes match.
|
| |
| JPL_INLINE Vec3Pack | operator- () const |
| |
| JPL_INLINE Vec3Pack | operator- (const Vec3Pack &V) const |
| |
| JPL_INLINE Vec3Pack | operator+ (const Vec3Pack &V) const |
| |
template<typename Arg >
requires (std::is_arithmetic_v<Arg>) |
| JPL_INLINE Vec3Pack | operator* (Arg Scale) const noexcept |
| |
template<typename Arg >
requires (std::is_arithmetic_v<Arg>) |
| JPL_INLINE Vec3Pack | operator/ (Arg Scale) const noexcept |
| |
| JPL_INLINE Vec3Pack | operator* (simd Scale) const noexcept |
| |
| JPL_INLINE Vec3Pack | operator/ (simd Scale) const noexcept |
| |
| JPL_INLINE void | operator+= (const Vec3Pack &V) noexcept |
| |
| JPL_INLINE Vec3Pack & | operator*= (const Vec3Pack Other) |
| |
template<typename Arg >
requires (std::is_arithmetic_v<Arg>) |
| JPL_INLINE Vec3Pack & | operator/= (Arg Scale) noexcept |
| |
template<typename Arg >
requires (std::is_arithmetic_v<Arg>) |
| JPL_INLINE Vec3Pack & | operator*= (Arg Scale) noexcept |
| |
| JPL_INLINE Vec3Pack & | operator/= (simd Scale) noexcept |
| |
| JPL_INLINE Vec3Pack & | operator*= (simd Scale) noexcept |
| |
Minimal Vec3 class for SIMD operations on 4 Vec3 at a time.
◆ Vec3Pack() [1/7]
| JPL::Vec3Pack::Vec3Pack |
( |
| ) |
|
|
default |
◆ Vec3Pack() [2/7]
| JPL_INLINE JPL::Vec3Pack::Vec3Pack |
( |
float | x, |
|
|
float | y, |
|
|
float | z ) |
|
inlinenoexcept |
◆ Vec3Pack() [3/7]
| JPL_INLINE JPL::Vec3Pack::Vec3Pack |
( |
const float * | x, |
|
|
const float * | y, |
|
|
const float * | z ) |
|
inlinenoexcept |
◆ Vec3Pack() [4/7]
| JPL_INLINE JPL::Vec3Pack::Vec3Pack |
( |
simd | x, |
|
|
simd | y, |
|
|
simd | z ) |
|
inlinenoexcept |
◆ Vec3Pack() [5/7]
template<CVec3 Vec3Type>
| JPL_INLINE JPL::Vec3Pack::Vec3Pack |
( |
const Vec3Type & | vec | ) |
|
|
inlineexplicitnoexcept |
◆ Vec3Pack() [6/7]
| JPL_INLINE JPL::Vec3Pack::Vec3Pack |
( |
const simd & | axis | ) |
|
|
inlineexplicitnoexcept |
◆ Vec3Pack() [7/7]
template<CVec3 Vec3Type>
| JPL_INLINE JPL::Vec3Pack::Vec3Pack |
( |
const Vec3Type & | vec1, |
|
|
const Vec3Type & | vec2, |
|
|
const Vec3Type & | vec3, |
|
|
const Vec3Type & | vec4 ) |
|
inline |
◆ IsEqual()
| JPL_INLINE bool JPL::Vec3Pack::IsEqual |
( |
const Vec3Pack & | other | ) |
const |
|
nodiscard |
Check if all components of all lanes match.
◆ Length()
| JPL_INLINE simd JPL::Vec3Pack::Length |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
◆ LengthSquared()
| JPL_INLINE simd JPL::Vec3Pack::LengthSquared |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
◆ load()
template<CVec3 Vec3Type>
| JPL_INLINE void JPL::Vec3Pack::load |
( |
std::span< const Vec3Type > | inVecs | ) |
|
|
inline |
◆ Normalize()
| JPL_INLINE Vec3Pack & JPL::Vec3Pack::Normalize |
( |
| ) |
|
|
inlinenoexcept |
◆ operator*() [1/2]
template<typename Arg >
requires (std::is_arithmetic_v<Arg>)
| JPL_INLINE Vec3Pack JPL::Vec3Pack::operator* |
( |
Arg | Scale | ) |
const |
|
inlinenodiscardnoexcept |
◆ operator*() [2/2]
| JPL_INLINE Vec3Pack JPL::Vec3Pack::operator* |
( |
simd | Scale | ) |
const |
|
inlinenodiscardnoexcept |
◆ operator*=() [1/3]
template<typename Arg >
requires (std::is_arithmetic_v<Arg>)
| JPL_INLINE Vec3Pack & JPL::Vec3Pack::operator*= |
( |
Arg | Scale | ) |
|
|
inlinenoexcept |
◆ operator*=() [2/3]
◆ operator*=() [3/3]
| JPL_INLINE Vec3Pack & JPL::Vec3Pack::operator*= |
( |
simd | Scale | ) |
|
|
inlinenoexcept |
◆ operator+()
◆ operator+=()
| JPL_INLINE void JPL::Vec3Pack::operator+= |
( |
const Vec3Pack & | V | ) |
|
|
inlinenoexcept |
◆ operator-() [1/2]
| JPL_INLINE Vec3Pack JPL::Vec3Pack::operator- |
( |
| ) |
const |
|
inlinenodiscard |
◆ operator-() [2/2]
◆ operator/() [1/2]
template<typename Arg >
requires (std::is_arithmetic_v<Arg>)
| JPL_INLINE Vec3Pack JPL::Vec3Pack::operator/ |
( |
Arg | Scale | ) |
const |
|
inlinenodiscardnoexcept |
◆ operator/() [2/2]
| JPL_INLINE Vec3Pack JPL::Vec3Pack::operator/ |
( |
simd | Scale | ) |
const |
|
inlinenodiscardnoexcept |
◆ operator/=() [1/2]
template<typename Arg >
requires (std::is_arithmetic_v<Arg>)
| JPL_INLINE Vec3Pack & JPL::Vec3Pack::operator/= |
( |
Arg | Scale | ) |
|
|
inlinenoexcept |
◆ operator/=() [2/2]
| JPL_INLINE Vec3Pack & JPL::Vec3Pack::operator/= |
( |
simd | Scale | ) |
|
|
inlinenoexcept |
◆ select() [1/2]
Component-wise select, returns 'ifTrue' if mask is true, 'ifFalse' otherwise Uses the same mask for all components.
◆ select() [2/2]
Component-wise select, returns 'ifTrue' if mask is true, 'ifFalse' otherwise Uses individual masks per component.
◆ store() [1/2]
| JPL_INLINE void JPL::Vec3Pack::store |
( |
float * | outX, |
|
|
float * | outY, |
|
|
float * | outZ ) const |
|
inline |
Pointers must point to storate allocated for at least simd::size() num of floats each.
◆ store() [2/2]
template<CVec3 Vec3Type>
| JPL_INLINE void JPL::Vec3Pack::store |
( |
std::span< Vec3Type > | outVecs | ) |
const |
|
inline |
◆ Zero()
| static JPL_INLINE Vec3Pack JPL::Vec3Pack::Zero |
( |
| ) |
|
|
inlinestaticnodiscardnoexcept |
The documentation for this struct was generated from the following file: