UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ShaderParameterMacros.h File Reference

Go to the source code of this file.

Classes

class  TAlignedShaderParameterPtr< PtrType >
 PLATFORM_64BITS. More...
 
struct  TUniformBufferMetadataHelper< UniformBufferStructType, typename >
 
struct  TUniformBufferMetadataHelper< UniformBufferStructType, typename std::enable_if<!std::is_same< typename UniformBufferStructType::FTypeInfo, void >::value >::type >
 
class  TUniformBufferRef< TBufferStruct >
 
class  FUniformBufferBinding
 
class  TUniformBufferBinding< TBufferStruct >
 
class  FRDGUniformBufferBinding
 
class  TRDGUniformBufferBinding< TBufferStruct >
 
class  FRDGBufferAccess
 
class  TRDGBufferAccess< InAccess >
 
class  FRDGTextureAccess
 
class  TRDGTextureAccess< InAccess >
 
class  TRDGResourceAccessArray< ResourceAccessType >
 
struct  FRenderTargetBinding
 
struct  FDepthStencilBinding
 
struct  FRenderTargetBindingSlots
 
struct  FRenderTargetBindingSlots::FTypeInfo
 
class  TShaderResourceParameterArray< TElement, NumElements >
 
struct  TShaderParameterTypeInfo< TypeParameter >
 
struct  TShaderParameterTypeInfo< bool >
 
struct  TShaderParameterTypeInfo< uint32 >
 
struct  TShaderParameterTypeInfo< int32 >
 
struct  TShaderParameterTypeInfo< float >
 
struct  TShaderParameterTypeInfo< FVector2f >
 
struct  TShaderParameterTypeInfo< FVector3f >
 
struct  TShaderParameterTypeInfo< FVector4f >
 
struct  TShaderParameterTypeInfo< FLinearColor >
 
struct  TShaderParameterTypeInfo< FIntPoint >
 
struct  TShaderParameterTypeInfo< FUintVector2 >
 
struct  TShaderParameterTypeInfo< FIntVector >
 
struct  TShaderParameterTypeInfo< FUintVector3 >
 
struct  TShaderParameterTypeInfo< FIntVector4 >
 
struct  TShaderParameterTypeInfo< FUintVector4 >
 
struct  TShaderParameterTypeInfo< FIntRect >
 
struct  TShaderParameterTypeInfo< FQuat4f >
 
struct  TShaderParameterTypeInfo< FMatrix44f >
 
struct  TRDGResourceAccessTypeInfo< BufferAccessType >
 
struct  TRDGTextureAccessTypeInfo< TextureAccessType >
 
struct  TShaderParameterTypeInfo< T[InNumElements]>
 
struct  TShaderParameterTypeInfo< TStaticArray< T, InNumElements, IgnoredAlignment > >
 
struct  TShaderResourceParameterTypeInfo< ShaderResourceType >
 
struct  TShaderResourceParameterTypeInfo< ShaderResourceType[InNumElements]>
 
struct  TShaderParameterTypeInfo< TUniformBufferRef< UniformBufferStructType > >
 
struct  TShaderParameterTypeInfo< TUniformBufferBinding< UniformBufferStructType > >
 
struct  TShaderParameterTypeInfo< TRDGUniformBufferBinding< UniformBufferStructType > >
 
struct  TShaderParameterStructTypeInfo< StructType >
 
struct  TShaderParameterStructTypeInfo< StructType[InNumElements]>
 
class  FShaderParametersMetadataRegistration
 
struct  TShaderParameterScalarArrayTypeInfo< TypeParameter >
 
struct  TShaderParameterScalarArrayTypeInfo< uint32 >
 
struct  TShaderParameterScalarArrayTypeInfo< int32 >
 
struct  TShaderParameterScalarArrayTypeInfo< float >
 

Macros

#define IMPLEMENT_ALIGNED_TYPE(Alignment)
 
#define INTERNAL_BEGIN_UNIFORM_BUFFER_STRUCT(DllStorage)    static DllStorage const FShaderParametersMetadata* GetStructMetadata();
 
#define INTERNAL_UNIFORM_BUFFER_STRUCT_GET_STRUCT_METADATA(StructTypeName)    { return StructTypeName::GetStructMetadata(); }
 
#define INTERNAL_SHADER_PARAMETER_GET_STRUCT_METADATA(StructTypeName)
 
#define INTERNAL_SHADER_PARAMETER_STRUCT_CREATE_UNIFORM_BUFFER   return nullptr;
 
#define INTERNAL_UNIFORM_BUFFER_STRUCT_CREATE_UNIFORM_BUFFER   return RHICreateUniformBuffer(&InContents, FTypeInfo::GetStructMetadata()->GetLayoutPtr(), InUsage);
 
#define INTERNAL_SHADER_PARAMETER_STRUCT_BEGIN(StructTypeName, DllStorage, ConstructorSuffix, GetStructMetadataScope, CreateUniformBufferImpl)
 
#define INTERNAL_SHADER_PARAMETER_EXPLICIT(BaseType, TypeInfo, MemberType, MemberName, ArrayDecl, DefaultValue, Precision, OptionalShaderType, IsMemberStruct)
 
#define BEGIN_SHADER_PARAMETER_STRUCT(StructTypeName, DllStorage)    INTERNAL_SHADER_PARAMETER_STRUCT_BEGIN(StructTypeName,, {}, INTERNAL_SHADER_PARAMETER_GET_STRUCT_METADATA(StructTypeName), INTERNAL_SHADER_PARAMETER_STRUCT_CREATE_UNIFORM_BUFFER)
 
#define END_SHADER_PARAMETER_STRUCT()
 
#define BEGIN_UNIFORM_BUFFER_STRUCT(StructTypeName, DllStorage)
 
#define BEGIN_UNIFORM_BUFFER_STRUCT_WITH_CONSTRUCTOR(StructTypeName, DllStorage)
 
#define END_UNIFORM_BUFFER_STRUCT()    END_SHADER_PARAMETER_STRUCT()
 
#define IMPLEMENT_UNIFORM_BUFFER_STRUCT_EX(StructTypeName, ShaderVariableName, UsageFlags)
 
#define IMPLEMENT_UNIFORM_BUFFER_STRUCT(StructTypeName, ShaderVariableName)    IMPLEMENT_UNIFORM_BUFFER_STRUCT_EX(StructTypeName,ShaderVariableName,FShaderParametersMetadata::EUsageFlags::None)
 
#define IMPLEMENT_UNIFORM_BUFFER_ALIAS_STRUCT(StructTypeName, UniformBufferAlias)
 
#define IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT_EX(StructTypeName, ShaderVariableName, StaticSlotName, BindingFlagsEnum)
 
#define IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT_EX2(StructTypeName, ShaderVariableName, StaticSlotName, BindingFlagsEnum, UsageFlags)
 
#define IMPLEMENT_STATIC_AND_SHADER_UNIFORM_BUFFER_STRUCT(StructTypeName, ShaderVariableName, StaticSlotName)    IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT_EX(StructTypeName, ShaderVariableName, StaticSlotName, StaticAndShader)
 
#define IMPLEMENT_STATIC_AND_SHADER_UNIFORM_BUFFER_STRUCT_EX(StructTypeName, ShaderVariableName, StaticSlotName, UsageFlags)    IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT_EX2(StructTypeName, ShaderVariableName, StaticSlotName, StaticAndShader, UsageFlags)
 
