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

Go to the source code of this file.

Classes

struct  FRDGAsyncTask
 
class  TRDGHandle< LocalObjectType, LocalIndexType >
 
class  TRDGHandleRegistry< LocalHandleType, DestructPolicy >
 
class  TRDGHandleBitArray< HandleType >
 
class  TRDGHandleUniqueFilter< HandleType >
 
struct  FRDGTextureDesc
 

Macros

#define RDG_ENABLE_DEBUG   (!UE_BUILD_SHIPPING && !UE_BUILD_TEST)
 
#define IF_RDG_ENABLE_DEBUG(Op)   Op
 
#define RDG_ENABLE_DEBUG_WITH_ENGINE   (RDG_ENABLE_DEBUG && WITH_ENGINE)
 
#define RDG_ENABLE_TRACE   UE_TRACE_ENABLED && !IS_PROGRAM && !UE_BUILD_SHIPPING
 
#define IF_RDG_ENABLE_TRACE(Op)
 
#define RDG_DUMP_RESOURCES   (WITH_DUMPGPU)
 
#define RDG_EVENTS_NONE   0
 
#define RDG_EVENTS_STRING_REF   1
 
#define RDG_EVENTS_STRING_COPY   2
 
#define RDG_EVENTS   RDG_EVENTS_NONE
 
#define SUPPORTS_VISUALIZE_TEXTURE   (WITH_ENGINE && (!UE_BUILD_SHIPPING || WITH_EDITOR))
 

Typedefs

using ERDGTextureMetaDataAccess = ERHITextureMetaDataAccess
 
using FRDGPassHandle = TRDGHandle< FRDGPass, uint32 >
 
using FRDGPassRegistry = TRDGHandleRegistry< FRDGPassHandle >
 
using FRDGPassHandleArray = TArray< FRDGPassHandle, TInlineAllocator< 4, FRDGArrayAllocator > >
 
using FRDGPassBitArray = TRDGHandleBitArray< FRDGPassHandle >
 
using FRDGUniformBufferHandle = TRDGHandle< FRDGUniformBuffer, uint32 >
 
using FRDGUniformBufferRegistry = TRDGHandleRegistry< FRDGUniformBufferHandle >
 
using FRDGUniformBufferBitArray = TRDGHandleBitArray< FRDGUniformBufferHandle >
 
using FRDGViewHandle = TRDGHandle< FRDGView, uint32 >
 
using FRDGViewRegistry = TRDGHandleRegistry< FRDGViewHandle, ERDGHandleRegistryDestructPolicy::Never >
 
using FRDGViewUniqueFilter = TRDGHandleUniqueFilter< FRDGViewHandle >
 
using FRDGViewBitArray = TRDGHandleBitArray< FRDGViewHandle >
 
using FRDGTextureHandle = TRDGHandle< FRDGTexture, uint32 >
 
using FRDGTextureRegistry = TRDGHandleRegistry< FRDGTextureHandle, ERDGHandleRegistryDestructPolicy::Never >
 
using FRDGTextureBitArray = TRDGHandleBitArray< FRDGTextureHandle >
 
using FRDGBufferHandle = TRDGHandle< FRDGBuffer, uint32 >
 
using FRDGBufferReservedCommitHandle = TRDGHandle< FRDGBuffer, uint16 >
 
using FRDGBufferRegistry = TRDGHandleRegistry< FRDGBufferHandle, ERDGHandleRegistryDestructPolicy::Never >
 
using FRDGBufferBitArray = TRDGHandleBitArray< FRDGBufferHandle >
 
using FRDGPassHandlesByPipeline = TRHIPipelineArray< FRDGPassHandle >
 
using FRDGPassesByPipeline = TRHIPipelineArray< FRDGPass * >
 
using FRDGBufferNumElementsCallback = TFunction< uint32()>
 
using FRDGBufferInitialDataCallback = TFunction< const void *()>
 
using FRDGBufferInitialDataSizeCallback = TFunction< uint64()>
 
template<typename ArrayType , typename ArrayTypeNoRef = std::remove_reference_t<ArrayType>, typename = typename TEnableIf<TIsTArray_V<ArrayTypeNoRef>>::Type>
using TRDGBufferArrayCallback = TFunction< const ArrayType &()>
 
using FRDGBufferInitialDataFreeCallback = TFunction< void(const void *InData)>
 
