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

#include <ShaderParameterParser.h>

Classes

struct  FParsedShaderParameter
 
struct  FPlatformConfiguration
 

Public Member Functions

 FShaderParameterParser ()=delete
 
RENDERCORE_API FShaderParameterParser (const FPlatformConfiguration &InPlatformConfiguration)
 
virtual RENDERCORE_API ~FShaderParameterParser ()
 
RENDERCORE_API bool ParseAndModify (const FShaderCompilerInput &CompilerInput, TArray< FShaderCompilerError > &OutErrors, FString &PreprocessedShaderSource)
 
const FParsedShaderParameterFindParameterInfos (const FString &ParameterName) const
 
const FParsedShaderParameterFindParameterInfosUnsafe (const FString &ParameterName) const
 
RENDERCORE_API void ValidateShaderParameterType (const FShaderCompilerInput &CompilerInput, const FString &ShaderBindingName, int32 ReflectionOffset, int32 ReflectionSize, bool bPlatformSupportsPrecisionModifier, FShaderCompilerOutput &CompilerOutput) const
 
void ValidateShaderParameterType (const FShaderCompilerInput &CompilerInput, const FString &ShaderBindingName, int32 ReflectionOffset, int32 ReflectionSize, FShaderCompilerOutput &CompilerOutput) const
 
RENDERCORE_API void ValidateShaderParameterTypes (const FShaderCompilerInput &CompilerInput, bool bPlatformSupportsPrecisionModifier, FShaderCompilerOutput &CompilerOutput) const
 
void ValidateShaderParameterTypes (const FShaderCompilerInput &CompilerInput, FShaderCompilerOutput &CompilerOutput) const
 
void GetParameterFileAndLine (const FParsedShaderParameter &ParsedParameter, FString &OutFile, FString &OutLine) const
 
bool DidModifyShader () const
 

Static Public Member Functions

static RENDERCORE_API EShaderParameterType ParseAndRemoveBindlessParameterPrefix (FStringView &InName)
 
static RENDERCORE_API EShaderParameterType ParseAndRemoveBindlessParameterPrefix (FString &InName)
 
static RENDERCORE_API bool RemoveBindlessParameterPrefix (FString &InName)
 
static RENDERCORE_API FStringView GetBindlessParameterPrefix (EShaderParameterType InShaderParameterType)
 

Static Public Attributes

static constexpr const TCHARkBindlessSRVPrefix = TEXT("BindlessSRV_")
 
static constexpr const TCHARkBindlessUAVPrefix = TEXT("BindlessUAV_")
 
static constexpr const TCHARkBindlessSamplerPrefix = TEXT("BindlessSampler_")
 
static constexpr const TCHARkBindlessSRVArrayPrefix = TEXT("SRVDescriptorHeap_")
 
static constexpr const TCHARkBindlessUAVArrayPrefix = TEXT("UAVDescriptorHeap_")
 
static constexpr const TCHARkBindlessSamplerArrayPrefix = TEXT("SamplerDescriptorHeap_")
 

Protected Member Functions

RENDERCORE_API EShaderParameterType ParseParameterType (FStringView InType)
 
RENDERCORE_API bool ParseParameters (const FShaderParametersMetadata *RootParametersStructure, TArray< FShaderCompilerError > &OutErrors)
 
RENDERCORE_API void RemoveMovingParametersFromSource (FString &PreprocessedShaderSource)
 
RENDERCORE_API void ApplyBindlessModifications (FString &PreprocessedShaderSource)
 
RENDERCORE_API bool MoveShaderParametersToRootConstantBuffer (const FShaderParametersMetadata *RootParametersStructure, EShaderFrequency ShaderFrequency, FString &PreprocessedShaderSource)
 
RENDERCORE_API void ExtractFileAndLine (int32 PragamLineoffset, int32 LineOffset, FString &OutFile, FString &OutLine) const
 
virtual RENDERCORE_API FString GenerateBindlessParameterDeclaration (const FParsedShaderParameter &ParsedParameter) const
 

