UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ShaderCore.h File Reference
#include "Compression/OodleDataCompression.h"
#include "Compression/CompressedBuffer.h"
#include "Containers/Array.h"
#include "Containers/ArrayView.h"
#include "Containers/ContainerAllocationPolicies.h"
#include "Containers/Map.h"
#include "Containers/SortedMap.h"
#include "Containers/UnrealString.h"
#include "CoreMinimal.h"
#include "HAL/Platform.h"
#include "HAL/UnrealMemory.h"
#include "Logging/LogMacros.h"
#include "Memory/CompositeBuffer.h"
#include "Memory/SharedBuffer.h"
#include "Misc/AssertionMacros.h"
#include "Misc/CString.h"
#include "Misc/CoreStats.h"
#include "Misc/EnumClassFlags.h"
#include "Misc/Optional.h"
#include "Misc/Paths.h"
#include "Misc/SecureHash.h"
#include "Misc/TVariant.h"
#include "PixelFormat.h"
#include "RHIDefinitions.h"
#include "RHIShaderBindingLayout.h"
#include "Serialization/Archive.h"
#include "Serialization/MemoryLayout.h"
#include "ShaderParameterMetadata.h"
#include "Stats/Stats.h"
#include "Templates/Function.h"
#include "Templates/PimplPtr.h"
#include "Templates/RefCounting.h"
#include "Templates/SharedPointer.h"
#include "Templates/UnrealTemplate.h"
#include "UObject/NameTypes.h"
#include "UObject/UnrealNames.h"
#include "UniformBuffer.h"

Go to the source code of this file.

Classes

struct  FGenericShaderStat
 
struct  FShaderTarget
 
struct  FParameterAllocation
 
class  FShaderParameterMap
 
class  FShaderCompilerFlags
 
class  FShaderBindingLayout
 
class  FShaderBindingLayoutContainer
 
struct  FShaderResourceTableMap
 
class  FShaderCompilerDefineNameCache
 
struct  FShaderCompilerEnvironment
 
struct  FSharedShaderCompilerEnvironment
 
struct  FShaderCodePackedResourceCounts
 
struct  FShaderCodeGlobalUniformBufferConfiguration
 
struct  FShaderCodeResourceMasks
 
struct  FShaderCodeFeatures
 
struct  FShaderCodeName
 
struct  FShaderCodeUniformBuffers
 
struct  FShaderCodeShaderResourceTableDataDesc
 
struct  FShaderCodeVendorExtension
 
struct  FShaderCodeValidationExtension
 
struct  FShaderDiagnosticData
 
struct  FShaderDiagnosticExtension
 
class  FShaderCodeReader
 
class  FShaderCodeResource
 
class  FShaderCode
 

Namespaces

namespace  FShaderStatTagNames
 

Macros

#define SET_SHADER_DEFINE(ENVIRONMENT, NAME, VALUE)
 
#define SET_SHADER_DEFINE_AND_COMPILE_ARGUMENT(ENVIRONMENT, NAME, VALUE)
 
#define RENDERCORE_ATTRIBUTE_UNALIGNED
 

Typedefs

using FShaderStatVariant = TVariant< bool, float, int32, uint32, FString >
 
using FThreadSafeSharedStringPtr = TSharedPtr< FString, ESPMode::ThreadSafe >
 
using FThreadSafeNameBufferPtr = TSharedPtr< TArray< TCHAR >, ESPMode::ThreadSafe >
 
typedef int32 RENDERCORE_ATTRIBUTE_UNALIGNED unaligned_int32
 
typedef uint32 RENDERCORE_ATTRIBUTE_UNALIGNED unaligned_uint32
 

Enumerations

enum class  EShaderParameterType : uint8 {
  LooseData , UniformBuffer , Sampler , SRV ,
  UAV , BindlessSampler , BindlessSRV , BindlessUAV ,
  Num
}
 
enum class  EShaderParameterTypeMask : uint16 {
  LooseDataMask = 1 << uint16(EShaderParameterType::LooseData) , UniformBufferMask = 1 << uint16(EShaderParameterType::UniformBuffer) , SamplerMask = 1 << uint16(EShaderParameterType::Sampler) , SRVMask = 1 << uint16(EShaderParameterType::SRV) ,
  UAVMask = 1 << uint16(EShaderParameterType::UAV) , BindlessSamplerMask = 1 << uint16(EShaderParameterType::BindlessSampler) , BindlessSRVMask = 1 << uint16(EShaderParameterType::BindlessSRV) , BindlessUAVMask = 1 << uint16(EShaderParameterType::BindlessUAV)
}
 
