UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VectorRegister.h File Reference

Go to the source code of this file.

Classes

struct  UE::Math::VectorRegisterPrivate::TVectorRegisterTypeHelper< T >
 
struct  UE::Math::VectorRegisterPrivate::TVectorRegisterTypeHelper< float >
 
struct  UE::Math::VectorRegisterPrivate::TVectorRegisterTypeHelper< double >
 
struct  FScopedFTZFloatMode
 

Namespaces

namespace  UE
 
namespace  UE::Math
 
namespace  UE::Math::VectorRegisterPrivate
 
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 = typename UE::Math::VectorRegisterPrivate::TVectorRegisterTypeHelper< T >::Type
 
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))

◆ SUPPORT_DOUBLE_TO_FLOAT_VECTOR_CONVERSION

#define SUPPORT_DOUBLE_TO_FLOAT_VECTOR_CONVERSION   1

◆ VectorMask_EQ

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

◆ VectorMask_GE

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

◆ VectorMask_GT

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

◆ VectorMask_LE

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

◆ VectorMask_LT

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

◆ VectorMask_NE

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

◆ ZERO_ANIMWEIGHT_THRESH

#define ZERO_ANIMWEIGHT_THRESH   (0.00001f)

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

◆ ZERO_ANIMWEIGHT_THRESH_DOUBLE

#define ZERO_ANIMWEIGHT_THRESH_DOUBLE   (0.00001)

Typedef Documentation

◆ PersistentVectorRegister4Double

◆ PersistentVectorRegister4Float

◆ TPersistentVectorRegisterType

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;

◆ TVectorRegisterType

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)