UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FShaderCompilerEnvironment Struct Reference

#include <ShaderCore.h>

+ Inheritance diagram for FShaderCompilerEnvironment:

Public Member Functions

RENDERCORE_API FShaderCompilerEnvironment ()
 
RENDERCORE_API FShaderCompilerEnvironment (FMemoryHasherBlake3 &Hasher)
 
RENDERCORE_API void SetDefine (const TCHAR *Name, const TCHAR *Value)
 
RENDERCORE_API void SetDefine (const TCHAR *Name, const FString &Value)
 
RENDERCORE_API void SetDefine (const TCHAR *Name, uint32 Value)
 
RENDERCORE_API void SetDefine (const TCHAR *Name, int32 Value)
 
RENDERCORE_API void SetDefine (const TCHAR *Name, bool Value)
 
RENDERCORE_API void SetDefine (const TCHAR *Name, float Value)
 
RENDERCORE_API void SetDefine (FName Name, const TCHAR *Value)
 
RENDERCORE_API void SetDefine (FName Name, const FString &Value)
 
RENDERCORE_API void SetDefine (FName Name, uint32 Value)
 
RENDERCORE_API void SetDefine (FName Name, int32 Value)
 
RENDERCORE_API void SetDefine (FName Name, bool Value)
 
RENDERCORE_API void SetDefine (FName Name, float Value)
 
RENDERCORE_API void SetDefine (FShaderCompilerDefineNameCache &Name, const TCHAR *Value)
 
RENDERCORE_API void SetDefine (FShaderCompilerDefineNameCache &Name, const FString &Value)
 
RENDERCORE_API void SetDefine (FShaderCompilerDefineNameCache &Name, uint32 Value)
 
RENDERCORE_API void SetDefine (FShaderCompilerDefineNameCache &Name, int32 Value)
 
RENDERCORE_API void SetDefine (FShaderCompilerDefineNameCache &Name, bool Value)
 
RENDERCORE_API void SetDefine (FShaderCompilerDefineNameCache &Name, float Value)
 
template<typename ValueType >
void SetDefineIfUnset (const TCHAR *Name, ValueType Value)
 
template<typename ValueType >
void SetCompileArgument (const TCHAR *Name, ValueType Value)
 
void SetCompileArgument (const TCHAR *Name, TVariant< bool, float, int32, uint32, FString > Value)
 
template<typename ValueType >
void SetDefineAndCompileArgument (const TCHAR *Name, ValueType Value)
 
bool HasCompileArgument (const TCHAR *Name) const
 
template<typename ValueType >
ValueType GetCompileArgument (const TCHAR *Name, const ValueType &DefaultValue) const
 
template<typename ValueType >
bool GetCompileArgument (const TCHAR *Name, ValueType &OutValue) const
 
void SetRenderTargetOutputFormat (uint32 RenderTargetIndex, EPixelFormat PixelFormat)
 
RENDERCORE_API void SerializeEverythingButFiles (FArchive &Ar)
 
RENDERCORE_API void SerializeCompilationDependencies (FArchive &Ar)
 
RENDERCORE_API void Merge (const FShaderCompilerEnvironment &Other)
 
RENDERCORE_API FString GetDefinitionsAsCommentedCode () const
 

Public Attributes

TMap< FString, FString > IncludeVirtualPathToContentsMap
 
TMap< FString, FThreadSafeSharedAnsiStringPtrIncludeVirtualPathToSharedContentsMap
 
FShaderCompilerFlags CompilerFlags
 
TMap< uint32, uint8RenderTargetOutputFormatsMap
 
FShaderResourceTableMap ResourceTableMap
 
TMap< FString, FUniformBufferEntryUniformBufferMap
 
const FShaderBindingLayoutShaderBindingLayout = nullptr
 
FRHIShaderBindingLayout RHIShaderBindingLayout
 
const ITargetPlatformTargetPlatform = nullptr
 
bool FullPrecisionInPS = 0
 

Friends