enum class  EShaderOptionalDataKey : uint8 {
  AttributeInputs = uint8('i') , AttributeOutputs = uint8('o') , CompressedDebugCode = uint8('z') , Diagnostic = uint8('D') ,
  Features = uint8('x') , Name = uint8('n') , NativePath = uint8('P') , ObjectFile = uint8('O') ,
  PackedResourceCounts = uint8('p') , ResourceMasks = uint8('m') , ShaderModel6 = uint8('6') , SourceCode = uint8('c') ,
  UncompressedSize = uint8('U') , UniformBuffers = uint8('u') , Validation = uint8('V') , VendorExtension = uint8('v') ,
  ShaderBindingLayout = uint8('s') , EntryPoint = uint8('e') , GlobalUniformBufferConfiguration = uint8('G')
}
 
enum class  EShaderResourceUsageFlags : uint8 {
  None = 0 , GlobalUniformBuffer = 1 << 0 , BindlessResources = 1 << 1 , BindlessSamplers = 1 << 2 ,
  RootConstants = 1 << 3 , NoDerivativeOps = 1 << 4 , ShaderBundle = 1 << 5 , DiagnosticBuffer = 1 << 6
}
 
enum class  EShaderCompileJobPriority : uint8 {
  None = 0xff , Low = 0u , Normal , High ,
  ExtraHigh , ForceLocal , Num
}
 
enum class  EShaderCodeFeatures : uint16 {
  None = 0 , WaveOps = 1 << 0 , SixteenBitTypes = 1 << 1 , TypedUAVLoadsExtended = 1 << 2 ,
  Atomic64 = 1 << 3 , UE_DEPRECATED =(5.5, "EShaderCodeFeatures::DiagnosticBuffer is superseded by EShaderResourceUsageFlags::DiagnosticBuffer") = 1 << 4 , BindlessResources = 1 << 5 , BindlessSamplers = 1 << 6 ,
  StencilRef = 1 << 7 , BarycentricsSemantic = 1 << 8
}
 

Functions

bool operator== (const FShaderStatVariant &LHS, const FShaderStatVariant &RHS)
 
bool operator< (const FShaderStatVariant &LHS, const FShaderStatVariant &RHS)
 
 CSV_DECLARE_CATEGORY_MODULE_EXTERN (RENDERCORE_API, Shaders)
 
