UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VulkanShaderResources.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 VulkanResources.h: Vulkan resource RHI definitions.
5=============================================================================*/
6
7#pragma once
8
10#include "CrossCompilerCommon.h"
11#include "VulkanCommon.h"
12#include "VulkanThirdParty.h"
13
14
15// Vulkan ParameterMap:
16// Buffer Index = EBufferIndex
17// Base Offset = Index into the subtype
18// Size = Ignored for non-globals
20{
21 // Includes all bindings, the index in this array is the binding slot
23 {
24 // VkDescriptorType
26#if VULKAN_ENABLE_BINDING_DEBUG_NAMES
27 FString DebugName;
28#endif
29 };
31
32 // FBindingInfo with type VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER have a corresponding entry in this table (at the same index)
40
41 // The order of this enum should always match the strings in VulkanBackend.cpp (VULKAN_SUBPASS_FETCH)
43 {
44 Depth,
45 Color0,
46 Color1,
47 Color2,
48 Color3,
49 Color4,
50 Color5,
51 Color6,
52 Color7,
53
54 Count,
55 };
56
57 // Used to determine the EAttachmentType of a FBindingInfo with type VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
64
65 // Types of Global Samplers (see Common.ush for types)
66 // Must match GetGlobalSamplerType() in SpirVShaderCompiler.inl and
67 // and declarations in VulkanCommon.ush
86
87 // The number of uniform buffers containing constants and requiring bindings
88 // Uniform buffers beyond this index do not have bindings (resource only UB)
90
91 // Size of the uniform buffer containing packed globals
92 // If present (not zero), it will always be at binding 0 of the stage
94
95 // Mask of input attachments being used (the index of the bit corresponds to EAttachmentType value)
97
98 // Mostly relevant for Vertex Shaders
100
101 // Relevant for Ray Tracing Shaders
104
108
109 // For RayHitGroup shaders
111 {
112 NotPresent = 0,
113
114 // Hit group types are all stored in a single spirv blob
115 // and each have different entry point names
116 // NOTE: Not used yet because of compiler issues
118
119 // Hit group types are each stored in a different spirv blob
120 // to circumvent DXC compilation issues
122 };
125
126 FString DebugName;
127
129 enum EInit
130 {
131 EZero
132 };
134 : InOutMask(0)
135 {
136 }
137};
138
140{
141 Ar << BindingInfo.DescriptorType;
142#if VULKAN_ENABLE_BINDING_DEBUG_NAMES
143 Ar << BindingInfo.DebugName;
144#endif
145 return Ar;
146}
147
149{
150 Ar << Info.LayoutHash;
151 Ar << Info.bHasResources;
152 Ar << Info.BindlessCBIndex;
153 return Ar;
154}
155
157{
158 Ar << Info.BindingIndex;
159 Ar << Info.Type;
160 return Ar;
161}
162
164{
165 Ar << Info.BindingIndex;
166 Ar << Info.Type;
167 return Ar;
168}
169
171{
172 Ar << Header.Bindings;
173 Ar << Header.UniformBufferInfos;
174 Ar << Header.InputAttachmentInfos;
175 Ar << Header.GlobalSamplerInfos;
176 Ar << Header.NumBoundUniformBuffers;
177 Ar << Header.PackedGlobalsSize;
178 Ar << Header.InputAttachmentsMask;
179 Ar << Header.InOutMask;
180 Ar << Header.RayTracingPayloadType;
181 Ar << Header.RayTracingPayloadSize;
182 Ar << Header.SourceHash;
183 Ar << Header.SpirvCRC;
184 Ar << Header.WaveSize;
185 Ar << Header.RayGroupAnyHit;
186 Ar << Header.RayGroupIntersection;
187 Ar << Header.DebugName;
188 return Ar;
189}
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
FArchive & operator<<(FArchive &Ar, FVulkanShaderHeader::FBindingInfo &BindingInfo)
Definition VulkanShaderResources.h:139
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition SecureHash.h:226
Definition Array.h:670
Definition VulkanShaderResources.h:23
uint32 DescriptorType
Definition VulkanShaderResources.h:25
Definition VulkanShaderResources.h:81
EGlobalSamplerType Type
Definition VulkanShaderResources.h:83
uint8 BindingIndex
Definition VulkanShaderResources.h:82
Definition VulkanShaderResources.h:59
uint8 BindingIndex
Definition VulkanShaderResources.h:60
EAttachmentType Type
Definition VulkanShaderResources.h:61
Definition VulkanShaderResources.h:34
uint32 LayoutHash
Definition VulkanShaderResources.h:35
uint8 BindlessCBIndex
Definition VulkanShaderResources.h:37
uint8 bHasResources
Definition VulkanShaderResources.h:36
Definition VulkanShaderResources.h:20
FString DebugName
Definition VulkanShaderResources.h:126
uint32 SpirvCRC
Definition VulkanShaderResources.h:106
EInit
Definition VulkanShaderResources.h:130
@ EZero
Definition VulkanShaderResources.h:131
FVulkanShaderHeader()=default
uint32 RayTracingPayloadType
Definition VulkanShaderResources.h:102
uint32 PackedGlobalsSize
Definition VulkanShaderResources.h:93
uint32 InputAttachmentsMask
Definition VulkanShaderResources.h:96
ERayHitGroupEntrypoint RayGroupAnyHit
Definition VulkanShaderResources.h:123
TArray< FBindingInfo > Bindings
Definition VulkanShaderResources.h:30
uint32 InOutMask
Definition VulkanShaderResources.h:99
TArray< FGlobalSamplerInfo > GlobalSamplerInfos
Definition VulkanShaderResources.h:85
uint8 WaveSize
Definition VulkanShaderResources.h:107
EAttachmentType
Definition VulkanShaderResources.h:43
TArray< FInputAttachmentInfo > InputAttachmentInfos
Definition VulkanShaderResources.h:63
TArray< FUniformBufferInfo > UniformBufferInfos
Definition VulkanShaderResources.h:39
ERayHitGroupEntrypoint
Definition VulkanShaderResources.h:111
uint32 NumBoundUniformBuffers
Definition VulkanShaderResources.h:89
uint32 RayTracingPayloadSize
Definition VulkanShaderResources.h:103
ERayHitGroupEntrypoint RayGroupIntersection
Definition VulkanShaderResources.h:124
FSHAHash SourceHash
Definition VulkanShaderResources.h:105
EGlobalSamplerType
Definition VulkanShaderResources.h:69
FVulkanShaderHeader(EInit)
Definition VulkanShaderResources.h:133