class FShaderCompileUtilities
 
class FShaderPreprocessorUtilities
 
FArchiveoperator<< (FArchive &Ar, FShaderCompilerEnvironment &Environment)
 

Detailed Description

The environment used to compile a shader.

Constructor & Destructor Documentation

◆ FShaderCompilerEnvironment() [1/2]

FShaderCompilerEnvironment::FShaderCompilerEnvironment ( )

Default constructor.

◆ FShaderCompilerEnvironment() [2/2]

FShaderCompilerEnvironment::FShaderCompilerEnvironment ( FMemoryHasherBlake3 Hasher)

Constructor used when enviroment is constructed temporarily purely for the purpose of hashing for inclusion in DDC keys.

Member Function Documentation

◆ GetCompileArgument() [1/2]

template<typename ValueType >
ValueType FShaderCompilerEnvironment::GetCompileArgument ( const TCHAR Name,
const ValueType &  DefaultValue 
) const
inline

◆ GetCompileArgument() [2/2]

template<typename ValueType >
bool FShaderCompilerEnvironment::GetCompileArgument ( const TCHAR Name,
ValueType &  OutValue 
) const
inline

◆ GetDefinitionsAsCommentedCode()

FString FShaderCompilerEnvironment::GetDefinitionsAsCommentedCode ( ) const

◆ HasCompileArgument()

bool FShaderCompilerEnvironment::HasCompileArgument ( const TCHAR Name) const
inline

◆ Merge()

void FShaderCompilerEnvironment::Merge ( const FShaderCompilerEnvironment Other)

◆ SerializeCompilationDependencies()

void FShaderCompilerEnvironment::SerializeCompilationDependencies ( FArchive Ar)

◆ SerializeEverythingButFiles()

void FShaderCompilerEnvironment::SerializeEverythingButFiles ( FArchive Ar)

This "core" serialization is also used for the hashing the compiler job (where files are handled differently). Should stay in sync with the ShaderCompileWorker.

◆ SetCompileArgument() [1/2]

void FShaderCompilerEnvironment::SetCompileArgument ( const TCHAR Name,
TVariant< bool, float, int32, uint32, FString >  Value 
)
inline

◆ SetCompileArgument() [2/2]

template<typename ValueType >
void FShaderCompilerEnvironment::SetCompileArgument ( const TCHAR Name,
ValueType  Value 
)
inline

◆ SetDefine() [1/18]

void FShaderCompilerEnvironment::SetDefine ( const TCHAR Name,
bool  Value 
)

◆ SetDefine() [2/18]

void FShaderCompilerEnvironment::SetDefine ( const TCHAR Name,
const FString &  Value 
)

◆ SetDefine() [3/18]

void FShaderCompilerEnvironment::SetDefine ( const TCHAR Name,
const TCHAR Value 
)

Works for TCHAR e.g. SetDefine(TEXT("NAME"), TEXT("Test")); e.g. SetDefine(TEXT("NUM_SAMPLES"), 1); e.g. SetDefine(TEXT("DOIT"), true);

Or use optimized macros, which can cache FName and map lookups to improve performance: e.g. SET_SHADER_DEFINE(NAME, TEXT("Test")); e.g. SET_SHADER_DEFINE(NUM_SAMPLES, 1); e.g. SET_SHADER_DEFINE(DOIT, true);

◆ SetDefine() [4/18]

void FShaderCompilerEnvironment::SetDefine ( const TCHAR Name,
float  Value 
)

◆ SetDefine() [5/18]

void FShaderCompilerEnvironment::SetDefine ( const TCHAR Name,
int32  Value 
)

◆ SetDefine() [6/18]

void FShaderCompilerEnvironment::SetDefine ( const TCHAR Name,
uint32  Value 
)

◆ SetDefine() [7/18]

void FShaderCompilerEnvironment::SetDefine ( FName  Name,
bool  Value 
)

◆ SetDefine() [8/18]

void FShaderCompilerEnvironment::SetDefine ( FName  Name,
const FString &  Value 
)

