UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UnrealMathVectorCommon.h.inl
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5// HEADER_UNIT_SKIP - Not included directly
6
8struct FMath;
9
10// Overload to resolve compiler ambiguity for things like MakeVectorRegister(V.X, V.Y, V.Z, 0.f) when V is a double type.
11FORCEINLINE VectorRegister4Double MakeVectorRegister(double X, double Y, double Z, float W)
12{
13 return MakeVectorRegisterDouble(X, Y, Z, (double)W);
14}
15
20
25
33
34template<typename T>
36{
37 return VectorLoad((const T*)(Ptr));
38}
39
40template<typename T>
42{
43 return VectorLoad((const T*)(Ptr));
44}
45
47{
48 return VectorLoad((const float*)(Ptr));
49}
50
52{
53 return VectorLoad((const double*)(Ptr));
54}
55
56
60
61template<typename T>
66
67template<typename T>
72
73template<typename T>
78
80{
81 //return VectorLoadAligned((const float*)(Ptr));
82 return *Ptr;
83}
84
86{
87 //return VectorLoadAligned((const double*)(Ptr));
88 return *Ptr;
89}
90
91
95
103{
104 return MakeVectorRegister(Ptr[0], Ptr[1], Ptr[2], 0.0f);
105}
106
107template<typename T>
112
114{
115 return VectorLoadFloat3((const double*)Ptr);
116}
117
118
122
130{
131 return VectorLoadFloat3(Ptr);
132}
133
135{
136 return VectorLoadFloat3(Ptr);
137}
138
139template<typename T>
144
145template<typename T>
150
152{
153 return VectorLoadDouble3(Ptr);
154}
155
156
160
168{
169 return MakeVectorRegister(Ptr[0], Ptr[1], Ptr[2], 1.0f);
170}
171
172template<typename T>
177
179{
180 return VectorLoadFloat3_W1(Ptr);
181}
182
183
187
192
197
199{
200 return VectorLoadDouble1(Ptr);
201}
202
203
207
208// TODO: this is lossy, would rather not implement.
209#if SUPPORT_DOUBLE_TO_FLOAT_VECTOR_CONVERSION
211{
213}
214#endif
215
216template<typename T>
221
222// Specific overload to support promoting float->double vector and storing in TVector4<double>
228
229template<typename T>
234
235// Specific overload to support promoting float->double vector and storing in TQuat<double>
241
246
251
252
256
257#if SUPPORT_DOUBLE_TO_FLOAT_VECTOR_CONVERSION
259{
261 VectorStore(FloatVec, Dst);
262}
263#endif
264
265template<typename T>
270
271template<typename T>
276
277template<typename T>
282
283// Specific overload to support promoting float->double vector and storing in TQuat<double>
289
294
299
300
304
305#if SUPPORT_DOUBLE_TO_FLOAT_VECTOR_CONVERSION
307{
310}
311#endif
312
313template<typename T>
318
319template<typename T>
324
325template<typename T>
330
331template<typename T>
336
340
341#if SUPPORT_DOUBLE_TO_FLOAT_VECTOR_CONVERSION
343{
346}
347#endif
348
349
354
356{
357 // This is used for bit masks, so don't do an actual convert, mask the lower bits instead
358 double X = VectorGetComponent(Vec, 0);
359 uint64 XMask64 = *((uint64*)(&X));
360 uint32 XMask32 = (uint32)(XMask64 & 0xFFFFFFFF);
363}
364
369
371// Wrappers for clarifying "accurate" versus "estimate" for some functions,
372// important for old functions which were ambiguous in their precision.
373
374// Returns accurate reciprocal square root.
379
384
395
400
402
403// Returns a normalized 4 vector = Vector / |Vector|.
404// There is no handling of zero length vectors, use VectorNormalizeSafe if this is a possible input.
405template<typename TVectorRegisterType>
410
411template<typename TVectorRegisterType>
416
417template<typename TVectorRegisterType>
422
423// Returns ((Vector dot Vector) >= 1e-8) ? (Vector / |Vector|) : DefaultValue
424// Uses accurate 1/sqrt, not the estimate
433
442
454
459
471
476
488
493
499
504
505/*----------------------------------------------------------------------------
506 VectorRegister specialization of templates.
507----------------------------------------------------------------------------*/
508
514
519
525
530
537
543
544// TCustomLerp for FMath::Lerp<VectorRegister4Float>()
545template<>
547{
548 constexpr static bool Value = true;
549
550 // Specialization of Lerp function that works with vector registers
555};
556
557// TCustomLerp for FMath::Lerp<VectorRegister4Double>()
558template<>
560{
561 constexpr static bool Value = true;
562
563 // Specialization of Lerp function that works with vector registers
568};
569
570// A and B are quaternions. The result is A + (|A.B| >= 0 ? 1 : -1) * B
572{
573 // Blend rotation
574 // To ensure the 'shortest route', we make sure the dot product between the both rotations is positive.
575 // const float Bias = (|A.B| >= 0 ? 1 : -1)
576 // return A + B * Bias;
582 return VectorAdd(A, BiasTimesB);
583}
584
586{
587 // Blend rotation
588 // To ensure the 'shortest route', we make sure the dot product between the both rotations is positive.
589 // const float Bias = (|A.B| >= 0 ? 1 : -1)
590 // return A + B * Bias;
596 return VectorAdd(A, BiasTimesB);
597}
598
599// Normalize quaternion ( result = (Q.Q >= 1e-8) ? (Q / |Q|) : (0,0,0,1) )
604
609
610// VectorMod360: Essentially VectorMod(X, 360) but using faster computation that is still accurate given the known input constraints.
618
626
627// Normalize Rotator
641
655
661{
662 // Blend rotation
663 // To ensure the 'shortest route', we make sure the dot product between the both rotations is positive.
664 // const float Bias = (|A.B| >= 0 ? 1 : -1)
665 // Rotation = (B * Alpha) + (A * (Bias * (1.f - Alpha)));
667
669
676
677 return UnnormalizedResult;
678}
679
681{
682 // Blend rotation
683 // To ensure the 'shortest route', we make sure the dot product between the both rotations is positive.
684 // const float Bias = (|A.B| >= 0 ? 1 : -1)
685 // Rotation = (B * Alpha) + (A * (Bias * (1.f - Alpha)));
687
689
696
697 return UnnormalizedResult;
698}
699
711
719
727
732
733
742{
743 // Q * V * Q.Inverse
744 //const VectorRegister InverseRotation = VectorQuaternionInverse(Quat);
745 //const VectorRegister Temp = VectorQuaternionMultiply2(Quat, VectorW0);
746 //const VectorRegister Rotated = VectorQuaternionMultiply2(Temp, InverseRotation);
747
748 // Equivalence of above can be shown to be:
749 // http://people.csail.mit.edu/bkph/articles/Quaternions.pdf
750 // V' = V + 2w(Q x V) + (2Q x (Q x V))
751 // refactor:
752 // V' = V + w(2(Q x V)) + (Q x (2(Q x V)))
753 // T = 2(Q x V);
754 // V' = V + w*(T) + (Q x T)
755
758 T = VectorAdd(T, T);
762 return Rotated;
763}
764
775
784{
785 // Q.Inverse * V * Q
786 //const VectorRegister InverseRotation = VectorQuaternionInverse(Quat);
787 //const VectorRegister Temp = VectorQuaternionMultiply2(InverseRotation, VectorW0);
788 //const VectorRegister Rotated = VectorQuaternionMultiply2(Temp, Quat);
789
792}
793
799
804
809
814
815FORCEINLINE VectorRegister4Double VectorSetDouble(double X, double Y, double Z, double W)
816{
817 return MakeVectorRegisterDouble(X, Y, Z, W);
818}
819
824
829
834
844{
845 return MakeVectorRegisterFloat(X, Y, Z, 0.0f);
846}
847
849{
850 return MakeVectorRegisterDouble(X, Y, Z, 0.0);
851}
852
854{
855 return VectorSetFloat3(X, Y, Z);
856}
857
867FORCEINLINE VectorRegister4Float VectorSet(float X, float Y, float Z, float W)
868{
869 return MakeVectorRegisterFloat(X, Y, Z, W);
870}
871
872FORCEINLINE VectorRegister4Double VectorSet(double X, double Y, double Z, double W)
873{
874 return MakeVectorRegisterDouble(X, Y, Z, W);
875}
876
877// Overload to resolve ambiguous mixes of ints and floats.
879{
880 return VectorSet(float(X), float(Y), float(Z), float(W));
881}
882
887
892
893
901
903{
904 // Warning: don't try to cast FQuat4d to VectorRegister4Double, they may not be of the same alignment.
905 // We can still use VectorLoadAligned/VectorStoreAligned, because those only enforce 16-byte alignment and fall back to unaligned otherwise.
910}
911
919#if defined(_MSC_VER)
920#pragma intrinsic( _BitScanForward )
922{
923 if (Value == 0)
924 {
925 return 32;
926 }
927 unsigned long BitIndex; // 0-based, where the LSB is 0 and MSB is 31
928 _BitScanForward(&BitIndex, Value); // Scans from LSB to MSB
929 return BitIndex;
930}
931#else // !defined(_MSC_VER)
933{
934 if (Value == 0)
935 {
936 return 32;
937 }
938 return __builtin_ffs(Value) - 1;
939}
940#endif // _MSC_VER
#define FORCEINLINE
Definition AndroidPlatform.h:140
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define RESTRICT
Definition Platform.h:706
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define X(Name, Desc)
Definition FormatStringSan.h:47
FORCEINLINE VectorRegister4Float VectorSubtract(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:731
FORCEINLINE uint32 VectorAnyGreaterThan(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:1917
FORCEINLINE VectorRegister4Float VectorReciprocalSqrt(const VectorRegister4Float &Vec)
Definition UnrealMathFPU.h:1279
FORCEINLINE VectorRegister4Float VectorMin(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:1686
FORCEINLINE VectorRegister4Float VectorDot4(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:901
FORCEINLINE VectorRegister4Float VectorSetFloat1(float F)
Definition UnrealMathFPU.h:518
FORCEINLINE VectorRegister4Float VectorTruncate(const VectorRegister4Float &Vec)
Definition UnrealMathFPU.h:2153
FORCEINLINE VectorRegister4Double VectorZeroDouble(void)
Definition UnrealMathFPU.h:336
FORCEINLINE VectorRegister4Float VectorDivide(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:834
FORCEINLINE VectorRegister4Float VectorMax(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:1713
FORCEINLINE VectorRegister4Float VectorReciprocalLen(const VectorRegister4Float &Vec)
Definition UnrealMathFPU.h:1343
#define VectorGetComponent(Vec, ComponentIndex)
Definition UnrealMathFPU.h:385
FORCEINLINE VectorRegister4Double VectorLoadDouble1(const double *Ptr)
Definition UnrealMathFPU.h:473
FORCEINLINE VectorRegister4Float VectorSelect(const VectorRegister4Float &Mask, const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:1105
FORCEINLINE VectorRegister4Float VectorCompareGT(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:974
FORCEINLINE VectorRegister4Double VectorOneDouble(void)
Definition UnrealMathFPU.h:351
FORCEINLINE VectorRegister4Float VectorReciprocalLenEstimate(const VectorRegister4Float &Vector)
Definition UnrealMathFPU.h:1375
FORCEINLINE VectorRegister4Float VectorCompareGE(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:1000
FORCEINLINE VectorRegister4Double MakeVectorRegisterDouble(uint64 X, uint64 Y, uint64 Z, uint64 W)
Definition UnrealMathFPU.h:185
FORCEINLINE VectorRegister4Float VectorNegateMultiplyAdd(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2, const VectorRegister4Float &Vec3)
Definition UnrealMathFPU.h:815
FORCEINLINE VectorRegister4Float VectorReciprocal(const VectorRegister4Float &Vec)
Definition UnrealMathFPU.h:1311
FORCEINLINE VectorRegister4Float VectorAdd(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:704
FORCEINLINE VectorRegister4Float VectorQuaternionMultiply2(const VectorRegister4Float &Quat1, const VectorRegister4Float &Quat2)
Definition UnrealMathFPU.h:1517
FORCEINLINE VectorRegister4Float VectorOneFloat(void)
Definition UnrealMathFPU.h:346
FORCEINLINE VectorRegister4Float VectorZeroFloat(void)
Definition UnrealMathFPU.h:331
FORCEINLINE VectorRegister4Float VectorCross(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:1216
FORCEINLINE VectorRegister4Float MakeVectorRegisterFloat(uint32 X, uint32 Y, uint32 Z, uint32 W)
Definition UnrealMathFPU.h:175
FORCEINLINE VectorRegister4Float MakeVectorRegisterFloatFromDouble(const VectorRegister4Double &Vec4d)
Definition UnrealMathFPU.h:262
#define VectorReplicate(Vec, ElementIndex)
Definition UnrealMathFPU.h:627
FORCEINLINE void VectorStoreAligned(TVectorRegisterType< T > Vec, UE::Math::TVector4< T > *Dst)
VectorStoreAligned.
Definition UnrealMathVectorCommon.h.inl:217
FORCEINLINE VectorRegister4Double VectorSetDouble3(double X, double Y, double Z)
Definition UnrealMathVectorCommon.h.inl:853
FORCEINLINE VectorRegister4Float VectorLerp(VectorRegister4Float A, VectorRegister4Float B, VectorRegister4Float Alpha)
Definition UnrealMathVectorCommon.h.inl:532
FORCEINLINE TVectorRegisterType VectorNormalizeAccurate(TVectorRegisterType Vector)
Definition UnrealMathVectorCommon.h.inl:412
FORCEINLINE void VectorStore(VectorRegister4Float Vec, UE::Math::TVector4< T > *Dst)
VectorStore.
Definition UnrealMathVectorCommon.h.inl:266
FORCEINLINE VectorRegister4Float VectorAccumulateQuaternionShortestPath(VectorRegister4Float A, VectorRegister4Float B)
Definition UnrealMathVectorCommon.h.inl:571
FORCEINLINE VectorRegister4Float VectorZero(void)
Definition UnrealMathVectorCommon.h.inl:16
FORCEINLINE VectorRegister4Double VectorMultiply(VectorRegister4Double Vec1, VectorRegister4Float Vec2)
Definition UnrealMathVectorCommon.h.inl:800
FORCEINLINE VectorRegister4Double MakeVectorRegister(double X, double Y, double Z, float W)
Definition UnrealMathVectorCommon.h.inl:11
FORCEINLINE VectorRegister4Float VectorSetFloat3(float X, float Y, float Z)
Definition UnrealMathVectorCommon.h.inl:843
FORCEINLINE VectorRegister4Float VectorSet(float X, float Y, float Z, float W)
Definition UnrealMathVectorCommon.h.inl:867
FORCEINLINE VectorRegister4Double VectorSetDouble(double X, double Y, double Z, double W)
Definition UnrealMathVectorCommon.h.inl:815
FORCEINLINE VectorRegister4Double VectorLoadDouble3_W1(const double *Ptr)
Definition UnrealMathVectorCommon.h.inl:178
FORCEINLINE VectorRegister4Float VectorReciprocalAccurate(VectorRegister4Float Vec)
Definition UnrealMathVectorCommon.h.inl:391
FORCEINLINE void VectorStoreDouble1(VectorRegister4Double Vec, double *Ptr)
Definition UnrealMathVectorCommon.h.inl:830
FORCEINLINE TVectorRegisterType< T > VectorLoad(const UE::Math::TQuat< T > *Ptr)
VectorLoad.
Definition UnrealMathVectorCommon.h.inl:35
FORCEINLINE VectorRegister4Float VectorNormalizeSafe(VectorRegister4Float Vector, VectorRegister4Float DefaultValue)
Definition UnrealMathVectorCommon.h.inl:425
FORCEINLINE void VectorStoreDouble3(VectorRegister4Double Vec, double *Ptr)
Definition UnrealMathVectorCommon.h.inl:825
FORCEINLINE uint32 VectorAnyLesserThan(VectorRegister4Float Vec1, VectorRegister4Float Vec2)
Definition UnrealMathVectorCommon.h.inl:450
FORCEINLINE uint32 VectorAllLesserThan(VectorRegister4Float Vec1, VectorRegister4Float Vec2)
Definition UnrealMathVectorCommon.h.inl:484
FORCEINLINE VectorRegister4Float VectorOne(void)
Definition UnrealMathVectorCommon.h.inl:21
FORCEINLINE VectorRegister4Float VectorQuaternionInverse(VectorRegister4Float NormalizedQuat)
Definition UnrealMathVectorCommon.h.inl:723
FORCEINLINE void VectorStoreFloat3(VectorRegister4Float Vec, UE::Math::TVector< T > *Dst)
VectorStoreFloat3.
Definition UnrealMathVectorCommon.h.inl:314
FORCEINLINE VectorRegister4Float VectorFractional(VectorRegister4Float Vec)
Definition UnrealMathVectorCommon.h.inl:883
FORCEINLINE VectorRegister4Double VectorMultiplyAdd(VectorRegister4Double Vec1, VectorRegister4Float Vec2, VectorRegister4Double Acc)
Definition UnrealMathVectorCommon.h.inl:805
FORCEINLINE void VectorStoreFloat1(VectorRegister4Float Vec, int32 *Dst)
VectorStoreFloat1.
Definition UnrealMathVectorCommon.h.inl:350
FORCEINLINE VectorRegister4Float VectorQuaternionRotateVector(VectorRegister4Float Quat, VectorRegister4Float VectorW0)
Definition UnrealMathVectorCommon.h.inl:741
FORCEINLINE TVectorRegisterType VectorNormalizeEstimate(TVectorRegisterType Vector)
Definition UnrealMathVectorCommon.h.inl:418
FORCEINLINE TVectorRegisterType< T > VectorLoadAligned(const UE::Math::TQuat< T > *Ptr)
VectorLoadAligned.
Definition UnrealMathVectorCommon.h.inl:62
FORCEINLINE VectorRegister4Float VectorMod360(VectorRegister4Float X)
Definition UnrealMathVectorCommon.h.inl:611
FORCEINLINE uint32 appCountTrailingZeros(uint32 Value)
Definition UnrealMathVectorCommon.h.inl:932
FORCEINLINE TVectorRegisterType VectorNormalize(TVectorRegisterType Vector)
Definition UnrealMathVectorCommon.h.inl:406
FORCEINLINE VectorRegister4Float VectorLoadFloat1(const VectorRegister4Float *Ptr)
VectorLoadFloat1.
Definition UnrealMathVectorCommon.h.inl:188
FORCEINLINE uint32 VectorAllGreaterThan(VectorRegister4Float Vec1, VectorRegister4Float Vec2)
Definition UnrealMathVectorCommon.h.inl:467
FORCEINLINE VectorRegister4Float VectorBiLerpQuat(VectorRegister4Float P00, VectorRegister4Float P10, VectorRegister4Float P01, VectorRegister4Float P11, VectorRegister4Float FracX, VectorRegister4Float FracY)
Definition UnrealMathVectorCommon.h.inl:704
FORCEINLINE void VectorQuaternionMultiply(FQuat4f *RESTRICT Result, const FQuat4f *RESTRICT Quat1, const FQuat4f *RESTRICT Quat2)
Definition UnrealMathVectorCommon.h.inl:894
FORCEINLINE VectorRegister4Float VectorNormalizeRotator(VectorRegister4Float UnnormalizedRotator)
Definition UnrealMathVectorCommon.h.inl:628
FORCEINLINE VectorRegister4Float VectorClamp(VectorRegister4Float X, VectorRegister4Float VecMin, VectorRegister4Float VecMax)
Definition UnrealMathVectorCommon.h.inl:495
FORCEINLINE VectorRegister4Float VectorLoadFloat3(const float *Ptr)
VectorLoadFloat3.
Definition UnrealMathVectorCommon.h.inl:102
FORCEINLINE VectorRegister4Float VectorQuaternionInverseRotateVector(VectorRegister4Float Quat, VectorRegister4Float VectorW0)
Definition UnrealMathVectorCommon.h.inl:783
FORCEINLINE VectorRegister4Float VectorLerpQuat(VectorRegister4Float A, VectorRegister4Float B, VectorRegister4Float Alpha)
Definition UnrealMathVectorCommon.h.inl:660
FORCEINLINE VectorRegister4Float VectorLoadFloat3_W0(const float *Ptr)
VectorLoadFloat3_W0.
Definition UnrealMathVectorCommon.h.inl:129
FORCEINLINE VectorRegister4Float VectorReciprocalSqrtAccurate(VectorRegister4Float Vec)
Definition UnrealMathVectorCommon.h.inl:375
FORCEINLINE VectorRegister4Double VectorSetDouble1(double D)
Definition UnrealMathVectorCommon.h.inl:820
FORCEINLINE VectorRegister4Float VectorLoadFloat3_W1(const float *Ptr)
VectorLoadFloat3_W1.
Definition UnrealMathVectorCommon.h.inl:167
FORCEINLINE VectorRegister4Float VectorNormalizeQuaternion(VectorRegister4Float UnnormalizedQuat)
Definition UnrealMathVectorCommon.h.inl:600
FORCEINLINE VectorRegister4Double VectorLoadDouble3(const double *Ptr)
Definition UnrealMathVectorCommon.h.inl:113
FORCEINLINE VectorRegister4Double VectorLoadDouble3_W0(const double *Ptr)
Definition UnrealMathVectorCommon.h.inl:151
typename UE::Math::VectorRegisterPrivate::TVectorRegisterTypeHelper< T >::Type TVectorRegisterType
Definition VectorRegister.h:49
uint32_t uint32
Definition binka_ue_file_header.h:6
constexpr VectorRegister4Float SmallLengthThreshold
Definition UnrealMathVectorConstants.h.inl:46
constexpr VectorRegister4Float FloatOne
Definition UnrealMathVectorConstants.h.inl:40
constexpr VectorRegister4Float QINV_SIGN_MASK
Definition UnrealMathVectorConstants.h.inl:83
constexpr VectorRegister4Float Float360
Definition UnrealMathVectorConstants.h.inl:138
constexpr VectorRegister4Double Double360
Definition UnrealMathVectorConstants.h.inl:144
constexpr VectorRegister4Float Float180
Definition UnrealMathVectorConstants.h.inl:139
constexpr VectorRegister4Double DoubleSmallLengthThreshold
Definition UnrealMathVectorConstants.h.inl:64
constexpr VectorRegister4Double Double0001
Definition UnrealMathVectorConstants.h.inl:61
constexpr VectorRegister4Float Float0001
Definition UnrealMathVectorConstants.h.inl:43
constexpr VectorRegister4Double DOUBLE_QINV_SIGN_MASK
Definition UnrealMathVectorConstants.h.inl:84
constexpr VectorRegister4Double DoubleOne
Definition UnrealMathVectorConstants.h.inl:58
constexpr VectorRegister4Double Double180
Definition UnrealMathVectorConstants.h.inl:145
Definition GenericPlatformMath.h:32
static constexpr UE_FORCEINLINE_HINT T Min(T A, T B)
Definition GenericPlatformMath.h:985
static constexpr UE_FORCEINLINE_HINT T Max(T A, T B)
Definition GenericPlatformMath.h:963
Definition UnrealMathUtility.h:270
static FORCEINLINE VectorRegister4Double Lerp(VectorRegister4Double A, VectorRegister4Double B, VectorRegister4Double Alpha)
Definition UnrealMathVectorCommon.h.inl:564
static FORCEINLINE VectorRegister4Float Lerp(VectorRegister4Float A, VectorRegister4Float B, VectorRegister4Float Alpha)
Definition UnrealMathVectorCommon.h.inl:551
Definition UnrealMathUtility.h:261
static constexpr bool Value
Definition UnrealMathUtility.h:262
Definition Plane.h:35
Definition Quat.h:39
Definition Rotator.h:37
Definition Vector4.h:30
Definition Vector.h:51
Definition UnrealMathFPU.h:42
Definition UnrealMathFPU.h:20