RENDERCORE_API DECLARE_LOG_CATEGORY_EXTERN (LogShaders, Error, All)
 
 DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN (TEXT("Num Total Niagara Shaders"), STAT_ShaderCompiling_NumTotalNiagaraShaders, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN (TEXT("Total Niagara Shader Compiling Time"), STAT_ShaderCompiling_NiagaraShaders, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN (TEXT("Num Total OpenColorIO Shaders"), STAT_ShaderCompiling_NumTotalOpenColorIOShaders, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN (TEXT("Total OpenColorIO Shader Compiling Time"), STAT_ShaderCompiling_OpenColorIOShaders, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN (TEXT("Total Material Shader Compiling Time"), STAT_ShaderCompiling_MaterialShaders, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN (TEXT("Total Global Shader Compiling Time"), STAT_ShaderCompiling_GlobalShaders, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN (TEXT("RHI Compile Time"), STAT_ShaderCompiling_RHI, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN (TEXT("Loading Shader Files"), STAT_ShaderCompiling_LoadingShaderFiles, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN (TEXT("CRCing Shader Files"), STAT_ShaderCompiling_HashingShaderFiles, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN (TEXT("HLSL Translation"), STAT_ShaderCompiling_HLSLTranslation, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN (TEXT("DDC Loading"), STAT_ShaderCompiling_DDCLoading, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN (TEXT("Material Loading"), STAT_ShaderCompiling_MaterialLoading, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN (TEXT("Material Compiling"), STAT_ShaderCompiling_MaterialCompiling, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN (TEXT("Num Total Material Shaders"), STAT_ShaderCompiling_NumTotalMaterialShaders, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN (TEXT("Num Special Material Shaders"), STAT_ShaderCompiling_NumSpecialMaterialShaders, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN (TEXT("Num Particle Material Shaders"), STAT_ShaderCompiling_NumParticleMaterialShaders, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN (TEXT("Num Skinned Material Shaders"), STAT_ShaderCompiling_NumSkinnedMaterialShaders, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN (TEXT("Num Lit Material Shaders"), STAT_ShaderCompiling_NumLitMaterialShaders, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN (TEXT("Num Unlit Material Shaders"), STAT_ShaderCompiling_NumUnlitMaterialShaders, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN (TEXT("Num Transparent Material Shaders"), STAT_ShaderCompiling_NumTransparentMaterialShaders, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN (TEXT("Num Opaque Material Shaders"), STAT_ShaderCompiling_NumOpaqueMaterialShaders, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN (TEXT("Num Masked Material Shaders"), STAT_ShaderCompiling_NumMaskedMaterialShaders, STATGROUP_ShaderCompiling, RENDERCORE_API)
 
 DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN (TEXT("Num Shaders Loaded"), STAT_Shaders_NumShadersLoaded, STATGROUP_Shaders, RENDERCORE_API)
 
 DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN (TEXT("Num Shaders Created"), STAT_Shaders_NumShadersCreated, STATGROUP_Shaders, RENDERCORE_API)
 
 DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN (TEXT("Num ShaderMaps Loaded"), STAT_Shaders_NumShaderMaps, STATGROUP_Shaders, RENDERCORE_API)
 
 DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN (TEXT("Num ShaderMaps Used"), STAT_Shaders_NumShaderMapsUsedForRendering, STATGROUP_Shaders, RENDERCORE_API)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("RT Shader Load Time"), STAT_Shaders_RTShaderLoadTime, STATGROUP_Shaders, RENDERCORE_API)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("Shader Memory"), STAT_Shaders_ShaderMemory, STATGROUP_Shaders, RENDERCORE_API)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("Shader Resource Mem"), STAT_Shaders_ShaderResourceMemory, STATGROUP_Shaders, RENDERCORE_API)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("Shader Preload Mem"), STAT_Shaders_ShaderPreloadMemory, STATGROUP_Shaders, RENDERCORE_API)
 
TStatId GetMemoryStatType (EShaderFrequency ShaderFrequency)
 
RENDERCORE_API void InitializeShaderHashCache ()
 
RENDERCORE_API void UpdateIncludeDirectoryForPreviewPlatform (EShaderPlatform PreviewPlatform, EShaderPlatform ActualPlatform)
 
RENDERCORE_API void CheckShaderHashCacheInclude (const FString &VirtualFilePath, EShaderPlatform ShaderPlatform, const FString &ShaderFormatName)
 
RENDERCORE_API void InitializeShaderTypes ()
 
RENDERCORE_API bool AllowDebugViewmodes ()
 
RENDERCORE_API bool AllowDebugViewmodes (EShaderPlatform Platform)
 
RENDERCORE_API FName GetShaderCompressionFormat ()
 
RENDERCORE_API void GetShaderCompressionOodleSettings (FOodleDataCompression::ECompressor &OutCompressor, FOodleDataCompression::ECompressionLevel &OutLevel, const FName &ShaderFormat=NAME_None)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (FShaderTarget)
 
 ENUM_CLASS_FLAGS (EShaderParameterTypeMask)
 
bool IsParameterBindless (EShaderParameterType ParameterType)
 
FArchiveoperator<< (FArchive &Ar, FUniformResourceEntry &Entry)
 
FArchiveoperator<< (FArchive &Ar, FUniformBufferEntry &Entry)
 
const TCHARShaderCompileJobPriorityToString (EShaderCompileJobPriority InPriority)
 
 ENUM_CLASS_FLAGS (EShaderCodeFeatures)
 
FArchiveoperator<< (FArchive &Ar, FShaderCodeValidationStride &ShaderCodeValidationStride)
 
FArchiveoperator<< (FArchive &Ar, FShaderCodeValidationType &ShaderCodeValidationType)
 
FArchiveoperator<< (FArchive &Ar, FShaderCodeValidationUBSize &ShaderCodeValidationSize)
 
FArchiveoperator<< (FArchive &Ar, FShaderDiagnosticData &ShaderCodeDiagnosticData)
 
RENDERCORE_API FArchiveoperator<< (FArchive &Ar, FSharedBuffer &Buffer)
 
RENDERCORE_API FString GetShaderSourceFilePath (const FString &VirtualFilePath, TArray< struct FShaderCompilerError > *CompileErrors=nullptr)
 
RENDERCORE_API FString ParseVirtualShaderFilename (const FString &InFilename)
 
RENDERCORE_API bool ReplaceVirtualFilePathForShaderPlatform (FString &InOutVirtualFilePath, EShaderPlatform ShaderPlatform)
 
RENDERCORE_API bool ReplaceVirtualFilePathForShaderAutogen (FString &InOutVirtualFilePath, EShaderPlatform ShaderPlatform, const FName *InShaderPlatformName=nullptr)
 
RENDERCORE_API void LoadShaderSourceFileChecked (const TCHAR *VirtualFilePath, EShaderPlatform ShaderPlatform, FString &OutFileContents, const FName *ShaderPlatformName=nullptr)
 
RENDERCORE_API void GetShaderIncludes (const TCHAR *EntryPointVirtualFilePath, const TCHAR *VirtualFilePath, TArray< FString > &IncludeVirtualFilePaths, EShaderPlatform ShaderPlatform, uint32 DepthLimit=100, const FName *ShaderPlatformName=nullptr)
 
RENDERCORE_API void GetShaderIncludes (const TCHAR *EntryPointVirtualFilePath, const TCHAR *VirtualFilePath, const FString &FileContents, TArray< FString > &IncludeVirtualFilePaths, EShaderPlatform ShaderPlatform, uint32 DepthLimit=100, const FName *ShaderPlatformName=nullptr)
 
RENDERCORE_API const class FSHAHashGetShaderFileHash (const TCHAR *VirtualFilePath, EShaderPlatform ShaderPlatform)
 
RENDERCORE_API const FSHAHashTryGetShaderFileHash (const TCHAR *VirtualFilePath, EShaderPlatform ShaderPlatform, FString *OutErrorMessage=nullptr)
 
RENDERCORE_API const class FSHAHashGetShaderFilesHash (const TArray< FString > &VirtualFilePaths, EShaderPlatform ShaderPlatform)
 
RENDERCORE_API void FlushShaderFileCache ()
 
RENDERCORE_API void InvalidateShaderFileCacheEntry (const TCHAR *InVirtualFilePath, EShaderPlatform InShaderPlatform, const FName *InShaderPlatformName=nullptr)
 
RENDERCORE_API void VerifyShaderSourceFiles (EShaderPlatform ShaderPlatform)
 
FString RENDERCORE_API MakeInjectedShaderCodeBlock (const TCHAR *BlockName, const FString &CodeToInject)
 
RENDERCORE_API const TMap< FString, FString > & AllShaderSourceDirectoryMappings ()
 
RENDERCORE_API void ResetAllShaderSourceDirectoryMappings ()
 
RENDERCORE_API void AddShaderSourceDirectoryMapping (const FString &VirtualShaderDirectory, const FString &RealShaderDirectory)
 
RENDERCORE_API void AddShaderSourceSharedVirtualDirectory (const FString &VirtualShaderDirectory)
 
RENDERCORE_API void AddShaderSourceFileEntry (TArray< FString > &OutVirtualFilePaths, FString VirtualFilePath, EShaderPlatform ShaderPlatform, const FName *ShaderPlatformName=nullptr)
 
RENDERCORE_API void GetAllVirtualShaderSourcePaths (TArray< FString > &OutVirtualFilePaths, EShaderPlatform ShaderPlatform, const FName *ShaderPlatformName=nullptr)
 

Variables

constexpr int32 NumShaderCompileJobPriorities = (int32)EShaderCompileJobPriority::Num
 

Macro Definition Documentation

◆ RENDERCORE_ATTRIBUTE_UNALIGNED

#define RENDERCORE_ATTRIBUTE_UNALIGNED

◆ SET_SHADER_DEFINE

#define SET_SHADER_DEFINE (   ENVIRONMENT,
  NAME,
  VALUE 
)
Value:
do { \
(ENVIRONMENT).SetDefine(Cache_##NAME, VALUE); \
} while(0)
#define TEXT(x)
Definition Platform.h:1272
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition ShaderCore.h:519

Optimized define setting macros that cache the FName lookup, and potentially the map index.

◆ SET_SHADER_DEFINE_AND_COMPILE_ARGUMENT

#define SET_SHADER_DEFINE_AND_COMPILE_ARGUMENT (   ENVIRONMENT,
  NAME,
  VALUE 
)
Value:
do { \
(ENVIRONMENT).SetDefine(Cache_##NAME, VALUE); \
(ENVIRONMENT).SetCompileArgument(TEXT(#NAME), VALUE); \
} while(0)

Typedef Documentation

◆ FShaderStatVariant

◆ FThreadSafeNameBufferPtr

◆ FThreadSafeSharedStringPtr

◆ unaligned_int32

◆ unaligned_uint32

Enumeration Type Documentation

◆ EShaderCodeFeatures

Enumerator
None 
WaveOps 
SixteenBitTypes 
TypedUAVLoadsExtended 
Atomic64 
UE_DEPRECATED 
BindlessResources 
BindlessSamplers 
StencilRef 
BarycentricsSemantic 

◆ EShaderCompileJobPriority

Enumerator
None 
Low 
Normal 
High 
ExtraHigh 
ForceLocal 
Num 

◆ EShaderOptionalDataKey

Enumerator
AttributeInputs 
AttributeOutputs 
CompressedDebugCode 
Diagnostic 
Features 
Name 
NativePath 
ObjectFile 
PackedResourceCounts 
ResourceMasks 
ShaderModel6 
SourceCode 
UncompressedSize 
UniformBuffers 
Validation 
VendorExtension 
ShaderBindingLayout 
EntryPoint 
GlobalUniformBufferConfiguration 

◆ EShaderParameterType

Enumerator
LooseData 
UniformBuffer 
Sampler 
SRV 
UAV 
BindlessSampler 
BindlessSRV 
BindlessUAV 
Num 

◆ EShaderParameterTypeMask

Enumerator
LooseDataMask 
UniformBufferMask 
SamplerMask 
SRVMask 
UAVMask 
BindlessSamplerMask 
BindlessSRVMask 
BindlessUAVMask 

◆ EShaderResourceUsageFlags

Enumerator
None 
GlobalUniformBuffer 
BindlessResources 
BindlessSamplers 
RootConstants 
NoDerivativeOps 
ShaderBundle 
DiagnosticBuffer 

Function Documentation

◆ AddShaderSourceDirectoryMapping()

RENDERCORE_API void AddShaderSourceDirectoryMapping ( const FString &  VirtualShaderDirectory,
const FString &  RealShaderDirectory 
)
extern

Maps a real shader directory existing on disk to a virtual shader directory.

Parameters
VirtualShaderDirectoryUnique absolute path of the virtual shader directory (ex: /Project).
RealShaderDirectoryFPlatformProcess::BaseDir() relative path of the directory map.

◆ AddShaderSourceFileEntry()

RENDERCORE_API void AddShaderSourceFileEntry ( TArray< FString > &  OutVirtualFilePaths,
FString  VirtualFilePath,
EShaderPlatform  ShaderPlatform,
const FName ShaderPlatformName 
)
extern

Add a new entry to the list of shader source files Only unique entries which can be loaded are added as well as their include files

Parameters
OutVirtualFilePaths- [out] list of shader source files to add to
ShaderFilename- shader file to add

◆ AddShaderSourceSharedVirtualDirectory()

RENDERCORE_API void AddShaderSourceSharedVirtualDirectory ( const FString &  VirtualShaderDirectory)
extern

Specifies that the virtual shader directory and all subdirectories should contain only .h files that are shared between C++ / shader

Parameters
VirtualShaderDirectoryUnique absolute path of the virtual shader directory (ex: /Project/Shared/).

◆ AllowDebugViewmodes() [1/2]

RENDERCORE_API bool AllowDebugViewmodes ( )
extern

Returns true if debug viewmodes are allowed for the current platform.

◆ AllowDebugViewmodes() [2/2]

RENDERCORE_API bool AllowDebugViewmodes ( EShaderPlatform  Platform)
extern

Returns true if debug viewmodes are allowed for the given platform.

Returns true if debug viewmodes are allowed for the current platform.

◆ AllShaderSourceDirectoryMappings()

RENDERCORE_API const TMap< FString, FString > & AllShaderSourceDirectoryMappings ( )
extern

Returns the map virtual shader directory path -> real shader directory path.

◆ CheckShaderHashCacheInclude()

RENDERCORE_API void CheckShaderHashCacheInclude ( const FString &  VirtualFilePath,
EShaderPlatform  ShaderPlatform,
const FString &  ShaderFormatName 
)
extern

Checks if shader include isn't skipped by a shader hash cache.

◆ CSV_DECLARE_CATEGORY_MODULE_EXTERN()

CSV_DECLARE_CATEGORY_MODULE_EXTERN ( RENDERCORE_API  ,
Shaders   
)

◆ DECLARE_CYCLE_STAT_EXTERN()

DECLARE_CYCLE_STAT_EXTERN ( TEXT("RT Shader Load Time" ,
STAT_Shaders_RTShaderLoadTime  ,
STATGROUP_Shaders  ,
RENDERCORE_API   
)

◆ DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN() [1/15]

DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN ( TEXT("Num Lit Material Shaders" ,
STAT_ShaderCompiling_NumLitMaterialShaders  ,
STATGROUP_ShaderCompiling  ,
RENDERCORE_API   
)

◆ DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN() [2/15]

◆ DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN() [3/15]

◆ DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN() [4/15]

DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN ( TEXT("Num Particle Material Shaders" ,
STAT_ShaderCompiling_NumParticleMaterialShaders  ,
STATGROUP_ShaderCompiling  ,
RENDERCORE_API   
)

◆ DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN() [5/15]

DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN ( TEXT("Num ShaderMaps Loaded" ,
STAT_Shaders_NumShaderMaps  ,
STATGROUP_Shaders  ,
RENDERCORE_API   
)

◆ DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN() [6/15]

DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN ( TEXT("Num ShaderMaps Used" ,
STAT_Shaders_NumShaderMapsUsedForRendering  ,
STATGROUP_Shaders  ,
RENDERCORE_API   
)

◆ DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN() [7/15]

DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN ( TEXT("Num Shaders Created" ,
STAT_Shaders_NumShadersCreated  ,
STATGROUP_Shaders  ,
RENDERCORE_API   
)

◆ DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN() [8/15]

DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN ( TEXT("Num Shaders Loaded" ,
STAT_Shaders_NumShadersLoaded  ,
STATGROUP_Shaders  ,
RENDERCORE_API   
)

◆ DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN() [9/15]

◆ DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN() [10/15]

◆ DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN() [11/15]

DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN ( TEXT("Num Total Material Shaders" ,
STAT_ShaderCompiling_NumTotalMaterialShaders  ,
STATGROUP_ShaderCompiling  ,
RENDERCORE_API   
)

◆ DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN() [12/15]

DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN ( TEXT("Num Total Niagara Shaders" ,
STAT_ShaderCompiling_NumTotalNiagaraShaders  ,
STATGROUP_ShaderCompiling  ,
RENDERCORE_API   
)

◆ DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN() [13/15]

DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN ( TEXT("Num Total OpenColorIO Shaders" ,
STAT_ShaderCompiling_NumTotalOpenColorIOShaders  ,
STATGROUP_ShaderCompiling  ,
RENDERCORE_API   
)

◆ DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN() [14/15]

◆ DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN() [15/15]

DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN ( TEXT("Num Unlit Material Shaders" ,
STAT_ShaderCompiling_NumUnlitMaterialShaders  ,
STATGROUP_ShaderCompiling  ,
RENDERCORE_API   
)

◆ DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN() [1/11]

DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN ( TEXT("CRCing Shader Files" ,
STAT_ShaderCompiling_HashingShaderFiles  ,
STATGROUP_ShaderCompiling  ,
RENDERCORE_API   
)

◆ DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN() [2/11]

DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN ( TEXT("DDC Loading" ,
STAT_ShaderCompiling_DDCLoading  ,
STATGROUP_ShaderCompiling  ,
RENDERCORE_API   
)

◆ DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN() [3/11]

DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN ( TEXT("HLSL Translation" ,
STAT_ShaderCompiling_HLSLTranslation  ,
STATGROUP_ShaderCompiling  ,
RENDERCORE_API   
)

◆ DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN() [4/11]

DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN ( TEXT("Loading Shader Files" ,
STAT_ShaderCompiling_LoadingShaderFiles  ,
STATGROUP_ShaderCompiling  ,
RENDERCORE_API   
)

◆ DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN() [5/11]

DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN ( TEXT("Material Compiling" ,
STAT_ShaderCompiling_MaterialCompiling  ,
STATGROUP_ShaderCompiling  ,
RENDERCORE_API   
)

◆ DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN() [6/11]

DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN ( TEXT("Material Loading" ,
STAT_ShaderCompiling_MaterialLoading  ,
STATGROUP_ShaderCompiling  ,
RENDERCORE_API   
)

◆ DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN() [7/11]

DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN ( TEXT("RHI Compile Time" ,
STAT_ShaderCompiling_RHI  ,
STATGROUP_ShaderCompiling  ,
RENDERCORE_API   
)

◆ DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN() [8/11]

DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN ( TEXT("Total Global Shader Compiling Time" ,
STAT_ShaderCompiling_GlobalShaders  ,
STATGROUP_ShaderCompiling  ,
RENDERCORE_API   
)

◆ DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN() [9/11]

DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN ( TEXT("Total Material Shader Compiling Time" ,
STAT_ShaderCompiling_MaterialShaders  ,
STATGROUP_ShaderCompiling  ,
RENDERCORE_API   
)

◆ DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN() [10/11]

DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN ( TEXT("Total Niagara Shader Compiling Time" ,
STAT_ShaderCompiling_NiagaraShaders  ,
STATGROUP_ShaderCompiling  ,
RENDERCORE_API   
)

◆ DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN() [11/11]

DECLARE_FLOAT_ACCUMULATOR_STAT_EXTERN ( TEXT("Total OpenColorIO Shader Compiling Time" ,
STAT_ShaderCompiling_OpenColorIOShaders  ,
STATGROUP_ShaderCompiling  ,
RENDERCORE_API   
)

◆ DECLARE_INTRINSIC_TYPE_LAYOUT()

DECLARE_INTRINSIC_TYPE_LAYOUT ( FShaderTarget  )

◆ DECLARE_LOG_CATEGORY_EXTERN()

RENDERCORE_API DECLARE_LOG_CATEGORY_EXTERN ( LogShaders  ,
Error  ,
All   
)

Controls whether shader related logs are visible. Note: The runtime verbosity is driven by the console variable 'r.ShaderDevelopmentMode'

◆ DECLARE_MEMORY_STAT_EXTERN() [1/3]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("Shader Memory" ,
STAT_Shaders_ShaderMemory  ,
STATGROUP_Shaders  ,
RENDERCORE_API   
)

◆ DECLARE_MEMORY_STAT_EXTERN() [2/3]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("Shader Preload Mem" ,
STAT_Shaders_ShaderPreloadMemory  ,
STATGROUP_Shaders  ,
RENDERCORE_API   
)

◆ DECLARE_MEMORY_STAT_EXTERN() [3/3]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("Shader Resource Mem" ,
STAT_Shaders_ShaderResourceMemory  ,
STATGROUP_Shaders  ,
RENDERCORE_API   
)

◆ ENUM_CLASS_FLAGS() [1/2]

ENUM_CLASS_FLAGS ( EShaderCodeFeatures  )

◆ ENUM_CLASS_FLAGS() [2/2]

ENUM_CLASS_FLAGS ( EShaderParameterTypeMask  )

◆ FlushShaderFileCache()

RENDERCORE_API void FlushShaderFileCache ( )
extern

Flushes the shader file and CRC cache, and regenerates the binary shader files if necessary. Allows shader source files to be re-read properly even if they've been modified since startup.

◆ GetAllVirtualShaderSourcePaths()

RENDERCORE_API void GetAllVirtualShaderSourcePaths ( TArray< FString > &  OutVirtualFilePaths,
EShaderPlatform  ShaderPlatform,
const FName ShaderPlatformName 
)
extern

Generates a list of virtual paths of all shader source that engine needs to load.

Parameters
OutVirtualFilePaths- [out] list of shader source files to add to

◆ GetMemoryStatType()

TStatId GetMemoryStatType ( EShaderFrequency  ShaderFrequency)
inline

◆ GetShaderCompressionFormat()

RENDERCORE_API FName GetShaderCompressionFormat ( )
extern

Returns the shader compression format. Oodle is used exclusively now. r.Shaders.SkipCompression configures Oodle to be uncompressed instead of returning NAME_None.

◆ GetShaderCompressionOodleSettings()

RENDERCORE_API void GetShaderCompressionOodleSettings ( FOodleDataCompression::ECompressor OutCompressor,
FOodleDataCompression::ECompressionLevel OutLevel,
const FName ShaderFormat = NAME_None 
)
extern

Returns Oodle-specific shader compression format settings (passing ShaderFormat for future proofing, but as of now the setting is global for all formats).

◆ GetShaderFileHash()

RENDERCORE_API const class FSHAHash & GetShaderFileHash ( const TCHAR VirtualFilePath,
EShaderPlatform  ShaderPlatform 
)
extern

Calculates a Hash for the given filename if it does not already exist in the Hash cache.

Parameters
Filename- shader file to Hash
ShaderPlatform- shader platform to Hash
Returns
Reference to the Hash created and stored for the file, or to an empty FSHAHash if not found. Logs an error if the file is not loadable.

◆ GetShaderFilesHash()

RENDERCORE_API const class FSHAHash & GetShaderFilesHash ( const TArray< FString > &  VirtualFilePaths,
EShaderPlatform  ShaderPlatform 
)
extern

Calculates a Hash for the list of filenames if it does not already exist in the Hash cache.

Calculates a Hash for the given filename and its includes if it does not already exist in the Hash cache.

Parameters
Filename- shader file to Hash
ShaderPlatform- shader platform to Hash

◆ GetShaderIncludes() [1/2]

RENDERCORE_API void GetShaderIncludes ( const TCHAR EntryPointVirtualFilePath,
const TCHAR VirtualFilePath,
const FString &  FileContents,
TArray< FString > &  IncludeVirtualFilePaths,
EShaderPlatform  ShaderPlatform,
uint32  DepthLimit = 100,
const FName ShaderPlatformName = nullptr 
)
extern

◆ GetShaderIncludes() [2/2]

RENDERCORE_API void GetShaderIncludes ( const TCHAR EntryPointVirtualFilePath,
const TCHAR VirtualFilePath,
TArray< FString > &  IncludeVirtualFilePaths,
EShaderPlatform  ShaderPlatform,
uint32  DepthLimit = 100,
const FName ShaderPlatformName = nullptr 
)
extern

Recursively populates IncludeFilenames with the include filenames from Filename

◆ GetShaderSourceFilePath()

RENDERCORE_API FString GetShaderSourceFilePath ( const FString &  VirtualFilePath,
TArray< struct FShaderCompilerError > *  CompileErrors = nullptr 
)
extern

Convert the virtual shader path to an actual file system path. CompileErrors output array is optional.

◆ InitializeShaderHashCache()

RENDERCORE_API void InitializeShaderHashCache ( )
extern

Initializes shader hash cache from IShaderFormatModules. This must be called before reading any shader include.

◆ InitializeShaderTypes()

RENDERCORE_API void InitializeShaderTypes ( )
extern

Initializes cached shader type data. This must be called before creating any FShaderType.

◆ InvalidateShaderFileCacheEntry()

RENDERCORE_API void InvalidateShaderFileCacheEntry ( const TCHAR InVirtualFilePath,
EShaderPlatform  InShaderPlatform,
const FName InShaderPlatformName = nullptr 
)
extern

Invalidates a single entry in the shader file and CRC caches.

◆ IsParameterBindless()

bool IsParameterBindless ( EShaderParameterType  ParameterType)
inline

◆ LoadShaderSourceFileChecked()

RENDERCORE_API void LoadShaderSourceFileChecked ( const TCHAR VirtualFilePath,
EShaderPlatform  ShaderPlatform,
FString &  OutFileContents,
const FName ShaderPlatformName = nullptr 
)
extern

Loads the shader file with the given name. If the shader file couldn't be loaded, throws a fatal error.

◆ MakeInjectedShaderCodeBlock()

FString RENDERCORE_API MakeInjectedShaderCodeBlock ( const TCHAR BlockName,
const FString &  CodeToInject 
)

Create a block of source code to be injected in the preprocessed shader code. The Block will be put into a line directive to show up in case shader compilation failures happen in this code block.

◆ operator<()

bool operator< ( const FShaderStatVariant LHS,
const FShaderStatVariant RHS 
)

◆ operator<<() [1/7]

FArchive & operator<< ( FArchive Ar,
FShaderCodeValidationStride ShaderCodeValidationStride 
)
inline

◆ operator<<() [2/7]

FArchive & operator<< ( FArchive Ar,
FShaderCodeValidationType ShaderCodeValidationType 
)
inline

◆ operator<<() [3/7]

FArchive & operator<< ( FArchive Ar,
FShaderCodeValidationUBSize ShaderCodeValidationSize 
)
inline

◆ operator<<() [4/7]

FArchive & operator<< ( FArchive Ar,
FShaderDiagnosticData ShaderCodeDiagnosticData 
)
inline

◆ operator<<() [5/7]

RENDERCORE_API FArchive & operator<< ( FArchive Ar,
FSharedBuffer Buffer 
)

◆ operator<<() [6/7]

FArchive & operator<< ( FArchive Ar,
FUniformBufferEntry Entry 
)
inline

◆ operator<<() [7/7]

FArchive & operator<< ( FArchive Ar,
FUniformResourceEntry Entry 
)
inline

◆ operator==()

bool operator== ( const FShaderStatVariant LHS,
const FShaderStatVariant RHS 
)

◆ ParseVirtualShaderFilename()

RENDERCORE_API FString ParseVirtualShaderFilename ( const FString &  InFilename)
extern

Converts an absolute or relative shader filename to a filename relative to the shader directory.

Parameters
InFilename- The shader filename.
Returns
a filename relative to the shaders directory.

◆ ReplaceVirtualFilePathForShaderAutogen()

RENDERCORE_API bool ReplaceVirtualFilePathForShaderAutogen ( FString &  InOutVirtualFilePath,
EShaderPlatform  ShaderPlatform,
const FName InShaderPlatformName = nullptr 
)
extern

Replaces virtual platform path with appropriate autogen path for a given ShaderPlatform. Returns true if path was changed.

◆ ReplaceVirtualFilePathForShaderPlatform()

RENDERCORE_API bool ReplaceVirtualFilePathForShaderPlatform ( FString &  InOutVirtualFilePath,
EShaderPlatform  ShaderPlatform 
)
extern

Replaces virtual platform path with appropriate path for a given ShaderPlatform. Returns true if path was changed.

◆ ResetAllShaderSourceDirectoryMappings()

RENDERCORE_API void ResetAllShaderSourceDirectoryMappings ( )
extern

Hook for shader compile worker to reset the directory mappings.

◆ ShaderCompileJobPriorityToString()

const TCHAR * ShaderCompileJobPriorityToString ( EShaderCompileJobPriority  InPriority)
inline

◆ TryGetShaderFileHash()

RENDERCORE_API const FSHAHash * TryGetShaderFileHash ( const TCHAR VirtualFilePath,
EShaderPlatform  ShaderPlatform,
FString *  OutErrorMessage = nullptr 
)
extern

Calculates a Hash for the given filename if it does not already exist in the Hash cache.

Parameters
Filename- shader file to Hash
ShaderPlatform- shader platform to Hash
OutErrorMessage- If non-null, receives the errormessage if nullptr is returned.
Returns
Pointer to the Hash created and stored for the file, or nullptr if not found.

◆ UpdateIncludeDirectoryForPreviewPlatform()

RENDERCORE_API void UpdateIncludeDirectoryForPreviewPlatform ( EShaderPlatform  PreviewPlatform,
EShaderPlatform  ActualPlatform 
)
extern

Updates the PreviewPlatform's IncludeDirectory to match that of the Parent Platform

◆ VerifyShaderSourceFiles()

RENDERCORE_API void VerifyShaderSourceFiles ( EShaderPlatform  ShaderPlatform)
extern

Kick off SHA verification for all shader source files

Variable Documentation

◆ NumShaderCompileJobPriorities

constexpr int32 NumShaderCompileJobPriorities = (int32)EShaderCompileJobPriority::Num
inlineconstexpr