Protected Attributes

const FPlatformConfigurationPlatformConfiguration
 
FString OriginalParsedShader
 
TMap< FString, FParsedShaderParameterParsedParameters
 
bool bBindlessEnabled = false
 
bool bNeedToMoveToRootConstantBuffer = false
 
bool bMovedLoosedParametersToRootConstantBuffer = false
 
bool bModifiedShader = false
 

Detailed Description

Validates and moves all the shader loose data parameter defined in the root scope of the shader into the root uniform buffer.

Constructor & Destructor Documentation

◆ FShaderParameterParser() [1/2]

FShaderParameterParser::FShaderParameterParser ( )
delete

◆ FShaderParameterParser() [2/2]

FShaderParameterParser::FShaderParameterParser ( const FPlatformConfiguration InPlatformConfiguration)

◆ ~FShaderParameterParser()

FShaderParameterParser::~FShaderParameterParser ( )
virtualdefault

Member Function Documentation

◆ ApplyBindlessModifications()

void FShaderParameterParser::ApplyBindlessModifications ( FString &  PreprocessedShaderSource)
protected

Converts parsed parameters into their bindless forms.

◆ DidModifyShader()

bool FShaderParameterParser::DidModifyShader ( ) const
inline

◆ ExtractFileAndLine()

void FShaderParameterParser::ExtractFileAndLine ( int32  PragamLineoffset,
int32  LineOffset,
FString &  OutFile,
FString &  OutLine 
) const
protected

◆ FindParameterInfos()

const FParsedShaderParameter & FShaderParameterParser::FindParameterInfos ( const FString &  ParameterName) const
inline

Gets parsing information from a parameter binding name.

◆ FindParameterInfosUnsafe()

const FParsedShaderParameter * FShaderParameterParser::FindParameterInfosUnsafe ( const FString &  ParameterName) const
inline

◆ GenerateBindlessParameterDeclaration()

FString FShaderParameterParser::GenerateBindlessParameterDeclaration ( const FParsedShaderParameter ParsedParameter) const
protectedvirtual

Generates shader source code to declare a bindless resource or sampler (for automatic bindless conversion). May be overriden to allow custom implementations for different platforms.

◆ GetBindlessParameterPrefix()

FStringView FShaderParameterParser::GetBindlessParameterPrefix ( EShaderParameterType  InShaderParameterType)
static

◆ GetParameterFileAndLine()

void FShaderParameterParser::GetParameterFileAndLine ( const FParsedShaderParameter ParsedParameter,
FString &  OutFile,
FString &  OutLine 
) const
inline

Gets file and line of the parameter in the shader source code.

◆ MoveShaderParametersToRootConstantBuffer()

bool FShaderParameterParser::MoveShaderParametersToRootConstantBuffer ( const FShaderParametersMetadata RootParametersStructure,
EShaderFrequency  ShaderFrequency,
FString &  PreprocessedShaderSource 
)
protected

Moves parsed parameters into the root constant buffer.

◆ ParseAndModify()

bool FShaderParameterParser::ParseAndModify ( const FShaderCompilerInput CompilerInput,
TArray< FShaderCompilerError > &  OutErrors,
FString &  PreprocessedShaderSource 
)

◆ ParseAndRemoveBindlessParameterPrefix() [1/2]

EShaderParameterType FShaderParameterParser::ParseAndRemoveBindlessParameterPrefix ( FString &  InName)
static

◆ ParseAndRemoveBindlessParameterPrefix() [2/2]

EShaderParameterType FShaderParameterParser::ParseAndRemoveBindlessParameterPrefix ( FStringView InName)
static

◆ ParseParameters()

bool FShaderParameterParser::ParseParameters ( const FShaderParametersMetadata RootParametersStructure,
TArray< FShaderCompilerError > &  OutErrors 
)
protected

Parses the preprocessed shader code

◆ ParseParameterType()