◆ SetDefine() [9/18]

void FShaderCompilerEnvironment::SetDefine ( FName  Name,
const TCHAR Value 
)

◆ SetDefine() [10/18]

void FShaderCompilerEnvironment::SetDefine ( FName  Name,
float  Value 
)

◆ SetDefine() [11/18]

void FShaderCompilerEnvironment::SetDefine ( FName  Name,
int32  Value 
)

◆ SetDefine() [12/18]

void FShaderCompilerEnvironment::SetDefine ( FName  Name,
uint32  Value 
)

◆ SetDefine() [13/18]

void FShaderCompilerEnvironment::SetDefine ( FShaderCompilerDefineNameCache Name,
bool  Value 
)

◆ SetDefine() [14/18]

void FShaderCompilerEnvironment::SetDefine ( FShaderCompilerDefineNameCache Name,
const FString &  Value 
)

◆ SetDefine() [15/18]

void FShaderCompilerEnvironment::SetDefine ( FShaderCompilerDefineNameCache Name,
const TCHAR Value 
)

◆ SetDefine() [16/18]

void FShaderCompilerEnvironment::SetDefine ( FShaderCompilerDefineNameCache Name,
float  Value 
)

◆ SetDefine() [17/18]

void FShaderCompilerEnvironment::SetDefine ( FShaderCompilerDefineNameCache Name,
int32  Value 
)

◆ SetDefine() [18/18]

void FShaderCompilerEnvironment::SetDefine ( FShaderCompilerDefineNameCache Name,
uint32  Value 
)

◆ SetDefineAndCompileArgument()

template<typename ValueType >
void FShaderCompilerEnvironment::SetDefineAndCompileArgument ( const TCHAR Name,
ValueType  Value 
)
inline

◆ SetDefineIfUnset()

template<typename ValueType >
void FShaderCompilerEnvironment::SetDefineIfUnset ( const TCHAR Name,
ValueType  Value 
)
inline

◆ SetRenderTargetOutputFormat()

void FShaderCompilerEnvironment::SetRenderTargetOutputFormat ( uint32  RenderTargetIndex,
EPixelFormat  PixelFormat 
)
inline

Friends And Related Symbol Documentation

◆ FShaderCompileUtilities

◆ FShaderPreprocessorUtilities

friend class FShaderPreprocessorUtilities
friend

◆ operator<<

FArchive & operator<< ( FArchive Ar,
FShaderCompilerEnvironment Environment 
)
friend

Member Data Documentation

◆ CompilerFlags

FShaderCompilerFlags FShaderCompilerEnvironment::CompilerFlags

◆ FullPrecisionInPS

bool FShaderCompilerEnvironment::FullPrecisionInPS = 0

◆ IncludeVirtualPathToContentsMap

TMap<FString,FString> FShaderCompilerEnvironment::IncludeVirtualPathToContentsMap

◆ IncludeVirtualPathToSharedContentsMap

TMap<FString, FThreadSafeSharedAnsiStringPtr> FShaderCompilerEnvironment::IncludeVirtualPathToSharedContentsMap

◆ RenderTargetOutputFormatsMap

TMap<uint32,uint8> FShaderCompilerEnvironment::RenderTargetOutputFormatsMap

◆ ResourceTableMap

FShaderResourceTableMap FShaderCompilerEnvironment::ResourceTableMap

◆ RHIShaderBindingLayout

FRHIShaderBindingLayout FShaderCompilerEnvironment::RHIShaderBindingLayout

◆ ShaderBindingLayout

const FShaderBindingLayout* FShaderCompilerEnvironment::ShaderBindingLayout = nullptr

◆ TargetPlatform

const ITargetPlatform* FShaderCompilerEnvironment::TargetPlatform = nullptr

◆ UniformBufferMap

TMap<FString, FUniformBufferEntry> FShaderCompilerEnvironment::UniformBufferMap

The documentation for this struct was generated from the following files: