UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
GBufferInfo.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "CoreMinimal.h"
7#include "HAL/Platform.h"
8#include "PixelFormat.h"
9#include "RHIDefinitions.h"
10#include "RHIShaderPlatform.h"
11
45
46
48{
58 GBC_Raw_Unorm_2, // a float value normalized to use 2 bits
61 GBC_Bits_4, // an int value, that is fundamentally 4 bits
62 GBC_Bits_2, // an int value, that is fundamentally 2 bits
63
68
69 GBC_Packed_Color_5_6_5, // a unorm value, packed to 565
70 GBC_Packed_Color_5_6_5_Sqrt, // a unorm value, packed to 565, with sqrt
71 GBC_Packed_Color_4_4_4, // a unorm value, packed to 444
72 GBC_Packed_Color_4_4_4_Sqrt, // a unorm value, packed to 444, with sqrt
73 GBC_Packed_Color_3_3_2, // a unorm value, packed to 332
74 GBC_Packed_Color_3_3_2_Sqrt, // a unorm value, packed to 332, with sqrt
75 GBC_Packed_Quantized_6, // a unorm value, quantized to 6 bits
76 GBC_Packed_Quantized_4, // a unorm value, quantized to 4 bits
77 GBC_Packed_Quantized_2, // a unorm value, quantized to 2 bits
78
80};
81
82// the actual format of the output texture
96
105
107{
108 GBL_Default, // Default GBuffer Layout
109 GBL_ForceVelocity, // Force the inclusion of the velocity target (if it's not included in GBL_Default)
110
111 GBL_Num
113
114
116{
117 EGBufferCompression Type; // compression type
118 int32 SrcNumChan; // how many channels before compression
119 int32 DstNumChan; // how many channels after copression
120 int32 ChanBits[4]; // how many bits are each destination channel
123 const TCHAR* EncodeFuncName; // name of the function to do this conversion
124 const TCHAR* DecodeFuncName; // name of the function to do this conversion
125};
126
127
129{
131 {
132 bIsValid = false;
133 bFull = false;
134 TargetIndex = -1;
135 DstChannelIndex = -1;
136 SrcChannelIndex = -1;
137 DstBitStart = -1;
138 SrcBitStart = -1;
139 BitNum = -1;
140 }
141
142 // if we pass in 2 values, it means we use the entire channel
154
155 // if we pass in 4 values, it means we also need to pack the bits
167
169 bool bFull;
176};
177
178
179// the texture positions in the GBuffer
181{
183 {
184 bIsValid = false;
185 bQuantizationBias = false;
189
190 for (int32 I = 0; I < 4; I++)
191 {
192 Packing[I] = {};
193 }
194 }
195
197 {
198 bIsValid = true;
199 bQuantizationBias = false;
203
204 for (int32 I = 0; I < 4; I++)
205 {
206 Packing[I] = {};
207 }
208 }
209
210 static const int MaxPacking = 8;
211
217 FGBufferPacking Packing[MaxPacking]; // 8 should be plenty, can always make it larger
218};
219
221{
223 {
225 bIsSrgb = false;
226 bIsRenderTargetable = false;
227 bIsShaderResource = false;
228 bIsUsingExtraFlags = false;
229 }
230
231 bool operator==(const FGBufferTarget & Rhs) const
232 {
233 return TargetType == Rhs.TargetType &&
234 TargetName == Rhs.TargetName &&
235 bIsSrgb == Rhs.bIsSrgb &&
236 bIsRenderTargetable == Rhs.bIsRenderTargetable &&
237 bIsShaderResource == Rhs.bIsShaderResource &&
238 bIsUsingExtraFlags == Rhs.bIsUsingExtraFlags;
239 }
240
255
257 FString TargetName;
262};
263
270
271// Describes the bindings of the GBuffer for a given layout
281
292
320
321
323
325
326UE_DEPRECATED(5.4, "Please use the overload which takes a shader platform parameter")
331
333
335
336
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
FGBufferBinding RENDERCORE_API FindGBufferBindingByName(const FGBufferInfo &GBufferInfo, const FString &Name, EShaderPlatform ShaderPlatform)
Definition GBufferInfo.cpp:137
EGBufferSlot
Definition GBufferInfo.h:13
@ GBS_IndirectIrradiance
Definition GBufferInfo.h:25
@ GBS_Metallic
Definition GBufferInfo.h:18
@ GBS_Specular
Definition GBufferInfo.h:19
@ GBS_BaseColor
Definition GBufferInfo.h:23
@ GBS_AO
Definition GBufferInfo.h:26
@ GBS_Invalid
Definition GBufferInfo.h:14
@ GBS_SubsurfaceProfile
Definition GBufferInfo.h:34
@ GBS_SubsurfaceColor
Definition GBufferInfo.h:32
@ GBS_WorldTangent
Definition GBufferInfo.h:29
@ GBS_WorldNormal
Definition GBufferInfo.h:16
@ GBS_SceneColor
Definition GBufferInfo.h:15
@ GBS_SubsurfaceProfileX
Definition GBufferInfo.h:40
@ GBS_Opacity
Definition GBufferInfo.h:33
@ GBS_CustomData
Definition GBufferInfo.h:31
@ GBS_PerObjectGBufferData
Definition GBufferInfo.h:17
@ GBS_Roughness
Definition GBufferInfo.h:20
@ GBS_HairBacklit
Definition GBufferInfo.h:38
@ GBS_IrisNormal
Definition GBufferInfo.h:41
@ GBS_Num
Definition GBufferInfo.h:43
@ GBS_SeparatedMainDirLight
Definition GBufferInfo.h:42
@ GBS_HairSecondaryWorldNormal
Definition GBufferInfo.h:37
@ GBS_Cloth
Definition GBufferInfo.h:39
@ GBS_ClearCoatRoughness
Definition GBufferInfo.h:36
@ GBS_ClearCoat
Definition GBufferInfo.h:35
@ GBS_PrecomputedShadowFactor
Definition GBufferInfo.h:28
@ GBS_Velocity
Definition GBufferInfo.h:27
@ GBS_ShadingModelId
Definition GBufferInfo.h:21
@ GBS_GenericAO
Definition GBufferInfo.h:24
@ GBS_Anisotropy
Definition GBufferInfo.h:30
@ GBS_SelectiveOutputMask
Definition GBufferInfo.h:22
EGBufferCompression
Definition GBufferInfo.h:48
@ GBC_Packed_Color_5_6_5
Definition GBufferInfo.h:69
@ GBC_Raw_Float_16_16
Definition GBufferInfo.h:59
@ GBC_Raw_Float_16_16_16
Definition GBufferInfo.h:51
@ GBC_Packed_Color_5_6_5_Sqrt
Definition GBufferInfo.h:70
@ GBC_Packed_Quantized_4
Definition GBufferInfo.h:76
@ GBC_EncodeNormal_Normal_8_8_8
Definition GBufferInfo.h:67
@ GBC_Raw_Unorm_8_8
Definition GBufferInfo.h:56
@ GBC_Bits_2
Definition GBufferInfo.h:62
@ GBC_Raw_Float_16_16_16_16
Definition GBufferInfo.h:50
@ GBC_Num
Definition GBufferInfo.h:79
@ GBC_Packed_Normal_Octahedral_8_8
Definition GBufferInfo.h:64
@ GBC_Packed_Color_3_3_2
Definition GBufferInfo.h:73
@ GBC_Raw_Unorm_8_8_8_8
Definition GBufferInfo.h:54
@ GBC_Raw_Float_10_10_10
Definition GBufferInfo.h:53
@ GBC_Raw_Float_11_11_10
Definition GBufferInfo.h:52
@ GBC_Raw_Unorm_2
Definition GBufferInfo.h:58
@ GBC_EncodeNormal_Normal_10_10_10
Definition GBufferInfo.h:66
@ GBC_Raw_Float_16
Definition GBufferInfo.h:60
@ GBC_Raw_Unorm_8
Definition GBufferInfo.h:57
@ GBC_Packed_Quantized_2
Definition GBufferInfo.h:77
@ GBC_Packed_Quantized_6
Definition GBufferInfo.h:75
@ GBC_Invalid
Definition GBufferInfo.h:49
@ GBC_Packed_Color_4_4_4
Definition GBufferInfo.h:71
@ GBC_Packed_Color_4_4_4_Sqrt
Definition GBufferInfo.h:72
@ GBC_Packed_Color_3_3_2_Sqrt
Definition GBufferInfo.h:74
@ GBC_Bits_4
Definition GBufferInfo.h:61
@ GBC_Raw_Unorm_8_8_8
Definition GBufferInfo.h:55
@ GBC_EncodeNormal_Normal_16_16_16
Definition GBufferInfo.h:65
EGBufferType
Definition GBufferInfo.h:84
@ GBT_Unorm_16_16
Definition GBufferInfo.h:86
@ GBT_Num
Definition GBufferInfo.h:94
@ GBT_Unorm_10_10_10_2
Definition GBufferInfo.h:89
@ GBT_Unorm_11_11_10
Definition GBufferInfo.h:88
@ GBT_Unorm_16_16_16_16
Definition GBufferInfo.h:90
@ GBT_Invalid
Definition GBufferInfo.h:85
@ GBT_Unorm_8_8_8_8
Definition GBufferInfo.h:87
@ GBT_Float_16_16_16_16
Definition GBufferInfo.h:92
@ GBT_Float_16_16
Definition GBufferInfo.h:91
@ GBT_Float_32
Definition GBufferInfo.h:93
int32 RENDERCORE_API FindGBufferTargetByName(const FGBufferInfo &GBufferInfo, const FString &Name)
Definition GBufferInfo.cpp:124
EGBufferChecker
Definition GBufferInfo.h:98
@ GBCH_Even
Definition GBufferInfo.h:100
@ GBCH_Num
Definition GBufferInfo.h:103
@ GBCH_Invalid
Definition GBufferInfo.h:99
@ GBCH_Both
Definition GBufferInfo.h:102
@ GBCH_Odd
Definition GBufferInfo.h:101
EGBufferLayout
Definition GBufferInfo.h:107
@ GBL_Num
Definition GBufferInfo.h:111
@ GBL_Default
Definition GBufferInfo.h:108
@ GBL_ForceVelocity
Definition GBufferInfo.h:109
bool RENDERCORE_API IsGBufferInfoEqual(const FGBufferInfo &Lhs, const FGBufferInfo &Rhs)
Definition GBufferInfo.cpp:60
FGBufferInfo RENDERCORE_API FetchFullGBufferInfo(const FGBufferParams &Params)
Definition GBufferInfo.cpp:586
EPixelFormat
Definition PixelFormat.h:16
@ PF_Unknown
Definition PixelFormat.h:17
#define TexCreate_None
Definition RHIDefinitions.h:1191
ETextureCreateFlags
Definition RHIDefinitions.h:1091
EShaderPlatform
Definition RHIShaderPlatform.h:11
@ SP_NumPlatforms
Definition RHIShaderPlatform.h:55
EShaderPlatform GMaxRHIShaderPlatform
Definition RHI.cpp:1335
U16 Index
Definition radfft.cpp:71
Definition GBufferInfo.h:265
EPixelFormat Format
Definition GBufferInfo.h:267
ETextureCreateFlags Flags
Definition GBufferInfo.h:268
Definition GBufferInfo.h:273
FGBufferBinding GBufferD
Definition GBufferInfo.h:277
FGBufferBinding GBufferVelocity
Definition GBufferInfo.h:279
FGBufferBinding GBufferE
Definition GBufferInfo.h:278
FGBufferBinding GBufferC
Definition GBufferInfo.h:276
FGBufferBinding GBufferA
Definition GBufferInfo.h:274
FGBufferBinding GBufferB
Definition GBufferInfo.h:275
Definition GBufferInfo.h:116
const TCHAR * DecodeFuncName
Definition GBufferInfo.h:124
int32 DstNumChan
Definition GBufferInfo.h:119
bool bIsPackedBits
Definition GBufferInfo.h:121
int32 ChanBits[4]
Definition GBufferInfo.h:120
const TCHAR * EncodeFuncName
Definition GBufferInfo.h:123
int32 SrcNumChan
Definition GBufferInfo.h:118
bool bIsConversion
Definition GBufferInfo.h:122
EGBufferCompression Type
Definition GBufferInfo.h:117
Definition GBufferInfo.h:283
FGBufferItem Slots[GBS_Num]
Definition GBufferInfo.h:289
static const int MaxTargets
Definition GBufferInfo.h:284
FGBufferTarget Targets[MaxTargets]
Definition GBufferInfo.h:287
int32 NumTargets
Definition GBufferInfo.h:286
Definition GBufferInfo.h:181
EGBufferCompression Compression
Definition GBufferInfo.h:215
bool bQuantizationBias
Definition GBufferInfo.h:213
bool bIsValid
Definition GBufferInfo.h:212
FGBufferPacking Packing[MaxPacking]
Definition GBufferInfo.h:217
FGBufferItem(EGBufferSlot InBufferSlot, EGBufferCompression InCompression, EGBufferChecker InChecker)
Definition GBufferInfo.h:196
EGBufferSlot BufferSlot
Definition GBufferInfo.h:214
FGBufferItem()
Definition GBufferInfo.h:182
EGBufferChecker Checker
Definition GBufferInfo.h:216
static const int MaxPacking
Definition GBufferInfo.h:210
Definition GBufferInfo.h:129
int32 SrcChannelIndex
Definition GBufferInfo.h:173
FGBufferPacking(int32 InTargetIndex, int32 InSrcChannelIndex, int32 InDstChannelIndex, int32 InSrcBitStart, int32 InDstBitStart, int32 InBitNum)
Definition GBufferInfo.h:156
FGBufferPacking(int32 InTargetIndex, int32 InSrcChannelIndex, int32 InDstChannelIndex)
Definition GBufferInfo.h:143
FGBufferPacking()
Definition GBufferInfo.h:130
int32 DstBitStart
Definition GBufferInfo.h:172
int32 DstChannelIndex
Definition GBufferInfo.h:171
bool bIsValid
Definition GBufferInfo.h:168
int32 BitNum
Definition GBufferInfo.h:175
int32 SrcBitStart
Definition GBufferInfo.h:174
int32 TargetIndex
Definition GBufferInfo.h:170
bool bFull
Definition GBufferInfo.h:169
Definition GBufferInfo.h:294
bool bHasVelocity
Definition GBufferInfo.h:297
int32 LegacyFormatIndex
Definition GBufferInfo.h:296
EShaderPlatform ShaderPlatform
Definition GBufferInfo.h:295
bool bHasTangent
Definition GBufferInfo.h:298
bool bUsesVelocityDepth
Definition GBufferInfo.h:300
bool operator!=(const FGBufferParams &RHS) const
Definition GBufferInfo.h:315
bool bHasPrecShadowFactor
Definition GBufferInfo.h:299
bool operator==(const FGBufferParams &RHS) const
Definition GBufferInfo.h:303
bool bHasSingleLayerWaterSeparatedMainLight
Definition GBufferInfo.h:301
Definition GBufferInfo.h:221
bool operator==(const FGBufferTarget &Rhs) const
Definition GBufferInfo.h:231
EGBufferType TargetType
Definition GBufferInfo.h:256
bool bIsShaderResource
Definition GBufferInfo.h:260
bool bIsRenderTargetable
Definition GBufferInfo.h:259
FGBufferTarget()
Definition GBufferInfo.h:222
bool bIsSrgb
Definition GBufferInfo.h:258
void Init(EGBufferType InTargetType, FString InTargetName, bool bInIsSrgb, bool bInIsRenderTargetable, bool bInIsShaderResource, bool bInIsUsingExtraFlags)
Definition GBufferInfo.h:241
bool bIsUsingExtraFlags
Definition GBufferInfo.h:261
FString TargetName
Definition GBufferInfo.h:257