#define IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT(StructTypeName, ShaderVariableName, StaticSlotName)    IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT_EX(StructTypeName, ShaderVariableName, StaticSlotName, Static)
 
#define IMPLEMENT_STATIC_UNIFORM_BUFFER_SLOT(SlotName)    static FUniformBufferStaticSlotRegistrar UniformBufferStaticSlot_##SlotName(TEXT(#SlotName));
 
#define BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT    BEGIN_UNIFORM_BUFFER_STRUCT
 
#define BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT_WITH_CONSTRUCTOR    BEGIN_UNIFORM_BUFFER_STRUCT_WITH_CONSTRUCTOR
 
#define END_GLOBAL_SHADER_PARAMETER_STRUCT    END_UNIFORM_BUFFER_STRUCT
 
#define IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT    IMPLEMENT_UNIFORM_BUFFER_STRUCT
 
#define IMPLEMENT_GLOBAL_SHADER_PARAMETER_ALIAS_STRUCT    IMPLEMENT_UNIFORM_BUFFER_ALIAS_STRUCT
 
#define SHADER_PARAMETER(MemberType, MemberName)    SHADER_PARAMETER_EX(MemberType,MemberName,EShaderPrecisionModifier::Float)
 
#define SHADER_PARAMETER_EX(MemberType, MemberName, Precision)    INTERNAL_SHADER_PARAMETER_EXPLICIT(TShaderParameterTypeInfo<MemberType>::BaseType, TShaderParameterTypeInfo<MemberType>, MemberType,MemberName,,,Precision,TEXT(""),false)
 
#define SHADER_PARAMETER_ARRAY(MemberType, MemberName, ArrayDecl)    SHADER_PARAMETER_ARRAY_EX(MemberType,MemberName,ArrayDecl,EShaderPrecisionModifier::Float)
 
#define SHADER_PARAMETER_ARRAY_EX(MemberType, MemberName, ArrayDecl, Precision)    INTERNAL_SHADER_PARAMETER_EXPLICIT(TShaderParameterTypeInfo<MemberType ArrayDecl>::BaseType, TShaderParameterTypeInfo<MemberType ArrayDecl>, MemberType,MemberName,ArrayDecl,,Precision,TEXT(""),false)
 
#define SHADER_PARAMETER_TEXTURE(ShaderType, MemberName)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_TEXTURE, TShaderResourceParameterTypeInfo<FRHITexture*>, FRHITexture*,MemberName,, = nullptr,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)
 
#define SHADER_PARAMETER_TEXTURE_ARRAY(ShaderType, MemberName, ArrayDecl)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_TEXTURE, TShaderResourceParameterTypeInfo<FRHITexture* ArrayDecl>, FRHITexture*,MemberName,ArrayDecl,,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)
 
#define SHADER_PARAMETER_SRV(ShaderType, MemberName)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_SRV, TShaderResourceParameterTypeInfo<FRHIShaderResourceView*>, FRHIShaderResourceView*,MemberName,, = nullptr,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)
 
#define SHADER_PARAMETER_SRV_ARRAY(ShaderType, MemberName, ArrayDecl)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_SRV, TShaderResourceParameterTypeInfo<FRHIShaderResourceView* ArrayDecl>, FRHIShaderResourceView*,MemberName,ArrayDecl,,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)
 
#define SHADER_PARAMETER_UAV(ShaderType, MemberName)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_UAV, TShaderResourceParameterTypeInfo<FRHIUnorderedAccessView*>, FRHIUnorderedAccessView*,MemberName,, = nullptr,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)
 
#define SHADER_PARAMETER_SAMPLER(ShaderType, MemberName)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_SAMPLER, TShaderResourceParameterTypeInfo<FRHISamplerState*>, FRHISamplerState*,MemberName,, = nullptr,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)
 
#define SHADER_PARAMETER_SAMPLER_ARRAY(ShaderType, MemberName, ArrayDecl)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_SAMPLER, TShaderResourceParameterTypeInfo<FRHISamplerState* ArrayDecl>, FRHISamplerState*,MemberName,ArrayDecl,,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)
 
#define SHADER_PARAMETER_RDG_TEXTURE(ShaderType, MemberName)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_TEXTURE, TShaderResourceParameterTypeInfo<FRDGTexture*>, FRDGTexture*,MemberName,, = nullptr,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)
 
#define SHADER_PARAMETER_RDG_TEXTURE_ARRAY(ShaderType, MemberName, ArrayDecl)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_TEXTURE, TShaderResourceParameterTypeInfo<FRDGTexture* ArrayDecl>, FRDGTexture*,MemberName,ArrayDecl,,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)
 
#define SHADER_PARAMETER_RDG_TEXTURE_SRV(ShaderType, MemberName)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_TEXTURE_SRV, TShaderResourceParameterTypeInfo<FRDGTextureSRV*>, FRDGTextureSRV*,MemberName,, = nullptr,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)
 
#define SHADER_PARAMETER_RDG_TEXTURE_SRV_ARRAY(ShaderType, MemberName, ArrayDecl)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_TEXTURE_SRV, TShaderResourceParameterTypeInfo<FRDGTextureSRV* ArrayDecl>, FRDGTextureSRV*,MemberName,ArrayDecl,,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)
 
#define SHADER_PARAMETER_RDG_TEXTURE_NON_PIXEL_SRV(ShaderType, MemberName)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_TEXTURE_NON_PIXEL_SRV, TShaderResourceParameterTypeInfo<FRDGTextureSRV*>, FRDGTextureSRV*,MemberName,, = nullptr,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)
 
#define SHADER_PARAMETER_RDG_TEXTURE_NON_PIXEL_SRV_ARRAY(ShaderType, MemberName, ArrayDecl)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_TEXTURE_NON_PIXEL_SRV, TShaderResourceParameterTypeInfo<FRDGTextureSRV* ArrayDecl>, FRDGTextureSRV*,MemberName,ArrayDecl,,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)
 
#define SHADER_PARAMETER_RDG_TEXTURE_UAV(ShaderType, MemberName)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_TEXTURE_UAV, TShaderResourceParameterTypeInfo<FRDGTextureUAV*>, FRDGTextureUAV*,MemberName,, = nullptr,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)
 
#define SHADER_PARAMETER_RDG_TEXTURE_UAV_ARRAY(ShaderType, MemberName, ArrayDecl)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_TEXTURE_UAV, TShaderResourceParameterTypeInfo<FRDGTextureUAV* ArrayDecl>, FRDGTextureUAV*,MemberName,ArrayDecl,,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)
 
#define SHADER_PARAMETER_RDG_BUFFER_SRV(ShaderType, MemberName)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_BUFFER_SRV, TShaderResourceParameterTypeInfo<FRDGBufferSRV*>, FRDGBufferSRV*,MemberName,, = nullptr,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)
 
#define SHADER_PARAMETER_RDG_BUFFER_SRV_ARRAY(ShaderType, MemberName, ArrayDecl)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_BUFFER_SRV, TShaderResourceParameterTypeInfo<FRDGBufferSRV* ArrayDecl>, FRDGBufferSRV*,MemberName,ArrayDecl,,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)
 
#define SHADER_PARAMETER_RDG_BUFFER_UAV(ShaderType, MemberName)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_BUFFER_UAV, TShaderResourceParameterTypeInfo<FRDGBufferUAV*>, FRDGBufferUAV*,MemberName,, = nullptr,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)
 