using FRDGBufferInitialDataFillCallback = TFunction< void(void *InData, uint32 InDataSize)>
 
using FRDGDispatchGroupCountCallback = TFunction< FIntVector()>
 

Enumerations

enum class  ERDGBuilderFlags {
  None = 0 , ParallelSetup = 1 << 0 , ParallelCompile = 1 << 1 , ParallelExecute = 1 << 2 ,
  Parallel = ParallelSetup | ParallelCompile | ParallelExecute , UE_DEPRECATED =(5.5, "Use ERDDGBuilderFlags::Parallel instead.") = Parallel
}
 
enum class  ERDGPassFlags : uint16 {
  None = 0 , Raster = 1 << 0 , Compute = 1 << 1 , AsyncCompute = 1 << 2 ,
  Copy = 1 << 3 , NeverCull = 1 << 4 , SkipRenderPass = 1 << 5 , NeverMerge = 1 << 6 ,
  NeverParallel = 1 << 7 , Readback = Copy | NeverCull
}
 
enum class  ERDGBufferFlags : uint8 { None = 0 , MultiFrame = 1 << 0 , SkipTracking = 1 << 1 , ForceImmediateFirstBarrier = 1 << 2 }
 
enum class  ERDGTextureFlags : uint8 {
  None = 0 , MultiFrame = 1 << 0 , SkipTracking = 1 << 1 , ForceImmediateFirstBarrier = 1 << 2 ,
  MaintainCompression = 1 << 3
}
 
enum class  ERDGSetupTaskWaitPoint : uint8 { Compile = 0 , Execute = 1 , MAX }
 
enum class  ERDGUnorderedAccessViewFlags : uint8 { None = 0 , SkipBarrier = 1 << 0 }
 
enum class  ERDGViewableResourceType : uint8 { Texture , Buffer , MAX }
 
enum class  ERDGViewType : uint8 {
  TextureUAV , TextureSRV , BufferUAV , BufferSRV ,
  MAX
}
 
enum class  ERDGResourceExtractionFlags : uint8 { None = 0 , AllowTransient = 1 }
 
enum class  ERDGInitialDataFlags : uint8 { None = 0 , NoCopy = 1 << 0 }
 
enum class  ERDGPooledBufferAlignment : uint8 { None , Page , PowerOfTwo }
 
enum class  ERDGHandleRegistryDestructPolicy { Registry , Allocator , Never }
 

Functions

 ENUM_CLASS_FLAGS (ERDGBuilderFlags)
 
 ENUM_CLASS_FLAGS (ERDGPassFlags)
 
 ENUM_CLASS_FLAGS (ERDGBufferFlags)
 
 ENUM_CLASS_FLAGS (ERDGTextureFlags)
 
 ENUM_CLASS_FLAGS (ERDGUnorderedAccessViewFlags)
 
ERDGViewableResourceType GetParentType (ERDGViewType ViewType)
 
 ENUM_CLASS_FLAGS (ERDGResourceExtractionFlags)
 
ERDGViewableResourceType GetViewableResourceType (ERDGViewType ViewType)
 
int32 GetResourceTransitionPlaneForMetadataAccess (ERDGTextureMetaDataAccess Metadata)
 

Macro Definition Documentation

◆ IF_RDG_ENABLE_DEBUG

#define IF_RDG_ENABLE_DEBUG (   Op)    Op

Performs the operation if RDG_ENABLE_DEBUG is enabled. Useful for one-line checks without explicitly wrapping in if.

◆ IF_RDG_ENABLE_TRACE

#define IF_RDG_ENABLE_TRACE (   Op)

◆ RDG_DUMP_RESOURCES

#define RDG_DUMP_RESOURCES   (WITH_DUMPGPU)

Allows to dump all RDG resources of a frame.

◆ RDG_ENABLE_DEBUG

#define RDG_ENABLE_DEBUG   (!UE_BUILD_SHIPPING && !UE_BUILD_TEST)

DEFINES Whether render graph debugging is enabled.

◆ RDG_ENABLE_DEBUG_WITH_ENGINE

#define RDG_ENABLE_DEBUG_WITH_ENGINE   (RDG_ENABLE_DEBUG && WITH_ENGINE)

Whether render graph debugging is enabled and we are compiling with the engine.

◆ RDG_ENABLE_TRACE

#define RDG_ENABLE_TRACE   UE_TRACE_ENABLED && !IS_PROGRAM && !UE_BUILD_SHIPPING

