7#include "Containers/Array.h"
11#include "RayTracingBuiltInResources.h"
15#if !defined(D3D12_MAJOR_VERSION)
21 namespace StaticRootSignatureConstants
93#if !defined(D3D12RHI_TOOLS_MESH_SHADERS_UNSUPPORTED)
109 return TEXT(
"SHADER_VISIBILITY_VERTEX");
111 return TEXT(
"SHADER_VISIBILITY_GEOMETRY");
113 return TEXT(
"SHADER_VISIBILITY_PIXEL");
114#if !defined(D3D12RHI_TOOLS_MESH_SHADERS_UNSUPPORTED)
116 return TEXT(
"SHADER_VISIBILITY_MESH");
118 return TEXT(
"SHADER_VISIBILITY_AMPLIFICATION");
121 return TEXT(
"SHADER_VISIBILITY_ALL");
130 return TEXT(
"SRV(t");
132 return TEXT(
"UAV(u");
134 return TEXT(
"Sampler(s");
136 return TEXT(
"CBV(b");
145 return TEXT(
"ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT");
147 return TEXT(
"DENY_VERTEX_SHADER_ROOT_ACCESS");
149 return TEXT(
"DENY_GEOMETRY_SHADER_ROOT_ACCESS");
151 return TEXT(
"DENY_PIXEL_SHADER_ROOT_ACCESS");
153 return TEXT(
"ALLOW_STREAM_OUTPUT");
155#if !defined(D3D12RHI_TOOLS_MESH_SHADERS_UNSUPPORTED)
157 return TEXT(
"DENY_AMPLIFICATION_SHADER_ROOT_ACCESS");
159 return TEXT(
"DENY_MESH_SHADER_ROOT_ACCESS");
163 return TEXT(
"CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED");
165 return TEXT(
"SAMPLER_HEAP_DIRECTLY_INDEXED");
296#if !defined(D3D12RHI_TOOLS_RAYTRACING_SHADERS_UNSUPPORTED)
380 FString
Line = FString::Printf(
TEXT(
"DescriptorTable(visibility=%s, %s0, space=%d, numDescriptors=%d))"),
393 FString
String = FString::Printf(
TEXT(
"\"RootFlags(%s),%s\""),
420 const uint32 NumConstants = 4u;
430#if !defined(D3D12RHI_TOOLS_MESH_SHADERS_UNSUPPORTED)
452 const uint32 NumConstants = 4u;
462#if !defined(D3D12RHI_TOOLS_RAYTRACING_SHADERS_UNSUPPORTED)
514 return Creator.GenerateString();
535 return Creator.GenerateString();
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define MAX_UAVS
Definition D3D12RHI.h:19
#define MAX_SAMPLERS
Definition D3D12RHI.h:18
#define MAX_CBS
Definition D3D12RHI.h:20
#define MAX_SRVS
Definition D3D12RHI.h:17
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
constexpr bool EnumHasAllFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:28
EShaderFrequency
Definition RHIDefinitions.h:202
@ SF_NumGraphicsFrequencies
Definition RHIDefinitions.h:219
@ SF_Compute
Definition RHIDefinitions.h:208
EShaderBindingLayoutFlags
Definition RHIShaderBindingLayout.h:53
@ ShaderBindingLayoutUsed
@ MaxUniformBufferEntries
Definition RHIShaderBindingLayout.h:77
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * GetData() UE_LIFETIMEBOUND
Definition Array.h:1027
void SetNum(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2308
void Init(const ElementType &Element, SizeType Number)
Definition Array.h:3043
ElementType & AddZeroed_GetRef() UE_LIFETIMEBOUND
Definition Array.h:2779
constexpr D3D12_DESCRIPTOR_RANGE_FLAGS SRVDescriptorRangeFlags
Definition D3D12RootSignatureDefinitions.h:24
constexpr D3D12_DESCRIPTOR_RANGE_FLAGS SamplerDescriptorRangeFlags
Definition D3D12RootSignatureDefinitions.h:27
constexpr D3D12_ROOT_DESCRIPTOR_FLAGS CBVRootDescriptorFlags
Definition D3D12RootSignatureDefinitions.h:30
constexpr D3D12_DESCRIPTOR_RANGE_FLAGS UAVDescriptorRangeFlags
Definition D3D12RootSignatureDefinitions.h:26
constexpr D3D12_DESCRIPTOR_RANGE_FLAGS CBVDescriptorRangeFlags
Definition D3D12RootSignatureDefinitions.h:25
Definition D3D12RootSignatureDefinitions.h:20
void CreateComputeRootSignature(FRootSignatureCreator &Creator, EShaderBindingLayoutFlags InFlags)
Definition D3D12RootSignatureDefinitions.h:443
ERootSignatureRangeType
Definition D3D12RootSignatureDefinitions.h:34
void CreateRayTracingSignature(FRootSignatureCreator &Creator, bool bLocalRootSignature, D3D12_ROOT_SIGNATURE_FLAGS BaseRootFlags, EShaderBindingLayoutFlags InFlags)
Definition D3D12RootSignatureDefinitions.h:463
ERootSignatureVisibility
Definition D3D12RootSignatureDefinitions.h:42
FString GenerateRootSignatureString(EShaderFrequency InFrequency, EShaderBindingLayoutFlags InFlags)
defined(D3D12RHI_TOOLS_RAYTRACING_SHADERS_UNSUPPORTED)
Definition D3D12RootSignatureDefinitions.h:518
const TCHAR * GetFlagName(D3D12_ROOT_SIGNATURE_FLAGS Flag)
Definition D3D12RootSignatureDefinitions.h:140
D3D12_DESCRIPTOR_RANGE_FLAGS GetD3D12DescriptorRangeFlags(ERootSignatureRangeType Type)
Definition D3D12RootSignatureDefinitions.h:66
FString GenerateRayTracingSignatureString(bool bLocalRootSignature, D3D12_ROOT_SIGNATURE_FLAGS BaseRootFlags, EShaderBindingLayoutFlags InFlags)
Definition D3D12RootSignatureDefinitions.h:510
const TCHAR * GetTypePrefix(ERootSignatureRangeType Type)
Definition D3D12RootSignatureDefinitions.h:125
const TCHAR * GetVisibilityFlag(ERootSignatureVisibility Visibility)
Definition D3D12RootSignatureDefinitions.h:104
void CreateGfxRootSignature(FRootSignatureCreator &Creator, EShaderBindingLayoutFlags InFlags)
Definition D3D12RootSignatureDefinitions.h:411
D3D12_DESCRIPTOR_RANGE_TYPE GetD3D12DescriptorRangeType(ERootSignatureRangeType Type)
Definition D3D12RootSignatureDefinitions.h:51
D3D12_SHADER_VISIBILITY GetD3D12ShaderVisibility(ERootSignatureVisibility Visibility)
Definition D3D12RootSignatureDefinitions.h:83
void AddAllStandardTablesForVisibility(FRootSignatureCreator &Creator, ERootSignatureVisibility Visibility)
Definition D3D12RootSignatureDefinitions.h:403
U16 Index
Definition radfft.cpp:71
Definition D3D12RootSignatureDefinitions.h:248
ERootSignatureRangeType Type
Definition D3D12RootSignatureDefinitions.h:250
ERootSignatureVisibility Visibility
Definition D3D12RootSignatureDefinitions.h:249
D3D12_DESCRIPTOR_RANGE_FLAGS FlagsOverride
Definition D3D12RootSignatureDefinitions.h:252
int32 NumDescriptors
Definition D3D12RootSignatureDefinitions.h:251
Definition D3D12RootSignatureDefinitions.h:241
const D3D12_VERSIONED_ROOT_SIGNATURE_DESC & Finalize()
Definition D3D12RootSignatureDefinitions.h:294
void AddTable(ERootSignatureVisibility Visibility, ERootSignatureRangeType Type, int32 NumDescriptors, D3D12_DESCRIPTOR_RANGE_FLAGS FlagsOverride=D3D12_DESCRIPTOR_RANGE_FLAG_NONE) override
Definition D3D12RootSignatureDefinitions.h:285
void AddUnorderedAccessViewParameter(uint32 Register, uint32 Space, ERootSignatureVisibility Visibility=ERootSignatureVisibility::All) override
Definition D3D12RootSignatureDefinitions.h:273
void AddShaderResourceViewParameter(uint32 Register, uint32 Space, ERootSignatureVisibility Visibility=ERootSignatureVisibility::All) override
Definition D3D12RootSignatureDefinitions.h:267
TArray< CD3DX12_ROOT_PARAMETER1 > Parameters
Definition D3D12RootSignatureDefinitions.h:244
TArray< CD3DX12_DESCRIPTOR_RANGE1 > DescriptorRanges
Definition D3D12RootSignatureDefinitions.h:243
void AddRootFlag(D3D12_ROOT_SIGNATURE_FLAGS RootFlag) override
Definition D3D12RootSignatureDefinitions.h:256
void AddConstantBufferViewParameter(uint32 Register, uint32 Space, ERootSignatureVisibility Visibility=ERootSignatureVisibility::All) override
Definition D3D12RootSignatureDefinitions.h:261
CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC RootDesc
Definition D3D12RootSignatureDefinitions.h:245
TArray< FPendingTable > PendingTables
Definition D3D12RootSignatureDefinitions.h:254
void AddConstantsParameter(uint32 Num32BitValues, uint32 Register, uint32 Space) override
Definition D3D12RootSignatureDefinitions.h:279
D3D12_ROOT_SIGNATURE_FLAGS RootFlags
Definition D3D12RootSignatureDefinitions.h:242
Definition D3D12RootSignatureDefinitions.h:176
virtual ~FRootSignatureCreator()=default
virtual void AddUnorderedAccessViewParameter(uint32 Register, uint32 Space, ERootSignatureVisibility Visibility=ERootSignatureVisibility::All)=0
bool ShouldSkipType(ERootSignatureRangeType Type) const
Definition D3D12RootSignatureDefinitions.h:224
virtual void AddTable(ERootSignatureVisibility Visibility, ERootSignatureRangeType Type, int32 NumDescriptors, D3D12_DESCRIPTOR_RANGE_FLAGS FlagsOverride=D3D12_DESCRIPTOR_RANGE_FLAG_NONE)=0
virtual void AddConstantsParameter(uint32 Num32BitValues, uint32 Register, uint32 Space)=0
EShaderBindingLayoutFlags Flags
Definition D3D12RootSignatureDefinitions.h:177
void SetRegisterSpace(uint32 InSpace)
Definition D3D12RootSignatureDefinitions.h:214
uint32 RegisterSpace
Definition D3D12RootSignatureDefinitions.h:178
bool HasFlags(EShaderBindingLayoutFlags InFlags) const
Definition D3D12RootSignatureDefinitions.h:209
void SetFlags(EShaderBindingLayoutFlags InFlags)
Definition D3D12RootSignatureDefinitions.h:189
virtual void AddShaderResourceViewParameter(uint32 Register, uint32 Space, ERootSignatureVisibility Visibility=ERootSignatureVisibility::All)=0
virtual void AddRootFlag(D3D12_ROOT_SIGNATURE_FLAGS Flag)=0
uint32 GetRegisterSpace() const
Definition D3D12RootSignatureDefinitions.h:219
virtual void AddConstantBufferViewParameter(uint32 Register, uint32 Space, ERootSignatureVisibility Visibility=ERootSignatureVisibility::All)=0
Definition D3D12RootSignatureDefinitions.h:326
void AddTable(ERootSignatureVisibility Visibility, ERootSignatureRangeType Type, int32 NumDescriptors, D3D12_DESCRIPTOR_RANGE_FLAGS FlagsOverride=D3D12_DESCRIPTOR_RANGE_FLAG_NONE) override
Definition D3D12RootSignatureDefinitions.h:376
void AddConstantsParameter(uint32 Num32BitValues, uint32 Register, uint32 Space) override
Definition D3D12RootSignatureDefinitions.h:366
void AddUnorderedAccessViewParameter(uint32 Register, uint32 Space, ERootSignatureVisibility Visibility=ERootSignatureVisibility::All) override
Definition D3D12RootSignatureDefinitions.h:356
FString RootFlags
Definition D3D12RootSignatureDefinitions.h:399
void AddConstantBufferViewParameter(uint32 Register, uint32 Space, ERootSignatureVisibility Visibility=ERootSignatureVisibility::All) override
Definition D3D12RootSignatureDefinitions.h:336
FString Table
Definition D3D12RootSignatureDefinitions.h:400
void AddRootFlag(D3D12_ROOT_SIGNATURE_FLAGS InFlag) override
Definition D3D12RootSignatureDefinitions.h:327
FString GenerateString() const
Definition D3D12RootSignatureDefinitions.h:391
void AddShaderResourceViewParameter(uint32 Register, uint32 Space, ERootSignatureVisibility Visibility=ERootSignatureVisibility::All) override
Definition D3D12RootSignatureDefinitions.h:346
Definition D3D12RayTracingResources.h:19