Ark Server API (ASA) - Wiki
Loading...
Searching...
No Matches
VectorRegister.h File Reference
+ Include dependency graph for VectorRegister.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  VectorRegisterConstInit
 

Namespaces

namespace  GlobalVectorConstants
 

Macros

#define SUPPORT_DOUBLE_TO_FLOAT_VECTOR_CONVERSION   1
 
#define SIMD_ALIGNMENT   (alignof(VectorRegister))
 
#define VectorMask_LT(Vec1, Vec2)   VectorCompareLT(Vec1, Vec2)
 
#define VectorMask_LE(Vec1, Vec2)   VectorCompareLE(Vec1, Vec2)
 
#define VectorMask_GT(Vec1, Vec2)   VectorCompareGT(Vec1, Vec2)
 
#define VectorMask_GE(Vec1, Vec2)   VectorCompareGE(Vec1, Vec2)
 
#define VectorMask_EQ(Vec1, Vec2)   VectorCompareEQ(Vec1, Vec2)
 
#define VectorMask_NE(Vec1, Vec2)   VectorCompareNE(Vec1, Vec2)
 
#define ZERO_ANIMWEIGHT_THRESH   (0.00001f)
 
#define ZERO_ANIMWEIGHT_THRESH_DOUBLE   (0.00001)
 

Typedefs

template<typename T >
using TVectorRegisterType = std::conditional_t<std::is_same_v<T, float>, VectorRegister4Float, std::conditional_t<std::is_same_v<T, double>, VectorRegister4Double, void> >
 
using PersistentVectorRegister4Double = VectorRegister4Double
 
using PersistentVectorRegister4Float = VectorRegister4Float
 
template<typename T >
using TPersistentVectorRegisterType = std::conditional_t<std::is_same_v<T, float>, PersistentVectorRegister4Float, std::conditional_t<std::is_same_v<T, double>, PersistentVectorRegister4Double, void> >
 

Variables

constexpr VectorRegister VECTOR_INV_255 = MakeVectorRegisterDoubleConstant(1.0 / 255, 1.0 / 255, 1.0 / 255, 1.0 / 255)
 
constexpr VectorRegister GlobalVectorConstants::AnimWeightThreshold = MakeVectorRegisterConstant(ZERO_ANIMWEIGHT_THRESH_DOUBLE, ZERO_ANIMWEIGHT_THRESH_DOUBLE, ZERO_ANIMWEIGHT_THRESH_DOUBLE, ZERO_ANIMWEIGHT_THRESH_DOUBLE)
 
constexpr VectorRegister GlobalVectorConstants::RotationSignificantThreshold = MakeVectorRegisterConstant(1.0 - UE_DELTA*UE_DELTA, 1.0 - UE_DELTA*UE_DELTA, 1.0 - UE_DELTA*UE_DELTA, 1.0 - UE_DELTA*UE_DELTA)
 

Macro Definition Documentation

◆ SIMD_ALIGNMENT

#define SIMD_ALIGNMENT   (alignof(VectorRegister))

Definition at line 28 of file VectorRegister.h.

◆ SUPPORT_DOUBLE_TO_FLOAT_VECTOR_CONVERSION

#define SUPPORT_DOUBLE_TO_FLOAT_VECTOR_CONVERSION   1

Definition at line 9 of file VectorRegister.h.

◆ VectorMask_EQ

#define VectorMask_EQ ( Vec1,
Vec2 )   VectorCompareEQ(Vec1, Vec2)

Definition at line 111 of file VectorRegister.h.

◆ VectorMask_GE

#define VectorMask_GE ( Vec1,
Vec2 )   VectorCompareGE(Vec1, Vec2)

Definition at line 110 of file VectorRegister.h.

◆ VectorMask_GT

#define VectorMask_GT ( Vec1,
Vec2 )   VectorCompareGT(Vec1, Vec2)

Definition at line 109 of file VectorRegister.h.

◆ VectorMask_LE

#define VectorMask_LE ( Vec1,
Vec2 )   VectorCompareLE(Vec1, Vec2)

Definition at line 108 of file VectorRegister.h.

◆ VectorMask_LT

#define VectorMask_LT ( Vec1,
Vec2 )   VectorCompareLT(Vec1, Vec2)

Definition at line 107 of file VectorRegister.h.

◆ VectorMask_NE

#define VectorMask_NE ( Vec1,
Vec2 )   VectorCompareNE(Vec1, Vec2)

Definition at line 112 of file VectorRegister.h.

◆ ZERO_ANIMWEIGHT_THRESH

#define ZERO_ANIMWEIGHT_THRESH   (0.00001f)

Below this weight threshold, animations won't be blended in.

Definition at line 117 of file VectorRegister.h.

◆ ZERO_ANIMWEIGHT_THRESH_DOUBLE

#define ZERO_ANIMWEIGHT_THRESH_DOUBLE   (0.00001)

Definition at line 118 of file VectorRegister.h.

Typedef Documentation

◆ PersistentVectorRegister4Double

◆ PersistentVectorRegister4Float

◆ TPersistentVectorRegisterType

template<typename T >
using TPersistentVectorRegisterType = std::conditional_t<std::is_same_v<T, float>, PersistentVectorRegister4Float, std::conditional_t<std::is_same_v<T, double>, PersistentVectorRegister4Double, void> >

Alias for VectorRegister type to be used as member variables of structs, when alignment should not be over 16 bytes. 32-byte alignment requires large allocations in some allocators, which we want to avoid. See PersistentVectorRegister4Double for more details.

Usage example: TPersistentVectorRegisterType<float> MyFloatRegister; TPersistentVectorRegisterType<double> MyDoubleRegister;

Definition at line 99 of file VectorRegister.h.

◆ TVectorRegisterType

template<typename T >
using TVectorRegisterType = std::conditional_t<std::is_same_v<T, float>, VectorRegister4Float, std::conditional_t<std::is_same_v<T, double>, VectorRegister4Double, void> >

Definition at line 33 of file VectorRegister.h.

Variable Documentation

◆ VECTOR_INV_255

constexpr VectorRegister VECTOR_INV_255 = MakeVectorRegisterDoubleConstant(1.0 / 255, 1.0 / 255, 1.0 / 255, 1.0 / 255)
inlineconstexpr

Vector that represents (1/255,1/255,1/255,1/255)

Definition at line 104 of file VectorRegister.h.