Whether render graph insight tracing is enabled.

◆ RDG_EVENTS

#define RDG_EVENTS   RDG_EVENTS_NONE

Whether render graph GPU events are enabled.

◆ RDG_EVENTS_NONE

#define RDG_EVENTS_NONE   0

The type of GPU events the render graph system supports. RDG_EVENTS == 0 means there is no string processing at all. RDG_EVENTS == 1 means the format component of the event name is stored as a const TCHAR*. RDG_EVENTS == 2 means string formatting is evaluated and stored in an FString.

◆ RDG_EVENTS_STRING_COPY

#define RDG_EVENTS_STRING_COPY   2

◆ RDG_EVENTS_STRING_REF

#define RDG_EVENTS_STRING_REF   1

◆ SUPPORTS_VISUALIZE_TEXTURE

#define SUPPORTS_VISUALIZE_TEXTURE   (WITH_ENGINE && (!UE_BUILD_SHIPPING || WITH_EDITOR))

Typedef Documentation

◆ ERDGTextureMetaDataAccess

◆ FRDGBufferBitArray

◆ FRDGBufferHandle

◆ FRDGBufferInitialDataCallback

◆ FRDGBufferInitialDataFillCallback

◆ FRDGBufferInitialDataFreeCallback

◆ FRDGBufferInitialDataSizeCallback

◆ FRDGBufferNumElementsCallback

◆ FRDGBufferRegistry

◆ FRDGBufferReservedCommitHandle

◆ FRDGDispatchGroupCountCallback

◆ FRDGPassBitArray

◆ FRDGPassesByPipeline

◆ FRDGPassHandle

◆ FRDGPassHandleArray

◆ FRDGPassHandlesByPipeline

◆ FRDGPassRegistry

◆ FRDGTextureBitArray

◆ FRDGTextureHandle

◆ FRDGTextureRegistry

◆ FRDGUniformBufferBitArray

◆ FRDGUniformBufferHandle

◆ FRDGUniformBufferRegistry

◆ FRDGViewBitArray

◆ FRDGViewHandle

◆ FRDGViewRegistry

◆ FRDGViewUniqueFilter

◆ TRDGBufferArrayCallback

template<typename ArrayType , typename ArrayTypeNoRef = std::remove_reference_t<ArrayType>, typename = typename TEnableIf<TIsTArray_V<ArrayTypeNoRef>>::Type>
using TRDGBufferArrayCallback = TFunction<const ArrayType&()>

Enumeration Type Documentation

◆ ERDGBufferFlags

enum class ERDGBufferFlags : uint8
strong

Flags to annotate a render graph buffer.

Enumerator
None 
MultiFrame 

Tag the buffer to survive through frame, that is important for multi GPU alternate frame rendering.

SkipTracking 

The buffer is ignored by RDG tracking and will never be transitioned. Use the flag when registering a buffer with no writable GPU flags. Write access is not allowed for the duration of the graph. This flag is intended as an optimization to cull out tracking of read-only buffers that are used frequently throughout the graph. Note that it's the user's responsibility to ensure the resource is in the correct readable state for use with RDG passes, as RDG does not know the exact state of the resource.

ForceImmediateFirstBarrier 

When set, RDG will perform its first barrier without splitting. Practically, this means the resource is left in its initial state until the first pass it's used within the graph. Without this flag, the resource is split-transitioned at the start of the graph.

◆ ERDGBuilderFlags

enum class ERDGBuilderFlags
strong

ENUMS

Enumerator
None 
ParallelSetup 

Allows the builder to parallelize AddSetupPass calls. Without this flag, setup passes run serially.

ParallelCompile 

Allows the builder to parallelize compilation of the graph. Without this flag, all passes execute on the render thread.

ParallelExecute 

Allows the builder to parallelize execution of passes. Without this flag, all passes execute on the render thread.

Parallel 
UE_DEPRECATED 

◆ ERDGHandleRegistryDestructPolicy

Enumerator
Registry 
Allocator 
Never 

◆ ERDGInitialDataFlags

Enumerator
None 

Specifies the default behavior, which is to make a copy of the initial data for replay when the graph is executed. The user does not need to preserve lifetime of the data pointer.

NoCopy 

Specifies that the user will maintain ownership of the data until the graph is executed. The upload pass will only use a reference to store the data. Use caution with this flag since graph execution is deferred! Useful to avoid the copy if the initial data lifetime is guaranteed to outlive the graph.

