Ark Server API (ASA) - Wiki
Loading...
Searching...
No Matches
UnrealMathSSE.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "HAL/Platform.h"
6#include "HAL/PlatformMath.h"
7#include "Math/MathFwd.h"
8#include "Math/UnrealMathUtility.h"
9
10// IWYU pragma: begin_exports
11
12#if !WITH_DIRECTXMATH && !PLATFORM_ENABLE_VECTORINTRINSICS_NEON && !(defined(__cplusplus_cli) && !PLATFORM_HOLOLENS) && PLATFORM_ENABLE_VECTORINTRINSICS
13
14struct VectorRegisterConstInit {};
15
16// We require SSE2
17#include <emmintrin.h>
18
19#ifndef UE_PLATFORM_MATH_USE_SSE4_1
20#define UE_PLATFORM_MATH_USE_SSE4_1 PLATFORM_ALWAYS_HAS_SSE4_1
21#endif
22
23#ifndef UE_PLATFORM_MATH_USE_AVX
24#define UE_PLATFORM_MATH_USE_AVX PLATFORM_ALWAYS_HAS_AVX
25#endif
26
27#ifndef UE_PLATFORM_MATH_USE_AVX_2
28#define UE_PLATFORM_MATH_USE_AVX_2 (PLATFORM_ALWAYS_HAS_AVX_2 && UE_PLATFORM_MATH_USE_AVX)
29#endif
30
31#ifndef UE_PLATFORM_MATH_USE_FMA3
32#define UE_PLATFORM_MATH_USE_FMA3 PLATFORM_ALWAYS_HAS_FMA3
33#endif
34
35#ifndef UE_PLATFORM_MATH_USE_SVML
36 #if defined(_MSC_VER) && !defined(__clang__)
37 #define UE_PLATFORM_MATH_USE_SVML (_MSC_VER >= 1920) // Support added to MSVC 2019 16.0+
38 #else
39 #define UE_PLATFORM_MATH_USE_SVML 0
40 #endif // defined(_MSC_VER)
41#endif
42
43#ifndef UE_PLATFORM_MATH_USE_SVML_AVX
44#define UE_PLATFORM_MATH_USE_SVML_AVX (UE_PLATFORM_MATH_USE_SVML && UE_PLATFORM_MATH_USE_AVX)
45#endif
46
47// If SSE4.1 is enabled, need additional defines.
48#if UE_PLATFORM_MATH_USE_SSE4_1
49#include <smmintrin.h>
50#endif
51
52// If AVX is enabled, need additional defines.
53#if UE_PLATFORM_MATH_USE_AVX || UE_PLATFORM_MATH_USE_SVML
54#include <immintrin.h>
55#endif
56
57#define UE_SSE_FLOAT_ALIGNMENT 16
58
59#if UE_PLATFORM_MATH_USE_AVX
60#define UE_SSE_DOUBLE_ALIGNMENT 32 // required for __m256d
61#else
62#define UE_SSE_DOUBLE_ALIGNMENT 16
63#endif
64
65// We suppress static analysis warnings for the cast from (double*) to (float*) in VectorLoadFloat2
66// and VectorLoadTwoPairsFloat below:
67// -V:VectorLoadFloat2:615
68// -V:VectorLoadTwoPairsFloat:615
69
70/*=============================================================================
71 * Helpers:
72 *============================================================================*/
73
74/**
75 * float4 vector register type, where the first float (X) is stored in the lowest 32 bits, and so on.
76 */
77
78// 4 floats
79typedef __m128 VectorRegister4Float;
80
81// 4 int32s
82typedef __m128i VectorRegister4Int;
83
84// 2 int64s
85typedef __m128i VectorRegister2Int64;
86
87// 2 doubles
88typedef __m128d VectorRegister2Double;
89
90
91namespace SSE
92{
93 //wrapper for sse_mathfun.h and sse_mathfun_extension.h
94 VectorRegister4Float sin_ps (VectorRegister4Float x);
95 VectorRegister4Float cos_ps (VectorRegister4Float x);
96 void sincos_ps (VectorRegister4Float x, VectorRegister4Float* s, VectorRegister4Float* c);
97 VectorRegister4Float log_ps (VectorRegister4Float x);
98 VectorRegister4Float exp_ps (VectorRegister4Float x);
99 VectorRegister4Float tan_ps (VectorRegister4Float x);
100 VectorRegister4Float cot_ps (VectorRegister4Float x);
101 VectorRegister4Float atan_ps (VectorRegister4Float x);
102 VectorRegister4Float atan2_ps (VectorRegister4Float y, VectorRegister4Float x);
103};
104
105// 4 doubles
106struct alignas(UE_SSE_DOUBLE_ALIGNMENT) VectorRegister4Double
107{
108#if !UE_PLATFORM_MATH_USE_AVX
109 VectorRegister2Double XY;
110 VectorRegister2Double ZW;
111
112 FORCEINLINE VectorRegister2Double GetXY() const { return XY; }
113 FORCEINLINE VectorRegister2Double GetZW() const { return ZW; }
114#else
115 union
116 {
117 struct
118 {
119 VectorRegister2Double XY;
120 VectorRegister2Double ZW;
121 };
122 __m256d XYZW;
123 };
124
125 // Use in preference when reading XY or ZW to extract values, it's better on MSVC than the generated memory reads.
126 FORCEINLINE VectorRegister2Double GetXY() const { return _mm256_extractf128_pd(XYZW, 0); } // { return _mm256_castpd256_pd128(XYZW); } // Possible MSVC compiler bug in optimized bugs when using this cast, but can be more efficient.
127 FORCEINLINE VectorRegister2Double GetZW() const { return _mm256_extractf128_pd(XYZW, 1); }
128#endif
129
131
132 FORCEINLINE VectorRegister4Double(const VectorRegister2Double& InXY, const VectorRegister2Double& InZW)
133 {
134#if UE_PLATFORM_MATH_USE_AVX
135 XYZW = _mm256_setr_m128d(InXY, InZW);
136#else
137 XY = InXY;
138 ZW = InZW;
139#endif
140 }
141
142 FORCEINLINE constexpr VectorRegister4Double(VectorRegister2Double InXY, VectorRegister2Double InZW, VectorRegisterConstInit)
143 : XY(InXY)
144 , ZW(InZW)
145 {}
146
147 // Construct from a vector of 4 floats
148 FORCEINLINE VectorRegister4Double(const VectorRegister4Float& FloatVector)
149 {
150#if !UE_PLATFORM_MATH_USE_AVX
151 XY = _mm_cvtps_pd(FloatVector);
152 ZW = _mm_cvtps_pd(_mm_movehl_ps(FloatVector, FloatVector));
153#else
154 XYZW = _mm256_cvtps_pd(FloatVector);
155#endif
156 }
157
158 // Assign from a vector of 4 floats
159 FORCEINLINE VectorRegister4Double& operator=(const VectorRegister4Float& FloatVector)
160 {
161#if !UE_PLATFORM_MATH_USE_AVX
162 XY = _mm_cvtps_pd(FloatVector);
163 ZW = _mm_cvtps_pd(_mm_movehl_ps(FloatVector, FloatVector));
164#else
165 XYZW = _mm256_cvtps_pd(FloatVector);
166#endif
167 return *this;
168 }
169
170#if UE_PLATFORM_MATH_USE_AVX
171 // Convenience for things like 'Result = _mm256_add_pd(...)'
172 FORCEINLINE VectorRegister4Double(const __m256d& Register)
173 {
174 XYZW = Register;
175 }
176
177 // Convenience for things like 'Result = _mm256_add_pd(...)'
178 FORCEINLINE VectorRegister4Double& operator=(const __m256d& Register)
179 {
180 XYZW = Register;
181 return *this;
182 }
183
184 // Convenience for passing VectorRegister4Double to _mm256_* functions without needing '.XYZW'
185 FORCEINLINE operator __m256d() const
186 {
187 return XYZW;
188 }
189#endif
190
191};
192
193
194// Aliases
195typedef VectorRegister4Int VectorRegister4i;
196typedef VectorRegister4Float VectorRegister4f;
197typedef VectorRegister4Double VectorRegister4d;
198typedef VectorRegister2Double VectorRegister2d;
199typedef VectorRegister4Double VectorRegister4;
200#define VectorZeroVectorRegister() VectorZeroDouble()
201#define VectorOneVectorRegister() VectorOneDouble()
202
203// Backwards compatibility
204typedef VectorRegister4 VectorRegister;
205typedef VectorRegister4Int VectorRegisterInt;
206
207
208// Forward declarations
209VectorRegister4Float VectorLoadAligned(const float* Ptr);
210VectorRegister4Double VectorLoadAligned(const double* Ptr);
211void VectorStoreAligned(const VectorRegister4Float& Vec, float* Ptr);
212void VectorStoreAligned(const VectorRegister4Double& Vec, double* Dst);
213
214
215// Helper for conveniently aligning a float array for extraction from VectorRegister4Float
216struct alignas(UE_SSE_FLOAT_ALIGNMENT) AlignedFloat4
217{
218 float V[4];
219
220 FORCEINLINE AlignedFloat4(const VectorRegister4Float& Vec)
221 {
222 VectorStoreAligned(Vec, V);
223 }
224
225 FORCEINLINE float operator[](int32 Index) const { return V[Index]; }
226 FORCEINLINE float& operator[](int32 Index) { return V[Index]; }
227
228 FORCEINLINE VectorRegister4Float ToVectorRegister() const
229 {
230 return VectorLoadAligned(V);
231 }
232};
233
234
235// Helper for conveniently aligning a double array for extraction from VectorRegister4Double
236struct alignas(alignof(VectorRegister4Double)) AlignedDouble4
237{
238 double V[4];
239
240 FORCEINLINE AlignedDouble4(const VectorRegister4Double& Vec)
241 {
243 }
244
245 FORCEINLINE double operator[](int32 Index) const { return V[Index]; }
246 FORCEINLINE double& operator[](int32 Index) { return V[Index]; }
247
248 FORCEINLINE VectorRegister4Double ToVectorRegister() const
249 {
250 return VectorLoadAligned(V);
251 }
252};
253
254typedef AlignedDouble4 AlignedRegister4;
255
256#define DECLARE_VECTOR_REGISTER(X, Y, Z, W) MakeVectorRegister(X, Y, Z, W)
257
258/**
259 * @param A0 Selects which element (0-3) from 'A' into 1st slot in the result
260 * @param A1 Selects which element (0-3) from 'A' into 2nd slot in the result
261 * @param B2 Selects which element (0-3) from 'B' into 3rd slot in the result
262 * @param B3 Selects which element (0-3) from 'B' into 4th slot in the result
263 */
264#define SHUFFLEMASK(A0,A1,B2,B3) ( (A0) | ((A1)<<2) | ((B2)<<4) | ((B3)<<6) )
265
266#define SHUFFLEMASK2(A0,A1) ((A0) | ((A1)<<1))
267
268
269FORCEINLINE VectorRegister2Double MakeVectorRegister2Double(double X, double Y)
270{
271 return _mm_setr_pd(X, Y);
272}
273
274// Bitwise equivalent from two 64-bit values.
275FORCEINLINE VectorRegister2Double MakeVectorRegister2DoubleMask(uint64 X, uint64 Y)
276{
277 union { VectorRegister2Double Vd; __m128i Vi; } Result;
278 // Note: this instruction only exists on 64-bit
279 Result.Vi = _mm_set_epi64x(Y, X); // intentionally (Y,X), there is no 'setr' version.
280 return Result.Vd;
281}
282
283/**
284 * Returns a bitwise equivalent vector based on 4 DWORDs.
285 *
286 * @param X 1st uint32 component
287 * @param Y 2nd uint32 component
288 * @param Z 3rd uint32 component
289 * @param W 4th uint32 component
290 * @return Bitwise equivalent vector with 4 floats
291 */
292FORCEINLINE VectorRegister4Float MakeVectorRegisterFloat( uint32 X, uint32 Y, uint32 Z, uint32 W )
293{
294 union { VectorRegister4Float v; VectorRegister4Int i; } Tmp;
295 Tmp.i = _mm_setr_epi32( X, Y, Z, W );
296 return Tmp.v;
297}
298
299FORCEINLINE VectorRegister4Double MakeVectorRegisterDouble(uint64 X, uint64 Y, uint64 Z, uint64 W)
300{
301 return VectorRegister4Double(MakeVectorRegister2DoubleMask(X, Y), MakeVectorRegister2DoubleMask(Z, W));
302}
303
304FORCEINLINE VectorRegister4Float MakeVectorRegister(uint32 X, uint32 Y, uint32 Z, uint32 W)
305{
306 return MakeVectorRegisterFloat(X, Y, Z, W);
307}
308
309// Nicer aliases
310FORCEINLINE VectorRegister4Float MakeVectorRegisterFloatMask(uint32 X, uint32 Y, uint32 Z, uint32 W)
311{
312 return MakeVectorRegisterFloat(X, Y, Z, W);
313}
314
315FORCEINLINE VectorRegister4Double MakeVectorRegisterDoubleMask(uint64 X, uint64 Y, uint64 Z, uint64 W)
316{
317 return MakeVectorRegisterDouble(X, Y, Z, W);
318}
319
320/**
321 * Returns a vector based on 4 FLOATs.
322 *
323 * @param X 1st float component
324 * @param Y 2nd float component
325 * @param Z 3rd float component
326 * @param W 4th float component
327 * @return Vector of the 4 FLOATs
328 */
329FORCEINLINE VectorRegister4Float MakeVectorRegisterFloat(float X, float Y, float Z, float W)
330{
331 return _mm_setr_ps( X, Y, Z, W );
332}
333
334FORCEINLINE VectorRegister4Double MakeVectorRegisterDouble(double X, double Y, double Z, double W)
335{
336 VectorRegister4Double Result;
337#if !UE_PLATFORM_MATH_USE_AVX
338 Result.XY = _mm_setr_pd(X, Y);
339 Result.ZW = _mm_setr_pd(Z, W);
340#else
341 Result = _mm256_setr_pd(X, Y, Z, W);
342#endif
343 return Result;
344}
345
346FORCEINLINE VectorRegister4Float MakeVectorRegister(float X, float Y, float Z, float W)
347{
348 return MakeVectorRegisterFloat(X, Y, Z, W);
349}
350
351FORCEINLINE VectorRegister4Double MakeVectorRegister(double X, double Y, double Z, double W)
352{
353 return MakeVectorRegisterDouble(X, Y, Z, W);
354}
355
356FORCEINLINE VectorRegister4Double MakeVectorRegisterDouble(const VectorRegister2Double& XY, const VectorRegister2Double& ZW)
357{
358 return VectorRegister4Double(XY, ZW);
359}
360
361// Make double register from float register
362FORCEINLINE VectorRegister4Double MakeVectorRegisterDouble(const VectorRegister4Float& From)
363{
364 return VectorRegister4Double(From);
365}
366
367// Lossy conversion: double->float vector
368FORCEINLINE VectorRegister4Float MakeVectorRegisterFloatFromDouble(const VectorRegister4Double& Vec4d)
369{
370#if !UE_PLATFORM_MATH_USE_AVX
371 return _mm_movelh_ps(_mm_cvtpd_ps(Vec4d.XY), _mm_cvtpd_ps(Vec4d.ZW));
372#else
373 return _mm256_cvtpd_ps(Vec4d);
374#endif
375}
376
377/**
378* Returns a vector based on 4 int32.
379*
380* @param X 1st int32 component
381* @param Y 2nd int32 component
382* @param Z 3rd int32 component
383* @param W 4th int32 component
384* @return Vector of the 4 int32
385*/
386FORCEINLINE VectorRegister4Int MakeVectorRegisterInt(int32 X, int32 Y, int32 Z, int32 W)
387{
388 return _mm_setr_epi32(X, Y, Z, W);
389}
390
391FORCEINLINE VectorRegister2Int64 MakeVectorRegisterInt64(int64 X, int64 Y) {
392 return _mm_set_epi64x(Y, X);
393}
394
395PRAGMA_DISABLE_UNSAFE_TYPECAST_WARNINGS
396#if defined(PRAGMA_DISABLE_MISSING_BRACES_WARNINGS)
397PRAGMA_DISABLE_MISSING_BRACES_WARNINGS
398#endif
399
400/**
401* constexpr 4xint32 vector constant creation that bypasses SIMD intrinsic setter.
402*
403* Added new function instead of constexprifying MakeVectorRegisterInt to avoid small risk of impacting codegen.
404* Long-term we should have a single constexpr MakeVectorRegisterInt.
405*/
406FORCEINLINE constexpr VectorRegister4Int MakeVectorRegisterIntConstant(int32 X, int32 Y, int32 Z, int32 W)
407{
409#error Big-endian unimplemented
410#elif defined(_MSC_VER) && !defined(__clang__)
411 return {static_cast<char>(X >> 0), static_cast<char>(X >> 8), static_cast<char>(X >> 16), static_cast<char>(X >> 24),
412 static_cast<char>(Y >> 0), static_cast<char>(Y >> 8), static_cast<char>(Y >> 16), static_cast<char>(Y >> 24),
413 static_cast<char>(Z >> 0), static_cast<char>(Z >> 8), static_cast<char>(Z >> 16), static_cast<char>(Z >> 24),
414 static_cast<char>(W >> 0), static_cast<char>(W >> 8), static_cast<char>(W >> 16), static_cast<char>(W >> 24)};
415#else
416 uint64 XY = uint64(uint32(X)) | (uint64(uint32(Y)) << 32);
417 uint64 ZW = uint64(uint32(Z)) | (uint64(uint32(W)) << 32);
418 return VectorRegister4Int { (long long)XY, (long long)ZW };
419#endif
420}
421
422FORCEINLINE constexpr VectorRegister4Float MakeVectorRegisterFloatConstant(float X, float Y, float Z, float W)
423{
424 return VectorRegister4Float { X, Y, Z, W };
425}
426
427#if defined(PRAGMA_ENABLE_MISSING_BRACES_WARNINGS)
428PRAGMA_ENABLE_MISSING_BRACES_WARNINGS
429#endif
430PRAGMA_RESTORE_UNSAFE_TYPECAST_WARNINGS
431
432FORCEINLINE constexpr VectorRegister2Double MakeVectorRegister2DoubleConstant(double X, double Y)
433{
434 return VectorRegister2Double { X, Y };
435}
436
437/*=============================================================================
438 * Constants:
439 *============================================================================*/
440
441#include "Math/UnrealMathVectorConstants.h"
442
443/*=============================================================================
444 * Intrinsics:
445 *============================================================================*/
446
447/**
448 * Returns a vector with all zeros.
449 *
450 * @return MakeVectorRegister(0.0f, 0.0f, 0.0f, 0.0f)
451 */
452FORCEINLINE VectorRegister4Float VectorZeroFloat(void)
453{
454 return _mm_setzero_ps();
455}
456
457FORCEINLINE VectorRegister4Double VectorZeroDouble(void)
458{
459 VectorRegister4Double Result;
460#if !UE_PLATFORM_MATH_USE_AVX
461 Result.XY = _mm_setzero_pd();
462 Result.ZW = _mm_setzero_pd();
463#else
464 Result = _mm256_setzero_pd();
465#endif
466 return Result;
467}
468
469/**
470 * Returns a vector with all ones.
471 *
472 * @return MakeVectorRegister(1.0f, 1.0f, 1.0f, 1.0f)
473 */
474FORCEINLINE VectorRegister4Float VectorOneFloat(void)
475{
476 return GlobalVectorConstants::FloatOne;
477}
478
479FORCEINLINE VectorRegister4Double VectorOneDouble(void)
480{
481 return GlobalVectorConstants::DoubleOne;
482}
483
484/**
485 * Returns an component from a vector.
486 *
487 * @param Vec Vector register
488 * @param ComponentIndex Which component to get, X=0, Y=1, Z=2, W=3
489 * @return The component as a float
490 */
491
492template <uint32 ComponentIndex>
493FORCEINLINE float VectorGetComponentImpl(const VectorRegister4Float& Vec)
494{
495 return (((float*)&(Vec))[ComponentIndex]);
496}
497
498// Specializations
499template <> FORCEINLINE float VectorGetComponentImpl<0>(const VectorRegister4Float& Vec) { return _mm_cvtss_f32(Vec); }
500
501template <uint32 ComponentIndex>
502FORCEINLINE double VectorGetComponentImpl(const VectorRegister4Double& Vec)
503{
504#if !UE_PLATFORM_MATH_USE_AVX
505 return (((double*)&(Vec.XY))[ComponentIndex]);
506#else
507 return (((double*)&(Vec.XYZW))[ComponentIndex]);
508#endif
509}
510
511// Specializations
512#if UE_PLATFORM_MATH_USE_AVX
513// Lower latency than `vmovsd`, required since MSVC doesn't optimize the above impl well compared to clang/gcc. The latter basically generates something like this below (checked in godbolt).
514template <> FORCEINLINE double VectorGetComponentImpl<0>(const VectorRegister4Double& Vec) { return _mm256_cvtsd_f64(Vec); }
515template <> FORCEINLINE double VectorGetComponentImpl<1>(const VectorRegister4Double& Vec) { return _mm256_cvtsd_f64(_mm256_permute_pd(Vec, 1)); }
516template <> FORCEINLINE double VectorGetComponentImpl<2>(const VectorRegister4Double& Vec) { return _mm_cvtsd_f64(_mm256_extractf128_pd(Vec, 1)); }
517template <> FORCEINLINE double VectorGetComponentImpl<3>(const VectorRegister4Double& Vec) { return _mm_cvtsd_f64(_mm_permute_pd(_mm256_extractf128_pd(Vec, 1), 1)); }
518#endif
519
520#define VectorGetComponent(Vec, ComponentIndex) VectorGetComponentImpl<ComponentIndex>(Vec)
521
522FORCEINLINE float VectorGetComponentDynamic(const VectorRegister4Float& Vec, uint32 ComponentIndex)
523{
524 return (((float*)&(Vec))[ComponentIndex]);
525}
526
527FORCEINLINE double VectorGetComponentDynamic(const VectorRegister4Double& Vec, uint32 ComponentIndex)
528{
529#if !UE_PLATFORM_MATH_USE_AVX
530 return (((double*)&(Vec.XY))[ComponentIndex]);
531#else
532 return (((double*)&(Vec.XYZW))[ComponentIndex]);
533#endif
534}
535
536/**
537 * Loads 4 FLOATs from unaligned memory.
538 *
539 * @param Ptr Unaligned memory pointer to the 4 FLOATs
540 * @return VectorRegister4Float(Ptr[0], Ptr[1], Ptr[2], Ptr[3])
541 */
542
543FORCEINLINE VectorRegister4Float VectorLoad(const float* Ptr)
544{
545 return _mm_loadu_ps((float*)(Ptr));
546}
547
548FORCEINLINE VectorRegister4Double VectorLoad(const double* Ptr)
549{
550 VectorRegister4Double Result;
551#if !UE_PLATFORM_MATH_USE_AVX
552 Result.XY = _mm_loadu_pd((double*)(Ptr));
553 Result.ZW = _mm_loadu_pd((double*)(Ptr + 2));
554#else
555 Result = _mm256_loadu_pd((double*)Ptr);
556#endif
557 return Result;
558}
559
560/**
561 * Loads 3 FLOATs from unaligned memory and sets W=0.
562 *
563 * @param Ptr Unaligned memory pointer to the 3 FLOATs
564 * @return VectorRegister4Float(Ptr[0], Ptr[1], Ptr[2], 0)
565 */
566FORCEINLINE VectorRegister4Double VectorLoadFloat3(const double* Ptr)
567{
568#if !UE_PLATFORM_MATH_USE_AVX_2
569 VectorRegister4Double Result;
570 Result.XY = _mm_loadu_pd((double*)(Ptr));
571 Result.ZW = _mm_load_sd((double*)(Ptr+2));
572 return Result;
573#else
574 return _mm256_maskload_pd(Ptr, _mm256_castpd_si256(GlobalVectorConstants::DoubleXYZMask()));
575#endif
576}
577
578/**
579 * Loads 3 FLOATs from unaligned memory and sets W=1.
580 *
581 * @param Ptr Unaligned memory pointer to the 3 FLOATs
582 * @return VectorRegister4Float(Ptr[0], Ptr[1], Ptr[2], 1.0f)
583 */
584FORCEINLINE VectorRegister4Double VectorLoadFloat3_W1(const double* Ptr)
585{
586#if !UE_PLATFORM_MATH_USE_AVX_2
587 VectorRegister4Double Result;
588 Result.XY = _mm_loadu_pd((double*)(Ptr));
589 Result.ZW = MakeVectorRegister2Double(Ptr[2], 1.0);
590 return Result;
591#else
592 //return MakeVectorRegisterDouble(Ptr[0], Ptr[1], Ptr[2], 1.0);
593 VectorRegister4Double Result;
594 Result = _mm256_maskload_pd(Ptr, _mm256_castpd_si256(GlobalVectorConstants::DoubleXYZMask()));
595 Result = _mm256_blend_pd(Result, VectorOneDouble(), 0b1000);
596 return Result;
597#endif
598}
599
600/**
601 * Loads 4 FLOATs from aligned memory.
602 *
603 * @param Ptr Aligned memory pointer to the 4 FLOATs
604 * @return VectorRegister4Float(Ptr[0], Ptr[1], Ptr[2], Ptr[3])
605 */
606FORCEINLINE VectorRegister4Float VectorLoadAligned(const float* Ptr)
607{
608 return _mm_load_ps((const float*)(Ptr));
609}
610
611FORCEINLINE VectorRegister4Double VectorLoadAligned(const double* Ptr)
612{
613 VectorRegister4Double Result;
614#if !UE_PLATFORM_MATH_USE_AVX
615 Result.XY = _mm_load_pd((const double*)(Ptr));
616 Result.ZW = _mm_load_pd((const double*)(Ptr + 2));
617#else
618 // AVX using unaligned here, since we don't ensure 32-byte alignment (not significant on most modern processors)
619 Result = _mm256_loadu_pd(Ptr);
620#endif
621 return Result;
622}
623
624/**
625 * Loads 1 float from unaligned memory and replicates it to all 4 elements.
626 *
627 * @param Ptr Unaligned memory pointer to the float
628 * @return VectorRegister4Float(Ptr[0], Ptr[0], Ptr[0], Ptr[0])
629 */
630FORCEINLINE VectorRegister4Float VectorLoadFloat1(const float* Ptr)
631{
632#if !UE_PLATFORM_MATH_USE_AVX
633 return _mm_load1_ps(Ptr);
634#else
635 return _mm_broadcast_ss(Ptr);
636#endif
637}
638
639FORCEINLINE VectorRegister4Double VectorLoadDouble1(const double* Ptr)
640{
641 VectorRegister4Double Result;
642#if !UE_PLATFORM_MATH_USE_AVX
643 Result.XY = _mm_load1_pd(Ptr);
644 Result.ZW = Result.XY;
645#else
646 Result = _mm256_broadcast_sd(Ptr);
647#endif
648 return Result;
649}
650
651/**
652 * Loads 2 floats from unaligned memory into X and Y and duplicates them in Z and W.
653 *
654 * @param Ptr Unaligned memory pointer to the floats
655 * @return VectorRegister4Float(Ptr[0], Ptr[1], Ptr[0], Ptr[1])
656 */
657FORCEINLINE VectorRegister4Float VectorLoadFloat2(const float* Ptr)
658{
659 // This intentionally casts to a double* to be able to load 64 bits of data using the "load 1 double" instruction to fill in the two 32-bit floats.
660 return _mm_castpd_ps(_mm_load1_pd(reinterpret_cast<const double*>(Ptr))); // -V615
661}
662
663FORCEINLINE VectorRegister4Double VectorLoadFloat2(const double* Ptr)
664{
665 VectorRegister4Double Result;
666#if !UE_PLATFORM_MATH_USE_AVX
667 Result.XY = _mm_loadu_pd(Ptr);
668 Result.ZW = Result.XY;
669#else
670 const __m128d Temp = _mm_loadu_pd(Ptr);
671 Result = _mm256_set_m128d(Temp, Temp);
672#endif
673 return Result;
674}
675
676/**
677 * Loads 4 unaligned floats - 2 from the first pointer, 2 from the second, and packs
678 * them in to 1 vector.
679 *
680 * @param Ptr1 Unaligned memory pointer to the first 2 floats
681 * @param Ptr2 Unaligned memory pointer to the second 2 floats
682 * @return VectorRegister(Ptr1[0], Ptr1[1], Ptr2[0], Ptr2[1])
683 */
684FORCEINLINE VectorRegister4Float VectorLoadTwoPairsFloat(const float* Ptr1, const float* Ptr2)
685{
686 // This intentionally casts to a double* to be able to load 64 bits of data using the "load 1 double" instruction to fill in the two 32-bit floats.
687 __m128 Ret = _mm_castpd_ps(_mm_load_sd(reinterpret_cast<const double*>(Ptr1))); // -V615
688 Ret = _mm_loadh_pi(Ret, (__m64 const*)(Ptr2));
689 return Ret;
690}
691
692FORCEINLINE VectorRegister4Double VectorLoadTwoPairsFloat(const double* Ptr1, const double* Ptr2)
693{
694 VectorRegister4Double Result;
695#if !UE_PLATFORM_MATH_USE_AVX
696 Result.XY = _mm_loadu_pd(Ptr1);
697 Result.ZW = _mm_loadu_pd(Ptr2);
698#else
699 Result = _mm256_loadu2_m128d(Ptr2, Ptr1); // Note: arguments are (hi, lo)
700#endif
701 return Result;
702}
703
704/**
705 * Propagates passed in float to all registers
706 *
707 * @param F Float to set
708 * @return VectorRegister4Float(F,F,F,F)
709 */
710FORCEINLINE VectorRegister4Float VectorSetFloat1(float F)
711{
712 return _mm_set1_ps(F);
713}
714
715FORCEINLINE VectorRegister4Double VectorSetFloat1(double D)
716{
717 VectorRegister4Double Result;
718#if !UE_PLATFORM_MATH_USE_AVX
719 Result.XY = _mm_set1_pd(D);
720 Result.ZW = Result.XY;
721#else
722 Result = _mm256_set1_pd(D);
723#endif
724 return Result;
725}
726
727/**
728 * Stores a vector to memory (aligned or unaligned).
729 *
730 * @param Vec Vector to store
731 * @param Ptr Memory pointer
732 */
733FORCEINLINE void VectorStore(const VectorRegister4Float& Vec, float* Ptr)
734{
735 _mm_storeu_ps(Ptr, Vec);
736}
737
738FORCEINLINE void VectorStore(const VectorRegister4Double& Vec, double* Dst)
739{
740#if !UE_PLATFORM_MATH_USE_AVX
741 _mm_storeu_pd(Dst, Vec.XY);
742 _mm_storeu_pd(Dst + 2, Vec.ZW);
743#else
744 _mm256_storeu_pd(Dst, Vec);
745#endif
746}
747
748/**
749 * Stores a vector to aligned memory.
750 *
751 * @param Vec Vector to store
752 * @param Ptr Aligned memory pointer
753 */
754FORCEINLINE void VectorStoreAligned(const VectorRegister4Float& Vec, float* Dst)
755{
756 _mm_store_ps(Dst, Vec);
757}
758
759FORCEINLINE void VectorStoreAligned(const VectorRegister4Double& Vec, double* Dst)
760{
761#if !UE_PLATFORM_MATH_USE_AVX
762 _mm_store_pd(Dst, Vec.XY);
763 _mm_store_pd(Dst + 2, Vec.ZW);
764#else
765 // AVX using unaligned here, since we don't ensure 32-byte alignment (not significant on most modern processors)
766 _mm256_storeu_pd(Dst, Vec);
767#endif
768}
769
770
771/**
772 * Performs non-temporal store of a vector to aligned memory without polluting the caches
773 *
774 * @param Vec Vector to store
775 * @param Ptr Aligned memory pointer
776 */
777FORCEINLINE void VectorStoreAlignedStreamed(const VectorRegister4Float& Vec, float* Dst)
778{
779 _mm_stream_ps(Dst, Vec);
780}
781
782FORCEINLINE void VectorStoreAlignedStreamed(const VectorRegister4Double& Vec, double* Dst)
783{
784#if !UE_PLATFORM_MATH_USE_AVX
785 _mm_stream_pd(Dst, Vec.XY);
786 _mm_stream_pd(Dst + 2, Vec.ZW);
787#else
788 // AVX using two 128-bit stores since we don't require 32-byte alignment requirement for our data (so don't use _mm256_stream_pd)
789 _mm_stream_pd(Dst, Vec.XY);
790 _mm_stream_pd(Dst + 2, Vec.ZW);
791#endif
792}
793
794/**
795 * Stores the XYZ components of a vector to unaligned memory.
796 *
797 * @param Vec Vector to store XYZ
798 * @param Ptr Unaligned memory pointer
799 */
800FORCEINLINE void VectorStoreFloat3( const VectorRegister4Float& Vec, float* Ptr )
801{
802 union { VectorRegister4Float v; float f[4]; } Tmp;
803 Tmp.v = Vec;
804 float* FloatPtr = (float*)(Ptr);
805 FloatPtr[0] = Tmp.f[0];
806 FloatPtr[1] = Tmp.f[1];
807 FloatPtr[2] = Tmp.f[2];
808}
809
810FORCEINLINE void VectorStoreFloat3(const VectorRegister4Double& Vec, double* Dst)
811{
812#if !UE_PLATFORM_MATH_USE_AVX
813 _mm_storeu_pd(Dst, Vec.XY);
814 _mm_store_sd(Dst + 2, Vec.ZW);
815#else
816 _mm_storeu_pd(Dst, Vec.XY);
817 _mm_store_sd(Dst + 2, Vec.ZW);
818#endif
819}
820
821/**
822 * Stores the X component of a vector to unaligned memory.
823 *
824 * @param Vec Vector to store X
825 * @param Ptr Unaligned memory pointer
826 */
827FORCEINLINE void VectorStoreFloat1(const VectorRegister4Float& Vec, float* Ptr)
828{
829 _mm_store_ss(Ptr, Vec);
830}
831
832FORCEINLINE void VectorStoreFloat1(const VectorRegister4Double& Vec, double* Dst)
833{
834 _mm_store_sd(Dst, Vec.XY);
835}
836
837namespace SSEPermuteHelpers
838{
839 // These need to be #define and not constexpr to make them work with enable_if
840#define InLane0(Index0, Index1) ((Index0) <= 1 && (Index1) <= 1)
841#define InLane1(Index0, Index1) ((Index0) >= 2 && (Index1) >= 2)
842#define InSameLane(Index0, Index1) (InLane0(Index0, Index1) || InLane1(Index0, Index1))
843#define OutOfLane(Index0, Index1) (!InSameLane(Index0, Index1))
844
845 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
846 // Double swizzle
847 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
848
849 // Double Swizzle helpers
850 // Templated swizzles required for double shuffles when using __m128d, since we have to break it down in to two separate operations.
851
852 // [0,1]:[0,1]
853 template<int Index0, int Index1, typename std::enable_if< (Index0 <= 1) && (Index1 <= 1), bool >::type = true>
854 FORCEINLINE VectorRegister2Double SelectVectorSwizzle2(const VectorRegister4Double& Vec)
855 {
856 return _mm_shuffle_pd(Vec.GetXY(), Vec.GetXY(), SHUFFLEMASK2(Index0, Index1));
857 }
858
859 // [0,1]:[2,3]
860 template<int Index0, int Index1, typename std::enable_if< (Index0 <= 1) && (Index1 >= 2), bool >::type = true>
861 FORCEINLINE VectorRegister2Double SelectVectorSwizzle2(const VectorRegister4Double& Vec)
862 {
863 return _mm_shuffle_pd(Vec.GetXY(), Vec.GetZW(), SHUFFLEMASK2(Index0, Index1 - 2));
864 }
865
866 // [2,3]:[0,1]
867 template<int Index0, int Index1, typename std::enable_if< (Index0 >= 2) && (Index1 <= 1), bool >::type = true>
868 FORCEINLINE VectorRegister2Double SelectVectorSwizzle2(const VectorRegister4Double& Vec)
869 {
870 return _mm_shuffle_pd(Vec.GetZW(), Vec.GetXY(), SHUFFLEMASK2(Index0 - 2, Index1));
871 }
872
873 // [2,3]:[2,3]
874 template<int Index0, int Index1, typename std::enable_if< (Index0 >= 2) && (Index1 >= 2), bool >::type = true>
875 FORCEINLINE VectorRegister2Double SelectVectorSwizzle2(const VectorRegister4Double& Vec)
876 {
877 return _mm_shuffle_pd(Vec.GetZW(), Vec.GetZW(), SHUFFLEMASK2(Index0 - 2, Index1 - 2));
878 }
879
880 template<> FORCEINLINE VectorRegister2Double SelectVectorSwizzle2<0, 1>(const VectorRegister4Double& Vec) { return Vec.GetXY(); }
881 template<> FORCEINLINE VectorRegister2Double SelectVectorSwizzle2<2, 3>(const VectorRegister4Double& Vec) { return Vec.GetZW(); }
882
883#if UE_PLATFORM_MATH_USE_SSE4_1
884 // blend can run on more ports than shuffle, so are preferable even if latency is claimed to be the same.
885 template<> FORCEINLINE VectorRegister2Double SelectVectorSwizzle2<0, 3>(const VectorRegister4Double& Vec) { return _mm_blend_pd(Vec.GetXY(), Vec.GetZW(), SHUFFLEMASK2(0, 1)); }
886 template<> FORCEINLINE VectorRegister2Double SelectVectorSwizzle2<2, 1>(const VectorRegister4Double& Vec) { return _mm_blend_pd(Vec.GetZW(), Vec.GetXY(), SHUFFLEMASK2(0, 1)); }
887#endif // UE_PLATFORM_MATH_USE_SSE4_1
888
889
890#if UE_PLATFORM_MATH_USE_AVX
891
892 // Helper to swap lanes (128-bit pairs)
893 constexpr int PERMUTE_LANE_MASK(int A, int B) { return (A == 0 ? 0x00 : 0x01) | (B == 0 ? (0x02 << 4) : (0x03 << 4)); }
894
895 template<int Lane0, int Lane1>
896 FORCEINLINE VectorRegister4Double PermuteLanes(const VectorRegister4Double& Vec)
897 {
898 static_assert(Lane0 >= 0 && Lane0 <= 1 && Lane1 >= 0 && Lane1 <= 1, "Invalid Index");
899 return _mm256_permute2f128_pd(Vec, Vec, PERMUTE_LANE_MASK(Lane0, Lane1));
900 }
901
902 // Identity
903 template<> FORCEINLINE VectorRegister4Double PermuteLanes<0, 1>(const VectorRegister4Double& Vec) { return Vec; }
904#if !UE_PLATFORM_MATH_USE_AVX_2
905 // On AVX1, permute2f128 can be quite slow, so look for alternatives (extract + insert). On AVX2, permute2f128 is more efficient and should equal or beat (extract + insert).
906 // Sources: https://www.agner.org/optimize/instruction_tables.pdf, https://uops.info/table.html
907 template<> FORCEINLINE VectorRegister4Double PermuteLanes<0, 0>(const VectorRegister4Double& Vec) { return _mm256_insertf128_pd(Vec, Vec.GetXY(), 1); } // copy XY to lane 1
908 template<> FORCEINLINE VectorRegister4Double PermuteLanes<1, 0>(const VectorRegister4Double& Vec) { return _mm256_setr_m128d(Vec.GetZW(), Vec.GetXY()); } // swap XY and ZW
909 template<> FORCEINLINE VectorRegister4Double PermuteLanes<1, 1>(const VectorRegister4Double& Vec) { return _mm256_insertf128_pd(Vec, Vec.GetZW(), 0); } // copy ZW to lane 0
910#endif // !AVX2
911
912 //
913 // AVX2 _mm256_permute4x64_pd has a latency of 3-6, but there are some specializations using instructions which have a latency of 1 but are restricted to in-lane (128 bit) permutes.
914 // AVX1 benefits from lower latency instructions here than the toggling between 128-bit and 256-bit operations of the generic implementation.
915
916 constexpr int PERMUTE_MASK(int A, int B, int C, int D) { return ((A == 1 ? (1 << 0) : 0) | (B == 1 ? (1 << 1) : 0) | (C == 3 ? (1 << 2) : 0) | (D == 3 ? (1 << 3) : 0)); }
917
918 // [0..1][0..1][2..3][2..3]
919 template<int Index0, int Index1, int Index2, int Index3, typename std::enable_if< InLane0(Index0, Index1) && InLane1(Index2, Index3), bool >::type = true>
920 FORCEINLINE VectorRegister4Double SelectVectorSwizzle(const VectorRegister4Double& Vec)
921 {
922 return _mm256_permute_pd(Vec, PERMUTE_MASK(Index0, Index1, Index2, Index3));
923 }
924
925 // [2..3][2..3][0..1][0..1]
926 template <int Index0, int Index1, int Index2, int Index3, typename std::enable_if< InLane1(Index0, Index1) && InLane0(Index2, Index3), bool >::type = true>
927 FORCEINLINE VectorRegister4Double SelectVectorSwizzle(const VectorRegister4Double& Vec)
928 {
929 // Permute lanes then use [lane0][lane1] swizzle
930 return SelectVectorSwizzle<Index0 - 2, Index1 - 2, Index2 + 2, Index3 + 2>(PermuteLanes<1, 0>(Vec));
931 }
932
933 // [0..1][0..1][0..1][0..1]
934 template <int Index0, int Index1, int Index2, int Index3, typename std::enable_if< InLane0(Index0, Index1) && InLane0(Index2, Index3), bool >::type = true>
935 FORCEINLINE VectorRegister4Double SelectVectorSwizzle(const VectorRegister4Double& Vec)
936 {
937 // Permute lanes then use [lane0][lane1] swizzle
938 return SelectVectorSwizzle<Index0, Index1, Index2 + 2, Index3 + 2>(PermuteLanes<0, 0>(Vec));
939 }
940
941 // [2..3][2..3][2..3][2..3]
942 template <int Index0, int Index1, int Index2, int Index3, typename std::enable_if< InLane1(Index0, Index1) && InLane1(Index2, Index3), bool >::type = true>
943 FORCEINLINE VectorRegister4Double SelectVectorSwizzle(const VectorRegister4Double& Vec)
944 {
945 // Permute lanes then use [lane0][lane1] swizzle
946 return SelectVectorSwizzle<Index0 - 2, Index1 - 2, Index2, Index3>(PermuteLanes<1, 1>(Vec));
947 }
948
949 // Anything with out-of-lane pairs
950 template<int Index0, int Index1, int Index2, int Index3, typename std::enable_if< OutOfLane(Index0, Index1) || OutOfLane(Index2, Index3), bool >::type = true>
951 FORCEINLINE VectorRegister4Double SelectVectorSwizzle(const VectorRegister4Double& Vec)
952 {
953#if UE_PLATFORM_MATH_USE_AVX_2
954 return _mm256_permute4x64_pd(Vec, SHUFFLEMASK(Index0, Index1, Index2, Index3));
955#else
956 return VectorRegister4Double(
957 SelectVectorSwizzle2<Index0, Index1>(Vec),
958 SelectVectorSwizzle2<Index2, Index3>(Vec)
959 );
960#endif
961 }
962
963 //
964 // Specializations
965 //
966 template<> FORCEINLINE VectorRegister4Double SelectVectorSwizzle<0, 0, 2, 2>(const VectorRegister4Double& Vec) { return _mm256_movedup_pd(Vec); } // special instruction exists for this.
967 template<> FORCEINLINE VectorRegister4Double SelectVectorSwizzle<0, 1, 2, 3>(const VectorRegister4Double& Vec) { return Vec; } // Identity
968 template<> FORCEINLINE VectorRegister4Double SelectVectorSwizzle<2, 3, 0, 1>(const VectorRegister4Double& Vec) { return PermuteLanes<1, 0>(Vec); }
969 template<> FORCEINLINE VectorRegister4Double SelectVectorSwizzle<0, 1, 0, 1>(const VectorRegister4Double& Vec) { return PermuteLanes<0, 0>(Vec); }
970 template<> FORCEINLINE VectorRegister4Double SelectVectorSwizzle<2, 3, 2, 3>(const VectorRegister4Double& Vec) { return PermuteLanes<1, 1>(Vec); }
971
972#endif // AVX
973
974 // Double swizzle wrapper
975 template<int Index0, int Index1, int Index2, int Index3>
976 FORCEINLINE VectorRegister4Double VectorSwizzleTemplate(const VectorRegister4Double& Vec)
977 {
978 static_assert(Index0 >= 0 && Index0 <= 3 && Index1 >= 0 && Index1 <= 3 && Index2 >= 0 && Index2 <= 3 && Index3 >= 0 && Index3 <= 3, "Invalid Index");
979
980#if UE_PLATFORM_MATH_USE_AVX
981 return SelectVectorSwizzle<Index0, Index1, Index2, Index3>(Vec);
982#else
983 return VectorRegister4Double(
984 SelectVectorSwizzle2<Index0, Index1>(Vec),
985 SelectVectorSwizzle2<Index2, Index3>(Vec)
986 );
987#endif
988 }
989
990 // Specializations
991 template<> FORCEINLINE VectorRegister4Double VectorSwizzleTemplate<0, 1, 2, 3>(const VectorRegister4Double& Vec) { return Vec; } // Identity
992
993 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
994 // Double replicate
995 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
996
997 template <int Index>
998 FORCEINLINE VectorRegister2Double VectorReplicateImpl2(const VectorRegister2Double& Vec)
999 {
1000 // Note: 2 doubles (VectorRegister2Double / m128d)
1001 return _mm_shuffle_pd(Vec, Vec, SHUFFLEMASK2(Index, Index));
1002 }
1003
1004 // Double replicate (4 doubles)
1005 template <int Index, typename std::enable_if< (Index <= 1), bool >::type = true >
1006 FORCEINLINE VectorRegister4Double VectorReplicateImpl4(const VectorRegister4Double& Vec)
1007 {
1008 VectorRegister2Double Temp = VectorReplicateImpl2<Index>(Vec.GetXY());
1009 return VectorRegister4Double(Temp, Temp);
1010 }
1011
1012 template <int Index, typename std::enable_if< (Index >= 2), bool >::type = true >
1013 FORCEINLINE VectorRegister4Double VectorReplicateImpl4(const VectorRegister4Double& Vec)
1014 {
1015 VectorRegister2Double Temp = VectorReplicateImpl2<Index - 2>(Vec.GetZW());
1016 return VectorRegister4Double(Temp, Temp);
1017 }
1018
1019 //
1020 // Double replicate wrapper
1021 //
1022 template<int Index>
1023 FORCEINLINE VectorRegister4Double VectorReplicateTemplate(const VectorRegister4Double& Vec)
1024 {
1025 static_assert(Index >= 0 && Index <= 3, "Invalid Index");
1026
1027#if UE_PLATFORM_MATH_USE_AVX_2
1028 return VectorSwizzleTemplate<Index, Index, Index, Index>(Vec);
1029#else
1030 return VectorReplicateImpl4<Index>(Vec);
1031#endif
1032 }
1033
1034 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1035 // Double shuffle
1036 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1037
1038#if UE_PLATFORM_MATH_USE_AVX
1039
1040 //
1041 // Lane shuffle helper
1042 //
1043 template<int Lane0, int Lane1>
1044 FORCEINLINE VectorRegister4Double ShuffleLanes(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1045 {
1046 static_assert(Lane0 >= 0 && Lane0 <= 1 && Lane1 >= 0 && Lane1 <= 1, "Invalid Index");
1047 return _mm256_permute2f128_pd(Vec1, Vec2, PERMUTE_LANE_MASK(Lane0, Lane1));
1048 }
1049
1050 // Lane shuffle helper specialization
1051 template<> FORCEINLINE VectorRegister4Double ShuffleLanes<0, 1>(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2) { return _mm256_blend_pd(Vec1, Vec2, 0b1100); }
1052#if !UE_PLATFORM_MATH_USE_AVX_2
1053 // On AVX1, permute2f128 can be quite slow, so look for alternatives (extract + insert). On AVX2, permute2f128 is more efficient and should equal or beat (extract + insert).
1054 // Sources: https://www.agner.org/optimize/instruction_tables.pdf, https://uops.info/table.html
1055 template<> FORCEINLINE VectorRegister4Double ShuffleLanes<0, 0>(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2) { return _mm256_insertf128_pd(Vec1, Vec2.GetXY(), 1); } // copy XY to lane 1
1056 template<> FORCEINLINE VectorRegister4Double ShuffleLanes<1, 0>(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2) { return _mm256_setr_m128d(Vec1.GetZW(), Vec2.GetXY()); } // swap XY and ZW
1057 template<> FORCEINLINE VectorRegister4Double ShuffleLanes<1, 1>(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2) { return _mm256_insertf128_pd(Vec2, Vec1.GetZW(), 0); } // copy ZW to lane 0
1058#endif // !AVX2
1059
1060 //
1061 // Double shuffle helpers
1062 //
1063
1064 // When index pairs are within the same lane, SelectVectorShuffle first efficiently blends elements from the two vectors,
1065 // then efficiently swizzles within 128-bit lanes using specializations for indices [0..1][0..1][2..3][2..3]
1066 //
1067 // [0..1][0..1][2..3][2..3]
1068 template <int Index0, int Index1, int Index2, int Index3, typename std::enable_if< InLane0(Index0, Index1) && InLane1(Index2, Index3), bool >::type = true>
1069 FORCEINLINE VectorRegister4Double SelectVectorShuffle(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1070 {
1071 const VectorRegister4Double Blended = ShuffleLanes<0, 1>(Vec1, Vec2);
1072 return VectorSwizzleTemplate<Index0, Index1, Index2, Index3>(Blended);
1073 }
1074
1075 // [2..3][2..3][0..1][0..1]
1076 template <int Index0, int Index1, int Index2, int Index3, typename std::enable_if< InLane1(Index0, Index1) && InLane0(Index2, Index3), bool >::type = true>
1077 FORCEINLINE VectorRegister4Double SelectVectorShuffle(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1078 {
1079 const VectorRegister4Double Blended = ShuffleLanes<1, 0>(Vec1, Vec2);
1080 return VectorSwizzleTemplate<Index0 - 2, Index1 - 2, Index2 + 2, Index3 + 2>(Blended);
1081 }
1082
1083 // [0..1][0..1][0..1][0..1]
1084 template <int Index0, int Index1, int Index2, int Index3, typename std::enable_if< InLane0(Index0, Index1) && InLane0(Index2, Index3), bool >::type = true>
1085 FORCEINLINE VectorRegister4Double SelectVectorShuffle(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1086 {
1087 const VectorRegister4Double Blended = ShuffleLanes<0, 0>(Vec1, Vec2);
1088 return VectorSwizzleTemplate<Index0, Index1, Index2 + 2, Index3 + 2>(Blended);
1089 }
1090
1091 // [2..3][2..3][2..3][2..3]
1092 template <int Index0, int Index1, int Index2, int Index3, typename std::enable_if< InLane1(Index0, Index1) && InLane1(Index2, Index3), bool >::type = true>
1093 FORCEINLINE VectorRegister4Double SelectVectorShuffle(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1094 {
1095 const VectorRegister4Double Blended = ShuffleLanes<1, 1>(Vec1, Vec2);
1096 return VectorSwizzleTemplate<Index0 - 2, Index1 - 2, Index2, Index3>(Blended);
1097 }
1098
1099 //
1100 // Remaining cases have at least one pair doing a cross-lane swizzle.
1101 //
1102
1103 template <int Index0, int Index1, int Index2, int Index3, typename std::enable_if< InSameLane(Index0, Index1) && OutOfLane(Index2, Index3), bool >::type = true>
1104 FORCEINLINE VectorRegister4Double SelectVectorShuffle(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1105 {
1106 const VectorRegister4Double Vec1_XY = VectorSwizzleTemplate<Index0, Index1, 2, 3>(Vec1);
1107 const VectorRegister2Double Vec2_ZW = SelectVectorSwizzle2<Index2, Index3>(Vec2);
1108 return _mm256_insertf128_pd(Vec1_XY, Vec2_ZW, 0x1);
1109 }
1110
1111 template <int Index0, int Index1, int Index2, int Index3, typename std::enable_if< OutOfLane(Index0, Index1) && InSameLane(Index2, Index3), bool >::type = true>
1112 FORCEINLINE VectorRegister4Double SelectVectorShuffle(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1113 {
1114 const VectorRegister2Double Vec1_XY = SelectVectorSwizzle2<Index0, Index1>(Vec1);
1115 const VectorRegister4Double Vec2_ZW = VectorSwizzleTemplate<0, 1, Index2, Index3>(Vec2);
1116 return _mm256_insertf128_pd(Vec2_ZW, Vec1_XY, 0x0);
1117 }
1118
1119 template <int Index0, int Index1, int Index2, int Index3, typename std::enable_if< OutOfLane(Index0, Index1) && OutOfLane(Index2, Index3), bool >::type = true>
1120 FORCEINLINE VectorRegister4Double SelectVectorShuffle(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1121 {
1122 return VectorRegister4Double(
1123 SelectVectorSwizzle2<Index0, Index1>(Vec1),
1124 SelectVectorSwizzle2<Index2, Index3>(Vec2)
1125 );
1126 }
1127
1128 // AVX Double Shuffle specializations
1129 // Shuffles of 128-bit pairs, ie combinations of [0,1][2,3].
1130 template<> FORCEINLINE VectorRegister4Double SelectVectorShuffle<0, 1, 0, 1>(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2) { return ShuffleLanes<0, 0>(Vec1, Vec2); }
1131 template<> FORCEINLINE VectorRegister4Double SelectVectorShuffle<0, 1, 2, 3>(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2) { return ShuffleLanes<0, 1>(Vec1, Vec2); }
1132 template<> FORCEINLINE VectorRegister4Double SelectVectorShuffle<2, 3, 0, 1>(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2) { return ShuffleLanes<1, 0>(Vec1, Vec2); }
1133 template<> FORCEINLINE VectorRegister4Double SelectVectorShuffle<2, 3, 2, 3>(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2) { return ShuffleLanes<1, 1>(Vec1, Vec2); }
1134
1135#else
1136
1137 // Non-AVX implementation
1138 template<int Index0, int Index1, int Index2, int Index3>
1139 FORCEINLINE VectorRegister4Double SelectVectorShuffle(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1140 {
1141 return VectorRegister4Double(
1142 SelectVectorSwizzle2<Index0, Index1>(Vec1),
1143 SelectVectorSwizzle2<Index2, Index3>(Vec2)
1144 );
1145 }
1146
1147#endif // AVX
1148
1149 //
1150 // Double shuffle wrapper
1151 //
1152 template<int Index0, int Index1, int Index2, int Index3>
1153 FORCEINLINE VectorRegister4Double VectorShuffleTemplate(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1154 {
1155 static_assert(Index0 >= 0 && Index0 <= 3 && Index1 >= 0 && Index1 <= 3 && Index2 >= 0 && Index2 <= 3 && Index3 >= 0 && Index3 <= 3, "Invalid Index");
1156 return SelectVectorShuffle<Index0, Index1, Index2, Index3>(Vec1, Vec2);
1157 }
1158
1159 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1160 // Float swizzle
1161 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1162
1163 template<int Index0, int Index1, int Index2, int Index3>
1164 FORCEINLINE VectorRegister4Float VectorSwizzleTemplate(const VectorRegister4Float& Vec)
1165 {
1166 VectorRegister4Float Result = _mm_shuffle_ps(Vec, Vec, SHUFFLEMASK(Index0, Index1, Index2, Index3));
1167 return Result;
1168 }
1169
1170 // Float Swizzle specializations.
1171 // These can result in no-ops or simpler ops than shuffle which don't compete with the shuffle unit, or which can copy directly to the destination and avoid an intermediate mov.
1172 // See: https://stackoverflow.com/questions/56238197/what-is-the-difference-between-mm-movehdup-ps-and-mm-shuffle-ps-in-this-case
1173 template<> FORCEINLINE VectorRegister4Float VectorSwizzleTemplate<0, 1, 2, 3>(const VectorRegister4Float& Vec) { return Vec; }
1174 template<> FORCEINLINE VectorRegister4Float VectorSwizzleTemplate<0, 1, 0, 1>(const VectorRegister4Float& Vec) { return _mm_movelh_ps(Vec, Vec); }
1175 template<> FORCEINLINE VectorRegister4Float VectorSwizzleTemplate<2, 3, 2, 3>(const VectorRegister4Float& Vec) { return _mm_movehl_ps(Vec, Vec); }
1176 template<> FORCEINLINE VectorRegister4Float VectorSwizzleTemplate<0, 0, 1, 1>(const VectorRegister4Float& Vec) { return _mm_unpacklo_ps(Vec, Vec); }
1177 template<> FORCEINLINE VectorRegister4Float VectorSwizzleTemplate<2, 2, 3, 3>(const VectorRegister4Float& Vec) { return _mm_unpackhi_ps(Vec, Vec); }
1178
1179#if UE_PLATFORM_MATH_USE_SSE4_1
1180 template<> FORCEINLINE VectorRegister4Float VectorSwizzleTemplate<0, 0, 2, 2>(const VectorRegister4Float& Vec) { return _mm_moveldup_ps(Vec); }
1181 template<> FORCEINLINE VectorRegister4Float VectorSwizzleTemplate<1, 1, 3, 3>(const VectorRegister4Float& Vec) { return _mm_movehdup_ps(Vec); }
1182#endif
1183
1184#if UE_PLATFORM_MATH_USE_AVX_2
1185 template<> FORCEINLINE VectorRegister4Float VectorSwizzleTemplate<0, 0, 0, 0>(const VectorRegister4Float& Vec) { return _mm_broadcastss_ps(Vec); }
1186#endif
1187
1188 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1189 // Float replicate
1190 template<int Index>
1191 FORCEINLINE VectorRegister4Float VectorReplicateTemplate(const VectorRegister4Float& Vec)
1192 {
1193 static_assert(Index >= 0 && Index <= 3, "Invalid Index");
1194 return VectorSwizzleTemplate<Index, Index, Index, Index>(Vec);
1195 }
1196
1197 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1198 // Float shuffle
1199 template<int Index0, int Index1, int Index2, int Index3>
1200 FORCEINLINE VectorRegister4Float VectorShuffleTemplate(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2)
1201 {
1202 static_assert(Index0 >= 0 && Index0 <= 3 && Index1 >= 0 && Index1 <= 3 && Index2 >= 0 && Index2 <= 3 && Index3 >= 0 && Index3 <= 3, "Invalid Index");
1203 return _mm_shuffle_ps(Vec1, Vec2, SHUFFLEMASK(Index0, Index1, Index2, Index3));
1204 }
1205
1206 // Float Shuffle specializations
1207 template<> FORCEINLINE VectorRegister4Float VectorShuffleTemplate<0, 1, 0, 1>(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2) { return _mm_movelh_ps(Vec1, Vec2); }
1208 template<> FORCEINLINE VectorRegister4Float VectorShuffleTemplate<2, 3, 2, 3>(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2) { return _mm_movehl_ps(Vec2, Vec1); } // Note: movehl copies first from the 2nd argument
1209
1210}; // namespace SSEPermuteHelpers
1211
1212/**
1213 * Replicates one element into all four elements and returns the new vector.
1214 *
1215 * @param Vec Source vector
1216 * @param ElementIndex Index (0-3) of the element to replicate
1217 * @return VectorRegister4Float( Vec[ElementIndex], Vec[ElementIndex], Vec[ElementIndex], Vec[ElementIndex] )
1218 */
1219
1220#define VectorReplicate( Vec, ElementIndex ) SSEPermuteHelpers::VectorReplicateTemplate<ElementIndex>(Vec)
1221
1222 /**
1223 * Swizzles the 4 components of a vector and returns the result.
1224 *
1225 * @param Vec Source vector
1226 * @param X Index for which component to use for X (literal 0-3)
1227 * @param Y Index for which component to use for Y (literal 0-3)
1228 * @param Z Index for which component to use for Z (literal 0-3)
1229 * @param W Index for which component to use for W (literal 0-3)
1230 * @return The swizzled vector
1231 */
1232#define VectorSwizzle( Vec, X, Y, Z, W ) SSEPermuteHelpers::VectorSwizzleTemplate<X,Y,Z,W>( Vec )
1233
1234 /**
1235 * Creates a vector through selecting two components from each vector via a shuffle mask.
1236 *
1237 * @param Vec1 Source vector1
1238 * @param Vec2 Source vector2
1239 * @param X Index for which component of Vector1 to use for X (literal 0-3)
1240 * @param Y Index for which component of Vector1 to use for Y (literal 0-3)
1241 * @param Z Index for which component of Vector2 to use for Z (literal 0-3)
1242 * @param W Index for which component of Vector2 to use for W (literal 0-3)
1243 * @return The swizzled vector
1244 */
1245#define VectorShuffle( Vec1, Vec2, X, Y, Z, W ) SSEPermuteHelpers::VectorShuffleTemplate<X,Y,Z,W>( Vec1, Vec2 )
1246
1247
1248/**
1249 * Returns the absolute value (component-wise).
1250 *
1251 * @param Vec Source vector
1252 * @return VectorRegister4Float( abs(Vec.x), abs(Vec.y), abs(Vec.z), abs(Vec.w) )
1253 */
1254FORCEINLINE VectorRegister4Float VectorAbs(const VectorRegister4Float& Vec)
1255{
1256 return _mm_and_ps(Vec, GlobalVectorConstants::SignMask());
1257}
1258
1259FORCEINLINE VectorRegister4Double VectorAbs(const VectorRegister4Double& Vec)
1260{
1261 VectorRegister4Double Result;
1262#if !UE_PLATFORM_MATH_USE_AVX
1263 VectorRegister2Double DoubleSignMask2d = MakeVectorRegister2DoubleMask(~(uint64(1) << 63), ~(uint64(1) << 63));
1264 Result.XY = _mm_and_pd(Vec.XY, DoubleSignMask2d);
1265 Result.ZW = _mm_and_pd(Vec.ZW, DoubleSignMask2d);
1266#else
1267 Result = _mm256_and_pd(Vec, GlobalVectorConstants::DoubleSignMask());
1268#endif
1269 return Result;
1270}
1271
1272/**
1273 * Returns the negated value (component-wise).
1274 *
1275 * @param Vec Source vector
1276 * @return VectorRegister4Float( -Vec.x, -Vec.y, -Vec.z, -Vec.w )
1277 */
1278FORCEINLINE VectorRegister4Float VectorNegate(const VectorRegister4Float& Vec)
1279{
1280 return _mm_sub_ps(_mm_setzero_ps(), Vec);
1281}
1282
1283FORCEINLINE VectorRegister4Double VectorNegate(const VectorRegister4Double& Vec)
1284{
1285 VectorRegister4Double Result;
1286#if !UE_PLATFORM_MATH_USE_AVX
1287 Result.XY = _mm_sub_pd(_mm_setzero_pd(), Vec.XY);
1288 Result.ZW = _mm_sub_pd(_mm_setzero_pd(), Vec.ZW);
1289#else
1290 Result = _mm256_sub_pd(_mm256_setzero_pd(), Vec);
1291#endif
1292 return Result;
1293}
1294
1295/**
1296 * Adds two vectors (component-wise) and returns the result.
1297 *
1298 * @param Vec1 1st vector
1299 * @param Vec2 2nd vector
1300 * @return VectorRegister4Float( Vec1.x+Vec2.x, Vec1.y+Vec2.y, Vec1.z+Vec2.z, Vec1.w+Vec2.w )
1301 */
1302
1303FORCEINLINE VectorRegister4Float VectorAdd( const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2 )
1304{
1305 return _mm_add_ps(Vec1, Vec2);
1306}
1307
1308FORCEINLINE VectorRegister4Double VectorAdd(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1309{
1310 VectorRegister4Double Result;
1311#if !UE_PLATFORM_MATH_USE_AVX
1312 Result.XY = _mm_add_pd(Vec1.XY, Vec2.XY);
1313 Result.ZW = _mm_add_pd(Vec1.ZW, Vec2.ZW);
1314#else
1315 Result = _mm256_add_pd(Vec1, Vec2);
1316#endif
1317 return Result;
1318}
1319
1320/**
1321 * Subtracts a vector from another (component-wise) and returns the result.
1322 *
1323 * @param Vec1 1st vector
1324 * @param Vec2 2nd vector
1325 * @return VectorRegister4Float( Vec1.x-Vec2.x, Vec1.y-Vec2.y, Vec1.z-Vec2.z, Vec1.w-Vec2.w )
1326 */
1327FORCEINLINE VectorRegister4Float VectorSubtract( const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2 )
1328{
1329 return _mm_sub_ps(Vec1, Vec2);
1330}
1331
1332FORCEINLINE VectorRegister4Double VectorSubtract(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1333{
1334 VectorRegister4Double Result;
1335#if !UE_PLATFORM_MATH_USE_AVX
1336 Result.XY = _mm_sub_pd(Vec1.XY, Vec2.XY);
1337 Result.ZW = _mm_sub_pd(Vec1.ZW, Vec2.ZW);
1338#else
1339 Result = _mm256_sub_pd(Vec1, Vec2);
1340#endif
1341 return Result;
1342}
1343
1344/**
1345 * Multiplies two vectors (component-wise) and returns the result.
1346 *
1347 * @param Vec1 1st vector
1348 * @param Vec2 2nd vector
1349 * @return VectorRegister4Float( Vec1.x*Vec2.x, Vec1.y*Vec2.y, Vec1.z*Vec2.z, Vec1.w*Vec2.w )
1350 */
1351FORCEINLINE VectorRegister4Float VectorMultiply( const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2 )
1352{
1353 return _mm_mul_ps(Vec1, Vec2);
1354}
1355
1356FORCEINLINE VectorRegister4Double VectorMultiply(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1357{
1358 VectorRegister4Double Result;
1359#if !UE_PLATFORM_MATH_USE_AVX
1360 Result.XY = _mm_mul_pd(Vec1.XY, Vec2.XY);
1361 Result.ZW = _mm_mul_pd(Vec1.ZW, Vec2.ZW);
1362#else
1363 Result = _mm256_mul_pd(Vec1, Vec2);
1364#endif
1365 return Result;
1366}
1367
1368
1369
1370/**
1371 * Multiplies two vectors (component-wise), adds in the third vector and returns the result. (A*B + C)
1372 *
1373 * @param A 1st vector
1374 * @param B 2nd vector
1375 * @param C 3rd vector
1376 * @return VectorRegister4Float( A.x*B.x + C.x, A.y*B.y + C.y, A.z*B.z + C.z, A.w*B.w + C.w )
1377 */
1378FORCEINLINE VectorRegister4Float VectorMultiplyAdd(const VectorRegister4Float& A, const VectorRegister4Float& B, const VectorRegister4Float& C)
1379{
1380#if UE_PLATFORM_MATH_USE_FMA3
1381 return _mm_fmadd_ps(A, B, C);
1382#else
1383 return VectorAdd(VectorMultiply(A, B), C);
1384#endif
1385}
1386
1387FORCEINLINE VectorRegister4Double VectorMultiplyAdd(const VectorRegister4Double& A, const VectorRegister4Double& B, const VectorRegister4Double& C)
1388{
1389#if UE_PLATFORM_MATH_USE_FMA3 && UE_PLATFORM_MATH_USE_AVX
1390 return _mm256_fmadd_pd(A, B, C);
1391#elif UE_PLATFORM_MATH_USE_FMA3
1392 VectorRegister4Double Result;
1393 Result.XY = _mm_fmadd_pd(A.XY, B.XY, C.XY);
1394 Result.ZW = _mm_fmadd_pd(A.ZW, B.ZW, C.ZW);
1395 return Result;
1396#else
1397 return VectorAdd(VectorMultiply(A, B), C);
1398#endif
1399}
1400
1401/**
1402 * Multiplies two vectors (component-wise), negates the results and adds it to the third vector i.e. (-A*B + C) = (C - A*B)
1403 *
1404 * @param A 1st vector
1405 * @param B 2nd vector
1406 * @param C 3rd vector
1407 * @return VectorRegister( C.x - A.x*B.x, C.y - A.y*B.y, C.z - A.z*B.z, C.w - A.w*B.w )
1408 */
1409FORCEINLINE VectorRegister4Float VectorNegateMultiplyAdd(const VectorRegister4Float& A, const VectorRegister4Float& B, const VectorRegister4Float& C)
1410{
1411#if UE_PLATFORM_MATH_USE_FMA3
1412 return _mm_fnmadd_ps(A, B, C);
1413#else
1414 return VectorSubtract(C, VectorMultiply(A, B));
1415#endif
1416}
1417
1418FORCEINLINE VectorRegister4Double VectorNegateMultiplyAdd(const VectorRegister4Double& A, const VectorRegister4Double& B, const VectorRegister4Double& C)
1419{
1420#if UE_PLATFORM_MATH_USE_FMA3 && UE_PLATFORM_MATH_USE_AVX
1421 return _mm256_fnmadd_pd(A, B, C);
1422#elif UE_PLATFORM_MATH_USE_FMA3
1423 VectorRegister4Double Result;
1424 Result.XY = _mm_fnmadd_pd(A.XY, B.XY, C.XY);
1425 Result.ZW = _mm_fnmadd_pd(A.ZW, B.ZW, C.ZW);
1426 return Result;
1427#else
1428 return VectorSubtract(C, VectorMultiply(A, B));
1429#endif
1430}
1431
1432
1433/**
1434 * Divides two vectors (component-wise) and returns the result.
1435 *
1436 * @param Vec1 1st vector
1437 * @param Vec2 2nd vector
1438 * @return VectorRegister4Float( Vec1.x/Vec2.x, Vec1.y/Vec2.y, Vec1.z/Vec2.z, Vec1.w/Vec2.w )
1439 */
1440FORCEINLINE VectorRegister4Float VectorDivide(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2)
1441{
1442 return _mm_div_ps(Vec1, Vec2);
1443}
1444
1445FORCEINLINE VectorRegister4Double VectorDivide(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1446{
1447 VectorRegister4Double Result;
1448#if !UE_PLATFORM_MATH_USE_AVX
1449 Result.XY = _mm_div_pd(Vec1.XY, Vec2.XY);
1450 Result.ZW = _mm_div_pd(Vec1.ZW, Vec2.ZW);
1451#else
1452 Result = _mm256_div_pd(Vec1, Vec2);
1453#endif
1454 return Result;
1455}
1456
1457namespace SSEVectorHelperFuncs
1458{
1459 // Computes VectorDot3 but only with the result in the first (X) element of a VectorRegister4Float
1460 FORCEINLINE VectorRegister4Float InternalVectorDot3X(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2)
1461 {
1462 // (X, Y, Z, W)
1463 VectorRegister4Float Prod = VectorMultiply(Vec1, Vec2);
1464 // (Y, Y, W, W)
1465 VectorRegister4Float Shuf = VectorSwizzle(Prod, 1, 1, 3, 3); // _mm_movehdup_ps on SSE4.1, shuffle otherwise
1466 // (X+Y, ???, ???, ???)
1467 VectorRegister4Float Sum = VectorAdd(Prod, Shuf);
1468 // (Z, W, Z, W)
1469 Shuf = VectorSwizzle(Prod, 2, 3, 2, 3); // _mm_movehl_ps
1470 // (X+Y+Z, ???, ???, ???)
1471 Sum = VectorAdd(Sum, Shuf);
1472 return Sum;
1473 }
1474
1475 // Computes VectorDot3 but only with the result in the first (X) element of a VectorRegister4Double
1476 FORCEINLINE VectorRegister4Double InternalVectorDot3X_Full(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1477 {
1478 // (X, Y, Z, W)
1479 VectorRegister4Double Prod = VectorMultiply(Vec1, Vec2);
1480 // (Y, Y, W, W)
1481 VectorRegister4Double Shuf = VectorSwizzle(Prod, 1, 1, 3, 3); // fast in-lane permute on AVX (_mm256_permute_pd)
1482 // (X+Y, ???, ???, ???)
1483 VectorRegister4Double Sum = VectorAdd(Prod, Shuf);
1484 // (Z, W, Z, W)
1485 Shuf = VectorSwizzle(Prod, 2, 3, 2, 3); // various specializations exist for this depending on platform
1486 // (X+Y+Z, ???, ???, ???)
1487 Sum = VectorAdd(Sum, Shuf);
1488
1489 return Sum;
1490 }
1491
1492 // Computes VectorDot3 but only with the result in the first (X) element of a VectorRegister2Double (half of VectorRegister4Double)
1493 FORCEINLINE VectorRegister2Double InternalVectorDot3X_Half(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1494 {
1495 VectorRegister2Double T, A;
1496
1497 // (X, Y)
1498 T = _mm_mul_pd(Vec1.XY, Vec2.XY);
1499
1500 // (X + Z, Y + W)
1501#if UE_PLATFORM_MATH_USE_FMA3
1502 A = _mm_fmadd_pd(Vec1.ZW, Vec2.ZW, T);
1503#else
1504 A = _mm_add_pd(_mm_mul_pd(Vec1.ZW, Vec2.ZW), T);
1505#endif // UE_PLATFORM_MATH_USE_FMA3
1506
1507 // (Y, X) // Reverse of T
1508 T = _mm_shuffle_pd(T, T, SHUFFLEMASK2(1, 0));
1509
1510 // (X + Z + Y, Y + W + X)
1511 T = _mm_add_pd(A, T);
1512
1513 return T;
1514 }
1515
1516} // namespace SSEVectorHelperFuncs
1517
1518
1519/**
1520 * Calculates the dot3 product of two vectors and returns a scalar value.
1521 *
1522 * @param Vec1 1st vector
1523 * @param Vec2 2nd vector
1524 * @return d = dot3(Vec1.xyz, Vec2.xyz)
1525 */
1526FORCEINLINE float VectorDot3Scalar(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2)
1527{
1528 return VectorGetComponent(SSEVectorHelperFuncs::InternalVectorDot3X(Vec1, Vec2), 0);
1529}
1530
1531FORCEINLINE double VectorDot3Scalar(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1532{
1533#if UE_PLATFORM_MATH_USE_AVX
1534 return VectorGetComponent(SSEVectorHelperFuncs::InternalVectorDot3X_Full(Vec1, Vec2), 0);
1535#else
1536 VectorRegister2Double T = SSEVectorHelperFuncs::InternalVectorDot3X_Half(Vec1, Vec2);
1537 // Extract first component
1538 return _mm_cvtsd_f64(T);
1539#endif
1540}
1541
1542/**
1543 * Calculates the dot3 product of two vectors and returns a vector with the result in all 4 components.
1544 *
1545 * @param Vec1 1st vector
1546 * @param Vec2 2nd vector
1547 * @return d = dot3(Vec1.xyz, Vec2.xyz), VectorRegister4Float( d, d, d, d )
1548 */
1549FORCEINLINE VectorRegister4Float VectorDot3(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2)
1550{
1551 return VectorReplicate(SSEVectorHelperFuncs::InternalVectorDot3X(Vec1, Vec2), 0);
1552}
1553
1554FORCEINLINE VectorRegister4Double VectorDot3(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1555{
1556#if UE_PLATFORM_MATH_USE_AVX
1557 return VectorReplicate(SSEVectorHelperFuncs::InternalVectorDot3X_Full(Vec1, Vec2), 0);
1558#else
1559 VectorRegister2Double T = SSEVectorHelperFuncs::InternalVectorDot3X_Half(Vec1, Vec2);
1560 // Replicate in half (X,X)
1561 T = _mm_shuffle_pd(T, T, SHUFFLEMASK2(0, 0));
1562 // Replicate in full (X,X,X,X)
1563 return VectorRegister4Double(T, T);
1564#endif
1565}
1566
1567/**
1568 * Calculates the dot4 product of two vectors and returns a vector with the result in all 4 components.
1569 *
1570 * @param Vec1 1st vector
1571 * @param Vec2 2nd vector
1572 * @return d = dot4(Vec1, Vec2), VectorRegister4Float( d, d, d, d )
1573 */
1574FORCEINLINE VectorRegister4Float VectorDot4( const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2 )
1575{
1576 VectorRegister4Float R, T;
1577 R = VectorMultiply(Vec1, Vec2); // (XX, YY, ZZ, WW)
1578 T = VectorSwizzle(R, 1, 0, 3, 2); // (YY, XX, WW, ZZ)
1579 R = VectorAdd(R, T); // (XX + YY, YY + XX, ZZ + WW, WW + ZZ)
1580 T = VectorSwizzle(R, 2, 3, 0, 1); // (ZZ + WW, WW + ZZ, XX + YY, YY + XX)
1581 return VectorAdd(R, T); // (XX + YY + ZZ + WW, YY + XX + WW + ZZ, ZZ + WW + XX + YY, WW + ZZ + YY + XX)
1582}
1583
1584FORCEINLINE VectorRegister4Double VectorDot4(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1585{
1586#if UE_PLATFORM_MATH_USE_AVX
1587 // AVX implementation uses fast permutes
1588 VectorRegister4Double R, T;
1589 R = VectorMultiply(Vec1, Vec2); // (XX, YY, ZZ, WW)
1590 T = VectorSwizzle(R, 1, 0, 3, 2); // (YY, XX, WW, ZZ) // fast in-lane permute
1591 R = VectorAdd(R, T); // (XX + YY, YY + XX, ZZ + WW, WW + ZZ)
1592 T = VectorSwizzle(R, 2, 3, 0, 1); // (ZZ + WW, WW + ZZ, XX + YY, YY + XX) // lane-swap permute
1593 return VectorAdd(R, T); // (XX + YY + ZZ + WW, YY + XX + WW + ZZ, ZZ + WW + XX + YY, WW + ZZ + YY + XX)
1594#else
1595 VectorRegister2Double T, A;
1596
1597 // (X, Y)
1598 T = _mm_mul_pd(Vec1.XY, Vec2.XY);
1599
1600 // (X + Z, Y + W)
1601#if UE_PLATFORM_MATH_USE_FMA3
1602 A = _mm_fmadd_pd(Vec1.ZW, Vec2.ZW, T);
1603#else
1604 A = _mm_add_pd(_mm_mul_pd(Vec1.ZW, Vec2.ZW), T);
1605#endif // UE_PLATFORM_MATH_USE_FMA3
1606
1607 // (Y + W, X + Z) // Reverse of A
1608 T = _mm_shuffle_pd(A, A, SHUFFLEMASK2(1, 0));
1609
1610 // (X + Z + Y + W, Y + W + X + Z)
1611 T = _mm_add_pd(A, T);
1612 return VectorRegister4Double(T, T);
1613#endif
1614}
1615
1616/**
1617 * Creates a four-part mask based on component-wise == compares of the input vectors
1618 *
1619 * @param Vec1 1st vector
1620 * @param Vec2 2nd vector
1621 * @return VectorRegister4Float( Vec1.x == Vec2.x ? 0xFFFFFFFF : 0, same for yzw )
1622 */
1623FORCEINLINE VectorRegister4Float VectorCompareEQ(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2)
1624{
1625 return _mm_cmpeq_ps(Vec1, Vec2);
1626}
1627
1628FORCEINLINE VectorRegister4Double VectorCompareEQ(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1629{
1630 VectorRegister4Double Result;
1631#if !UE_PLATFORM_MATH_USE_AVX
1632 Result.XY = _mm_cmpeq_pd(Vec1.XY, Vec2.XY);
1633 Result.ZW = _mm_cmpeq_pd(Vec1.ZW, Vec2.ZW);
1634#else
1635 Result = _mm256_cmp_pd(Vec1, Vec2, _CMP_EQ_OQ);
1636#endif
1637 return Result;
1638}
1639
1640/**
1641 * Creates a four-part mask based on component-wise != compares of the input vectors
1642 *
1643 * @param Vec1 1st vector
1644 * @param Vec2 2nd vector
1645 * @return VectorRegister4Float( Vec1.x != Vec2.x ? 0xFFFFFFFF : 0, same for yzw )
1646 */
1647FORCEINLINE VectorRegister4Float VectorCompareNE(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2)
1648{
1649 return _mm_cmpneq_ps(Vec1, Vec2);
1650}
1651
1652FORCEINLINE VectorRegister4Double VectorCompareNE(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1653{
1654 VectorRegister4Double Result;
1655#if !UE_PLATFORM_MATH_USE_AVX
1656 Result.XY = _mm_cmpneq_pd(Vec1.XY, Vec2.XY);
1657 Result.ZW = _mm_cmpneq_pd(Vec1.ZW, Vec2.ZW);
1658#else
1659 // For X != Y, if either is NaN it should return true (this matches the normal C behavior).
1660 // We use the *unordered* comparison operation that is true if either value is NaN.
1661 Result = _mm256_cmp_pd(Vec1, Vec2, _CMP_NEQ_UQ);
1662#endif
1663 return Result;
1664}
1665
1666/**
1667 * Creates a four-part mask based on component-wise > compares of the input vectors
1668 *
1669 * @param Vec1 1st vector
1670 * @param Vec2 2nd vector
1671 * @return VectorRegister4Float( Vec1.x > Vec2.x ? 0xFFFFFFFF : 0, same for yzw )
1672 */
1673FORCEINLINE VectorRegister4Float VectorCompareGT(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2)
1674{
1675 return _mm_cmpgt_ps(Vec1, Vec2);
1676}
1677
1678FORCEINLINE VectorRegister4Double VectorCompareGT(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1679{
1680 VectorRegister4Double Result;
1681#if !UE_PLATFORM_MATH_USE_AVX
1682 Result.XY = _mm_cmpgt_pd(Vec1.XY, Vec2.XY);
1683 Result.ZW = _mm_cmpgt_pd(Vec1.ZW, Vec2.ZW);
1684#else
1685 Result = _mm256_cmp_pd(Vec1, Vec2, _CMP_GT_OQ);
1686#endif
1687 return Result;
1688}
1689
1690/**
1691 * Creates a four-part mask based on component-wise >= compares of the input vectors
1692 *
1693 * @param Vec1 1st vector
1694 * @param Vec2 2nd vector
1695 * @return VectorRegister4Float( Vec1.x >= Vec2.x ? 0xFFFFFFFF : 0, same for yzw )
1696 */
1697FORCEINLINE VectorRegister4Float VectorCompareGE(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2)
1698{
1699 return _mm_cmpge_ps(Vec1, Vec2);
1700}
1701
1702FORCEINLINE VectorRegister4Double VectorCompareGE(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1703{
1704 VectorRegister4Double Result;
1705#if !UE_PLATFORM_MATH_USE_AVX
1706 Result.XY = _mm_cmpge_pd(Vec1.XY, Vec2.XY);
1707 Result.ZW = _mm_cmpge_pd(Vec1.ZW, Vec2.ZW);
1708#else
1709 Result = _mm256_cmp_pd(Vec1, Vec2, _CMP_GE_OQ);
1710#endif
1711 return Result;
1712}
1713
1714 /**
1715 * Creates a four-part mask based on component-wise < compares of the input vectors
1716 *
1717 * @param Vec1 1st vector
1718 * @param Vec2 2nd vector
1719 * @return VectorRegister4Float( Vec1.x < Vec2.x ? 0xFFFFFFFF : 0, same for yzw )
1720 */
1721FORCEINLINE VectorRegister4Float VectorCompareLT(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2)
1722{
1723 return _mm_cmplt_ps(Vec1, Vec2);
1724}
1725
1726FORCEINLINE VectorRegister4Double VectorCompareLT(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1727{
1728 VectorRegister4Double Result;
1729#if !UE_PLATFORM_MATH_USE_AVX
1730 Result.XY = _mm_cmplt_pd(Vec1.XY, Vec2.XY);
1731 Result.ZW = _mm_cmplt_pd(Vec1.ZW, Vec2.ZW);
1732#else
1733 Result = _mm256_cmp_pd(Vec1, Vec2, _CMP_LT_OQ);
1734#endif
1735 return Result;
1736}
1737
1738 /**
1739 * Creates a four-part mask based on component-wise <= compares of the input vectors
1740 *
1741 * @param Vec1 1st vector
1742 * @param Vec2 2nd vector
1743 * @return VectorRegister4Float( Vec1.x <= Vec2.x ? 0xFFFFFFFF : 0, same for yzw )
1744 */
1745FORCEINLINE VectorRegister4Float VectorCompareLE(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2)
1746{
1747 return _mm_cmple_ps(Vec1, Vec2);
1748}
1749
1750FORCEINLINE VectorRegister4Double VectorCompareLE(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1751{
1752 VectorRegister4Double Result;
1753#if !UE_PLATFORM_MATH_USE_AVX
1754 Result.XY = _mm_cmple_pd(Vec1.XY, Vec2.XY);
1755 Result.ZW = _mm_cmple_pd(Vec1.ZW, Vec2.ZW);
1756#else
1757 Result = _mm256_cmp_pd(Vec1, Vec2, _CMP_LE_OQ);
1758#endif
1759 return Result;
1760}
1761
1762/**
1763 * Does a bitwise vector selection based on a mask (e.g., created from VectorCompareXX)
1764 *
1765 * @param Mask Mask (when 1: use the corresponding bit from Vec1 otherwise from Vec2)
1766 * @param Vec1 1st vector
1767 * @param Vec2 2nd vector
1768 * @return VectorRegister4Float( for each bit i: Mask[i] ? Vec1[i] : Vec2[i] )
1769 *
1770 */
1771
1772FORCEINLINE VectorRegister4Float VectorSelect(const VectorRegister4Float& Mask, const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2 )
1773{
1774 return _mm_xor_ps(Vec2, _mm_and_ps(Mask, _mm_xor_ps(Vec1, Vec2)));
1775}
1776
1777FORCEINLINE VectorRegister2Double VectorSelect(const VectorRegister2Double& Mask, const VectorRegister2Double& Vec1, const VectorRegister2Double& Vec2)
1778{
1779 return _mm_xor_pd(Vec2, _mm_and_pd(Mask, _mm_xor_pd(Vec1, Vec2)));
1780}
1781
1782FORCEINLINE VectorRegister4Double VectorSelect(const VectorRegister4Double& Mask, const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1783{
1784 VectorRegister4Double Result;
1785#if !UE_PLATFORM_MATH_USE_AVX
1786 Result.XY = VectorSelect(Mask.XY, Vec1.XY, Vec2.XY);
1787 Result.ZW = VectorSelect(Mask.ZW, Vec1.ZW, Vec2.ZW);
1788#else
1789 Result = _mm256_xor_pd(Vec2, _mm256_and_pd(Mask, _mm256_xor_pd(Vec1, Vec2)));
1790#endif
1791 return Result;
1792}
1793
1794/**
1795 * Combines two vectors using bitwise OR (treating each vector as a 128 bit field)
1796 *
1797 * @param Vec1 1st vector
1798 * @param Vec2 2nd vector
1799 * @return VectorRegister4Float( for each bit i: Vec1[i] | Vec2[i] )
1800 */
1801FORCEINLINE VectorRegister4Float VectorBitwiseOr(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2)
1802{
1803 return _mm_or_ps(Vec1, Vec2);
1804}
1805
1806FORCEINLINE VectorRegister4Double VectorBitwiseOr(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1807{
1808 VectorRegister4Double Result;
1809#if !UE_PLATFORM_MATH_USE_AVX
1810 Result.XY = _mm_or_pd(Vec1.XY, Vec2.XY);
1811 Result.ZW = _mm_or_pd(Vec1.ZW, Vec2.ZW);
1812#else
1813 Result = _mm256_or_pd(Vec1, Vec2);
1814#endif
1815 return Result;
1816}
1817
1818/**
1819 * Combines two vectors using bitwise AND (treating each vector as a 128 bit field)
1820 *
1821 * @param Vec1 1st vector
1822 * @param Vec2 2nd vector
1823 * @return VectorRegister4Float( for each bit i: Vec1[i] & Vec2[i] )
1824 */
1825FORCEINLINE VectorRegister4Float VectorBitwiseAnd(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2)
1826{
1827 return _mm_and_ps(Vec1, Vec2);
1828}
1829
1830FORCEINLINE VectorRegister4Double VectorBitwiseAnd(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1831{
1832 VectorRegister4Double Result;
1833#if !UE_PLATFORM_MATH_USE_AVX
1834 Result.XY = _mm_and_pd(Vec1.XY, Vec2.XY);
1835 Result.ZW = _mm_and_pd(Vec1.ZW, Vec2.ZW);
1836#else
1837 Result = _mm256_and_pd(Vec1, Vec2);
1838#endif
1839 return Result;
1840}
1841
1842/**
1843 * Combines two vectors using bitwise XOR (treating each vector as a 128 bit field)
1844 *
1845 * @param Vec1 1st vector
1846 * @param Vec2 2nd vector
1847 * @return VectorRegister4Float( for each bit i: Vec1[i] ^ Vec2[i] )
1848 */
1849FORCEINLINE VectorRegister4Float VectorBitwiseXor(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2)
1850{
1851 return _mm_xor_ps(Vec1, Vec2);
1852}
1853
1854FORCEINLINE VectorRegister4Double VectorBitwiseXor(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1855{
1856 VectorRegister4Double Result;
1857#if !UE_PLATFORM_MATH_USE_AVX
1858 Result.XY = _mm_xor_pd(Vec1.XY, Vec2.XY);
1859 Result.ZW = _mm_xor_pd(Vec1.ZW, Vec2.ZW);
1860#else
1861 Result = _mm256_xor_pd(Vec1, Vec2);
1862#endif
1863 return Result;
1864}
1865
1866/**
1867 * Calculates the cross product of two vectors (XYZ components). W of the input should be 0, and will remain 0.
1868 *
1869 * @param Vec1 1st vector
1870 * @param Vec2 2nd vector
1871 * @return cross(Vec1.xyz, Vec2.xyz). W of the input should be 0, and will remain 0.
1872 */
1873FORCEINLINE VectorRegister4Float VectorCross( const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2 )
1874{
1875 // YZX
1876 VectorRegister4Float A = VectorSwizzle(Vec2, 1, 2, 0, 3);
1877 VectorRegister4Float B = VectorSwizzle(Vec1, 1, 2, 0, 3);
1878 // XY, YZ, ZX
1879 A = VectorMultiply(A, Vec1);
1880 // XY-YX, YZ-ZY, ZX-XZ
1881 A = VectorNegateMultiplyAdd(B, Vec2, A);
1882 // YZ-ZY, ZX-XZ, XY-YX
1883 return VectorSwizzle(A, 1, 2, 0, 3);
1884}
1885
1886FORCEINLINE VectorRegister4Double VectorCross(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
1887{
1888 // YZX
1889 VectorRegister4Double A = VectorSwizzle(Vec2, 1, 2, 0, 3);
1890 VectorRegister4Double B = VectorSwizzle(Vec1, 1, 2, 0, 3);
1891 // XY, YZ, ZX
1892 A = VectorMultiply(A, Vec1);
1893 // XY-YX, YZ-ZY, ZX-XZ
1894 A = VectorNegateMultiplyAdd(B, Vec2, A);
1895 // YZ-ZY, ZX-XZ, XY-YX
1896 return VectorSwizzle(A, 1, 2, 0, 3);
1897}
1898
1899/**
1900 * Calculates x raised to the power of y (component-wise).
1901 *
1902 * @param Base Base vector
1903 * @param Exponent Exponent vector
1904 * @return VectorRegister4Float( Base.x^Exponent.x, Base.y^Exponent.y, Base.z^Exponent.z, Base.w^Exponent.w )
1905 */
1906FORCEINLINE VectorRegister4Float VectorPow( const VectorRegister4Float& Base, const VectorRegister4Float& Exponent )
1907{
1908#if UE_PLATFORM_MATH_USE_SVML
1909 return _mm_pow_ps(Base, Exponent);
1910#else
1911 // using SseMath library
1912 return SSE::exp_ps(_mm_mul_ps(SSE::log_ps(Base), Exponent));
1913#endif
1914/*
1915 // old version, keeping for reference in case something breaks and we need to debug it.
1916 union { VectorRegister4Float v; float f[4]; } B, E;
1917 B.v = Base;
1918 E.v = Exponent;
1919 return _mm_setr_ps( powf(B.f[0], E.f[0]), powf(B.f[1], E.f[1]), powf(B.f[2], E.f[2]), powf(B.f[3], E.f[3]) );
1920*/
1921}
1922
1923FORCEINLINE VectorRegister4Double VectorPow(const VectorRegister4Double& Base, const VectorRegister4Double& Exponent)
1924{
1925#if UE_PLATFORM_MATH_USE_SVML_AVX
1926 return _mm256_pow_pd(Base, Exponent);
1927#elif UE_PLATFORM_MATH_USE_SVML
1928 return VectorRegister4Double(_mm_pow_pd(Base.XY, Exponent.XY), _mm_pow_pd(Base.ZW, Exponent.ZW));
1929#else
1930 AlignedDouble4 Values(Base);
1931 AlignedDouble4 Exponents(Exponent);
1932
1933 Values[0] = FMath::Pow(Values[0], Exponents[0]);
1934 Values[1] = FMath::Pow(Values[1], Exponents[1]);
1935 Values[2] = FMath::Pow(Values[2], Exponents[2]);
1936 Values[3] = FMath::Pow(Values[3], Exponents[3]);
1937 return Values.ToVectorRegister();
1938#endif
1939}
1940
1941/**
1942 * Return the square root of each component
1943 *
1944 * @param Vector Vector
1945 * @return VectorRegister4Float(sqrt(Vec.X), sqrt(Vec.Y), sqrt(Vec.Z), sqrt(Vec.W))
1946 */
1947FORCEINLINE VectorRegister4Float VectorSqrt(const VectorRegister4Float& Vec)
1948{
1949 return _mm_sqrt_ps(Vec);
1950}
1951
1952FORCEINLINE VectorRegister4Double VectorSqrt(const VectorRegister4Double& Vec)
1953{
1954#if UE_PLATFORM_MATH_USE_AVX
1955 return _mm256_sqrt_pd(Vec);
1956#else
1957 return VectorRegister4Double(_mm_sqrt_pd(Vec.XY), _mm_sqrt_pd(Vec.ZW));
1958#endif
1959}
1960
1961/**
1962 * Returns an estimate of 1/sqrt(c) for each component of the vector
1963 *
1964 * @param Vector Vector
1965 * @return VectorRegister4Float(1/sqrt(t), 1/sqrt(t), 1/sqrt(t), 1/sqrt(t))
1966 */
1967FORCEINLINE VectorRegister4Float VectorReciprocalSqrtEstimate(const VectorRegister4Float& Vec)
1968{
1969 // Warning: Discrepancies between Intel and AMD hardware estimates make this diverge between platforms.
1970 return _mm_rsqrt_ps(Vec);
1971}
1972
1973/**
1974 * Return the reciprocal of the square root of each component
1975 *
1976 * @param Vector Vector
1977 * @return VectorRegister4Float(1/sqrt(Vec.X), 1/sqrt(Vec.Y), 1/sqrt(Vec.Z), 1/sqrt(Vec.W))
1978 */
1979FORCEINLINE VectorRegister4Float VectorReciprocalSqrt(const VectorRegister4Float& Vec)
1980{
1981#if UE_PLATFORM_MATH_USE_SVML && 0 // NOTE: DISABLED
1982 // TODO: this appears to deliver slightly different results on Intel vs AMD hardware,
1983 // similar to prior issues with our use of rsqrt refinements in UnrealPlatformMathSSE.
1984 return _mm_invsqrt_ps(Vec);
1985#else
1986 return VectorDivide(GlobalVectorConstants::FloatOne, VectorSqrt(Vec));
1987#endif
1988
1989 /*
1990 // Legacy implementation based on refinements of estimate, left for reference.
1991 // Discrepancies between Intel and AMD hardware estimates make this diverge between platforms,
1992 // similar to prior issues with our use of rsqrt refinements in UnrealPlatformMathSSE.
1993 //
1994 // Perform two passes of Newton-Raphson iteration on the hardware estimate
1995 // v^-0.5 = x
1996 // => x^2 = v^-1
1997 // => 1/(x^2) = v
1998 // => F(x) = x^-2 - v
1999 // F'(x) = -2x^-3
2000
2001 // x1 = x0 - F(x0)/F'(x0)
2002 // => x1 = x0 + 0.5 * (x0^-2 - Vec) * x0^3
2003 // => x1 = x0 + 0.5 * (x0 - Vec * x0^3)
2004 // => x1 = x0 + x0 * (0.5 - 0.5 * Vec * x0^2)
2005
2006 const VectorRegister4Float OneHalf = GlobalVectorConstants::FloatOneHalf;
2007 const VectorRegister4Float VecDivBy2 = VectorMultiply(Vec, OneHalf);
2008
2009 // Initial estimate
2010 const VectorRegister4Float x0 = VectorReciprocalSqrtEstimate(Vec);
2011
2012 // First iteration
2013 VectorRegister4Float x1 = VectorMultiply(x0, x0);
2014 x1 = VectorSubtract(OneHalf, VectorMultiply(VecDivBy2, x1));
2015 x1 = VectorMultiplyAdd(x0, x1, x0);
2016
2017 // Second iteration
2018 VectorRegister4Float x2 = VectorMultiply(x1, x1);
2019 x2 = VectorSubtract(OneHalf, VectorMultiply(VecDivBy2, x2));
2020 x2 = VectorMultiplyAdd(x1, x2, x1);
2021
2022 return x2;
2023 */
2024}
2025
2026FORCEINLINE VectorRegister4Double VectorReciprocalSqrt(const VectorRegister4Double& Vec)
2027{
2028#if UE_PLATFORM_MATH_USE_AVX
2029 return VectorDivide(GlobalVectorConstants::DoubleOne, _mm256_sqrt_pd(Vec));
2030#else
2031 return VectorDivide(GlobalVectorConstants::DoubleOne, VectorRegister4Double(_mm_sqrt_pd(Vec.XY), _mm_sqrt_pd(Vec.ZW)));
2032#endif
2033}
2034
2035FORCEINLINE VectorRegister4Double VectorReciprocalSqrtEstimate(const VectorRegister4Double& Vec)
2036{
2037#if UE_PLATFORM_MATH_USE_SVML_AVX
2038 return _mm256_invsqrt_pd(Vec);
2039#elif UE_PLATFORM_MATH_USE_SVML
2040 return VectorRegister4Double(_mm_invsqrt_pd(Vec.XY), _mm_invsqrt_pd(Vec.ZW));
2041#else
2042 return VectorReciprocalSqrt(Vec);
2043#endif
2044}
2045
2046
2047/**
2048 * Return Reciprocal Length of the vector
2049 *
2050 * @param Vector Vector
2051 * @return VectorRegister4Float(rlen, rlen, rlen, rlen) when rlen = 1/sqrt(dot4(V))
2052 */
2053FORCEINLINE VectorRegister4Float VectorReciprocalLen(const VectorRegister4Float& Vector)
2054{
2055 return VectorReciprocalSqrt(VectorDot4(Vector, Vector));
2056}
2057
2058FORCEINLINE VectorRegister4Double VectorReciprocalLen(const VectorRegister4Double& Vector)
2059{
2060 return VectorReciprocalSqrt(VectorDot4(Vector, Vector));
2061}
2062
2063/**
2064 * Return Reciprocal Length of the vector (estimate)
2065 *
2066 * @param Vector Vector
2067 * @return VectorRegister4Float(rlen, rlen, rlen, rlen) when rlen = 1/sqrt(dot4(V))
2068 */
2069FORCEINLINE VectorRegister4Float VectorReciprocalLenEstimate(const VectorRegister4Float& Vector)
2070{
2071 return VectorReciprocalSqrtEstimate(VectorDot4(Vector, Vector));
2072}
2073
2074FORCEINLINE VectorRegister4Double VectorReciprocalLenEstimate(const VectorRegister4Double& Vector)
2075{
2076 return VectorReciprocalSqrtEstimate(VectorDot4(Vector, Vector));
2077}
2078
2079/**
2080 * Computes an estimate of the reciprocal of a vector (component-wise) and returns the result.
2081 *
2082 * @param Vec 1st vector
2083 * @return VectorRegister4Float( (Estimate) 1.0f / Vec.x, (Estimate) 1.0f / Vec.y, (Estimate) 1.0f / Vec.z, (Estimate) 1.0f / Vec.w )
2084 */
2085
2086FORCEINLINE VectorRegister4Float VectorReciprocalEstimate(const VectorRegister4Float& Vec)
2087{
2088 // Warning: Discrepancies between Intel and AMD hardware estimates make this diverge between platforms.
2089 return _mm_rcp_ps(Vec);
2090}
2091
2092/**
2093 * Computes the reciprocal of a vector (component-wise) and returns the result.
2094 *
2095 * @param Vec 1st vector
2096 * @return VectorRegister4Float( 1.0f / Vec.x, 1.0f / Vec.y, 1.0f / Vec.z, 1.0f / Vec.w )
2097 */
2098FORCEINLINE VectorRegister4Float VectorReciprocal(const VectorRegister4Float& Vec)
2099{
2100 return VectorDivide(GlobalVectorConstants::FloatOne, Vec);
2101 /*
2102 // Legacy implementation based on refinements of estimate, left for reference.
2103 // Discrepancies between Intel and AMD hardware estimates make this diverge between platforms.
2104 //
2105 // Perform two passes of Newton-Raphson iteration on the hardware estimate
2106 // x1 = x0 - f(x0) / f'(x0)
2107 //
2108 // 1 / Vec = x
2109 // => x * Vec = 1
2110 // => F(x) = x * Vec - 1
2111 // F'(x) = Vec
2112 // => x1 = x0 - (x0 * Vec - 1) / Vec
2113 //
2114 // Since 1/Vec is what we're trying to solve, use an estimate for it, x0
2115 // => x1 = x0 - (x0 * Vec - 1) * x0 = 2 * x0 - Vec * x0^2
2116
2117 // Initial estimate
2118 const VectorRegister4Float x0 = VectorReciprocalEstimate(Vec);
2119
2120 // First iteration
2121 const VectorRegister4Float x0Squared = VectorMultiply(x0, x0);
2122 const VectorRegister4Float x0Times2 = VectorAdd(x0, x0);
2123 const VectorRegister4Float x1 = VectorNegateMultiplyAdd(Vec, x0Squared, x0Times2);
2124
2125 // Second iteration
2126 const VectorRegister4Float x1Squared = VectorMultiply(x1, x1);
2127 const VectorRegister4Float x1Times2 = VectorAdd(x1, x1);
2128 const VectorRegister4Float x2 = VectorNegateMultiplyAdd(Vec, x1Squared, x1Times2);
2129
2130 return x2;
2131 */
2132}
2133
2134FORCEINLINE VectorRegister4Double VectorReciprocal(const VectorRegister4Double& Vec)
2135{
2136 return VectorDivide(GlobalVectorConstants::DoubleOne, Vec);
2137}
2138
2139FORCEINLINE VectorRegister4Double VectorReciprocalEstimate(const VectorRegister4Double& Vec)
2140{
2141 // Not an estimate.
2142 return VectorReciprocal(Vec);
2143}
2144
2145/**
2146* Loads XYZ and sets W=0
2147*
2148* @param Vector VectorRegister4Float
2149* @return VectorRegister4Float(X, Y, Z, 0.0f)
2150*/
2151FORCEINLINE VectorRegister4Float VectorSet_W0(const VectorRegister4Float& Vec)
2152{
2153 return _mm_and_ps(Vec, GlobalVectorConstants::XYZMask());
2154}
2155
2156FORCEINLINE VectorRegister4Double VectorSet_W0(const VectorRegister4Double& Vec)
2157{
2158 VectorRegister4Double Result;
2159#if !UE_PLATFORM_MATH_USE_AVX
2160 Result.XY = Vec.XY;
2161 Result.ZW = _mm_move_sd(_mm_setzero_pd(), Vec.ZW);
2162#else
2163 Result = _mm256_blend_pd(Vec, VectorZeroDouble(), 0b1000);
2164#endif
2165 return Result;
2166}
2167
2168/**
2169* Loads XYZ and sets W=1
2170*
2171* @param Vector VectorRegister4Float
2172* @return VectorRegister4Float(X, Y, Z, 1.0f)
2173*/
2174FORCEINLINE VectorRegister4Float VectorSet_W1( const VectorRegister4Float& Vec)
2175{
2176 // Temp = (Vector[2]. Vector[3], 1.0f, 1.0f)
2177 VectorRegister4Float Temp = _mm_movehl_ps( VectorOneFloat(), Vec);
2178
2179 // Return (Vector[0], Vector[1], Vector[2], 1.0f)
2180 return VectorShuffle(Vec, Temp, 0, 1, 0, 3 );
2181}
2182
2183FORCEINLINE VectorRegister4Double VectorSet_W1(const VectorRegister4Double& Vec)
2184{
2185 VectorRegister4Double Result;
2186#if !UE_PLATFORM_MATH_USE_AVX
2187 Result.XY = Vec.XY;
2188 Result.ZW = _mm_move_sd(GlobalVectorConstants::DoubleOne2d, Vec.ZW);
2189#else
2190 Result = _mm256_blend_pd(Vec, VectorOneDouble(), 0b1000);
2191#endif
2192 return Result;
2193}
2194
2195/**
2196 * Multiplies two 4x4 matrices.
2197 *
2198 * @param Result Pointer to where the result should be stored
2199 * @param Matrix1 Pointer to the first matrix
2200 * @param Matrix2 Pointer to the second matrix
2201 */
2202void VectorMatrixMultiply(FMatrix44f* Result, const FMatrix44f* Matrix1, const FMatrix44f* Matrix2);
2203void VectorMatrixMultiply(FMatrix44d* Result, const FMatrix44d* Matrix1, const FMatrix44d* Matrix2);
2204
2205/**
2206 * Calculate the inverse of an FMatrix.
2207 *
2208 * @param DstMatrix FMatrix pointer to where the result should be stored
2209 * @param SrcMatrix FMatrix pointer to the Matrix to be inversed
2210 */
2211void VectorMatrixInverse(FMatrix44f* DstMatrix, const FMatrix44f* SrcMatrix);
2212void VectorMatrixInverse(FMatrix44d* DstMatrix, const FMatrix44d* SrcMatrix);
2213
2214
2215
2216/**
2217 * Calculate Homogeneous transform.
2218 *
2219 * @param VecP VectorRegister4Float
2220 * @param MatrixM FMatrix pointer to the Matrix to apply transform
2221 * @return VectorRegister4Float = VecP*MatrixM
2222 */
2223FORCEINLINE VectorRegister4Float VectorTransformVector(const VectorRegister4Float& VecP, const FMatrix44f* MatrixM)
2224{
2225 const VectorRegister4Float *M = (const VectorRegister4Float *) MatrixM;
2226 VectorRegister4Float VTempX, VTempY, VTempZ, VTempW;
2227
2228 // Splat x,y,z and w
2229 VTempX = VectorReplicate(VecP, 0);
2230 VTempY = VectorReplicate(VecP, 1);
2231 VTempZ = VectorReplicate(VecP, 2);
2232 VTempW = VectorReplicate(VecP, 3);
2233 // Mul by the matrix
2234 VTempX = VectorMultiply(VTempX, M[0]);
2235 VTempX = VectorMultiplyAdd(VTempY, M[1], VTempX);
2236 VTempX = VectorMultiplyAdd(VTempZ, M[2], VTempX);
2237 VTempX = VectorMultiplyAdd(VTempW, M[3], VTempX);
2238
2239 return VTempX;
2240}
2241
2242FORCEINLINE VectorRegister4Float VectorTransformVector(const VectorRegister4Float& VecP, const FMatrix44d* MatrixM)
2243{
2244 // Warning: FMatrix44d alignment may not match VectorRegister4Double, so you can't just cast to VectorRegister4Double*.
2245 typedef double Double4x4[4][4];
2246 const Double4x4& MRows = *((const Double4x4*)MatrixM);
2247
2248 VectorRegister4Double M[4];
2249 M[0] = VectorLoad(MRows[0]);
2250 M[1] = VectorLoad(MRows[1]);
2251 M[2] = VectorLoad(MRows[2]);
2252 M[3] = VectorLoad(MRows[3]);
2253
2254 VectorRegister4Double VTempX, VTempY, VTempZ, VTempW;
2255 VectorRegister4Double VecPDouble = VecP;
2256
2257 // Splat x,y,z and w
2258 VTempX = VectorReplicate(VecPDouble, 0);
2259 VTempY = VectorReplicate(VecPDouble, 1);
2260 VTempZ = VectorReplicate(VecPDouble, 2);
2261 VTempW = VectorReplicate(VecPDouble, 3);
2262 // Mul by the matrix
2263 VTempX = VectorMultiply(VTempX, M[0]);
2264 VTempX = VectorMultiplyAdd(VTempY, M[1], VTempX);
2265 VTempX = VectorMultiplyAdd(VTempZ, M[2], VTempX);
2266 VTempX = VectorMultiplyAdd(VTempW, M[3], VTempX);
2267
2268 // LWC_TODO: this will be a lossy conversion.
2270}
2271
2272FORCEINLINE VectorRegister4Double VectorTransformVector(const VectorRegister4Double& VecP, const FMatrix44d* MatrixM)
2273{
2274 // Warning: FMatrix44d alignment may not match VectorRegister4Double, so you can't just cast to VectorRegister4Double*.
2275 typedef double Double4x4[4][4];
2276 const Double4x4& MRows = *((const Double4x4*)MatrixM);
2277
2278 VectorRegister4Double M[4];
2279 M[0] = VectorLoad(MRows[0]);
2280 M[1] = VectorLoad(MRows[1]);
2281 M[2] = VectorLoad(MRows[2]);
2282 M[3] = VectorLoad(MRows[3]);
2283
2284 VectorRegister4Double VTempX, VTempY, VTempZ, VTempW;
2285
2286 // Splat x,y,z and w
2287 VTempX = VectorReplicate(VecP, 0);
2288 VTempY = VectorReplicate(VecP, 1);
2289 VTempZ = VectorReplicate(VecP, 2);
2290 VTempW = VectorReplicate(VecP, 3);
2291 // Mul by the matrix
2292 VTempX = VectorMultiply(VTempX, M[0]);
2293 VTempX = VectorMultiplyAdd(VTempY, M[1], VTempX);
2294 VTempX = VectorMultiplyAdd(VTempZ, M[2], VTempX);
2295 VTempX = VectorMultiplyAdd(VTempW, M[3], VTempX);
2296
2297 return VTempX;
2298}
2299
2300FORCEINLINE VectorRegister4Double VectorTransformVector(const VectorRegister4Double& VecP, const FMatrix44f* MatrixM)
2301{
2302 const VectorRegister4Float* M = (const VectorRegister4Float*) MatrixM;
2303 VectorRegister4Double VTempX, VTempY, VTempZ, VTempW;
2304
2305 // Splat x,y,z and w
2306 VTempX = VectorReplicate(VecP, 0);
2307 VTempY = VectorReplicate(VecP, 1);
2308 VTempZ = VectorReplicate(VecP, 2);
2309 VTempW = VectorReplicate(VecP, 3);
2310 // Mul by the matrix
2311 VTempX = VectorMultiply(VTempX, VectorRegister4Double(M[0]));
2312 VTempX = VectorMultiplyAdd(VTempY, VectorRegister4Double(M[1]), VTempX);
2313 VTempX = VectorMultiplyAdd(VTempZ, VectorRegister4Double(M[2]), VTempX);
2314 VTempX = VectorMultiplyAdd(VTempW, VectorRegister4Double(M[3]), VTempX);
2315
2316 return VTempX;
2317}
2318
2319/**
2320 * Returns the minimum values of two vectors (component-wise).
2321 *
2322 * @param Vec1 1st vector
2323 * @param Vec2 2nd vector
2324 * @return VectorRegister4Float( min(Vec1.x,Vec2.x), min(Vec1.y,Vec2.y), min(Vec1.z,Vec2.z), min(Vec1.w,Vec2.w) )
2325 */
2326FORCEINLINE VectorRegister4Float VectorMin(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2)
2327{
2328 return _mm_min_ps(Vec1, Vec2);
2329}
2330
2331FORCEINLINE VectorRegister4Double VectorMin(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
2332{
2333 VectorRegister4Double Result;
2334#if !UE_PLATFORM_MATH_USE_AVX
2335 Result.XY = _mm_min_pd(Vec1.XY, Vec2.XY);
2336 Result.ZW = _mm_min_pd(Vec1.ZW, Vec2.ZW);
2337#else
2338 Result = _mm256_min_pd(Vec1, Vec2);
2339#endif
2340 return Result;
2341}
2342
2343/**
2344 * Returns the maximum values of two vectors (component-wise).
2345 *
2346 * @param Vec1 1st vector
2347 * @param Vec2 2nd vector
2348 * @return VectorRegister4Float( max(Vec1.x,Vec2.x), max(Vec1.y,Vec2.y), max(Vec1.z,Vec2.z), max(Vec1.w,Vec2.w) )
2349 */
2350FORCEINLINE VectorRegister4Float VectorMax(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2)
2351{
2352 return _mm_max_ps(Vec1, Vec2);
2353}
2354
2355FORCEINLINE VectorRegister4Double VectorMax(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
2356{
2357 VectorRegister4Double Result;
2358#if !UE_PLATFORM_MATH_USE_AVX
2359 Result.XY = _mm_max_pd(Vec1.XY, Vec2.XY);
2360 Result.ZW = _mm_max_pd(Vec1.ZW, Vec2.ZW);
2361#else
2362 Result = _mm256_max_pd(Vec1, Vec2);
2363#endif
2364 return Result;
2365}
2366
2367/**
2368* Creates a vector by combining two high components from each vector
2369*
2370* @param Vec1 Source vector1
2371* @param Vec2 Source vector2
2372* @return The combined vector
2373*/
2374FORCEINLINE VectorRegister4Float VectorCombineHigh(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2)
2375{
2376 return VectorShuffle(Vec1, Vec2, 2, 3, 2, 3);
2377}
2378
2379FORCEINLINE VectorRegister4Double VectorCombineHigh(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
2380{
2381 return VectorShuffle(Vec1, Vec2, 2, 3, 2, 3);
2382}
2383
2384/**
2385* Creates a vector by combining two low components from each vector
2386*
2387* @param Vec1 Source vector1
2388* @param Vec2 Source vector2
2389* @return The combined vector
2390*/
2391FORCEINLINE VectorRegister4Float VectorCombineLow(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2)
2392{
2393 return VectorShuffle(Vec1, Vec2, 0, 1, 0, 1);
2394}
2395
2396FORCEINLINE VectorRegister4Double VectorCombineLow(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
2397{
2398 return VectorShuffle(Vec1, Vec2, 0, 1, 0, 1);
2399}
2400
2401/**
2402 * Deinterleaves the components of the two given vectors such that the even components
2403 * are in one vector and the odds in another.
2404 *
2405 * @param Lo [Even0, Odd0, Even1, Odd1]
2406 * @param Hi [Even2, Odd2, Even3, Odd3]
2407 * @param OutEvens [Even0, Even1, Even2, Even3]
2408 * @param OutOdds [Odd0, Odd1, Odd2, Odd3]
2409*/
2410FORCEINLINE void VectorDeinterleave(VectorRegister4Float& RESTRICT OutEvens, VectorRegister4Float& RESTRICT OutOdds, const VectorRegister4Float& RESTRICT Lo, const VectorRegister4Float& RESTRICT Hi)
2411{
2412 OutEvens = VectorShuffle(Lo, Hi, 0, 2, 0, 2);
2413 OutOdds = VectorShuffle(Lo, Hi, 1, 3, 1, 3);
2414}
2415
2416FORCEINLINE void VectorDeinterleave(VectorRegister4Double& RESTRICT OutEvens, VectorRegister4Double& RESTRICT OutOdds, const VectorRegister4Double& RESTRICT Lo, const VectorRegister4Double& RESTRICT Hi)
2417{
2418 OutEvens = VectorShuffle(Lo, Hi, 0, 2, 0, 2);
2419 OutOdds = VectorShuffle(Lo, Hi, 1, 3, 1, 3);
2420}
2421
2422
2423/**
2424 * Returns an integer bit-mask (0x00 - 0x0f) based on the sign-bit for each component in a vector.
2425 *
2426 * @param VecMask Vector
2427 * @return Bit 0 = sign(VecMask.x), Bit 1 = sign(VecMask.y), Bit 2 = sign(VecMask.z), Bit 3 = sign(VecMask.w)
2428 */
2429FORCEINLINE int VectorMaskBits(const VectorRegister4Float& VecMask)
2430{
2431 return _mm_movemask_ps(VecMask);
2432}
2433
2434FORCEINLINE int VectorMaskBits(const VectorRegister4Double& VecMask)
2435{
2436#if !UE_PLATFORM_MATH_USE_AVX
2437 const int MaskXY = _mm_movemask_pd(VecMask.XY);
2438 const int MaskZW = _mm_movemask_pd(VecMask.ZW);
2439 return (MaskZW << 2) | (MaskXY);
2440#else
2441 return _mm256_movemask_pd(VecMask);
2442#endif
2443}
2444
2445/**
2446 * Merges the XYZ components of one vector with the W component of another vector and returns the result.
2447 *
2448 * @param VecXYZ Source vector for XYZ_
2449 * @param VecW Source register for ___W (note: the fourth component is used, not the first)
2450 * @return VectorRegister4Float(VecXYZ.x, VecXYZ.y, VecXYZ.z, VecW.w)
2451 */
2452FORCEINLINE VectorRegister4Float VectorMergeVecXYZ_VecW(const VectorRegister4Float& VecXYZ, const VectorRegister4Float& VecW)
2453{
2454 return VectorSelect(GlobalVectorConstants::XYZMask(), VecXYZ, VecW);
2455}
2456
2457FORCEINLINE VectorRegister4Double VectorMergeVecXYZ_VecW(const VectorRegister4Double& VecXYZ, const VectorRegister4Double& VecW)
2458{
2459 //return VectorSelect(GlobalVectorConstants::DoubleXYZMask(), VecXYZ, VecW);
2460 return VectorRegister4Double(VecXYZ.XY, _mm_move_sd(VecW.ZW, VecXYZ.ZW));
2461}
2462
2463/**
2464 * Loads 4 BYTEs from unaligned memory and converts them into 4 FLOATs.
2465 *
2466 * @param Ptr Unaligned memory pointer to the 4 BYTEs.
2467 * @return VectorRegister4Float( float(Ptr[0]), float(Ptr[1]), float(Ptr[2]), float(Ptr[3]) )
2468 */
2469// Looks complex but is really quite straightforward:
2470// Load as 32-bit value, unpack 4x unsigned bytes to 4x 16-bit ints, then unpack again into 4x 32-bit ints, then convert to 4x floats
2471#define VectorLoadByte4( Ptr ) _mm_cvtepi32_ps(_mm_unpacklo_epi16(_mm_unpacklo_epi8(_mm_cvtsi32_si128(*(int32*)Ptr), _mm_setzero_si128()), _mm_setzero_si128()))
2472
2473/**
2474* Loads 4 signed BYTEs from unaligned memory and converts them into 4 FLOATs.
2475*
2476* @param Ptr Unaligned memory pointer to the 4 BYTEs.
2477* @return VectorRegister4Float( float(Ptr[0]), float(Ptr[1]), float(Ptr[2]), float(Ptr[3]) )
2478*/
2479// Looks complex but is really quite straightforward:
2480// Load as 32-bit value, unpack 4x unsigned bytes to 4x 16-bit ints, then unpack again into 4x 32-bit ints, then convert to 4x floats
2481FORCEINLINE VectorRegister4Float VectorLoadSignedByte4(const void* Ptr)
2482{
2483 auto Temp = _mm_unpacklo_epi16(_mm_unpacklo_epi8(_mm_cvtsi32_si128(*(int32*)Ptr), _mm_setzero_si128()), _mm_setzero_si128());
2484 auto Mask = _mm_cmpgt_epi32(Temp, _mm_set1_epi32(127));
2485 auto Comp = _mm_and_si128(Mask, _mm_set1_epi32(~127));
2486 return _mm_cvtepi32_ps(_mm_or_si128(Comp, Temp));
2487}
2488
2489/**
2490 * Loads 4 BYTEs from unaligned memory and converts them into 4 FLOATs in reversed order.
2491 *
2492 * @param Ptr Unaligned memory pointer to the 4 BYTEs.
2493 * @return VectorRegister4Float( float(Ptr[3]), float(Ptr[2]), float(Ptr[1]), float(Ptr[0]) )
2494 */
2495FORCEINLINE VectorRegister4Float VectorLoadByte4Reverse( void* Ptr )
2496{
2497 VectorRegister4Float Temp = VectorLoadByte4(Ptr);
2498 return VectorSwizzle( Temp, 3, 2, 1, 0 );
2499}
2500
2501/**
2502 * Converts the 4 FLOATs in the vector to 4 BYTEs, clamped to [0,255], and stores to unaligned memory.
2503 *
2504 * @param Vec Vector containing 4 FLOATs
2505 * @param Ptr Unaligned memory pointer to store the 4 BYTEs.
2506 */
2507FORCEINLINE void VectorStoreByte4( const VectorRegister4Float& Vec, void* Ptr )
2508{
2509 // Looks complex but is really quite straightforward:
2510 // Convert 4x floats to 4x 32-bit ints, then pack into 4x 16-bit ints, then into 4x 8-bit unsigned ints, then store as a 32-bit value
2511 *(int32*)Ptr = _mm_cvtsi128_si32(_mm_packus_epi16(_mm_packs_epi32(_mm_cvttps_epi32(Vec), _mm_setzero_si128()), _mm_setzero_si128()));
2512}
2513
2514/**
2515* Converts the 4 FLOATs in the vector to 4 BYTEs, clamped to [-127,127], and stores to unaligned memory.
2516*
2517* @param Vec Vector containing 4 FLOATs
2518* @param Ptr Unaligned memory pointer to store the 4 BYTEs.
2519*/
2520FORCEINLINE void VectorStoreSignedByte4(const VectorRegister4Float& Vec, void* Ptr)
2521{
2522 // Looks complex but is really quite straightforward:
2523 // Convert 4x floats to 4x 32-bit ints, then pack into 4x 16-bit ints, then into 4x 8-bit unsigned ints, then store as a 32-bit value
2524 *(int32*)Ptr = _mm_cvtsi128_si32(_mm_packs_epi16(_mm_packs_epi32(_mm_cvttps_epi32(Vec), _mm_setzero_si128()), _mm_setzero_si128()));
2525}
2526
2527
2528/**
2529* Loads packed RGB10A2(4 bytes) from unaligned memory and converts them into 4 FLOATs.
2530*
2531* @param Ptr Unaligned memory pointer to the RGB10A2(4 bytes).
2532* @return VectorRegister4Float with 4 FLOATs loaded from Ptr.
2533*/
2534FORCEINLINE VectorRegister4Float VectorLoadURGB10A2N(void* Ptr)
2535{
2536 VectorRegister4Float Tmp;
2537
2538 Tmp = _mm_and_ps(_mm_load_ps1((const float *)Ptr), MakeVectorRegisterFloat(0x3FFu, 0x3FFu << 10, 0x3FFu << 20, 0x3u << 30));
2539 Tmp = _mm_xor_ps(Tmp, MakeVectorRegister(0, 0, 0, 0x80000000));
2540 Tmp = _mm_cvtepi32_ps(*(const VectorRegister4Int*)&Tmp);
2541 Tmp = _mm_add_ps(Tmp, MakeVectorRegister(0, 0, 0, 32768.0f*65536.0f));
2542 Tmp = _mm_mul_ps(Tmp, MakeVectorRegister(1.0f / 1023.0f, 1.0f / (1023.0f*1024.0f), 1.0f / (1023.0f*1024.0f*1024.0f), 1.0f / (3.0f*1024.0f*1024.0f*1024.0f)));
2543
2544 return Tmp;
2545}
2546
2547/**
2548* Converts the 4 FLOATs in the vector RGB10A2, clamped to [0, 1023] and [0, 3], and stores to unaligned memory.
2549*
2550* @param Vec Vector containing 4 FLOATs
2551* @param Ptr Unaligned memory pointer to store the packed RGBA16(8 bytes).
2552*/
2553FORCEINLINE void VectorStoreURGB10A2N(const VectorRegister4Float& Vec, void* Ptr)
2554{
2555 VectorRegister4Float Tmp;
2556 Tmp = _mm_max_ps(Vec, MakeVectorRegisterFloat(0.0f, 0.0f, 0.0f, 0.0f));
2557 Tmp = _mm_min_ps(Tmp, MakeVectorRegisterFloat(1.0f, 1.0f, 1.0f, 1.0f));
2558 Tmp = _mm_mul_ps(Tmp, MakeVectorRegisterFloat(1023.0f, 1023.0f*1024.0f*0.5f, 1023.0f*1024.0f*1024.0f, 3.0f*1024.0f*1024.0f*1024.0f*0.5f));
2559
2560 VectorRegister4Int TmpI;
2561 TmpI = _mm_cvttps_epi32(Tmp);
2562 TmpI = _mm_and_si128(TmpI, MakeVectorRegisterInt(0x3FFu, 0x3FFu << (10 - 1), 0x3FFu << 20, 0x3u << (30 - 1)));
2563
2564 VectorRegister4Int TmpI2;
2565 TmpI2 = _mm_shuffle_epi32(TmpI, _MM_SHUFFLE(3, 2, 3, 2));
2566 TmpI = _mm_or_si128(TmpI, TmpI2);
2567
2568 TmpI2 = _mm_shuffle_epi32(TmpI, _MM_SHUFFLE(1, 1, 1, 1));
2569 TmpI2 = _mm_add_epi32(TmpI2, TmpI2);
2570 TmpI = _mm_or_si128(TmpI, TmpI2);
2571
2572 _mm_store_ss((float *)Ptr, *(const VectorRegister4Float*)&TmpI);
2573}
2574
2575/**
2576 * Loads packed RGBA16(8 bytes) from unaligned memory and converts them into 4 FLOATs.
2577 *
2578 * @param Ptr Unaligned memory pointer to the RGBA16(8 bytes).
2579 * @return VectorRegister4Float with 4 FLOATs loaded from Ptr.
2580 */
2581#define VectorLoadURGBA16N( Ptr ) _mm_cvtepi32_ps(_mm_unpacklo_epi16(_mm_loadl_epi64((const __m128i*)Ptr), _mm_setzero_si128()))
2582
2583/**
2584 * Loads packed signed RGBA16(8 bytes) from unaligned memory and converts them into 4 FLOATs.
2585 *
2586 * @param Ptr Unaligned memory pointer to the RGBA16(8 bytes).
2587 * @return VectorRegister4Float with 4 FLOATs loaded from Ptr.
2588 */
2589FORCEINLINE VectorRegister4Float VectorLoadSRGBA16N(const void* Ptr)
2590{
2591 auto Temp = _mm_unpacklo_epi16(_mm_loadl_epi64((const __m128i*)Ptr), _mm_setzero_si128());
2592 auto Mask = _mm_cmpgt_epi32(Temp, _mm_set1_epi32(32767));
2593 auto Comp = _mm_and_si128(Mask, _mm_set1_epi32(~32767));
2594 return _mm_cvtepi32_ps(_mm_or_si128(Comp, Temp));
2595}
2596
2597/**
2598* Converts the 4 FLOATs in the vector RGBA16, clamped to [0, 65535], and stores to unaligned memory.
2599*
2600* @param Vec Vector containing 4 FLOATs
2601* @param Ptr Unaligned memory pointer to store the packed RGB10A2(4 bytes).
2602*/
2603FORCEINLINE void VectorStoreURGBA16N(const VectorRegister4Float& Vec, void* Ptr)
2604{
2605
2606 VectorRegister4Float Tmp;
2607 Tmp = _mm_max_ps(Vec, MakeVectorRegisterFloat(0.0f, 0.0f, 0.0f, 0.0f));
2608 Tmp = _mm_min_ps(Tmp, MakeVectorRegisterFloat(1.0f, 1.0f, 1.0f, 1.0f));
2609 Tmp = _mm_mul_ps(Tmp, MakeVectorRegisterFloat(65535.0f, 65535.0f, 65535.0f, 65535.0f));
2610
2611 VectorRegister4Int TmpI = _mm_cvtps_epi32(Tmp);
2612
2613 uint16* Out = (uint16*)Ptr;
2614 Out[0] = static_cast<int16>(_mm_extract_epi16(TmpI, 0));
2615 Out[1] = static_cast<int16>(_mm_extract_epi16(TmpI, 2));
2616 Out[2] = static_cast<int16>(_mm_extract_epi16(TmpI, 4));
2617 Out[3] = static_cast<int16>(_mm_extract_epi16(TmpI, 6));
2618}
2619
2620/**
2621 * Returns non-zero if any element in Vec1 is greater than the corresponding element in Vec2, otherwise 0.
2622 *
2623 * @param Vec1 1st source vector
2624 * @param Vec2 2nd source vector
2625 * @return Non-zero integer if (Vec1.x > Vec2.x) || (Vec1.y > Vec2.y) || (Vec1.z > Vec2.z) || (Vec1.w > Vec2.w)
2626 */
2627FORCEINLINE int VectorAnyGreaterThan(const VectorRegister4Float& Vec1, const VectorRegister4Float& Vec2)
2628{
2629 return VectorMaskBits(VectorCompareGT(Vec1, Vec2));
2630}
2631
2632FORCEINLINE int VectorAnyGreaterThan(const VectorRegister4Double& Vec1, const VectorRegister4Double& Vec2)
2633{
2634 return VectorMaskBits(VectorCompareGT(Vec1, Vec2));
2635}
2636
2637/**
2638 * Resets the floating point registers so that they can be used again.
2639 * Some intrinsics use these for MMX purposes (e.g. VectorLoadByte4 and VectorStoreByte4).
2640 */
2641// This is no longer necessary now that we don't use MMX instructions
2642#define VectorResetFloatRegisters()
2643// TODO: LWC: remove?
2644
2645/**
2646 * Returns the control register.
2647 *
2648 * @return The uint32 control register
2649 */
2650#define VectorGetControlRegister() _mm_getcsr()
2651
2652/**
2653 * Sets the control register.
2654 *
2655 * @param ControlStatus The uint32 control status value to set
2656 */
2657#define VectorSetControlRegister(ControlStatus) _mm_setcsr( ControlStatus )
2658
2659/**
2660 * Control status bit to round all floating point math results towards zero.
2661 */
2662#define VECTOR_ROUND_TOWARD_ZERO _MM_ROUND_TOWARD_ZERO
2663
2664/**
2665* Multiplies two quaternions; the order matters.
2666*
2667* Order matters when composing quaternions: C = VectorQuaternionMultiply2(A, B) will yield a quaternion C = A * B
2668* that logically first applies B then A to any subsequent transformation (right first, then left).
2669*
2670* @param Quat1 Pointer to the first quaternion
2671* @param Quat2 Pointer to the second quaternion
2672* @return Quat1 * Quat2
2673*/
2674FORCEINLINE VectorRegister4Float VectorQuaternionMultiply2( const VectorRegister4Float& Quat1, const VectorRegister4Float& Quat2 )
2675{
2676 VectorRegister4Float Result = VectorMultiply(VectorReplicate(Quat1, 3), Quat2);
2677 Result = VectorMultiplyAdd( VectorMultiply(VectorReplicate(Quat1, 0), VectorSwizzle(Quat2, 3, 2, 1, 0)), GlobalVectorConstants::QMULTI_SIGN_MASK0, Result);
2678 Result = VectorMultiplyAdd( VectorMultiply(VectorReplicate(Quat1, 1), VectorSwizzle(Quat2, 2, 3, 0, 1)), GlobalVectorConstants::QMULTI_SIGN_MASK1, Result);
2679 Result = VectorMultiplyAdd( VectorMultiply(VectorReplicate(Quat1, 2), VectorSwizzle(Quat2, 1, 0, 3, 2)), GlobalVectorConstants::QMULTI_SIGN_MASK2, Result);
2680
2681 return Result;
2682}
2683
2684FORCEINLINE VectorRegister4Double VectorQuaternionMultiply2(const VectorRegister4Double& Quat1, const VectorRegister4Double& Quat2)
2685{
2686 VectorRegister4Double Result = VectorMultiply(VectorReplicate(Quat1, 3), Quat2);
2687 Result = VectorMultiplyAdd(VectorMultiply(VectorReplicate(Quat1, 0), VectorSwizzle(Quat2, 3, 2, 1, 0)), GlobalVectorConstants::DOUBLE_QMULTI_SIGN_MASK0, Result);
2688 Result = VectorMultiplyAdd(VectorMultiply(VectorReplicate(Quat1, 1), VectorSwizzle(Quat2, 2, 3, 0, 1)), GlobalVectorConstants::DOUBLE_QMULTI_SIGN_MASK1, Result);
2689 Result = VectorMultiplyAdd(VectorMultiply(VectorReplicate(Quat1, 2), VectorSwizzle(Quat2, 1, 0, 3, 2)), GlobalVectorConstants::DOUBLE_QMULTI_SIGN_MASK2, Result);
2690
2691 return Result;
2692}
2693
2694/**
2695* Multiplies two quaternions; the order matters.
2696*
2697* When composing quaternions: VectorQuaternionMultiply(C, A, B) will yield a quaternion C = A * B
2698* that logically first applies B then A to any subsequent transformation (right first, then left).
2699*
2700* @param Result Pointer to where the result Quat1 * Quat2 should be stored
2701* @param Quat1 Pointer to the first quaternion (must not be the destination)
2702* @param Quat2 Pointer to the second quaternion (must not be the destination)
2703*/
2704FORCEINLINE void VectorQuaternionMultiply(VectorRegister4Float* RESTRICT Result, const VectorRegister4Float* RESTRICT Quat1, const VectorRegister4Float* RESTRICT Quat2)
2705{
2706 *Result = VectorQuaternionMultiply2(*Quat1, *Quat2);
2707}
2708
2709FORCEINLINE void VectorQuaternionMultiply(VectorRegister4Double* RESTRICT Result, const VectorRegister4Double* RESTRICT Quat1, const VectorRegister4Double* RESTRICT Quat2)
2710{
2711 *Result = VectorQuaternionMultiply2(*Quat1, *Quat2);
2712}
2713
2714// Returns true if the vector contains a component that is either NAN or +/-infinite.
2715FORCEINLINE bool VectorContainsNaNOrInfinite(const VectorRegister4Float& Vec)
2716{
2717 // https://en.wikipedia.org/wiki/IEEE_754-1985
2718 // Infinity is represented with all exponent bits set, with the correct sign bit.
2719 // NaN is represented with all exponent bits set, plus at least one fraction/significand bit set.
2720 // This means finite values will not have all exponent bits set, so check against those bits.
2721
2722 union { float F; uint32 U; } InfUnion;
2723 InfUnion.U = 0x7F800000;
2724 const float Inf = InfUnion.F;
2725 const VectorRegister4Float FloatInfinity = MakeVectorRegisterFloat(Inf, Inf, Inf, Inf);
2726
2727 // Mask off Exponent
2728 VectorRegister4Float ExpTest = VectorBitwiseAnd(Vec, FloatInfinity);
2729 // Compare to full exponent. If any are full exponent (not finite), the signs copied to the mask are non-zero, otherwise it's zero and finite.
2730 bool IsFinite = VectorMaskBits(VectorCompareEQ(ExpTest, FloatInfinity)) == 0;
2731 return !IsFinite;
2732}
2733
2734FORCEINLINE bool VectorContainsNaNOrInfinite(const VectorRegister4Double& Vec)
2735{
2736 // https://en.wikipedia.org/wiki/IEEE_754-1985
2737 // Infinity is represented with all exponent bits set, with the correct sign bit.
2738 // NaN is represented with all exponent bits set, plus at least one fraction/significand bit set.
2739 // This means finite values will not have all exponent bits set, so check against those bits.
2740
2741 union { double D; uint64 U; } InfUnion;
2742 InfUnion.U = 0x7FF0000000000000;
2743 const double Inf = InfUnion.D;
2744 const VectorRegister4Double DoubleInfinity = MakeVectorRegisterDouble(Inf, Inf, Inf, Inf);
2745
2746 // Mask off Exponent
2747 VectorRegister4Double ExpTest = VectorBitwiseAnd(Vec, DoubleInfinity);
2748 // Compare to full exponent. If any are full exponent (not finite), the signs copied to the mask are non-zero, otherwise it's zero and finite.
2749 bool IsFinite = VectorMaskBits(VectorCompareEQ(ExpTest, DoubleInfinity)) == 0;
2750 return !IsFinite;
2751}
2752
2753FORCEINLINE VectorRegister4Float VectorTruncate(const VectorRegister4Float& Vec)
2754{
2755#if UE_PLATFORM_MATH_USE_SSE4_1
2756 return _mm_round_ps(Vec, _MM_FROUND_TRUNC);
2757#else
2758 return _mm_cvtepi32_ps(_mm_cvttps_epi32(Vec));
2759#endif
2760}
2761
2762FORCEINLINE VectorRegister2Double TruncateVectorRegister2d(const VectorRegister2Double& V)
2763{
2764#if UE_PLATFORM_MATH_USE_SSE4_1
2765 return _mm_round_pd(V, _MM_FROUND_TRUNC);
2766#else
2767 // TODO: LWC: Optimize
2768 // Note: SSE2 just has _mm_cvttsd_si64(), which extracts only the truncated lower element, so there is some extra shuffling to get both values out.
2769 int64 X = _mm_cvttsd_si64(V);
2770 int64 Y = _mm_cvttsd_si64(_mm_shuffle_pd(V, V, SHUFFLEMASK2(1, 0)));
2771 VectorRegister2Double A = _mm_cvtsi64_sd(V, X); // Converts to lowest element, copies upper.
2772 VectorRegister2Double B = _mm_cvtsi64_sd(V, Y); // Converts to lowest element, copies upper.
2773 return _mm_shuffle_pd(A, B, SHUFFLEMASK2(0, 0));
2774#endif // UE_PLATFORM_MATH_USE_SSE4_1
2775}
2776
2777FORCEINLINE VectorRegister4Double VectorTruncate(const VectorRegister4Double& V)
2778{
2779 VectorRegister4Double Result;
2780#if !UE_PLATFORM_MATH_USE_AVX
2781 Result.XY = TruncateVectorRegister2d(V.XY);
2782 Result.ZW = TruncateVectorRegister2d(V.ZW);
2783#else
2784 Result = _mm256_round_pd(V, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
2785#endif
2786 return Result;
2787}
2788
2789FORCEINLINE VectorRegister4Float VectorRound(const VectorRegister4Float &Vec)
2790{
2791#if UE_PLATFORM_MATH_USE_SSE4_1
2792 return _mm_round_ps(Vec, _MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC);
2793#else
2794 VectorRegister4Float Trunc = VectorTruncate(Vec);
2795 return VectorAdd(Trunc, VectorTruncate(VectorMultiply(VectorSubtract(Vec, Trunc), GlobalVectorConstants::FloatAlmostTwo())));
2796#endif
2797}
2798
2799FORCEINLINE VectorRegister4Int VectorRoundToIntHalfToEven(const VectorRegister4Float& Vec)
2800{
2801 return _mm_cvtps_epi32(Vec);
2802}
2803
2804FORCEINLINE VectorRegister4Float VectorCeil(const VectorRegister4Float& V)
2805{
2806#if UE_PLATFORM_MATH_USE_SSE4_1
2807 return _mm_ceil_ps(V);
2808#else
2809 const VectorRegister4Float Trunc = VectorTruncate(V);
2810 const VectorRegister4Float Frac = VectorSubtract(V, Trunc);
2811 const VectorRegister4Float FracMask = VectorCompareGT(Frac, (GlobalVectorConstants::FloatZero));
2812 const VectorRegister4Float Add = VectorSelect(FracMask, (GlobalVectorConstants::FloatOne), (GlobalVectorConstants::FloatZero));
2813 return VectorAdd(Trunc, Add);
2814#endif
2815}
2816
2817FORCEINLINE VectorRegister4Double VectorCeil(const VectorRegister4Double& V)
2818{
2819#if UE_PLATFORM_MATH_USE_AVX
2820 VectorRegister4Double Result;
2821 Result = _mm256_round_pd(V, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC);
2822 return Result;
2823#elif UE_PLATFORM_MATH_USE_SSE4_1
2824 VectorRegister4Double Result;
2825 Result.XY = _mm_ceil_pd(V.XY);
2826 Result.ZW = _mm_ceil_pd(V.ZW);
2827 return Result;
2828#else
2829 const VectorRegister4Double Trunc = VectorTruncate(V);
2830 const VectorRegister4Double Frac = VectorSubtract(V, Trunc);
2831 const VectorRegister4Double FracMask = VectorCompareGT(Frac, (GlobalVectorConstants::DoubleZero));
2832 const VectorRegister4Double Add = VectorSelect(FracMask, (GlobalVectorConstants::DoubleOne), (GlobalVectorConstants::DoubleZero));
2833 return VectorAdd(Trunc, Add);
2834#endif
2835}
2836
2837FORCEINLINE VectorRegister4Float VectorFloor(const VectorRegister4Float& V)
2838{
2839#if UE_PLATFORM_MATH_USE_SSE4_1
2840 return _mm_floor_ps(V);
2841#else
2842 const VectorRegister4Float Trunc = VectorTruncate(V);
2843 const VectorRegister4Float Frac = VectorSubtract(V, Trunc);
2844 const VectorRegister4Float FracMask = VectorCompareLT(Frac, (GlobalVectorConstants::FloatZero));
2845 const VectorRegister4Float Add = VectorSelect(FracMask, (GlobalVectorConstants::FloatMinusOne), (GlobalVectorConstants::FloatZero));
2846 return VectorAdd(Trunc, Add);
2847#endif
2848}
2849
2850FORCEINLINE VectorRegister4Double VectorFloor(const VectorRegister4Double& V)
2851{
2852#if UE_PLATFORM_MATH_USE_AVX
2853 VectorRegister4Double Result;
2854 Result = _mm256_round_pd(V, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC);
2855 return Result;
2856#elif UE_PLATFORM_MATH_USE_SSE4_1
2857 VectorRegister4Double Result;
2858 Result.XY = _mm_floor_pd(V.XY);
2859 Result.ZW = _mm_floor_pd(V.ZW);
2860 return Result;
2861#else
2862 const VectorRegister4Double Trunc = VectorTruncate(V);
2863 const VectorRegister4Double Frac = VectorSubtract(V, Trunc);
2864 const VectorRegister4Double FracMask = VectorCompareLT(Frac, (GlobalVectorConstants::DoubleZero));
2865 const VectorRegister4Double Add = VectorSelect(FracMask, (GlobalVectorConstants::DoubleMinusOne), (GlobalVectorConstants::DoubleZero));
2866 return VectorAdd(Trunc, Add);
2867#endif
2868}
2869
2870FORCEINLINE VectorRegister4Float VectorMod(const VectorRegister4Float& X, const VectorRegister4Float& Y)
2871{
2872 // Check against invalid divisor
2873 VectorRegister4Float InvalidDivisorMask = VectorCompareLE(VectorAbs(Y), GlobalVectorConstants::SmallNumber);
2874
2875#if UE_PLATFORM_MATH_USE_SVML
2876 VectorRegister4Float Result = _mm_fmod_ps(X, Y);
2877#else
2878 AlignedFloat4 XFloats(X), YFloats(Y);
2879 XFloats[0] = fmodf(XFloats[0], YFloats[0]);
2880 XFloats[1] = fmodf(XFloats[1], YFloats[1]);
2881 XFloats[2] = fmodf(XFloats[2], YFloats[2]);
2882 XFloats[3] = fmodf(XFloats[3], YFloats[3]);
2883 VectorRegister4Float Result = XFloats.ToVectorRegister();
2884#endif
2885
2886 // Return 0 where divisor Y was too small
2887 Result = VectorSelect(InvalidDivisorMask, GlobalVectorConstants::FloatZero, Result);
2888 return Result;
2889}
2890
2891FORCEINLINE VectorRegister4Double VectorMod(const VectorRegister4Double& X, const VectorRegister4Double& Y)
2892{
2893 // Check against invalid divisor
2894 VectorRegister4Double InvalidDivisorMask = VectorCompareLE(VectorAbs(Y), GlobalVectorConstants::DoubleSmallNumber);
2895
2896#if UE_PLATFORM_MATH_USE_SVML_AVX
2897 VectorRegister4Double DoubleResult = _mm256_fmod_pd(X, Y);
2898#elif UE_PLATFORM_MATH_USE_SVML
2899 VectorRegister4Double DoubleResult = VectorRegister4Double(_mm_fmod_pd(X.XY, Y.XY), _mm_fmod_pd(X.ZW, Y.ZW));
2900#else
2901 AlignedDouble4 XDoubles(X), YDoubles(Y);
2902 XDoubles[0] = fmod(XDoubles[0], YDoubles[0]);
2903 XDoubles[1] = fmod(XDoubles[1], YDoubles[1]);
2904 XDoubles[2] = fmod(XDoubles[2], YDoubles[2]);
2905 XDoubles[3] = fmod(XDoubles[3], YDoubles[3]);
2906 VectorRegister4Double DoubleResult = XDoubles.ToVectorRegister();
2907#endif
2908
2909 // Return 0 where divisor Y was too small
2910 DoubleResult = VectorSelect(InvalidDivisorMask, GlobalVectorConstants::DoubleZero, DoubleResult);
2911 return DoubleResult;
2912}
2913
2914FORCEINLINE VectorRegister4Float VectorSign(const VectorRegister4Float& X)
2915{
2916 VectorRegister4Float Mask = VectorCompareGE(X, GlobalVectorConstants::FloatZero);
2917 return VectorSelect(Mask, GlobalVectorConstants::FloatOne, GlobalVectorConstants::FloatMinusOne);
2918}
2919
2920FORCEINLINE VectorRegister4Double VectorSign(const VectorRegister4Double& X)
2921{
2922 VectorRegister4Double Mask = VectorCompareGE(X, (GlobalVectorConstants::DoubleZero));
2923 return VectorSelect(Mask, GlobalVectorConstants::DoubleOne, GlobalVectorConstants::DoubleMinusOne);
2924}
2925
2926FORCEINLINE VectorRegister4Float VectorStep(const VectorRegister4Float& X)
2927{
2928 VectorRegister4Float Mask = VectorCompareGE(X, GlobalVectorConstants::FloatZero);
2929 return VectorSelect(Mask, GlobalVectorConstants::FloatOne, GlobalVectorConstants::FloatZero);
2930}
2931
2932FORCEINLINE VectorRegister4Double VectorStep(const VectorRegister4Double& X)
2933{
2934 VectorRegister4Double Mask = VectorCompareGE(X, GlobalVectorConstants::DoubleZero);
2935 return VectorSelect(Mask, GlobalVectorConstants::DoubleOne, GlobalVectorConstants::DoubleZero);
2936}
2937
2938FORCEINLINE VectorRegister4Float VectorExp(const VectorRegister4Float& X)
2939{
2940#if UE_PLATFORM_MATH_USE_SVML
2941 return _mm_exp_ps(X);
2942#else
2943 return SSE::exp_ps(X);
2944#endif
2945}
2946
2947FORCEINLINE VectorRegister4Double VectorExp(const VectorRegister4Double& X)
2948{
2949#if UE_PLATFORM_MATH_USE_SVML_AVX
2950 return _mm256_exp_pd(X);
2951#elif UE_PLATFORM_MATH_USE_SVML
2952 return VectorRegister4Double(_mm_exp_pd(X.XY), _mm_exp_pd(X.ZW));
2953#else
2954 AlignedDouble4 Doubles(X);
2955 Doubles[0] = FMath::Exp(Doubles[0]);
2956 Doubles[1] = FMath::Exp(Doubles[1]);
2957 Doubles[2] = FMath::Exp(Doubles[2]);
2958 Doubles[3] = FMath::Exp(Doubles[3]);
2959 return Doubles.ToVectorRegister();
2960#endif
2961}
2962
2963FORCEINLINE VectorRegister4Float VectorExp2(const VectorRegister4Float& X)
2964{
2965#if UE_PLATFORM_MATH_USE_SVML
2966 return _mm_exp2_ps(X);
2967#else
2968 AlignedFloat4 Floats(X);
2969 Floats[0] = FMath::Exp2(Floats[0]);
2970 Floats[1] = FMath::Exp2(Floats[1]);
2971 Floats[2] = FMath::Exp2(Floats[2]);
2972 Floats[3] = FMath::Exp2(Floats[3]);
2973 return Floats.ToVectorRegister();
2974#endif
2975}
2976
2977FORCEINLINE VectorRegister4Double VectorExp2(const VectorRegister4Double& X)
2978{
2979#if UE_PLATFORM_MATH_USE_SVML_AVX
2980 return _mm256_exp2_pd(X);
2981#elif UE_PLATFORM_MATH_USE_SVML
2982 return VectorRegister4Double(_mm_exp2_pd(X.XY), _mm_exp2_pd(X.ZW));
2983#else
2984 AlignedDouble4 Doubles(X);
2985 Doubles[0] = FMath::Exp2(Doubles[0]);
2986 Doubles[1] = FMath::Exp2(Doubles[1]);
2987 Doubles[2] = FMath::Exp2(Doubles[2]);
2988 Doubles[3] = FMath::Exp2(Doubles[3]);
2989 return Doubles.ToVectorRegister();
2990#endif
2991}
2992
2993FORCEINLINE VectorRegister4Float VectorLog(const VectorRegister4Float& X)
2994{
2995#if UE_PLATFORM_MATH_USE_SVML
2996 return _mm_log_ps(X);
2997#else
2998 return SSE::log_ps(X);
2999#endif
3000}
3001
3002FORCEINLINE VectorRegister4Double VectorLog(const VectorRegister4Double& X)
3003{
3004#if UE_PLATFORM_MATH_USE_SVML_AVX
3005 return _mm256_log_pd(X);
3006#elif UE_PLATFORM_MATH_USE_SVML
3007 return VectorRegister4Double(_mm_log_pd(X.XY), _mm_log_pd(X.ZW));
3008#else
3009 AlignedDouble4 Doubles(X);
3010 Doubles[0] = FMath::Loge(Doubles[0]);
3011 Doubles[1] = FMath::Loge(Doubles[1]);
3012 Doubles[2] = FMath::Loge(Doubles[2]);
3013 Doubles[3] = FMath::Loge(Doubles[3]);
3014 return Doubles.ToVectorRegister();
3015#endif
3016}
3017
3018FORCEINLINE VectorRegister4Float VectorLog2(const VectorRegister4Float& X)
3019{
3020#if UE_PLATFORM_MATH_USE_SVML
3021 return _mm_log2_ps(X);
3022#else
3023 AlignedFloat4 Floats(X);
3024 Floats[0] = FMath::Log2(Floats[0]);
3025 Floats[1] = FMath::Log2(Floats[1]);
3026 Floats[2] = FMath::Log2(Floats[2]);
3027 Floats[3] = FMath::Log2(Floats[3]);
3028 return Floats.ToVectorRegister();
3029#endif
3030}
3031
3032FORCEINLINE VectorRegister4Double VectorLog2(const VectorRegister4Double& X)
3033{
3034#if UE_PLATFORM_MATH_USE_SVML_AVX
3035 return _mm256_log2_pd(X);
3036#elif UE_PLATFORM_MATH_USE_SVML
3037 return VectorRegister4Double(_mm_log2_pd(X.XY), _mm_log2_pd(X.ZW));
3038#else
3039 AlignedDouble4 Doubles(X);
3040 Doubles[0] = FMath::Log2(Doubles[0]);
3041 Doubles[1] = FMath::Log2(Doubles[1]);
3042 Doubles[2] = FMath::Log2(Doubles[2]);
3043 Doubles[3] = FMath::Log2(Doubles[3]);
3044 return Doubles.ToVectorRegister();
3045#endif
3046}
3047
3048
3049/**
3050 * Using "static const float ..." or "static const VectorRegister4Float ..." in functions creates the branch and code to construct those constants.
3051 * Doing this in FORCEINLINE not only means you introduce a branch per static, but you bloat the inlined code immensely.
3052 * Defining these constants at the global scope causes them to be created at startup, and avoids the cost at the function level.
3053 * Doing it at the function level is okay for anything that is a simple "const float", but usage of "sqrt()" here forces actual function calls.
3054 */
3055namespace VectorSinConstantsSSE
3056{
3057 static const float p = 0.225f;
3058 static const float a = 7.58946609f; // 16 * sqrtf(p)
3059 static const float b = 1.63384342f; // (1 - p) / sqrtf(p)
3060 static const VectorRegister4Float A = MakeVectorRegisterFloatConstant(a, a, a, a);
3061 static const VectorRegister4Float B = MakeVectorRegisterFloatConstant(b, b, b, b);
3062}
3063
3064FORCEINLINE VectorRegister4Float VectorSin(const VectorRegister4Float& V)
3065{
3066#if UE_PLATFORM_MATH_USE_SVML
3067 return _mm_sin_ps(V);
3068#else
3069 return SSE::sin_ps(V);
3070#endif
3071}
3072
3073FORCEINLINE VectorRegister4Double VectorSin(const VectorRegister4Double& V)
3074{
3075#if UE_PLATFORM_MATH_USE_SVML_AVX
3076 return _mm256_sin_pd(V);
3077#elif UE_PLATFORM_MATH_USE_SVML
3078 return VectorRegister4Double(_mm_sin_pd(V.XY), _mm_sin_pd(V.ZW));
3079#else
3080 AlignedDouble4 Doubles(V);
3081 Doubles[0] = FMath::Sin(Doubles[0]);
3082 Doubles[1] = FMath::Sin(Doubles[1]);
3083 Doubles[2] = FMath::Sin(Doubles[2]);
3084 Doubles[3] = FMath::Sin(Doubles[3]);
3085 return Doubles.ToVectorRegister();
3086#endif
3087}
3088
3089FORCEINLINE VectorRegister4Float VectorCos(const VectorRegister4Float& V)
3090{
3091#if UE_PLATFORM_MATH_USE_SVML
3092 return _mm_cos_ps(V);
3093#else
3094 return SSE::cos_ps(V);
3095#endif
3096}
3097
3098FORCEINLINE VectorRegister4Double VectorCos(const VectorRegister4Double& V)
3099{
3100#if UE_PLATFORM_MATH_USE_SVML_AVX
3101 return _mm256_cos_pd(V);
3102#elif UE_PLATFORM_MATH_USE_SVML
3103 return VectorRegister4Double(_mm_cos_pd(V.XY), _mm_cos_pd(V.ZW));
3104#else
3105 AlignedDouble4 Doubles(V);
3106 Doubles[0] = FMath::Cos(Doubles[0]);
3107 Doubles[1] = FMath::Cos(Doubles[1]);
3108 Doubles[2] = FMath::Cos(Doubles[2]);
3109 Doubles[3] = FMath::Cos(Doubles[3]);
3110 return Doubles.ToVectorRegister();
3111#endif
3112}
3113
3114/**
3115* Computes the sine and cosine of each component of a Vector.
3116*
3117* @param VSinAngles VectorRegister4Float Pointer to where the Sin result should be stored
3118* @param VCosAngles VectorRegister4Float Pointer to where the Cos result should be stored
3119* @param VAngles VectorRegister4Float Pointer to the input angles
3120*/
3121FORCEINLINE void VectorSinCos(VectorRegister4Float* RESTRICT VSinAngles, VectorRegister4Float* RESTRICT VCosAngles, const VectorRegister4Float* RESTRICT VAngles)
3122{
3123#if UE_PLATFORM_MATH_USE_SVML
3124 *VSinAngles = _mm_sincos_ps(VCosAngles, *VAngles);
3125#else
3126 // Map to [-pi, pi]
3127 // X = A - 2pi * round(A/2pi)
3128 // Note the round(), not truncate(). In this case round() can round halfway cases using round-to-nearest-even OR round-to-nearest.
3129
3130 // Quotient = round(A/2pi)
3131 VectorRegister4Float Quotient = VectorMultiply(*VAngles, GlobalVectorConstants::OneOverTwoPi);
3132 Quotient = _mm_cvtepi32_ps(_mm_cvtps_epi32(Quotient)); // round to nearest even is the default rounding mode but that's fine here.
3133 // X = A - 2pi * Quotient
3134 VectorRegister4Float X = VectorNegateMultiplyAdd(GlobalVectorConstants::TwoPi, Quotient, *VAngles);
3135
3136 // Map in [-pi/2,pi/2]
3137 VectorRegister4Float sign = VectorBitwiseAnd(X, GlobalVectorConstants::SignBit());
3138 VectorRegister4Float c = VectorBitwiseOr(GlobalVectorConstants::Pi, sign); // pi when x >= 0, -pi when x < 0
3139 VectorRegister4Float absx = VectorAbs(X);
3140 VectorRegister4Float rflx = VectorSubtract(c, X);
3141 VectorRegister4Float comp = VectorCompareGT(absx, GlobalVectorConstants::PiByTwo);
3142 X = VectorSelect(comp, rflx, X);
3143 sign = VectorSelect(comp, GlobalVectorConstants::FloatMinusOne, GlobalVectorConstants::FloatOne);
3144
3145 const VectorRegister4Float XSquared = VectorMultiply(X, X);
3146
3147 // 11-degree minimax approximation
3148 //*ScalarSin = (((((-2.3889859e-08f * y2 + 2.7525562e-06f) * y2 - 0.00019840874f) * y2 + 0.0083333310f) * y2 - 0.16666667f) * y2 + 1.0f) * y;
3149 const VectorRegister4Float SinCoeff0 = MakeVectorRegisterFloat(1.0f, -0.16666667f, 0.0083333310f, -0.00019840874f);
3150 const VectorRegister4Float SinCoeff1 = MakeVectorRegisterFloat(2.7525562e-06f, -2.3889859e-08f, /*unused*/ 0.f, /*unused*/ 0.f);
3151
3152 VectorRegister4Float S;
3153 S = VectorReplicate(SinCoeff1, 1);
3154 S = VectorMultiplyAdd(XSquared, S, VectorReplicate(SinCoeff1, 0));
3155 S = VectorMultiplyAdd(XSquared, S, VectorReplicate(SinCoeff0, 3));
3156 S = VectorMultiplyAdd(XSquared, S, VectorReplicate(SinCoeff0, 2));
3157 S = VectorMultiplyAdd(XSquared, S, VectorReplicate(SinCoeff0, 1));
3158 S = VectorMultiplyAdd(XSquared, S, VectorReplicate(SinCoeff0, 0));
3159 *VSinAngles = VectorMultiply(S, X);
3160
3161 // 10-degree minimax approximation
3162 //*ScalarCos = sign * (((((-2.6051615e-07f * y2 + 2.4760495e-05f) * y2 - 0.0013888378f) * y2 + 0.041666638f) * y2 - 0.5f) * y2 + 1.0f);
3163 const VectorRegister4Float CosCoeff0 = MakeVectorRegisterFloat(1.0f, -0.5f, 0.041666638f, -0.0013888378f);
3164 const VectorRegister4Float CosCoeff1 = MakeVectorRegisterFloat(2.4760495e-05f, -2.6051615e-07f, /*unused*/ 0.f, /*unused*/ 0.f);
3165
3166 VectorRegister4Float C;
3167 C = VectorReplicate(CosCoeff1, 1);
3168 C = VectorMultiplyAdd(XSquared, C, VectorReplicate(CosCoeff1, 0));
3169 C = VectorMultiplyAdd(XSquared, C, VectorReplicate(CosCoeff0, 3));
3170 C = VectorMultiplyAdd(XSquared, C, VectorReplicate(CosCoeff0, 2));
3171 C = VectorMultiplyAdd(XSquared, C, VectorReplicate(CosCoeff0, 1));
3172 C = VectorMultiplyAdd(XSquared, C, VectorReplicate(CosCoeff0, 0));
3173 *VCosAngles = VectorMultiply(C, sign);
3174#endif
3175}
3176
3177FORCEINLINE void VectorSinCos(VectorRegister4Double* RESTRICT VSinAngles, VectorRegister4Double* RESTRICT VCosAngles, const VectorRegister4Double* RESTRICT VAngles)
3178{
3179#if UE_PLATFORM_MATH_USE_SVML_AVX
3180 VSinAngles->XYZW = _mm256_sincos_pd(&(VCosAngles->XYZW), VAngles->XYZW);
3181#elif UE_PLATFORM_MATH_USE_SVML
3182 VSinAngles->XY = _mm_sincos_pd(&(VCosAngles->XY), VAngles->XY);
3183 VSinAngles->ZW = _mm_sincos_pd(&(VCosAngles->ZW), VAngles->ZW);
3184#else
3185 *VSinAngles = VectorSin(*VAngles);
3186 *VCosAngles = VectorCos(*VAngles);
3187#endif
3188}
3189
3190
3191FORCEINLINE VectorRegister4Float VectorTan(const VectorRegister4Float& X)
3192{
3193#if UE_PLATFORM_MATH_USE_SVML
3194 return _mm_tan_ps(X);
3195#else
3196 //return SSE::tan_ps(X);
3197 AlignedFloat4 Floats(X);
3198 Floats[0] = FMath::Tan(Floats[0]);
3199 Floats[1] = FMath::Tan(Floats[1]);
3200 Floats[2] = FMath::Tan(Floats[2]);
3201 Floats[3] = FMath::Tan(Floats[3]);
3202 return Floats.ToVectorRegister();
3203#endif
3204}
3205
3206FORCEINLINE VectorRegister4Double VectorTan(const VectorRegister4Double& X)
3207{
3208#if UE_PLATFORM_MATH_USE_SVML_AVX
3209 return _mm256_tan_pd(X);
3210#elif UE_PLATFORM_MATH_USE_SVML
3211 return VectorRegister4Double(_mm_tan_pd(X.XY), _mm_tan_pd(X.ZW));
3212#else
3213 AlignedDouble4 Doubles(X);
3214 Doubles[0] = FMath::Tan(Doubles[0]);
3215 Doubles[1] = FMath::Tan(Doubles[1]);
3216 Doubles[2] = FMath::Tan(Doubles[2]);
3217 Doubles[3] = FMath::Tan(Doubles[3]);
3218 return Doubles.ToVectorRegister();
3219#endif
3220}
3221
3222FORCEINLINE VectorRegister4Float VectorASin(const VectorRegister4Float& X)
3223{
3224#if UE_PLATFORM_MATH_USE_SVML
3225 return _mm_asin_ps(X);
3226#else
3227 AlignedFloat4 Floats(X);
3228 Floats[0] = FMath::Asin(Floats[0]);
3229 Floats[1] = FMath::Asin(Floats[1]);
3230 Floats[2] = FMath::Asin(Floats[2]);
3231 Floats[3] = FMath::Asin(Floats[3]);
3232 return Floats.ToVectorRegister();
3233#endif
3234}
3235
3236FORCEINLINE VectorRegister4Double VectorASin(const VectorRegister4Double& X)
3237{
3238#if UE_PLATFORM_MATH_USE_SVML_AVX
3239 return _mm256_asin_pd(X);
3240#elif UE_PLATFORM_MATH_USE_SVML
3241 return VectorRegister4Double(_mm_asin_pd(X.XY), _mm_asin_pd(X.ZW));
3242#else
3243 AlignedDouble4 Doubles(X);
3244 Doubles[0] = FMath::Asin(Doubles[0]);
3245 Doubles[1] = FMath::Asin(Doubles[1]);
3246 Doubles[2] = FMath::Asin(Doubles[2]);
3247 Doubles[3] = FMath::Asin(Doubles[3]);
3248 return Doubles.ToVectorRegister();
3249#endif
3250}
3251
3252FORCEINLINE VectorRegister4Float VectorACos(const VectorRegister4Float& X)
3253{
3254#if UE_PLATFORM_MATH_USE_SVML
3255 return _mm_acos_ps(X);
3256#else
3257 AlignedFloat4 Floats(X);
3258 Floats[0] = FMath::Acos(Floats[0]);
3259 Floats[1] = FMath::Acos(Floats[1]);
3260 Floats[2] = FMath::Acos(Floats[2]);
3261 Floats[3] = FMath::Acos(Floats[3]);
3262 return Floats.ToVectorRegister();
3263#endif
3264}
3265
3266FORCEINLINE VectorRegister4Double VectorACos(const VectorRegister4Double& X)
3267{
3268#if UE_PLATFORM_MATH_USE_SVML_AVX
3269 return _mm256_acos_pd(X);
3270#elif UE_PLATFORM_MATH_USE_SVML
3271 return VectorRegister4Double(_mm_acos_pd(X.XY), _mm_acos_pd(X.ZW));
3272#else
3273 AlignedDouble4 Doubles(X);
3274 Doubles[0] = FMath::Acos(Doubles[0]);
3275 Doubles[1] = FMath::Acos(Doubles[1]);
3276 Doubles[2] = FMath::Acos(Doubles[2]);
3277 Doubles[3] = FMath::Acos(Doubles[3]);
3278 return Doubles.ToVectorRegister();
3279#endif
3280}
3281
3282FORCEINLINE VectorRegister4Float VectorATan(const VectorRegister4Float& X)
3283{
3284#if UE_PLATFORM_MATH_USE_SVML
3285 return _mm_atan_ps(X);
3286#else
3287 //return SSE::atan_ps(X);
3288 AlignedFloat4 Floats(X);
3289 Floats[0] = FMath::Atan(Floats[0]);
3290 Floats[1] = FMath::Atan(Floats[1]);
3291 Floats[2] = FMath::Atan(Floats[2]);
3292 Floats[3] = FMath::Atan(Floats[3]);
3293 return Floats.ToVectorRegister();
3294#endif
3295}
3296
3297FORCEINLINE VectorRegister4Double VectorATan(const VectorRegister4Double& X)
3298{
3299#if UE_PLATFORM_MATH_USE_SVML_AVX
3300 return _mm256_atan_pd(X);
3301#elif UE_PLATFORM_MATH_USE_SVML
3302 return VectorRegister4Double(_mm_atan_pd(X.XY), _mm_atan_pd(X.ZW));
3303#else
3304 AlignedDouble4 Doubles(X);
3305 Doubles[0] = FMath::Atan(Doubles[0]);
3306 Doubles[1] = FMath::Atan(Doubles[1]);
3307 Doubles[2] = FMath::Atan(Doubles[2]);
3308 Doubles[3] = FMath::Atan(Doubles[3]);
3309 return Doubles.ToVectorRegister();
3310#endif
3311}
3312
3313FORCEINLINE VectorRegister4Float VectorATan2(const VectorRegister4Float& Y, const VectorRegister4Float& X)
3314{
3315#if UE_PLATFORM_MATH_USE_SVML
3316 return _mm_atan2_ps(Y, X);
3317#else
3318 //return SSE::atan2_ps(Y, X);
3319 AlignedFloat4 FloatsY(Y);
3320 AlignedFloat4 FloatsX(X);
3321 FloatsY[0] = FMath::Atan2(FloatsY[0], FloatsX[0]);
3322 FloatsY[1] = FMath::Atan2(FloatsY[1], FloatsX[1]);
3323 FloatsY[2] = FMath::Atan2(FloatsY[2], FloatsX[2]);
3324 FloatsY[3] = FMath::Atan2(FloatsY[3], FloatsX[3]);
3325 return FloatsY.ToVectorRegister();
3326#endif
3327}
3328
3329FORCEINLINE VectorRegister4Double VectorATan2(const VectorRegister4Double& Y, const VectorRegister4Double& X)
3330{
3331#if UE_PLATFORM_MATH_USE_SVML_AVX
3332 return _mm256_atan2_pd(Y, X);
3333#elif UE_PLATFORM_MATH_USE_SVML
3334 return VectorRegister4Double(_mm_atan2_pd(Y.XY, X.XY), _mm_atan2_pd(Y.ZW, X.ZW));
3335#else
3336 AlignedDouble4 DoublesY(Y);
3337 AlignedDouble4 DoublesX(X);
3338 DoublesY[0] = FMath::Atan2(DoublesY[0], DoublesX[0]);
3339 DoublesY[1] = FMath::Atan2(DoublesY[1], DoublesX[1]);
3340 DoublesY[2] = FMath::Atan2(DoublesY[2], DoublesX[2]);
3341 DoublesY[3] = FMath::Atan2(DoublesY[3], DoublesX[3]);
3342 return DoublesY.ToVectorRegister();
3343#endif
3344}
3345
3346
3347//////////////////////////////////////////////////////////////////////////
3348//Integer ops
3349
3350//Bitwise
3351/** = a & b */
3352#define VectorIntAnd(A, B) _mm_and_si128(A, B)
3353/** = a | b */
3354#define VectorIntOr(A, B) _mm_or_si128(A, B)
3355/** = a ^ b */
3356#define VectorIntXor(A, B) _mm_xor_si128(A, B)
3357/** = (~a) & b */
3358#define VectorIntAndNot(A, B) _mm_andnot_si128(A, B)
3359/** = ~a */
3360#define VectorIntNot(A) _mm_xor_si128(A, GlobalVectorConstants::IntAllMask)
3361
3362//Comparison
3363#define VectorIntCompareEQ(A, B) _mm_cmpeq_epi32(A,B)
3364#define VectorIntCompareNEQ(A, B) VectorIntNot(_mm_cmpeq_epi32(A,B))
3365#define VectorIntCompareGT(A, B) _mm_cmpgt_epi32(A,B)
3366#define VectorIntCompareLT(A, B) _mm_cmplt_epi32(A,B)
3367#define VectorIntCompareGE(A, B) VectorIntNot(VectorIntCompareLT(A,B))
3368#define VectorIntCompareLE(A, B) VectorIntNot(VectorIntCompareGT(A,B))
3369
3370
3371FORCEINLINE VectorRegister4Int VectorIntSelect(const VectorRegister4Int& Mask, const VectorRegister4Int& Vec1, const VectorRegister4Int& Vec2)
3372{
3373 return _mm_xor_si128(Vec2, _mm_and_si128(Mask, _mm_xor_si128(Vec1, Vec2)));
3374}
3375
3376//Arithmetic
3377#define VectorIntAdd(A, B) _mm_add_epi32(A, B)
3378#define VectorIntSubtract(A, B) _mm_sub_epi32(A, B)
3379
3380FORCEINLINE VectorRegister4Int VectorIntMultiply(const VectorRegister4Int& A, const VectorRegister4Int& B)
3381{
3382#if UE_PLATFORM_MATH_USE_SSE4_1
3383 return _mm_mullo_epi32(A, B);
3384#else
3385 //SSE2 doesn't have a multiply op for 4 32bit ints. Ugh.
3386 __m128i Temp0 = _mm_mul_epu32(A, B);
3387 __m128i Temp1 = _mm_mul_epu32(_mm_srli_si128(A, 4), _mm_srli_si128(B, 4));
3388 return _mm_unpacklo_epi32(_mm_shuffle_epi32(Temp0, _MM_SHUFFLE(0, 0, 2, 0)), _mm_shuffle_epi32(Temp1, _MM_SHUFFLE(0, 0, 2, 0)));
3389#endif
3390}
3391
3392#define VectorIntNegate(A) VectorIntSubtract( GlobalVectorConstants::IntZero, A)
3393
3394FORCEINLINE VectorRegister4Int VectorIntMin(const VectorRegister4Int& A, const VectorRegister4Int& B)
3395{
3396 VectorRegister4Int Mask = VectorIntCompareLT(A, B);
3397 return VectorIntSelect(Mask, A, B);
3398}
3399
3400FORCEINLINE VectorRegister4Int VectorIntMax(const VectorRegister4Int& A, const VectorRegister4Int& B)
3401{
3402 VectorRegister4Int Mask = VectorIntCompareGT(A, B);
3403 return VectorIntSelect(Mask, A, B);
3404}
3405
3406FORCEINLINE VectorRegister4Int VectorIntAbs(const VectorRegister4Int& A)
3407{
3408 VectorRegister4Int Mask = VectorIntCompareGE(A, GlobalVectorConstants::IntZero);
3409 return VectorIntSelect(Mask, A, VectorIntNegate(A));
3410}
3411
3412FORCEINLINE VectorRegister4Int VectorIntClamp(const VectorRegister4Int& Vec1, const VectorRegister4Int& Vec2, const VectorRegister4Int& Vec3)
3413{
3414 return VectorIntMin(VectorIntMax(Vec1, Vec2), Vec3);
3415}
3416
3417#define VectorIntSign(A) VectorIntSelect( VectorIntCompareGE(A, GlobalVectorConstants::IntZero), GlobalVectorConstants::IntOne, GlobalVectorConstants::IntMinusOne )
3418
3419#define VectorIntToFloat(A) _mm_cvtepi32_ps(A)
3420
3421FORCEINLINE VectorRegister4Int VectorFloatToInt(const VectorRegister4Float& A)
3422{
3423 return _mm_cvttps_epi32(A);
3424}
3425
3426// TODO: LWC: potential loss of data
3427FORCEINLINE VectorRegister4Int VectorFloatToInt(const VectorRegister4Double& A)
3428{
3429 return VectorFloatToInt( MakeVectorRegisterFloatFromDouble(A) );
3430}
3431
3432
3433//Loads and stores
3434
3435/**
3436* Stores a vector to memory (aligned or unaligned).
3437*
3438* @param Vec Vector to store
3439* @param Ptr Memory pointer
3440*/
3441#define VectorIntStore( Vec, Ptr ) _mm_storeu_si128( (VectorRegister4Int*)(Ptr), Vec )
3442
3443/**
3444* Loads 4 int32s from unaligned memory.
3445*
3446* @param Ptr Unaligned memory pointer to the 4 int32s
3447* @return VectorRegister4Int(Ptr[0], Ptr[1], Ptr[2], Ptr[3])
3448*/
3449#define VectorIntLoad( Ptr ) _mm_loadu_si128( (VectorRegister4Int*)(Ptr) )
3450
3451/**
3452* Stores a vector to memory (aligned).
3453*
3454* @param Vec Vector to store
3455* @param Ptr Aligned Memory pointer
3456*/
3457#define VectorIntStoreAligned( Vec, Ptr ) _mm_store_si128( (VectorRegister4Int*)(Ptr), Vec )
3458
3459/**
3460* Loads 4 int32s from aligned memory.
3461*
3462* @param Ptr Aligned memory pointer to the 4 int32s
3463* @return VectorRegister4Int(Ptr[0], Ptr[1], Ptr[2], Ptr[3])
3464*/
3465#define VectorIntLoadAligned( Ptr ) _mm_load_si128( (VectorRegister4Int*)(Ptr) )
3466
3467/**
3468* Loads 1 int32 from unaligned memory into all components of a vector register.
3469*
3470* @param Ptr Unaligned memory pointer to the 4 int32s
3471* @return VectorRegister4Int(*Ptr, *Ptr, *Ptr, *Ptr)
3472*/
3473#define VectorIntLoad1( Ptr ) _mm_set1_epi32(*(Ptr))
3474#define VectorSetZero() _mm_setzero_si128()
3475#define VectorSet1(F) _mm_set1_ps(F)
3476#define VectorIntSet1(F) _mm_set1_epi32(F)
3477#define VectorShiftLeftImm(Vec, ImmAmt) _mm_slli_epi32(Vec, ImmAmt)
3478#define VectorShiftRightImmArithmetic(Vec, ImmAmt) _mm_srai_epi32(Vec, ImmAmt)
3479#define VectorShiftRightImmLogical(Vec, ImmAmt) _mm_srli_epi32(Vec, ImmAmt)
3480#define VectorCastIntToFloat(Vec) _mm_castsi128_ps(Vec)
3481#define VectorCastFloatToInt(Vec) _mm_castps_si128(Vec)
3482#define VectorShuffleImmediate(Vec, I0, I1, I2, I3) _mm_shuffle_epi32(Vec, _MM_SHUFFLE(I0, I1, I2, I3))
3483#define VectorIntExpandLow16To32(V0) _mm_unpacklo_epi16(V0, _mm_setzero_si128())
3484
3485#endif
3486
3487// IWYU pragma: end_exports
FORCEINLINE constexpr T Align(T Val, uint64 Alignment)
FORCEINLINE constexpr T AlignDown(T Val, uint64 Alignment)
FORCEINLINE constexpr bool IsAligned(T Val, uint64 Alignment)
FORCEINLINE constexpr T AlignArbitrary(T Val, uint64 Alignment)
#define USE_EVENT_DRIVEN_ASYNC_LOAD_AT_BOOT_TIME
Definition Archive.h:49
#define DEVIRTUALIZE_FLinkerLoad_Serialize
Definition Archive.h:57
T Arctor(FArchive &Ar)
Definition Archive.h:2236
TFunction< bool(double RemainingTime)> FExternalReadCallback
Definition Archive.h:41
#define ARK_API
Definition Ark.h:16
#define TARRAY_RANGED_FOR_CHECKS
Definition Array.h:37
void * operator new(size_t Size, TArray< T, AllocatorType > &Array, typename TArray< T, AllocatorType >::SizeType Index)
Definition Array.h:3458
FORCEINLINE TIndexedContainerIterator< ContainerType, ElementType, SizeType > operator+(SizeType Offset, TIndexedContainerIterator< ContainerType, ElementType, SizeType > RHS)
Definition Array.h:182
void * operator new(size_t Size, TArray< T, AllocatorType > &Array)
Definition Array.h:3452
bool operator==(TArrayView< ElementType > Lhs, RangeType &&Rhs)
Definition ArrayView.h:816
bool operator!=(TArrayView< ElementType > Lhs, RangeType &&Rhs)
Definition ArrayView.h:843
bool operator!=(RangeType &&Lhs, TArrayView< ElementType > Rhs)
Definition ArrayView.h:833
bool operator!=(TArrayView< ElementType, SizeType >, TArrayView< OtherElementType, OtherSizeType >)=delete
bool operator==(RangeType &&Lhs, TArrayView< ElementType > Rhs)
Definition ArrayView.h:805
void PrintScriptCallstack()
#define checkSlow(expr)
RetType FORCENOINLINE UE_DEBUG_SECTION DispatchCheckVerify(InnerType &&Inner, ArgTypes const &... Args)
TFunction< bool(const FEnsureHandlerArgs &Args) GetEnsureHandler)()
#define UE_DEBUG_BREAK_AND_PROMPT_FOR_REMOTE()
#define UE_DEBUG_SECTION
#define check(expr)
#define LowLevelFatalError(Format,...)
#define ensureMsgf( InExpression, InFormat,...)
void VARARGS LowLevelFatalErrorHandler(const ANSICHAR *File, int32 Line, void *ProgramCounter, const TCHAR *Format=TEXT(""),...)
TFunction< bool(const FEnsureHandlerArgs &Args) SetEnsureHandler)(TFunction< bool(const FEnsureHandlerArgs &Args)> EnsureHandler)
#define ensure( InExpression)
#define checkf(expr, format,...)
EMemoryOrder
Definition Atomic.h:38
@ SequentiallyConsistent
#define USE_DEPRECATED_TATOMIC
Definition Atomic.h:16
ARK_API LPVOID GetDataAddress(const std::string &name)
Definition Base.cpp:15
ARK_API BitField GetBitField(LPVOID base, const std::string &name)
Definition Base.cpp:25
ARK_API BitField GetBitField(const void *base, const std::string &name)
Definition Base.cpp:20
ARK_API DWORD64 GetAddress(const void *base, const std::string &name)
Definition Base.cpp:5
ARK_API LPVOID GetAddress(const std::string &name)
Definition Base.cpp:10
EBitwiseOperatorFlags
Definition BitArray.h:59
FORCEINLINE uint32 GetTypeHash(const TBitArray< Allocator > &BitArray)
Definition BitArray.h:1736
#define ALLOW_CONSOLE_IN_SHIPPING
Definition Build.h:208
#define WITH_ENGINE
Definition Build.h:8
#define USE_CHECKS_IN_SHIPPING
Definition Build.h:199
#define ALLOW_HANG_DETECTION
Definition Build.h:402
#define UE_IS_COOKED_EDITOR
Definition Build.h:445
#define UE_BUILD_TEST
Definition Build.h:23
#define ALLOW_DUMPGPU_IN_SHIPPING
Definition Build.h:388
#define ENABLE_STATNAMEDEVENTS
Definition Build.h:221
#define FORCE_USE_STATS
Definition Build.h:213
#define UE_GAME
Definition Build.h:29
#define CHECK_PUREVIRTUALS
Definition Build.h:185
#define DO_ENSURE
Definition Build.h:314
#define ALLOW_PROFILEGPU_IN_SHIPPING
Definition Build.h:377
#define DO_CHECK
Definition Build.h:311
#define WITH_HOT_RELOAD
Definition Build.h:150
#define USE_ENSURES_IN_SHIPPING
Definition Build.h:204
#define UE_BUILD_DEVELOPMENT
Definition Build.h:20
#define USE_UBER_GRAPH_PERSISTENT_FRAME
Definition Build.h:357
#define ALLOW_DUMPGPU_IN_TEST
Definition Build.h:384
#define WITH_LIVE_CODING
Definition Build.h:157
#define USE_LOGGING_IN_SHIPPING
Definition Build.h:195
#define UE_BUILD_SHIPPING
Definition Build.h:4
#define USE_HITCH_DETECTION
Definition Build.h:421
#define UE_BUILD_DOCS
Definition Build.h:38
#define ALLOW_HITCH_DETECTION
Definition Build.h:408
#define IS_MONOLITHIC
Definition Build.h:5
#define USE_CIRCULAR_DEPENDENCY_LOAD_DEFERRING
Definition Build.h:368
#define DO_GUARD_SLOW
Definition Build.h:308
#define UE_SERVER
Definition Build.h:45
#define ALLOW_CHEAT_CVARS_IN_TEST
Definition Build.h:395
#define ALLOW_PROFILEGPU_IN_TEST
Definition Build.h:373
#define WITH_UNREAL_DEVELOPER_TOOLS
Definition Build.h:10
#define ENABLE_PGO_PROFILE
Definition Build.h:121
#define WITH_EDITOR
Definition Build.h:7
#define WITH_PLUGIN_SUPPORT
Definition Build.h:9
#define STATS
Definition Build.h:317
#define WITH_TEXT_ARCHIVE_SUPPORT
Definition Build.h:170
#define IS_PROGRAM
Definition Build.h:6
#define UE_BUILD_DEBUG
Definition Build.h:17
#define AGGRESSIVE_MEMORY_SAVING
Definition Build.h:413
#define WITH_PERFCOUNTERS
Definition Build.h:114
#define UE_EDITOR
Definition Build.h:32
float ByteSwap(float Value)
Definition ByteSwap.h:159
uint64 ByteSwap(uint64 Value)
Definition ByteSwap.h:158
int16 ByteSwap(int16 Value)
Definition ByteSwap.h:153
uint16 ByteSwap(uint16 Value)
Definition ByteSwap.h:154
int64 ByteSwap(int64 Value)
Definition ByteSwap.h:157
#define BYTESWAP_ORDER16_unsigned(x)
Definition ByteSwap.h:9
uint32 ByteSwap(uint32 Value)
Definition ByteSwap.h:156
int32 ByteSwap(int32 Value)
Definition ByteSwap.h:155
char16_t ByteSwap(char16_t Value)
Definition ByteSwap.h:161
#define BYTESWAP_ORDER32_unsigned(x)
Definition ByteSwap.h:10
double ByteSwap(double Value)
Definition ByteSwap.h:160
#define MAX_SPRINTF
Definition CString.h:17
TCString< ANSICHAR > FCStringAnsi
Definition CString.h:463
TCString< WIDECHAR > FCStringWide
Definition CString.h:464
TCString< TCHAR > FCString
Definition CString.h:462
TCString< UTF8CHAR > FCStringUtf8
Definition CString.h:465
TChar< WIDECHAR > FCharWide
Definition Char.h:139
#define LITERAL(CharType, StringLiteral)
Definition Char.h:30
TChar< ANSICHAR > FCharAnsi
Definition Char.h:140
TChar< TCHAR > FChar
Definition Char.h:138
uint64 CityHash128to64(const Uint128_64 &x)
Definition CityHash.h:91
uint32 CityHash32(const char *buf, uint32 len)
uint64 CityHash64WithSeeds(const char *buf, uint32 len, uint64 seed0, uint64 seed1)
uint64 CityHash64WithSeed(const char *buf, uint32 len, uint64 seed)
uint64 CityHash64(const char *buf, uint32 len)
static const float OneOver255
Definition Color.h:861
void ConvertFLinearColorsToFColorSRGB(const FLinearColor *InLinearColors, FColor *OutColorsSRGB, int64 InCount)
void ComputeAndFixedColorAndIntensity(const FLinearColor &InLinearColor, FColor &OutColor, float &OutIntensity)
EGammaSpace
Definition Color.h:32
FORCEINLINE FLinearColor operator*(float Scalar, const FLinearColor &Color)
Definition Color.h:534
ARK_API FColorList GColorList
ECompressionFlags
@ COMPRESS_None
@ COMPRESS_ZLIB
@ COMPRESS_BiasSpeed
@ COMPRESS_BiasSize
@ COMPRESS_Custom
@ COMPRESS_OptionsFlagsMask
@ COMPRESS_NoFlags
@ COMPRESS_BiasMemory
@ COMPRESS_ForPurposeMask
@ COMPRESS_ForPackaging
@ COMPRESS_GZIP
@ COMPRESS_SourceIsPadded
@ COMPRESS_DeprecatedFormatFlagsMask
#define NumBitsPerDWORD
FORCEINLINE SizeType DefaultCalculateSlackShrink(SizeType NumElements, SizeType NumAllocatedElements, SIZE_T BytesPerElement, bool bAllowQuantize, uint32 Alignment=DEFAULT_ALIGNMENT)
FORCEINLINE SizeType DefaultCalculateSlackGrow(SizeType NumElements, SizeType NumAllocatedElements, SIZE_T BytesPerElement, bool bAllowQuantize, uint32 Alignment=DEFAULT_ALIGNMENT)
#define CONTAINER_INITIAL_ALLOC_ZERO_SLACK
#define DEFAULT_MIN_NUMBER_OF_HASHED_ELEMENTS
#define NumBitsPerDWORDLogTwo
FORCEINLINE SizeType DefaultCalculateSlackReserve(SizeType NumElements, SIZE_T BytesPerElement, bool bAllowQuantize, uint32 Alignment=DEFAULT_ALIGNMENT)
#define DEFAULT_NUMBER_OF_ELEMENTS_PER_HASH_BUCKET
#define DEFAULT_BASE_NUMBER_OF_HASH_BUCKETS
#define NUM_TFUNCTION_INLINE_BYTES
Definition CoreDefines.h:61
#define NUM_MULTICAST_DELEGATE_INLINE_ENTRIES
Definition CoreDefines.h:52
#define NUM_DELEGATE_INLINE_BYTES
Definition CoreDefines.h:43
bool GShouldSuspendRenderingThread
bool IsAudioThreadRunning()
FString GInstallBundleIni
void RequestEngineExit(const FString &ReasonString)
bool GIsClient
FORCEINLINE bool IsRunningDLCCookCommandlet()
bool GIsGCingAfterBlueprintCompile
bool GVerifyObjectReferencesOnly
FString GDeviceProfilesIni
float GNearClippingPlane
void(* ResumeTextureStreamingRenderTasks)()
FORCEINLINE bool IsRunningCommandlet()
bool GScreenMessagesRestoreState
FString GEditorSettingsIni
bool GIsInitialLoad
bool GIsSilent
bool GEdSelectionLock
const FText GNo
double GStartTime
FChunkedFixedUObjectArray * GCoreObjectArrayForDebugVisualizers
FLazyName GLongCorePackageName
void(* SuspendTextureStreamingRenderTasks)()
bool GAreScreenMessagesEnabled
class FOutputDeviceError * GError
TCHAR GErrorHist[16384]
TCHAR GErrorExceptionDescription[4096]
FLazyName GCurrentTraceName
bool IsInParallelGameThread()
FString GGameUserSettingsIni
uint32 GRenderThreadId
uint32 GScreenshotResolutionY
FString GEngineIni
uint64 GMakeCacheIDIndex
int32 GCycleStatsShouldEmitNamedEvents
bool GIsGameThreadIdInitialized
bool GIsAutomationTesting
bool GIsReinstancing
FIsDuplicatingClassForReinstancing GIsDuplicatingClassForReinstancing
bool(* IsAsyncLoadingMultithreaded)()
FORCEINLINE bool IsRunningCookCommandlet()
bool GPlatformNeedsPowerOfTwoTextures
FConfigCacheIni * GConfig
const FText GYes
FString GGameplayTagsIni
bool GFastPathUniqueNameGeneration
FORCEINLINE void NotifyLoadingStateChanged(bool bState, const TCHAR *Message)
bool IsRunningCookOnTheFly()
bool GPumpingMessages
ETaskTag
@ ERenderingThread
@ EParallelRenderingThread
@ ENamedThreadBits
@ EParallelRhiThread
@ EParallelGameThread
@ EParallelThread
@ EAsyncLoadingThread
bool GIsGuarded
void RequestEngineExit(const TCHAR *ReasonString)
bool GIsCookerLoadingPackage
int32 GSavingCompressionChunkSize
void EnsureRetrievingVTablePtrDuringCtor(const TCHAR *CtorSignature)
void SetEmitDrawEvents(bool EmitDrawEvents)
uint64 GFrameCounterRenderThread
bool(* IsAsyncLoading)()
FORCEINLINE UClass * GetRunningCommandletClass()
uint32 GFrameNumber
uint32 GScreenshotResolutionX
uint64 GFrameCounter
bool GIsServer
FORCEINLINE bool IsEngineExitRequested()
bool GEnableVREditorHacks
uint64 GInputTime
bool GIsReconstructingBlueprintInstances
void BootTimingPoint(const ANSICHAR *Message)
FString GRuntimeOptionsIni
UE::CoreUObject::Private::FObjectHandlePackageDebugData * GCoreObjectHandlePackageDebug
bool GForceLoadEditorOnly
bool GIsFirstInstance
int32 GIsDumpingMovie
FORCEINLINE bool IsAllowCommandletRendering()
bool GetEmitDrawEvents()
FOutputDeviceRedirector * GetGlobalLogSingleton()
bool GIsCriticalError
FString GEditorLayoutIni
FORCEINLINE bool IsAllowCommandletAudio()
FString GEditorPerProjectIni
const TCHAR * GForeignEngineDir
bool GIsDemoMode
uint64 GLastGCFrame
FString GLightmassIni
bool GIsSlowTask
const FText GNone
FExec * GDebugToolExec
bool GPumpingMessagesOutsideOfMainLoop
bool GAllowActorScriptExecutionInEditor
bool GShouldEmitVerboseNamedEvents
bool IsInRHIThread()
TCHAR GInternalProjectName[64]
FString GEditorIni
bool IsInActualRenderingThread()
bool GIsHighResScreenshot
bool(* IsAsyncLoadingSuspended)()
FOutputDeviceConsole * GLogConsole
uint32 GGameThreadId
FString GHardwareIni
FString GEditorKeyBindingsIni
FString GCompatIni
void BeginExitIfRequested()
bool GIsGameAgnosticExe
class FFeedbackContext * GWarn
uint32 GSlateLoadingThreadId
bool GEventDrivenLoaderEnabled
const FText GTrue
FString GScalabilityIni
bool GCompilingBlueprint
const FText GFalse
FUELibraryOverrideSettings GUELibraryOverrideSettings
FRunnableThread * GRenderingThread
ITransaction * GUndo
TAtomic< int32 > GIsRenderingThreadSuspended
FString GSystemStartTime
bool GIsEditorLoadingPackage
bool IsInParallelRHIThread()
bool IsInRenderingThread()
FString GGameIni
bool GSlowTaskOccurred
void DumpBootTiming()
bool GIsRetrievingVTablePtr
int32 GPlayInEditorID
float GHitchThresholdMS
void(* GFlushStreamingFunc)(void)
bool IsInSlateThread()
bool IsInAudioThread()
bool GExitPurge
bool GIsRunningUnattendedScript
bool GIsBuildMachine
bool IsInParallelRenderingThread()
bool(* IsInAsyncLoadingThread)()
bool IsRHIThreadRunning()
bool IsInGameThread()
FLazyName GLongCoreUObjectPackageName
ELogTimes::Type GPrintLogTimes
bool GIsPlayInEditorWorld
FString GInputIni
void(* ResumeAsyncLoading)()
UE::CoreUObject::Private::FStoredObjectPath * GCoreComplexObjectPathDebug
FRunnableThread * GRHIThread_InternalUseOnly
uint32 GFrameNumberRenderThread
void(* SuspendAsyncLoading)()
#define UE_STATIC_DEPRECATE(Version, bExpression, Message)
EInputDeviceConnectionState
@ INDEX_NONE
@ NoInit
#define UE_NONCOPYABLE(TypeName)
#define UE_POP_MACRO(name)
#define USING_THREAD_SANITISER
const FPlatformUserId PLATFORMUSERID_NONE
#define WITH_EDITORONLY_DATA
@ UNICODE_BOM
#define FORCEINLINE_DEBUGGABLE
#define UE_PTRDIFF_TO_INT32(argument)
#define ANONYMOUS_VARIABLE(Name)
#define UE_DISABLE_OPTIMIZATION_SHIP
#define USING_CODE_ANALYSIS
EForceInit
@ ForceInitToZero
@ ForceInit
#define UE_DEPRECATED(Version, Message)
#define CA_ASSUME(Expr)
#define UE_ENABLE_OPTIMIZATION_SHIP
#define TSAN_SAFE
@ InPlace
#define UE_PUSH_MACRO(name)
#define UE_CHECK_DISABLE_OPTIMIZATION
#define TSAN_ATOMIC(Type)
const FInputDeviceId INPUTDEVICEID_NONE
#define WITH_SERVER_CODE
Definition CoreTypes.h:5
TSharedRef< FCulture, ESPMode::ThreadSafe > FCultureRef
TSharedPtr< FCulture, ESPMode::ThreadSafe > FCulturePtr
@ DSF_EnableCookerWarnings
EDelayedRegisterRunPhase
#define FUNC_INCLUDING_INLINE_IMPL
Definition Delegate.h:485
#define FUNC_CONCAT(...)
Definition Delegate.h:200
#define FUNC_DECLARE_DYNAMIC_MULTICAST_DELEGATE(TWeakPtr, DynamicMulticastDelegateClassName, ExecFunction, FuncParamList, FuncParamPassThru,...)
Definition Delegate.h:296
#define FUNC_DECLARE_EVENT(OwningType, EventName, ReturnType,...)
Definition Delegate.h:224
#define ENABLE_STATIC_FUNCTION_FNAMES
Definition Delegate.h:319
#define FUNC_DECLARE_DYNAMIC_DELEGATE_RETVAL(TWeakPtr, DynamicDelegateRetValClassName, ExecFunction, RetValType, FuncParamList, FuncParamPassThru,...)
Definition Delegate.h:270
#define STATIC_FUNCTION_FNAME(str)
Definition Delegate.h:415
#define FUNC_DECLARE_DYNAMIC_DELEGATE(TWeakPtr, DynamicDelegateClassName, ExecFunction, FuncParamList, FuncParamPassThru,...)
Definition Delegate.h:235
#define FUNC_DECLARE_TS_MULTICAST_DELEGATE(MulticastDelegateName, ReturnType,...)
Definition Delegate.h:216
#define __Delegate_h__
Definition Delegate.h:484
#define FUNC_DECLARE_MULTICAST_DELEGATE(MulticastDelegateName, ReturnType,...)
Definition Delegate.h:212
#define FUNC_DECLARE_DELEGATE(DelegateName, ReturnType,...)
Definition Delegate.h:208
TAlignedBytes< 16, 16 > FAlignedInlineDelegateType
FHeapAllocator FDelegateAllocatorType
#define DECLARE_DELEGATE_RetVal_OneParam(ReturnValueType, DelegateName, Param1Type)
#define DECLARE_DELEGATE_RetVal(ReturnValueType, DelegateName)
#define DECLARE_DELEGATE(DelegateName)
#define DECLARE_EVENT(OwningType, EventName)
#define DECLARE_DELEGATE_RetVal_TwoParams(ReturnValueType, DelegateName, Param1Type, Param2Type)
#define DECLARE_MULTICAST_DELEGATE(DelegateName)
#define DECLARE_TS_MULTICAST_DELEGATE(DelegateName)
#define UE_DELEGATES_MT_SCOPED_READ_ACCESS(...)
#define UE_DETECT_DELEGATES_RACE_CONDITIONS
#define UE_DELEGATES_MT_SCOPED_WRITE_ACCESS(...)
#define UE_DELEGATES_MT_ACCESS_DETECTOR(...)
#define USE_DELEGATE_TRYGETBOUNDFUNCTIONNAME
T * ToRawPtr(const TObjectPtr< T > &Ptr)
Definition ObjectPtr.h:828
To * Cast(From *Src)
EVersionComparison
EVersionComponent
@ Changelist
The pre-release field adds additional versioning through a series of comparable dotted strings or num...
@ Patch
Patch version increments fix existing functionality without changing the API.
@ Major
Major version increments introduce breaking API changes.
@ Minor
Minor version increments add additional functionality without breaking existing APIs.
FORCEINLINE uint32 GetTypeHash(const TEnumAsByte< T > &Enum)
Definition EnumAsByte.h:114
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
constexpr bool EnumHasAllFlags(Enum Flags, Enum Contains)
#define ENUM_CLASS_FLAGS(Enum)
void EnumRemoveFlags(Enum &Flags, Enum FlagsToRemove)
void EnumAddFlags(Enum &Flags, Enum FlagsToAdd)
ETranslucencyView
Definition Enums.h:34128
EBufferWriterFlags
Definition Enums.h:17847
EPCGDifferenceDensityFunction
Definition Enums.h:20706
ELiveLinkCameraProjectionMode
Definition Enums.h:39470
EUserUGCList
Definition Enums.h:15967
@ k_EUserUGCList_Subscribed
@ k_EUserUGCList_WillVoteLater
@ k_EUserUGCList_VotedDown
@ k_EUserUGCList_Published
@ k_EUserUGCList_Favorited
@ k_EUserUGCList_UsedOrPlayed
@ k_EUserUGCList_Followed
@ k_EUserUGCList_VotedOn
@ k_EUserUGCList_VotedUp
VkCompositeAlphaFlagBitsKHR
Definition Enums.h:39314
EMeshSculptFalloffType
Definition Enums.h:24228
WICNamedWhitePoint
Definition Enums.h:29
endCondition_directive
Definition Enums.h:32864
EChaosRemovalSortMethod
Definition Enums.h:37328
ESkyAtmosphereTransformMode
Definition Enums.h:38238
ESequenceTimeUnit
Definition Enums.h:20100
EHttpConnectionState
Definition Enums.h:37866
EAnimPropertyAccessCallSite
Definition Enums.h:38728
EMediaWebcamCaptureDeviceFilter
Definition Enums.h:39166
WICBitmapInterpolationMode
Definition Enums.h:3871
EConsoleVariableFlags
Definition Enums.h:5137
EQuartzCommandDelegateSubType
Definition Enums.h:13915
EVolumeUpdateType
Definition Enums.h:9064
EBasePassDrawListType
Definition Enums.h:12251
FWP_DIRECTION_
Definition Enums.h:3398
EDecalDepthInputState
Definition Enums.h:35055
@ DDS_DepthAlways_StencilEqual1_IgnoreMask
_NVAPI_DITHER_BITS
Definition Enums.h:1253
ESwapAudioOutputDeviceResultState
Definition Enums.h:21956
EShaderFrequency
Definition Enums.h:5355
ETextureUniversalTiling
Definition Enums.h:38857
ELevelInstanceRuntimeBehavior
Definition Enums.h:40017
rcFilterLowAreaFlags
Definition Enums.h:40828
EAnchorStateEnum
Definition Enums.h:25289
@ Dataflow_AnchorState_NotAnchored
EParticleScreenAlignment
Definition Enums.h:38629
UBlockCode
Definition Enums.h:30761
@ UBLOCK_PRIVATE_USE_AREA
@ UBLOCK_LOW_SURROGATES
@ UBLOCK_TAI_XUAN_JING_SYMBOLS
@ UBLOCK_ARABIC_EXTENDED_A
@ UBLOCK_INVALID_CODE
@ UBLOCK_SYRIAC_SUPPLEMENT
@ UBLOCK_PHAISTOS_DISC
@ UBLOCK_CYRILLIC_EXTENDED_A
@ UBLOCK_MYANMAR_EXTENDED_A
@ UBLOCK_CYRILLIC_SUPPLEMENTARY
@ UBLOCK_KANA_EXTENDED_A
@ UBLOCK_COPTIC_EPACT_NUMBERS
@ UBLOCK_ZANABAZAR_SQUARE
@ UBLOCK_MUSICAL_SYMBOLS
@ UBLOCK_COMBINING_DIACRITICAL_MARKS
@ UBLOCK_SUPPLEMENTAL_MATHEMATICAL_OPERATORS
@ UBLOCK_SUNDANESE_SUPPLEMENT
@ UBLOCK_SUPPLEMENTAL_ARROWS_A
@ UBLOCK_OLD_PERSIAN
@ UBLOCK_IMPERIAL_ARAMAIC
@ UBLOCK_PLAYING_CARDS
@ UBLOCK_ANATOLIAN_HIEROGLYPHS
@ UBLOCK_ARABIC_SUPPLEMENT
@ UBLOCK_SHORTHAND_FORMAT_CONTROLS
@ UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D
@ UBLOCK_GENERAL_PUNCTUATION
@ UBLOCK_ANCIENT_SYMBOLS
@ UBLOCK_MYANMAR_EXTENDED_B
@ UBLOCK_ALCHEMICAL_SYMBOLS
@ UBLOCK_GREEK_EXTENDED
@ UBLOCK_ENCLOSED_ALPHANUMERICS
@ UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED
@ UBLOCK_MEDEFAIDRIN
@ UBLOCK_SPACING_MODIFIER_LETTERS
@ UBLOCK_CYRILLIC_EXTENDED_C
@ UBLOCK_ANCIENT_GREEK_MUSICAL_NOTATION
@ UBLOCK_BOPOMOFO_EXTENDED
@ UBLOCK_HALFWIDTH_AND_FULLWIDTH_FORMS
@ UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F
@ UBLOCK_LATIN_EXTENDED_A
@ UBLOCK_CYRILLIC_SUPPLEMENT
@ UBLOCK_KATAKANA_PHONETIC_EXTENSIONS
@ UBLOCK_MISCELLANEOUS_SYMBOLS
@ UBLOCK_CAUCASIAN_ALBANIAN
@ UBLOCK_MAHJONG_TILES
@ UBLOCK_MISCELLANEOUS_SYMBOLS_AND_ARROWS
@ UBLOCK_INSCRIPTIONAL_PAHLAVI
@ UBLOCK_CJK_RADICALS_SUPPLEMENT
@ UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A
@ UBLOCK_LATIN_EXTENDED_ADDITIONAL
@ UBLOCK_SUPPLEMENTAL_ARROWS_B
@ UBLOCK_KHMER_SYMBOLS
@ UBLOCK_WARANG_CITI
@ UBLOCK_NYIAKENG_PUACHUE_HMONG
@ UBLOCK_BASIC_LATIN
@ UBLOCK_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT
@ UBLOCK_SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A
@ UBLOCK_INSCRIPTIONAL_PARTHIAN
@ UBLOCK_LATIN_1_SUPPLEMENT
@ UBLOCK_CUNEIFORM_NUMBERS_AND_PUNCTUATION
@ UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
@ UBLOCK_RUMI_NUMERAL_SYMBOLS
@ UBLOCK_CJK_COMPATIBILITY
@ UBLOCK_GEORGIAN_SUPPLEMENT
@ UBLOCK_MODIFIER_TONE_LETTERS
@ UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT
@ UBLOCK_ARABIC_PRESENTATION_FORMS_B
@ UBLOCK_OLD_SOGDIAN
@ UBLOCK_SUPPLEMENTAL_ARROWS_C
@ UBLOCK_SMALL_FORM_VARIANTS
@ UBLOCK_DEVANAGARI_EXTENDED
@ UBLOCK_PAHAWH_HMONG
@ UBLOCK_PSALTER_PAHLAVI
@ UBLOCK_INDIC_SIYAQ_NUMBERS
@ UBLOCK_EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS
@ UBLOCK_COUNTING_ROD_NUMERALS
@ UBLOCK_YI_RADICALS
@ UBLOCK_VARIATION_SELECTORS
@ UBLOCK_GUNJALA_GONDI
@ UBLOCK_MEROITIC_CURSIVE
@ UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C
@ UBLOCK_CJK_STROKES
@ UBLOCK_MAYAN_NUMERALS
@ UBLOCK_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS
@ UBLOCK_KANA_SUPPLEMENT
@ UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_B
@ UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B
@ UBLOCK_HANIFI_ROHINGYA
@ UBLOCK_IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION
@ UBLOCK_NANDINAGARI
@ UBLOCK_ENCLOSED_CJK_LETTERS_AND_MONTHS
@ UBLOCK_SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS
@ UBLOCK_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT
@ UBLOCK_IDEOGRAPHIC_DESCRIPTION_CHARACTERS
@ UBLOCK_NEW_TAI_LUE
@ UBLOCK_SMALL_KANA_EXTENSION
@ UBLOCK_VERTICAL_FORMS
@ UBLOCK_EGYPTIAN_HIEROGLYPHS
@ UBLOCK_HANGUL_COMPATIBILITY_JAMO
@ UBLOCK_COMMON_INDIC_NUMBER_FORMS
@ UBLOCK_ORNAMENTAL_DINGBATS
@ UBLOCK_DOMINO_TILES
@ UBLOCK_IPA_EXTENSIONS
@ UBLOCK_AEGEAN_NUMBERS
@ UBLOCK_BRAILLE_PATTERNS
@ UBLOCK_ANCIENT_GREEK_NUMBERS
@ UBLOCK_ETHIOPIC_SUPPLEMENT
@ UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS
@ UBLOCK_NUMBER_FORMS
@ UBLOCK_SUPPLEMENTAL_PUNCTUATION
@ UBLOCK_CONTROL_PICTURES
@ UBLOCK_TANGUT_COMPONENTS
@ UBLOCK_ETHIOPIC_EXTENDED
@ UBLOCK_YIJING_HEXAGRAM_SYMBOLS
@ UBLOCK_CHEROKEE_SUPPLEMENT
@ UBLOCK_LATIN_EXTENDED_E
@ UBLOCK_LATIN_EXTENDED_D
@ UBLOCK_HANGUL_SYLLABLES
@ UBLOCK_GLAGOLITIC_SUPPLEMENT
@ UBLOCK_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS
@ UBLOCK_CJK_COMPATIBILITY_FORMS
@ UBLOCK_SORA_SOMPENG
@ UBLOCK_VEDIC_EXTENSIONS
@ UBLOCK_COMBINING_HALF_MARKS
@ UBLOCK_ENCLOSED_ALPHANUMERIC_SUPPLEMENT
@ UBLOCK_CYPRIOT_SYLLABARY
@ UBLOCK_OLD_NORTH_ARABIAN
@ UBLOCK_OPTICAL_CHARACTER_RECOGNITION
@ UBLOCK_MATHEMATICAL_OPERATORS
@ UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS
@ UBLOCK_ALPHABETIC_PRESENTATION_FORMS
@ UBLOCK_MENDE_KIKAKUI
@ UBLOCK_MASARAM_GONDI
@ UBLOCK_CJK_UNIFIED_IDEOGRAPHS
@ UBLOCK_YI_SYLLABLES
@ UBLOCK_VARIATION_SELECTORS_SUPPLEMENT
@ UBLOCK_LATIN_EXTENDED_B
@ UBLOCK_SUTTON_SIGNWRITING
@ UBLOCK_HIGH_PRIVATE_USE_SURROGATES
@ UBLOCK_CJK_SYMBOLS_AND_PUNCTUATION
@ UBLOCK_LETTERLIKE_SYMBOLS
@ UBLOCK_HANGUL_JAMO
@ UBLOCK_OLD_HUNGARIAN
@ UBLOCK_CHESS_SYMBOLS
@ UBLOCK_PHONETIC_EXTENSIONS_SUPPLEMENT
@ UBLOCK_TAMIL_SUPPLEMENT
@ UBLOCK_BAMUM_SUPPLEMENT
@ UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E
@ UBLOCK_EARLY_DYNASTIC_CUNEIFORM
@ UBLOCK_GEOMETRIC_SHAPES
@ UBLOCK_GEORGIAN_EXTENDED
@ UBLOCK_BYZANTINE_MUSICAL_SYMBOLS
@ UBLOCK_HIGH_SURROGATES
@ UBLOCK_PRIVATE_USE
@ UBLOCK_SINHALA_ARCHAIC_NUMBERS
@ UBLOCK_GEOMETRIC_SHAPES_EXTENDED
@ UBLOCK_MONGOLIAN_SUPPLEMENT
@ UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_A
@ UBLOCK_SYLOTI_NAGRI
@ UBLOCK_COMBINING_DIACRITICAL_MARKS_EXTENDED
@ UBLOCK_KANGXI_RADICALS
@ UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
@ UBLOCK_COMBINING_MARKS_FOR_SYMBOLS
@ UBLOCK_CURRENCY_SYMBOLS
@ UBLOCK_MEETEI_MAYEK
@ UBLOCK_SUPERSCRIPTS_AND_SUBSCRIPTS
@ UBLOCK_MISCELLANEOUS_TECHNICAL
@ UBLOCK_OLD_SOUTH_ARABIAN
@ UBLOCK_PAU_CIN_HAU
@ UBLOCK_ARABIC_PRESENTATION_FORMS_A
@ UBLOCK_CYRILLIC_EXTENDED_B
@ UBLOCK_LATIN_EXTENDED_C
@ UBLOCK_OTTOMAN_SIYAQ_NUMBERS
@ UBLOCK_MEROITIC_HIEROGLYPHS
@ UBLOCK_PHONETIC_EXTENSIONS
@ UBLOCK_BLOCK_ELEMENTS
@ UBLOCK_HANGUL_JAMO_EXTENDED_A
@ UBLOCK_ETHIOPIC_EXTENDED_A
@ UBLOCK_MATHEMATICAL_ALPHANUMERIC_SYMBOLS
@ UBLOCK_LINEAR_B_IDEOGRAMS
@ UBLOCK_HANGUL_JAMO_EXTENDED_B
@ UBLOCK_LINEAR_B_SYLLABARY
@ UBLOCK_MEETEI_MAYEK_EXTENSIONS
@ UBLOCK_TRANSPORT_AND_MAP_SYMBOLS
@ UBLOCK_BOX_DRAWING
EHoudiniInputType
Definition Enums.h:21246
EPoseDriverType
Definition Enums.h:36760
ESSRQuality
Definition Enums.h:38474
GROUP_WINDOW_MANAGEMENT_POLICY
Definition Enums.h:3961
ELeaderboardDisplayType
Definition Enums.h:14983
EFieldObjectType
Definition Enums.h:21164
AnimPhysSimSpaceType
Definition Enums.h:36352
ECustomMaterialOutputType
Definition Enums.h:38038
VkCommandPoolCreateFlagBits
Definition Enums.h:39454
EUpdateTextureValueType
Definition Enums.h:12874
VkExternalMemoryHandleTypeFlagBits
Definition Enums.h:2374
@ VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
mi_page_kind_e
Definition Enums.h:33181
EMaterialPositionTransformSource
Definition Enums.h:38183
EAppendNetExportFlags
Definition Enums.h:10021
VkSamplerReductionModeEXT
Definition Enums.h:2198
EARFaceTrackingUpdate
Definition Enums.h:36510
EReplayResult
Definition Enums.h:24098
EEmitterNormalsMode
Definition Enums.h:40088
ESequencerKeyMode
Definition Enums.h:28558
ECsgOper
Definition Enums.h:22153
@ CSG_Deintersect
EGPUSortTest
Definition Enums.h:38580
@ GPU_SORT_TEST_EXHAUSTIVE
ETriggerType
Definition Enums.h:25520
EBinkMediaPlayerBinkSoundTrack
Definition Enums.h:29658
EStreamingSourceTargetBehavior
Definition Enums.h:12450
EConstraintInterpType
Definition Enums.h:23137
EVectorCurveChannel
Definition Enums.h:13057
EAudioComponentPlayState
Definition Enums.h:20362
ESubmixEffectDynamicsPeakMode
Definition Enums.h:21863
ELightMapInteractionType
Definition Enums.h:4988
VkTimeDomainEXT
Definition Enums.h:1063
@ VK_TIME_DOMAIN_END_RANGE_EXT
@ VK_TIME_DOMAIN_RANGE_SIZE_EXT
@ VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT
@ VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT
@ VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT
@ VK_TIME_DOMAIN_BEGIN_RANGE_EXT
EDirectoryVisitorFlags
Definition Enums.h:14037
EGLTFJsonShadingModel
Definition Enums.h:28329
tagPhysicalConnectorType
Definition Enums.h:37475
EHoudiniCurveOutputType
Definition Enums.h:24749
ERayTracingGeometryType
Definition Enums.h:7166
ECFCoreFileRelationType
Definition Enums.h:14412
EOS_EApplicationStatus
Definition Enums.h:19290
ERepLayoutCmdType
Definition Enums.h:10255
@ NetSerializeStructWithObjectReferences
ELevelCollectionType
Definition Enums.h:8062
EAudioParameterType
Definition Enums.h:16633
ENGXBinariesSearchOrder
Definition Enums.h:21405
VkViewportCoordinateSwizzleNV
Definition Enums.h:1315
EModuleType
Definition Enums.h:27327
EVerticalTextAligment
Definition Enums.h:12655
EDrivenDestinationMode
Definition Enums.h:36843
EGeometryScriptRemoveMeshSimplificationType
Definition Enums.h:18660
VkQueryControlFlagBits
Definition Enums.h:39509
EMemOned
Definition Enums.h:20782
ECompactedReflectionTracingIndirectArgs
Definition Enums.h:37908
EBTBranchAction
Definition Enums.h:32687
@ DecoratorActivate_EvenIfExecuting
@ DecoratorActivate_IfNotExecuting
EMeshBufferAccess
Definition Enums.h:20067
ERefractionMode
Definition Enums.h:19853
EClearBinding
Definition Enums.h:14551
EAuthPhaseFailureCode
Definition Enums.h:16863
@ Phase_P2PAddressCheck_InvalidSourceAddress
@ Msg_DeliverClientToken_UnexpectedTrustedServersNotEnabled
@ Msg_RequestClientEphemeralKey_UntrustedDedicatedServer
@ Phase_LegacyCredentialAuth_ConnectionNotEncrypted
@ Msg_RequestClientToken_UnexpectedIncorrectRole
@ Phase_AntiCheatProof_AntiCheatRegistrationFailed
@ Phase_LegacyIdentityCheck_UserAccountNotFound
@ Msg_DeliverIdToken_UnexpectedIncorrectRole
@ Phase_AutomaticEncryption_DedicatedServerMisconfigured
@ Msg_RequestClientToken_ConnectionNotEncrypted
@ Msg_RequestClientEphemeralKey_UnexpectedIncorrectRole
@ Msg_SymmetricKeyExchange_FailedToDecrypt
@ Msg_RequestIdToken_ConnectionNotEncrypted
@ Phase_P2PAddressCheck_UserIdDoesNotMatchSource
@ Msg_SymmetricKeyExchange_UnexpectedIncorrectRole
@ Phase_AntiCheatIntegrity_KickedDueToEACFailure
@ Phase_LegacyIdentityCheck_UserAccountNotFoundAfterLoad
@ Phase_AutomaticEncryption_FailedToSignConnectionKeyPair
@ Msg_DeliverClientToken_AuthenticationFailed
@ Msg_RequestIdToken_UnexpectedIncorrectRole
@ Msg_RequestClientEphemeralKey_InvalidData
@ Phase_AutomaticEncryption_AutomaticEncryptionNotCompiled
@ Msg_RequestClientToken_UnexpectedTrustedServersNotEnabled
@ Msg_DeliverIdToken_ConnectionNotEncrypted
@ Phase_SanctionCheck_FailedToRetrieveSanctions
@ Msg_DeliverClientEphemeralKey_UnexpectedIncorrectRole
@ Msg_DeliverClientEphemeralKey_FailedToVerify
@ Msg_DeliverClientToken_TokenIsForADifferentAccount
@ Msg_DeliverClientToken_ConnectionNotTrusted
@ Msg_RequestClientToken_MissingTransferrableUserCredentials
@ Msg_DeliverIdToken_TokenIsForADifferentAccount
@ Msg_DeliverClientToken_ConnectionNotEncrypted
@ Msg_DeliverClientEphemeralKey_InvalidData
@ Msg_RequestClientEphemeralKey_UnexpectedAutomaticEncryptionNotEnabled
@ Msg_DeliverClientToken_UnexpectedIncorrectRole
@ Msg_DeliverClientEphemeralKey_UnexpectedAutomaticEncryptionNotEnabled
@ Msg_SymmetricKeyExchange_UnexpectedAutomaticEncryptionNotEnabled
@ Msg_EnableEncryption_UnexpectedAutomaticEncryptionNotEnabled
@ Msg_RequestClientToken_ConnectionNotTrusted
@ Phase_SanctionCheck_FailedToCopySanctionResult
@ Phase_LegacyIdentityCheck_CanNotCallUserInfo
@ Msg_RequestClientEphemeralKey_KeyNotLoaded
@ Phase_AntiCheatProof_InvalidSignatureForUnprotectedClient
@ Msg_EnableEncryption_UnexpectedIncorrectRole
@ Msg_DeliverClientEphemeralKey_FailedToEncrypt
@ Msg_RequestIdToken_CanNotRetrieveIdToken
@ Msg_RequestClientEphemeralKey_ResponsePacketGenerationFailed
EAsyncTaskNotificationPromptAction
Definition Enums.h:8508
ECompositeTextureMode
Definition Enums.h:18084
EBlueprintStatus
Definition Enums.h:9037
EPolyFlags
Definition Enums.h:4931
@ PF_ModelComponentMask
ERigControlValueType
Definition Enums.h:19089
EImportanceLevel
Definition Enums.h:6490
OodleLZ_Profile
Definition Enums.h:32965
EPluginEnabledByDefault
Definition Enums.h:7768
EGLTFJsonBufferTarget
Definition Enums.h:28409
FWPS_NET_BUFFER_LIST_EVENT_TYPE0_
Definition Enums.h:3453
EBakeNormalSpace
Definition Enums.h:24174
ERigUnitVisualDebugPointMode
Definition Enums.h:40787
EParticleSystemInsignificanceReaction
Definition Enums.h:37643
EUGCReadAction
Definition Enums.h:14904
@ k_EUGCRead_ContinueReadingUntilFinished
@ k_EUGCRead_ContinueReading
EStreamingStatus
Definition Enums.h:7517
EThreadCreateFlags
Definition Enums.h:11288
VkShaderFloatControlsIndependence
Definition Enums.h:27115
FWPM_CHANGE_TYPE_
Definition Enums.h:3147
ERHIResourceType
Definition Enums.h:4504
@ RRT_RayTracingAccelerationStructure
ECborEndianness
Definition Enums.h:26070
_MINIDUMP_TYPE
Definition Enums.h:34545
@ MiniDumpWithoutOptionalData
@ MiniDumpIgnoreInaccessibleMemory
@ MiniDumpWithPrivateWriteCopyMemory
@ MiniDumpScanInaccessiblePartialPages
@ MiniDumpWithoutAuxiliaryState
@ MiniDumpWithAvxXStateContext
@ MiniDumpWithUnloadedModules
@ MiniDumpWithFullMemoryInfo
@ MiniDumpWithProcessThreadData
@ MiniDumpWithFullAuxiliaryState
@ MiniDumpWithIndirectlyReferencedMemory
@ MiniDumpWithTokenInformation
@ MiniDumpWithPrivateReadWriteMemory
ESubmixSendStage
Definition Enums.h:11413
TextureCookPlatformTilingSettings
Definition Enums.h:18041
EInputCaptureSide
Definition Enums.h:13813
VkValidationCacheHeaderVersionEXT
Definition Enums.h:1244
ETemporalDenoiserMotionVectorType
Definition Enums.h:37086
ERemoteStoragePlatform
Definition Enums.h:15427
ESynthLFOType
Definition Enums.h:28861
EPSOPrecacheStateMask
Definition Enums.h:35189
EDataflowSetMaskConditionType
Definition Enums.h:25010
ModItemStatus
Definition Enums.h:4138
EDrawPolyPathWidthMode
Definition Enums.h:31383
ECrateMovementMode
Definition Enums.h:32147
EEventLoadNodeExecutionResult
Definition Enums.h:32247
EOnlineSharingPermissionState
Definition Enums.h:12634
VkDescriptorUpdateTemplateType
Definition Enums.h:2275
pffft_transform_t
Definition Enums.h:33291
EMontageBlendMode
Definition Enums.h:13426
EControllerActionOrigin
Definition Enums.h:15529
@ k_EControllerActionOrigin_PS5_RightTrigger_Click
@ k_EControllerActionOrigin_SteamDeck_Reserved2
@ k_EControllerActionOrigin_SteamDeck_LeftPad_DPadWest
@ k_EControllerActionOrigin_XBox360_RightBumper
@ k_EControllerActionOrigin_PS5_CenterPad_DPadWest
@ k_EControllerActionOrigin_XBoxOne_LeftTrigger_Click
@ k_EControllerActionOrigin_Switch_RightStick_Click
@ k_EControllerActionOrigin_SteamV2_RightBumper
@ k_EControllerActionOrigin_SteamV2_RightTrigger_Pull
@ k_EControllerActionOrigin_PS5_RightStick_DPadNorth
@ k_EControllerActionOrigin_SteamV2_LeftTrigger_Pull
@ k_EControllerActionOrigin_SteamDeck_RightStick_DPadWest
@ k_EControllerActionOrigin_SteamDeck_RightStick_Touch
@ k_EControllerActionOrigin_SteamDeck_Gyro_Move
@ k_EControllerActionOrigin_PS4_RightPad_Click
@ k_EControllerActionOrigin_PS4_LeftTrigger_Click
@ k_EControllerActionOrigin_XBoxOne_RightBumper
@ k_EControllerActionOrigin_SteamDeck_Reserved6
@ k_EControllerActionOrigin_XBox360_LeftStick_DPadNorth
@ k_EControllerActionOrigin_SteamV2_LeftStick_DPadSouth
@ k_EControllerActionOrigin_SteamV2_LeftTrigger_Click
@ k_EControllerActionOrigin_PS4_LeftStick_Move
@ k_EControllerActionOrigin_PS5_RightPad_DPadEast
@ k_EControllerActionOrigin_XBoxOne_LeftStick_DPadWest
@ k_EControllerActionOrigin_XBox360_RightTrigger_Pull
@ k_EControllerActionOrigin_SteamV2_RightTrigger_Click
@ k_EControllerActionOrigin_LeftStick_DPadWest
@ k_EControllerActionOrigin_PS5_RightPad_Click
@ k_EControllerActionOrigin_SteamV2_LeftGrip_Upper
@ k_EControllerActionOrigin_SteamDeck_Reserved11
@ k_EControllerActionOrigin_Switch_RightStick_Move
@ k_EControllerActionOrigin_XBoxOne_LeftBumper
@ k_EControllerActionOrigin_SteamDeck_DPad_North
@ k_EControllerActionOrigin_Switch_RightBumper
@ k_EControllerActionOrigin_Switch_ProGyro_Pitch
@ k_EControllerActionOrigin_Switch_RightGyro_Roll
@ k_EControllerActionOrigin_SteamDeck_Reserved14
@ k_EControllerActionOrigin_PS4_RightPad_Swipe
@ k_EControllerActionOrigin_SteamDeck_LeftPad_DPadEast
@ k_EControllerActionOrigin_XBoxOne_DPad_South
@ k_EControllerActionOrigin_PS5_CenterPad_Swipe
@ k_EControllerActionOrigin_SteamDeck_DPad_East
@ k_EControllerActionOrigin_SteamDeck_LeftStick_DPadSouth
@ k_EControllerActionOrigin_PS5_CenterPad_Click
@ k_EControllerActionOrigin_XBoxOne_LeftStick_DPadSouth
@ k_EControllerActionOrigin_Switch_LeftTrigger_Pull
@ k_EControllerActionOrigin_SteamV2_RightPad_Touch
@ k_EControllerActionOrigin_SteamV2_LeftStick_Click
@ k_EControllerActionOrigin_PS4_LeftStick_DPadEast
@ k_EControllerActionOrigin_PS5_RightStick_DPadSouth
@ k_EControllerActionOrigin_PS5_LeftStick_DPadSouth
@ k_EControllerActionOrigin_XBox360_RightStick_DPadWest
@ k_EControllerActionOrigin_SteamV2_RightPad_Click
@ k_EControllerActionOrigin_XBox360_RightStick_Click
@ k_EControllerActionOrigin_PS5_LeftPad_DPadNorth
@ k_EControllerActionOrigin_SteamDeck_Reserved16
@ k_EControllerActionOrigin_PS4_LeftStick_DPadWest
@ k_EControllerActionOrigin_XBox360_RightStick_Move
@ k_EControllerActionOrigin_XBoxOne_RightTrigger_Click
@ k_EControllerActionOrigin_SteamV2_LeftPad_DPadNorth
@ k_EControllerActionOrigin_XBox360_LeftStick_DPadEast
@ k_EControllerActionOrigin_Switch_ProGyro_Yaw
@ k_EControllerActionOrigin_PS4_RightStick_DPadWest
@ k_EControllerActionOrigin_SteamV2_LeftPad_Pressure
@ k_EControllerActionOrigin_SteamDeck_RightStick_DPadEast
@ k_EControllerActionOrigin_SteamV2_LeftStick_Move
@ k_EControllerActionOrigin_SteamV2_LeftStick_DPadNorth
@ k_EControllerActionOrigin_PS5_RightPad_DPadSouth
@ k_EControllerActionOrigin_Switch_RightTrigger_Click
@ k_EControllerActionOrigin_SteamV2_LeftGrip_Lower
@ k_EControllerActionOrigin_PS4_LeftPad_DPadSouth
@ k_EControllerActionOrigin_Switch_RightStick_DPadEast
@ k_EControllerActionOrigin_SteamDeck_Reserved13
@ k_EControllerActionOrigin_SteamDeck_Reserved7
@ k_EControllerActionOrigin_PS4_RightPad_Touch
@ k_EControllerActionOrigin_XBox360_RightTrigger_Click
@ k_EControllerActionOrigin_RightPad_DPadNorth
@ k_EControllerActionOrigin_RightPad_DPadSouth
@ k_EControllerActionOrigin_PS4_CenterPad_Click
@ k_EControllerActionOrigin_SteamDeck_Reserved9
@ k_EControllerActionOrigin_PS4_RightTrigger_Pull
@ k_EControllerActionOrigin_PS5_LeftPad_DPadEast
@ k_EControllerActionOrigin_Switch_RightGrip_Lower
@ k_EControllerActionOrigin_SteamDeck_Gyro_Roll
@ k_EControllerActionOrigin_SteamDeck_L2_SoftPull
@ k_EControllerActionOrigin_PS5_RightTrigger_Pull
@ k_EControllerActionOrigin_SteamV2_LeftStick_DPadWest
@ k_EControllerActionOrigin_PS4_RightStick_DPadNorth
@ k_EControllerActionOrigin_PS4_RightPad_DPadSouth
@ k_EControllerActionOrigin_SteamDeck_LeftPad_Touch
@ k_EControllerActionOrigin_XBox360_LeftTrigger_Pull
@ k_EControllerActionOrigin_PS5_RightPad_DPadNorth
@ k_EControllerActionOrigin_XBoxOne_RightStick_DPadSouth
@ k_EControllerActionOrigin_Switch_RightStick_DPadWest
@ k_EControllerActionOrigin_PS4_LeftPad_DPadEast
@ k_EControllerActionOrigin_SteamDeck_LeftStick_DPadEast
@ k_EControllerActionOrigin_LeftStick_DPadEast
@ k_EControllerActionOrigin_PS4_CenterPad_Swipe
@ k_EControllerActionOrigin_PS4_LeftStick_Click
@ k_EControllerActionOrigin_XBoxOne_RightStick_DPadEast
@ k_EControllerActionOrigin_SteamDeck_LeftStick_DPadWest
@ k_EControllerActionOrigin_Switch_ProGyro_Roll
@ k_EControllerActionOrigin_Switch_LeftGyro_Pitch
@ k_EControllerActionOrigin_PS4_RightStick_Move
@ k_EControllerActionOrigin_SteamDeck_Reserved3
@ k_EControllerActionOrigin_PS5_RightPad_Touch
@ k_EControllerActionOrigin_PS5_CenterPad_DPadNorth
@ k_EControllerActionOrigin_SteamDeck_RightPad_DPadWest
@ k_EControllerActionOrigin_SteamDeck_Gyro_Pitch
@ k_EControllerActionOrigin_SteamDeck_RightStick_Move
@ k_EControllerActionOrigin_PS4_RightStick_Click
@ k_EControllerActionOrigin_XBoxOne_DPad_North
@ k_EControllerActionOrigin_SteamV2_LeftPad_DPadEast
@ k_EControllerActionOrigin_SteamDeck_LeftStick_Touch
@ k_EControllerActionOrigin_PS4_LeftPad_DPadNorth
@ k_EControllerActionOrigin_SteamV2_LeftBumper_Pressure
@ k_EControllerActionOrigin_SteamV2_LeftPad_DPadSouth
@ k_EControllerActionOrigin_PS4_RightStick_DPadEast
@ k_EControllerActionOrigin_SteamDeck_RightPad_Click
@ k_EControllerActionOrigin_SteamDeck_Reserved20
@ k_EControllerActionOrigin_Switch_RightGrip_Upper
@ k_EControllerActionOrigin_SteamV2_RightPad_Swipe
@ k_EControllerActionOrigin_XBox360_RightStick_DPadEast
@ k_EControllerActionOrigin_Switch_ProGyro_Move
@ k_EControllerActionOrigin_PS5_LeftStick_Click
@ k_EControllerActionOrigin_Switch_RightGyro_Yaw
@ k_EControllerActionOrigin_SteamV2_RightPad_Pressure
@ k_EControllerActionOrigin_PS5_LeftTrigger_Pull
@ k_EControllerActionOrigin_SteamV2_LeftGrip_Pressure
@ k_EControllerActionOrigin_XBox360_LeftBumper
@ k_EControllerActionOrigin_SteamV2_LeftPad_DPadWest
@ k_EControllerActionOrigin_XBoxOne_RightGrip_Lower
@ k_EControllerActionOrigin_Switch_LeftTrigger_Click
@ k_EControllerActionOrigin_PS4_CenterPad_Touch
@ k_EControllerActionOrigin_RightTrigger_Click
@ k_EControllerActionOrigin_Switch_LeftStick_Move
@ k_EControllerActionOrigin_PS4_CenterPad_DPadEast
@ k_EControllerActionOrigin_SteamDeck_Reserved15
@ k_EControllerActionOrigin_XBox360_RightStick_DPadSouth
@ k_EControllerActionOrigin_XBox360_RightStick_DPadNorth
@ k_EControllerActionOrigin_Switch_RightGyro_Pitch
@ k_EControllerActionOrigin_SteamDeck_LeftStick_DPadNorth
@ k_EControllerActionOrigin_PS4_LeftStick_DPadSouth
@ k_EControllerActionOrigin_SteamV2_RightPad_DPadNorth
@ k_EControllerActionOrigin_SteamDeck_R2_SoftPull
@ k_EControllerActionOrigin_PS4_CenterPad_DPadWest
@ k_EControllerActionOrigin_Switch_RightStick_DPadNorth
@ k_EControllerActionOrigin_SteamDeck_DPad_South
@ k_EControllerActionOrigin_Switch_LeftGrip_Upper
@ k_EControllerActionOrigin_XBox360_DPad_North
@ k_EControllerActionOrigin_SteamDeck_Reserved19
@ k_EControllerActionOrigin_PS5_RightStick_Click
@ k_EControllerActionOrigin_Switch_RightStick_DPadSouth
@ k_EControllerActionOrigin_SteamDeck_DPad_West
@ k_EControllerActionOrigin_SteamDeck_DPad_Move
@ k_EControllerActionOrigin_MaximumPossibleValue
@ k_EControllerActionOrigin_SteamDeck_LeftPad_Click
@ k_EControllerActionOrigin_XBoxOne_RightStick_Move
@ k_EControllerActionOrigin_Switch_LeftStick_DPadEast
@ k_EControllerActionOrigin_XBoxOne_LeftGrip_Upper
@ k_EControllerActionOrigin_LeftStick_DPadNorth
@ k_EControllerActionOrigin_PS5_LeftStick_DPadNorth
@ k_EControllerActionOrigin_Switch_LeftGyro_Move
@ k_EControllerActionOrigin_XBoxOne_RightStick_Click
@ k_EControllerActionOrigin_SteamDeck_RightStick_DPadNorth
@ k_EControllerActionOrigin_SteamV2_RightGrip_Pressure
@ k_EControllerActionOrigin_SteamV2_LeftBumper
@ k_EControllerActionOrigin_Switch_RightGyro_Move
@ k_EControllerActionOrigin_SteamDeck_LeftPad_Swipe
@ k_EControllerActionOrigin_XBoxOne_LeftStick_Move
@ k_EControllerActionOrigin_Switch_RightTrigger_Pull
@ k_EControllerActionOrigin_Switch_LeftStick_DPadNorth
@ k_EControllerActionOrigin_XBox360_LeftStick_Move
@ k_EControllerActionOrigin_PS5_CenterPad_DPadSouth
@ k_EControllerActionOrigin_SteamV2_LeftStick_DPadEast
@ k_EControllerActionOrigin_SteamV2_RightBumper_Pressure
@ k_EControllerActionOrigin_SteamDeck_RightPad_DPadSouth
@ k_EControllerActionOrigin_SteamV2_LeftPad_Touch
@ k_EControllerActionOrigin_SteamDeck_LeftStick_Move
@ k_EControllerActionOrigin_PS4_RightTrigger_Click
@ k_EControllerActionOrigin_PS5_RightPad_Swipe
@ k_EControllerActionOrigin_SteamV2_RightGrip_Lower
@ k_EControllerActionOrigin_SteamDeck_Reserved4
@ k_EControllerActionOrigin_Switch_LeftStick_DPadSouth
@ k_EControllerActionOrigin_XBox360_LeftTrigger_Click
@ k_EControllerActionOrigin_PS5_RightPad_DPadWest
@ k_EControllerActionOrigin_SteamV2_RightPad_DPadSouth
@ k_EControllerActionOrigin_XBoxOne_RightStick_DPadNorth
@ k_EControllerActionOrigin_SteamDeck_Reserved17
@ k_EControllerActionOrigin_SteamV2_RightGrip_Upper
@ k_EControllerActionOrigin_PS4_RightPad_DPadNorth
@ k_EControllerActionOrigin_XBox360_LeftStick_DPadSouth
@ k_EControllerActionOrigin_XBoxOne_LeftStick_DPadEast
@ k_EControllerActionOrigin_PS5_LeftTrigger_Click
@ k_EControllerActionOrigin_PS5_RightStick_DPadWest
@ k_EControllerActionOrigin_SteamDeck_Reserved10
@ k_EControllerActionOrigin_PS4_CenterPad_DPadNorth
@ k_EControllerActionOrigin_PS4_CenterPad_DPadSouth
@ k_EControllerActionOrigin_SteamDeck_Reserved18
@ k_EControllerActionOrigin_Switch_LeftStick_Click
@ k_EControllerActionOrigin_SteamDeck_RightPad_Swipe
@ k_EControllerActionOrigin_SteamDeck_LeftPad_DPadNorth
@ k_EControllerActionOrigin_XBoxOne_RightStick_DPadWest
@ k_EControllerActionOrigin_Switch_LeftGyro_Roll
@ k_EControllerActionOrigin_XBoxOne_RightTrigger_Pull
@ k_EControllerActionOrigin_SteamDeck_LeftPad_DPadSouth
@ k_EControllerActionOrigin_PS5_LeftPad_DPadSouth
@ k_EControllerActionOrigin_SteamV2_LeftPad_Swipe
@ k_EControllerActionOrigin_SteamDeck_RightPad_DPadNorth
@ k_EControllerActionOrigin_PS5_CenterPad_Touch
@ k_EControllerActionOrigin_XBox360_LeftStick_Click
@ k_EControllerActionOrigin_SteamV2_RightPad_DPadWest
@ k_EControllerActionOrigin_PS5_RightStick_Move
@ k_EControllerActionOrigin_PS4_RightStick_DPadSouth
@ k_EControllerActionOrigin_SteamDeck_Gyro_Yaw
@ k_EControllerActionOrigin_SteamV2_LeftPad_Click
@ k_EControllerActionOrigin_SteamV2_LeftGrip_Upper_Pressure
@ k_EControllerActionOrigin_PS5_LeftPad_DPadWest
@ k_EControllerActionOrigin_PS5_LeftStick_DPadWest
@ k_EControllerActionOrigin_SteamDeck_RightStick_DPadSouth
@ k_EControllerActionOrigin_PS5_CenterPad_DPadEast
@ k_EControllerActionOrigin_PS4_LeftTrigger_Pull
@ k_EControllerActionOrigin_PS4_LeftStick_DPadNorth
@ k_EControllerActionOrigin_XBoxOne_LeftStick_DPadNorth
@ k_EControllerActionOrigin_XBoxOne_LeftGrip_Lower
@ k_EControllerActionOrigin_SteamDeck_Reserved12
@ k_EControllerActionOrigin_PS4_LeftPad_DPadWest
@ k_EControllerActionOrigin_SteamDeck_RightPad_Touch
@ k_EControllerActionOrigin_SteamDeck_Reserved8
@ k_EControllerActionOrigin_PS5_LeftStick_DPadEast
@ k_EControllerActionOrigin_XBoxOne_RightGrip_Upper
@ k_EControllerActionOrigin_XBoxOne_LeftTrigger_Pull
@ k_EControllerActionOrigin_XBox360_DPad_South
@ k_EControllerActionOrigin_Switch_LeftGrip_Lower
@ k_EControllerActionOrigin_SteamV2_RightPad_DPadEast
@ k_EControllerActionOrigin_LeftStick_DPadSouth
@ k_EControllerActionOrigin_Switch_LeftGyro_Yaw
@ k_EControllerActionOrigin_SteamDeck_Reserved5
@ k_EControllerActionOrigin_XBoxOne_LeftStick_Click
@ k_EControllerActionOrigin_SteamDeck_RightPad_DPadEast
@ k_EControllerActionOrigin_SteamV2_Gyro_Pitch
@ k_EControllerActionOrigin_SteamDeck_Reserved1
@ k_EControllerActionOrigin_Switch_LeftStick_DPadWest
@ k_EControllerActionOrigin_XBox360_LeftStick_DPadWest
@ k_EControllerActionOrigin_SteamV2_RightGrip_Upper_Pressure
@ k_EControllerActionOrigin_PS5_RightStick_DPadEast
@ k_EControllerActionOrigin_PS4_RightPad_DPadEast
@ k_EControllerActionOrigin_PS5_LeftStick_Move
@ k_EControllerActionOrigin_PS4_RightPad_DPadWest
_MEMORY_CACHING_TYPE
Definition Enums.h:2691
EHttpFlushReason
Definition Enums.h:17866
VkDynamicState
Definition Enums.h:2615
@ VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
@ VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK
@ VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV
@ VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV
@ VK_DYNAMIC_STATE_BEGIN_RANGE
@ VK_DYNAMIC_STATE_DEPTH_BOUNDS
@ VK_DYNAMIC_STATE_STENCIL_REFERENCE
@ VK_DYNAMIC_STATE_LINE_WIDTH
@ VK_DYNAMIC_STATE_DEPTH_BIAS
@ VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
@ VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
@ VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
@ VK_DYNAMIC_STATE_LINE_STIPPLE_EXT
@ VK_DYNAMIC_STATE_RANGE_SIZE
@ VK_DYNAMIC_STATE_STENCIL_WRITE_MASK
@ VK_DYNAMIC_STATE_BLEND_CONSTANTS
@ VK_DYNAMIC_STATE_END_RANGE
AnimationCompressionFormat
Definition Enums.h:6406
EPoseDriverOutput
Definition Enums.h:36740
ETimelineSigType
Definition Enums.h:18831
EShaderPlatform
Definition Enums.h:4996
@ SP_VULKAN_ES3_1_LUMIN_REMOVED
EOldShaderPlatform
Definition Enums.h:32989
EGLTFJsonInterpolation
Definition Enums.h:28347
ENoiseFunction
Definition Enums.h:37733
@ NOISEFUNCTION_GradientTex3D
EShadowMeshSelection
Definition Enums.h:35128
VkMemoryHeapFlagBits
Definition Enums.h:1221
EIKRigGoalSpace
Definition Enums.h:24548
EUniformBufferValidation
Definition Enums.h:7784
ECFCoreHashAlgo
Definition Enums.h:14405
ELevelInstancePivotType
Definition Enums.h:40009
EMaterialFloatPrecisionMode
Definition Enums.h:4691
ESafeZoneType
Definition Enums.h:22337
UResType
Definition Enums.h:33774
@ RES_INT_VECTOR
@ URES_INT_VECTOR
WICComponentType
Definition Enums.h:3967
EWarpingEvaluationMode
Definition Enums.h:7827
FWPS_ALE_PORT_STATUS0_
Definition Enums.h:3154
EEdGraphNodeDeprecationMessageType
Definition Enums.h:13851
EVRSGenerationFlags
Definition Enums.h:36810
EOverlaysFileType
Definition Enums.h:39061
GFSDK_Aftermath_GpuCrashDumpWatchedApiFlags
Definition Enums.h:39404
GROUP_WINDOW_ROLE
Definition Enums.h:3846
VkVertexInputRate
Definition Enums.h:2265
@ VK_VERTEX_INPUT_RATE_BEGIN_RANGE
EOS_EConnectionClosedReason
Definition Enums.h:21557
dtPolyTypes
Definition Enums.h:39285
@ DT_POLYTYPE_OFFMESH_POINT
@ DT_POLYTYPE_OFFMESH_SEGMENT
_SAR_STREAM_INVALIDATION_EVENT_TYPE
Definition Enums.h:3773
EMeshAttributePaintToolActions
Definition Enums.h:26140
EOrbitChainMode
Definition Enums.h:40096
EDebugState
Definition Enums.h:25139
@ DEBUGSTATE_TestLFEBleed
@ DEBUGSTATE_DisableHPF
@ DEBUGSTATE_IsolateDryAudio
@ DEBUGSTATE_DisableLPF
@ DEBUGSTATE_IsolateReverb
@ DEBUGSTATE_DisableRadio
EAnimDataModelNotifyType
Definition Enums.h:12464
ETextWrappingPolicy
Definition Enums.h:11642
EProcessTileTasksSyncTimeSlicedState
Definition Enums.h:32115
EProceduralSphereType
Definition Enums.h:23397
Beam2SourceTargetTangentMethod
Definition Enums.h:38121
EAnimNodeInitializationStatus
Definition Enums.h:37894
EDebugCameraStyle
Definition Enums.h:24487
mi_segment_kind_e
Definition Enums.h:33130
EConfigManifestVersion
Definition Enums.h:32192
EDynamicResolutionStatus
Definition Enums.h:17073
EMeshCameraFacingUpAxis
Definition Enums.h:37754
ESplineModulationColorMask
Definition Enums.h:37384
EDLSSSupport
Definition Enums.h:21463
@ NotSupportedDriverOutOfDate
@ NotSupportedIncompatibleAPICaptureToolActive
@ NotSupportedOperatingSystemOutOfDate
@ NotSupportedIncompatibleHardware
FWPI_VPN_TRIGGER_EVENT_TYPE_
Definition Enums.h:2729
ECFCoreThumbsUpDirection
Definition Enums.h:17854
ECRSimPointForceType
Definition Enums.h:19997
EStereoDelayFiltertype
Definition Enums.h:29292
_INTERFACE_TYPE
Definition Enums.h:3123
EUsdSaveDialogBehavior
Definition Enums.h:24369
EGLTFJsonTextureWrap
Definition Enums.h:28458
EStreamingOperationResult
Definition Enums.h:10228
EHoudiniAssetState
Definition Enums.h:20972
ESmoothMeshToolSmoothType
Definition Enums.h:26697
EDoWorkTimeSlicedState
Definition Enums.h:32079
DistributionParamMode
Definition Enums.h:28674
EEntryCategory
Definition Enums.h:33327
VkCoverageReductionModeNV
Definition Enums.h:1125
EDetachmentRule
Definition Enums.h:11684
IPSEC_SA_CONTEXT_EVENT_TYPE0_
Definition Enums.h:3446
ELumenRayLightingMode
Definition Enums.h:22164
EHoleFillOpFillType
Definition Enums.h:18565
EResolveClass
Definition Enums.h:21897
EPCGMetadataMakeVector4
Definition Enums.h:22674
OodleLZ_Compressor
Definition Enums.h:32809
EBlendSpaceAxis
Definition Enums.h:17118
EGBufferCompression
Definition Enums.h:5505
EDDSCaps
Definition Enums.h:38387
@ DDSC_CubeMap_AllFaces
EOodleNetResult
Definition Enums.h:21829
EShaderParamBindingType
Definition Enums.h:13302
ELifetimeRepNotifyCondition
Definition Enums.h:7059
VkRayTracingShaderGroupTypeKHR
Definition Enums.h:26881
EOS_EPacketReliability
Definition Enums.h:21550
ECFCoreExternalAuthProvider
Definition Enums.h:13457
ESlateLineJoinType
Definition Enums.h:20178
EPolyEditExtrudeDistanceMode
Definition Enums.h:23674
EArchiveReferenceMarkerFlags
Definition Enums.h:28132
EMIDCreationFlags
Definition Enums.h:32412
EEvaluationMethod
Definition Enums.h:8599
EPolyEditExtrudeModeOptions
Definition Enums.h:23691
EQuartzTimeSignatureQuantization
Definition Enums.h:22110
EIoContainerFlags
Definition Enums.h:7667
EStaticMeshVertexUVType
Definition Enums.h:10459
EHairStrandsCompositionType
Definition Enums.h:34136
VkDescriptorPoolCreateFlagBits
Definition Enums.h:26911
EFieldCullingOperationType
Definition Enums.h:27539
FWPS_NET_BUFFER_LIST_TYPE_
Definition Enums.h:3733
_KINTERRUPT_POLARITY
Definition Enums.h:2717
VkPipelineStageFlagBits
Definition Enums.h:27146
@ VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
@ VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
@ VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
@ VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
@ VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV
@ VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
@ VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
@ VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR
@ VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
@ VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
ECustomDataRowCountMethod
Definition Enums.h:37724
EOptimusSkinnedMeshExecDomain
Definition Enums.h:26012
EPingAverageType
Definition Enums.h:17055
VkAttachmentStoreOp
Definition Enums.h:794
EActorMovementCompensationMode
Definition Enums.h:7820
EOnlineNotificationResult
Definition Enums.h:12282
ETextureLossyCompressionAmount
Definition Enums.h:11771
UCharNameChoice
Definition Enums.h:30396
EMaterialShadingRate
Definition Enums.h:6195
EKnownIniFile
Definition Enums.h:20462
ELightUnits
Definition Enums.h:8551
dictIssue_directive
Definition Enums.h:32898
ECopyTextureResourceType
Definition Enums.h:36086
EHandKeypoint
Definition Enums.h:12893
ETextureMipCount
Definition Enums.h:11364
EFractureEngineClusterSizeMethod
Definition Enums.h:21903
ERTRootSignatureType
Definition Enums.h:21495
ECppProperty
Definition Enums.h:17861
CHANNELOPTIONS
Definition Enums.h:3741
ELODStreamingCallbackResult
Definition Enums.h:21303
ASSOCIATIONLEVEL
Definition Enums.h:110
EModuleLoadResult
Definition Enums.h:19764
ESceneRenderCleanUpMode
Definition Enums.h:34690
ERasterizeGeomRecastTimeSlicedState
Definition Enums.h:32060
EJson
Definition Enums.h:9877
ELeaderboardSortMethod
Definition Enums.h:14976
ETriggerEvent
Definition Enums.h:25489
ESynthModEnvPatch
Definition Enums.h:28895
EPCGMetadataTypes
Definition Enums.h:20504
ELandscapeDirtyingMode
Definition Enums.h:37392
EHairCardsGenerationType
Definition Enums.h:18412
EItemPreviewType
Definition Enums.h:16039
@ k_EItemPreviewType_EnvironmentMap_HorizontalCross
@ k_EItemPreviewType_EnvironmentMap_LatLong
@ k_EItemPreviewType_ReservedMax
@ k_EItemPreviewType_YouTubeVideo
VkImageViewType
Definition Enums.h:2171
@ VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
@ VK_IMAGE_VIEW_TYPE_RANGE_SIZE
@ VK_IMAGE_VIEW_TYPE_BEGIN_RANGE
@ VK_IMAGE_VIEW_TYPE_END_RANGE
ELoudnessNRTCurveTypeEnum
Definition Enums.h:32750
rcTimerLabel
Definition Enums.h:32021
@ RC_TIMER_BUILD_CONTOURS_SIMPLIFY
@ RC_TIMER_BUILD_DISTANCEFIELD
@ RC_TIMER_BUILD_POLYMESH
@ RC_TIMER_MERGE_POLYMESH
@ RC_TIMER_FILTER_WALKABLE
@ RC_TIMER_BUILD_CLUSTERS
@ RC_TIMER_BUILD_POLYMESHDETAIL
@ RC_TIMER_BUILD_COMPACTHEIGHTFIELD
@ RC_TIMER_BUILD_REGIONS_EXPAND
@ RC_TIMER_MARK_CONVEXPOLY_AREA
@ RC_TIMER_FILTER_BORDER
@ RC_TIMER_MERGE_POLYMESHDETAIL
@ RC_TIMER_BUILD_DISTANCEFIELD_DIST
@ RC_TIMER_MARK_BOX_AREA
@ RC_TIMER_BUILD_REGIONS_WATERSHED
@ RC_TIMER_BUILD_REGIONS_FLOOD
@ RC_TIMER_MARK_CYLINDER_AREA
@ RC_TIMER_BUILD_REGIONS_FILTER
@ RC_TIMER_FILTER_LOW_OBSTACLES
@ RC_TIMER_BUILD_REGIONS
@ RC_TIMER_BUILD_CONTOURS
@ RC_TIMER_BUILD_CONTOURS_TRACE
@ RC_TIMER_BUILD_DISTANCEFIELD_BLUR
@ RC_TIMER_RASTERIZE_TRIANGLES
WICColorContextType
Definition Enums.h:3979
EClearType
Definition Enums.h:40456
EDescendantScrollDestination
Definition Enums.h:29001
EUsdDefaultKind
Definition Enums.h:19837
EPCGMedadataTransformOperation
Definition Enums.h:22755
EHairTransmittancePassType
Definition Enums.h:37141
EUniverse
Definition Enums.h:14911
@ k_EUniversePublic
@ k_EUniverseInvalid
@ k_EUniverseInternal
ESteamAuthStatus
Definition Enums.h:16816
ERepLayoutFlags
Definition Enums.h:10408
@ HasObjectOrNetSerializeProperties
EArchiveReplaceObjectFlags
Definition Enums.h:29647
EOpusFrameSizes
Definition Enums.h:37607
EQueueMode
Definition Enums.h:19635
_DATA_PACER_EVENT
Definition Enums.h:3780
FWP_DATA_TYPE_
Definition Enums.h:2931
@ FWP_SECURITY_DESCRIPTOR_TYPE
@ FWP_TOKEN_INFORMATION_TYPE
@ FWP_TOKEN_ACCESS_INFORMATION_TYPE
VkPhysicalDeviceType
Definition Enums.h:2047
@ VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
EGizmoElementInteractionState
Definition Enums.h:39025
EFontFallback
Definition Enums.h:7236
APPDOCLISTTYPE
Definition Enums.h:189
EChatEntryType
Definition Enums.h:15304
@ k_EChatEntryTypeLinkBlocked
@ k_EChatEntryTypeHistoricalChat
@ k_EChatEntryTypeDisconnected
@ k_EChatEntryTypeLeftConversation
@ k_EChatEntryTypeInviteGame
EHttpServerResponseCodes
Definition Enums.h:31679
EWorkshopFileAction
Definition Enums.h:15476
CURLoption
Definition Enums.h:35510
@ CURLOPT_ACCEPTTIMEOUT_MS
@ CURLOPT_FTP_USE_EPSV
@ CURLOPT_TRAILERFUNCTION
@ CURLOPT_HTTP_TRANSFER_DECODING
@ CURLOPT_HTTP_CONTENT_DECODING
@ CURLOPT_TLSAUTH_TYPE
@ CURLOPT_PROXY_SSL_VERIFYHOST
@ CURLOPT_HTTP_VERSION
@ CURLOPT_CONNECTTIMEOUT_MS
@ CURLOPT_PROXYUSERNAME
@ CURLOPT_TIMECONDITION
@ CURLOPT_TLSAUTH_USERNAME
@ CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
@ CURLOPT_SSL_ENABLE_NPN
@ CURLOPT_OPENSOCKETFUNCTION
@ CURLOPT_BUFFERSIZE
@ CURLOPT_PROXY_CRLFILE
@ CURLOPT_SSL_CTX_DATA
@ CURLOPT_SUPPRESS_CONNECT_HEADERS
@ CURLOPT_PATH_AS_IS
@ CURLOPT_CONV_TO_NETWORK_FUNCTION
@ CURLOPT_COPYPOSTFIELDS
@ CURLOPT_CONV_FROM_UTF8_FUNCTION
@ CURLOPT_OPENSOCKETDATA
@ CURLOPT_FOLLOWLOCATION
@ CURLOPT_PROGRESSFUNCTION
@ CURLOPT_HTTPPROXYTUNNEL
@ CURLOPT_READFUNCTION
@ CURLOPT_TIMEOUT_MS
@ CURLOPT_MAXLIFETIME_CONN
@ CURLOPT_CLOSESOCKETFUNCTION
@ CURLOPT_SSL_VERIFYPEER
@ CURLOPT_TELNETOPTIONS
@ CURLOPT_CHUNK_DATA
@ CURLOPT_PROXY_TRANSFER_MODE
@ CURLOPT_TCP_NODELAY
@ CURLOPT_SOCKS5_GSSAPI_NEC
@ CURLOPT_NETRC_FILE
@ CURLOPT_FTP_ACCOUNT
@ CURLOPT_FTP_FILEMETHOD
@ CURLOPT_MAXFILESIZE
@ CURLOPT_ERRORBUFFER
@ CURLOPT_FTP_USE_EPRT
@ CURLOPT_UNIX_SOCKET_PATH
@ CURLOPT_CAINFO_BLOB
@ CURLOPT_FTP_CREATE_MISSING_DIRS
@ CURLOPT_TIMEVALUE_LARGE
@ CURLOPT_SEEKFUNCTION
@ CURLOPT_DNS_INTERFACE
@ CURLOPT_CONNECT_TO
@ CURLOPT_GSSAPI_DELEGATION
@ CURLOPT_FTP_USE_PRET
@ CURLOPT_STREAM_DEPENDS
@ CURLOPT_KEEP_SENDING_ON_ERROR
@ CURLOPT_TCP_FASTOPEN
@ CURLOPT_CHUNK_BGN_FUNCTION
@ CURLOPT_SSH_KEYDATA
@ CURLOPT_DOH_SSL_VERIFYPEER
@ CURLOPT_HSTSREADDATA
@ CURLOPT_SSLENGINE_DEFAULT
@ CURLOPT_CHUNK_END_FUNCTION
@ CURLOPT_XOAUTH2_BEARER
@ CURLOPT_EXPECT_100_TIMEOUT_MS
@ CURLOPT_CUSTOMREQUEST
@ CURLOPT_SSH_PRIVATE_KEYFILE
@ CURLOPT_RANDOM_FILE
@ CURLOPT_PROXY_SSLKEY_BLOB
@ CURLOPT_SOCKOPTDATA
@ CURLOPT_TRANSFER_ENCODING
@ CURLOPT_RTSP_TRANSPORT
@ CURLOPT_XFERINFODATA
@ CURLOPT_PROXY_SSL_CIPHER_LIST
@ CURLOPT_PROXY_SERVICE_NAME
@ CURLOPT_DNS_LOCAL_IP4
@ CURLOPT_DNS_USE_GLOBAL_CACHE
@ CURLOPT_HEADERFUNCTION
@ CURLOPT_SSH_KEYFUNCTION
@ CURLOPT_HTTP200ALIASES
@ CURLOPT_SSL_OPTIONS
@ CURLOPT_CONNECT_ONLY
@ CURLOPT_MAXFILESIZE_LARGE
@ CURLOPT_PROXY_TLSAUTH_USERNAME
@ CURLOPT_PROXY_ISSUERCERT
@ CURLOPT_ADDRESS_SCOPE
@ CURLOPT_TLS13_CIPHERS
@ CURLOPT_PREREQDATA
@ CURLOPT_UPKEEP_INTERVAL_MS
@ CURLOPT_ISSUERCERT
@ CURLOPT_PROXY_TLS13_CIPHERS
@ CURLOPT_PROXY_SSLKEYTYPE
@ CURLOPT_DEBUGFUNCTION
@ CURLOPT_UPLOAD_BUFFERSIZE
@ CURLOPT_MAX_RECV_SPEED_LARGE
@ CURLOPT_WRITEFUNCTION
@ CURLOPT_TCP_KEEPIDLE
@ CURLOPT_PROXY_SSLVERSION
@ CURLOPT_FNMATCH_FUNCTION
@ CURLOPT_FRESH_CONNECT
@ CURLOPT_MAXAGE_CONN
@ CURLOPT_COOKIESESSION
@ CURLOPT_MAX_SEND_SPEED_LARGE
@ CURLOPT_SSL_VERIFYHOST
@ CURLOPT_TRAILERDATA
@ CURLOPT_SSH_COMPRESSION
@ CURLOPT_PROXY_KEYPASSWD
@ CURLOPT_PROXY_CAINFO_BLOB
@ CURLOPT_CONNECTTIMEOUT
@ CURLOPT_TCP_KEEPINTVL
@ CURLOPT_IOCTLFUNCTION
@ CURLOPT_HSTSREADFUNCTION
@ CURLOPT_PROXY_SSL_VERIFYPEER
@ CURLOPT_TFTP_NO_OPTIONS
@ CURLOPT_NEW_DIRECTORY_PERMS
@ CURLOPT_PREREQFUNCTION
@ CURLOPT_HAPROXYPROTOCOL
@ CURLOPT_RESOLVER_START_DATA
@ CURLOPT_SSLKEYTYPE
@ CURLOPT_DOH_SSL_VERIFYSTATUS
@ CURLOPT_PROXY_ISSUERCERT_BLOB
@ CURLOPT_PROXYUSERPWD
@ CURLOPT_HSTSWRITEFUNCTION
@ CURLOPT_POSTFIELDS
@ CURLOPT_REDIR_PROTOCOLS
@ CURLOPT_MIME_OPTIONS
@ CURLOPT_SSH_KNOWNHOSTS
@ CURLOPT_SSL_CTX_FUNCTION
@ CURLOPT_FTP_RESPONSE_TIMEOUT
@ CURLOPT_MAIL_RCPT_ALLLOWFAILS
@ CURLOPT_XFERINFOFUNCTION
@ CURLOPT_WILDCARDMATCH
@ CURLOPT_RTSP_SERVER_CSEQ
@ CURLOPT_PROXY_SSL_OPTIONS
@ CURLOPT_ALTSVC_CTRL
@ CURLOPT_PROXY_TLSAUTH_PASSWORD
@ CURLOPT_LOGIN_OPTIONS
@ CURLOPT_SERVICE_NAME
@ CURLOPT_PROXY_SSLKEY
@ CURLOPT_TLSAUTH_PASSWORD
@ CURLOPT_ISSUERCERT_BLOB
@ CURLOPT_NOPROGRESS
@ CURLOPT_PINNEDPUBLICKEY
@ CURLOPT_OBSOLETE72
@ CURLOPT_PROXY_SSLCERT
@ CURLOPT_PROXY_PINNEDPUBLICKEY
@ CURLOPT_FTP_ALTERNATIVE_TO_USER
@ CURLOPT_INFILESIZE_LARGE
@ CURLOPT_SSH_PUBLIC_KEYFILE
@ CURLOPT_STREAM_DEPENDS_E
@ CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS
@ CURLOPT_RESUME_FROM
@ CURLOPT_PROXY_CAINFO
@ CURLOPT_DNS_SHUFFLE_ADDRESSES
@ CURLOPT_LOCALPORTRANGE
@ CURLOPT_DOH_SSL_VERIFYHOST
@ CURLOPT_RTSP_STREAM_URI
@ CURLOPT_PROXYPASSWORD
@ CURLOPT_INTERLEAVEDATA
@ CURLOPT_DNS_CACHE_TIMEOUT
@ CURLOPT_DEFAULT_PROTOCOL
@ CURLOPT_SSH_AUTH_TYPES
@ CURLOPT_CONV_FROM_NETWORK_FUNCTION
@ CURLOPT_SSLCERTTYPE
@ CURLOPT_MAXCONNECTS
@ CURLOPT_FTPSSLAUTH
@ CURLOPT_TRANSFERTEXT
@ CURLOPT_ABSTRACT_UNIX_SOCKET
@ CURLOPT_AUTOREFERER
@ CURLOPT_PROXY_TLSAUTH_TYPE
@ CURLOPT_SSL_VERIFYSTATUS
@ CURLOPT_RTSP_REQUEST
@ CURLOPT_FORBID_REUSE
@ CURLOPT_SSL_FALSESTART
@ CURLOPT_OBSOLETE40
@ CURLOPT_POSTFIELDSIZE
@ CURLOPT_POSTFIELDSIZE_LARGE
@ CURLOPT_HTTP09_ALLOWED
@ CURLOPT_RTSP_CLIENT_CSEQ
@ CURLOPT_SSLKEY_BLOB
@ CURLOPT_FAILONERROR
@ CURLOPT_SSL_ENABLE_ALPN
@ CURLOPT_COOKIEFILE
@ CURLOPT_STREAM_WEIGHT
@ CURLOPT_REQUEST_TARGET
@ CURLOPT_DIRLISTONLY
@ CURLOPT_SASL_AUTHZID
@ CURLOPT_SSL_SESSIONID_CACHE
@ CURLOPT_COOKIELIST
@ CURLOPT_SOCKS5_AUTH
@ CURLOPT_FTP_SKIP_PASV_IP
@ CURLOPT_SOCKOPTFUNCTION
@ CURLOPT_UNRESTRICTED_AUTH
@ CURLOPT_LOW_SPEED_TIME
@ CURLOPT_PROXY_CAPATH
@ CURLOPT_SSLCERT_BLOB
@ CURLOPT_CLOSESOCKETDATA
@ CURLOPT_SSL_CIPHER_LIST
@ CURLOPT_IGNORE_CONTENT_LENGTH
@ CURLOPT_RESOLVER_START_FUNCTION
@ CURLOPT_DNS_SERVERS
@ CURLOPT_SSLVERSION
@ CURLOPT_HSTSWRITEDATA
@ CURLOPT_TFTP_BLKSIZE
@ CURLOPT_INTERLEAVEFUNCTION
@ CURLOPT_RESUME_FROM_LARGE
@ CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256
@ CURLOPT_HTTPHEADER
@ CURLOPT_LOW_SPEED_LIMIT
@ CURLOPT_SOCKS5_GSSAPI_SERVICE
@ CURLOPT_SSL_EC_CURVES
@ CURLOPT_DISALLOW_USERNAME_IN_URL
@ CURLOPT_PROXY_SSLCERTTYPE
@ CURLOPT_FNMATCH_DATA
@ CURLOPT_PROXYHEADER
@ CURLOPT_INFILESIZE
@ CURLOPT_DNS_LOCAL_IP6
@ CURLOPT_TCP_KEEPALIVE
@ CURLOPT_NEW_FILE_PERMS
@ CURLOPT_PROXY_SSLCERT_BLOB
@ CURLOPT_ACCEPT_ENCODING
@ CURLOPT_RTSP_SESSION_ID
@ CURLOPT_FTP_SSL_CCC
@ CURLOPT_HEADERDATA
EPhysBodyOp
Definition Enums.h:7563
ELoadModuleFlags
Definition Enums.h:19758
EForkProcessRole
Definition Enums.h:9492
ESteelShieldDataFlags
Definition Enums.h:26196
AnimPhysAngularConstraintType
Definition Enums.h:36333
EBakeMapType
Definition Enums.h:24338
EAREye
Definition Enums.h:36434
tableType_t
Definition Enums.h:32904
EBinkMoviePlayerBinkBufferModes
Definition Enums.h:39371
OodleLZ_CheckCRC
Definition Enums.h:32802
DWMWINDOWATTRIBUTE
Definition Enums.h:32538
EReflectedAndRefractedRayTracedShadows
Definition Enums.h:8625
EInstallStatus
Definition Enums.h:27973
@ EInstallStatus_Uninstalling
@ EInstallStatus_InstalledButNeedsUpdateMyMods
@ EInstallStatus_InstalledButNeedsUpdate
EInstallBundleStatus
Definition Enums.h:40391
EInGamePerfTrackers
Definition Enums.h:11256
ERaSpatializationMethod
Definition Enums.h:33305
dtCompressedTileFlags
Definition Enums.h:39260
EShaderParameterFlags
Definition Enums.h:6930
EPCGMetadataMakeVector3
Definition Enums.h:22668
sentry_level_e
Definition Enums.h:21510
EClientRequestType
Definition Enums.h:14104
EGroomInterpolationQuality
Definition Enums.h:18269
EMonthOfYear
Definition Enums.h:13096
ETextureSourceFormat
Definition Enums.h:5035
EDataflowWaveFunctionType
Definition Enums.h:25031
VkDescriptorSetLayoutCreateFlagBits
Definition Enums.h:26937
TextureFilter
Definition Enums.h:8870
EGeometryScriptOffsetFacesType
Definition Enums.h:18208
EGroupTopologyDeformationStrategy
Definition Enums.h:31304
EPropertyExportCPPFlags
Definition Enums.h:18418
EBlendListTransitionType
Definition Enums.h:33426
EGrassScaling
Definition Enums.h:37005
EInstallBundleRequestFlags
Definition Enums.h:11034
ELightSourceShape
Definition Enums.h:35341
DLAttr
Definition Enums.h:2673
ESwapRootBone
Definition Enums.h:36306
EDerivedDataCacheStatus
Definition Enums.h:38212
EVoiceSampleRate
Definition Enums.h:20009
VkColorSpaceKHR
Definition Enums.h:1037
@ VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT
@ VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
@ VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT
@ VK_COLOR_SPACE_BT709_LINEAR_EXT
@ VK_COLOR_SPACE_HDR10_ST2084_EXT
@ VK_COLOR_SPACE_BT709_NONLINEAR_EXT
@ VK_COLOR_SPACE_END_RANGE_KHR
@ VK_COLORSPACE_SRGB_NONLINEAR_KHR
@ VK_COLOR_SPACE_DCI_P3_LINEAR_EXT
@ VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
@ VK_COLOR_SPACE_BT2020_LINEAR_EXT
@ VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT
@ VK_COLOR_SPACE_PASS_THROUGH_EXT
@ VK_COLOR_SPACE_BEGIN_RANGE_KHR
@ VK_COLOR_SPACE_HDR10_HLG_EXT
@ VK_COLOR_SPACE_DISPLAY_NATIVE_AMD
@ VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT
@ VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT
@ VK_COLOR_SPACE_RANGE_SIZE_KHR
@ VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT
@ VK_COLOR_SPACE_DOLBYVISION_EXT
ERigVMOpCode
Definition Enums.h:18863
EBakeCurvatureTypeMode
Definition Enums.h:24180
ENotificationPosition
Definition Enums.h:15320
EWorldPartitionInitState
Definition Enums.h:32305
NSVGspreadType
Definition Enums.h:34393
VkPresentModeKHR
Definition Enums.h:1075
@ VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
@ VK_PRESENT_MODE_RANGE_SIZE_KHR
@ VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR
@ VK_PRESENT_MODE_BEGIN_RANGE_KHR
@ VK_PRESENT_MODE_FIFO_RELAXED_KHR
FWPM_FIELD_TYPE_
Definition Enums.h:3319
ENavMeshDetailFlags
Definition Enums.h:39715
EARLineTraceChannels
Definition Enums.h:36563
EDebugProjectionHairType
Definition Enums.h:25637
IPSEC_AUTH_TYPE_
Definition Enums.h:3093
EMeshSelectionElementType
Definition Enums.h:23500
EGroomStrandsSize
Definition Enums.h:18328
EOffsetMeshSelectionInteractionMode
Definition Enums.h:24423
EGeometryScriptCombineAttributesMode
Definition Enums.h:17914
ERigUnitDebugPointMode
Definition Enums.h:40780
EObjectTypeQuery
Definition Enums.h:7967
@ ObjectTypeQuery17
Definition Enums.h:7984
@ ObjectTypeQuery2
Definition Enums.h:7969
@ ObjectTypeQuery3
Definition Enums.h:7970
@ ObjectTypeQuery20
Definition Enums.h:7987
@ ObjectTypeQuery5
Definition Enums.h:7972
@ ObjectTypeQuery13
Definition Enums.h:7980
@ ObjectTypeQuery32
Definition Enums.h:7999
@ ObjectTypeQuery28
Definition Enums.h:7995
@ ObjectTypeQuery21
Definition Enums.h:7988
@ ObjectTypeQuery27
Definition Enums.h:7994
@ ObjectTypeQuery7
Definition Enums.h:7974
@ ObjectTypeQuery22
Definition Enums.h:7989
@ ObjectTypeQuery1
Definition Enums.h:7968
@ ObjectTypeQuery16
Definition Enums.h:7983
@ ObjectTypeQuery_MAX
Definition Enums.h:8000
@ ObjectTypeQuery4
Definition Enums.h:7971
@ ObjectTypeQuery12
Definition Enums.h:7979
@ ObjectTypeQuery25
Definition Enums.h:7992
@ ObjectTypeQuery9
Definition Enums.h:7976
@ ObjectTypeQuery8
Definition Enums.h:7975
@ ObjectTypeQuery29
Definition Enums.h:7996
@ ObjectTypeQuery30
Definition Enums.h:7997
@ ObjectTypeQuery31
Definition Enums.h:7998
@ ObjectTypeQuery18
Definition Enums.h:7985
@ ObjectTypeQuery24
Definition Enums.h:7991
@ ObjectTypeQuery14
Definition Enums.h:7981
@ ObjectTypeQuery23
Definition Enums.h:7990
@ ObjectTypeQuery19
Definition Enums.h:7986
@ ObjectTypeQuery11
Definition Enums.h:7978
@ ObjectTypeQuery10
Definition Enums.h:7977
@ ObjectTypeQuery15
Definition Enums.h:7982
@ ObjectTypeQuery6
Definition Enums.h:7973
@ ObjectTypeQuery26
Definition Enums.h:7993
NV_GPU_PERF_CHANGE_SEQ_2X_STEP_ID
Definition Enums.h:1373
EControlRigContextChannelToKey
Definition Enums.h:19118
EAudioSpectrumBandPresetType
Definition Enums.h:13418
EPluginDescriptorVersion
Definition Enums.h:34988
FWP_MATCH_TYPE_
Definition Enums.h:2788
@ FWP_MATCH_EQUAL_CASE_INSENSITIVE
AnimPhysCollisionType
Definition Enums.h:36319
ENDISkeletalMesh_SourceMode
Definition Enums.h:11379
ERBFVectorDistanceType
Definition Enums.h:40851
FWPM_VSWITCH_EVENT_TYPE_
Definition Enums.h:2856
@ FWPM_VSWITCH_EVENT_FILTER_ADD_TO_INCOMPLETE_LAYER
@ FWPM_VSWITCH_EVENT_FILTER_ENGINE_NOT_IN_REQUIRED_POSITION
EMobileShadowQuality
Definition Enums.h:36682
EAlignObjectsBoxPoint
Definition Enums.h:24318
EGrassSurfaceFilter
Definition Enums.h:37012
EDistanceFieldShadowingType
Definition Enums.h:37235
CURLcode
Definition Enums.h:35812
@ CURLE_TFTP_UNKNOWNID
@ CURLE_OBSOLETE20
@ CURLE_BAD_FUNCTION_ARGUMENT
@ CURLE_OBSOLETE40
@ CURLE_BAD_DOWNLOAD_RESUME
@ CURLE_OBSOLETE29
@ CURLE_SSL_CERTPROBLEM
@ CURLE_TFTP_NOSUCHUSER
@ CURLE_FILESIZE_EXCEEDED
@ CURLE_OBSOLETE51
@ CURLE_FTP_ACCEPT_FAILED
@ CURLE_COULDNT_CONNECT
@ CURLE_BAD_CONTENT_ENCODING
@ CURLE_PEER_FAILED_VERIFICATION
@ CURLE_UNSUPPORTED_PROTOCOL
@ CURLE_SSL_CIPHER
@ CURLE_REMOTE_ACCESS_DENIED
@ CURLE_OUT_OF_MEMORY
@ CURLE_PARTIAL_FILE
@ CURLE_SSL_ENGINE_INITFAILED
@ CURLE_OBSOLETE50
@ CURLE_SSL_CRL_BADFILE
@ CURLE_USE_SSL_FAILED
@ CURLE_AUTH_ERROR
@ CURLE_SSL_CACERT_BADFILE
@ CURLE_FTP_COULDNT_SET_TYPE
@ CURLE_FTP_WEIRD_PASS_REPLY
@ CURLE_QUOTE_ERROR
@ CURLE_UNKNOWN_OPTION
@ CURLE_FUNCTION_NOT_FOUND
@ CURLE_FTP_WEIRD_PASV_REPLY
@ CURLE_HTTP_POST_ERROR
@ CURLE_NOT_BUILT_IN
@ CURLE_LDAP_CANNOT_BIND
@ CURLE_COULDNT_RESOLVE_PROXY
@ CURLE_WEIRD_SERVER_REPLY
@ CURLE_TFTP_NOTFOUND
@ CURLE_SSL_CLIENTCERT
@ CURLE_REMOTE_DISK_FULL
@ CURLE_SSL_PINNEDPUBKEYNOTMATCH
@ CURLE_SEND_ERROR
@ CURLE_CHUNK_FAILED
@ CURLE_WRITE_ERROR
@ CURLE_SSL_ENGINE_SETFAILED
@ CURLE_OBSOLETE24
@ CURLE_REMOTE_FILE_NOT_FOUND
@ CURLE_COULDNT_RESOLVE_HOST
@ CURLE_QUIC_CONNECT_ERROR
@ CURLE_OBSOLETE62
@ CURLE_ABORTED_BY_CALLBACK
@ CURLE_RTSP_CSEQ_ERROR
@ CURLE_SETOPT_OPTION_SYNTAX
@ CURLE_TFTP_PERM
@ CURLE_FTP_COULDNT_RETR_FILE
@ CURLE_GOT_NOTHING
@ CURLE_REMOTE_FILE_EXISTS
@ CURLE_RANGE_ERROR
@ CURLE_FTP_PRET_FAILED
@ CURLE_RTSP_SESSION_ERROR
@ CURLE_FTP_PORT_FAILED
@ CURLE_READ_ERROR
@ CURLE_UPLOAD_FAILED
@ CURLE_RECV_ERROR
@ CURLE_OPERATION_TIMEDOUT
@ CURLE_FTP_CANT_GET_HOST
@ CURLE_LDAP_SEARCH_FAILED
@ CURLE_SSL_ENGINE_NOTFOUND
@ CURLE_OBSOLETE32
@ CURLE_FTP_BAD_FILE_LIST
@ CURLE_HTTP2_STREAM
@ CURLE_SSL_INVALIDCERTSTATUS
@ CURLE_FTP_COULDNT_USE_REST
@ CURLE_RECURSIVE_API_CALL
@ CURLE_FTP_ACCEPT_TIMEOUT
@ CURLE_FTP_WEIRD_227_FORMAT
@ CURLE_TOO_MANY_REDIRECTS
@ CURLE_OBSOLETE46
@ CURLE_SSL_SHUTDOWN_FAILED
@ CURLE_INTERFACE_FAILED
@ CURLE_FILE_COULDNT_READ_FILE
@ CURLE_OBSOLETE76
@ CURLE_OBSOLETE57
@ CURLE_NO_CONNECTION_AVAILABLE
@ CURLE_TFTP_ILLEGAL
@ CURLE_OBSOLETE44
@ CURLE_SSL_ISSUER_ERROR
@ CURLE_SSL_CONNECT_ERROR
@ CURLE_HTTP_RETURNED_ERROR
@ CURLE_URL_MALFORMAT
@ CURLE_CONV_FAILED
@ CURLE_FAILED_INIT
@ CURLE_SEND_FAIL_REWIND
@ CURLE_LOGIN_DENIED
EInstallBundleCacheReserveResult
Definition Enums.h:40400
FWP_CLASSIFY_OPTION_TYPE_
Definition Enums.h:3306
@ FWP_CLASSIFY_OPTION_SECURE_SOCKET_SECURITY_FLAGS
@ FWP_CLASSIFY_OPTION_SECURE_SOCKET_AUTHIP_MM_POLICY_KEY
@ FWP_CLASSIFY_OPTION_SECURE_SOCKET_AUTHIP_QM_POLICY_KEY
VkSurfaceTransformFlagBitsKHR
Definition Enums.h:39323
@ VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR
@ VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR
@ VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR
FForceFeedbackChannelType
Definition Enums.h:12543
EProcessRemoteFunctionFlags
Definition Enums.h:11556
EPCGSelfPruningType
Definition Enums.h:23059
EMoviePipelineShutterTiming
Definition Enums.h:21742
ENetRole
Definition Enums.h:5454
@ ROLE_Authority
@ ROLE_AutonomousProxy
@ ROLE_SimulatedProxy
EBoneVisibilityStatus
Definition Enums.h:8309
EVTRequestPagePriority
Definition Enums.h:17125
VkImageAspectFlagBits
Definition Enums.h:1260
EHLODLevelExclusion
Definition Enums.h:20737
ENormalCalculationMethod
Definition Enums.h:20611
ESplineBoneAxis
Definition Enums.h:36883
EBeam2Method
Definition Enums.h:37806
ECompareFunction
Definition Enums.h:5702
ovrUserPresenceStatus_
Definition Enums.h:17336
EGeometryScriptCollisionGenerationMethod
Definition Enums.h:14668
EDecalBlendMode
Definition Enums.h:12123
@ DBM_DBuffer_ColorNormalRoughness
@ DBM_DBuffer_EmissiveAlphaComposite
@ DBM_Volumetric_DistanceFunction
FCPXMLExportDataSource
Definition Enums.h:22449
EInputActionValueType
Definition Enums.h:25446
ESamplerSourceMode
Definition Enums.h:19966
EMovieScene2DTransformChannel
Definition Enums.h:38833
ERDGTransientResourceLifetimeState
Definition Enums.h:35315
EARServicePermissionRequestResult
Definition Enums.h:36709
ERigBoneType
Definition Enums.h:19197
ENDIStaticMesh_SourceMode
Definition Enums.h:11433
ENaturalSoundFalloffMode
Definition Enums.h:11690
_FILE_INFORMATION_CLASS
Definition Enums.h:3496
@ FileCaseSensitiveInformationForceAccessCheck
ERemoteStoragePublishedFileVisibility
Definition Enums.h:15440
EMappingQueryResult
Definition Enums.h:25473
@ Error_InputContextNotInActiveContexts
EIcmpEchoManyStatus
Definition Enums.h:37369
ECubeGridToolAction
Definition Enums.h:31288
NvAPIPrivateConstDataSlot
Definition Enums.h:1135
EMovieSceneTrackEasingSupportFlags
Definition Enums.h:8567
EAirAbsorptionMethod
Definition Enums.h:19738
EMemoryTraceHeapFlags
Definition Enums.h:19808
EPlatformAuthentication
Definition Enums.h:13132
ERDGImportedBufferFlags
Definition Enums.h:18173
EFilterInterpolationType
Definition Enums.h:11760
ETransformGetterType
Definition Enums.h:19946
EOptimusNodePinStorageType
Definition Enums.h:25721
TJSAMP
Definition Enums.h:34998
@ TJSAMP_422
@ TJSAMP_411
@ TJSAMP_GRAY
@ TJSAMP_420
@ TJSAMP_444
@ TJSAMP_440
EGeometryScriptBakeCurvatureColorMode
Definition Enums.h:17519
EHairCardsClusterType
Definition Enums.h:18406
ETextureReallocationStatus
Definition Enums.h:7701
EGestureEvent
Definition Enums.h:7737
curl_lock_data
Definition Enums.h:35943
@ CURL_LOCK_DATA_SSL_SESSION
EBakeCurvatureClampMode
Definition Enums.h:24195
UCalendarType
Definition Enums.h:33813
EChaosPerfUnits
Definition Enums.h:26676
EPBIKRootBehavior
Definition Enums.h:24608
ETerrainCoordMappingType
Definition Enums.h:35296
IKEEXT_CERT_CONFIG_TYPE_
Definition Enums.h:2847
EPCGWorldQueryFilterByTag
Definition Enums.h:22571
EPatternToolShape
Definition Enums.h:24241
EDataflowVectorFieldOperationType
Definition Enums.h:25051
EJsonToken
Definition Enums.h:9020
ESecondaryScreenPercentageMethod
Definition Enums.h:15269
EGameplayTaskRunResult
Definition Enums.h:33510
EHorizTextAligment
Definition Enums.h:12648
UDisplayContext
Definition Enums.h:33960
@ UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU
@ UDISPCTX_CAPITALIZATION_NONE
@ UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE
@ UDISPCTX_CAPITALIZATION_FOR_STANDALONE
@ UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE
EEffectScope
Definition Enums.h:31855
VkPerformanceCounterScopeKHR
Definition Enums.h:26749
EVectorVMOp
Definition Enums.h:10041
@ inputdata_noadvance_float
@ inputdata_noadvance_half
@ inputdata_noadvance_int32
EBasicAxis
Definition Enums.h:24522
EARServiceInstallRequestResult
Definition Enums.h:36701
EVTProducePageFlags
Definition Enums.h:11874
ESimpleRenderTargetMode
Definition Enums.h:20724
ECRSimSoftCollisionType
Definition Enums.h:20002
ERHITransientHeapFlags
Definition Enums.h:38997
VkExternalSemaphoreFeatureFlagBits
Definition Enums.h:2585
ESplineType
Definition Enums.h:21648
EMeshGroupPaintBrushType
Definition Enums.h:26145
ERepParentFlags
Definition Enums.h:10339
EInstallBundleReleaseResult
Definition Enums.h:40408
EPCGMedadataCompareOperation
Definition Enums.h:22623
EHoudiniHandleType
Definition Enums.h:23760
EUnicodeBlockRange
Definition Enums.h:34704
@ UnifiedCanadianAboriginalSyllabicsExtended
@ CombiningDiacriticalMarksForSymbols
@ CombiningDiacriticalMarksSupplement
@ MiscellaneousSymbolsAndPictographs
@ UnifiedCanadianAboriginalSyllabics
@ ArabicMathematicalAlphabeticSymbols
@ CJKCompatibilityIdeographsSupplement
ELandscapeClearMode
Definition Enums.h:13947
EGeometryScriptBakeCurvatureClampMode
Definition Enums.h:17512
EConvexOverlapRemoval
Definition Enums.h:24930
EMainTAAPassConfig
Definition Enums.h:21445
EMaterialProperty
Definition Enums.h:5301
@ MP_TessellationMultiplier_DEPRECATED
VkRenderingFlagBits
Definition Enums.h:26899
@ VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR
@ VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT
@ VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT
EAddComponentResult
Definition Enums.h:38598
EUniformBufferBaseType
Definition Enums.h:4238
EUpdateRateShiftBucket
Definition Enums.h:18058
ERDGPooledBufferAlignment
Definition Enums.h:17090
LIBRARYOPTIONFLAGS
Definition Enums.h:2654
EMultiBoxType
Definition Enums.h:14078
EOptimusDataTypeFlags
Definition Enums.h:25735
EARSessionTrackingFeature
Definition Enums.h:36516
ENGXProjectIdentifier
Definition Enums.h:21415
EFieldFalloffType
Definition Enums.h:20861
ENavigationSource
Definition Enums.h:10647
EVectorVMFlags
Definition Enums.h:39122
@ VVMFlag_HasRandInstruction
@ VVMFlag_OptSaveIntermediateState
EOS_ELogCategory
Definition Enums.h:25153
EMouseLockMode
Definition Enums.h:19696
EChatMemberStateChange
Definition Enums.h:14713
LandscapeSplineMeshOrientation
Definition Enums.h:20455
EParticleSortMode
Definition Enums.h:38343
ESoundDistanceCalc
Definition Enums.h:22144
EDatasmithImportAssetConflictPolicy
Definition Enums.h:24689
EResendAllDataState
Definition Enums.h:8523
AMPROPERTY_PIN
Definition Enums.h:37550
EGLTFJsonMimeType
Definition Enums.h:28382
EGLTFJsonExtension
Definition Enums.h:28298
EPackageSegment
Definition Enums.h:21604
EMeshScreenAlignment
Definition Enums.h:37764
ERigVMNodeCreatedReason
Definition Enums.h:19247
EConfigExpansionFlags
Definition Enums.h:18841
EGetByNameFlags
Definition Enums.h:11057
EBuildPatchDownloadHealth
Definition Enums.h:31373
EMoveComponentFlags
Definition Enums.h:7129
@ MOVECOMP_NeverIgnoreBlockingOverlaps
@ MOVECOMP_DisableBlockingOverlapDispatch
ovrPlatformInitializeResult_
Definition Enums.h:17139
EDeadZoneType
Definition Enums.h:25499
ELocationFilteringModeEnum
Definition Enums.h:25839
EKeyboardType
Definition Enums.h:22346
ESoundSpatializationAlgorithm
Definition Enums.h:5448
EOnlineStoreOfferDiscountType
Definition Enums.h:12098
EAnimCurveType
Definition Enums.h:7488
FWPM_SERVICE_STATE_
Definition Enums.h:3201
ETwitterRequestMethod
Definition Enums.h:28734
EEdGraphPinDirection
Definition Enums.h:5903
ESpectatorScreenMode
Definition Enums.h:12881
EChannelCreateFlags
Definition Enums.h:8027
EBrushFalloffMode
Definition Enums.h:26113
EVolumeCacheType
Definition Enums.h:11309
ETypeAdvanceAnim
Definition Enums.h:14052
AMBISONICS_NORMALIZATION
Definition Enums.h:38893
VkSamplerYcbcrModelConversion
Definition Enums.h:2153
EFontLayoutMethod
Definition Enums.h:22019
UNumberFormatAttributeValue
Definition Enums.h:34040
EGeometryScriptPrimitivePolygroupMode
Definition Enums.h:18361
EBrushToolSizeType
Definition Enums.h:24222
EdgeValues
Definition Enums.h:39753
ETimedDataInputEvaluationType
Definition Enums.h:24615
EObjectDataResourceFlags
Definition Enums.h:20946
EDataSourceTypeEnum
Definition Enums.h:25831
@ ChaosNiagara_DataSourceType_Trailing
@ ChaosNiagara_DataSourceType_Breaking
@ ChaosNiagara_DataSourceType_Collision
EMapPropertyFlags
Definition Enums.h:14116
EHairLightingIntegrationType
Definition Enums.h:36897
EFFTPeakInterpolationMethod
Definition Enums.h:21996
EHoudiniExecutableType
Definition Enums.h:18985
EConstraintPlasticityType
Definition Enums.h:8500
ELocationXToSpawnEnum
Definition Enums.h:25846
EPCGAttributeSelectAxis
Definition Enums.h:22845
ESchemaTranslationStatus
Definition Enums.h:19982
EElementType
Definition Enums.h:9746
EDLSSSettingOverride
Definition Enums.h:21360
ERenderTargetActions
Definition Enums.h:20423
EScriptExecutionMode
Definition Enums.h:11335
EPCGIntersectionDensityFunction
Definition Enums.h:20686
EProjectedHullAxis
Definition Enums.h:26533
EResourceAlignment
Definition Enums.h:5637
EProceduralDiscType
Definition Enums.h:23391
ESpawnOwnership
Definition Enums.h:8705
EBlueprintNativizationFlag
Definition Enums.h:12687
ESlateTextureAtlasPaddingStyle
Definition Enums.h:6559
VkQueryPoolSamplingModeINTEL
Definition Enums.h:1897
ERayTracingSceneState
Definition Enums.h:11628
ECopyTextureValueType
Definition Enums.h:36093
EStereoDelaySourceEffect
Definition Enums.h:29284
ERootMotionSourceStatusFlags
Definition Enums.h:8486
EHairInterpolationQuality
Definition Enums.h:18338
UDLSSMode
Definition Enums.h:24444
@ UltraPerformance
EFeatureFusionCategory
Definition Enums.h:37094
ESkelAnimRotationOrder
Definition Enums.h:38763
EForEachResult
Definition Enums.h:39739
EClusterPassInputType
Definition Enums.h:35212
ESkyAtmospherePassLocation
Definition Enums.h:34122
EFrameHitchType
Definition Enums.h:40209
EControlRigCurveAlignment
Definition Enums.h:21694
curl_infotype
Definition Enums.h:35425
ELiveLinkAxis
Definition Enums.h:24869
EFlushLevelStreamingType
Definition Enums.h:16827
EStatType
Definition Enums.h:8789
@ STATTYPE_AccumulatorDWORD
@ STATTYPE_AccumulatorFLOAT
@ STATTYPE_CycleCounter
@ STATTYPE_MemoryCounter
@ STATTYPE_CounterDWORD
@ STATTYPE_CounterFLOAT
EInGamePerfTrackerThreads
Definition Enums.h:11262
EPropertyAccessObjectType
Definition Enums.h:40162
EGroomCurveType
Definition Enums.h:25544
EMeshGroupPaintVisibilityType
Definition Enums.h:26167
EARPlaneOrientation
Definition Enums.h:36361
ESocketBSDReturn
Definition Enums.h:33028
ESteamIPv6ConnectivityState
Definition Enums.h:15357
EArrayPropertyFlags
Definition Enums.h:9210
EUVProjectionMethod
Definition Enums.h:24120
EEulerRotationOrder
Definition Enums.h:18003
EOS_EAuthScopeFlags
Definition Enums.h:16937
EGeometryScriptSamplingDistributionMode
Definition Enums.h:18604
ESetOperationEnum
Definition Enums.h:25381
EHairPatchAttribute
Definition Enums.h:21628
EUsdInterpolationType
Definition Enums.h:22481
ERayTracingSceneLifetime
Definition Enums.h:9828
EStatFlags
Definition Enums.h:22660
EComputeNTBsFlags
Definition Enums.h:17400
EStandardToolContextMaterials
Definition Enums.h:18631
URegexpFlag
Definition Enums.h:33673
@ UREGEX_CASE_INSENSITIVE
@ UREGEX_ERROR_ON_UNKNOWN_ESCAPES
ERepLayoutCmdFlags
Definition Enums.h:10285
EEOSUserInterface_SignInOrCreateAccount_Choice
Definition Enums.h:24114
EGameDelegates_SaveGame
Definition Enums.h:15411
ETribeDataExclude
Definition Enums.h:41339
EConfigCacheType
Definition Enums.h:13074
EMoviePipelineEncodeQuality
Definition Enums.h:21798
ENavigationDataResolution
Definition Enums.h:18049
EHandleEvent
Definition Enums.h:19790
@ GlobalTransformUpdated
VkShaderStageFlagBits
Definition Enums.h:26981
@ VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
@ VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI
@ VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
EPropertyAccessCopyBatch
Definition Enums.h:40317
ESlateTickType
Definition Enums.h:21106
GFSDK_Aftermath_GpuCrashDumpDecoderFlags
Definition Enums.h:39527
VkAttachmentLoadOp
Definition Enums.h:783
EPCGChangeType
Definition Enums.h:20713
EGroomBindingType
Definition Enums.h:18321
EPCGPointExtentsModifierMode
Definition Enums.h:22955
EHorizontalAlignment
Definition Enums.h:6358
EParticleSysParamType
Definition Enums.h:11419
tagCONDITION_TYPE
Definition Enums.h:735
VideoCopyProtectionType
Definition Enums.h:37510
EVectorVMOpCategory
Definition Enums.h:10027
EMovieSceneTransformChannel
Definition Enums.h:8440
EPartyRequestToJoinRemovedReason
Definition Enums.h:12433
EGLTFMaterialBakeMode
Definition Enums.h:28267
EDDSPixelFormat
Definition Enums.h:38377
EVRSImageDataType
Definition Enums.h:22487
ECreateRepLayoutFlags
Definition Enums.h:10376
EGeometryScriptIndexType
Definition Enums.h:14558
EGeometryScriptDebugMessageType
Definition Enums.h:14567
SYM_TYPE
Definition Enums.h:34283
ERigUnitDebugTransformMode
Definition Enums.h:40794
EDepthDrawingMode
Definition Enums.h:11498
EOnlineTournamentFormat
Definition Enums.h:12728
EStreamingSourceTargetState
Definition Enums.h:7798
ESynthStereoDelayMode
Definition Enums.h:28938
ETransformGizmoSubElements
Definition Enums.h:18713
ECustomDataInputType
Definition Enums.h:5026
ETrailsRenderAxisOption
Definition Enums.h:37790
UNISMode
Definition Enums.h:31774
EPersonaChange
Definition Enums.h:15051
@ k_EPersonaChangeJoinedSource
@ k_EPersonaChangeGameServer
@ k_EPersonaChangeRichPresence
@ k_EPersonaChangeComeOnline
@ k_EPersonaChangeSteamLevel
@ k_EPersonaChangeRelationshipChanged
@ k_EPersonaChangeGamePlayed
@ k_EPersonaChangeNameFirstSet
@ k_EPersonaChangeLeftSource
@ k_EPersonaChangeGoneOffline
UCollationResult
Definition Enums.h:30539
EFoliageScaling
Definition Enums.h:20990
ECloudStorageDelegate
Definition Enums.h:39967
ETimestampTranslation
Definition Enums.h:9340
EHairSimulationInterpolationMode
Definition Enums.h:21641
EResizeBufferFlags
Definition Enums.h:16687
EMemberConnectionStatus
Definition Enums.h:12309
OIDNAccess
Definition Enums.h:29548
@ OIDN_ACCESS_READ_WRITE
@ OIDN_ACCESS_WRITE_DISCARD
_NDIS_NET_BUFFER_LIST_INFO
Definition Enums.h:2866
ESceneTextureId
Definition Enums.h:4175
EInitStateDefaultsResult
Definition Enums.h:7295
ERigVMExecuteResult
Definition Enums.h:18598
UJoiningGroup
Definition Enums.h:30405
@ U_JG_HANIFI_ROHINGYA_KINNA_YA
@ U_JG_BURUSHASKI_YEH_BARREE
EDatasmithImportSearchPackagePolicy
Definition Enums.h:24683
EScreenProbeIrradianceFormat
Definition Enums.h:36991
ESpawnActorScaleMethod
Definition Enums.h:12560
EAsyncTaskState
Definition Enums.h:38864
ESpaceCurveControlPointFalloffType
Definition Enums.h:13878
EPCGDataType
Definition Enums.h:20552
ERotatorQuantization
Definition Enums.h:20061
EPropertyLocalizationGathererTextFlags
Definition Enums.h:26449
EInputEvent
Definition Enums.h:4754
ELocationEmitterSelectionMethod
Definition Enums.h:40111
EStrataShadingModel
Definition Enums.h:7207
ETextureCompressionQuality
Definition Enums.h:8361
EShouldCookBlueprintPropertyGuids
Definition Enums.h:23454
ECFCoreAutoCookingType
Definition Enums.h:14253
EBiomeZone
Definition Enums.h:29796
@ BioluminescentChamber
ELoopingMode
Definition Enums.h:14173
EPinResolveType
Definition Enums.h:40261
@ ReferencePassThroughConnection
ESourceEffectDynamicsPeakMode
Definition Enums.h:29045
FWP_IP_VERSION_
Definition Enums.h:2923
CURLMSG
Definition Enums.h:36002
@ CURLMSG_NONE
@ CURLMSG_DONE
@ CURLMSG_LAST
tagVideoProcAmpProperty
Definition Enums.h:37516
EMeshCameraFacingOptions
Definition Enums.h:37772
ECameraSetting_BoolCondition
Definition Enums.h:29219
EHandleSourcesMethod
Definition Enums.h:23484
EHotReloadFlags
Definition Enums.h:8682
EBlendMode
Definition Enums.h:5739
@ BLEND_AlphaComposite
@ BLEND_TranslucentColoredTransmittance
@ BLEND_TranslucentGreyTransmittance
@ BLEND_ColoredTransmittanceOnly
@ BLEND_AlphaHoldout
EUVLayoutType
Definition Enums.h:20604
APPLICATION_VIEW_ORIENTATION
Definition Enums.h:80
ETAAQuality
Definition Enums.h:21437
EConstructionError
Definition Enums.h:40343
ESteelShieldEnvironment
Definition Enums.h:24516
ECompactedTracingIndirectArgs
Definition Enums.h:37046
UBiDiDirection
Definition Enums.h:33665
ELocalFileChunkType
Definition Enums.h:39666
EDynamicMeshComponentRenderUpdateMode
Definition Enums.h:14688
EOnlineTournamentParticipantType
Definition Enums.h:12758
FILE_USAGE_TYPE
Definition Enums.h:680
EHoudiniPluginSerializationVersion
Definition Enums.h:20794
@ VER_HOUDINI_PLUGIN_SERIALIZATION_VERSION_COOK_TEMP_PACKAGES_MESH_AND_LAYERS
@ VER_HOUDINI_PLUGIN_SERIALIZATION_VERSION_OUTLINER_INPUT_SAVE_ACTOR_PATHNAME
@ VER_HOUDINI_PLUGIN_SERIALIZATION_VERSION_GEOMETRY_INPUT_TRANSFORMS
@ VER_HOUDINI_PLUGIN_SERIALIZATION_VERSION_INPUT_LANDSCAPE_TRANSFORM
@ VER_HOUDINI_PLUGIN_SERIALIZATION_VERSION_POST_419_SERIALIZATION_FIX
@ VER_HOUDINI_PLUGIN_SERIALIZATION_VERSION_UNREAL_SPLINE_RESOLUTION_PER_INPUT
@ VER_HOUDINI_PLUGIN_SERIALIZATION_VERSION_OUTLINER_INPUT_SAVE_ACTOR_ONLY
EArkProcMeshSliceCapOption
Definition Enums.h:26574
EFontHinting
Definition Enums.h:9524
VkObjectType
Definition Enums.h:934
@ VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT
@ VK_OBJECT_TYPE_SURFACE_KHR
@ VK_OBJECT_TYPE_INSTANCE
@ VK_OBJECT_TYPE_UNKNOWN
@ VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX
@ VK_OBJECT_TYPE_COMMAND_POOL
@ VK_OBJECT_TYPE_SHADER_MODULE
@ VK_OBJECT_TYPE_PIPELINE_CACHE
@ VK_OBJECT_TYPE_DESCRIPTOR_POOL
@ VK_OBJECT_TYPE_COMMAND_BUFFER
@ VK_OBJECT_TYPE_DISPLAY_KHR
@ VK_OBJECT_TYPE_SWAPCHAIN_KHR
@ VK_OBJECT_TYPE_DESCRIPTOR_SET
@ VK_OBJECT_TYPE_PHYSICAL_DEVICE
@ VK_OBJECT_TYPE_SAMPLER
@ VK_OBJECT_TYPE_SEMAPHORE
@ VK_OBJECT_TYPE_RENDER_PASS
@ VK_OBJECT_TYPE_PIPELINE
@ VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT
@ VK_OBJECT_TYPE_IMAGE_VIEW
@ VK_OBJECT_TYPE_QUERY_POOL
@ VK_OBJECT_TYPE_RANGE_SIZE
@ VK_OBJECT_TYPE_DISPLAY_MODE_KHR
@ VK_OBJECT_TYPE_VALIDATION_CACHE_EXT
@ VK_OBJECT_TYPE_BEGIN_RANGE
@ VK_OBJECT_TYPE_BUFFER_VIEW
@ VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL
@ VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR
@ VK_OBJECT_TYPE_OBJECT_TABLE_NVX
@ VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV
@ VK_OBJECT_TYPE_MAX_ENUM
@ VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT
@ VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION
@ VK_OBJECT_TYPE_DEVICE_MEMORY
@ VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR
@ VK_OBJECT_TYPE_FRAMEBUFFER
@ VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE
@ VK_OBJECT_TYPE_PIPELINE_LAYOUT
@ VK_OBJECT_TYPE_END_RANGE
EExtractCollisionOutputType
Definition Enums.h:26395
EARTextureType
Definition Enums.h:36440
EMovieSceneControlRigSpaceType
Definition Enums.h:19593
EEdgeLoopPositioningMode
Definition Enums.h:23712
EMeshAttributeFlags
Definition Enums.h:14224
VkSamplerReductionMode
Definition Enums.h:27126
@ VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT
@ VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
ERevolvePropertiesPolygroupMode
Definition Enums.h:23528
VkDisplayPowerStateEXT
Definition Enums.h:1146
ETraceFrameType
Definition Enums.h:24711
ECollisionQueryHitType
Definition Enums.h:10221
EMaterialInstanceUsedByRTFlag
Definition Enums.h:21534
NV_MOSAIC_TOPO
Definition Enums.h:1397
@ NV_MOSAIC_TOPO_1x4_PASSIVE_STEREO
@ NV_MOSAIC_TOPO_BEGIN_BASIC
@ NV_MOSAIC_TOPO_4x1_PASSIVE_STEREO
@ NV_MOSAIC_TOPO_3x1_PASSIVE_STEREO
@ NV_MOSAIC_TOPO_2x1_PASSIVE_STEREO
@ NV_MOSAIC_TOPO_BEGIN_PASSIVE_STEREO
@ NV_MOSAIC_TOPO_END_PASSIVE_STEREO
@ NV_MOSAIC_TOPO_1x2_PASSIVE_STEREO
@ NV_MOSAIC_TOPO_2x2_PASSIVE_STEREO
@ NV_MOSAIC_TOPO_1x3_PASSIVE_STEREO
ECreateObjectTypeHint
Definition Enums.h:13932
_NVAPI_DITHER_MODE
Definition Enums.h:1279
EChaosCollisionSortMethod
Definition Enums.h:37300
EGeometryScriptEmptySelectionBehavior
Definition Enums.h:17018
EStructDeserializerErrorPolicies
Definition Enums.h:22037
ELightmapUVVersion
Definition Enums.h:24938
EWindSourceType
Definition Enums.h:37147
TextureAddress
Definition Enums.h:6541
EMediaTrackType
Definition Enums.h:31576
ETextureClass
Definition Enums.h:11350
EShaderFundamentalDimensionType
Definition Enums.h:13283
ovrMatchmakingCriterionImportance_
Definition Enums.h:17366
EWaveFunctionType
Definition Enums.h:20852
FLightOcclusionType
Definition Enums.h:36020
ELandscapeResizeMode
Definition Enums.h:35328
EInstallBundleRequestInfoFlags
Definition Enums.h:40416
EUVProjectionToolActions
Definition Enums.h:24128
DrawNavMeshFlags
Definition Enums.h:39292
EHoudiniLandscapeExportType
Definition Enums.h:23781
EOS_EOnlineSessionPermissionLevel
Definition Enums.h:25018
EARGeoTrackingState
Definition Enums.h:36608
ERevolvePropertiesCapFillMode
Definition Enums.h:23542
EARSceneReconstruction
Definition Enums.h:36526
ESteamNetConnectionEnd
Definition Enums.h:15190
@ k_ESteamNetConnectionEnd_Misc_NoRelaySessionsToClient
@ k_ESteamNetConnectionEnd_Local_OfflineMode
@ k_ESteamNetConnectionEnd_Remote_P2P_ICE_NoPublicAddresses
@ k_ESteamNetConnectionEnd_Misc_PeerSentNoConnection
@ k_ESteamNetConnectionEnd_Remote_BadProtocolVersion
@ k_ESteamNetConnectionEnd_Misc_P2P_Rendezvous
@ k_ESteamNetConnectionEnd_Local_ManyRelayConnectivity
@ k_ESteamNetConnectionEnd_Misc_P2P_NAT_Firewall
@ k_ESteamNetConnectionEnd_Misc_SteamConnectivity
@ k_ESteamNetConnectionEnd_Misc_InternalError
@ k_ESteamNetConnectionEnd_AppException_Generic
@ k_ESteamNetConnectionEnd_Local_P2P_ICE_NoPublicAddresses
@ k_ESteamNetConnectionEnd_Local_HostedServerPrimaryRelay
@ k_ESteamNetConnectionEnd_Local_NetworkConfig
ERBFKernelType
Definition Enums.h:40842
EPCGSpawnActorGenerationTrigger
Definition Enums.h:23109
ESocketConnectionState
Definition Enums.h:9301
EClassFlags
Definition Enums.h:4047
@ CLASS_NewerVersionExists
@ CLASS_TokenStreamAssembled
@ CLASS_ProjectUserConfig
@ CLASS_PerObjectConfig
@ CLASS_NeedsDeferredDependencyLoading
@ CLASS_DefaultToInstanced
@ CLASS_ReplicationDataIsSetUp
@ CLASS_GlobalUserConfig
@ CLASS_CollapseCategories
@ CLASS_CustomConstructor
@ CLASS_MatchedSerializers
@ CLASS_ConfigDoNotCheckDefaults
@ CLASS_CompiledFromBlueprint
@ CLASS_HasInstancedReference
ERigVMBreakpointAction
Definition Enums.h:39191
EOpenGLFormatCapabilities
Definition Enums.h:40465
ERichCurveExtrapolation
Definition Enums.h:6278
EPriorityAttenuationMethod
Definition Enums.h:19751
EMetasoundFrontendVertexAccessType
Definition Enums.h:22722
EPoseComponentDebugMode
Definition Enums.h:36254
UStreamlineReflexMode
Definition Enums.h:31767
EUpscaleMethod
Definition Enums.h:24467
EGeometryScriptSmoothBoneWeightsType
Definition Enums.h:17921
EHoudiniRampPointConstructStatus
Definition Enums.h:19024
ETAAPassConfig
Definition Enums.h:21424
EFileSystemError
Definition Enums.h:13465
ECreateMeshObjectSourceMeshType
Definition Enums.h:23278
ETickMode
Definition Enums.h:37209
EOS_EAntiCheatCommonClientAuthStatus
Definition Enums.h:16997
ERayTracingAccelerationStructureFlags
Definition Enums.h:10503
EMobileBasePass
Definition Enums.h:37594
ERotationComponent
Definition Enums.h:20372
NISGPUArchitecture
Definition Enums.h:25366
ESubmixEffectDynamicsKeySource
Definition Enums.h:21845
EPartyInvitationRemovedReason
Definition Enums.h:12415
EStreamlineSettingOverride
Definition Enums.h:25068
EHeightfieldSource
Definition Enums.h:14150
EPrimaryAssetProductionLevel
Definition Enums.h:21296
EStaticMeshVertexTangentBasisType
Definition Enums.h:7900
ETriggerState
Definition Enums.h:25482
NV_HDR_MODE
Definition Enums.h:40655
@ NV_HDR_MODE_UHDA_PASSTHROUGH
@ NV_HDR_MODE_DOLBY_VISION
ETrigMathOperation
Definition Enums.h:38972
ENetDormancy
Definition Enums.h:6231
ETimedDataInputState
Definition Enums.h:24622
ECollisionTypeEnum
Definition Enums.h:25898
tagCONDITION_OPERATION
Definition Enums.h:764
EMoviePlaybackType
Definition Enums.h:7251
VkFullScreenExclusiveEXT
Definition Enums.h:39305
@ VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
EQuickTransformerMode
Definition Enums.h:31310
ESQLiteDatabaseOpenMode
Definition Enums.h:23417
ERayTracingInstanceMaskType
Definition Enums.h:37839
EDenoiseMode
Definition Enums.h:29582
EMediaOrientation
Definition Enums.h:31187
MediaTextureOutputFormat
Definition Enums.h:31621
EVelocityPass
Definition Enums.h:34115
EPawnActionTaskResult
Definition Enums.h:41222
ETextFlowDirection
Definition Enums.h:16759
EMicroTransactionDelegate
Definition Enums.h:40070
ESpatialInputGestureAxis
Definition Enums.h:12987
EPCGDensityNoiseMode
Definition Enums.h:22911
ESceneCaptureCompositeMode
Definition Enums.h:12400
BINKPLUGINDRAWFLAGS
Definition Enums.h:39349
EMovieSceneCaptureProtocolState
Definition Enums.h:39949
ESteamControllerPad
Definition Enums.h:15227
CompressTaskState
Definition Enums.h:29027
EMorphologyOperation
Definition Enums.h:20662
VkPipelineCreationFeedbackFlagBits
Definition Enums.h:27056
@ VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT
EDurationControlOnlineState
Definition Enums.h:15296
ChaosDeformableSimSpace
Definition Enums.h:36803
ECheatPunishType
Definition Enums.h:18484
ETransferPersistentDataMode
Definition Enums.h:40279
ERigExecutionType
Definition Enums.h:19530
WINDOWCOMPOSITIONATTRIB
Definition Enums.h:3787
ESparseVolumeTextureShaderUniform
Definition Enums.h:38801
EBakeTextureSamplesPerPixel
Definition Enums.h:17899
ESchemaTranslationLaunchPolicy
Definition Enums.h:19861
SRC_MODE
Definition Enums.h:38669
@ SRC_MODE_CALLBACK
@ SRC_MODE_PROCESS
ECameraFocusMethod
Definition Enums.h:24376
ERayTracingPrimaryRaysFlag
Definition Enums.h:34229
EPrimalCameraState
Definition Enums.h:28991
@ ASA_CAMERA
Definition Enums.h:28993
@ NORMAL_INTERP_TO_ASA_CAMERA
Definition Enums.h:28995
@ SLOW_INTERP_TO_OLD_CAMERA
Definition Enums.h:28997
@ OLD_CAMERA
Definition Enums.h:28992
@ NORMAL_INTERP_TO_OLD_CAMERA
Definition Enums.h:28994
@ WAITING_TO_SWITCH_TO_OLD_CAMERA_SLOW
Definition Enums.h:28996
EShadowDepthVertexShaderMode
Definition Enums.h:38458
EBTNodeRelativePriority
Definition Enums.h:32717
EOfflineBVHMode
Definition Enums.h:13170
ECompressionError
Definition Enums.h:13449
EARFaceTrackingDirection
Definition Enums.h:36504
EChaosTrailingSortMethod
Definition Enums.h:37319
ERenderResourceState
Definition Enums.h:20749
ELandscapeCustomizedCoordType
Definition Enums.h:35305
ERigVMAnimEasingType
Definition Enums.h:19892
EWidgetGeometryMode
Definition Enums.h:37197
EMaterialDomain
Definition Enums.h:6218
ERayTracingMode
Definition Enums.h:8739
EClusterUnionMethod
Definition Enums.h:28805
@ BoundsOverlapFilteredDelaunayTriangulation
@ MinimalSpanningSubsetDelaunayTriangulation
@ PointImplicitAugmentedWithMinimalDelaunay
EInstallBundleManagerInitState
Definition Enums.h:11118
EUIActionRepeatMode
Definition Enums.h:11648
ECrowdSimulationState
Definition Enums.h:39931
ESSAOType
Definition Enums.h:35227
EColorSpaceAndEOTF
Definition Enums.h:10484
ETransactionObjectChangeCreatedBy
Definition Enums.h:22640
ERayTracingSceneLayer
Definition Enums.h:13362
EReportNewBugStatus
Definition Enums.h:17875
EARFaceTransformMixing
Definition Enums.h:36226
EPCGSplineSamplingFill
Definition Enums.h:21196
ETextureMipValueMode
Definition Enums.h:9201
EGroomOverrideType
Definition Enums.h:18374
KF_CATEGORY
Definition Enums.h:2639
ETemplateSectionPropertyScaleType
Definition Enums.h:29512
EVertexInputStreamType
Definition Enums.h:7616
EOpenColorIOTransformAlpha
Definition Enums.h:21879
ERigVMSimPointIntegrateType
Definition Enums.h:23201
ETransitionRequestOverwriteMode
Definition Enums.h:7481
OfflineFolderStatus
Definition Enums.h:701
FWPM_NET_FAILURE_CAUSE_
Definition Enums.h:3367
VIDEOENCODER_BITRATE_MODE
Definition Enums.h:37572
EAlignObjectsAlignToOptions
Definition Enums.h:24311
VkFrontFace
Definition Enums.h:2341
@ VK_FRONT_FACE_MAX_ENUM
@ VK_FRONT_FACE_COUNTER_CLOCKWISE
@ VK_FRONT_FACE_BEGIN_RANGE
@ VK_FRONT_FACE_END_RANGE
@ VK_FRONT_FACE_RANGE_SIZE
@ VK_FRONT_FACE_CLOCKWISE
EViewInteractionState
Definition Enums.h:13858
EOpenGLCurrentContext
Definition Enums.h:40440
SkeletalMeshOptimizationType
Definition Enums.h:4923
EReverbSendMethod
Definition Enums.h:19744
DMA_COMPLETION_STATUS
Definition Enums.h:3617
EMappingQueryIssue
Definition Enums.h:25454
EMediaVideoCaptureDeviceFilter
Definition Enums.h:39157
EWorldPartitionRuntimeCellVisualizeMode
Definition Enums.h:32354
EMakeMeshPivotLocation
Definition Enums.h:23378
EGeometryScriptBakeTypes
Definition Enums.h:17534
ESlabOverlapFlag
Definition Enums.h:40802
ENDISkelMesh_AreaWeightingMode
Definition Enums.h:8338
EHairCardsSimulationType
Definition Enums.h:21614
EHandshakeInstallState
Definition Enums.h:31113
EBulkDataFlags
Definition Enums.h:4565
@ BULKDATA_DuplicateNonOptionalPayload
@ BULKDATA_SerializeCompressedZLIB
@ BULKDATA_Force_NOT_InlinePayload
@ BULKDATA_ForceStreamPayload
@ BULKDATA_PayloadAtEndOfFile
@ BULKDATA_HasAsyncReadPending
@ BULKDATA_WorkspaceDomainPayload
@ BULKDATA_ForceSingleElementSerialization
@ BULKDATA_PayloadInSeperateFile
@ BULKDATA_SerializeCompressed
@ BULKDATA_DataIsMemoryMapped
@ BULKDATA_MemoryMappedPayload
@ BULKDATA_SerializeCompressedBitWindow
@ BULKDATA_ForceInlinePayload
@ BULKDATA_AlwaysAllowDiscard
ELibraryProgressState
Definition Enums.h:14518
ERPCDoSSeverityUpdate
Definition Enums.h:7873
dict_directive
Definition Enums.h:32883
EUnrealObjectInputNodeType
Definition Enums.h:23788
ESubmixSendMethod
Definition Enums.h:8895
EOptimusNodePinDirection
Definition Enums.h:25695
exr_attribute_type_t
Definition Enums.h:26641
EInertializationState
Definition Enums.h:36601
EDatasmithAreaLightActorShape
Definition Enums.h:24725
dtRegionPartitioning
Definition Enums.h:39265
VkQueueGlobalPriorityEXT
Definition Enums.h:815
ERTAccelerationStructureBuildPriority
Definition Enums.h:7804
EGeometryScriptRemeshEdgeConstraintType
Definition Enums.h:18499
EMeshBooleanOperationEnum
Definition Enums.h:25114
EHoudiniRuntimeSettingsSessionType
Definition Enums.h:19001
EFaceComponentDebugMode
Definition Enums.h:36219
VkCullModeFlagBits
Definition Enums.h:39485
ETextOverflowPolicy
Definition Enums.h:11704
EProcMeshSliceCapOption
Definition Enums.h:26542
ERuntimeVirtualTextureAttributeType
Definition Enums.h:20436
UStreamlineFeature
Definition Enums.h:31753
ovrLeaderboardStartAt_
Definition Enums.h:17321
@ ovrLeaderboard_StartAtCenteredOnViewerOrTop
_MM_PAGE_PRIORITY
Definition Enums.h:3489
EDecalDBufferMaskTechnique
Definition Enums.h:35262
dtNodeFlags
Definition Enums.h:40816
EEasingFuncType
Definition Enums.h:20389
ERuntimeVirtualTextureTextureAddressMode
Definition Enums.h:37717
EDynamicMeshSculptBrushType
Definition Enums.h:31415
EControlRigModifyBoneMode
Definition Enums.h:23160
FWPS_CALLOUT_NOTIFY_TYPE_
Definition Enums.h:3474
EFieldCommandResultType
Definition Enums.h:21138
ELoudnessCurveTypeEnum
Definition Enums.h:32741
XXH_INLINE_XXH_errorcode
Definition Enums.h:33897
ECollisionGeometryMode
Definition Enums.h:26387
EBlueprintPinStyleType
Definition Enums.h:21392
IPSEC_TOKEN_TYPE_
Definition Enums.h:3425
EDLSSQualityMode
Definition Enums.h:21379
EAITaskPriority
Definition Enums.h:41127
EMaterialTranslucencyPass
Definition Enums.h:17082
EDecalRenderStage
Definition Enums.h:35234
ERangeCompressionMode
Definition Enums.h:4829
EMediaOverlaySampleType
Definition Enums.h:37901
EStrataTileType
Definition Enums.h:35068
@ EOpaqueRoughRefractionSSSWithout
EWorldContentState
Definition Enums.h:39979
ELightShaftTechnique
Definition Enums.h:36080
EWarpingDirectionSource
Definition Enums.h:24532
EFieldResolutionType
Definition Enums.h:21145
ESelectedObjectsModificationType
Definition Enums.h:18574
EMaterialExposedTextureProperty
Definition Enums.h:32482
EFindFirstObjectOptions
Definition Enums.h:7913
EUsdRootMotionHandling
Definition Enums.h:19830
VkStencilFaceFlagBits
Definition Enums.h:1868
ESplitNormalMethod
Definition Enums.h:20618
ViewSubresourceSubsetFlags
Definition Enums.h:38954
EBakeVertexChannel
Definition Enums.h:24391
EEOSNetDriverRole
Definition Enums.h:16929
@ ClientConnectedToDedicatedServer
ESubsurfaceMode
Definition Enums.h:37101
DIT_HITTESTATTRIBUTES
Definition Enums.h:3823
@ DIT_HITTESTATTRIBUTES_MOUSEWHEELISINCREASING
@ DIT_HITTESTATTRIBUTES_MOUSEWHEELISHORIZONTAL
EGroomViewMode
Definition Enums.h:18132
ENetworkSmoothingMode
Definition Enums.h:7496
EGLTFJsonCameraType
Definition Enums.h:28363
EInstallBundleSourceUpdateBundleInfoResult
Definition Enums.h:40430
EParticleAllocationMode
Definition Enums.h:10922
ERuntimeGenerationType
Definition Enums.h:28606
EOITSortingType
Definition Enums.h:34144
ERasterizeGeomTimeSlicedState
Definition Enums.h:32066
EPCGGraphParameterEvent
Definition Enums.h:22554
EGizmoElementViewDependentType
Definition Enums.h:39032
ECopyResult
Definition Enums.h:13954
EGeometryScriptContainmentOutcomePins
Definition Enums.h:14593
EGeometryScriptPrimitiveOriginMode
Definition Enums.h:18355
ECoreRedirectMatchFlags
Definition Enums.h:11072
ETryParseTagResult
Definition Enums.h:38282
EVRScreenshotType
Definition Enums.h:15507
@ k_EVRScreenshotType_StereoPanorama
@ k_EVRScreenshotType_MonoPanorama
EParticleSystemOcclusionBoundsMethod
Definition Enums.h:10915
CurveInterpolationType
Definition Enums.h:29392
ECDOArrayModificationType
Definition Enums.h:30014
EStructSerializerMapPolicies
Definition Enums.h:22081
RO_INIT_TYPE
Definition Enums.h:26505
@ RO_INIT_SINGLETHREADED
EWarpPointAnimProvider
Definition Enums.h:17105
EGCTokenType
Definition Enums.h:18559
ERandomVelocityGenerationTypeEnum
Definition Enums.h:25882
@ ChaosNiagara_RandomVelocityGenerationType_RandomDistributionWithStreamers
ECFCoreApiStatus
Definition Enums.h:14398
EGamepadTextInputLineMode
Definition Enums.h:15343
EGPUSkinCacheEntryMode
Definition Enums.h:37153
EGroomCacheImportType
Definition Enums.h:25563
ELightMapVirtualTextureType
Definition Enums.h:38251
EBoneControlSpace
Definition Enums.h:13576
EResourceType
Definition Enums.h:34461
EInstallBundleInstallState
Definition Enums.h:11026
EAnimExecutionContextConversionResult
Definition Enums.h:36313
EPipelineCacheFileFormatVersions
Definition Enums.h:35144
ESteamInputType
Definition Enums.h:15913
@ k_ESteamInputType_MobileTouch
@ k_ESteamInputType_GenericGamepad
@ k_ESteamInputType_SteamDeckController
@ k_ESteamInputType_AppleMFiController
@ k_ESteamInputType_PS5Controller
@ k_ESteamInputType_SteamController
@ k_ESteamInputType_SwitchJoyConPair
@ k_ESteamInputType_MaximumPossibleValue
@ k_ESteamInputType_SwitchJoyConSingle
@ k_ESteamInputType_AndroidController
@ k_ESteamInputType_XBox360Controller
@ k_ESteamInputType_PS4Controller
@ k_ESteamInputType_XBoxOneController
@ k_ESteamInputType_SwitchProController
@ k_ESteamInputType_PS3Controller
ERepLayoutResult
Definition Enums.h:10420
_WHEA_ERROR_PACKET_DATA_FORMAT
Definition Enums.h:3625
EChaosSolverTickMode
Definition Enums.h:8674
EObjectStateTypeEnum
Definition Enums.h:21886
ServerSortingTypeType
Definition Enums.h:32182
EWindowTitleBarMode
Definition Enums.h:23478
EMobileHDRMode
Definition Enums.h:24428
EStreamingVolumeUsage
Definition Enums.h:28416
EDefaultBufferType
Definition Enums.h:13621
VkChromaLocation
Definition Enums.h:2240
@ VK_CHROMA_LOCATION_MIDPOINT_KHR
@ VK_CHROMA_LOCATION_COSITED_EVEN_KHR
@ VK_CHROMA_LOCATION_BEGIN_RANGE
@ VK_CHROMA_LOCATION_COSITED_EVEN
EAutomationComparisonToleranceLevel
Definition Enums.h:9193
VkValidationCheckEXT
Definition Enums.h:2015
EPropertyType
Definition Enums.h:11169
@ CPT_FLargeWorldCoordinatesReal
EARFrameSyncMode
Definition Enums.h:36491
ETargetDeviceTypes
Definition Enums.h:13112
EInterpToBehaviourType
Definition Enums.h:38755
mi_collect_e
Definition Enums.h:33116
EScreenPhysicalAccuracy
Definition Enums.h:7609
VkSystemAllocationScope
Definition Enums.h:1331
EClearReplacementResourceType
Definition Enums.h:36033
_PhotoMode
Definition Enums.h:3758
@ PhotoMode_PhotoSequence
@ PhotoMode_Undefined
@ PhotoMode_AdvancedPhoto
@ PhotoMode_VariablePhotoSequence
ETextureColorSpace
Definition Enums.h:9995
EWarpingVectorMode
Definition Enums.h:8010
ELandscapeLayerBlendType
Definition Enums.h:37377
EColorPickerChannels
Definition Enums.h:34198
EWeightScheme
Definition Enums.h:31316
EntryType
Definition Enums.h:33339
@ TYPE_SHEWHOWAITS
EAudioVolumeLocationState
Definition Enums.h:11710
EReadReplayInfoFlags
Definition Enums.h:39692
EOptimusGroomExecDomain
Definition Enums.h:25556
ELandscapeImportAlphamapType
Definition Enums.h:38507
_NvAPI_Status
Definition Enums.h:40492
@ NVAPI_UNSUPPORTED_CONFIG_NON_HDCP_HMD
@ NVAPI_FIRMWARE_REVISION_NOT_SUPPORTED
@ NVAPI_MATCHING_DEVICE_NOT_FOUND
@ NVAPI_JIT_COMPILER_NOT_FOUND
@ NVAPI_INVALID_CONFIGURATION
@ NVAPI_DEFAULT_STEREO_PROFILE_DOES_NOT_EXIST
@ NVAPI_NVLINK_UNCORRECTABLE
@ NVAPI_STEREO_PARAMETER_OUT_OF_RANGE
@ NVAPI_OPENGL_CONTEXT_NOT_CURRENT
@ NVAPI_TIMING_NOT_SUPPORTED
@ NVAPI_STREAM_IS_OUT_OF_SYNC
@ NVAPI_DISPLAY_MUX_TRANSITION_FAILED
@ NVAPI_CLUSTER_ALREADY_EXISTS
@ NVAPI_INVALID_SYNC_TOPOLOGY
@ NVAPI_EXECUTABLE_ALREADY_IN_USE
@ NVAPI_UNKNOWN_UNDERSCAN_CONFIG
@ NVAPI_INVALID_DSC_OUTPUT_BPP
@ NVAPI_DPMST_DISPLAY_ID_EXPECTED
@ NVAPI_GPU_WORKSTATION_FEATURE_INCOMPLETE
@ NVAPI_EXPECTED_LOGICAL_GPU_HANDLE
@ NVAPI_CALLBACK_NOT_FOUND
@ NVAPI_REQUEST_USER_TO_CLOSE_NON_MIGRATABLE_APPS
@ NVAPI_WAIT_FOR_HW_RESOURCE
@ NVAPI_IMPLICIT_SET_GPU_TOPOLOGY_CHANGE_NOT_ALLOWED
@ NVAPI_PRIV_SEC_VIOLATION
@ NVAPI_INVALID_USER_PRIVILEGE
@ NVAPI_PERSIST_DATA_NOT_FOUND
@ NVAPI_DISPLAYCONFIG_VALIDATION_FAILED
@ NVAPI_EXPECTED_COMPUTE_GPU_HANDLE
@ NVAPI_LICENSE_CALLER_AUTHENTICATION_FAILED
@ NVAPI_INVALID_COMBINATION
@ NVAPI_PCLK_LIMITATION_FAILED
@ NVAPI_EXPECTED_DISPLAY_HANDLE
@ NVAPI_SHARE_RESOURCE_RELOCATED
@ NVAPI_MAX_DISPLAY_LIMIT_REACHED
@ NVAPI_NVIDIA_DEVICE_NOT_FOUND
@ NVAPI_INSTRUMENTATION_DISABLED
@ NVAPI_FAILED_TO_LOAD_FROM_DRIVER_STORE
@ NVAPI_NO_CONNECTOR_FOUND
@ NVAPI_INVALID_HYBRID_MODE
@ NVAPI_EXPECTED_UNATTACHED_DISPLAY_HANDLE
@ NVAPI_INVALID_PERF_LEVEL
@ NVAPI_STEREO_HANDSHAKE_NOT_DONE
@ NVAPI_ECID_SIGN_ALGO_UNSUPPORTED
@ NVAPI_EXPECTED_DIGITAL_FLAT_PANEL
@ NVAPI_DEVICE_SWITCHING_NOT_ALLOWED
@ NVAPI_STEREO_NOT_TURNED_ON
@ NVAPI_INVALID_DSC_SLICECOUNT
@ NVAPI_SETTING_SIZE_TOO_LARGE
@ NVAPI_ECID_KEY_VERIFICATION_FAILED
@ NVAPI_FIRMWARE_OUT_OF_DATE
@ NVAPI_TIMEOUT_RECONFIGURING_GPU_TOPO
@ NVAPI_INCOMPATIBLE_STRUCT_VERSION
@ NVAPI_ADVANCED_DISPLAY_TOPOLOGY_REQUIRED
@ NVAPI_INVALID_DISPLAY_ID
@ NVAPI_API_NOT_INITIALIZED
@ NVAPI_PROFILE_NAME_IN_USE
@ NVAPI_D3D11_LIBRARY_NOT_FOUND
@ NVAPI_TOO_MANY_SETTINGS_IN_PROFILE
@ NVAPI_ERROR_DRIVER_RELOAD_REQUIRED
@ NVAPI_CALLBACK_ALREADY_REGISTERED
@ NVAPI_STEREO_INVALID_DEVICE_INTERFACE
@ NVAPI_INVALID_DSC_VERSION
@ NVAPI_EXPECTED_ANALOG_DISPLAY
@ NVAPI_NV_PERSIST_FILE_NOT_FOUND
@ NVAPI_EXPECTED_TV_DISPLAY
@ NVAPI_ERROR_DRIVER_RELOAD_IN_PROGRESS
@ NVAPI_DEFAULT_STEREO_PROFILE_IS_NOT_DEFINED
@ NVAPI_STEREO_VERSION_MISMATCH
@ NVAPI_UNREGISTERED_RESOURCE
@ NVAPI_STEREO_REGISTRY_PROFILE_TYPE_NOT_SUPPORTED
@ NVAPI_STEREO_INIT_ACTIVATION_NOT_DONE
@ NVAPI_INSUFFICIENT_BUFFER
@ NVAPI_REQUIRE_FURTHER_HDCP_ACTION
@ NVAPI_MODE_CHANGE_FAILED
@ NVAPI_STEREO_FRUSTUM_ADJUST_MODE_NOT_SUPPORTED
@ NVAPI_SYSWOW64_NOT_SUPPORTED
@ NVAPI_NVIDIA_DISPLAY_NOT_FOUND
@ NVAPI_STEREO_NOT_INITIALIZED
@ NVAPI_D3D10_1_LIBRARY_NOT_FOUND
@ NVAPI_INVALID_DIRECT_MODE_DISPLAY
@ NVAPI_D3D_DEVICE_NOT_REGISTERED
@ NVAPI_STEREO_REGISTRY_ACCESS_FAILED
@ NVAPI_INCOMPATIBLE_AUDIO_DRIVER
@ NVAPI_HANDLE_INVALIDATED
@ NVAPI_PROFILE_NAME_EMPTY
@ NVAPI_D3D_CONTEXT_NOT_FOUND
@ NVAPI_TOO_MANY_UNIQUE_STATE_OBJECTS
@ NVAPI_EXPECTED_NON_PRIMARY_DISPLAY_HANDLE
@ NVAPI_EXECUTABLE_PATH_IS_AMBIGUOUS
@ NVAPI_TESTING_CLOCKS_NOT_SUPPORTED
@ NVAPI_STEREO_REGISTRY_VALUE_NOT_SUPPORTED
@ NVAPI_ARGUMENT_EXCEED_MAX_SIZE
@ NVAPI_ILLEGAL_INSTRUCTION
@ NVAPI_STEREO_NOT_ENABLED
@ NVAPI_NO_ACTIVE_SLI_TOPOLOGY
@ NVAPI_REQUEST_USER_TO_DISABLE_DWM
@ NVAPI_RESOURCE_NOT_ACQUIRED
@ NVAPI_SYNC_MASTER_NOT_FOUND
@ NVAPI_HDCP_ENCRYPTION_FAILED
@ NVAPI_MIXED_TARGET_TYPES
@ NVAPI_EXECUTABLE_NOT_FOUND
@ NVAPI_EXPECTED_PHYSICAL_GPU_HANDLE
@ NVAPI_FUNCTION_NOT_FOUND
@ NVAPI_SLI_RENDERING_MODE_NOTALLOWED
@ NVAPI_EXPECTED_TV_DISPLAY_ON_DCONNECTOR
EClampMode
Definition Enums.h:38048
UCharProperty
Definition Enums.h:30051
@ UCHAR_OTHER_PROPERTY_LIMIT
@ UCHAR_PATTERN_WHITE_SPACE
@ UCHAR_SIMPLE_CASE_FOLDING
@ UCHAR_PREPENDED_CONCATENATION_MARK
@ UCHAR_TERMINAL_PUNCTUATION
@ UCHAR_REGIONAL_INDICATOR
@ UCHAR_LEAD_CANONICAL_COMBINING_CLASS
@ UCHAR_VERTICAL_ORIENTATION
@ UCHAR_IDS_BINARY_OPERATOR
@ UCHAR_CANONICAL_COMBINING_CLASS
@ UCHAR_CHANGES_WHEN_NFKC_CASEFOLDED
@ UCHAR_CHANGES_WHEN_UPPERCASED
@ UCHAR_LOGICAL_ORDER_EXCEPTION
@ UCHAR_BIDI_PAIRED_BRACKET_TYPE
@ UCHAR_CHANGES_WHEN_TITLECASED
@ UCHAR_CHANGES_WHEN_LOWERCASED
@ UCHAR_INDIC_SYLLABIC_CATEGORY
@ UCHAR_EMOJI_MODIFIER_BASE
@ UCHAR_INDIC_POSITIONAL_CATEGORY
@ UCHAR_SIMPLE_UPPERCASE_MAPPING
@ UCHAR_GRAPHEME_CLUSTER_BREAK
@ UCHAR_DECOMPOSITION_TYPE
@ UCHAR_CHANGES_WHEN_CASEMAPPED
@ UCHAR_TRAIL_CANONICAL_COMBINING_CLASS
@ UCHAR_IDS_TRINARY_OPERATOR
@ UCHAR_SIMPLE_TITLECASE_MAPPING
@ UCHAR_DEFAULT_IGNORABLE_CODE_POINT
@ UCHAR_CHANGES_WHEN_CASEFOLDED
@ UCHAR_GENERAL_CATEGORY_MASK
@ UCHAR_EMOJI_PRESENTATION
@ UCHAR_NONCHARACTER_CODE_POINT
@ UCHAR_OTHER_PROPERTY_START
@ UCHAR_EXTENDED_PICTOGRAPHIC
@ UCHAR_FULL_COMPOSITION_EXCLUSION
@ UCHAR_VARIATION_SELECTOR
@ UCHAR_BIDI_MIRRORING_GLYPH
@ UCHAR_HANGUL_SYLLABLE_TYPE
@ UCHAR_BIDI_PAIRED_BRACKET
@ UCHAR_SIMPLE_LOWERCASE_MAPPING
ERigVMCopyType
Definition Enums.h:18971
EStereoLayerShape
Definition Enums.h:38684
EGroomGeometryType
Definition Enums.h:18314
ESteamNetworkingSocketsDebugOutputType
Definition Enums.h:16565
dtTileFlags
Definition Enums.h:39272
ESkinCacheDefaultBehavior
Definition Enums.h:8070
EStandbyType
Definition Enums.h:33525
EBakeTextureBitDepth
Definition Enums.h:23472
EUGCMatchingUGCType
Definition Enums.h:15980
@ k_EUGCMatchingUGCType_GameManagedItems
@ k_EUGCMatchingUGCType_IntegratedGuides
@ k_EUGCMatchingUGCType_ControllerBindings
@ k_EUGCMatchingUGCType_Items_ReadyToUse
ETickableTickType
Definition Enums.h:8579
EShapeBodySetupHelper
Definition Enums.h:29399
ETraceTypeQuery
Definition Enums.h:7338
EMaterialExposedViewProperty
Definition Enums.h:32489
EActorIteratorFlags
Definition Enums.h:7947
IKEEXT_QM_SA_STATE_
Definition Enums.h:3084
VkValidationFeatureDisableEXT
Definition Enums.h:919
EMeshBoundaryConstraint
Definition Enums.h:24269
EMeshTrackerVertexColorMode
Definition Enums.h:37109
EPCGSettingsType
Definition Enums.h:22927
EHairResourceLoadingType
Definition Enums.h:18242
EReflectionsType
Definition Enums.h:8612
ETypedElementChildInclusionMethod
Definition Enums.h:23207
MDH_ReportType
Definition Enums.h:40744
@ MDH_PERIODIC_METRICS_REPORT
EIllegalRefReason
Definition Enums.h:32383
@ ReferenceFromOptionalToMissingGameExport
ENetMode
Definition Enums.h:6119
@ NM_DedicatedServer
@ NM_ListenServer
EUserDefinedStructureStatus
Definition Enums.h:9515
EDistributionVectorLockFlags
Definition Enums.h:28682
ESetResolutionMethod
Definition Enums.h:10586
VkResolveModeFlagBits
Definition Enums.h:27028
ESynthSlateSizeType
Definition Enums.h:29457
EHairStrandsResourcesType
Definition Enums.h:18255
EDisplaceMeshToolDisplaceType
Definition Enums.h:31344
ELocMetadataType
Definition Enums.h:11078
pffft_direction_t
Definition Enums.h:33285
VkBlendOp
Definition Enums.h:2526
@ VK_BLEND_OP_INVERT_RGB_EXT
@ VK_BLEND_OP_MINUS_EXT
@ VK_BLEND_OP_LIGHTEN_EXT
@ VK_BLEND_OP_MINUS_CLAMPED_EXT
@ VK_BLEND_OP_DST_OUT_EXT
@ VK_BLEND_OP_HSL_SATURATION_EXT
@ VK_BLEND_OP_DST_ATOP_EXT
@ VK_BLEND_OP_EXCLUSION_EXT
@ VK_BLEND_OP_PINLIGHT_EXT
@ VK_BLEND_OP_COLORDODGE_EXT
@ VK_BLEND_OP_DST_OVER_EXT
@ VK_BLEND_OP_HSL_LUMINOSITY_EXT
@ VK_BLEND_OP_PLUS_CLAMPED_EXT
@ VK_BLEND_OP_LINEARBURN_EXT
@ VK_BLEND_OP_HSL_COLOR_EXT
@ VK_BLEND_OP_SRC_EXT
@ VK_BLEND_OP_SRC_IN_EXT
@ VK_BLEND_OP_COLORBURN_EXT
@ VK_BLEND_OP_BLUE_EXT
@ VK_BLEND_OP_SUBTRACT
@ VK_BLEND_OP_RED_EXT
@ VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT
@ VK_BLEND_OP_DIFFERENCE_EXT
@ VK_BLEND_OP_DARKEN_EXT
@ VK_BLEND_OP_GREEN_EXT
@ VK_BLEND_OP_MAX_ENUM
@ VK_BLEND_OP_INVERT_EXT
@ VK_BLEND_OP_VIVIDLIGHT_EXT
@ VK_BLEND_OP_RANGE_SIZE
@ VK_BLEND_OP_SCREEN_EXT
@ VK_BLEND_OP_PLUS_DARKER_EXT
@ VK_BLEND_OP_XOR_EXT
@ VK_BLEND_OP_SRC_ATOP_EXT
@ VK_BLEND_OP_HARDLIGHT_EXT
@ VK_BLEND_OP_MULTIPLY_EXT
@ VK_BLEND_OP_HSL_HUE_EXT
@ VK_BLEND_OP_HARDMIX_EXT
@ VK_BLEND_OP_REVERSE_SUBTRACT
@ VK_BLEND_OP_END_RANGE
@ VK_BLEND_OP_ZERO_EXT
@ VK_BLEND_OP_DST_EXT
@ VK_BLEND_OP_LINEARLIGHT_EXT
@ VK_BLEND_OP_SRC_OUT_EXT
@ VK_BLEND_OP_BEGIN_RANGE
@ VK_BLEND_OP_INVERT_OVG_EXT
@ VK_BLEND_OP_SRC_OVER_EXT
@ VK_BLEND_OP_SOFTLIGHT_EXT
@ VK_BLEND_OP_LINEARDODGE_EXT
@ VK_BLEND_OP_CONTRAST_EXT
@ VK_BLEND_OP_OVERLAY_EXT
@ VK_BLEND_OP_DST_IN_EXT
@ VK_BLEND_OP_PLUS_EXT
EStructDeserializerMapPolicies
Definition Enums.h:22044
EScrollWhenFocusChanges
Definition Enums.h:29009
ECFCoreModLoaderType
Definition Enums.h:14275
FHairLUTType
Definition Enums.h:36819
@ HairLUTType_MeanEnergy
@ HairLUTType_DualScattering
EPatternToolSinglePlane
Definition Enums.h:24255
GFSDK_Aftermath_GpuCrashDumpFeatureFlags
Definition Enums.h:39411
EItemDropZone
Definition Enums.h:8088
EPDGWorkResultState
Definition Enums.h:19051
VkBufferUsageFlagBits
Definition Enums.h:27217
@ VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT
@ VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT
@ VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT
@ VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT
@ VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT
@ VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT
@ VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT
@ VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR
@ VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR
@ VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT
@ VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
@ VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
@ VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT
@ VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR
@ VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT
@ VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
ESceneCapturePrimitiveRenderMode
Definition Enums.h:28535
IPSEC_TRAFFIC_TYPE_
Definition Enums.h:3482
_MODE
Definition Enums.h:3265
@ MaximumMode
@ UserMode
@ KernelMode
TextureCompressionSettings
Definition Enums.h:5680
EDatasmithImportLightmapMin
Definition Enums.h:24642
ESteamIPv6ConnectivityProtocol
Definition Enums.h:15364
EBakeOpState
Definition Enums.h:24355
EGeoAnchorComponentDebugMode
Definition Enums.h:36292
UpdateFlags
Definition Enums.h:39201
@ DT_CROWD_OBSTACLE_AVOIDANCE
@ DT_CROWD_ANTICIPATE_TURNS
@ DT_CROWD_SLOWDOWN_AT_GOAL
@ DT_CROWD_OPTIMIZE_VIS
@ DT_CROWD_OPTIMIZE_TOPO
@ DT_CROWD_OPTIMIZE_VIS_MULTI
@ DT_CROWD_OFFSET_PATH
VkInternalAllocationType
Definition Enums.h:1364
EBuildPatchDataType
Definition Enums.h:40337
EVertexElementType
Definition Enums.h:4953
EGameplayDebuggerShape
Definition Enums.h:39786
VkImageUsageFlagBits
Definition Enums.h:27184
@ VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI
@ VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
@ VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM
@ VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
@ VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
@ VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
@ VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
@ VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
EObjectIteratorThreadSafetyOptions
Definition Enums.h:13925
EInputActionOrigin
Definition Enums.h:16086
@ k_EInputActionOrigin_PS5_Reserved20
@ k_EInputActionOrigin_SteamController_Gyro_Pitch
@ k_EInputActionOrigin_PS4_Reserved3
@ k_EInputActionOrigin_PS5_RightPad_DPadNorth
@ k_EInputActionOrigin_Switch_LeftStick_Move
@ k_EInputActionOrigin_SteamController_RightPad_DPadNorth
@ k_EInputActionOrigin_SteamDeck_Reserved1
@ k_EInputActionOrigin_XBox360_DPad_South
@ k_EInputActionOrigin_Switch_Reserved6
@ k_EInputActionOrigin_XBoxOne_LeftStick_Move
@ k_EInputActionOrigin_SteamController_Reserved6
@ k_EInputActionOrigin_PS4_Reserved1
@ k_EInputActionOrigin_PS4_LeftTrigger_Pull
@ k_EInputActionOrigin_XBox360_LeftStick_DPadSouth
@ k_EInputActionOrigin_PS4_Reserved6
@ k_EInputActionOrigin_SteamController_Reserved7
@ k_EInputActionOrigin_XBox360_LeftStick_Click
@ k_EInputActionOrigin_PS5_Reserved17
@ k_EInputActionOrigin_SteamDeck_Reserved6
@ k_EInputActionOrigin_XBox360_Reserved2
@ k_EInputActionOrigin_XBox360_Reserved10
@ k_EInputActionOrigin_XBoxOne_DPad_West
@ k_EInputActionOrigin_XBox360_LeftStick_DPadWest
@ k_EInputActionOrigin_PS4_Gyro_Move
@ k_EInputActionOrigin_XBox360_DPad_North
@ k_EInputActionOrigin_XBoxOne_RightBumper
@ k_EInputActionOrigin_XBoxOne_RightStick_Click
@ k_EInputActionOrigin_PS4_DPad_Move
@ k_EInputActionOrigin_PS4_LeftStick_DPadWest
@ k_EInputActionOrigin_SteamController_LeftStick_DPadEast
@ k_EInputActionOrigin_PS5_RightTrigger_Pull
@ k_EInputActionOrigin_PS4_LeftStick_DPadEast
@ k_EInputActionOrigin_PS4_RightPad_DPadNorth
@ k_EInputActionOrigin_PS4_DPad_North
@ k_EInputActionOrigin_PS4_DPad_East
@ k_EInputActionOrigin_XBox360_RightTrigger_Click
@ k_EInputActionOrigin_PS5_DPad_West
@ k_EInputActionOrigin_XBox360_Reserved3
@ k_EInputActionOrigin_PS4_DPad_West
@ k_EInputActionOrigin_PS5_DPad_South
@ k_EInputActionOrigin_SteamDeck_Reserved19
@ k_EInputActionOrigin_PS5_DPad_East
@ k_EInputActionOrigin_SteamController_LeftStick_DPadNorth
@ k_EInputActionOrigin_PS4_RightStick_DPadWest
@ k_EInputActionOrigin_XBox360_Reserved4
@ k_EInputActionOrigin_PS4_RightStick_Click
@ k_EInputActionOrigin_Switch_RightStick_DPadSouth
@ k_EInputActionOrigin_PS4_Gyro_Pitch
@ k_EInputActionOrigin_Switch_LeftStick_DPadWest
@ k_EInputActionOrigin_XBoxOne_Reserved8
@ k_EInputActionOrigin_Switch_LeftGyro_Roll
@ k_EInputActionOrigin_SteamDeck_L2_SoftPull
@ k_EInputActionOrigin_Switch_Reserved7
@ k_EInputActionOrigin_SteamController_RightTrigger_Click
@ k_EInputActionOrigin_PS5_LeftBumper
@ k_EInputActionOrigin_Switch_RightStick_DPadNorth
@ k_EInputActionOrigin_Switch_RightGyro_Pitch
@ k_EInputActionOrigin_PS4_Gyro_Roll
@ k_EInputActionOrigin_SteamDeck_Gyro_Yaw
@ k_EInputActionOrigin_Switch_LeftGyro_Yaw
@ k_EInputActionOrigin_XBoxOne_DPad_Move
@ k_EInputActionOrigin_PS5_Reserved19
@ k_EInputActionOrigin_PS4_Reserved10
@ k_EInputActionOrigin_PS5_RightPad_DPadEast
@ k_EInputActionOrigin_PS4_RightPad_DPadWest
@ k_EInputActionOrigin_SteamDeck_Reserved2
@ k_EInputActionOrigin_SteamDeck_RightPad_DPadEast
@ k_EInputActionOrigin_SteamDeck_Reserved10
@ k_EInputActionOrigin_XBoxOne_DPad_South
@ k_EInputActionOrigin_Switch_LeftTrigger_Click
@ k_EInputActionOrigin_XBox360_Reserved8
@ k_EInputActionOrigin_PS5_Gyro_Pitch
@ k_EInputActionOrigin_SteamDeck_LeftPad_Touch
@ k_EInputActionOrigin_XBox360_DPad_West
@ k_EInputActionOrigin_Switch_RightTrigger_Click
@ k_EInputActionOrigin_PS5_Reserved9
@ k_EInputActionOrigin_PS4_RightTrigger_Click
@ k_EInputActionOrigin_PS5_LeftPad_DPadNorth
@ k_EInputActionOrigin_XBoxOne_LeftBumper
@ k_EInputActionOrigin_SteamController_Start
@ k_EInputActionOrigin_SteamDeck_Reserved13
@ k_EInputActionOrigin_PS4_RightStick_Move
@ k_EInputActionOrigin_Switch_Capture
@ k_EInputActionOrigin_Switch_LeftStick_Click
@ k_EInputActionOrigin_SteamController_Reserved0
@ k_EInputActionOrigin_Switch_ProGyro_Pitch
@ k_EInputActionOrigin_PS5_LeftTrigger_Pull
@ k_EInputActionOrigin_PS5_LeftPad_DPadWest
@ k_EInputActionOrigin_SteamDeck_LeftStick_Move
@ k_EInputActionOrigin_XBox360_LeftBumper
@ k_EInputActionOrigin_SteamDeck_RightPad_Swipe
@ k_EInputActionOrigin_Switch_LeftTrigger_Pull
@ k_EInputActionOrigin_PS5_RightPad_Click
@ k_EInputActionOrigin_SteamController_LeftStick_DPadSouth
@ k_EInputActionOrigin_Switch_ProGyro_Roll
@ k_EInputActionOrigin_SteamDeck_Reserved7
@ k_EInputActionOrigin_PS5_RightPad_DPadSouth
@ k_EInputActionOrigin_SteamDeck_Reserved8
@ k_EInputActionOrigin_XBoxOne_LeftStick_DPadEast
@ k_EInputActionOrigin_SteamDeck_RightStick_DPadSouth
@ k_EInputActionOrigin_PS5_Reserved2
@ k_EInputActionOrigin_Switch_LeftGrip_Upper
@ k_EInputActionOrigin_SteamDeck_Reserved16
@ k_EInputActionOrigin_XBoxOne_RightGrip_Upper
@ k_EInputActionOrigin_PS5_LeftPad_Swipe
@ k_EInputActionOrigin_Switch_Reserved10
@ k_EInputActionOrigin_SteamDeck_DPad_West
@ k_EInputActionOrigin_XBoxOne_Reserved9
@ k_EInputActionOrigin_PS4_RightPad_Touch
@ k_EInputActionOrigin_XBoxOne_RightGrip_Lower
@ k_EInputActionOrigin_Switch_ProGyro_Yaw
@ k_EInputActionOrigin_PS5_CenterPad_Click
@ k_EInputActionOrigin_Switch_Reserved19
@ k_EInputActionOrigin_SteamController_LeftPad_Swipe
@ k_EInputActionOrigin_SteamDeck_RightStick_DPadWest
@ k_EInputActionOrigin_PS4_CenterPad_Click
@ k_EInputActionOrigin_XBoxOne_RightStick_DPadWest
@ k_EInputActionOrigin_Switch_Reserved4
@ k_EInputActionOrigin_XBoxOne_LeftStick_DPadWest
@ k_EInputActionOrigin_MaximumPossibleValue
@ k_EInputActionOrigin_SteamController_RightPad_Swipe
@ k_EInputActionOrigin_PS5_RightStick_DPadEast
@ k_EInputActionOrigin_Switch_Reserved9
@ k_EInputActionOrigin_PS5_LeftStick_DPadSouth
@ k_EInputActionOrigin_SteamDeck_RightStick_Move
@ k_EInputActionOrigin_XBoxOne_RightStick_DPadEast
@ k_EInputActionOrigin_PS4_LeftStick_DPadNorth
@ k_EInputActionOrigin_SteamController_Reserved8
@ k_EInputActionOrigin_Switch_DPad_North
@ k_EInputActionOrigin_SteamController_RightBumper
@ k_EInputActionOrigin_PS5_Reserved14
@ k_EInputActionOrigin_XBox360_RightStick_Click
@ k_EInputActionOrigin_PS5_DPad_North
@ k_EInputActionOrigin_XBox360_Reserved6
@ k_EInputActionOrigin_Switch_LeftStick_DPadNorth
@ k_EInputActionOrigin_PS5_LeftPad_Touch
@ k_EInputActionOrigin_XBox360_LeftStick_DPadEast
@ k_EInputActionOrigin_PS5_LeftStick_Click
@ k_EInputActionOrigin_SteamController_Reserved1
@ k_EInputActionOrigin_SteamDeck_RightStick_DPadEast
@ k_EInputActionOrigin_PS4_LeftPad_DPadSouth
@ k_EInputActionOrigin_SteamDeck_LeftPad_Swipe
@ k_EInputActionOrigin_SteamDeck_LeftPad_DPadEast
@ k_EInputActionOrigin_PS4_Reserved8
@ k_EInputActionOrigin_PS4_Reserved9
@ k_EInputActionOrigin_SteamController_RightTrigger_Pull
@ k_EInputActionOrigin_SteamController_RightPad_DPadEast
@ k_EInputActionOrigin_Switch_Reserved2
@ k_EInputActionOrigin_PS4_Reserved7
@ k_EInputActionOrigin_PS5_RightStick_Click
@ k_EInputActionOrigin_SteamController_RightGrip
@ k_EInputActionOrigin_SteamController_Reserved2
@ k_EInputActionOrigin_SteamDeck_R2_SoftPull
@ k_EInputActionOrigin_PS5_CenterPad_Touch
@ k_EInputActionOrigin_SteamDeck_Menu
@ k_EInputActionOrigin_SteamDeck_RightPad_Click
@ k_EInputActionOrigin_Switch_Reserved16
@ k_EInputActionOrigin_PS5_RightStick_DPadSouth
@ k_EInputActionOrigin_SteamDeck_LeftStick_DPadSouth
@ k_EInputActionOrigin_PS5_LeftStick_DPadNorth
@ k_EInputActionOrigin_XBoxOne_LeftGrip_Lower
@ k_EInputActionOrigin_SteamController_Gyro_Move
@ k_EInputActionOrigin_PS5_LeftStick_DPadWest
@ k_EInputActionOrigin_XBox360_Reserved7
@ k_EInputActionOrigin_PS5_RightStick_DPadNorth
@ k_EInputActionOrigin_XBoxOne_LeftStick_DPadSouth
@ k_EInputActionOrigin_XBoxOne_DPad_North
@ k_EInputActionOrigin_PS4_LeftPad_DPadEast
@ k_EInputActionOrigin_XBoxOne_Reserved10
@ k_EInputActionOrigin_Switch_RightGyro_Roll
@ k_EInputActionOrigin_SteamController_B
@ k_EInputActionOrigin_PS4_Reserved5
@ k_EInputActionOrigin_SteamController_LeftTrigger_Pull
@ k_EInputActionOrigin_PS5_Reserved12
@ k_EInputActionOrigin_PS4_RightBumper
@ k_EInputActionOrigin_SteamDeck_LeftPad_Click
@ k_EInputActionOrigin_PS4_LeftPad_DPadWest
@ k_EInputActionOrigin_PS5_Reserved5
@ k_EInputActionOrigin_PS4_RightPad_Click
@ k_EInputActionOrigin_SteamController_Reserved3
@ k_EInputActionOrigin_XBox360_RightStick_DPadWest
@ k_EInputActionOrigin_Switch_LeftGrip_Lower
@ k_EInputActionOrigin_Switch_RightTrigger_Pull
@ k_EInputActionOrigin_SteamController_LeftPad_Touch
@ k_EInputActionOrigin_XBox360_Start
@ k_EInputActionOrigin_PS4_LeftTrigger_Click
@ k_EInputActionOrigin_PS5_RightPad_Swipe
@ k_EInputActionOrigin_Switch_RightGyro_Move
@ k_EInputActionOrigin_XBox360_RightTrigger_Pull
@ k_EInputActionOrigin_PS4_RightPad_DPadSouth
@ k_EInputActionOrigin_PS4_LeftStick_DPadSouth
@ k_EInputActionOrigin_PS5_Reserved13
@ k_EInputActionOrigin_XBox360_DPad_East
@ k_EInputActionOrigin_Switch_RightGrip_Upper
@ k_EInputActionOrigin_SteamDeck_Gyro_Move
@ k_EInputActionOrigin_XBoxOne_LeftGrip_Upper
@ k_EInputActionOrigin_PS4_CenterPad_Touch
@ k_EInputActionOrigin_SteamDeck_RightPad_DPadSouth
@ k_EInputActionOrigin_XBox360_RightStick_DPadNorth
@ k_EInputActionOrigin_PS5_RightPad_Touch
@ k_EInputActionOrigin_SteamDeck_RightPad_DPadWest
@ k_EInputActionOrigin_Switch_RightGyro_Yaw
@ k_EInputActionOrigin_Switch_ProGyro_Move
@ k_EInputActionOrigin_Switch_Reserved8
@ k_EInputActionOrigin_SteamDeck_Reserved4
@ k_EInputActionOrigin_PS4_CenterPad_Swipe
@ k_EInputActionOrigin_SteamController_LeftPad_DPadSouth
@ k_EInputActionOrigin_SteamController_Gyro_Roll
@ k_EInputActionOrigin_XBoxOne_RightTrigger_Pull
@ k_EInputActionOrigin_PS4_RightStick_DPadNorth
@ k_EInputActionOrigin_Switch_LeftGyro_Pitch
@ k_EInputActionOrigin_PS5_Reserved7
@ k_EInputActionOrigin_SteamDeck_Reserved11
@ k_EInputActionOrigin_SteamDeck_DPad_East
@ k_EInputActionOrigin_PS5_CenterPad_DPadWest
@ k_EInputActionOrigin_SteamController_RightPad_Touch
@ k_EInputActionOrigin_SteamDeck_DPad_North
@ k_EInputActionOrigin_PS5_Reserved10
@ k_EInputActionOrigin_Switch_DPad_Move
@ k_EInputActionOrigin_PS5_RightBumper
@ k_EInputActionOrigin_PS4_LeftPad_DPadNorth
@ k_EInputActionOrigin_PS4_LeftBumper
@ k_EInputActionOrigin_SteamController_LeftStick_DPadWest
@ k_EInputActionOrigin_Switch_LeftStick_DPadSouth
@ k_EInputActionOrigin_SteamDeck_Gyro_Roll
@ k_EInputActionOrigin_PS5_Reserved6
@ k_EInputActionOrigin_SteamController_RightPad_Click
@ k_EInputActionOrigin_XBoxOne_LeftTrigger_Click
@ k_EInputActionOrigin_PS4_RightPad_DPadEast
@ k_EInputActionOrigin_PS5_RightStick_DPadWest
@ k_EInputActionOrigin_PS5_LeftStick_Move
@ k_EInputActionOrigin_SteamDeck_RightStick_Touch
@ k_EInputActionOrigin_SteamController_Reserved10
@ k_EInputActionOrigin_PS4_RightStick_DPadSouth
@ k_EInputActionOrigin_XBox360_Reserved9
@ k_EInputActionOrigin_SteamController_LeftBumper
@ k_EInputActionOrigin_XBoxOne_LeftTrigger_Pull
@ k_EInputActionOrigin_XBoxOne_LeftStick_Click
@ k_EInputActionOrigin_XBoxOne_RightTrigger_Click
@ k_EInputActionOrigin_SteamController_A
@ k_EInputActionOrigin_SteamDeck_DPad_South
@ k_EInputActionOrigin_SteamController_Gyro_Yaw
@ k_EInputActionOrigin_XBox360_DPad_Move
@ k_EInputActionOrigin_PS5_LeftPad_DPadEast
@ k_EInputActionOrigin_PS5_Reserved4
@ k_EInputActionOrigin_Switch_Reserved1
@ k_EInputActionOrigin_XBoxOne_RightStick_DPadSouth
@ k_EInputActionOrigin_Switch_Reserved17
@ k_EInputActionOrigin_SteamDeck_Gyro_Pitch
@ k_EInputActionOrigin_SteamDeck_Reserved3
@ k_EInputActionOrigin_Switch_Reserved18
@ k_EInputActionOrigin_Switch_Reserved20
@ k_EInputActionOrigin_Switch_RightStick_DPadWest
@ k_EInputActionOrigin_XBox360_LeftTrigger_Pull
@ k_EInputActionOrigin_Switch_RightStick_Move
@ k_EInputActionOrigin_PS5_LeftStick_DPadEast
@ k_EInputActionOrigin_XBoxOne_LeftStick_DPadNorth
@ k_EInputActionOrigin_SteamDeck_Reserved17
@ k_EInputActionOrigin_PS4_Reserved2
@ k_EInputActionOrigin_Switch_RightBumper
@ k_EInputActionOrigin_PS5_RightStick_Move
@ k_EInputActionOrigin_SteamController_LeftPad_DPadWest
@ k_EInputActionOrigin_PS4_LeftStick_Move
@ k_EInputActionOrigin_SteamDeck_LeftPad_DPadNorth
@ k_EInputActionOrigin_PS5_RightPad_DPadWest
@ k_EInputActionOrigin_PS5_LeftPad_DPadSouth
@ k_EInputActionOrigin_SteamDeck_Reserved12
@ k_EInputActionOrigin_XBox360_Reserved1
@ k_EInputActionOrigin_SteamDeck_LeftStick_DPadNorth
@ k_EInputActionOrigin_SteamDeck_Reserved20
@ k_EInputActionOrigin_SteamController_Back
@ k_EInputActionOrigin_PS5_LeftTrigger_Click
@ k_EInputActionOrigin_Switch_RightStick_Click
@ k_EInputActionOrigin_PS4_RightTrigger_Pull
@ k_EInputActionOrigin_XBoxOne_RightStick_Move
@ k_EInputActionOrigin_SteamController_Reserved5
@ k_EInputActionOrigin_Switch_Reserved13
@ k_EInputActionOrigin_XBoxOne_Reserved6
@ k_EInputActionOrigin_PS5_Reserved8
@ k_EInputActionOrigin_SteamDeck_Reserved5
@ k_EInputActionOrigin_PS5_Reserved15
@ k_EInputActionOrigin_XBox360_RightStick_DPadEast
@ k_EInputActionOrigin_XBox360_RightStick_Move
@ k_EInputActionOrigin_SteamController_LeftGrip
@ k_EInputActionOrigin_SteamController_LeftPad_DPadEast
@ k_EInputActionOrigin_PS5_Reserved3
@ k_EInputActionOrigin_PS4_LeftPad_Click
@ k_EInputActionOrigin_Switch_Reserved5
@ k_EInputActionOrigin_SteamDeck_DPad_Move
@ k_EInputActionOrigin_Switch_Reserved3
@ k_EInputActionOrigin_SteamController_RightPad_DPadSouth
@ k_EInputActionOrigin_Switch_RightGrip_Lower
@ k_EInputActionOrigin_PS4_CenterPad_DPadSouth
@ k_EInputActionOrigin_PS5_Gyro_Move
@ k_EInputActionOrigin_PS5_RightTrigger_Click
@ k_EInputActionOrigin_SteamDeck_Reserved18
@ k_EInputActionOrigin_SteamController_Reserved4
@ k_EInputActionOrigin_Switch_Reserved14
@ k_EInputActionOrigin_PS5_CenterPad_DPadEast
@ k_EInputActionOrigin_SteamDeck_Reserved15
@ k_EInputActionOrigin_PS4_LeftPad_Swipe
@ k_EInputActionOrigin_Switch_Reserved12
@ k_EInputActionOrigin_SteamController_LeftStick_Move
@ k_EInputActionOrigin_PS5_LeftPad_Click
@ k_EInputActionOrigin_SteamDeck_RightPad_DPadNorth
@ k_EInputActionOrigin_Switch_RightStick_DPadEast
@ k_EInputActionOrigin_SteamController_LeftPad_DPadNorth
@ k_EInputActionOrigin_PS4_LeftPad_Touch
@ k_EInputActionOrigin_Switch_Reserved11
@ k_EInputActionOrigin_SteamController_LeftPad_Click
@ k_EInputActionOrigin_SteamController_X
@ k_EInputActionOrigin_Switch_DPad_South
@ k_EInputActionOrigin_SteamDeck_LeftPad_DPadSouth
@ k_EInputActionOrigin_SteamDeck_RightPad_Touch
@ k_EInputActionOrigin_SteamDeck_LeftStick_DPadEast
@ k_EInputActionOrigin_PS4_DPad_South
@ k_EInputActionOrigin_XBoxOne_DPad_East
@ k_EInputActionOrigin_PS5_CenterPad_Swipe
@ k_EInputActionOrigin_XBoxOne_RightStick_DPadNorth
@ k_EInputActionOrigin_Switch_Reserved15
@ k_EInputActionOrigin_XBoxOne_Share
@ k_EInputActionOrigin_XBox360_RightStick_DPadSouth
@ k_EInputActionOrigin_SteamController_Reserved9
@ k_EInputActionOrigin_SteamController_LeftTrigger_Click
@ k_EInputActionOrigin_XBox360_LeftStick_Move
@ k_EInputActionOrigin_PS4_CenterPad_DPadNorth
@ k_EInputActionOrigin_XBox360_RightBumper
@ k_EInputActionOrigin_SteamController_Y
@ k_EInputActionOrigin_PS4_CenterPad_DPadWest
@ k_EInputActionOrigin_Switch_LeftGyro_Move
@ k_EInputActionOrigin_PS5_Reserved11
@ k_EInputActionOrigin_PS4_RightStick_DPadEast
@ k_EInputActionOrigin_PS5_Reserved1
@ k_EInputActionOrigin_PS5_Reserved16
@ k_EInputActionOrigin_SteamDeck_Reserved14
@ k_EInputActionOrigin_PS5_CenterPad_DPadSouth
@ k_EInputActionOrigin_Switch_DPad_West
@ k_EInputActionOrigin_XBox360_LeftTrigger_Click
@ k_EInputActionOrigin_SteamDeck_Reserved9
@ k_EInputActionOrigin_XBox360_LeftStick_DPadNorth
@ k_EInputActionOrigin_SteamDeck_RightStick_DPadNorth
@ k_EInputActionOrigin_SteamController_LeftStick_Click
@ k_EInputActionOrigin_SteamDeck_LeftStick_Touch
@ k_EInputActionOrigin_Switch_LeftBumper
@ k_EInputActionOrigin_PS5_DPad_Move
@ k_EInputActionOrigin_PS4_RightPad_Swipe
@ k_EInputActionOrigin_PS5_CenterPad_DPadNorth
@ k_EInputActionOrigin_Switch_DPad_East
@ k_EInputActionOrigin_PS4_LeftStick_Click
@ k_EInputActionOrigin_PS4_Reserved4
@ k_EInputActionOrigin_XBoxOne_Reserved7
@ k_EInputActionOrigin_SteamDeck_LeftStick_DPadWest
@ k_EInputActionOrigin_Switch_LeftStick_DPadEast
@ k_EInputActionOrigin_SteamController_RightPad_DPadWest
@ k_EInputActionOrigin_SteamDeck_View
@ k_EInputActionOrigin_PS5_Gyro_Roll
@ k_EInputActionOrigin_PS5_Reserved18
@ k_EInputActionOrigin_SteamDeck_LeftPad_DPadWest
@ k_EInputActionOrigin_XBox360_Reserved5
@ k_EInputActionOrigin_PS4_CenterPad_DPadEast
earlyEnd_directive
Definition Enums.h:32877
ESpatialDenoiserType
Definition Enums.h:37070
ENavigationGenesis
Definition Enums.h:10640
EHierarchicalSimplificationMethod
Definition Enums.h:14543
EMovieSceneChannelProxyType
Definition Enums.h:8425
EDatasmithImportLightmapMax
Definition Enums.h:24652
VkRayTracingShaderGroupTypeNV
Definition Enums.h:1973
@ VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV
EVisibilityTrackAction
Definition Enums.h:37975
EStereoscopicEye
Definition Enums.h:8101
EOutputCanBeNullptr
Definition Enums.h:19608
duDebugDrawPrimitives
Definition Enums.h:39277
EGenerateMipsPass
Definition Enums.h:14136
EGCReferenceType
Definition Enums.h:6294
@ GCRT_ArrayAddFieldPathReferencedObject
@ GCRT_AddStructReferencedObjects
@ GCRT_AddFieldPathReferencedObject
ovrKeyValuePairType_
Definition Enums.h:17358
EInternal
Definition Enums.h:4084
@ EC_InternalUseOnlyConstructor
SPATIAL_INPUT_ACTIVATION_POLICY
Definition Enums.h:3922
EAdManagerDelegate
Definition Enums.h:38613
EOffsetRootBoneMode
Definition Enums.h:7849
EDataLayerState
Definition Enums.h:32367
ETickingGroup
Definition Enums.h:8266
ESectionEvaluationFlags
Definition Enums.h:8530
ECrashTrigger
Definition Enums.h:24848
EAudioStreamingState
Definition Enums.h:40179
EPostSequentialRPCType
Definition Enums.h:7894
UDataFileAccess
Definition Enums.h:33655
VkCommandBufferLevel
Definition Enums.h:827
EWidgetUpdateFlags
Definition Enums.h:12747
EChaosBreakingSortMethod
Definition Enums.h:37310
ENDILandscape_SourceMode
Definition Enums.h:14143
EClothLODBiasMode
Definition Enums.h:19570
EGameplayTaskEvent
Definition Enums.h:33519
EMeshApproximationBaseCappingType
Definition Enums.h:8806
EEditMeshPolygonsToolActions
Definition Enums.h:23610
ECameraAnimationEasingType
Definition Enums.h:28103
EMaturityChildType
Definition Enums.h:38809
NSVGfillRule
Definition Enums.h:34387
EDatasmithImportActorPolicy
Definition Enums.h:24697
ERayTracingViewMaskMode
Definition Enums.h:37055
EGroomBindingMeshType
Definition Enums.h:22512
EInstallBundleResult
Definition Enums.h:11095
ERichCurveInterpMode
Definition Enums.h:4732
EGPUProfileSortMode
Definition Enums.h:35135
EStructSerializerNullValuePolicies
Definition Enums.h:22068
EGizmoElementState
Definition Enums.h:39017
EMediaTextureVisibleMipsTiles
Definition Enums.h:31281
ECameraAnimationPlaySpace
Definition Enums.h:28115
EMemZeroed
Definition Enums.h:18215
ENGXDLSSDenoiserMode
Definition Enums.h:21398
ControlDirection
Definition Enums.h:29740
ERayTracingInstanceFlags
Definition Enums.h:11619
mi_memory_order_e
Definition Enums.h:33163
PCGDistanceShape
Definition Enums.h:20756
ESoundType
Definition Enums.h:8317
VkIndirectCommandsTokenTypeNVX
Definition Enums.h:2209
EOccludedAction
Definition Enums.h:26568
AnimPhysTwistAxis
Definition Enums.h:36339
ESkeletalMeshAsyncProperties
Definition Enums.h:13969
EPCGMetadataFilterMode
Definition Enums.h:20639
EKelvinletBrushMode
Definition Enums.h:24292
EMotionBlurVelocityScatterPass
Definition Enums.h:38419
EHairStrandsBookmark
Definition Enums.h:20184
VkBuildAccelerationStructureModeKHR
Definition Enums.h:39494
EAimMode
Definition Enums.h:20787
@ OrientToTarget
EVolumetricCloudTracingMaxDistanceMode
Definition Enums.h:37261
FWPM_APPC_NETWORK_CAPABILITY_TYPE_
Definition Enums.h:2961
IKEEXT_CERT_POLICY_PROTOCOL_TYPE_
Definition Enums.h:2906
ELightMapPaddingType
Definition Enums.h:22093
VkConservativeRasterizationModeEXT
Definition Enums.h:1857
EDrawPolygonDrawMode
Definition Enums.h:23580
EDatasmithImportScene
Definition Enums.h:24663
EPCGPointProperties
Definition Enums.h:20531
ECameraShakePlaySpace
Definition Enums.h:5981
EFBIKBoneLimitType
Definition Enums.h:25939
EGeometryScriptMathWarpType
Definition Enums.h:18108
ESocketBSDParam
Definition Enums.h:33035
VkDisplayEventTypeEXT
Definition Enums.h:1201
@ VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
ELiveLinkTimecodeProviderEvaluationType
Definition Enums.h:24862
EMessageBusNotification
Definition Enums.h:13016
EAutoExposureMethod
Definition Enums.h:13783
EShadowProjectionVertexShaderFlags
Definition Enums.h:35166
EOS_UI_EKeyCombination
Definition Enums.h:23861
EHairStrandsAllocationType
Definition Enums.h:18236
EGBufferChecker
Definition Enums.h:5537
ETextureDownscaleOptions
Definition Enums.h:12710
EParticleCollisionShaderMode
Definition Enums.h:40303
EPointOnCircleSpacingMethod
Definition Enums.h:41237
EOptimusBufferWriteType
Definition Enums.h:25988
EMeshSelectionToolActions
Definition Enums.h:26240
EMeshVertexSculptBrushType
Definition Enums.h:26316
EPrimitiveIdMode
Definition Enums.h:7019
@ PrimID_DynamicPrimitiveShaderData
EMouseCaptureMode
Definition Enums.h:7775
@ CapturePermanently_IncludingInitialMouseDown
EDeferredMaterialMode
Definition Enums.h:36210
EHoudiniOutputType
Definition Enums.h:21258
ELocationYToSpawnEnum
Definition Enums.h:25855
VkSharingMode
Definition Enums.h:2074
@ VK_SHARING_MODE_MAX_ENUM
@ VK_SHARING_MODE_CONCURRENT
@ VK_SHARING_MODE_RANGE_SIZE
@ VK_SHARING_MODE_END_RANGE
@ VK_SHARING_MODE_EXCLUSIVE
@ VK_SHARING_MODE_BEGIN_RANGE
EGenerateCompressedLayersTimeSliced
Definition Enums.h:32100
EHairViewRayTracingMask
Definition Enums.h:25418
ESlateDebuggingStateChangeEvent
Definition Enums.h:22609
EBlendOperation
Definition Enums.h:6418
EARWorldMappingState
Definition Enums.h:36579
EAudioDeviceChangedRole
Definition Enums.h:39067
ERDGViewType
Definition Enums.h:5410
EPCGMeshSelectorMaterialOverrideMode
Definition Enums.h:23660
VkSamplerYcbcrRange
Definition Enums.h:2186
@ VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR
EViewTargetBlendFunction
Definition Enums.h:4661
EMaterialInstanceClearParameterFlag
Definition Enums.h:11314
ECheckBoxState
Definition Enums.h:8902
EShadowMapFlags
Definition Enums.h:19018
ParticleReplayState
Definition Enums.h:11457
EGenerateRecastFilterTimeSlicedState
Definition Enums.h:32072
EStrandsTexturesMeshType
Definition Enums.h:25623
ovrSendPolicy_
Definition Enums.h:17351
rcRasterizationFlags
Definition Enums.h:32055
EOrientation
Definition Enums.h:5610
ENetPingControlMessage
Definition Enums.h:17048
ETextureDimension
Definition Enums.h:10954
EGeometryScriptUVIslandSource
Definition Enums.h:18697
EPCGMedadataVectorOperation
Definition Enums.h:22782
FILETYPEATTRIBUTEFLAGS
Definition Enums.h:32558
EBakeScaleMethod
Definition Enums.h:31195
ELayeredBoneBlendMode
Definition Enums.h:36667
EMeshSelectionToolPrimaryMode
Definition Enums.h:26264
EOptimusDefaultDeformerMode
Definition Enums.h:25656
EGroomInterpolationWeight
Definition Enums.h:18277
EWeightmapRTType
Definition Enums.h:36974
UCalendarDateFields
Definition Enums.h:33745
EAsyncIOPriorityAndFlags
Definition Enums.h:5594
EAchievementType
Definition Enums.h:17612
FWPM_NET_EVENT_TYPE_
Definition Enums.h:2755
@ FWPM_NET_EVENT_TYPE_LPM_PACKET_ARRIVAL
TextEntryInstigator
Definition Enums.h:31474
CURLSHoption
Definition Enums.h:35976
EMeshApproximationSimplificationPolicy
Definition Enums.h:8819
EScreenPercentageMode
Definition Enums.h:14180
EAudioPlugin
Definition Enums.h:19033
EColorBlockAlphaDisplayMode
Definition Enums.h:24734
EControlRigFKRigExecuteMode
Definition Enums.h:22652
ERHIPoolResourceTypes
Definition Enums.h:38989
PluginStyle
Definition Enums.h:11866
@ UNITY_STYLE_DEFERRED
EConstructDynamicType
Definition Enums.h:22087
EAddressInfoFlags
Definition Enums.h:9320
EEQSNormalizationType
Definition Enums.h:41216
ETriggerEffectType
Definition Enums.h:28122
EFourPlayerSplitScreenType
Definition Enums.h:28144
EPlayMovieVolumeType
Definition Enums.h:27782
EPCGTextureDensityFunction
Definition Enums.h:21224
EResourceAllocationStrategy
Definition Enums.h:38983
mi_delayed_e
Definition Enums.h:33173
CURLMoption
Definition Enums.h:35955
@ CURLMOPT_PIPELINING_SITE_BL
@ CURLMOPT_MAX_TOTAL_CONNECTIONS
@ CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE
@ CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE
@ CURLMOPT_TIMERFUNCTION
@ CURLMOPT_MAX_HOST_CONNECTIONS
@ CURLMOPT_MAX_CONCURRENT_STREAMS
@ CURLMOPT_SOCKETFUNCTION
@ CURLMOPT_PUSHFUNCTION
@ CURLMOPT_PIPELINING_SERVER_BL
@ CURLMOPT_MAX_PIPELINE_LENGTH
@ CURLMOPT_MAXCONNECTS
ECrashDumpMode
Definition Enums.h:34343
ENetLevelVisibilityRequest
Definition Enums.h:21757
EARSessionStatus
Definition Enums.h:36143
EFloatArrayToIntArrayFunctionEnum
Definition Enums.h:25199
WICBitmapPaletteType
Definition Enums.h:10
EJsonNotation
Definition Enums.h:9007
EDatasmithCADStitchingTechnique
Definition Enums.h:24670
PCGNormalToDensityMode
Definition Enums.h:20763
EGainParamMode
Definition Enums.h:37637
ESpeedTreeLODType
Definition Enums.h:32467
VkPipelineBindPoint
Definition Enums.h:804
@ VK_PIPELINE_BIND_POINT_RAY_TRACING_NV
EOptimusGlobalNotifyType
Definition Enums.h:25742
EGatherTilesCopyMode
Definition Enums.h:39614
EPrimaryScreenPercentageMethod
Definition Enums.h:11473
EConstraintOffsetOption
Definition Enums.h:36850
ESubmixEffectConvolutionReverbBlockSize
Definition Enums.h:28984
EDatasmithCADRetessellationRule
Definition Enums.h:24677
EGameModsEvent
Definition Enums.h:27984
@ EGameModsEvent_FinishInstalling
@ EGameModsEvent_Uninstalling
@ EGameModsEvent_InstallingProgress
@ EGameModsEvent_InitInstalling
@ EGameModsEvent_AlreadyInstalled
@ EGameModsEvent_CancelInstalling
@ EGameModsEvent_ViewRegister
@ EGameModsEvent_InitUninstalling
@ EGameModsEvent_FinishUpdating
EJWTCertificateType
Definition Enums.h:24538
EGeometryScriptBakeBitDepth
Definition Enums.h:17576
EGizmoElementArrowHeadType
Definition Enums.h:39055
EOverlapFilterOption
Definition Enums.h:18810
EParticleSystemUpdateMode
Definition Enums.h:11209
_NVAPI_VIDEO_CONTROL_COMPONENT_ALGORITHM
Definition Enums.h:1784
EMovieSceneSequenceCompilerMask
Definition Enums.h:13597
ModulationParamMode
Definition Enums.h:38701
EVisibilityTrackCondition
Definition Enums.h:37983
ERandomDataIndexType
Definition Enums.h:36797
EDisplaceMeshToolSubdivisionType
Definition Enums.h:31353
EDrawPolyPathExtrudeMode
Definition Enums.h:31395
EBoneSocketSourceIndexMode
Definition Enums.h:38353
EComputeNTBsOptions
Definition Enums.h:38292
EFileOpenFlags
Definition Enums.h:11741
EStereoChannelMode
Definition Enums.h:29113
EAsyncPackageLoadingState
Definition Enums.h:33270
EMeshLODSelectionType
Definition Enums.h:20311
EWorldPartitionStreamingPerformance
Definition Enums.h:32360
VkDriverIdKHR
Definition Enums.h:2121
@ VK_DRIVER_ID_MAX_ENUM_KHR
@ VK_DRIVER_ID_END_RANGE_KHR
@ VK_DRIVER_ID_MESA_RADV_KHR
@ VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR
@ VK_DRIVER_ID_RANGE_SIZE_KHR
@ VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR
@ VK_DRIVER_ID_GGP_PROPRIETARY_KHR
@ VK_DRIVER_ID_AMD_PROPRIETARY_KHR
@ VK_DRIVER_ID_BEGIN_RANGE_KHR
@ VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR
@ VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR
@ VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR
@ VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR
@ VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR
@ VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR
@ VK_DRIVER_ID_ARM_PROPRIETARY_KHR
EPathPermissionListType
Definition Enums.h:34469
EAllowKinematicDeferral
Definition Enums.h:19629
ESlateVertexRounding
Definition Enums.h:19690
EGeometryScriptUVFlattenMethod
Definition Enums.h:18690
VkCommandBufferResetFlagBits
Definition Enums.h:39448
EOnlineErrorResult
Definition Enums.h:12189
EThreadPriority
Definition Enums.h:5969
EExtrudeMeshSelectionInteractionMode
Definition Enums.h:24202
VkPeerMemoryFeatureFlagBits
Definition Enums.h:2328
EXRVisualType
Definition Enums.h:12981
ENodeEnabledState
Definition Enums.h:17820
EAOTechnique
Definition Enums.h:35246
EWindowActivation
Definition Enums.h:11238
WICBitmapTransformOptions
Definition Enums.h:3904
EHoudiniGeoType
Definition Enums.h:23725
ESphericalLimitType
Definition Enums.h:36346
EPCGSettingsExecutionMode
Definition Enums.h:31155
EProceduralStairsType
Definition Enums.h:23403
EBspNodeFlags
Definition Enums.h:6515
EAudioMixerChannelType
Definition Enums.h:21910
EHairStrandsCommonPassType
Definition Enums.h:36827
ELevelVisibility
Definition Enums.h:37178
EPlatformInfoType
Definition Enums.h:13741
EStructSerializerReferenceLoopPolicies
Definition Enums.h:22074
XXH_alignment
Definition Enums.h:33891
AnimPhysLinearConstraintType
Definition Enums.h:36327
EFootPlacementLockType
Definition Enums.h:7790
ESweepOrRay
Definition Enums.h:40193
EGeometryScriptMeshEditPolygroupMode
Definition Enums.h:18181
EEmitterDynamicParameterValue
Definition Enums.h:40077
EFastArraySerializerDeltaFlags
Definition Enums.h:9370
EGPUSkinCacheDispatchFlags
Definition Enums.h:38918
ERasterizerFillMode
Definition Enums.h:6436
IKEEXT_CIPHER_TYPE_
Definition Enums.h:2806
ESQLiteColumnType
Definition Enums.h:23432
EGizmoElementPartialType
Definition Enums.h:39048
ETabActivationCause
Definition Enums.h:32735
EPinContainerType
Definition Enums.h:11270
ECFCoreModsSearchSortField
Definition Enums.h:14291
USystemTimeZoneType
Definition Enums.h:33975
EXRTrackedDeviceType
Definition Enums.h:12937
EARTrackingQuality
Definition Enums.h:36547
EToolSide
Definition Enums.h:18470
EOcclusionCalculationUIMode
Definition Enums.h:26556
EPropertyAccessChangeNotifyMode
Definition Enums.h:28551
ECFCoreChildFileType
Definition Enums.h:13442
EGeometryCollectionDebugDrawActorHideGeometry
Definition Enums.h:37342
EBTDecoratorAbortRequest
Definition Enums.h:39919
EPropertyFlags
Definition Enums.h:5260
EWidgetSpace
Definition Enums.h:37191
ELayoutExtensionPosition
Definition Enums.h:33599
ESkeletalMeshVertexFlags
Definition Enums.h:8885
ELaplacianWeightScheme
Definition Enums.h:20294
EInstallBundlePriority
Definition Enums.h:11087
EMaterialLayerLinkState
Definition Enums.h:13088
EAttenuationDistanceModel
Definition Enums.h:18390
EGeometryScriptPolyOperationArea
Definition Enums.h:18201
ETextTransformPolicy
Definition Enums.h:11697
EBinkMediaPlayerBinkBufferModes
Definition Enums.h:29479
EOS_PlayerDataStorage_EReadResult
Definition Enums.h:21572
CURLSHcode
Definition Enums.h:36009
@ CURLSHE_NOT_BUILT_IN
@ CURLSHE_BAD_OPTION
ERigMetadataType
Definition Enums.h:19143
FGCLockBehavior
Definition Enums.h:34326
VkEventCreateFlagBits
Definition Enums.h:27246
EPCGMeshSamplingMethod
Definition Enums.h:21277
ESpeedTreeWindType
Definition Enums.h:32456
ETextureSamplerFilter
Definition Enums.h:12694
EMaterialStencilCompare
Definition Enums.h:9229
EMeshLODIdentifier
Definition Enums.h:17597
EInputDeviceTriggerMask
Definition Enums.h:22615
ERigSpaceType
Definition Enums.h:19230
TCP_UPLOAD_REASON
Definition Enums.h:3178
EMultipleKeyBindingIndex
Definition Enums.h:8718
ESleepFamily
Definition Enums.h:7308
EBeginAuthSessionResult
Definition Enums.h:15041
ERBFQuatDistanceType
Definition Enums.h:40834
EAsyncWriteOptions
Definition Enums.h:32407
EControllerHapticLocation
Definition Enums.h:16506
EEditPivotToolActions
Definition Enums.h:31492
BattleyePlayerStatus
Definition Enums.h:32271
EUnitType
Definition Enums.h:23284
@ LuminousIntensity
EReplayStreamerState
Definition Enums.h:10248
EUdpMessageFormat
Definition Enums.h:26019
EConstants
Definition Enums.h:34575
@ UE4_MINIDUMP_CRASHCONTEXT
EIndirectShadowingPrimitiveTypes
Definition Enums.h:35081
EMovieScenePositionType
Definition Enums.h:19545
ECustomAttributeTypeEnum
Definition Enums.h:25308
ERayTracingGeometryInitializerType
Definition Enums.h:21725
EToolContextCoordinateSystem
Definition Enums.h:13807
EARPlaneDetectionMode
Definition Enums.h:36477
ETransformSpaceMode
Definition Enums.h:19937
ERHITransientAllocationType
Definition Enums.h:13845
OIDNError
Definition Enums.h:29571
@ OIDN_ERROR_UNSUPPORTED_HARDWARE
@ OIDN_ERROR_UNKNOWN
@ OIDN_ERROR_INVALID_ARGUMENT
@ OIDN_ERROR_INVALID_OPERATION
@ OIDN_ERROR_OUT_OF_MEMORY
@ OIDN_ERROR_CANCELLED
ECompiledPartialDerivativeVariation
Definition Enums.h:22920
ESubLevelStripMode
Definition Enums.h:35335
EDepthOfFieldFunctionValue
Definition Enums.h:40052
EDataDrivenShaderPlatformInfoCondition
Definition Enums.h:38025
ETimeSliceWorkResult
Definition Enums.h:32007
ESplatBlendOp
Definition Enums.h:40025
EDownsampleQuality
Definition Enums.h:34443
ESteamAuthResponseCode
Definition Enums.h:16981
EBakeVertexOutput
Definition Enums.h:24385
ECustomDepthPassLocation
Definition Enums.h:33551
ERenderTargetStoreAction
Definition Enums.h:9897
EGameplayTagSelectionType
Definition Enums.h:39745
ETypedElementSelectionMethod
Definition Enums.h:23214
NATIVE_DISPLAY_ORIENTATION
Definition Enums.h:74
BeamModifierType
Definition Enums.h:38140
ESourceEffectMotionFilterTopology
Definition Enums.h:29166
VkFragmentShadingRateCombinerOpKHR
Definition Enums.h:41154
EShadowDepthCacheMode
Definition Enums.h:35099
VkSemaphoreImportFlagBits
Definition Enums.h:2504
VkSampleCountFlagBits
Definition Enums.h:39337
EShaderFundamentalType
Definition Enums.h:13273
EGeometryScriptAxis
Definition Enums.h:14607
EGeometryScriptSearchOutcomePins
Definition Enums.h:14587
EPinInsertPosition
Definition Enums.h:24400
EEOSApiVersion
Definition Enums.h:24003
EPropertyAccessResultFlags
Definition Enums.h:28575
EMetaPathUpdateReason
Definition Enums.h:39925
EPlayerResult_t
Definition Enums.h:15402
@ k_EPlayerResultFailedToConnect
EStructSerializerStateFlags
Definition Enums.h:22062
ETextureEncodeSpeed
Definition Enums.h:14235
EColorVisionDeficiency
Definition Enums.h:16625
VkPipelineExecutableStatisticFormatKHR
Definition Enums.h:2594
EDayOfWeek
Definition Enums.h:13390
VkAccelerationStructureTypeKHR
Definition Enums.h:26796
EVoxelBlendOperation
Definition Enums.h:26727
EPelvisHeightMode
Definition Enums.h:7813
@ FrontPlantedFeetUphill_FrontFeetDownhill
EClippingMethod
Definition Enums.h:21087
ESimulationTiming
Definition Enums.h:36869
EUniqueIdEncodingFlags
Definition Enums.h:7315
EReplayHeaderFlags
Definition Enums.h:20281
EGameplayDebuggerOverrideMode
Definition Enums.h:39912
EStructDeserializerBackendTokens
Definition Enums.h:22025
EFieldIntegerType
Definition Enums.h:25810
ESparseVolumePackedDataFormat
Definition Enums.h:35114
ERichCurveKeyTimeCompressionFormat
Definition Enums.h:5442
EInstallBundleManagerPatchCheckResult
Definition Enums.h:40373
EParticleDetailMode
Definition Enums.h:37652
ESoundscapeColorAltitudeClampMode
Definition Enums.h:20305
VkColorComponentFlagBits
Definition Enums.h:39476
EMovieSceneCompletionMode
Definition Enums.h:8401
IPSEC_TRANSFORM_TYPE_
Definition Enums.h:3327
ESteamNetworkingConfigScope
Definition Enums.h:15139
EDetailMode
Definition Enums.h:21216
EStreamlineResource
Definition Enums.h:21502
EVirtualShadowMapProjectionInputType
Definition Enums.h:37135
ETrackSupport
Definition Enums.h:31467
EConstraintTransformComponentFlags
Definition Enums.h:10293
ESourceEffectMotionFilterType
Definition Enums.h:29128
EIntersectionResult
Definition Enums.h:16651
ERDGInitialDataFlags
Definition Enums.h:8942
EPCGTextureColorChannel
Definition Enums.h:21230
MovieScene3DPathSection_Axis
Definition Enums.h:37627
EViewModeIndex
Definition Enums.h:11580
@ VMI_MaterialTextureScaleAccuracy
@ VMI_StationaryLightOverlap
@ VMI_PrimitiveDistanceAccuracy
@ VMI_VisualizeVirtualShadowMap
@ VMI_ShaderComplexityWithQuadOverdraw
@ VMI_VirtualTexturePendingMips
@ VMI_RequiredTextureResolution
EEmitterRenderMode
Definition Enums.h:28288
NSVGpaintType
Definition Enums.h:34407
@ NSVG_PAINT_RADIAL_GRADIENT
@ NSVG_PAINT_LINEAR_GRADIENT
EContentBundleClientState
Definition Enums.h:39985
EOS_TitleStorage_EReadResult
Definition Enums.h:21587
EMovieSceneBuiltInEasing
Definition Enums.h:9164
EObjectInitializerOptions
Definition Enums.h:12393
ESaveRealm
Definition Enums.h:32374
EEdGraphNodeDeprecationType
Definition Enums.h:18625
ESteamPartyBeaconLocationType
Definition Enums.h:16531
ERBFSolverType
Definition Enums.h:36746
EGBufferSlot
Definition Enums.h:5471
@ GBS_PerObjectGBufferData
@ GBS_ClearCoatRoughness
@ GBS_SeparatedMainDirLight
@ GBS_IndirectIrradiance
@ GBS_PrecomputedShadowFactor
@ GBS_HairSecondaryWorldNormal
@ GBS_SelectiveOutputMask
@ GBS_SubsurfaceProfileX
EMediaAudioSampleFormat
Definition Enums.h:37884
EZenPackageVersion
Definition Enums.h:32225
EWorldPositionIncludedOffsets
Definition Enums.h:32473
EMaterialGetParameterValueFlags
Definition Enums.h:10544
ELocationSkelVertSurfaceSource
Definition Enums.h:40104
EEventLoadNode
Definition Enums.h:33255
ERRPlacementNew
Definition Enums.h:2668
EWaveTableCurve
Definition Enums.h:26733
EVRSAxisShadingRate
Definition Enums.h:4822
EClusterConnectionTypeEnum
Definition Enums.h:29312
EOcclusionTriangleSamplingUIMode
Definition Enums.h:26562
ESetMaterialOperationTypeEnum
Definition Enums.h:25061
EOS_EComparisonOp
Definition Enums.h:24983
EMediaFeature
Definition Enums.h:25997
EGroupEdgeInsertionMode
Definition Enums.h:23706
EQuarztQuantizationReference
Definition Enums.h:20774
VkPipelineShaderStageCreateFlagBits
Definition Enums.h:26972
EToolChangeTrackingMode
Definition Enums.h:23238
EActorIteratorType
Definition Enums.h:7955
ERayTracingGlobalIlluminationType
Definition Enums.h:8605
EGameSearchErrorCode_t
Definition Enums.h:15389
@ k_EGameSearchErrorCode_Failed_Search_Already_In_Progress
@ k_EGameSearchErrorCode_Failed_No_Host_Available
@ k_EGameSearchErrorCode_Failed_Search_Params_Invalid
@ k_EGameSearchErrorCode_Failed_Not_Lobby_Leader
@ k_EGameSearchErrorCode_Failed_NotAuthorized
@ k_EGameSearchErrorCode_Failed_No_Search_In_Progress
@ k_EGameSearchErrorCode_Failed_Unknown_Error
EPropertyPathTestEnum
Definition Enums.h:38720
exr_tile_level_mode_t
Definition Enums.h:26625
VkFenceImportFlagBits
Definition Enums.h:2497
EStaticConstructor
Definition Enums.h:7231
EOnlineStatusUpdatePrivacy
Definition Enums.h:7301
EOutputDeviceRedirectorFlushOptions
Definition Enums.h:22943
ESynthFilterAlgorithm
Definition Enums.h:28930
EVoiceChatResult
Definition Enums.h:29755
EPCGMedadataTrigOperation
Definition Enums.h:22769
EBlueprintCompileMode
Definition Enums.h:20382
ESynthModEnvBiasPatch
Definition Enums.h:28908
ERigVMMemoryType
Definition Enums.h:18582
_POOL_TYPE
Definition Enums.h:3210
@ NonPagedPoolSessionNx
@ NonPagedPoolMustSucceedSession
@ PagedPoolCacheAligned
@ NonPagedPoolMustSucceed
@ NonPagedPoolBaseCacheAlignedMustS
@ NonPagedPoolCacheAlignedMustS
@ NonPagedPoolExecute
@ NonPagedPoolCacheAligned
@ PagedPoolCacheAlignedSession
@ NonPagedPoolCacheAlignedSession
@ DontUseThisTypeSession
@ NonPagedPoolNxCacheAligned
@ NonPagedPoolBaseCacheAligned
@ NonPagedPoolBaseMustSucceed
@ NonPagedPoolSession
@ NonPagedPoolCacheAlignedMustSSession
EGameplayTagSourceType
Definition Enums.h:39682
EMaterialUsage
Definition Enums.h:10513
@ MATUSAGE_NiagaraMeshParticles
@ MATUSAGE_GeometryCollections
@ MATUSAGE_VirtualHeightfieldMesh
@ MATUSAGE_InstancedStaticMeshes
EPCGMedadataBooleanOperation
Definition Enums.h:22601
IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE_
Definition Enums.h:3237
EInstallBundleCacheDumpToLog
Definition Enums.h:11111
_EVENT_TYPE
Definition Enums.h:3361
@ SynchronizationEvent
EInitialVelocityTypeEnum
Definition Enums.h:25916
EColorWriteMask
Definition Enums.h:6256
UDateFormatBooleanAttribute
Definition Enums.h:33736
GFSDK_Aftermath_Result
Definition Enums.h:40715
@ GFSDK_Aftermath_Result_FAIL_VersionMismatch
@ GFSDK_Aftermath_Result_FAIL_FeatureNotEnabled
@ GFSDK_Aftermath_Result_FAIL_InvalidAdapter
@ GFSDK_Aftermath_Result_FAIL_D3DDebugLayerNotCompatible
@ GFSDK_Aftermath_Result_FAIL_DriverInitFailed
@ GFSDK_Aftermath_Result_FAIL_DriverVersionNotSupported
@ GFSDK_Aftermath_Result_FAIL_D3dDllNotSupported
@ GFSDK_Aftermath_Result_FAIL_GettingContextDataWithNewCommandList
@ GFSDK_Aftermath_Result_FAIL_InvalidParameter
@ GFSDK_Aftermath_Result_FAIL_NoResourcesRegistered
@ GFSDK_Aftermath_Result_FAIL_ThisResourceNeverRegistered
@ GFSDK_Aftermath_Result_FAIL_D3dDllInterceptionNotSupported
@ GFSDK_Aftermath_Result_FAIL_NvApiIncompatible
@ GFSDK_Aftermath_Result_FAIL_NotSupportedInUWP
@ GFSDK_Aftermath_Result_FAIL_GetDataOnBundle
@ GFSDK_Aftermath_Result_FAIL_AlreadyInitialized
@ GFSDK_Aftermath_Result_FAIL_GetDataOnDeferredContext
@ GFSDK_Aftermath_Result_FAIL_NotInitialized
ETextureStreamingBuildType
Definition Enums.h:13837
EEmissionPatternTypeEnum
Definition Enums.h:28171
ERuntimeVirtualTextureDebugType
Definition Enums.h:14122
EOnlineProxyStoreOfferDiscountType
Definition Enums.h:13568
ESocketProtocolFamily
Definition Enums.h:9277
ESlateColorStylingMode
Definition Enums.h:20353
ERemeshType
Definition Enums.h:18513
UNISSupport
Definition Enums.h:31784
EGpuVendorId
Definition Enums.h:14205
UNumberFormatStyle
Definition Enums.h:33867
FFFP_MODE
Definition Enums.h:207
@ FFFP_NEARESTPARENTMATCH
VkSubpassDescriptionFlagBits
Definition Enums.h:26949
@ VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM
@ VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM
@ VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT
@ VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
@ VK_SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT
@ VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT
@ VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_ARM
@ VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT
ovrVoipMuteState_
Definition Enums.h:17153
EMontagePlayReturnType
Definition Enums.h:21528
VkFenceCreateFlagBits
Definition Enums.h:41164
EWaveTableResolution
Definition Enums.h:26760
EMetaSoundMessageLevel
Definition Enums.h:28200
EItemUpdateStatus
Definition Enums.h:16049
@ k_EItemUpdateStatusPreparingContent
@ k_EItemUpdateStatusCommittingChanges
@ k_EItemUpdateStatusUploadingContent
@ k_EItemUpdateStatusUploadingPreviewFile
@ k_EItemUpdateStatusPreparingConfig
_WINHTTP_REQUEST_STAT_ENTRY
Definition Enums.h:35361
_SPTEXT
Definition Enums.h:104
@ SPTEXT_ACTIONDETAIL
@ SPTEXT_ACTIONDESCRIPTION
EGeometryScriptMeshSelectionConversionType
Definition Enums.h:17010
EPoseDriverSource
Definition Enums.h:36734
EListItemAlignment
Definition Enums.h:11324
EUsdUpAxis
Definition Enums.h:29952
EVTPageTableFormat
Definition Enums.h:9764
VkPointClippingBehavior
Definition Enums.h:2084
@ VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR
@ VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR
@ VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY
ETextShapingMethod
Definition Enums.h:8460
INPUTDELEGATION_MODE_FLAGS
Definition Enums.h:3930
EModulationRouting
Definition Enums.h:16701
KNOWNDESTCATEGORY
Definition Enums.h:167
EDiffPropertiesFlags
Definition Enums.h:38412
ELumenIndirectLightingSteps
Definition Enums.h:36640
EPackageStoreEntryStatus
Definition Enums.h:33049
EOffsetMeshToolOffsetType
Definition Enums.h:26381
EParticleStates
Definition Enums.h:4409
@ STATE_Particle_FreezeRotation
@ STATE_Particle_CollisionIgnoreCheck
@ STATE_Particle_CollisionHasOccurred
@ STATE_Particle_FreezeTranslation
@ STATE_Particle_DelayCollisions
@ STATE_Particle_IgnoreCollisions
ETransactionStateEventType
Definition Enums.h:22798
USetSpanCondition
Definition Enums.h:33952
EARWorldAlignment
Definition Enums.h:36458
ESyncOption
Definition Enums.h:38780
EAudioFaderCurve
Definition Enums.h:14028
EGeometryScriptLODType
Definition Enums.h:14599
ERayTracingInstanceLayer
Definition Enums.h:8004
AllocationModeParam
Definition Enums.h:33912
EWorldType::Type ETeleportType
Definition Enums.h:41346
EMediaRateThinning
Definition Enums.h:31562
EMaterialTextureParameterType
Definition Enums.h:11480
EShadowMapInteractionType
Definition Enums.h:4858
EBulkDataLockFlags
Definition Enums.h:7843
EFieldPhysicsType
Definition Enums.h:20871
EMediaCaptureDeviceType
Definition Enums.h:39175
EEdGraphActionType
Definition Enums.h:27341
ECameraShakeDurationType
Definition Enums.h:11734
EClothingWindMethodNv
Definition Enums.h:40486
ERegexPatternFlags
Definition Enums.h:13341
EAuthSessionResponse
Definition Enums.h:15027
@ k_EAuthSessionResponseAuthTicketInvalid
@ k_EAuthSessionResponseUserNotConnectedToSteam
@ k_EAuthSessionResponseLoggedInElseWhere
@ k_EAuthSessionResponseAuthTicketCanceled
@ k_EAuthSessionResponseVACCheckTimedOut
@ k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed
@ k_EAuthSessionResponsePublisherIssuedBan
@ k_EAuthSessionResponseNoLicenseOrExpired
ELatticeInterpolationType
Definition Enums.h:26107
EPCGTransformLerpMode
Definition Enums.h:22762
EImageCompressionQuality
Definition Enums.h:21783
EContentBundleStatus
Definition Enums.h:39994
EMeshMergeType
Definition Enums.h:8586
VkFramebufferCreateFlagBits
Definition Enums.h:26965
EUniformBufferUsage
Definition Enums.h:5294
ESidebarLocation
Definition Enums.h:19615
VkPipelineCacheHeaderVersion
Definition Enums.h:2606
ERDGBarrierLocation
Definition Enums.h:8725
EMediaSoundComponentFFTSize
Definition Enums.h:29677
EResourceLockMode
Definition Enums.h:7223
EScreenProbeIntegrateTileClassification
Definition Enums.h:37027
ESynthLFOPatchType
Definition Enums.h:28881
EPackageStoreEntryFlags
Definition Enums.h:33042
ETextHitPoint
Definition Enums.h:34023
EHangulTextWrappingMethod
Definition Enums.h:34101
EFOVScalingType
Definition Enums.h:25505
SET_WINDOW_GROUP_OPTIONS
Definition Enums.h:3854
CURLINFO
Definition Enums.h:35437
@ CURLINFO_FILETIME
@ CURLINFO_SPEED_DOWNLOAD
@ CURLINFO_FILETIME_T
@ CURLINFO_CONTENT_LENGTH_DOWNLOAD
@ CURLINFO_CONTENT_LENGTH_DOWNLOAD_T
@ CURLINFO_SPEED_UPLOAD_T
@ CURLINFO_FTP_ENTRY_PATH
@ CURLINFO_SCHEME
@ CURLINFO_SSL_ENGINES
@ CURLINFO_SSL_VERIFYRESULT
@ CURLINFO_REDIRECT_TIME_T
@ CURLINFO_REDIRECT_URL
@ CURLINFO_REFERER
@ CURLINFO_PROTOCOL
@ CURLINFO_COOKIELIST
@ CURLINFO_CONNECT_TIME_T
@ CURLINFO_CONTENT_LENGTH_UPLOAD
@ CURLINFO_EFFECTIVE_URL
@ CURLINFO_OS_ERRNO
@ CURLINFO_HEADER_SIZE
@ CURLINFO_RTSP_CSEQ_RECV
@ CURLINFO_PROXYAUTH_AVAIL
@ CURLINFO_TOTAL_TIME
@ CURLINFO_SIZE_DOWNLOAD_T
@ CURLINFO_HTTPAUTH_AVAIL
@ CURLINFO_APPCONNECT_TIME
@ CURLINFO_SIZE_DOWNLOAD
@ CURLINFO_RESPONSE_CODE
@ CURLINFO_RTSP_CLIENT_CSEQ
@ CURLINFO_RTSP_SESSION_ID
@ CURLINFO_NAMELOOKUP_TIME
@ CURLINFO_PRIVATE
@ CURLINFO_PROXY_ERROR
@ CURLINFO_PRIMARY_IP
@ CURLINFO_CONTENT_TYPE
@ CURLINFO_CONDITION_UNMET
@ CURLINFO_RTSP_SERVER_CSEQ
@ CURLINFO_STARTTRANSFER_TIME_T
@ CURLINFO_PRETRANSFER_TIME_T
@ CURLINFO_SIZE_UPLOAD
@ CURLINFO_REQUEST_SIZE
@ CURLINFO_RETRY_AFTER
@ CURLINFO_CERTINFO
@ CURLINFO_PRIMARY_PORT
@ CURLINFO_APPCONNECT_TIME_T
@ CURLINFO_LOCAL_IP
@ CURLINFO_TLS_SESSION
@ CURLINFO_EFFECTIVE_METHOD
@ CURLINFO_SPEED_UPLOAD
@ CURLINFO_REDIRECT_COUNT
@ CURLINFO_STARTTRANSFER_TIME
@ CURLINFO_REDIRECT_TIME
@ CURLINFO_TOTAL_TIME_T
@ CURLINFO_CONTENT_LENGTH_UPLOAD_T
@ CURLINFO_SPEED_DOWNLOAD_T
@ CURLINFO_LOCAL_PORT
@ CURLINFO_TLS_SSL_PTR
@ CURLINFO_LASTONE
@ CURLINFO_PROXY_SSL_VERIFYRESULT
@ CURLINFO_PRETRANSFER_TIME
@ CURLINFO_NAMELOOKUP_TIME_T
@ CURLINFO_NUM_CONNECTS
@ CURLINFO_HTTP_VERSION
@ CURLINFO_LASTSOCKET
@ CURLINFO_SIZE_UPLOAD_T
@ CURLINFO_ACTIVESOCKET
@ CURLINFO_HTTP_CONNECTCODE
@ CURLINFO_CONNECT_TIME
ERichCurveTangentWeightMode
Definition Enums.h:6153
ECanCreateConnectionResponse
Definition Enums.h:5398
_AudioSessionState
Definition Enums.h:38899
EComparisonOp
Definition Enums.h:21655
EProceduralRectType
Definition Enums.h:23385
ERadiosityIndirectArgs
Definition Enums.h:34357
EAddGeneratedTilesTimeSlicedState
Definition Enums.h:32125
ECrashExitCodes
Definition Enums.h:34271
EFunctionFlags
Definition Enums.h:5101
@ FUNC_BlueprintAuthorityOnly
EParticleUVFlipMode
Definition Enums.h:40140
EObjectFlags
Definition Enums.h:41261
@ RF_NeedPostLoadSubobjects
@ RF_TextExportTransient
@ RF_InheritableComponentTemplate
@ RF_NonPIEDuplicateTransient
@ RF_AllocatedInSharedPage
VkDescriptorBindingFlagBits
Definition Enums.h:27043
@ VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT
@ VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT
@ VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT
EC_HOST_UI_MODE
Definition Enums.h:45
ERecompileModuleFlags
Definition Enums.h:9681
EDebugViewShaderMode
Definition Enums.h:6135
@ DVSM_ShaderComplexityContainedQuadOverhead
@ DVSM_ShaderComplexityBleedingQuadOverhead
ERemoteStorageLocalFileChange
Definition Enums.h:15493
EPSOPrecachePriority
Definition Enums.h:10538
EPrintStaleReferencesOptions
Definition Enums.h:10987
EAnimInterpolationType
Definition Enums.h:10015
EPCGComponentInput
Definition Enums.h:22524
EPCGActorSelection
Definition Enums.h:22809
EOptimusDiagnosticLevel
Definition Enums.h:25770
ENDIActorComponentSourceMode
Definition Enums.h:11491
HAPI_UNREAL_NodeType
Definition Enums.h:29202
VkObjectEntryTypeNVX
Definition Enums.h:2252
@ VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX
@ VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX
@ VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX
EOS_EResult
Definition Enums.h:19305
@ EOS_AntiCheat_PeerNotFound
@ EOS_Auth_ApplicationNotFound
@ EOS_Auth_PasswordResetRequired
@ EOS_Auth_ExchangeCodeNotFound
@ EOS_Auth_ExternalAuthExpired
@ EOS_UI_SocialOverlayLoadError
@ EOS_RTC_ReconnectionTimegateExpired
@ EOS_Sessions_InvalidLock
@ EOS_AntiCheat_ProtectMessageSessionKeyRequired
@ EOS_Permission_RequiredPatchAvailable
@ EOS_Ecom_CatalogItemStale
@ EOS_Mods_UserDoesNotOwnTheGame
@ EOS_Friends_NotFriends
@ EOS_TitleStorage_EncryptionKeyNotSet
@ EOS_Friends_AlreadyFriends
@ EOS_AntiCheat_ClientDeploymentIdMismatch
@ EOS_PlayerDataStorage_UserThrottled
@ EOS_Auth_ExternalAuthRestricted
@ EOS_Mods_OfferRequestByIdInvalidResult
@ EOS_AntiCheat_InvalidMode
@ EOS_Auth_PinGrantPending
@ EOS_AntiCheat_ClientProtectionNotAvailable
@ EOS_Lobby_SessionInProgress
@ EOS_Auth_PinGrantCode
@ EOS_Auth_InvalidRefreshToken
@ EOS_KWS_UserGraduated
@ EOS_PlayerDataStorage_FilenameInvalid
@ EOS_Auth_OriginatingExchangeCodeSessionExpired
@ EOS_PlayerDataStorage_UserErrorFromDataCallback
@ EOS_Connect_AuthExpired
@ EOS_Friends_InviteAwaitingAcceptance
@ EOS_Connect_LinkAccountFailedMissingNintendoIdAccount_DEPRECATED
@ EOS_Sessions_PresenceSessionExists
@ EOS_Sessions_AggregationFailed
@ EOS_TitleStorage_FileCorrupted
@ EOS_Permission_ChatRestriction
@ EOS_PlayerDataStorage_FilenameLengthInvalid
@ EOS_Auth_ExternalAuthNotLinked
@ EOS_Sessions_NoPermission
@ EOS_PlayerDataStorage_FileHandleInvalid
@ EOS_PlayerDataStorage_RequestInProgress
@ EOS_Lobby_MemberUpdateOnly
@ EOS_Presence_DataInvalid
@ EOS_Auth_ExternalAuthInvalid
@ EOS_Mods_CriticalError
@ EOS_Friends_LocalUserFriendLimitExceeded
@ EOS_InvalidParameters
@ EOS_Sessions_SessionAlreadyExists
@ EOS_Auth_ExternalAuthRevoked
@ EOS_Sessions_InviteNotFound
@ EOS_Ecom_CatalogOfferStale
@ EOS_Auth_WrongAccount
@ EOS_Connect_UnsupportedTokenType
@ EOS_Auth_WrongClient
@ EOS_InvalidSandboxId
@ EOS_RTC_ShutdownInvoked
@ EOS_Presence_DataKeyInvalid
@ EOS_Friends_NoInvitation
@ EOS_Auth_HeadlessAccountRequired
@ EOS_AntiCheat_PeerNotProtected
@ EOS_Connect_ExternalServiceConfigurationFailure
@ EOS_Lobby_PresenceLobbyExists
@ EOS_Mods_CannotGetManifestLocation
@ EOS_Lobby_AggregationFailed
@ EOS_AntiCheat_PeerAlreadyRegistered
@ EOS_KWS_ParentEmailMissing
@ EOS_Android_JavaVMNotStored
@ EOS_Connect_UserAlreadyExists
@ EOS_Auth_PinGrantExpired
@ EOS_PlayerDataStorage_DataLengthInvalid
@ EOS_RTC_UserIsInBlocklist
@ EOS_CacheDirectoryInvalid
@ EOS_Sessions_SandboxNotAllowed
@ EOS_Lobby_LobbyAlreadyExists
@ EOS_Token_Not_Account
@ EOS_Mods_URILaunchFailure
@ EOS_Mods_ModSdkCommandIsEmpty
@ EOS_Auth_InvalidToken
@ EOS_Sessions_TooManyPlayers
@ EOS_AntiCheat_ClientSandboxIdMismatch
@ EOS_Sessions_SessionInProgress
@ EOS_AntiCheat_ProtectMessageValidationFailed
@ EOS_Sessions_InviteFailed
@ EOS_IncompatibleVersion
@ EOS_MissingParameters_DEPRECATED
@ EOS_PlayerDataStorage_FileSizeInvalid
@ EOS_Auth_MFARequired
@ EOS_Presence_RichTextLengthInvalid
@ EOS_Sessions_PlayerSanctioned
@ EOS_Lobby_TooManyInvites
@ EOS_Permission_RequiredSystemUpdate
@ EOS_Mods_ModSdkProcessIsAlreadyRunning
@ EOS_Auth_AccountLockedForUpdate
@ EOS_RTC_TooManyParticipants
@ EOS_DesktopCrossplay_ApplicationNotBootstrapped
@ EOS_DesktopCrossplay_ServiceStartFailed
@ EOS_Lobby_NotAllowed
@ EOS_Auth_FullAccountRequired
@ EOS_Mods_InvalidIPCResponse
@ EOS_Lobby_NoPermission
@ EOS_Auth_ScopeConsentRequired
@ EOS_Connect_InvalidToken
@ EOS_Permission_OnlinePlayRestricted
@ EOS_Mods_PurchaseFailure
@ EOS_PlayerDataStorage_FilenameInvalidChars
@ EOS_AlreadyConfigured
@ EOS_Auth_AccountFeatureRestricted
@ EOS_Lobby_DeploymentAtCapacity
@ EOS_Auth_AuthenticationFailure
@ EOS_Lobby_HostAtCapacity
@ EOS_Auth_ScopeNotFound
@ EOS_Friends_LocalUserTooManyInvites
@ EOS_PlayerDataStorage_DataInvalid
@ EOS_Lobby_InviteFailed
@ EOS_Mods_ModIsNotInstalled
@ EOS_UnrecognizedResponse
@ EOS_Auth_AccountNotActive
@ EOS_Permission_AgeRestrictionFailure
@ EOS_Auth_ExternalAuthIsLastLoginType
@ EOS_Sessions_OutOfSync
@ EOS_Invalid_Deployment
@ EOS_Friends_TargetUserFriendLimitExceeded
@ EOS_PlayerDataStorage_StartIndexInvalid
@ EOS_Invalid_ProductUserID
@ EOS_Lobby_UpsertNotAllowed
@ EOS_PlayerDataStorage_FileCorrupted
@ EOS_DuplicateNotAllowed
@ EOS_Auth_PasswordCannotBeReused
@ EOS_Lobby_TooManyPlayers
@ EOS_TitleStorage_UserErrorFromDataCallback
@ EOS_InvalidCredentials
@ EOS_ProgressionSnapshot_SnapshotIdUnavailable
@ EOS_Ecom_EntitlementStale
@ EOS_Auth_ExternalAuthCannotLogin
@ EOS_TitleStorage_FileHeaderHasNewerVersion
@ EOS_Connect_ExternalServiceUnavailable
@ EOS_Lobby_VoiceNotEnabled
@ EOS_Presence_StatusInvalid
@ EOS_Sessions_InvalidSession
@ EOS_Mods_UnsupportedOS
@ EOS_Friends_TargetUserTooManyInvites
@ EOS_MissingPermissions
@ EOS_NetworkDisconnected
@ EOS_Sessions_SandboxAtCapacity
@ EOS_Sessions_UpsertNotAllowed
@ EOS_Sessions_NotAllowed
@ EOS_Sessions_HostAtCapacity
@ EOS_Lobby_InviteNotFound
@ EOS_Auth_AccountLocked
@ EOS_AntiCheat_DeviceIdAuthIsNotSupported
@ EOS_Presence_DataLengthInvalid
@ EOS_RequestInProgress
@ EOS_Presence_RichTextInvalid
@ EOS_Presence_DataValueLengthInvalid
@ EOS_Permission_UGCRestriction
@ EOS_ApplicationSuspended
@ EOS_Sessions_TooManyInvites
@ EOS_Mods_InvalidGameInstallInfo
@ EOS_Presence_DataKeyLengthInvalid
@ EOS_Mods_ToolInternalError
@ EOS_PlayerDataStorage_EncryptionKeyNotSet
@ EOS_Permission_AccountTypeFailure
@ EOS_DesktopCrossplay_ServiceNotRunning
@ EOS_DesktopCrossplay_ServiceNotInstalled
@ EOS_Auth_InvalidPlatformToken
@ EOS_Mods_OfferRequestByIdFailure
@ EOS_OperationWillRetry
@ EOS_Ecom_CatalogOfferPriceInvalid
@ EOS_Connect_LinkAccountFailed
@ EOS_Mods_ModSdkProcessCreationFailed
@ EOS_PlayerDataStorage_FileHeaderHasNewerVersion
@ EOS_AntiCheat_ClientProductIdMismatch
@ EOS_Sessions_DeploymentAtCapacity
@ EOS_AntiCheat_ProtectMessageInitializationFailed
@ EOS_Lobby_SandboxAtCapacity
@ EOS_RTC_RoomAlreadyExists
@ EOS_Lobby_InvalidSession
@ EOS_CacheDirectoryMissing
@ EOS_Auth_ParentalControls
@ EOS_Auth_AccountPortalLoadError
@ EOS_Lobby_InvalidLock
@ EOS_PlayerDataStorage_FileSizeTooLarge
@ EOS_Connect_ExternalTokenValidationFailed
@ EOS_Auth_CorrectiveActionRequired
@ EOS_Presence_DataValueInvalid
@ EOS_Sessions_SessionNotAnonymous
@ EOS_Mods_CouldNotFindOffer
@ EOS_Ecom_CheckoutLoadError
@ EOS_Lobby_SandboxNotAllowed
ELightShaftBloomOutput
Definition Enums.h:36043
_WINHTTP_REQUEST_TIME_ENTRY
Definition Enums.h:35383
EGLTFJsonLightType
Definition Enums.h:28355
GFSDK_Aftermath_GpuCrashDumpFormatterFlags
Definition Enums.h:39545
ESimulationSpace
Definition Enums.h:36862
ERayTracingMeshCommandsMode
Definition Enums.h:12236
ELobbyComparison
Definition Enums.h:14929
@ k_ELobbyComparisonEqualToOrGreaterThan
@ k_ELobbyComparisonEqualToOrLessThan
EScrollDirection
Definition Enums.h:22565
EConstraintsManagerNotifyType
Definition Enums.h:21208
EMediaSeekDirection
Definition Enums.h:31568
EVertexFactoryFlags
Definition Enums.h:13760
@ SupportsRayTracingProceduralPrimitive
OodleLZ_FuzzSafe
Definition Enums.h:32830
EPanningMethod
Definition Enums.h:13378
EActiveReloadType
Definition Enums.h:22538
ERemoveStreamingViews
Definition Enums.h:7458
EGranularSynthEnvelopeType
Definition Enums.h:29373
ETextFilterExpressionEvaluatorMode
Definition Enums.h:34170
ETransformConstraintType
Definition Enums.h:19256
EPropertyPointerType
Definition Enums.h:8712
EParentalFeature
Definition Enums.h:16067
ECameraShakeAttenuation
Definition Enums.h:37660
EARLightEstimationMode
Definition Enums.h:36484
EEventLoadNode2
Definition Enums.h:32213
@ ExportBundle_DeferredPostLoad
FoliageVertexColorMask
Definition Enums.h:21064
EBlendFactor
Definition Enums.h:5238
@ BF_InverseSource1Color
@ BF_InverseConstantBlendFactor
@ BF_ConstantBlendFactor
@ BF_InverseSource1Alpha
EHoudiniParameterType
Definition Enums.h:16789
BINKPLUGINBUFFERING
Definition Enums.h:41254
EGameplayDebuggerCategoryState
Definition Enums.h:39897
ESpawnActorCollisionHandlingMethod
Definition Enums.h:12551
ERenderQueryType
Definition Enums.h:10477
EAssetManagerFilter
Definition Enums.h:21313
VkLogicOp
Definition Enums.h:2424
@ VK_LOGIC_OP_RANGE_SIZE
@ VK_LOGIC_OP_OR_REVERSE
@ VK_LOGIC_OP_NAND
@ VK_LOGIC_OP_END_RANGE
@ VK_LOGIC_OP_COPY_INVERTED
@ VK_LOGIC_OP_OR_INVERTED
@ VK_LOGIC_OP_MAX_ENUM
@ VK_LOGIC_OP_BEGIN_RANGE
@ VK_LOGIC_OP_EQUIVALENT
@ VK_LOGIC_OP_NO_OP
@ VK_LOGIC_OP_CLEAR
@ VK_LOGIC_OP_COPY
@ VK_LOGIC_OP_AND_REVERSE
@ VK_LOGIC_OP_AND_INVERTED
@ VK_LOGIC_OP_INVERT
EAsyncComputeBudget
Definition Enums.h:8780
ERendererStencilMask
Definition Enums.h:10940
EImageComponentDebugMode
Definition Enums.h:36242
VkShadingRatePaletteEntryNV
Definition Enums.h:1344
@ VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV
@ VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV
@ VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV
@ VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV
@ VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV
@ VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV
@ VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV
@ VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV
@ VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV
@ VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV
@ VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV
ETemperatureSeverityType
Definition Enums.h:40226
EEnvelopeFollowerPeakMode
Definition Enums.h:29071
dtRotation
Definition Enums.h:39244
IKEEXT_INTEGRITY_TYPE_
Definition Enums.h:3279
EShowFlagGroup
Definition Enums.h:5068
ovrLeaderboardFilterType_
Definition Enums.h:17329
EAngularConstraintMotion
Definition Enums.h:10322
ECFCoreFileStatus
Definition Enums.h:14423
EEnvQueryHightlightMode
Definition Enums.h:41230
EInstallBundleManagerInitResult
Definition Enums.h:40354
IPSEC_TOKEN_PRINCIPAL_
Definition Enums.h:3391
EPCGMetadataOp
Definition Enums.h:20627
ERigSwitchParentMode
Definition Enums.h:21006
EAssetDataCanBeSubobject
Definition Enums.h:38245
EHDRCaptureGamut
Definition Enums.h:39938
ECollectionGroupEnum
Definition Enums.h:37294
EBlockCanary
Definition Enums.h:34017
EBusSendType
Definition Enums.h:22468
tagCameraControlProperty
Definition Enums.h:37530
ECollapsingType
Definition Enums.h:19847
NSVGpointFlags
Definition Enums.h:34400
ESlateInvalidationPaintType
Definition Enums.h:18817
EMovieSceneCompileResult
Definition Enums.h:8592
ESelectSubjectTypeEnum
Definition Enums.h:25396
EVerticalAlignment
Definition Enums.h:5463
FAIDistanceType
Definition Enums.h:41099
EPCGSpawnActorOption
Definition Enums.h:23102
EPhysicsAssetSolverType
Definition Enums.h:7931
EGTAOType
Definition Enums.h:35219
@ EAsyncHorizonSearch
@ EAsyncCombinedSpatial
EStreamlineFeatureSupport
Definition Enums.h:25345
EPrimaryAssetCookRule
Definition Enums.h:21284
ERigControlVisibility
Definition Enums.h:19211
EInterpCurveMode
Definition Enums.h:6108
EGeometryScriptRemeshSmoothingType
Definition Enums.h:18492
ETrailWidthMode
Definition Enums.h:11450
EReceivePropertiesFlags
Definition Enums.h:10394
ESwitchMaterialOutputType
Definition Enums.h:38620
ovrRoomJoinPolicy_
Definition Enums.h:17311
@ ovrRoom_JoinPolicyFriendsOfMembers
ETabRole
Definition Enums.h:32769
EColorType
Definition Enums.h:37673
EVirtualKeyboardDismissAction
Definition Enums.h:28716
ETranslucencyVolumeCascade
Definition Enums.h:6534
EAudioDeviceChangedState
Definition Enums.h:39076
EDDSFlags
Definition Enums.h:38369
@ DDSF_PixelFormat
ETransactionObjectEventType
Definition Enums.h:22633
EGeometryScriptGridSizingMethod
Definition Enums.h:18850
IKEEXT_MM_SA_STATE_
Definition Enums.h:2818
NSVGlineCap
Definition Enums.h:34367
OodleLZ_Decode_ThreadPhase
Definition Enums.h:32822
EVertexPaintAxis
Definition Enums.h:40310
EExtrudeMeshSelectionRegionModifierMode
Definition Enums.h:24208
EPCGComponentDirtyFlag
Definition Enums.h:22544
EFriendRelationship
Definition Enums.h:14991
@ k_EFriendRelationshipRequestInitiator
@ k_EFriendRelationshipSuggested_DEPRECATED
@ k_EFriendRelationshipRequestRecipient
EAsyncExecution
Definition Enums.h:13369
ETextureLayoutAspectRatio
Definition Enums.h:11508
EXformParameter
Definition Enums.h:23767
ELocalFileReplayResult
Definition Enums.h:39703
EIoStoreTocVersion
Definition Enums.h:32928
EAmazonS3MultipartUploadStatus
Definition Enums.h:32139
ERepDataBufferType
Definition Enums.h:6288
ETextureSizingType
Definition Enums.h:8372
@ TextureSizingType_AutomaticFromTexelDensity
@ TextureSizingType_UseSingleTextureSize
@ TextureSizingType_UseAutomaticBiasedSizes
@ TextureSizingType_AutomaticFromMeshDrawDistance
@ TextureSizingType_UseSimplygonAutomaticSizing
@ TextureSizingType_AutomaticFromMeshScreenSize
@ TextureSizingType_UseManualOverrideTextureSize
NV_GPU_PERF_PSTATE20_CLOCK_TYPE_ID
Definition Enums.h:40750
UDateFormatStyle
Definition Enums.h:33796
EMemoryTraceRootHeap
Definition Enums.h:5643
EGeometryScriptBooleanOperation
Definition Enums.h:17954
EAudioEncodeHint
Definition Enums.h:14059
EFullyLoadPackageType
Definition Enums.h:20051
EDynamicResolutionStateEvent
Definition Enums.h:40253
SkeletalMeshOptimizationImportance
Definition Enums.h:4896
ELobbyType
Definition Enums.h:14939
@ k_ELobbyTypePublic
@ k_ELobbyTypePrivate
@ k_ELobbyTypeFriendsOnly
@ k_ELobbyTypePrivateUnique
@ k_ELobbyTypeInvisible
EFieldCommandOutputType
Definition Enums.h:21129
EUpdateTransformFlags
Definition Enums.h:8969
EAnimSubsystemEnumeration
Definition Enums.h:15283
EAnalyticsBuildType
Definition Enums.h:25465
ENativeGameplayTagToken
Definition Enums.h:39698
EGeometryScriptLinearExtrudeDirection
Definition Enums.h:18195
EPrimitiveDirtyState
Definition Enums.h:9815
EMediaState
Definition Enums.h:31545
ECursorAction
Definition Enums.h:29624
EHoudiniMultiParmModificationType
Definition Enums.h:19010
EAudioSpectrumType
Definition Enums.h:22012
EUniqueObjectNameOptions
Definition Enums.h:13267
EShadowCacheInvalidationBehavior
Definition Enums.h:14158
EVoiceChatChannelType
Definition Enums.h:29774
EClassCastFlags
Definition Enums.h:3994
@ CASTCLASS_FMulticastDelegateProperty
@ CASTCLASS_FInterfaceProperty
@ CASTCLASS_FObjectPropertyBase
@ CASTCLASS_FSoftObjectProperty
@ CASTCLASS_FWeakObjectProperty
@ CASTCLASS_FLazyObjectProperty
EAudioBusChannels
Definition Enums.h:25099
GFSDK_Aftermath_GraphicsApi
Definition Enums.h:39582
EWorldPartitionRuntimeCellState
Definition Enums.h:32347
EInitialWaveOscillatorOffsetType
Definition Enums.h:28138
EHISMViewRelevanceType
Definition Enums.h:20965
EAnalogStick
Definition Enums.h:27999
EShadowDepthPixelShaderMode
Definition Enums.h:38466
EGPUSortFlags
Definition Enums.h:10970
@ SortAfterPostRenderOpaque
@ KeyGenAfterPostRenderOpaque
EMovieSceneBlendType
Definition Enums.h:8352
EMediaAudioCaptureDeviceFilter
Definition Enums.h:39148
EAdditiveBasePoseType
Definition Enums.h:20082
EControlRigTestDataPlaybackMode
Definition Enums.h:19974
VkQueueGlobalPriorityKHR
Definition Enums.h:26861
ERHIFeatureSupport
Definition Enums.h:7582
VkPerformanceConfigurationTypeINTEL
Definition Enums.h:1888
@ VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL
EReferenceChainSearchMode
Definition Enums.h:28075
ESteamNetworkingConfigValue
Definition Enums.h:15070
@ k_ESteamNetworkingConfig_SDRClient_ConsecutitivePingTimeoutsFail
@ k_ESteamNetworkingConfig_SDRClient_ConsecutitivePingTimeoutsFailInitial
@ k_ESteamNetworkingConfig_Callback_MessagesSessionFailed
@ k_ESteamNetworkingConfig_Callback_RelayNetworkStatusChanged
@ k_ESteamNetworkingConfig_Callback_ConnectionStatusChanged
@ k_ESteamNetworkingConfig_Callback_CreateConnectionSignaling
@ k_ESteamNetworkingConfig_SDRClient_MinPingsBeforePingAccurate
@ k_ESteamNetworkingConfig_Callback_MessagesSessionRequest
@ k_ESteamNetworkingConfig_SDRClient_ForceRelayCluster
@ k_ESteamNetworkingConfig_SDRClient_DebugTicketAddress
ERigControlAxis
Definition Enums.h:19111
ERayTracingPayloadType
Definition Enums.h:13347
_BasicControlMode_e
Definition Enums.h:3767
ESceneSnapQueryType
Definition Enums.h:23448
UPluralType
Definition Enums.h:33686
@ UPLURAL_TYPE_CARDINAL
@ UPLURAL_TYPE_ORDINAL
EDrawPolyPathRadiusMode
Definition Enums.h:31389
EInstallBundleSourceType
Definition Enums.h:11017
ECSGOperation
Definition Enums.h:23508
EFunctionInputType
Definition Enums.h:40034