#define SHADER_PARAMETER_RDG_BUFFER_UAV_ARRAY(ShaderType, MemberName, ArrayDecl)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_BUFFER_UAV, TShaderResourceParameterTypeInfo<FRDGBufferUAV* ArrayDecl>, FRDGBufferUAV*,MemberName,ArrayDecl,,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)
 
#define SHADER_PARAMETER_RDG_UNIFORM_BUFFER(StructType, MemberName)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_UNIFORM_BUFFER, TShaderParameterTypeInfo<TRDGUniformBufferBinding<StructType>>, TRDGUniformBufferBinding<StructType>,MemberName,,,EShaderPrecisionModifier::Float,TEXT(#StructType),false)
 
#define SHADER_PARAMETER_STRUCT(StructType, MemberName)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_NESTED_STRUCT, StructType::FTypeInfo, StructType, MemberName,,,EShaderPrecisionModifier::Float,TEXT(#StructType),true)
 
#define SHADER_PARAMETER_STRUCT_ARRAY(StructType, MemberName, ArrayDecl)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_NESTED_STRUCT, TShaderParameterStructTypeInfo<StructType ArrayDecl>, StructType, MemberName,ArrayDecl,,EShaderPrecisionModifier::Float,TEXT(#StructType),true)
 
#define SHADER_PARAMETER_STRUCT_INCLUDE(StructType, MemberName)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_INCLUDED_STRUCT, StructType::FTypeInfo, StructType, MemberName,,,EShaderPrecisionModifier::Float,TEXT(#StructType),true)
 
#define SHADER_PARAMETER_STRUCT_REF(StructType, MemberName)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_REFERENCED_STRUCT, TShaderParameterTypeInfo<TUniformBufferBinding<StructType>>, TUniformBufferBinding<StructType>,MemberName,,,EShaderPrecisionModifier::Float,TEXT(#StructType),false)
 
#define RDG_BUFFER_ACCESS(MemberName, Access)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_BUFFER_ACCESS, TRDGResourceAccessTypeInfo<TRDGBufferAccess<Access>>, TRDGBufferAccess<Access>,MemberName,,,EShaderPrecisionModifier::Float,TEXT(""),false)
 
#define RDG_BUFFER_ACCESS_DYNAMIC(MemberName)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_BUFFER_ACCESS, TRDGResourceAccessTypeInfo<FRDGBufferAccess>, FRDGBufferAccess,MemberName,,,EShaderPrecisionModifier::Float,TEXT(""),false)
 
#define RDG_BUFFER_ACCESS_ARRAY(MemberName)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_BUFFER_ACCESS_ARRAY, TRDGResourceAccessTypeInfo<FRDGBufferAccessArray>, FRDGBufferAccessArray,MemberName,,,EShaderPrecisionModifier::Float,TEXT(""),false)
 
#define RDG_TEXTURE_ACCESS(MemberName, Access)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_TEXTURE_ACCESS, TRDGTextureAccessTypeInfo<TRDGTextureAccess<Access>>, TRDGTextureAccess<Access>,MemberName,,,EShaderPrecisionModifier::Float,TEXT(""),false)
 
#define RDG_TEXTURE_ACCESS_DYNAMIC(MemberName)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_TEXTURE_ACCESS, TRDGTextureAccessTypeInfo<FRDGTextureAccess>, FRDGTextureAccess,MemberName,,,EShaderPrecisionModifier::Float,TEXT(""),false)
 
#define RDG_TEXTURE_ACCESS_ARRAY(MemberName)    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_TEXTURE_ACCESS_ARRAY, TRDGResourceAccessTypeInfo<FRDGTextureAccessArray>, FRDGTextureAccessArray,MemberName,,,EShaderPrecisionModifier::Float,TEXT(""),false)
 
#define RENDER_TARGET_BINDING_SLOTS()    INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RENDER_TARGET_BINDING_SLOTS, FRenderTargetBindingSlots::FTypeInfo, FRenderTargetBindingSlots,RenderTargets,,,EShaderPrecisionModifier::Float,TEXT(""),false)
 
#define SHADER_PARAMETER_RDG_BUFFER_UPLOAD(MemberName)
 
#define SHADER_PARAMETER_RDG_BUFFER(ShaderType, MemberName)
 
#define SHADER_PARAMETER_RDG_BUFFER_ARRAY(ShaderType, MemberName, ArrayDecl)    UE_DEPRECATED_MACRO(5.0, "SHADER_PARAMETER_RDG_BUFFER_ARRAY has been deprecated. Use RDG_BUFFER_ACCESS_ARRAY instead.")
 
#define SHADER_PARAMETER_SCALAR_ARRAY(MemberType, MemberName, ArrayDecl)    SHADER_PARAMETER_ARRAY(TShaderParameterScalarArrayTypeInfo<MemberType>::PackedArrayType, MemberName, [CalcPackedArraySize(TShaderParameterTypeInfo<TShaderParameterScalarArrayTypeInfo<MemberType>::PackedArrayType ArrayDecl>::NumElements)])
 
#define GET_SCALAR_ARRAY_ELEMENT(PackedArray, ElementIndex)    PackedArray[CalcPackedArrayIndex(ElementIndex)][CalcPackedComponentIndex(ElementIndex)]
 

Typedefs

using FRDGBufferAccessArray = TRDGResourceAccessArray< FRDGBufferAccess >
 
using FRDGTextureAccessArray = TRDGResourceAccessArray< FRDGTextureAccess >
 

Functions

 IMPLEMENT_ALIGNED_TYPE (1)
 
 IMPLEMENT_ALIGNED_TYPE (2)
 
 IMPLEMENT_ALIGNED_TYPE (4)
 
 IMPLEMENT_ALIGNED_TYPE (8)
 
 IMPLEMENT_ALIGNED_TYPE (16)
 
template<typename TBufferStruct >
TUniformBufferBinding< TBufferStructGetStaticBinding (const TUniformBufferRef< TBufferStruct > &InUniformBuffer)
 
template<typename TBufferStruct >
TUniformBufferBinding< TBufferStructGetShaderBinding (const TUniformBufferRef< TBufferStruct > &InUniformBuffer)
 
template<typename TBufferStruct >
TRDGUniformBufferBinding< TBufferStructGetShaderBinding (TRDGUniformBuffer< TBufferStruct > *InUniformBuffer)
 
template<typename TBufferStruct >
TRDGUniformBufferBinding< TBufferStructGetStaticBinding (TRDGUniformBuffer< TBufferStruct > *InUniformBuffer)
 
RENDERCORE_API FShaderParametersMetadataFindUniformBufferStructByName (const TCHAR *StructName)
 
RENDERCORE_API FShaderParametersMetadataFindUniformBufferStructByFName (FName StructName)
 
RENDERCORE_API FShaderParametersMetadataFindUniformBufferStructByLayoutHash (uint32 Hash)
 
RENDERCORE_API FShaderParametersMetadataFindUniformBufferStructByShaderVariableName (const FHashedName &Name)
 
RENDERCORE_API void BuildShaderBindingLayout (TConstArrayView< FShaderParametersMetadata * > UniformBuffers, EShaderBindingLayoutFlags BaseShaderBindingLayoutFlags, FShaderBindingLayoutContainer &OutShaderBindingLayoutContainer)
 
const TCHARGetShaderParameterMacroName (EUniformBufferBaseType ShaderParameterBaseType)
 
constexpr uint32 CalcPackedArraySize (uint32 NumElements)
 
constexpr uint32 CalcPackedArrayIndex (uint32 ElementIndex)
 