◆ ERDGPassFlags

enum class ERDGPassFlags : uint16
strong

Flags to annotate a pass with when calling AddPass.

Enumerator
None 

Pass doesn't have any inputs or outputs tracked by the graph. This may only be used by the parameterless AddPass function.

Raster 

Pass uses rasterization on the graphics pipe.

Compute 

Pass uses compute on the graphics pipe.

AsyncCompute 

Pass uses compute on the async compute pipe.

Copy 

Pass uses copy commands on the graphics pipe.

NeverCull 

Pass (and its producers) will never be culled. Necessary if outputs cannot be tracked by the graph.

SkipRenderPass 

Render pass begin / end is skipped and left to the user. Only valid when combined with 'Raster'. Disables render pass merging for the pass.

NeverMerge 

Pass will never have its render pass merged with other passes.

NeverParallel 

Pass will never run off the render thread.

Readback 

Pass uses copy commands but writes to a staging resource.

◆ ERDGPooledBufferAlignment

Enumerator
None 
Page 
PowerOfTwo 

◆ ERDGResourceExtractionFlags

Enumerator
None 
AllowTransient 

◆ ERDGSetupTaskWaitPoint

Enumerator
Compile 

(Default) Setup task is synced prior to compilation. Use this mode if task mutates RDG resources (e.g. RDG buffer upload contents, buffer size callbacks, etc)

Execute 

Setup task is synced prior to execution. Use this mode if your task is stalling in RDG and doesn't affect RDG compilation in any way.

MAX 

◆ ERDGTextureFlags

enum class ERDGTextureFlags : uint8
strong

Flags to annotate a render graph texture.

Enumerator
None 
MultiFrame 

Tag the texture to survive through frame, that is important for multi GPU alternate frame rendering.

SkipTracking 

The buffer is ignored by RDG tracking and will never be transitioned. Use the flag when registering a buffer with no writable GPU flags. Write access is not allowed for the duration of the graph. This flag is intended as an optimization to cull out tracking of read-only buffers that are used frequently throughout the graph. Note that it's the user's responsibility to ensure the resource is in the correct readable state for use with RDG passes, as RDG does not know the exact state of the resource.

ForceImmediateFirstBarrier 

When set, RDG will perform its first barrier without splitting. Practically, this means the resource is left in its initial state until the first pass it's used within the graph. Without this flag, the resource is split-transitioned at the start of the graph.

MaintainCompression 

Prevents metadata decompression on this texture.

◆ ERDGUnorderedAccessViewFlags

Flags to annotate a view with when calling CreateUAV.

Enumerator
None 
SkipBarrier 

◆ ERDGViewableResourceType

The set of concrete parent resource types.

Enumerator
Texture 
Buffer 
MAX 

◆ ERDGViewType

enum class ERDGViewType : uint8
strong

The set of concrete view types.

Enumerator
TextureUAV 
TextureSRV 
BufferUAV 
BufferSRV 
MAX 

Function Documentation

◆ ENUM_CLASS_FLAGS() [1/6]

ENUM_CLASS_FLAGS ( ERDGBufferFlags  )

◆ ENUM_CLASS_FLAGS() [2/6]

ENUM_CLASS_FLAGS ( ERDGBuilderFlags  )

◆ ENUM_CLASS_FLAGS() [3/6]

ENUM_CLASS_FLAGS ( ERDGPassFlags  )

◆ ENUM_CLASS_FLAGS() [4/6]

ENUM_CLASS_FLAGS ( ERDGResourceExtractionFlags  )

◆ ENUM_CLASS_FLAGS() [5/6]

ENUM_CLASS_FLAGS ( ERDGTextureFlags  )

◆ ENUM_CLASS_FLAGS() [6/6]

ENUM_CLASS_FLAGS ( ERDGUnorderedAccessViewFlags  )

◆ GetParentType()

ERDGViewableResourceType GetParentType ( ERDGViewType  ViewType)
inline

◆ GetResourceTransitionPlaneForMetadataAccess()

int32 GetResourceTransitionPlaneForMetadataAccess ( ERDGTextureMetaDataAccess  Metadata)
inline

Returns the associated FRHITransitionInfo plane index.

◆ GetViewableResourceType()

ERDGViewableResourceType GetViewableResourceType ( ERDGViewType  ViewType)
inline

Returns the equivalent parent resource type for a view type.