11#include "Containers/Array.h"
14#include "Containers/Map.h"
27#include "Misc/Optional.h"
54class FShaderPreprocessorUtilities;
97#if UE_BUILD_DEBUG && (PLATFORM_UNIX)
147 switch(ShaderFrequency)
211 return X.Frequency ==
Y.Frequency &&
X.Platform ==
Y.Platform;
216 uint32 TargetFrequency = Target.Frequency;
217 uint32 TargetPlatform = Target.Platform;
218 Ar << TargetFrequency << TargetPlatform;
222 Target.Frequency = TargetFrequency;
223 Target.Platform = TargetPlatform;
240 return ((Target.Frequency <<
SP_NumBits) | Target.Platform);
245static_assert(
sizeof(
FShaderTarget) ==
sizeof(
uint32),
"FShaderTarget is expected to be bit-packed into a single uint32.");
303 Ar << Allocation.
Type;
310 A.BufferIndex ==
B.BufferIndex &&
A.BaseIndex ==
B.BaseIndex &&
A.Size ==
B.Size &&
A.Type ==
B.Type &&
A.bBound ==
B.bBound;
438 if (Remaining & (
uint64)1)
443 Remaining = Remaining >> (
uint64)1;
608 if (!ContainsDefinition(
NameKey))
639 if (CompileArgs.Contains(
Name))
716#define SET_SHADER_DEFINE(ENVIRONMENT, NAME, VALUE) \
718 static FShaderCompilerDefineNameCache Cache_##NAME(TEXT(#NAME)); \
719 (ENVIRONMENT).SetDefine(Cache_##NAME, VALUE); \
722#define SET_SHADER_DEFINE_AND_COMPILE_ARGUMENT(ENVIRONMENT, NAME, VALUE) \
724 static FShaderCompilerDefineNameCache Cache_##NAME(TEXT(#NAME)); \
725 (ENVIRONMENT).SetDefine(Cache_##NAME, VALUE); \
726 (ENVIRONMENT).SetCompileArgument(TEXT(#NAME), VALUE); \
838 DiagnosticBuffer UE_DEPRECATED(5.5,
"EShaderCodeFeatures::DiagnosticBuffer is superseded by EShaderResourceUsageFlags::DiagnosticBuffer") = 1 << 4,
897 return A.VendorId ==
B.VendorId &&
A.Parameter ==
B.Parameter;
910 return Ar << ShaderCodeValidationStride.
BindPoint << ShaderCodeValidationStride.
Stride;
974#ifndef RENDERCORE_ATTRIBUTE_UNALIGNED
976#define RENDERCORE_ATTRIBUTE_UNALIGNED
1138 int32 ShaderCodeSize = 0;
1145 static_assert(std::has_unique_object_representations_v<FHeader>);
1229 return reinterpret_cast<const FHeader*
>(
Header.GetData())->ShaderCodeSize;
1244 mutable int32 OptionalDataSize;
1253 mutable int32 UncompressedSize;
1256 mutable FName CompressionFormat;
1265 mutable int32 ShaderCodeSize;
1270 : OptionalDataSize(0)
1282 if (OptionalDataSize != -1)
1285 OptionalDataSize +=
sizeof(OptionalDataSize);
1286 ShaderCodeWithOptionalData.
Append((
const uint8*)&OptionalDataSize,
sizeof(OptionalDataSize));
1287 OptionalDataSize = -1;
1302 checkf(OptionalDataSize != -1,
TEXT(
"Tried to add ShaderCode after being finalized!"));
1303 checkf(OptionalDataSize == 0,
TEXT(
"Tried to add ShaderCode after adding Optional data!"));
1304 return ShaderCodeWithOptionalData;
1309 checkf(OptionalDataSize != -1,
TEXT(
"Tried to add shader symbols after being finalized!"));
1315 checkf(OptionalDataSize != -1,
TEXT(
"Tried to read uncompressed symbol data from bytecode after FinalizeShaderCode was called (which compresses the symbol data)"));
1322 if (ShaderCodeSize != 0)
1324 return ShaderCodeSize;
1338 return Wrapper.GetShaderCodeSize();
1358 return CompressionFormat;
1363 return OodleCompressor;
1392 check(OptionalDataSize >= 0);
1394 ShaderCodeWithOptionalData.
Add(
uint8(Key));
1395 ShaderCodeWithOptionalData.
Append((
const uint8*)&ValueSize,
sizeof(ValueSize));
1396 ShaderCodeWithOptionalData.
Append(ValuePtr, ValueSize);
1397 OptionalDataSize +=
sizeof(
uint8) +
sizeof(ValueSize) + (
uint32)ValueSize;
1414 check(OptionalDataSize == -1);
1417 if (ShaderCodeResource.Header)
1421 return ShaderCodeResource;
1435 UE_LOG(
LogShaders,
Fatal,
TEXT(
"Shader %s is expected to be compressed with %s, but it is compressed with %s instead."),
1441 return ShaderCodeResource;
1445 UE_LOG(
LogShaders,
Verbose,
TEXT(
"Shader %s is expected to be compressed with %s, but it arrived uncompressed (size=%d). Assuming compressing made it longer and storing uncompressed."),
1448 ShaderCodeWithOptionalData.
Num()
1460 UE_LOG(
LogShaders,
Fatal,
TEXT(
"Shader %s is expected to be compressed with Oodle compressor %d level %d, but it is compressed with compressor %d level %d instead."),
1468 return ShaderCodeResource;
1476 return ShaderCodeResource;
1481 ShaderCodeResource =
MoveTemp(Resource);
1483 OptionalDataSize = -1;
1568#define HLSL_LINE_TERMINATOR TEXT("\n")
1578 const TCHAR* SourceFilename,
constexpr auto MakeConstArrayView(OtherRangeType &&Other)
Definition ArrayView.h:904
#define check(expr)
Definition AssertionMacros.h:314
#define checkNoEntry()
Definition AssertionMacros.h:316
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
@ INDEX_NONE
Definition CoreMiscDefines.h:150
FSharedBuffer MakeSharedBufferFromArray(TArray< T, Allocator > &&Array)
Definition SharedBuffer.h:915
#define GET_STATID(Stat)
Definition Stats.h:656
#define DECLARE_CYCLE_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:679
#define DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:684
#define DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:683
#define DECLARE_MEMORY_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:687
SharedPointerInternals::TRawPtrProxy< ObjectType > MakeShareable(ObjectType *InObject)
Definition SharedPointer.h:1947
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define CSV_DECLARE_CATEGORY_MODULE_EXTERN(Module_API, CategoryName)
Definition CsvProfiler.h:80
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
#define UE_LOG(CategoryName, Verbosity, Format,...)
Definition LogMacros.h:270
#define DECLARE_INTRINSIC_TYPE_LAYOUT(T)
Definition MemoryLayout.h:760
EShaderFrequency
Definition RHIDefinitions.h:202
@ SF_Compute
Definition RHIDefinitions.h:208
@ SF_NumFrequencies
Definition RHIDefinitions.h:216
@ SF_NumBits
Definition RHIDefinitions.h:224
@ SF_RayGen
Definition RHIDefinitions.h:209
@ SF_RayCallable
Definition RHIDefinitions.h:212
@ SF_RayMiss
Definition RHIDefinitions.h:210
@ SF_RayHitGroup
Definition RHIDefinitions.h:211
@ SF_WorkGraphRoot
Definition RHIDefinitions.h:213
@ SF_WorkGraphComputeNode
Definition RHIDefinitions.h:214
@ SF_Pixel
Definition RHIDefinitions.h:206
EGpuVendorId
Definition RHIDefinitions.h:1006
EShaderCodeFeatures
Definition ShaderCore.h:832
TStatId GetMemoryStatType(EShaderFrequency ShaderFrequency)
Definition ShaderCore.h:143
int32 RENDERCORE_ATTRIBUTE_UNALIGNED unaligned_int32
Definition ShaderCore.h:978
RENDERCORE_API void LoadShaderSourceFileChecked(const TCHAR *VirtualFilePath, EShaderPlatform ShaderPlatform, FString &OutFileContents, const FName *ShaderPlatformName=nullptr)
Definition ShaderCore.cpp:2827
bool operator==(const FShaderStatVariant &LHS, const FShaderStatVariant &RHS)
Definition ShaderCore.cpp:63
RENDERCORE_API bool ReplaceVirtualFilePathForShaderAutogen(FString &InOutVirtualFilePath, EShaderPlatform ShaderPlatform, const FName *InShaderPlatformName=nullptr)
Definition ShaderCore.cpp:2425
RENDERCORE_API const FSHAHash * TryGetShaderFileHash(const TCHAR *VirtualFilePath, EShaderPlatform ShaderPlatform, FString *OutErrorMessage=nullptr)
Definition ShaderCore.cpp:3293
RENDERCORE_API void CheckShaderHashCacheInclude(const FString &VirtualFilePath, EShaderPlatform ShaderPlatform, const FString &ShaderFormatName)
Definition ShaderCore.cpp:3512
constexpr int32 NumShaderCompileJobPriorities
Definition ShaderCore.h:813
RENDERCORE_API void GetAllVirtualShaderSourcePaths(TArray< FString > &OutVirtualFilePaths, EShaderPlatform ShaderPlatform, const FName *ShaderPlatformName=nullptr)
Definition ShaderCore.cpp:2208
RENDERCORE_API const TMap< FString, FString > & AllShaderSourceDirectoryMappings()
Definition ShaderCore.cpp:4060
RENDERCORE_API void InitializeShaderTypes()
Definition ShaderCore.cpp:3523
RENDERCORE_API const class FSHAHash & GetShaderFilesHash(const TArray< FString > &VirtualFilePaths, EShaderPlatform ShaderPlatform)
Definition ShaderCore.cpp:3353
EShaderResourceUsageFlags
Definition ShaderCore.h:759
RENDERCORE_API bool ReplaceVirtualFilePathForShaderPlatform(FString &InOutVirtualFilePath, EShaderPlatform ShaderPlatform)
Definition ShaderCore.cpp:2375
RENDERCORE_API void InitializeShaderHashCache()
Definition ShaderCore.cpp:3500
RENDERCORE_API FName GetShaderCompressionFormat()
Definition ShaderResource.cpp:47
EShaderParameterType
Definition ShaderCore.h:248
RENDERCORE_API void UpdateIncludeDirectoryForPreviewPlatform(EShaderPlatform PreviewPlatform, EShaderPlatform ActualPlatform)
Definition ShaderCore.cpp:3506
RENDERCORE_API void VerifyShaderSourceFiles(EShaderPlatform ShaderPlatform)
Definition ShaderCore.cpp:2246
RENDERCORE_API void GetShaderCompressionOodleSettings(FOodleDataCompression::ECompressor &OutCompressor, FOodleDataCompression::ECompressionLevel &OutLevel, const FName &ShaderFormat=NAME_None)
Definition ShaderResource.cpp:55
bool operator<(const FShaderStatVariant &LHS, const FShaderStatVariant &RHS)
Definition ShaderCore.cpp:89
RENDERCORE_API const class FSHAHash & GetShaderFileHash(const TCHAR *VirtualFilePath, EShaderPlatform ShaderPlatform)
Definition ShaderCore.cpp:3280
RENDERCORE_API void InvalidateShaderFileCacheEntry(const TCHAR *InVirtualFilePath, EShaderPlatform InShaderPlatform, const FName *InShaderPlatformName=nullptr)
Definition ShaderCore.cpp:3562
#define RENDERCORE_ATTRIBUTE_UNALIGNED
Definition ShaderCore.h:976
RENDERCORE_API bool AllowDebugViewmodes()
Definition ShaderCore.cpp:578
RENDERCORE_API FString ParseVirtualShaderFilename(const FString &InFilename)
Definition ShaderCore.cpp:2320
RENDERCORE_API void GetShaderIncludes(const TCHAR *EntryPointVirtualFilePath, const TCHAR *VirtualFilePath, TArray< FString > &IncludeVirtualFilePaths, EShaderPlatform ShaderPlatform, uint32 DepthLimit=100, const FName *ShaderPlatformName=nullptr)
Definition ShaderCore.cpp:3204
RENDERCORE_API void AddShaderSourceDirectoryMapping(const FString &VirtualShaderDirectory, const FString &RealShaderDirectory)
Definition ShaderCore.cpp:4070
bool IsParameterBindless(EShaderParameterType ParameterType)
Definition ShaderCore.h:275
FString RENDERCORE_API MakeInjectedShaderCodeBlock(const TCHAR *BlockName, const FString &CodeToInject)
Definition ShaderCore.cpp:3869
FArchive & operator<<(FArchive &Ar, FUniformResourceEntry &Entry)
Definition ShaderCore.h:370
EShaderParameterTypeMask
Definition ShaderCore.h:263
RENDERCORE_API FString GetShaderSourceFilePath(const FString &VirtualFilePath, TArray< struct FShaderCompilerError > *CompileErrors=nullptr)
Definition ShaderCore.cpp:2273
RENDERCORE_API void AddShaderSourceFileEntry(TArray< FString > &OutVirtualFilePaths, FString VirtualFilePath, EShaderPlatform ShaderPlatform, const FName *ShaderPlatformName=nullptr)
Definition ShaderCore.cpp:2190
uint32 RENDERCORE_ATTRIBUTE_UNALIGNED unaligned_uint32
Definition ShaderCore.h:979
RENDERCORE_API void AddShaderSourceSharedVirtualDirectory(const FString &VirtualShaderDirectory)
Definition ShaderCore.cpp:4109
EShaderOptionalDataKey
Definition ShaderCore.h:736
@ GlobalUniformBufferConfiguration
RENDERCORE_API void ResetAllShaderSourceDirectoryMappings()
Definition ShaderCore.cpp:4065
const TCHAR * ShaderCompileJobPriorityToString(EShaderCompileJobPriority InPriority)
Definition ShaderCore.h:815
EShaderCompileJobPriority
Definition ShaderCore.h:803
RENDERCORE_API void FlushShaderFileCache()
Definition ShaderCore.cpp:3548
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTempIfPossible(T &&Obj) noexcept
Definition UnrealTemplate.h:538
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32 Offset
Definition VulkanMemory.cpp:4033
uint32 Size
Definition VulkanMemory.cpp:4034
Definition Archive.h:1208
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
Definition CompositeBuffer.h:27
Definition CompressedBuffer.h:50
static CORE_API FCompressedBuffer Compress(const FCompositeBuffer &RawData)
Definition CompressedBuffer.cpp:1003
bool IsNull() const
Definition CompressedBuffer.h:115
Definition MemoryImageWriter.h:14
Definition MemoryImageWriter.h:78
Definition NameTypes.h:617
CORE_API FString ToString() const
Definition UnrealNames.cpp:3537
Definition MemoryImage.h:49
Definition RHIShaderBindingLayout.h:72
Definition RefCounting.h:213
Definition SecureHash.h:314
Definition SecureHash.h:226
FString ToString() const
Definition SecureHash.h:242
Definition ShaderCore.h:487
EBindingType
Definition ShaderCore.h:490
FShaderBindingLayout Layouts[(uint8) EBindingType::Num]
Definition ShaderCore.h:507
void SetLayout(EBindingType BindingType, const FShaderBindingLayout &InLayout)
Definition ShaderCore.h:500
const FShaderBindingLayout & GetLayout(EBindingType BindingType) const
Definition ShaderCore.h:496
Definition ShaderCore.h:466
FRHIShaderBindingLayout RHILayout
Definition ShaderCore.h:469
Definition ShaderCore.h:983
const ANSICHAR * FindOptionalData(EShaderOptionalDataKey InKey) const
Definition ShaderCore.h:1043
int32 GetShaderCodeSize() const
Definition ShaderCore.h:1123
FShaderCodeReader(TConstArrayView< uint8 > InShaderCode)
Definition ShaderCore.h:987
uint32 GetActualShaderCodeSize() const
Definition ShaderCore.h:993
int32 GetOptionalDataSize() const
Definition ShaderCore.h:1106
const uint8 * FindOptionalDataAndSize(EShaderOptionalDataKey InKey, int32 &OutSize) const
Definition ShaderCore.h:1074
TConstArrayView< uint8 > GetOffsetShaderCode(int32 Offset)
Definition ShaderCore.h:998
const uint8 * FindOptionalData(EShaderOptionalDataKey InKey, uint8 ValueSize) const
Definition ShaderCore.h:1013
const T * FindOptionalData() const
Definition ShaderCore.h:1005
Definition ShaderCore.h:1134
FSharedBuffer GetCodeBuffer() const
Definition ShaderCore.h:1166
EShaderFrequency GetFrequency() const
Definition ShaderCore.h:1233
void PopulateHeader(int32 UncompressedSize, int32 ShaderCodeSize, EShaderFrequency Frequency)
Definition ShaderCore.h:1211
TConstArrayView< uint8 > GetCodeView() const
Definition ShaderCore.h:1160
void PopulateFromComposite(FCompositeBuffer CacheBuffer, FCompressedBuffer SymbolsBuffer)
Definition ShaderCore.h:1198
FCompositeBuffer GetCacheBuffer() const
Definition ShaderCore.h:1178
friend RENDERCORE_API FArchive & operator<<(FArchive &Ar, FShaderCode &Code)
Definition ShaderCore.cpp:4212
int32 GetUncompressedSize() const
Definition ShaderCore.h:1219
int32 GetShaderCodeSize() const
Definition ShaderCore.h:1226
static FCompositeBuffer Unpack(FSharedBuffer MonolithicBuffer)
Definition ShaderCore.h:1186
FCompressedBuffer GetSymbolsBuffer() const
Definition ShaderCore.h:1172
Definition ShaderCore.h:1242
FName GetCompressionFormat() const
Definition ShaderCore.h:1356
const FShaderCodeResource & GetFinalizedResource(EShaderFrequency Frequency, FSHAHash OutputHash) const
Definition ShaderCore.h:1410
void SetFromResource(FShaderCodeResource &&Resource)
Definition ShaderCore.h:1479
friend RENDERCORE_API FArchive & operator<<(FArchive &Ar, FShaderCode &Output)
Definition ShaderCore.cpp:4212
int32 GetUncompressedSize() const
Definition ShaderCore.h:1371
TArray< uint8 > & GetSymbolWriteAccess()
Definition ShaderCore.h:1307
TConstArrayView< uint8 > GetSymbolReadView() const
Definition ShaderCore.h:1313
FShaderCode()
Definition ShaderCore.h:1269
TConstArrayView< uint8 > GetReadView() const
Definition ShaderCore.h:1344
bool IsCompressed() const
Definition ShaderCore.h:1351
void AddOptionalData(EShaderOptionalDataKey Key, const uint8 *ValuePtr, uint32 ValueSize)
Definition ShaderCore.h:1387
void AddOptionalData(const T &In)
Definition ShaderCore.h:1378
void AddOptionalData(EShaderOptionalDataKey Key, const ANSICHAR *InString)
Definition ShaderCore.h:1403
FOodleDataCompression::ECompressor GetOodleCompressor() const
Definition ShaderCore.h:1361
void FinalizeShaderCode(FCompressedBuffer OverrideSymbolsBuffer=FCompressedBuffer()) const
Definition ShaderCore.h:1280
TArray< uint8 > & GetWriteAccess()
Definition ShaderCore.h:1300
int32 GetShaderCodeSize() const
Definition ShaderCore.h:1319
FOodleDataCompression::ECompressionLevel GetOodleLevel() const
Definition ShaderCore.h:1366
Definition ShaderCompiler.h:347
Definition ShaderCore.h:519
FString ToString() const
Definition ShaderCore.h:525
FShaderCompilerDefineNameCache(const TCHAR *InName)
Definition ShaderCore.h:521
Definition ShaderCompilerDefinitions.h:24
Definition ShaderCore.h:402
void Iterate(TFunction< void(uint32)> Callback) const
Definition ShaderCore.h:432
friend FArchive & operator<<(FArchive &Ar, FShaderCompilerFlags &F)
Definition ShaderCore.h:447
void Add(uint32 InFlag)
Definition ShaderCore.h:414
bool Contains(uint32 InFlag) const
Definition ShaderCore.h:426
void Remove(uint32 InFlag)
Definition ShaderCore.h:420
void Append(const FShaderCompilerFlags &In)
Definition ShaderCore.h:409
FShaderCompilerFlags(uint64 InData=0)
Definition ShaderCore.h:404
uint64 GetData() const
Definition ShaderCore.h:453
Definition ShaderKeyGenerator.h:29
Definition ShaderCore.h:323
FShaderParameterMap()
Definition ShaderCore.h:326
void UpdateHash(FSHA1 &HashState) const
Definition Shader.cpp:201
RENDERCORE_API uint32 CountParametersOfType(EShaderParameterType InType) const
Definition ShaderCore.cpp:1119
RENDERCORE_API TOptional< FParameterAllocation > FindParameterAllocation(FStringView ParameterName) const
Definition ShaderCore.cpp:1047
TMap< FString, FParameterAllocation > ParameterMap
Definition ShaderCore.h:367
RENDERCORE_API void RemoveParameterAllocation(FStringView ParameterName)
Definition ShaderCore.cpp:1101
friend FArchive & operator<<(FArchive &Ar, FShaderParameterMap &InParameterMap)
Definition ShaderCore.h:350
RENDERCORE_API TArray< FStringView > GetAllParameterNamesOfType(EShaderParameterType InType) const
Definition ShaderCore.cpp:1106
RENDERCORE_API void VerifyBindingsAreComplete(const TCHAR *ShaderTypeName, FShaderTarget Target, const class FVertexFactoryType *InVertexFactoryType) const
Definition Shader.cpp:166
RENDERCORE_API TOptional< FParameterAllocation > FindAndRemoveParameterAllocation(FStringView ParameterName)
Definition ShaderCore.cpp:1065
RENDERCORE_API void AddParameterAllocation(FStringView ParameterName, uint16 BufferIndex, uint16 BaseIndex, uint16 Size, EShaderParameterType ParameterType)
Definition ShaderCore.cpp:1095
RENDERCORE_API bool ContainsParameterAllocation(FStringView ParameterName) const
Definition ShaderCore.cpp:1090
const TMap< FString, FParameterAllocation > & GetParameterMap() const
Definition ShaderCore.h:362
void GetAllParameterNames(TArray< FString > &OutNames) const
Definition ShaderCore.h:357
Definition SharedBuffer.h:341
uint64 GetSize() const
Definition SharedBuffer.h:388
const void * GetData() const
Definition SharedBuffer.h:385
static CORE_API FSharedBuffer Clone(FMemoryView View)
Definition SharedBuffer.cpp:187
Definition VertexFactory.h:599
Definition VertexFactory.h:314
Definition ArrayView.h:139
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_REWRITE bool IsEmpty() const
Definition Array.h:1133
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
void Append(const TArray< OtherElementType, OtherAllocatorType > &Source)
Definition Array.h:2412
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition MemoryHasher.h:22
UE_FORCEINLINE_HINT ObjectType * Get() const
Definition SharedPointer.h:1065
Definition OodleDataCompression.cpp:28
ECompressor
Definition OodleDataCompression.h:49
ECompressionLevel
Definition OodleDataCompression.h:94
Definition ShaderCore.cpp:59
RENDERCORE_API const FName AnalysisArtifactsName
Definition ShaderCore.h:66
U16 Index
Definition radfft.cpp:71
Definition ShaderCore.h:70
friend FArchive & operator<<(FArchive &Ar, FGenericShaderStat &Stat)
Definition ShaderCore.h:84
FGenericShaderStat()=default
RENDERCORE_API void StreamArchive(FArchive &Ar)
Definition ShaderCore.cpp:140
bool operator==(const FGenericShaderStat &RHS) const
Definition ShaderCore.cpp:171
FName StatName
Definition ShaderCore.h:77
EFlags
Definition ShaderCore.h:73
FShaderStatVariant Value
Definition ShaderCore.h:78
EFlags Flags
Definition ShaderCore.h:79
FName TagName
Definition ShaderCore.h:80
bool operator<(const FGenericShaderStat &RHS) const
Definition ShaderCore.cpp:176
Definition ShaderCore.h:284
friend bool operator==(const FParameterAllocation &A, const FParameterAllocation &B)
Definition ShaderCore.h:307
friend bool operator!=(const FParameterAllocation &A, const FParameterAllocation &B)
Definition ShaderCore.h:313
friend FArchive & operator<<(FArchive &Ar, FParameterAllocation &Allocation)
Definition ShaderCore.h:300
bool bBound
Definition ShaderCore.h:289
uint16 Size
Definition ShaderCore.h:287
uint16 BaseIndex
Definition ShaderCore.h:286
uint16 BufferIndex
Definition ShaderCore.h:285
FParameterAllocation(uint16 InBufferIndex, uint16 InBaseIndex, uint16 InSize, EShaderParameterType InType)
Definition ShaderCore.h:292
EShaderParameterType Type
Definition ShaderCore.h:288
FParameterAllocation()=default
Definition ShaderCore.h:847
EShaderCodeFeatures CodeFeatures
Definition ShaderCore.h:851
static const EShaderOptionalDataKey Key
Definition ShaderCore.h:849
Definition ShaderCore.h:856
static const EShaderOptionalDataKey Key
Definition ShaderCore.h:857
Definition ShaderCore.h:773
uint8 NumCBs
Definition ShaderCore.h:780
uint8 NumSamplers
Definition ShaderCore.h:778
uint8 NumSRVs
Definition ShaderCore.h:779
EShaderResourceUsageFlags UsageFlags
Definition ShaderCore.h:777
uint8 NumUAVs
Definition ShaderCore.h:781
Definition ShaderCore.h:794
static const EShaderOptionalDataKey Key
Definition ShaderCore.h:796
uint32 UAVMask
Definition ShaderCore.h:798
Definition ShaderCore.h:869
static const EShaderOptionalDataKey Key
Definition ShaderCore.h:870
Definition ShaderCore.h:924
static constexpr EShaderOptionalDataKey Key
Definition ShaderCore.h:926
uint16 Version
Definition ShaderCore.h:933
TArray< FShaderCodeValidationStride > ShaderCodeValidationStride
Definition ShaderCore.h:929
TArray< FShaderCodeValidationType > ShaderCodeValidationSRVType
Definition ShaderCore.h:930
TArray< FShaderCodeValidationUBSize > ShaderCodeValidationUBSize
Definition ShaderCore.h:932
TArray< FShaderCodeValidationType > ShaderCodeValidationUAVType
Definition ShaderCore.h:931
friend FArchive & operator<<(FArchive &Ar, FShaderCodeValidationExtension &Extension)
Definition ShaderCore.h:935
static constexpr uint16 StaticVersion
Definition ShaderCore.h:927
Definition RHIDefinitions.h:1746
uint16 BindPoint
Definition RHIDefinitions.h:1747
uint16 Stride
Definition RHIDefinitions.h:1748
Definition RHIDefinitions.h:1752
Definition RHIDefinitions.h:1758
Definition ShaderCore.h:876
EGpuVendorId VendorId
Definition ShaderCore.h:880
friend FArchive & operator<<(FArchive &Ar, FShaderCodeVendorExtension &Extension)
Definition ShaderCore.h:890
FParameterAllocation Parameter
Definition ShaderCore.h:881
FShaderCodeVendorExtension()=default
FShaderCodeVendorExtension(EGpuVendorId InVendorId, uint16 InBufferIndex, uint16 InBaseIndex, uint16 InSize, EShaderParameterType InType)
Definition ShaderCore.h:884
static const EShaderOptionalDataKey Key
Definition ShaderCore.h:878
friend bool operator!=(const FShaderCodeVendorExtension &A, const FShaderCodeVendorExtension &B)
Definition ShaderCore.h:900
friend bool operator==(const FShaderCodeVendorExtension &A, const FShaderCodeVendorExtension &B)
Definition ShaderCore.h:895
Definition ShaderCore.h:544
const ITargetPlatform * TargetPlatform
Definition ShaderCore.h:562
FShaderCompilerFlags CompilerFlags
Definition ShaderCore.h:551
TMap< uint32, uint8 > RenderTargetOutputFormatsMap
Definition ShaderCore.h:552
TMap< FString, FString > IncludeVirtualPathToContentsMap
Definition ShaderCore.h:547
FShaderResourceTableMap ResourceTableMap
Definition ShaderCore.h:553
void SetDefineAndCompileArgument(const TCHAR *Name, ValueType Value)
Definition ShaderCore.h:630
friend FArchive & operator<<(FArchive &Ar, FShaderCompilerEnvironment &Environment)
Definition ShaderCore.h:683
void SetDefineIfUnset(const TCHAR *Name, ValueType Value)
Definition ShaderCore.h:605
const FShaderBindingLayout * ShaderBindingLayout
Definition ShaderCore.h:557
void SetCompileArgument(const TCHAR *Name, TVariant< bool, float, int32, uint32, FString > Value)
Definition ShaderCore.h:623
ValueType GetCompileArgument(const TCHAR *Name, const ValueType &DefaultValue) const
Definition ShaderCore.h:648
FRHIShaderBindingLayout RHIShaderBindingLayout
Definition ShaderCore.h:560
bool GetCompileArgument(const TCHAR *Name, ValueType &OutValue) const
Definition ShaderCore.h:661
bool HasCompileArgument(const TCHAR *Name) const
Definition ShaderCore.h:637
void SetRenderTargetOutputFormat(uint32 RenderTargetIndex, EPixelFormat PixelFormat)
Definition ShaderCore.h:672
TMap< FString, FUniformBufferEntry > UniformBufferMap
Definition ShaderCore.h:554
RENDERCORE_API FShaderCompilerEnvironment()
Definition ShaderCore.cpp:1210
RENDERCORE_API void SetDefine(const TCHAR *Name, const TCHAR *Value)
Definition ShaderCore.cpp:1287
RENDERCORE_API void SerializeEverythingButFiles(FArchive &Ar)
Definition ShaderCore.cpp:1518
void SetCompileArgument(const TCHAR *Name, ValueType Value)
Definition ShaderCore.h:617
RENDERCORE_API FString GetDefinitionsAsCommentedCode() const
Definition ShaderCore.cpp:1266
RENDERCORE_API void SerializeCompilationDependencies(FArchive &Ar)
Definition ShaderCore.cpp:1539
TMap< FString, FThreadSafeSharedAnsiStringPtr > IncludeVirtualPathToSharedContentsMap
Definition ShaderCore.h:549
friend class FShaderPreprocessorUtilities
Definition ShaderCore.h:702
bool FullPrecisionInPS
Definition ShaderCore.h:565
Definition ShaderCore.h:947
FString Message
Definition ShaderCore.h:949
uint32 Hash
Definition ShaderCore.h:948
Definition ShaderCore.h:958
static constexpr uint16 StaticVersion
Definition ShaderCore.h:961
uint16 Version
Definition ShaderCore.h:964
TArray< FShaderDiagnosticData > ShaderDiagnosticDatas
Definition ShaderCore.h:963
static constexpr EShaderOptionalDataKey Key
Definition ShaderCore.h:960
friend FArchive & operator<<(FArchive &Ar, FShaderDiagnosticExtension &Extension)
Definition ShaderCore.h:966
Definition ShaderCore.h:511
TArray< FUniformResourceEntry > Resources
Definition ShaderCore.h:512
RENDERCORE_API void FixupOnLoad(const TMap< FString, FUniformBufferEntry > &UniformBufferMap)
Definition ShaderCore.cpp:1190
Definition ShaderCore.h:186
friend FArchive & operator<<(FArchive &Ar, FShaderTarget &Target)
Definition ShaderCore.h:214
FShaderTarget(EShaderFrequency InFrequency, EShaderPlatform InPlatform)
Definition ShaderCore.h:202
FShaderTarget()
Definition ShaderCore.h:198
uint32 Platform
Definition ShaderCore.h:194
EShaderPlatform GetPlatform() const
Definition ShaderCore.h:228
EShaderFrequency GetFrequency() const
Definition ShaderCore.h:233
friend bool operator==(const FShaderTarget &X, const FShaderTarget &Y)
Definition ShaderCore.h:209
uint32 Frequency
Definition ShaderCore.h:193
friend uint32 GetTypeHash(FShaderTarget Target)
Definition ShaderCore.h:238
uint32 Packed
Definition ShaderCore.h:190
Definition ShaderCore.h:731
virtual ~FSharedShaderCompilerEnvironment()=default
Definition MemoryLayout.h:108
Definition ShaderParameterMetadata.h:66
EUniformBufferBindingFlags BindingFlags
Definition ShaderParameterMetadata.h:77
ERHIUniformBufferFlags Flags
Definition ShaderParameterMetadata.h:80
FString StaticSlotName
Definition ShaderParameterMetadata.h:68
uint32 LayoutHash
Definition ShaderParameterMetadata.h:74
FThreadSafeNameBufferPtr MemberNameBuffer
Definition ShaderParameterMetadata.h:71
Definition ShaderParameterMetadata.h:51
const TCHAR * UniformBufferMemberName
Definition ShaderParameterMetadata.h:53
uint8 Type
Definition ShaderParameterMetadata.h:57
uint16 ResourceIndex
Definition ShaderParameterMetadata.h:59
uint8 UniformBufferNameLength
Definition ShaderParameterMetadata.h:55
static UE_FORCEINLINE_HINT int32 Strcmp(const CharType *String1, const CharType *String2)
Definition CString.h:1018
static int32 Strlen(const CharType *String)
Definition CString.h:1047
Definition Optional.h:131
Definition LightweightStats.h:416