UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FShaderParametersMetadata Class Reference

#include <ShaderParameterMetadata.h>

Classes

class  FMember
 

Public Types

enum class  EUseCase : uint8 { ShaderParameterStruct , UniformBuffer , DataDrivenUniformBuffer }
 
enum class  EUsageFlags : uint8 {
  None = 0 , NoEmulatedUniformBuffer = 1 << 0 , UniformView = 1 << 1 , NeedsReflectedMembers = 1 << 2 ,
  ManuallyBoundByPass = 1 << 3
}
 

Public Member Functions

RENDERCORE_API FShaderParametersMetadata (EUseCase UseCase, EUniformBufferBindingFlags InBindingFlags, const TCHAR *InLayoutName, const TCHAR *InStructTypeName, const TCHAR *InShaderVariableName, const TCHAR *InStaticSlotName, const ANSICHAR *InFileName, const int32 InFileLine, uint32 InSize, const TArray< FMember > &InMembers, bool bForceCompleteInitialization=false, FRHIUniformBufferLayoutInitializer *OutLayoutInitializer=nullptr, EUsageFlags InUsageFlags=EUsageFlags::None)
 
virtual RENDERCORE_API ~FShaderParametersMetadata ()
 
RENDERCORE_API void GetNestedStructs (TArray< const FShaderParametersMetadata * > &OutNestedStructs) const
 
const TCHARGetStructTypeName () const
 
const TCHARGetShaderVariableName () const
 
const FHashedNameGetShaderVariableHashedName () const
 
const TCHARGetStaticSlotName () const
 
bool HasStaticSlot () const
 
EUniformBufferBindingFlags GetBindingFlags () const
 
EUniformBufferBindingFlags GetPreferredBindingFlag () const
 
const ANSICHARGetFileName () const
 
const int32 GetFileLine () const
 
uint32 GetSize () const
 
EUseCase GetUseCase () const
 
bool IsLayoutInitialized () const
 
EUsageFlags GetUsageFlags () const
 
const FRHIUniformBufferLayoutGetLayout () const
 
const FRHIUniformBufferLayoutGetLayoutPtr () const
 
const TArray< FMember > & GetMembers () const
 
RENDERCORE_API void FindMemberFromOffset (uint16 MemberOffset, const FShaderParametersMetadata **OutContainingStruct, const FShaderParametersMetadata::FMember **OutMember, int32 *ArrayElementId, FString *NamePrefix) const
 
RENDERCORE_API FString GetFullMemberCodeName (uint16 MemberOffset) const
 
uint32 GetLayoutHash () const
 
const FBlake3HashGetLayoutSignature () const
 
template<typename TParameterFunction >
void IterateStructureMetadataDependencies (TParameterFunction Lambda) const
 

Static Public Member Functions

static RENDERCORE_API TLinkedList< FShaderParametersMetadata * > *& GetStructList ()
 
static RENDERCORE_API TMap< FHashedName, FShaderParametersMetadata * > & GetNameStructMap ()
 
static RENDERCORE_API void InitializeAllUniformBufferStructs ()
 

Static Public Attributes

static constexpr const TCHARkRootUniformBufferBindingName = TEXT("_RootShaderParameters")
 
static constexpr int32 kRootCBufferBindingIndex = 0
 

Detailed Description

A uniform buffer struct.

Member Enumeration Documentation

◆ EUsageFlags

Additional flags that can be used to determine usage

Enumerator
None 
NoEmulatedUniformBuffer 

On platforms that support emulated uniform buffers, disable them for this uniform buffer

UniformView 

This struct is a view into uniform buffer object, on platforms that support UBO

NeedsReflectedMembers 

This struct needs its members reflected for binding information.

ManuallyBoundByPass 

Signals that the uniform buffer is manually bound by the pass and should be ignored by the mesh pass processor.

◆ EUseCase

The use case of the uniform buffer structures.

Enumerator
ShaderParameterStruct 

Stand alone shader parameter struct used for render passes and shader parameters.

UniformBuffer 

Uniform buffer definition authored at compile-time.

DataDrivenUniformBuffer 

Uniform buffer generated from assets, such as material parameter collection or Niagara.

Constructor & Destructor Documentation

◆ FShaderParametersMetadata()

FShaderParametersMetadata::FShaderParametersMetadata ( EUseCase  UseCase,
EUniformBufferBindingFlags  InBindingFlags,
const TCHAR InLayoutName,
const TCHAR InStructTypeName,
const TCHAR InShaderVariableName,
const TCHAR InStaticSlotName,
const ANSICHAR InFileName,
const int32  InFileLine,
uint32  InSize,
const TArray< FMember > &  InMembers,
bool  bForceCompleteInitialization = false,
FRHIUniformBufferLayoutInitializer OutLayoutInitializer = nullptr,
EUsageFlags  InUsageFlags = EUsageFlags::None 
)

Initialization constructor.