constexpr uint32 CalcPackedComponentIndex (uint32 ElementIndex)
 

Macro Definition Documentation

◆ BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT

#define BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT    BEGIN_UNIFORM_BUFFER_STRUCT

Legacy macro definitions.

◆ BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT_WITH_CONSTRUCTOR

#define BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT_WITH_CONSTRUCTOR    BEGIN_UNIFORM_BUFFER_STRUCT_WITH_CONSTRUCTOR

◆ BEGIN_SHADER_PARAMETER_STRUCT

#define BEGIN_SHADER_PARAMETER_STRUCT (   StructTypeName,
  DllStorage 
)     INTERNAL_SHADER_PARAMETER_STRUCT_BEGIN(StructTypeName,, {}, INTERNAL_SHADER_PARAMETER_GET_STRUCT_METADATA(StructTypeName), INTERNAL_SHADER_PARAMETER_STRUCT_CREATE_UNIFORM_BUFFER)

◆ BEGIN_UNIFORM_BUFFER_STRUCT

#define BEGIN_UNIFORM_BUFFER_STRUCT (   StructTypeName,
  DllStorage 
)
Value:
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define INTERNAL_UNIFORM_BUFFER_STRUCT_GET_STRUCT_METADATA(StructTypeName)
Definition ShaderParameterMacros.h:1376
#define INTERNAL_BEGIN_UNIFORM_BUFFER_STRUCT(DllStorage)
Definition ShaderParameterMacros.h:1373
#define INTERNAL_UNIFORM_BUFFER_STRUCT_CREATE_UNIFORM_BUFFER
Definition ShaderParameterMacros.h:1398
#define DECLARE_UNIFORM_BUFFER_STRUCT(StructTypeName, PrefixKeywords)
Definition ShaderParameterStructDeclaration.h:10

Begins & ends a shader global parameter structure.

Example: // header BEGIN_UNIFORM_BUFFER_STRUCT(FMyParameterStruct, RENDERER_API) END_UNIFORM_BUFFER_STRUCT()

// C++ file IMPLEMENT_UNIFORM_BUFFER_STRUCT(FMyParameterStruct, "MyShaderBindingName");

◆ BEGIN_UNIFORM_BUFFER_STRUCT_WITH_CONSTRUCTOR

◆ END_GLOBAL_SHADER_PARAMETER_STRUCT

#define END_GLOBAL_SHADER_PARAMETER_STRUCT    END_UNIFORM_BUFFER_STRUCT

◆ END_SHADER_PARAMETER_STRUCT

END_SHADER_PARAMETER_STRUCT ( )
Value:
public: \
do \
{ \
Ptr = reinterpret_cast<zzMemberFunc>(Ptr)(zzFirstMemberId(), &Members); \
} while (Ptr); \
Algo::Reverse(Members); \
return Members; \
} \
#define GCC_ALIGN(n)
Definition AndroidPlatform.h:163
#define SHADER_PARAMETER_STRUCT_ALIGNMENT
Definition RHIDefinitions.h:25
Definition Array.h:670

Encapsulates the post processing ambient occlusion pixel shader.

Parameters
bAOSetupAsInputtrue:use AO setup instead of full resolution depth and normal
bDoUpsampletrue:we have lower resolution pass data we need to upsample, false otherwise
ShaderQuality0..4, 0:low 4:high

◆ END_UNIFORM_BUFFER_STRUCT

#define END_UNIFORM_BUFFER_STRUCT ( )     END_SHADER_PARAMETER_STRUCT()

◆ GET_SCALAR_ARRAY_ELEMENT

#define GET_SCALAR_ARRAY_ELEMENT (   PackedArray,
  ElementIndex 
)     PackedArray[CalcPackedArrayIndex(ElementIndex)][CalcPackedComponentIndex(ElementIndex)]

◆ IMPLEMENT_ALIGNED_TYPE

#define IMPLEMENT_ALIGNED_TYPE (   Alignment)
Value:
template<typename T> \
class TAlignedTypedef<T,Alignment> \
{ \
public: \
typedef MS_ALIGN(Alignment) T Type GCC_ALIGN(Alignment); \
};
#define MS_ALIGN(n)
Definition Platform.h:916
Definition ShaderParameterMacros.h:36

◆ IMPLEMENT_GLOBAL_SHADER_PARAMETER_ALIAS_STRUCT

#define IMPLEMENT_GLOBAL_SHADER_PARAMETER_ALIAS_STRUCT    IMPLEMENT_UNIFORM_BUFFER_ALIAS_STRUCT

◆ IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT

#define IMPLEMENT_GLOBAL_SHADER_PARAMETER_STRUCT    IMPLEMENT_UNIFORM_BUFFER_STRUCT

◆ IMPLEMENT_STATIC_AND_SHADER_UNIFORM_BUFFER_STRUCT

#define IMPLEMENT_STATIC_AND_SHADER_UNIFORM_BUFFER_STRUCT (   StructTypeName,
  ShaderVariableName,
  StaticSlotName 
)     IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT_EX(StructTypeName, ShaderVariableName, StaticSlotName, StaticAndShader)

Implements the same contract as IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT, with the addition of the 'StaticAndShader' binding flag. This means that the uniform buffer may be bound statically or through SetShaderParameters. The uniform buffer is NOT removed from the parameter map, which means it is possible to end up with both global and shader bindings. The RHI validation layer will catch and report these cases, as they are both inefficient and would produce confusing behavior if the two bindings differ. Only one binding model should be used at a time.

◆ IMPLEMENT_STATIC_AND_SHADER_UNIFORM_BUFFER_STRUCT_EX

#define IMPLEMENT_STATIC_AND_SHADER_UNIFORM_BUFFER_STRUCT_EX (   StructTypeName,
  ShaderVariableName,
  StaticSlotName,
  UsageFlags 
)     IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT_EX2(StructTypeName, ShaderVariableName, StaticSlotName, StaticAndShader, UsageFlags)

◆ IMPLEMENT_STATIC_UNIFORM_BUFFER_SLOT

#define IMPLEMENT_STATIC_UNIFORM_BUFFER_SLOT (   SlotName)     static FUniformBufferStaticSlotRegistrar UniformBufferStaticSlot_##SlotName(TEXT(#SlotName));

Implements a uniform buffer static binding slot.

◆ IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT

#define IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT (   StructTypeName,
  ShaderVariableName,
  StaticSlotName 
)     IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT_EX(StructTypeName, ShaderVariableName, StaticSlotName, Static)

Implements a uniform buffer tied to a static binding slot. The third parameter is the name of the slot. Multiple uniform buffers can be associated to a slot; only one uniform buffer can be bound to a slot at one time.

Example: BEGIN_UNIFORM_BUFFER_STRUCT(FMyParameterStruct, RENDERER_API) END_UNIFORM_BUFFER_STRUCT()

// C++ file

// Define uniform buffer slot. IMPLEMENT_STATIC_UNIFORM_BUFFER_SLOT(MySlot)

// Associate uniform buffer with slot. IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT(FMyParameterStruct, "MyShaderBindingName", MySlot);

◆ IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT_EX