EShaderParameterType FShaderParameterParser::ParseParameterType ( FStringView  InType)
protected

◆ RemoveBindlessParameterPrefix()

bool FShaderParameterParser::RemoveBindlessParameterPrefix ( FString &  InName)
static

◆ RemoveMovingParametersFromSource()

void FShaderParameterParser::RemoveMovingParametersFromSource ( FString &  PreprocessedShaderSource)
protected

◆ ValidateShaderParameterType() [1/2]

void FShaderParameterParser::ValidateShaderParameterType ( const FShaderCompilerInput CompilerInput,
const FString &  ShaderBindingName,
int32  ReflectionOffset,
int32  ReflectionSize,
bool  bPlatformSupportsPrecisionModifier,
FShaderCompilerOutput CompilerOutput 
) const

Validates the shader parameter in code is compatible with the shader parameter structure.

◆ ValidateShaderParameterType() [2/2]

void FShaderParameterParser::ValidateShaderParameterType ( const FShaderCompilerInput CompilerInput,
const FString &  ShaderBindingName,
int32  ReflectionOffset,
int32  ReflectionSize,
FShaderCompilerOutput CompilerOutput 
) const
inline

◆ ValidateShaderParameterTypes() [1/2]

void FShaderParameterParser::ValidateShaderParameterTypes ( const FShaderCompilerInput CompilerInput,
bool  bPlatformSupportsPrecisionModifier,
FShaderCompilerOutput CompilerOutput 
) const

Validates shader parameter map is compatible with the shader parameter structure.

◆ ValidateShaderParameterTypes() [2/2]

void FShaderParameterParser::ValidateShaderParameterTypes ( const FShaderCompilerInput CompilerInput,
FShaderCompilerOutput CompilerOutput 
) const
inline

Member Data Documentation

◆ bBindlessEnabled

bool FShaderParameterParser::bBindlessEnabled = false
protected

◆ bModifiedShader

bool FShaderParameterParser::bModifiedShader = false
protected

Indicates that the shader source was actually modified.

◆ bMovedLoosedParametersToRootConstantBuffer

bool FShaderParameterParser::bMovedLoosedParametersToRootConstantBuffer = false
protected

Indicates that parameters were actually moved to the root constant buffer.

◆ bNeedToMoveToRootConstantBuffer

bool FShaderParameterParser::bNeedToMoveToRootConstantBuffer = false
protected

Indicates that parameters should be moved to the root cosntant buffer.

◆ kBindlessSamplerArrayPrefix

constexpr const TCHAR* FShaderParameterParser::kBindlessSamplerArrayPrefix = TEXT("SamplerDescriptorHeap_")
staticconstexpr

◆ kBindlessSamplerPrefix

constexpr const TCHAR* FShaderParameterParser::kBindlessSamplerPrefix = TEXT("BindlessSampler_")
staticconstexpr

◆ kBindlessSRVArrayPrefix

constexpr const TCHAR* FShaderParameterParser::kBindlessSRVArrayPrefix = TEXT("SRVDescriptorHeap_")
staticconstexpr

◆ kBindlessSRVPrefix

constexpr const TCHAR* FShaderParameterParser::kBindlessSRVPrefix = TEXT("BindlessSRV_")
staticconstexpr

◆ kBindlessUAVArrayPrefix

constexpr const TCHAR* FShaderParameterParser::kBindlessUAVArrayPrefix = TEXT("UAVDescriptorHeap_")
staticconstexpr

◆ kBindlessUAVPrefix

constexpr const TCHAR* FShaderParameterParser::kBindlessUAVPrefix = TEXT("BindlessUAV_")
staticconstexpr

◆ OriginalParsedShader

FString FShaderParameterParser::OriginalParsedShader
protected

◆ ParsedParameters

TMap<FString, FParsedShaderParameter> FShaderParameterParser::ParsedParameters
protected

◆ PlatformConfiguration

const FPlatformConfiguration& FShaderParameterParser::PlatformConfiguration
protected

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