EUseCase::UniformBuffer are listed in the global GetStructList() that will be visited at engine startup to know all the global uniform buffer that can generate code in /Engine/Generated/GeneratedUniformBuffers.ush. Their initialization will be finished during the this list traversal. bForceCompleteInitialization force to ignore the list for EUseCase::UniformBuffer and instead handle it like a standalone non globally listed EUseCase::ShaderParameterStruct. This is required for the ShaderCompileWorker to deserialize them without side global effects.

◆ ~FShaderParametersMetadata()

FShaderParametersMetadata::~FShaderParametersMetadata ( )
virtual

Member Function Documentation

◆ FindMemberFromOffset()

void FShaderParametersMetadata::FindMemberFromOffset ( uint16  MemberOffset,
const FShaderParametersMetadata **  OutContainingStruct,
const FShaderParametersMetadata::FMember **  OutMember,
int32 ArrayElementId,
FString *  NamePrefix 
) const

Find a member for a given offset.

◆ GetBindingFlags()

EUniformBufferBindingFlags FShaderParametersMetadata::GetBindingFlags ( ) const
inline

◆ GetFileLine()

const int32 FShaderParametersMetadata::GetFileLine ( ) const
inline

Returns the C++ line number where the parameter structure is declared.

◆ GetFileName()

const ANSICHAR * FShaderParametersMetadata::GetFileName ( ) const
inline

Returns the C++ file name where the parameter structure is declared.

◆ GetFullMemberCodeName()

FString FShaderParametersMetadata::GetFullMemberCodeName ( uint16  MemberOffset) const

Returns the full C++ member name from it's byte offset in the structure.

◆ GetLayout()

const FRHIUniformBufferLayout & FShaderParametersMetadata::GetLayout ( ) const
inline

◆ GetLayoutHash()

uint32 FShaderParametersMetadata::GetLayoutHash ( ) const
inline

Returns a hash about the entire layout of the structure.

◆ GetLayoutPtr()

const FRHIUniformBufferLayout * FShaderParametersMetadata::GetLayoutPtr ( ) const
inline

◆ GetLayoutSignature()

const FBlake3Hash & FShaderParametersMetadata::GetLayoutSignature ( ) const
inline

◆ GetMembers()

const TArray< FMember > & FShaderParametersMetadata::GetMembers ( ) const
inline

◆ GetNameStructMap()

TMap< FHashedName, FShaderParametersMetadata * > & FShaderParametersMetadata::GetNameStructMap ( )
static

Speed up finding the uniform buffer by its name

◆ GetNestedStructs()

void FShaderParametersMetadata::GetNestedStructs ( TArray< const FShaderParametersMetadata * > &  OutNestedStructs) const

◆ GetPreferredBindingFlag()

EUniformBufferBindingFlags FShaderParametersMetadata::GetPreferredBindingFlag ( ) const
inline

◆ GetShaderVariableHashedName()

const FHashedName & FShaderParametersMetadata::GetShaderVariableHashedName ( ) const
inline

◆ GetShaderVariableName()

const TCHAR * FShaderParametersMetadata::GetShaderVariableName ( ) const
inline

◆ GetSize()

uint32 FShaderParametersMetadata::GetSize ( ) const
inline

◆ GetStaticSlotName()

const TCHAR * FShaderParametersMetadata::GetStaticSlotName ( ) const
inline

◆ GetStructList()

TLinkedList< FShaderParametersMetadata * > *& FShaderParametersMetadata::GetStructList ( )
static

◆ GetStructTypeName()

const TCHAR * FShaderParametersMetadata::GetStructTypeName ( ) const
inline

◆ GetUsageFlags()

EUsageFlags FShaderParametersMetadata::GetUsageFlags ( ) const
inline

◆ GetUseCase()

EUseCase FShaderParametersMetadata::GetUseCase ( ) const
inline

◆ HasStaticSlot()

bool FShaderParametersMetadata::HasStaticSlot ( ) const
inline

◆ InitializeAllUniformBufferStructs()

void FShaderParametersMetadata::InitializeAllUniformBufferStructs ( )
static

Initialize all the global shader parameter structs.

◆ IsLayoutInitialized()

bool FShaderParametersMetadata::IsLayoutInitialized ( ) const
inline

◆ IterateStructureMetadataDependencies()

void FShaderParametersMetadata::IterateStructureMetadataDependencies ( TParameterFunction  Lambda) const
inline

Iterate recursively over all FShaderParametersMetadata.

Member Data Documentation

◆ kRootCBufferBindingIndex

constexpr int32 FShaderParametersMetadata::kRootCBufferBindingIndex = 0
staticconstexpr

Shader binding name of the uniform buffer that contains the root shader parameters.

◆ kRootUniformBufferBindingName

constexpr const TCHAR* FShaderParametersMetadata::kRootUniformBufferBindingName = TEXT("_RootShaderParameters")
staticconstexpr

Shader binding name of the uniform buffer that contains the root shader parameters.


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