#define IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT_EX (   StructTypeName,
  ShaderVariableName,
  StaticSlotName,
  BindingFlagsEnum 
)
Value:
static_assert(EnumHasAnyFlags(EUniformBufferBindingFlags::BindingFlagsEnum, EUniformBufferBindingFlags::Static), "Shader bindings must include 'Static'."); \
const FShaderParametersMetadata* GetForwardDeclaredShaderParametersStructMetadata(const StructTypeName* DummyPtr) { return StructTypeName::FTypeInfo::GetStructMetadata(); } \
const FShaderParametersMetadata* StructTypeName::GetStructMetadata() \
{ \
ensureMsgf(FShaderParametersMetadataRegistration::IsReadyForRegistration(), TEXT("GetStructMetadata should not be called from a static initializer")); \
EUniformBufferBindingFlags::BindingFlagsEnum, \
TEXT(#StructTypeName), \
TEXT(#StructTypeName), \
TEXT(ShaderVariableName), \
TEXT(#StaticSlotName), \
StructTypeName::FTypeInfo::FileName, \
StructTypeName::FTypeInfo::FileLine, \
sizeof(StructTypeName), \
StructTypeName::zzGetMembers()); \
} \
FShaderParametersMetadataRegistration StructTypeName##MetadataRegistration { TFunctionRef<const ::FShaderParametersMetadata* ()>{StructTypeName::GetStructMetadata} };
#define TEXT(x)
Definition Platform.h:1272
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
const FShaderParametersMetadata * GetForwardDeclaredShaderParametersStructMetadata(const T *)
Definition ShaderParameterStructDeclaration.h:19
Definition ShaderParameterMacros.h:1525
static RENDERCORE_API bool IsReadyForRegistration()
Definition ShaderParameterMetadata.cpp:250
Definition ShaderParameterMetadata.h:136
Definition AssetRegistryState.h:50

◆ IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT_EX2

#define IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT_EX2 (   StructTypeName,
  ShaderVariableName,
  StaticSlotName,
  BindingFlagsEnum,
  UsageFlags 
)
Value:
static_assert(EnumHasAnyFlags(EUniformBufferBindingFlags::BindingFlagsEnum, EUniformBufferBindingFlags::Static), "Shader bindings must include 'Static'."); \
const FShaderParametersMetadata* GetForwardDeclaredShaderParametersStructMetadata(const StructTypeName* DummyPtr) { return StructTypeName::FTypeInfo::GetStructMetadata(); } \
const FShaderParametersMetadata* StructTypeName::GetStructMetadata() \
{ \
ensureMsgf(FShaderParametersMetadataRegistration::IsReadyForRegistration(), TEXT("GetStructMetadata should not be called from a static initializer")); \
EUniformBufferBindingFlags::BindingFlagsEnum, \
TEXT(#StructTypeName), \
TEXT(#StructTypeName), \
TEXT(ShaderVariableName), \
TEXT(#StaticSlotName), \
StructTypeName::FTypeInfo::FileName, \
StructTypeName::FTypeInfo::FileLine, \
sizeof(StructTypeName), \
StructTypeName::zzGetMembers(), \
false, \
nullptr, \
UsageFlags); \
} \
FShaderParametersMetadataRegistration StructTypeName##MetadataRegistration { TFunctionRef<const ::FShaderParametersMetadata* ()>{StructTypeName::GetStructMetadata} };

◆ IMPLEMENT_UNIFORM_BUFFER_ALIAS_STRUCT

#define IMPLEMENT_UNIFORM_BUFFER_ALIAS_STRUCT (   StructTypeName,
  UniformBufferAlias 
)
Value:
TEXT(#StructTypeName), \
TEXT(#StructTypeName), \
nullptr, \
StructTypeName::FTypeInfo::FileName, \
StructTypeName::FTypeInfo::FileLine, \
sizeof(StructTypeName), \
StructTypeName::zzGetMembers())

◆ IMPLEMENT_UNIFORM_BUFFER_STRUCT

#define IMPLEMENT_UNIFORM_BUFFER_STRUCT (   StructTypeName,
  ShaderVariableName 
)     IMPLEMENT_UNIFORM_BUFFER_STRUCT_EX(StructTypeName,ShaderVariableName,FShaderParametersMetadata::EUsageFlags::None)

◆ IMPLEMENT_UNIFORM_BUFFER_STRUCT_EX

#define IMPLEMENT_UNIFORM_BUFFER_STRUCT_EX (   StructTypeName,
  ShaderVariableName,
  UsageFlags 
)
Value:
const FShaderParametersMetadata* GetForwardDeclaredShaderParametersStructMetadata(const StructTypeName* DummyPtr) { return StructTypeName::FTypeInfo::GetStructMetadata(); } \
const FShaderParametersMetadata* StructTypeName::GetStructMetadata() \
{ \
ensureMsgf(FShaderParametersMetadataRegistration::IsReadyForRegistration(), TEXT("GetStructMetadata should not be called from a static initializer")); \
TEXT(#StructTypeName), \
TEXT(#StructTypeName), \
TEXT(ShaderVariableName), \
nullptr, \
StructTypeName::FTypeInfo::FileName, \
StructTypeName::FTypeInfo::FileLine, \
sizeof(StructTypeName), \
StructTypeName::zzGetMembers(), \
false, \
nullptr, \
UsageFlags); \
} \
FShaderParametersMetadataRegistration StructTypeName##MetadataRegistration { TFunctionRef<const ::FShaderParametersMetadata* ()>{StructTypeName::GetStructMetadata} };

◆ INTERNAL_BEGIN_UNIFORM_BUFFER_STRUCT

#define INTERNAL_BEGIN_UNIFORM_BUFFER_STRUCT (   DllStorage)     static DllStorage const FShaderParametersMetadata* GetStructMetadata();

◆ INTERNAL_SHADER_PARAMETER_EXPLICIT

#define INTERNAL_SHADER_PARAMETER_EXPLICIT (   BaseType,
  TypeInfo,
  MemberType,
  MemberName,
  ArrayDecl,
  DefaultValue,
  Precision,
  OptionalShaderType,
  IsMemberStruct 
)
Value:
zzMemberId##MemberName; \
public: \
alignas(TypeInfo::Alignment) TypeInfo::TAlignedType MemberName DefaultValue; \
static_assert(BaseType != UBMT_INVALID, "Invalid type " #MemberType " of member " #MemberName "."); \
private: \
struct zzNextMemberId##MemberName { enum { HasDeclaredResource = zzMemberId##MemberName::HasDeclaredResource || !TypeInfo::bIsStoredInConstantBuffer }; }; \
{ \
static_assert(TypeInfo::bIsStoredInConstantBuffer || TIsArrayOrRefOfTypeByPredicate<decltype(OptionalShaderType), TIsCharEncodingCompatibleWithTCHAR>::Value, "No shader type for " #MemberName "."); \
(STRUCT_OFFSET(zzTThisStruct, MemberName) & (TypeInfo::Alignment - 1)) == 0, \
"Misaligned uniform buffer struct member " #MemberName "."); \
TEXT(#MemberName), \
Precision, \
TypeInfo::NumRows, \
TypeInfo::NumColumns, \
TypeInfo::NumElements, \
TypeInfo::GetStructMetadata() \
)); \
} \
typedef zzNextMemberId##MemberName
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
EUniformBufferBaseType
Definition RHIDefinitions.h:634
@ UBMT_INVALID
Definition RHIDefinitions.h:635
#define STRUCT_OFFSET(struc, member)
Definition UnrealTemplate.h:218
Definition ShaderParameterMetadata.h:177
Definition IsArrayOrRefOfTypeByPredicate.h:13
Definition IsCharEncodingCompatibleWith.h:65

Declares a member of a uniform buffer struct.

◆ INTERNAL_SHADER_PARAMETER_GET_STRUCT_METADATA

#define INTERNAL_SHADER_PARAMETER_GET_STRUCT_METADATA (   StructTypeName)
Value:
{ \
TEXT(#StructTypeName), \
TEXT(#StructTypeName), \
nullptr, \
nullptr, \
FTypeInfo::FileName, \
FTypeInfo::FileLine, \
sizeof(StructTypeName), \
StructTypeName::zzGetMembers()); \
}

◆ INTERNAL_SHADER_PARAMETER_STRUCT_BEGIN

#define INTERNAL_SHADER_PARAMETER_STRUCT_BEGIN (   StructTypeName,
  DllStorage,
  ConstructorSuffix,
  GetStructMetadataScope,
  CreateUniformBufferImpl 
)
Value:
{ \
public: \
DllStorage StructTypeName () ConstructorSuffix \
struct FTypeInfo { \
static constexpr int32 NumRows = 1; \
static constexpr int32 NumColumns = 1; \
static constexpr int32 NumElements = 0; \
static constexpr int32 Alignment = SHADER_PARAMETER_STRUCT_ALIGNMENT; \
static constexpr bool bIsStoredInConstantBuffer = true; \
static constexpr const ANSICHAR* const FileName = UE_LOG_SOURCE_FILE(__builtin_FILE()); \
static constexpr int32 FileLine = __builtin_LINE(); \
using TAlignedType = StructTypeName; \
static const FShaderParametersMetadata* GetStructMetadata() GetStructMetadataScope \
}; \
static FUniformBufferRHIRef CreateUniformBuffer(const StructTypeName& InContents, EUniformBufferUsage InUsage) \
{ \
} \
private: \
typedef StructTypeName zzTThisStruct; \
struct zzFirstMemberId { enum { HasDeclaredResource = 0 }; }; \
typedef void* zzFuncPtr; \
{ \
return nullptr; \
} \
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::ANSICHAR ANSICHAR
An ANSI character. Normally a signed type.
Definition Platform.h:1131
#define UE_LOG_SOURCE_FILE(File)
Definition LogMacros.h:114
EUniformBufferUsage
Definition RHIDefinitions.h:536

Begins a uniform buffer struct declaration.

◆ INTERNAL_SHADER_PARAMETER_STRUCT_CREATE_UNIFORM_BUFFER

#define INTERNAL_SHADER_PARAMETER_STRUCT_CREATE_UNIFORM_BUFFER   return nullptr;

◆ INTERNAL_UNIFORM_BUFFER_STRUCT_CREATE_UNIFORM_BUFFER

#define INTERNAL_UNIFORM_BUFFER_STRUCT_CREATE_UNIFORM_BUFFER   return RHICreateUniformBuffer(&InContents, FTypeInfo::GetStructMetadata()->GetLayoutPtr(), InUsage);

◆ INTERNAL_UNIFORM_BUFFER_STRUCT_GET_STRUCT_METADATA

#define INTERNAL_UNIFORM_BUFFER_STRUCT_GET_STRUCT_METADATA (   StructTypeName)     { return StructTypeName::GetStructMetadata(); }

◆ RDG_BUFFER_ACCESS

Informs the RDG pass to transition the buffer into the requested state.

Example: BEGIN_SHADER_PARAMETER_STRUCT(FParameters,) RDG_BUFFER_ACCESS(MyBuffer) // ... END_SHADER_PARAMETER_STRUCT()

FParameters Parameters; Parameters.MyBuffer = FRDGBufferAccess(Buffer, ERHIAccess::CopyDest);

◆ RDG_BUFFER_ACCESS_ARRAY

◆ RDG_BUFFER_ACCESS_DYNAMIC

◆ RDG_TEXTURE_ACCESS

Informs the RDG pass to transition the texture into the requested state.

◆ RDG_TEXTURE_ACCESS_ARRAY

◆ RDG_TEXTURE_ACCESS_DYNAMIC

◆ RENDER_TARGET_BINDING_SLOTS

Adds bindings slots for render targets on the structure. This is important for rasterizer based pass bind the render target at the RHI pass creation. The name of the struct member will forced to RenderTargets, and its type is a FRenderTargetBindingSlots.

Example: BEGIN_SHADER_PARAMETER_STRUCT(FGlobalViewParameters,) RENDER_TARGET_BINDING_SLOTS() // ... END_SHADER_PARAMETER_STRUCT()

FGlobalViewParameters Parameters; Parameters.RenderTargets.DepthStencil = FDepthStencilBinding( //... );

◆ SHADER_PARAMETER

#define SHADER_PARAMETER (   MemberType,
  MemberName 
)     SHADER_PARAMETER_EX(MemberType,MemberName,EShaderPrecisionModifier::Float)

Adds a constant-buffer stored value.

Example: SHADER_PARAMETER(float, MyScalar) SHADER_PARAMETER(FMatrix44f, MyMatrix)

◆ SHADER_PARAMETER_ARRAY

#define SHADER_PARAMETER_ARRAY (   MemberType,
  MemberName,
  ArrayDecl 
)     SHADER_PARAMETER_ARRAY_EX(MemberType,MemberName,ArrayDecl,EShaderPrecisionModifier::Float)

Adds a constant-buffer stored array of values. MemberType size must be a multiple of 16byte (see SHADER_PARAMETER_SCALAR_ARRAY for scalar arrays).

Example: SHADER_PARAMETER_ARRAY(FMatrix44f, MyMatrixArray, [2])

◆ SHADER_PARAMETER_ARRAY_EX

#define SHADER_PARAMETER_ARRAY_EX (   MemberType,
  MemberName,
  ArrayDecl,
  Precision 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(TShaderParameterTypeInfo<MemberType ArrayDecl>::BaseType, TShaderParameterTypeInfo<MemberType ArrayDecl>, MemberType,MemberName,ArrayDecl,,Precision,TEXT(""),false)

◆ SHADER_PARAMETER_EX

#define SHADER_PARAMETER_EX (   MemberType,
  MemberName,
  Precision 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(TShaderParameterTypeInfo<MemberType>::BaseType, TShaderParameterTypeInfo<MemberType>, MemberType,MemberName,,,Precision,TEXT(""),false)

◆ SHADER_PARAMETER_RDG_BUFFER

#define SHADER_PARAMETER_RDG_BUFFER (   ShaderType,
  MemberName 
)
Value:
UE_DEPRECATED_MACRO(5.0, "SHADER_PARAMETER_RDG_BUFFER has been deprecated. Use RDG_BUFFER_ACCESS with an explicit RHI state instead.") \
#define UE_DEPRECATED_MACRO(Version, Message)
Definition GenericPlatformCompilerPreSetup.h:37

◆ SHADER_PARAMETER_RDG_BUFFER_ARRAY

#define SHADER_PARAMETER_RDG_BUFFER_ARRAY (   ShaderType,
  MemberName,
  ArrayDecl 
)     UE_DEPRECATED_MACRO(5.0, "SHADER_PARAMETER_RDG_BUFFER_ARRAY has been deprecated. Use RDG_BUFFER_ACCESS_ARRAY instead.")

