52 UE_DEPRECATED(5.7,
"GetBindlessResourcesConfiguration is now GetBindlessConfiguration")
55 UE_DEPRECATED(5.7,
"GetBindlessSamplersConfiguration is now GetBindlessConfiguration")
109 #define SHADER_COMPILER_FLAGS_ENTRY(Name) CFLAG_##Name,
110 #define SHADER_COMPILER_FLAGS_ENTRY_DEPRECATED(Name, Version, Message) CFLAG_##Name UE_DEPRECATED(Version, Message),
114static_assert(
CFLAG_PreferFlowControl == 0,
"First entry in ECompilerFlags must be 'CFLAG_PreferFlowControl' and assigned to 0");
115static_assert(
CFLAG_Max < 64,
"Out of bitfield space! Modify FShaderCompilerFlags");
204 bool bIsPipeline =
false;
482 return Ar <<
Error.ErrorVirtualFilePath <<
Error.ErrorLineString <<
Error.StrippedErrorMessage <<
Error.HighlightedLine <<
Error.HighlightedLineMarker;
515 UE_DEPRECATED(5.6,
"bSerializeModifiedSource is no longer used")
590 Stat->TagName = TagName;
607 Ar <<
Output.ParameterMap;
610 Ar <<
Output.bSerializingForCache;
611 if (!
Output.bSerializingForCache)
615 Ar <<
Output.ValidateInputHash;
619 Ar <<
Output.NumInstructions;
620 Ar <<
Output.NumTextureSamplers;
622 Ar <<
Output.ModifiedShaderSource;
623 Ar <<
Output.ModifiedEntryPointName;
624 Ar <<
Output.ShaderStatistics;
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
const bool
Definition NetworkReplayStreaming.h:178
@ SF_NumFrequencies
Definition RHIDefinitions.h:216
bool IsRayTracingShaderFrequency(EShaderFrequency Frequency)
Definition RHIDefinitions.h:1679
ERHIBindlessConfiguration
Definition RHIDefinitions.h:1432
bool IsWorkGraphShaderFrequency(EShaderFrequency Frequency)
Definition RHIDefinitions.h:1702
RENDERCORE_API bool ShouldGenerateShaderSymbols(FName ShaderFormat)
Definition ShaderCore.cpp:870
RENDERCORE_API void ShaderConvertAndStripComments(const FString &ShaderSource, TArray< ANSICHAR > &OutStripped, EConvertAndStripFlags Flags=EConvertAndStripFlags::None)
Definition ShaderCore.cpp:2485
EWriteShaderSymbols
Definition ShaderCompilerCore.h:86
RENDERCORE_API const FString & GetShaderDebugInfoPath()
Definition ShaderCore.cpp:908
EShaderDebugInfoFlags
Definition ShaderCompilerCore.h:188
@ ShaderCodePlatformHashes
const int32 ShaderCompileWorkerOutputVersion
Definition ShaderCompilerCore.h:36
RENDERCORE_API void FixupShaderFilePath(FString &VirtualFilePath, EShaderPlatform ShaderPlatform, const FName *ShaderPlatformName)
Definition ShaderCore.cpp:2458
RENDERCORE_API void CompileShader(const TArray< const IShaderFormat * > &ShaderFormats, FShaderCompileJob &Job, const FString &WorkingDirectory, int32 *CompileCount=nullptr)
Definition ShaderCore.cpp:2091
RENDERCORE_API bool LoadShaderSourceFile(const TCHAR *VirtualFilePath, EShaderPlatform ShaderPlatform, FString *OutFileContents, TArray< FShaderCompilerError > *OutCompileErrors, const FName *ShaderPlatformName=nullptr, FShaderSharedAnsiStringPtr *OutStrippedContents=nullptr)
Definition ShaderCore.cpp:2803
const int32 ShaderCompileWorkerInputVersion
Definition ShaderCompilerCore.h:34
RENDERCORE_API const TCHAR * LexToString(ECompilerFlags InValue)
Definition ShaderCore.cpp:4872
RENDERCORE_API bool ShouldEnableExtraShaderData(FName ShaderFormat)
Definition ShaderCore.cpp:998
EConvertAndStripFlags
Definition ShaderCompilerCore.h:683
constexpr int32 NumShaderCompileJobTypes
Definition ShaderCompilerCore.h:792
EShaderCompileJobType
Definition ShaderCompilerCore.h:787
RENDERCORE_API bool AllowShaderCompiling()
Definition ShaderCore.cpp:1020
RENDERCORE_API const IShaderFormat * FindShaderFormat(FName Format, const TArray< const IShaderFormat * > &ShaderFormats)
Definition ShaderCore.cpp:1692
RENDERCORE_API bool GetShaderPreprocessDependencies(const TCHAR *VirtualFilePath, EShaderPlatform ShaderPlatform, FShaderPreprocessDependenciesShared &OutDependencies)
Definition ShaderCore.cpp:3154
const int32 ShaderCompileWorkerSingleJobHeader
Definition ShaderCompilerCore.h:38
RENDERCORE_API bool ShouldGenerateShaderSymbolsInfo(FName ShaderFormat)
Definition ShaderCore.cpp:877
RENDERCORE_API bool ShouldOptimizeShaders(FName ShaderFormat)
Definition ShaderCore.cpp:1004
RENDERCORE_API bool GetShaderFileNameOverride(FString &OutFileNameOverride, const TCHAR *Cvar, FName ShaderFormat, FName PlatformName)
Definition ShaderCore.cpp:960
RENDERCORE_API bool PreprocessShader(FShaderCommonCompileJob *Job)
Definition ShaderCore.cpp:2047
TSharedPtr< FShaderPreprocessDependencies, ESPMode::ThreadSafe > FShaderPreprocessDependenciesShared
Definition ShaderCompilerCore.h:772
RENDERCORE_API bool ShouldAllowUniqueShaderSymbols(FName ShaderFormat)
Definition ShaderCore.cpp:890
RENDERCORE_API bool LoadCachedShaderSourceFile(const TCHAR *VirtualFilePath, EShaderPlatform ShaderPlatform, FShaderSharedStringPtr *OutFileContents, TArray< FShaderCompilerError > *OutCompileErrors, const FName *ShaderPlatformName=nullptr, FShaderSharedAnsiStringPtr *OutStrippedContents=nullptr)
Definition ShaderCore.cpp:2733
TSharedPtr< TArray< ANSICHAR >, ESPMode::ThreadSafe > FShaderSharedAnsiStringPtr
Definition ShaderCompilerCore.h:31
RENDERCORE_API bool GetShaderSymbolPathOverride(FString &OutPathOverride, FName ShaderFormat)
Definition ShaderCore.cpp:939
ECompilerFlags
Definition ShaderCompilerCore.h:108
@ CFLAG_Max
Definition ShaderCompilerCore.h:112
RENDERCORE_API const FString & GetBuildMachineArtifactBasePath()
Definition ShaderCore.cpp:896
RENDERCORE_API void CompileShaderPipeline(const TArray< const IShaderFormat * > &ShaderFormats, FShaderPipelineCompileJob *PipelineJob, const FString &WorkingDirectory, int32 *CompileCount=nullptr)
Definition ShaderCore.cpp:2121
const int32 ShaderCompileWorkerPipelineJobHeader
Definition ShaderCompilerCore.h:40
RENDERCORE_API EWriteShaderSymbols GetWriteShaderSymbolsOptions(FName ShaderFormat)
Definition ShaderCore.cpp:992
RENDERCORE_API bool ShouldWriteShaderSymbols(FName ShaderFormat)
Definition ShaderCore.cpp:883
RENDERCORE_API const FGuid UE_SHADER_CACHE_VERSION
Definition ShaderCompilerCore.cpp:5
RENDERCORE_API bool AllowGlobalShaderLoad()
Definition ShaderCore.cpp:1038
RENDERCORE_API void LexFromString(ECompilerFlags &OutValue, const TCHAR *InString)
Definition ShaderCore.cpp:4860
EOfflineShaderCompilerType
Definition ShaderCompilerCore.h:155
RENDERCORE_API bool CheckVirtualShaderFilePath(FStringView VirtualPath, TArray< FShaderCompilerError > *CompileErrors=nullptr)
Definition ShaderCore.cpp:1639
EShaderCompilerWorkerType
Definition ShaderCompilerCore.h:780
TVariant< bool, float, int32, uint32, FString > FShaderStatVariant
Definition ShaderCore.h:58
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition Archive.h:1208
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
UE_FORCEINLINE_HINT bool IsSaving() const
Definition Archive.h:248
Definition HashTable.h:210
Definition NameTypes.h:617
Definition UnrealType.h:3087
static CORE_API FStringView GetCleanFilename(const FStringView &InPath)
Definition PathViews.cpp:100
static CORE_API FString GetCleanFilename(const FString &InPath)
Definition Paths.cpp:967
Definition SecureHash.h:226
Definition ShaderCore.h:1134
Definition ShaderCore.h:1242
const FShaderCodeResource & GetFinalizedResource(EShaderFrequency Frequency, FSHAHash OutputHash) const
Definition ShaderCore.h:1410
void SetFromResource(FShaderCodeResource &&Resource)
Definition ShaderCore.h:1479
Definition ShaderCompilerJobTypes.h:152
Definition ShaderCompilerJobTypes.h:331
bool Contains(uint32 InFlag) const
Definition ShaderCore.h:426
Definition ShaderCore.h:323
Definition ShaderCompilerJobTypes.h:419
static CORE_API IFileManager & Get()
Definition FileManagerGeneric.cpp:1072
virtual bool DirectoryExists(const TCHAR *InDirectory)=0
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * GetData() UE_LIFETIMEBOUND
Definition Array.h:1027
ElementType & AddZeroed_GetRef() UE_LIFETIMEBOUND
Definition Array.h:2779
Definition RefCounting.h:454
Definition UniquePtr.h:107
@ IgnoreCase
Definition CString.h:26
Definition OodleDataCompression.cpp:28
ECompressor
Definition OodleDataCompression.h:49
ECompressionLevel
Definition OodleDataCompression.h:94
Definition ShaderCompilerCore.h:48
RENDERCORE_API bool ShouldCompileWithBindlessEnabled(EShaderPlatform ShaderPlatform, const FShaderCompilerInput &Input)
Definition ShaderCore.cpp:828
RENDERCORE_API ERHIBindlessConfiguration GetBindlessConfiguration(EShaderPlatform ShaderPlatform)
Definition ShaderCore.cpp:805
RENDERCORE_API ERHIBindlessConfiguration GetBindlessSamplersConfiguration(FName ShaderFormat)
Definition ShaderCore.cpp:818
RENDERCORE_API ERHIBindlessConfiguration GetBindlessResourcesConfiguration(FName ShaderFormat)
Definition ShaderCore.cpp:812
_EXCEPTION_POINTERS * LPEXCEPTION_POINTERS
Definition MinimalWindowsApi.h:89
@ false
Definition radaudio_common.h:23
Definition ShaderCore.h:70
FName StatName
Definition ShaderCore.h:77
Definition RHIDefinitions.h:1746
Definition RHIDefinitions.h:1752
Definition RHIDefinitions.h:1758
Definition ShaderCompilerCore.h:637
int32 BatchIndex
Definition ShaderCompilerCore.h:651
double EntryPointTimestamp
Definition ShaderCompilerCore.h:642
double BatchProcessTime
Definition ShaderCompilerCore.h:648
double BatchPreparationTime
Definition ShaderCompilerCore.h:645
int32 ErrorCode
Definition ShaderCompilerCore.h:639
friend FArchive & operator<<(FArchive &Ar, FShaderCompileWorkerDiagnostics &Output)
Definition ShaderCompilerCore.h:653
Definition ShaderCore.h:544
RENDERCORE_API void Merge(const FShaderCompilerEnvironment &Other)
Definition ShaderCore.cpp:1225
FShaderCompilerFlags CompilerFlags
Definition ShaderCore.h:551
TMap< FString, FThreadSafeSharedAnsiStringPtr > IncludeVirtualPathToSharedContentsMap
Definition ShaderCore.h:549
Definition ShaderCompilerCore.h:411
FString RENDERCORE_API GetErrorString(bool bOmitLineMarker=false) const
Definition ShaderCore.cpp:3929
FShaderCompilerError(FString &&InStrippedErrorMessage, FString &&InHighlightedLine, FString &&InHighlightedLineMarker)
Definition ShaderCompilerCore.h:436
friend FArchive & operator<<(FArchive &Ar, FShaderCompilerError &Error)
Definition ShaderCompilerCore.h:480
FString StrippedErrorMessage
Definition ShaderCompilerCore.h:446
FString RENDERCORE_API GetErrorStringWithLineMarker() const
Definition ShaderCore.cpp:3915
bool HasLineMarker() const
Definition ShaderCompilerCore.h:465
FString RENDERCORE_API GetErrorStringWithSourceLocation() const
Definition ShaderCore.cpp:3903
static void RENDERCORE_API ExtractSourceLocations(TArray< FShaderCompilerError > &InOutErrors)
Definition ShaderCore.cpp:4003
bool RENDERCORE_API ExtractSourceLocation()
Definition ShaderCore.cpp:3971
FShaderCompilerError(const TCHAR *InVirtualFilePath, const TCHAR *InLineString, const TCHAR *InStrippedErrorMessage)
Definition ShaderCompilerCore.h:420
FString RENDERCORE_API GetShaderSourceFilePath(TArray< FShaderCompilerError > *InOutErrors=nullptr) const
Definition ShaderCore.cpp:4046
FString ErrorVirtualFilePath
Definition ShaderCompilerCore.h:444
FShaderCompilerError(FString &&InStrippedErrorMessage)
Definition ShaderCompilerCore.h:428
FString ErrorLineString
Definition ShaderCompilerCore.h:445
FShaderCompilerError(const TCHAR *InStrippedErrorMessage=TEXT(""))
Definition ShaderCompilerCore.h:412
FString HighlightedLine
Definition ShaderCompilerCore.h:447
FString HighlightedLineMarker
Definition ShaderCompilerCore.h:448
Definition ShaderCompilerCore.h:491
FShaderCode ShaderCode
Definition ShaderCompilerCore.h:506
FShaderCompilerInputHash ValidateInputHash
Definition ShaderCompilerCore.h:508
TArray< FShaderCodeValidationType > ParametersUAVTypeToValidate
Definition ShaderCompilerCore.h:531
FSHAHash OutputHash
Definition ShaderCompilerCore.h:507
FShaderCompilerOutput()
Definition ShaderCompilerCore.h:492
TArray< FShaderCodeValidationUBSize > ParametersUBSizeToValidate
Definition ShaderCompilerCore.h:532
TArray< FGenericShaderStat > ShaderStatistics
Definition ShaderCompilerCore.h:551
TArray< FShaderCompilerError > Errors
Definition ShaderCompilerCore.h:504
FString ModifiedEntryPointName
Definition ShaderCompilerCore.h:546
const FShaderCodeResource & GetFinalizedCodeResource() const
Definition ShaderCompilerCore.h:593
TArray< FString > UsedAttributes
Definition ShaderCompilerCore.h:518
uint32 NumTextureSamplers
Definition ShaderCompilerCore.h:510
TArray< FShaderDiagnosticData > ShaderDiagnosticDatas
Definition ShaderCompilerCore.h:534
uint32 NumInstructions
Definition ShaderCompilerCore.h:509
double PreprocessTime
Definition ShaderCompilerCore.h:512
FString ModifiedShaderSource
Definition ShaderCompilerCore.h:541
RENDERCORE_API void GenerateOutputHash()
Definition ShaderCore.cpp:1554
TArray< FShaderCodeValidationType > ParametersSRVTypeToValidate
Definition ShaderCompilerCore.h:530
FShaderTarget Target
Definition ShaderCompilerCore.h:505
bool bSerializingForCache
Definition ShaderCompilerCore.h:517
bool bSucceeded
Definition ShaderCompilerCore.h:513
bool bSerializeModifiedSource
Definition ShaderCompilerCore.h:516
RENDERCORE_API void SerializeShaderDiagnosticData()
Definition ShaderCore.cpp:1607
RENDERCORE_API void CompressOutput(FName ShaderCompressionFormat, FOodleDataCompression::ECompressor OodleCompressor, FOodleDataCompression::ECompressionLevel OodleLevel)
Definition ShaderCore.cpp:1572
RENDERCORE_API void SerializeShaderCodeValidation()
Definition ShaderCore.cpp:1580
double CompileTime
Definition ShaderCompilerCore.h:511
void SetCodeFromResource(FShaderCodeResource &&Resource)
Definition ShaderCompilerCore.h:598
void AddStatistic(const TCHAR *Name, TValue Value, FGenericShaderStat::EFlags Flags=FGenericShaderStat::EFlags::None, FName TagName=NAME_None)
Definition ShaderCompilerCore.h:566
PRAGMA_ENABLE_DEPRECATION_WARNINGS TArray< FShaderCodeValidationStride > ParametersStrideToValidate
Definition ShaderCompilerCore.h:529
FShaderParameterMap ParameterMap
Definition ShaderCompilerCore.h:503
bool bSupportsQueryingUsedAttributes
Definition ShaderCompilerCore.h:514
friend FArchive & operator<<(FArchive &Ar, FShaderCompilerOutput &Output)
Definition ShaderCompilerCore.h:604
Definition ShaderCompilerCore.h:121
TArray< uint32 > ResourceTableLayoutHashes
Definition ShaderCompilerCore.h:144
uint32 ResourceTableBits
Definition ShaderCompilerCore.h:123
TArray< uint32 > SamplerMap
Definition ShaderCompilerCore.h:135
TArray< uint32 > ShaderResourceViewMap
Definition ShaderCompilerCore.h:132
FShaderCompilerResourceTable()
Definition ShaderCompilerCore.h:146
TArray< uint32 > TextureMap
Definition ShaderCompilerCore.h:129
uint32 MaxBoundResourceTable
Definition ShaderCompilerCore.h:126
TArray< uint32 > ResourceCollectionMap
Definition ShaderCompilerCore.h:141
TArray< uint32 > UnorderedAccessViewMap
Definition ShaderCompilerCore.h:138
Definition ShaderCompilerCore.h:203
TArray< TPair< EShaderFrequency, FString > > DebugSourceFiles
Definition ShaderCompilerCore.h:205
Definition ShaderCore.h:947
Definition ShaderCompilerCore.h:765
TArray< FShaderPreprocessDependency > Dependencies
Definition ShaderCompilerCore.h:767
FHashTable ByResult
Definition ShaderCompilerCore.h:769
FHashTable BySource
Definition ShaderCompilerCore.h:768
Definition ShaderCompilerCore.h:705
TArray< ANSICHAR > ResultPath
Definition ShaderCompilerCore.h:709
bool EqualsResultPath(const FString &InResultPath, uint32 InResultPathHash) const
Definition ShaderCompilerCore.h:724
uint32 ResultPathUniqueIndex
Definition ShaderCompilerCore.h:711
FXxHash64 PathInSourceHash
Definition ShaderCompilerCore.h:706
bool EqualsResultPath(const ANSICHAR *InResultPath, uint32 InResultPathHash) const
Definition ShaderCompilerCore.h:729
uint32 ResultPathHash
Definition ShaderCompilerCore.h:710
TArray< ANSICHAR > ParentPath
Definition ShaderCompilerCore.h:708
bool EqualsPathInSource(const ANSICHAR *InPathInSource, int32 InPathInSourceLen, FXxHash64 InPathInSourceHash, const ANSICHAR *InParentPath) const
Definition ShaderCompilerCore.h:714
FShaderSharedAnsiStringPtr StrippedSource
Definition ShaderCompilerCore.h:712
TArray< ANSICHAR > PathInSource
Definition ShaderCompilerCore.h:707
Definition ShaderCore.h:186
EShaderFrequency GetFrequency() const
Definition ShaderCore.h:233
static UE_FORCEINLINE_HINT int32 Stricmp(const CharType *String1, const CharType *String2)
Definition CString.h:1030
static UE_FORCEINLINE_HINT int32 Strncmp(const CharType *String1, const CharType *String2, SIZE_T Count)
Definition CString.h:1024