◆ SHADER_PARAMETER_RDG_BUFFER_SRV

#define SHADER_PARAMETER_RDG_BUFFER_SRV (   ShaderType,
  MemberName 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_BUFFER_SRV, TShaderResourceParameterTypeInfo<FRDGBufferSRV*>, FRDGBufferSRV*,MemberName,, = nullptr,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)

◆ SHADER_PARAMETER_RDG_BUFFER_SRV_ARRAY

#define SHADER_PARAMETER_RDG_BUFFER_SRV_ARRAY (   ShaderType,
  MemberName,
  ArrayDecl 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_BUFFER_SRV, TShaderResourceParameterTypeInfo<FRDGBufferSRV* ArrayDecl>, FRDGBufferSRV*,MemberName,ArrayDecl,,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)

◆ SHADER_PARAMETER_RDG_BUFFER_UAV

#define SHADER_PARAMETER_RDG_BUFFER_UAV (   ShaderType,
  MemberName 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_BUFFER_UAV, TShaderResourceParameterTypeInfo<FRDGBufferUAV*>, FRDGBufferUAV*,MemberName,, = nullptr,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)

◆ SHADER_PARAMETER_RDG_BUFFER_UAV_ARRAY

#define SHADER_PARAMETER_RDG_BUFFER_UAV_ARRAY (   ShaderType,
  MemberName,
  ArrayDecl 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_BUFFER_UAV, TShaderResourceParameterTypeInfo<FRDGBufferUAV* ArrayDecl>, FRDGBufferUAV*,MemberName,ArrayDecl,,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)

◆ SHADER_PARAMETER_RDG_BUFFER_UPLOAD

#define SHADER_PARAMETER_RDG_BUFFER_UPLOAD (   MemberName)
Value:
UE_DEPRECATED_MACRO(5.0, "SHADER_PARAMETER_RDG_BUFFER_UPLOAD has been deprecated. Use RDG_BUFFER_ACCESS(Buffer, ERHIAccess::CopyDest) instead.") \

Deprecated buffer macros.

◆ SHADER_PARAMETER_RDG_TEXTURE

◆ SHADER_PARAMETER_RDG_TEXTURE_ARRAY

#define SHADER_PARAMETER_RDG_TEXTURE_ARRAY (   ShaderType,
  MemberName,
  ArrayDecl 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_TEXTURE, TShaderResourceParameterTypeInfo<FRDGTexture* ArrayDecl>, FRDGTexture*,MemberName,ArrayDecl,,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)

◆ SHADER_PARAMETER_RDG_TEXTURE_NON_PIXEL_SRV

#define SHADER_PARAMETER_RDG_TEXTURE_NON_PIXEL_SRV (   ShaderType,
  MemberName 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_TEXTURE_NON_PIXEL_SRV, TShaderResourceParameterTypeInfo<FRDGTextureSRV*>, FRDGTextureSRV*,MemberName,, = nullptr,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)

◆ SHADER_PARAMETER_RDG_TEXTURE_NON_PIXEL_SRV_ARRAY

#define SHADER_PARAMETER_RDG_TEXTURE_NON_PIXEL_SRV_ARRAY (   ShaderType,
  MemberName,
  ArrayDecl 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_TEXTURE_NON_PIXEL_SRV, TShaderResourceParameterTypeInfo<FRDGTextureSRV* ArrayDecl>, FRDGTextureSRV*,MemberName,ArrayDecl,,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)

◆ SHADER_PARAMETER_RDG_TEXTURE_SRV

#define SHADER_PARAMETER_RDG_TEXTURE_SRV (   ShaderType,
  MemberName 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_TEXTURE_SRV, TShaderResourceParameterTypeInfo<FRDGTextureSRV*>, FRDGTextureSRV*,MemberName,, = nullptr,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)

◆ SHADER_PARAMETER_RDG_TEXTURE_SRV_ARRAY

#define SHADER_PARAMETER_RDG_TEXTURE_SRV_ARRAY (   ShaderType,
  MemberName,
  ArrayDecl 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_TEXTURE_SRV, TShaderResourceParameterTypeInfo<FRDGTextureSRV* ArrayDecl>, FRDGTextureSRV*,MemberName,ArrayDecl,,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)

◆ SHADER_PARAMETER_RDG_TEXTURE_UAV

#define SHADER_PARAMETER_RDG_TEXTURE_UAV (   ShaderType,
  MemberName 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_TEXTURE_UAV, TShaderResourceParameterTypeInfo<FRDGTextureUAV*>, FRDGTextureUAV*,MemberName,, = nullptr,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)

◆ SHADER_PARAMETER_RDG_TEXTURE_UAV_ARRAY

#define SHADER_PARAMETER_RDG_TEXTURE_UAV_ARRAY (   ShaderType,
  MemberName,
  ArrayDecl 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_TEXTURE_UAV, TShaderResourceParameterTypeInfo<FRDGTextureUAV* ArrayDecl>, FRDGTextureUAV*,MemberName,ArrayDecl,,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)

◆ SHADER_PARAMETER_RDG_UNIFORM_BUFFER

#define SHADER_PARAMETER_RDG_UNIFORM_BUFFER (   StructType,
  MemberName 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_RDG_UNIFORM_BUFFER, TShaderParameterTypeInfo<TRDGUniformBufferBinding<StructType>>, TRDGUniformBufferBinding<StructType>,MemberName,,,EShaderPrecisionModifier::Float,TEXT(#StructType),false)

Adds a render graph tracked uniform buffer.

Example: SHADER_PARAMETER_RDG_UNIFORM_BUFFER(FMyStruct, MemberName)

◆ SHADER_PARAMETER_SAMPLER

◆ SHADER_PARAMETER_SAMPLER_ARRAY

#define SHADER_PARAMETER_SAMPLER_ARRAY (   ShaderType,
  MemberName,
  ArrayDecl 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_SAMPLER, TShaderResourceParameterTypeInfo<FRHISamplerState* ArrayDecl>, FRHISamplerState*,MemberName,ArrayDecl,,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)

◆ SHADER_PARAMETER_SCALAR_ARRAY

#define SHADER_PARAMETER_SCALAR_ARRAY (   MemberType,
  MemberName,
  ArrayDecl 
)     SHADER_PARAMETER_ARRAY(TShaderParameterScalarArrayTypeInfo<MemberType>::PackedArrayType, MemberName, [CalcPackedArraySize(TShaderParameterTypeInfo<TShaderParameterScalarArrayTypeInfo<MemberType>::PackedArrayType ArrayDecl>::NumElements)])

Adds a packed constant-buffer stored array of values.

Example: SHADER_PARAMETER_SCALAR_ARRAY(float, MyScalarArray, 8)

◆ SHADER_PARAMETER_SRV

◆ SHADER_PARAMETER_SRV_ARRAY

◆ SHADER_PARAMETER_STRUCT

#define SHADER_PARAMETER_STRUCT (   StructType,
  MemberName 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_NESTED_STRUCT, StructType::FTypeInfo, StructType, MemberName,,,EShaderPrecisionModifier::Float,TEXT(#StructType),true)

Nests a shader parameter structure into another one, in C++ and shader code.

Example: BEGIN_SHADER_PARAMETER_STRUCT(FMyNestedStruct,) SHADER_PARAMETER(float, MyScalar) // ... END_SHADER_PARAMETER_STRUCT()

BEGIN_SHADER_PARAMETER_STRUCT(FOtherStruct) SHADER_PARAMETER_STRUCT(FMyNestedStruct, MyStruct)

C++ use case: FOtherStruct Parameters; Parameters.MyStruct.MyScalar = 1.0f;

Shader code for a globally named shader parameter struct: float MyScalar = MyGlobalShaderBindingName.MyStruct.MyScalar;

Shader code for a unnamed shader parameter struct: float MyScalar = MyStruct_MyScalar;

◆ SHADER_PARAMETER_STRUCT_ARRAY

#define SHADER_PARAMETER_STRUCT_ARRAY (   StructType,
  MemberName,
  ArrayDecl 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_NESTED_STRUCT, TShaderParameterStructTypeInfo<StructType ArrayDecl>, StructType, MemberName,ArrayDecl,,EShaderPrecisionModifier::Float,TEXT(#StructType),true)

Nests an array of shader parameter structure into another one, in C++ and shader code.

Example: BEGIN_SHADER_PARAMETER_STRUCT(FMyNestedStruct,) SHADER_PARAMETER(float, MyScalar) // ... END_SHADER_PARAMETER_STRUCT()

BEGIN_SHADER_PARAMETER_STRUCT(FOtherStruct) SHADER_PARAMETER_STRUCT_ARRAY(FMyNestedStruct, MyStructArray, [4])

C++ use case: FOtherStruct Parameters; Parameters.MyStructArray[0].MyScalar = 1.0f;

Shader code for a globally named shader parameter struct (UNSUPPORTED): float MyScalar = MyGlobalShaderBindingName.MyStructArray_0.MyScalar;

Shader code for a unnamed shader parameter struct: float MyScalar = MyStructArray_0_MyScalar;

◆ SHADER_PARAMETER_STRUCT_INCLUDE

#define SHADER_PARAMETER_STRUCT_INCLUDE (   StructType,
  MemberName 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_INCLUDED_STRUCT, StructType::FTypeInfo, StructType, MemberName,,,EShaderPrecisionModifier::Float,TEXT(#StructType),true)

Include a shader parameter structure into another one in shader code.

Example: BEGIN_SHADER_PARAMETER_STRUCT(FMyNestedStruct,) SHADER_PARAMETER(float, MyScalar) // ... END_SHADER_PARAMETER_STRUCT()

BEGIN_SHADER_PARAMETER_STRUCT(FOtherStruct) SHADER_PARAMETER_STRUCT_INCLUDE(FMyNestedStruct, MyStruct)

C++ use case: FOtherStruct Parameters; Parameters.MyStruct.MyScalar = 1.0f;

Shader code for a globally named shader parameter struct: float MyScalar = MyGlobalShaderBindingName.MyScalar;

Shader code for a unnamed shader parameter struct: float MyScalarValue = MyScalar;

◆ SHADER_PARAMETER_STRUCT_REF

◆ SHADER_PARAMETER_TEXTURE

◆ SHADER_PARAMETER_TEXTURE_ARRAY

#define SHADER_PARAMETER_TEXTURE_ARRAY (   ShaderType,
  MemberName,
  ArrayDecl 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_TEXTURE, TShaderResourceParameterTypeInfo<FRHITexture* ArrayDecl>, FRHITexture*,MemberName,ArrayDecl,,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)

◆ SHADER_PARAMETER_UAV

#define SHADER_PARAMETER_UAV (   ShaderType,
  MemberName 
)     INTERNAL_SHADER_PARAMETER_EXPLICIT(UBMT_UAV, TShaderResourceParameterTypeInfo<FRHIUnorderedAccessView*>, FRHIUnorderedAccessView*,MemberName,, = nullptr,EShaderPrecisionModifier::Float,TEXT(#ShaderType),false)

Adds an unordered access view.

Example: SHADER_PARAMETER_UAV(RWTexture2D, MyUAV)

Typedef Documentation

◆ FRDGBufferAccessArray

◆ FRDGTextureAccessArray

Function Documentation

◆ BuildShaderBindingLayout()

RENDERCORE_API void BuildShaderBindingLayout ( TConstArrayView< FShaderParametersMetadata * >  UniformBuffers,
EShaderBindingLayoutFlags  BaseShaderBindingLayoutFlags,
FShaderBindingLayoutContainer OutShaderBindingLayoutContainer 
)
extern

Build the shader binding layout desc from array of used Uniform buffers which will be bound as static uniform buffers to the rhi

◆ CalcPackedArrayIndex()

constexpr uint32 CalcPackedArrayIndex ( uint32  ElementIndex)
constexpr

◆ CalcPackedArraySize()

constexpr uint32 CalcPackedArraySize ( uint32  NumElements)
constexpr

◆ CalcPackedComponentIndex()

constexpr uint32 CalcPackedComponentIndex ( uint32  ElementIndex)
constexpr

◆ FindUniformBufferStructByFName()

RENDERCORE_API FShaderParametersMetadata * FindUniformBufferStructByFName ( FName  StructName)
extern

◆ FindUniformBufferStructByLayoutHash()

RENDERCORE_API FShaderParametersMetadata * FindUniformBufferStructByLayoutHash ( uint32  Hash)
extern

Finds the FShaderParameterMetadata corresponding to the given uniform buffer layout hash, or null if not found.

◆ FindUniformBufferStructByName()

RENDERCORE_API FShaderParametersMetadata * FindUniformBufferStructByName ( const TCHAR StructName)
extern

Finds the FShaderParametersMetadata corresponding to the given name, or NULL if not found.

◆ FindUniformBufferStructByShaderVariableName()

RENDERCORE_API FShaderParametersMetadata * FindUniformBufferStructByShaderVariableName ( const FHashedName Name)
extern

◆ GetShaderBinding() [1/2]

template<typename TBufferStruct >
TUniformBufferBinding< TBufferStruct > GetShaderBinding ( const TUniformBufferRef< TBufferStruct > &  InUniformBuffer)
inline

◆ GetShaderBinding() [2/2]

template<typename TBufferStruct >
TRDGUniformBufferBinding< TBufferStruct > GetShaderBinding ( TRDGUniformBuffer< TBufferStruct > *  InUniformBuffer)
inline

Constructs a uniform buffer binding that will utilize the shader binding model.

◆ GetShaderParameterMacroName()

const TCHAR * GetShaderParameterMacroName ( EUniformBufferBaseType  ShaderParameterBaseType)

An empty shader parameter structure ready to be used anywhere. Useful parameter struct that only have render targets.

FRenderTargetParameters PassParameters; PassParameters.RenderTargets.DepthStencil = ... ; PassParameters.RenderTargets[0] = ... ; Returns the name of the macro that should be used for a given shader parameter base type.

Returns the name of the macro that should be used for a given shader parameter base type.

◆ GetStaticBinding() [1/2]

template<typename TBufferStruct >
TUniformBufferBinding< TBufferStruct > GetStaticBinding ( const TUniformBufferRef< TBufferStruct > &  InUniformBuffer)
inline

◆ GetStaticBinding() [2/2]

template<typename TBufferStruct >
TRDGUniformBufferBinding< TBufferStruct > GetStaticBinding ( TRDGUniformBuffer< TBufferStruct > *  InUniformBuffer)
inline

Constructs a uniform buffer binding that will utilize the static binding model.

◆ IMPLEMENT_ALIGNED_TYPE() [1/5]

IMPLEMENT_ALIGNED_TYPE ( )

◆ IMPLEMENT_ALIGNED_TYPE() [2/5]

IMPLEMENT_ALIGNED_TYPE ( 16  )

◆ IMPLEMENT_ALIGNED_TYPE() [3/5]

IMPLEMENT_ALIGNED_TYPE ( )

◆ IMPLEMENT_ALIGNED_TYPE() [4/5]

IMPLEMENT_ALIGNED_TYPE ( )

◆ IMPLEMENT_ALIGNED_TYPE() [5/5]

IMPLEMENT_ALIGNED_TYPE ( )