UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
RenderGraphUtils.h File Reference
#include "Containers/Array.h"
#include "Containers/ArrayView.h"
#include "Containers/ContainersFwd.h"
#include "Containers/UnrealString.h"
#include "HAL/UnrealMemory.h"
#include "Math/Color.h"
#include "Math/IntPoint.h"
#include "Math/IntRect.h"
#include "Math/IntVector.h"
#include "Math/UnrealMathSSE.h"
#include "Math/Vector2D.h"
#include "Math/Vector4.h"
#include "Misc/AssertionMacros.h"
#include "Misc/EnumClassFlags.h"
#include "Misc/Optional.h"
#include "RHI.h"
#include "RHICommandList.h"
#include "RHIDefinitions.h"
#include "RenderGraphAllocator.h"
#include "RenderGraphBuilder.h"
#include "RenderGraphDefinitions.h"
#include "RenderGraphEvent.h"
#include "RenderGraphResources.h"
#include "RendererInterface.h"
#include "Shader.h"
#include "ShaderParameterMacros.h"
#include "ShaderParameterStruct.h"
#include "Stats/Stats.h"
#include "Templates/Function.h"
#include "Templates/Invoke.h"
#include "Templates/RefCounting.h"
#include "Templates/UnrealTemplate.h"
#include "Templates/UnrealTypeTraits.h"
#include "PipelineStateCache.h"
#include <initializer_list>

Go to the source code of this file.

Classes

struct  FTextureRenderTargetBinding
 
struct  FRDGTextureMSAA
 
struct  FRDGDrawTextureInfo
 
struct  FRDGTextureClearInfo
 
struct  FRDGUploadData< InElementType >
 
class  FRDGExternalAccessQueue
 

Namespaces

namespace  FComputeShaderUtils
 
namespace  FComputeShaderUtils::Private
 

Typedefs

using FRDGDispatchLateParamCallback = TFunction< void()>
 

Functions

bool HasBeenProduced (FRDGViewableResource *Resource)
 
FRDGTextureRef GetIfProduced (FRDGTextureRef Texture, FRDGTextureRef FallbackTexture=nullptr)
 
FRDGBufferRef GetIfProduced (FRDGBufferRef Buffer, FRDGBufferRef FallbackBuffer=nullptr)
 
ERenderTargetLoadAction GetLoadActionIfProduced (FRDGTextureRef Texture, ERenderTargetLoadAction ActionIfNotProduced)
 
FRenderTargetBinding GetLoadBindingIfProduced (FRDGTextureRef Texture, ERenderTargetLoadAction ActionIfNotProduced)
 
FRHITextureTryGetRHI (FRDGTextureRef Texture)
 
FRHIBufferTryGetRHI (FRDGBuffer *Buffer)
 
FRHIBufferTryGetRHI (FRDGPooledBuffer *Buffer)
 
FRHIShaderResourceViewTryGetSRV (FRDGPooledBuffer *Buffer)
 
uint64 TryGetSize (const FRDGBuffer *Buffer)
 
uint64 TryGetSize (const FRDGPooledBuffer *Buffer)
 
bool IsRegistered (FRDGBuilder &GraphBuilder, const TRefCountPtr< IPooledRenderTarget > &RenderTarget)
 
bool IsRegistered (FRDGBuilder &GraphBuilder, const TRefCountPtr< FRDGPooledBuffer > &Buffer)
 
FRenderTargetBindingSlots GetRenderTargetBindings (ERenderTargetLoadAction ColorLoadAction, TArrayView< FRDGTextureRef > ColorTextures)
 
FRenderTargetBindingSlots GetRenderTargetBindings (ERenderTargetLoadAction ColorLoadAction, TArrayView< FTextureRenderTargetBinding > ColorTextures)
 
RENDERCORE_API void ClearUnusedGraphResourcesImpl (const FShaderParameterBindings &ShaderBindings, const FShaderParametersMetadata *ParametersMetadata, void *InoutParameters, std::initializer_list< FRDGResourceRef > ExcludeList)
 
RENDERCORE_API void ClearUnusedGraphResourcesImpl (TArrayView< const FShaderParameterBindings * > ShaderBindingsList, const FShaderParametersMetadata *ParametersMetadata, void *InoutParameters, std::initializer_list< FRDGResourceRef > ExcludeList)
 
template<typename TShaderClass >
void ClearUnusedGraphResources (const TShaderRef< TShaderClass > &Shader, const FShaderParametersMetadata *ParametersMetadata, typename TShaderClass::FParameters *InoutParameters, std::initializer_list< FRDGResourceRef > ExcludeList={})
 
template<typename TShaderClass >
void ClearUnusedGraphResources (const TShaderRef< TShaderClass > &Shader, typename TShaderClass::FParameters *InoutParameters, std::initializer_list< FRDGResourceRef > ExcludeList={})
 
template<typename TShaderClassA , typename TShaderClassB , typename TPassParameterStruct >
void ClearUnusedGraphResources (const TShaderRef< TShaderClassA > &ShaderA, const TShaderRef< TShaderClassB > &ShaderB, TPassParameterStruct *InoutParameters, std::initializer_list< FRDGResourceRef > ExcludeList={})
 
RENDERCORE_API FRDGTextureRef RegisterExternalTextureWithFallback (FRDGBuilder &GraphBuilder, const TRefCountPtr< IPooledRenderTarget > &ExternalPooledTexture, const TRefCountPtr< IPooledRenderTarget > &FallbackPooledTexture)
 
FRDGTextureRef TryRegisterExternalTexture (FRDGBuilder &GraphBuilder, const TRefCountPtr< IPooledRenderTarget > &ExternalPooledTexture, ERDGTextureFlags Flags=ERDGTextureFlags::None)
 
FRDGBufferRef TryRegisterExternalBuffer (FRDGBuilder &GraphBuilder, const TRefCountPtr< FRDGPooledBuffer > &ExternalPooledBuffer, ERDGBufferFlags Flags=ERDGBufferFlags::None)
 
FRDGTextureRef RegisterExternalTexture (FRDGBuilder &GraphBuilder, FRHITexture *Texture, const TCHAR *NameIfUnregistered, ERDGTextureFlags Flags)
 
FRDGTextureRef RegisterExternalTexture (FRDGBuilder &GraphBuilder, FRHITexture *Texture, const TCHAR *NameIfUnregistered)
 
RENDERCORE_API FRDGTextureMSAA CreateTextureMSAA (FRDGBuilder &GraphBuilder, FRDGTextureDesc Desc, const TCHAR *NameMultisampled, const TCHAR *NameResolved, ETextureCreateFlags ResolveFlagsToAdd=TexCreate_None)
 
FRDGTextureMSAA CreateTextureMSAA (FRDGBuilder &GraphBuilder, FRDGTextureDesc Desc, const TCHAR *Name, ETextureCreateFlags ResolveFlagsToAdd=TexCreate_None)
 
FIntVector FComputeShaderUtils::GetGroupCount (const int32 ThreadCount, const int32 GroupSize)
 
FIntVector FComputeShaderUtils::GetGroupCount (const FIntPoint &ThreadCount, const FIntPoint &GroupSize)
 
FIntVector FComputeShaderUtils::GetGroupCount (const FIntPoint &ThreadCount, const int32 GroupSize)
 
FIntVector FComputeShaderUtils::GetGroupCount (const FIntVector &ThreadCount, const FIntVector &GroupSize)
 
FIntVector FComputeShaderUtils::GetGroupCount (const FIntVector &ThreadCount, const int32 GroupSize)
 
FIntVector FComputeShaderUtils::GetGroupCountWrapped (const int32 TargetGroupCount)
 
FIntVector FComputeShaderUtils::GetGroupCountWrapped (const int32 ThreadCount, const int32 GroupSize)
 
void FComputeShaderUtils::ValidateGroupCount (const FIntVector &GroupCount)
 
void FComputeShaderUtils::ValidateIndirectArgsBuffer (uint32 IndirectArgsBufferSize, uint32 IndirectArgOffset)
 
void FComputeShaderUtils::ValidateIndirectArgsBuffer (const FRDGBufferRef IndirectArgsBuffer, uint32 IndirectArgOffset)
 
template<typename TShaderClass >
void FComputeShaderUtils::Private::PrepareDispatch (FRHIComputeCommandList &RHICmdList, const TShaderRef< TShaderClass > &ComputeShader, const FShaderParametersMetadata *ParametersMetadata, const typename TShaderClass::FParameters &Parameters)
 
template<typename TShaderClass >
void FComputeShaderUtils::Private::PrepareDispatch (FRHIComputeCommandList &RHICmdList, const TShaderRef< TShaderClass > &ComputeShader, const typename TShaderClass::FParameters &Parameters)
 
template<typename TShaderClass >
void FComputeShaderUtils::Private::AfterDispatch (FRHIComputeCommandList &RHICmdList, const TShaderRef< TShaderClass > &ComputeShader)
 
template<typename TShaderClass >
void FComputeShaderUtils::Dispatch (FRHIComputeCommandList &RHICmdList, const TShaderRef< TShaderClass > &ComputeShader, const FShaderParametersMetadata *ParametersMetadata, const typename TShaderClass::FParameters &Parameters, FIntVector GroupCount)
 
template<typename TShaderClass >
void FComputeShaderUtils::Dispatch (FRHIComputeCommandList &RHICmdList, const TShaderRef< TShaderClass > &ComputeShader, const typename TShaderClass::FParameters &Parameters, FIntVector GroupCount)
 
template<typename TShaderClass >
void FComputeShaderUtils::DispatchIndirect (FRHIComputeCommandList &RHICmdList, const TShaderRef< TShaderClass > &ComputeShader, const typename TShaderClass::FParameters &Parameters, FRHIBuffer *IndirectArgsBuffer, uint32 IndirectArgOffset)
 
template<typename TShaderClass >
void FComputeShaderUtils::DispatchIndirect (FRHIComputeCommandList &RHICmdList, const TShaderRef< TShaderClass > &ComputeShader, const typename TShaderClass::FParameters &Parameters, FRDGBufferRef IndirectArgsBuffer, uint32 IndirectArgOffset)
 
template<typename TShaderClass >
FRDGPassRef FComputeShaderUtils::AddPass (FRDGBuilder &GraphBuilder, FRDGEventName &&PassName, ERDGPassFlags PassFlags, const TShaderRef< TShaderClass > &ComputeShader, const FShaderParametersMetadata *ParametersMetadata, typename TShaderClass::FParameters *Parameters, FIntVector GroupCount)
 
template<typename TShaderClass >
FRDGPassRef FComputeShaderUtils::AddPass (FRDGBuilder &GraphBuilder, FRDGEventName &&PassName, ERDGPassFlags PassFlags, const TShaderRef< TShaderClass > &ComputeShader, const FShaderParametersMetadata *ParametersMetadata, typename TShaderClass::FParameters *Parameters, FRDGDispatchGroupCountCallback &&GroupCountCallback)
 
template<typename TShaderClass >
FRDGPassRef FComputeShaderUtils::AddPass (FRDGBuilder &GraphBuilder, FRDGEventName &&PassName, ERDGPassFlags PassFlags, const TShaderRef< TShaderClass > &ComputeShader, typename TShaderClass::FParameters *Parameters, FIntVector GroupCount)
 
template<typename TShaderClass >
FRDGPassRef FComputeShaderUtils::AddPass (FRDGBuilder &GraphBuilder, FRDGEventName &&PassName, const TShaderRef< TShaderClass > &ComputeShader, typename TShaderClass::FParameters *Parameters, FIntVector GroupCount)
 
template<typename TShaderClass >
FRDGPassRef FComputeShaderUtils::AddPass (FRDGBuilder &GraphBuilder, FRDGEventName &&PassName, const TShaderRef< TShaderClass > &ComputeShader, typename TShaderClass::FParameters *Parameters, FRDGDispatchGroupCountCallback &&GroupCountCallback)
 
template<typename TShaderClass >
FRDGPassRef FComputeShaderUtils::AddPass (FRDGBuilder &GraphBuilder, FRDGEventName &&PassName, ERDGPassFlags PassFlags, const TShaderRef< TShaderClass > &ComputeShader, typename TShaderClass::FParameters *Parameters, FRDGBufferRef IndirectArgsBuffer, uint32 IndirectArgsOffset, FRDGDispatchLateParamCallback &&DispatchLateParamCallback=FRDGDispatchLateParamCallback())
 
template<typename TShaderClass >
FRDGPassRef FComputeShaderUtils::AddPass (FRDGBuilder &GraphBuilder, FRDGEventName &&PassName, const TShaderRef< TShaderClass > &ComputeShader, typename TShaderClass::FParameters *Parameters, FRDGBufferRef IndirectArgsBuffer, uint32 IndirectArgsOffset, FRDGDispatchLateParamCallback &&DispatchLateParamCallback=FRDGDispatchLateParamCallback())
 
RENDERCORE_API FRDGBufferRef FComputeShaderUtils::AddIndirectArgsSetupCsPass1D (FRDGBuilder &GraphBuilder, ERHIFeatureLevel::Type FeatureLevel, FRDGBuffer *InputCountBuffer, const TCHAR *OutputBufferName, uint32 Divisor, uint32 InputCountOffset=0U, uint32 Multiplier=1U)
 
RENDERCORE_API void AddCopyTexturePass (FRDGBuilder &GraphBuilder, FRDGTextureRef InputTexture, FRDGTextureRef OutputTexture, const FRHICopyTextureInfo &CopyInfo)
 
void AddCopyTexturePass (FRDGBuilder &GraphBuilder, FRDGTextureRef InputTexture, FRDGTextureRef OutputTexture, FIntPoint InputPosition=FIntPoint::ZeroValue, FIntPoint OutputPosition=FIntPoint::ZeroValue, FIntPoint Size=FIntPoint::ZeroValue)
 
RENDERCORE_API void AddDrawTexturePass (FRDGBuilder &GraphBuilder, const FGlobalShaderMap *ShaderMap, FRDGTextureRef InputTexture, FRDGTextureRef OutputTexture, const FRDGDrawTextureInfo &DrawInfo)
 
RENDERCORE_API void AddClearUAVPass (FRDGBuilder &GraphBuilder, FRDGBufferUAVRef BufferUAV, uint32 Value, ERDGPassFlags ComputePassFlags=ERDGPassFlags::Compute)
 
RENDERCORE_API void AddClearUAVFloatPass (FRDGBuilder &GraphBuilder, FRDGBufferUAVRef BufferUAV, float Value, ERDGPassFlags ComputePassFlags=ERDGPassFlags::Compute)
 
RENDERCORE_API void AddClearUAVPass (FRDGBuilder &GraphBuilder, FRDGTextureUAVRef TextureUAV, float ClearValue, ERDGPassFlags ComputePassFlags=ERDGPassFlags::Compute)
 
RENDERCORE_API void AddClearUAVPass (FRDGBuilder &GraphBuilder, FRDGTextureUAVRef TextureUAV, uint32 ClearValue, ERDGPassFlags ComputePassFlags=ERDGPassFlags::Compute)
 
RENDERCORE_API void AddClearUAVPass (FRDGBuilder &GraphBuilder, FRDGTextureUAVRef TextureUAV, const FIntPoint &ClearValue, ERDGPassFlags ComputePassFlags=ERDGPassFlags::Compute)
 
RENDERCORE_API void AddClearUAVPass (FRDGBuilder &GraphBuilder, FRDGTextureUAVRef TextureUAV, const FVector2D &ClearValue, ERDGPassFlags ComputePassFlags=ERDGPassFlags::Compute)
 
RENDERCORE_API void AddClearUAVPass (FRDGBuilder &GraphBuilder, FRDGTextureUAVRef TextureUAV, const FVector &ClearValue, ERDGPassFlags ComputePassFlags=ERDGPassFlags::Compute)
 
RENDERCORE_API void AddClearUAVPass (FRDGBuilder &GraphBuilder, FRDGTextureUAVRef TextureUAV, const FUintVector4 &ClearValues, ERDGPassFlags ComputePassFlags=ERDGPassFlags::Compute)
 
RENDERCORE_API void AddClearUAVPass (FRDGBuilder &GraphBuilder, FRDGTextureUAVRef TextureUAV, const FVector4 &ClearValues, ERDGPassFlags ComputePassFlags=ERDGPassFlags::Compute)
 
RENDERCORE_API void AddClearUAVPass (FRDGBuilder &GraphBuilder, FRDGTextureUAVRef TextureUAV, const float(&ClearValues)[4], ERDGPassFlags ComputePassFlags=ERDGPassFlags::Compute)
 
RENDERCORE_API void AddClearUAVPass (FRDGBuilder &GraphBuilder, FRDGTextureUAVRef TextureUAV, const uint32(&ClearValues)[4], ERDGPassFlags ComputePassFlags=ERDGPassFlags::Compute)
 
RENDERCORE_API void AddClearUAVPass (FRDGBuilder &GraphBuilder, FRDGTextureUAVRef TextureUAV, const FLinearColor &ClearColor, ERDGPassFlags ComputePassFlags=ERDGPassFlags::Compute)
 
RENDERCORE_API void AddClearUAVPass (FRDGBuilder &GraphBuilder, ERHIFeatureLevel::Type FeatureLevel, FRDGTextureUAVRef TextureUAV, const uint32(&ClearValues)[4], FRDGBufferSRVRef RectMinMaxBufferSRV, uint32 NumRects)
 
RENDERCORE_API void AddClearRenderTargetPass (FRDGBuilder &GraphBuilder, FRDGTextureRef Texture)
 
RENDERCORE_API void AddClearRenderTargetPass (FRDGBuilder &GraphBuilder, FRDGTextureRef Texture, const FLinearColor &ClearColor)
 
RENDERCORE_API void AddClearRenderTargetPass (FRDGBuilder &GraphBuilder, FRDGTextureRef Texture, const FLinearColor &ClearColor, FIntRect Viewport)
 
RENDERCORE_API void AddClearRenderTargetPass (FRDGBuilder &GraphBuilder, FRDGTextureRef Texture, const FRDGTextureClearInfo &TextureClearInfo)
 
RENDERCORE_API void AddClearDepthStencilPass (FRDGBuilder &GraphBuilder, FRDGTextureRef Texture, bool bClearDepth, float Depth, bool bClearStencil, uint8 Stencil)
 
RENDERCORE_API void AddClearDepthStencilPass (FRDGBuilder &GraphBuilder, FRDGTextureRef Texture, ERenderTargetLoadAction DepthLoadAction=ERenderTargetLoadAction::EClear, ERenderTargetLoadAction StencilLoadAction=ERenderTargetLoadAction::EClear)
 
RENDERCORE_API void AddClearStencilPass (FRDGBuilder &GraphBuilder, FRDGTextureRef Texture)
 
RENDERCORE_API void AddResummarizeHTilePass (FRDGBuilder &GraphBuilder, FRDGTextureRef DepthTexture)
 
RENDERCORE_API void AddCopyBufferPass (FRDGBuilder &GraphBuilder, FRDGBufferRef DstBuffer, uint64 DstOffset, FRDGBufferRef SrcBuffer, uint64 SrcOffset, uint64 NumBytes)
 
RENDERCORE_API void AddCopyBufferPass (FRDGBuilder &GraphBuilder, FRDGBufferRef DstBuffer, FRDGBufferRef SrcBuffer)
 
RENDERCORE_API void AddEnqueueCopyPass (FRDGBuilder &GraphBuilder, FRHIGPUTextureReadback *Readback, FRDGTextureRef SourceTexture, FResolveRect Rect=FResolveRect(), uint32 SourceSlice=0)
 
RENDERCORE_API void AddEnqueueCopyPass (FRDGBuilder &GraphBuilder, FRHIGPUBufferReadback *Readback, FRDGBufferRef SourceBuffer, uint32 NumBytes)
 
RENDERCORE_API FRDGBufferRef CreateStructuredBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, uint32 BytesPerElement, uint32 NumElements, const void *InitialData, uint64 InitialDataSize, ERDGInitialDataFlags InitialDataFlags=ERDGInitialDataFlags::None)
 
RENDERCORE_API FRDGBufferRef CreateStructuredBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, uint32 BytesPerElement, FRDGBufferNumElementsCallback &&NumElementsCallback, FRDGBufferInitialDataCallback &&InitialDataCallback, FRDGBufferInitialDataSizeCallback &&InitialDataSizeCallback)
 
template<typename ElementType , typename AllocatorType >
FRDGBufferRef CreateStructuredBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, const TArray< ElementType, AllocatorType > &InitialData, ERDGInitialDataFlags InitialDataFlags=ERDGInitialDataFlags::None)
 
template<typename ElementType , typename AllocatorType >
FRDGBufferRef CreateStructuredBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, TArray< ElementType, AllocatorType > &&InitialData)
 
template<typename ElementType >
FRDGBufferRef CreateStructuredBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, TConstArrayView< ElementType > InitialData, ERDGInitialDataFlags InitialDataFlags=ERDGInitialDataFlags::None)
 
template<typename ArrayType >
FRDGBufferRef CreateStructuredBuffer_Impl (FRDGBuilder &GraphBuilder, const TCHAR *Name, TRDGBufferArrayCallback< ArrayType > &&ArrayCallback)
 
template<typename GetArrayRefCallback , typename Type = TInvokeResult_T<GetArrayRefCallback>>
FRDGBufferRef CreateStructuredBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, GetArrayRefCallback &&ArrayCallback)
 
template<typename ElementType >
FRDGBufferRef CreateStructuredBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, const FRDGUploadData< ElementType > &InitialData)
 
RENDERCORE_API FRDGBufferRef CreateByteAddressBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, uint32 NumBytes, const void *InitialData, uint64 InitialDataSize, ERDGInitialDataFlags InitialDataFlags=ERDGInitialDataFlags::None)
 
RENDERCORE_API FRDGBufferRef CreateByteAddressBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, FRDGBufferNumElementsCallback &&NumElementsCallback, FRDGBufferInitialDataCallback &&InitialDataCallback, FRDGBufferInitialDataSizeCallback &&InitialDataSizeCallback)
 
template<typename ElementType , typename AllocatorType >
FRDGBufferRef CreateByteAddressBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, TArray< ElementType, AllocatorType > &&InitialData)
 
template<typename ElementType >
FRDGBufferRef CreateByteAddressBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, TConstArrayView< ElementType > InitialData, ERDGInitialDataFlags InitialDataFlags=ERDGInitialDataFlags::None)
 
template<typename ArrayType >
FRDGBufferRef CreateByteAddressBuffer_Impl (FRDGBuilder &GraphBuilder, const TCHAR *Name, TRDGBufferArrayCallback< ArrayType > &&ArrayCallback)
 
template<typename GetArrayRefCallback , typename Type = TInvokeResult_T<GetArrayRefCallback>>
FRDGBufferRef CreateByteAddressBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, GetArrayRefCallback &&ArrayCallback)
 
template<typename ElementType >
FRDGBufferRef CreateByteAddressBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, const FRDGUploadData< ElementType > &InitialData)
 
RENDERCORE_API FRDGBufferRef CreateUploadBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, uint32 BytesPerElement, uint32 NumElements, const void *InitialData, uint64 InitialDataSize, ERDGInitialDataFlags InitialDataFlags=ERDGInitialDataFlags::None)
 
template<typename ElementType >
FRDGBufferRef CreateUploadBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, uint32 BytesPerElement, uint32 NumElements, const FRDGUploadData< ElementType > &InitialData)
 
template<typename ElementType >
FRDGBufferRef CreateUploadBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, const FRDGUploadData< ElementType > &InitialData)
 
template<typename ElementType >
FRDGBufferRef CreateUploadBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, TConstArrayView< ElementType > InitialData, ERDGInitialDataFlags InitialDataFlags=ERDGInitialDataFlags::None)
 
template<typename ElementType , typename AllocatorType >
FRDGBufferRef CreateStructuredUploadBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, const TArray< ElementType, AllocatorType > &InitialData, ERDGInitialDataFlags InitialDataFlags=ERDGInitialDataFlags::None)
 
template<typename ElementType , typename AllocatorType >
FRDGBufferRef CreateByteAddressUploadBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, const TArray< ElementType, AllocatorType > &InitialData, ERDGInitialDataFlags InitialDataFlags=ERDGInitialDataFlags::None)
 
FRDGBufferRef CreateByteAddressUploadBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, FRDGBufferNumElementsCallback &&NumElementsCallback, FRDGBufferInitialDataCallback &&InitialDataCallback, FRDGBufferInitialDataSizeCallback &&InitialDataSizeCallback)
 
template<typename ArrayType >
FRDGBufferRef CreateByteAddressUploadBuffer_Impl (FRDGBuilder &GraphBuilder, const TCHAR *Name, TRDGBufferArrayCallback< ArrayType > &&ArrayCallback)
 
template<typename GetArrayRefCallback , typename Type = TInvokeResult_T<GetArrayRefCallback>>
FRDGBufferRef CreateByteAddressUploadBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, GetArrayRefCallback &&ArrayCallback)
 
RENDERCORE_API FRDGBufferRef CreateVertexBuffer (FRDGBuilder &GraphBuilder, const TCHAR *Name, const FRDGBufferDesc &Desc, const void *InitialData, uint64 InitialDataSize, ERDGInitialDataFlags InitialDataFlags=ERDGInitialDataFlags::None)
 
template<typename ExecuteLambdaType >
void AddPass (FRDGBuilder &GraphBuilder, FRDGEventName &&Name, ExecuteLambdaType &&ExecuteLambda)
 
template<typename ExecuteLambdaType >
void AddPassIfDebug (FRDGBuilder &GraphBuilder, FRDGEventName &&Name, ExecuteLambdaType &&ExecuteLambda)
 
void AddDispatchToRHIThreadPass (FRDGBuilder &GraphBuilder)
 
template<typename ExecuteLambdaType >
void AddReadbackTexturePass (FRDGBuilder &GraphBuilder, FRDGEventName &&Name, FRDGTextureRef Texture, ExecuteLambdaType &&ExecuteLambda)
 
template<typename ExecuteLambdaType >
void AddReadbackBufferPass (FRDGBuilder &GraphBuilder, FRDGEventName &&Name, FRDGBufferRef Buffer, ExecuteLambdaType &&ExecuteLambda)
 
const TRefCountPtr< IPooledRenderTarget > & ConvertToExternalAccessTexture (FRDGBuilder &GraphBuilder, FRDGTexture *Texture, ERHIAccess Access=ERHIAccess::SRVMask, ERHIPipeline Pipelines=ERHIPipeline::Graphics)
 
const TRefCountPtr< FRDGPooledBuffer > & ConvertToExternalAccessBuffer (FRDGBuilder &GraphBuilder, FRDGBuffer *Buffer, ERHIAccess Access=ERHIAccess::SRVMask, ERHIPipeline Pipelines=ERHIPipeline::Graphics)
 
const TRefCountPtr< IPooledRenderTarget > & ConvertToExternalAccessTexture (FRDGBuilder &GraphBuilder, FRDGExternalAccessQueue &ExternalAccessQueue, FRDGTexture *Texture, ERHIAccess Access=ERHIAccess::SRVMask, ERHIPipeline Pipelines=ERHIPipeline::Graphics)
 
const TRefCountPtr< FRDGPooledBuffer > & ConvertToExternalAccessBuffer (FRDGBuilder &GraphBuilder, FRDGExternalAccessQueue &ExternalAccessQueue, FRDGBuffer *Buffer, ERHIAccess Access=ERHIAccess::SRVMask, ERHIPipeline Pipelines=ERHIPipeline::Graphics)
 
RENDERCORE_API bool AllocatePooledBuffer (const FRDGBufferDesc &Desc, TRefCountPtr< FRDGPooledBuffer > &Out, const TCHAR *Name, ERDGPooledBufferAlignment Alignment=ERDGPooledBufferAlignment::Page)
 
RENDERCORE_API TRefCountPtr< FRDGPooledBufferAllocatePooledBuffer (const FRDGBufferDesc &Desc, const TCHAR *Name, ERDGPooledBufferAlignment Alignment=ERDGPooledBufferAlignment::Page)
 
TRefCountPtr< FRDGPooledBufferAllocatePooledBufferCurrentLLMTag (FRHICommandListBase &RHICmdList, const FRDGBufferDesc &Desc, const TCHAR *Name, ERDGPooledBufferAlignment Alignment=ERDGPooledBufferAlignment::Page)
 
RENDERCORE_API bool AllocatePooledTexture (const FRDGTextureDesc &Desc, TRefCountPtr< IPooledRenderTarget > &Out, const TCHAR *Name)
 
RENDERCORE_API TRefCountPtr< IPooledRenderTargetAllocatePooledTexture (const FRDGTextureDesc &Desc, const TCHAR *Name)
 

Typedef Documentation

◆ FRDGDispatchLateParamCallback

Function Documentation

◆ AddClearDepthStencilPass() [1/2]

RENDERCORE_API void AddClearDepthStencilPass ( FRDGBuilder GraphBuilder,
FRDGTextureRef  Texture,
bool  bClearDepth,
float  Depth,
bool  bClearStencil,
uint8  Stencil 
)

Adds a render graph pass to clear a depth stencil target. Prefer to use clear actions if possible.

◆ AddClearDepthStencilPass() [2/2]

RENDERCORE_API void AddClearDepthStencilPass ( FRDGBuilder GraphBuilder,
FRDGTextureRef  Texture,
ERenderTargetLoadAction  DepthLoadAction = ERenderTargetLoadAction::EClear,
ERenderTargetLoadAction  StencilLoadAction = ERenderTargetLoadAction::EClear 
)

Adds a render graph pass to clear a depth stencil target to its optimized clear value using a raster pass.

◆ AddClearRenderTargetPass() [1/4]

RENDERCORE_API void AddClearRenderTargetPass ( FRDGBuilder GraphBuilder,
FRDGTextureRef  Texture 
)

Adds a render graph pass to clear a render target to its clear value (single mip, single slice)

◆ AddClearRenderTargetPass() [2/4]

RENDERCORE_API void AddClearRenderTargetPass ( FRDGBuilder GraphBuilder,
FRDGTextureRef  Texture,
const FLinearColor ClearColor 
)

Adds a render graph pass to clear a render target (single mip, single slice). Uses render pass clear actions if the clear color matches the fast clear color.

◆ AddClearRenderTargetPass() [3/4]

RENDERCORE_API void AddClearRenderTargetPass ( FRDGBuilder GraphBuilder,
FRDGTextureRef  Texture,
const FLinearColor ClearColor,
FIntRect  Viewport 
)

Adds a render graph pass to clear a part of a render target (single mip, single slice). Draws a quad to the requested viewport.

◆ AddClearRenderTargetPass() [4/4]

RENDERCORE_API void AddClearRenderTargetPass ( FRDGBuilder GraphBuilder,
FRDGTextureRef  Texture,
const FRDGTextureClearInfo TextureClearInfo 
)

Adds a render graph pass to clear a render target to its clear value.

◆ AddClearStencilPass()

RENDERCORE_API void AddClearStencilPass ( FRDGBuilder GraphBuilder,
FRDGTextureRef  Texture 
)

Adds a render graph pass to clear the stencil portion of a depth / stencil target to its fast clear value.

◆ AddClearUAVFloatPass()

RENDERCORE_API void AddClearUAVFloatPass ( FRDGBuilder GraphBuilder,
FRDGBufferUAVRef  BufferUAV,
float  Value,
ERDGPassFlags  ComputePassFlags = ERDGPassFlags::Compute 
)

◆ AddClearUAVPass() [1/12]

RENDERCORE_API void AddClearUAVPass ( FRDGBuilder GraphBuilder,
ERHIFeatureLevel::Type  FeatureLevel,
FRDGTextureUAVRef  TextureUAV,
const uint32(&)  ClearValues[4],
FRDGBufferSRVRef  RectMinMaxBufferSRV,
uint32  NumRects 
)

Clears parts of UAV specified by an array of screen rects. If no rects are specific, then it falls back to a standard UAV clear.

◆ AddClearUAVPass() [2/12]

RENDERCORE_API void AddClearUAVPass ( FRDGBuilder GraphBuilder,
FRDGBufferUAVRef  BufferUAV,
uint32  Value,
ERDGPassFlags  ComputePassFlags = ERDGPassFlags::Compute 
)

Adds a render graph pass to clear a texture or buffer UAV with a single typed value.

◆ AddClearUAVPass() [3/12]

RENDERCORE_API void AddClearUAVPass ( FRDGBuilder GraphBuilder,
FRDGTextureUAVRef  TextureUAV,
const FIntPoint ClearValue,
ERDGPassFlags  ComputePassFlags = ERDGPassFlags::Compute 
)

◆ AddClearUAVPass() [4/12]

RENDERCORE_API void AddClearUAVPass ( FRDGBuilder GraphBuilder,
FRDGTextureUAVRef  TextureUAV,
const FLinearColor ClearColor,
ERDGPassFlags  ComputePassFlags = ERDGPassFlags::Compute 
)

◆ AddClearUAVPass() [5/12]

RENDERCORE_API void AddClearUAVPass ( FRDGBuilder GraphBuilder,
FRDGTextureUAVRef  TextureUAV,
const float(&)  ClearValues[4],
ERDGPassFlags  ComputePassFlags = ERDGPassFlags::Compute 
)

◆ AddClearUAVPass() [6/12]

RENDERCORE_API void AddClearUAVPass ( FRDGBuilder GraphBuilder,
FRDGTextureUAVRef  TextureUAV,
const FUintVector4 ClearValues,
ERDGPassFlags  ComputePassFlags = ERDGPassFlags::Compute 
)

◆ AddClearUAVPass() [7/12]

RENDERCORE_API void AddClearUAVPass ( FRDGBuilder GraphBuilder,
FRDGTextureUAVRef  TextureUAV,
const FVector ClearValue,
ERDGPassFlags  ComputePassFlags = ERDGPassFlags::Compute 
)

◆ AddClearUAVPass() [8/12]

RENDERCORE_API void AddClearUAVPass ( FRDGBuilder GraphBuilder,
FRDGTextureUAVRef  TextureUAV,
const FVector2D ClearValue,
ERDGPassFlags  ComputePassFlags = ERDGPassFlags::Compute 
)

◆ AddClearUAVPass() [9/12]

RENDERCORE_API void AddClearUAVPass ( FRDGBuilder GraphBuilder,
FRDGTextureUAVRef  TextureUAV,
const FVector4 ClearValues,
ERDGPassFlags  ComputePassFlags = ERDGPassFlags::Compute 
)

◆ AddClearUAVPass() [10/12]

RENDERCORE_API void AddClearUAVPass ( FRDGBuilder GraphBuilder,
FRDGTextureUAVRef  TextureUAV,
const uint32(&)  ClearValues[4],
ERDGPassFlags  ComputePassFlags = ERDGPassFlags::Compute 
)

◆ AddClearUAVPass() [11/12]

RENDERCORE_API void AddClearUAVPass ( FRDGBuilder GraphBuilder,
FRDGTextureUAVRef  TextureUAV,
float  ClearValue,
ERDGPassFlags  ComputePassFlags = ERDGPassFlags::Compute 
)

◆ AddClearUAVPass() [12/12]

RENDERCORE_API void AddClearUAVPass ( FRDGBuilder GraphBuilder,
FRDGTextureUAVRef  TextureUAV,
uint32  ClearValue,
ERDGPassFlags  ComputePassFlags = ERDGPassFlags::Compute 
)

◆ AddCopyBufferPass() [1/2]

RENDERCORE_API void AddCopyBufferPass ( FRDGBuilder GraphBuilder,
FRDGBufferRef  DstBuffer,
FRDGBufferRef  SrcBuffer 
)

◆ AddCopyBufferPass() [2/2]

RENDERCORE_API void AddCopyBufferPass ( FRDGBuilder GraphBuilder,
FRDGBufferRef  DstBuffer,
uint64  DstOffset,
FRDGBufferRef  SrcBuffer,
uint64  SrcOffset,
uint64  NumBytes 
)

Adds a render graph pass to copy SrcBuffer content into DstBuffer.

◆ AddCopyTexturePass() [1/2]

RENDERCORE_API void AddCopyTexturePass ( FRDGBuilder GraphBuilder,
FRDGTextureRef  InputTexture,
FRDGTextureRef  OutputTexture,
const FRHICopyTextureInfo CopyInfo 
)

Adds a render graph pass to copy a region from one texture to another. Uses RHICopyTexture under the hood. Formats of the two textures must match. The output and output texture regions be within the respective extents.

◆ AddCopyTexturePass() [2/2]

void AddCopyTexturePass ( FRDGBuilder GraphBuilder,
FRDGTextureRef  InputTexture,
FRDGTextureRef  OutputTexture,
FIntPoint  InputPosition = FIntPoint::ZeroValue,
FIntPoint  OutputPosition = FIntPoint::ZeroValue,
FIntPoint  Size = FIntPoint::ZeroValue 
)
inline

Simpler variant of the above function for 2D textures.

Parameters
InputPositionThe pixel position within the input texture of the top-left corner of the box.
OutputPositionThe pixel position within the output texture of the top-left corner of the box.
SizeThe size in pixels of the region to copy from input to output. If zero, the full extent of the input texture is copied.

◆ AddDispatchToRHIThreadPass()

void AddDispatchToRHIThreadPass ( FRDGBuilder GraphBuilder)
inline

◆ AddDrawTexturePass()

RENDERCORE_API void AddDrawTexturePass ( FRDGBuilder GraphBuilder,
const FGlobalShaderMap ShaderMap,
FRDGTextureRef  InputTexture,
FRDGTextureRef  OutputTexture,
const FRDGDrawTextureInfo DrawInfo 
)

◆ AddEnqueueCopyPass() [1/2]

RENDERCORE_API void AddEnqueueCopyPass ( FRDGBuilder GraphBuilder,
FRHIGPUBufferReadback Readback,
FRDGBufferRef  SourceBuffer,
uint32  NumBytes 
)

Adds a pass to readback contents of an RDG buffer.

◆ AddEnqueueCopyPass() [2/2]

RENDERCORE_API void AddEnqueueCopyPass ( FRDGBuilder GraphBuilder,
FRHIGPUTextureReadback Readback,
FRDGTextureRef  SourceTexture,
FResolveRect  Rect = FResolveRect(),
uint32  SourceSlice = 0 
)

Adds a pass to readback contents of an RDG texture.

◆ AddPass()

void AddPass ( FRDGBuilder GraphBuilder,
FRDGEventName &&  Name,
ExecuteLambdaType &&  ExecuteLambda 
)
inline

Helper functions to add parameterless passes to the graph.

◆ AddPassIfDebug()

void AddPassIfDebug ( FRDGBuilder GraphBuilder,
FRDGEventName &&  Name,
ExecuteLambdaType &&  ExecuteLambda 
)
inline

◆ AddReadbackBufferPass()

void AddReadbackBufferPass ( FRDGBuilder GraphBuilder,
FRDGEventName &&  Name,
FRDGBufferRef  Buffer,
ExecuteLambdaType &&  ExecuteLambda 
)

◆ AddReadbackTexturePass()

void AddReadbackTexturePass ( FRDGBuilder GraphBuilder,
FRDGEventName &&  Name,
FRDGTextureRef  Texture,
ExecuteLambdaType &&  ExecuteLambda 
)

◆ AddResummarizeHTilePass()

RENDERCORE_API void AddResummarizeHTilePass ( FRDGBuilder GraphBuilder,
FRDGTextureRef  DepthTexture 
)

Adds a render graph pass to resummarize the htile plane.

◆ AllocatePooledBuffer() [1/2]

RENDERCORE_API TRefCountPtr< FRDGPooledBuffer > AllocatePooledBuffer ( const FRDGBufferDesc Desc,
const TCHAR Name,
ERDGPooledBufferAlignment  Alignment = ERDGPooledBufferAlignment::Page 
)

◆ AllocatePooledBuffer() [2/2]

RENDERCORE_API bool AllocatePooledBuffer ( const FRDGBufferDesc Desc,
TRefCountPtr< FRDGPooledBuffer > &  Out,
const TCHAR Name,
ERDGPooledBufferAlignment  Alignment = ERDGPooledBufferAlignment::Page 
)

◆ AllocatePooledBufferCurrentLLMTag()

TRefCountPtr< FRDGPooledBuffer > AllocatePooledBufferCurrentLLMTag ( FRHICommandListBase RHICmdList,
const FRDGBufferDesc Desc,
const TCHAR Name,
ERDGPooledBufferAlignment  Alignment = ERDGPooledBufferAlignment::Page 
)
inline

◆ AllocatePooledTexture() [1/2]

RENDERCORE_API TRefCountPtr< IPooledRenderTarget > AllocatePooledTexture ( const FRDGTextureDesc Desc,
const TCHAR Name 
)

◆ AllocatePooledTexture() [2/2]

RENDERCORE_API bool AllocatePooledTexture ( const FRDGTextureDesc Desc,
TRefCountPtr< IPooledRenderTarget > &  Out,
const TCHAR Name 
)

◆ ClearUnusedGraphResources() [1/3]

template<typename TShaderClass >
void ClearUnusedGraphResources ( const TShaderRef< TShaderClass > &  Shader,
const FShaderParametersMetadata ParametersMetadata,
typename TShaderClass::FParameters *  InoutParameters,
std::initializer_list< FRDGResourceRef ExcludeList = {} 
)

◆ ClearUnusedGraphResources() [2/3]

template<typename TShaderClass >
void ClearUnusedGraphResources ( const TShaderRef< TShaderClass > &  Shader,
typename TShaderClass::FParameters *  InoutParameters,
std::initializer_list< FRDGResourceRef ExcludeList = {} 
)

◆ ClearUnusedGraphResources() [3/3]

void ClearUnusedGraphResources ( const TShaderRef< TShaderClassA > &  ShaderA,
const TShaderRef< TShaderClassB > &  ShaderB,
TPassParameterStruct InoutParameters,
std::initializer_list< FRDGResourceRef ExcludeList = {} 
)

◆ ClearUnusedGraphResourcesImpl() [1/2]

RENDERCORE_API void ClearUnusedGraphResourcesImpl ( const FShaderParameterBindings ShaderBindings,
const FShaderParametersMetadata ParametersMetadata,
void InoutParameters,
std::initializer_list< FRDGResourceRef ExcludeList 
)
extern

Clears all render graph tracked resources that are not bound by a shader. Excludes any resources on the ExcludeList from being cleared regardless of whether the shader binds them or not. This is needed for resources that are used outside of shader bindings such as indirect arguments buffers.

◆ ClearUnusedGraphResourcesImpl() [2/2]

RENDERCORE_API void ClearUnusedGraphResourcesImpl ( TArrayView< const FShaderParameterBindings * >  ShaderBindingsList,
const FShaderParametersMetadata ParametersMetadata,
void InoutParameters,
std::initializer_list< FRDGResourceRef ExcludeList 
)
extern

Similar to the function above, but takes a list of shader bindings and only clears if none of the shaders contain the resource.

◆ ConvertToExternalAccessBuffer() [1/2]

const TRefCountPtr< FRDGPooledBuffer > & ConvertToExternalAccessBuffer ( FRDGBuilder GraphBuilder,
FRDGBuffer Buffer,
ERHIAccess  Access = ERHIAccess::SRVMask,
ERHIPipeline  Pipelines = ERHIPipeline::Graphics 
)
inline

◆ ConvertToExternalAccessBuffer() [2/2]

const TRefCountPtr< FRDGPooledBuffer > & ConvertToExternalAccessBuffer ( FRDGBuilder GraphBuilder,
FRDGExternalAccessQueue ExternalAccessQueue,
FRDGBuffer Buffer,
ERHIAccess  Access = ERHIAccess::SRVMask,
ERHIPipeline  Pipelines = ERHIPipeline::Graphics 
)
inline

◆ ConvertToExternalAccessTexture() [1/2]

const TRefCountPtr< IPooledRenderTarget > & ConvertToExternalAccessTexture ( FRDGBuilder GraphBuilder,
FRDGExternalAccessQueue ExternalAccessQueue,
FRDGTexture Texture,
ERHIAccess  Access = ERHIAccess::SRVMask,
ERHIPipeline  Pipelines = ERHIPipeline::Graphics 
)
inline

◆ ConvertToExternalAccessTexture() [2/2]

const TRefCountPtr< IPooledRenderTarget > & ConvertToExternalAccessTexture ( FRDGBuilder GraphBuilder,
FRDGTexture Texture,
ERHIAccess  Access = ERHIAccess::SRVMask,
ERHIPipeline  Pipelines = ERHIPipeline::Graphics 
)
inline

◆ CreateByteAddressBuffer() [1/6]

template<typename ElementType >
FRDGBufferRef CreateByteAddressBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
const FRDGUploadData< ElementType > &  InitialData 
)
inline

◆ CreateByteAddressBuffer() [2/6]

RENDERCORE_API FRDGBufferRef CreateByteAddressBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
FRDGBufferNumElementsCallback &&  NumElementsCallback,
FRDGBufferInitialDataCallback &&  InitialDataCallback,
FRDGBufferInitialDataSizeCallback &&  InitialDataSizeCallback 
)

A variant where NumElements, InitialData, and InitialDataSize are supplied through callbacks. This allows creating a buffer with information unknown at creation time. Though, data must be ready before the most recent RDG pass that references the buffer is executed. For byte address buffers, NumElements must be Size / 4.

◆ CreateByteAddressBuffer() [3/6]

template<typename GetArrayRefCallback , typename Type = TInvokeResult_T<GetArrayRefCallback>>
FRDGBufferRef CreateByteAddressBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
GetArrayRefCallback &&  ArrayCallback 
)
inline

Same as the previous function but where the type of the array is automatically inferred, so we can do : TArray<FSomeType> Array = GraphBuilder.AllocArray<...>(); CreateByteAddressBuffer(..., [&]() -> auto&{ return Array; });

◆ CreateByteAddressBuffer() [4/6]

template<typename ElementType , typename AllocatorType >
FRDGBufferRef CreateByteAddressBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
TArray< ElementType, AllocatorType > &&  InitialData 
)
inline

Helper to create a byte address buffer with initial data from a TArray with move semantics, this can be cheaper as it guarantees the lifetimes of the data & permits copy-free upload.

◆ CreateByteAddressBuffer() [5/6]

template<typename ElementType >
FRDGBufferRef CreateByteAddressBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
TConstArrayView< ElementType >  InitialData,
ERDGInitialDataFlags  InitialDataFlags = ERDGInitialDataFlags::None 
)
inline

Helper to create a byte address buffer with initial data from a TConstArrayView.

◆ CreateByteAddressBuffer() [6/6]

RENDERCORE_API FRDGBufferRef CreateByteAddressBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
uint32  NumBytes,
const void InitialData,
uint64  InitialDataSize,
ERDGInitialDataFlags  InitialDataFlags = ERDGInitialDataFlags::None 
)

Creates a byte address buffer with initial data by creating an upload pass.

◆ CreateByteAddressBuffer_Impl()

template<typename ArrayType >
FRDGBufferRef CreateByteAddressBuffer_Impl ( FRDGBuilder GraphBuilder,
const TCHAR Name,
TRDGBufferArrayCallback< ArrayType > &&  ArrayCallback 
)
inline

A variant where the TArray is supplied through callbacks. This allows creating a buffer with information unknown at creation time. Though, data must be ready before the most recent RDG pass that references the buffer is executed.

◆ CreateByteAddressUploadBuffer() [1/3]

template<typename ElementType , typename AllocatorType >
FRDGBufferRef CreateByteAddressUploadBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
const TArray< ElementType, AllocatorType > &  InitialData,
ERDGInitialDataFlags  InitialDataFlags = ERDGInitialDataFlags::None 
)
inline

Helper to create a byte address upload buffer with initial data from a TArray. NOTE: does not provide a 1-size fallback for empty initial data.

◆ CreateByteAddressUploadBuffer() [2/3]

FRDGBufferRef CreateByteAddressUploadBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
FRDGBufferNumElementsCallback &&  NumElementsCallback,
FRDGBufferInitialDataCallback &&  InitialDataCallback,
FRDGBufferInitialDataSizeCallback &&  InitialDataSizeCallback 
)
inline

A variant where NumElements, InitialData, and InitialDataSize are supplied through callbacks. This allows creating a buffer with information unknown at creation time. Though, data must be ready before the most recent RDG pass that references the buffer is executed. For byte address buffers, NumElements must be Size / 4.

◆ CreateByteAddressUploadBuffer() [3/3]

template<typename GetArrayRefCallback , typename Type = TInvokeResult_T<GetArrayRefCallback>>
FRDGBufferRef CreateByteAddressUploadBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
GetArrayRefCallback &&  ArrayCallback 
)
inline

Same as the previous function but where the type of the array is automatically inferred, so we can do : TArray<FSomeType> Array = GraphBuilder.AllocArray<...>(); CreateByteAddressBuffer(..., [&]() -> auto&{ return Array; });

◆ CreateByteAddressUploadBuffer_Impl()

template<typename ArrayType >
FRDGBufferRef CreateByteAddressUploadBuffer_Impl ( FRDGBuilder GraphBuilder,
const TCHAR Name,
TRDGBufferArrayCallback< ArrayType > &&  ArrayCallback 
)
inline

A variant where the TArray is supplied through callbacks. This allows creating a buffer with information unknown at creation time. Though, data must be ready before the most recent RDG pass that references the buffer is executed.

◆ CreateStructuredBuffer() [1/7]

template<typename ElementType >
FRDGBufferRef CreateStructuredBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
const FRDGUploadData< ElementType > &  InitialData 
)
inline

◆ CreateStructuredBuffer() [2/7]

template<typename ElementType , typename AllocatorType >
FRDGBufferRef CreateStructuredBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
const TArray< ElementType, AllocatorType > &  InitialData,
ERDGInitialDataFlags  InitialDataFlags = ERDGInitialDataFlags::None 
)
inline

Helper to create a structured buffer with initial data from a TArray.

◆ CreateStructuredBuffer() [3/7]

template<typename GetArrayRefCallback , typename Type = TInvokeResult_T<GetArrayRefCallback>>
FRDGBufferRef CreateStructuredBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
GetArrayRefCallback &&  ArrayCallback 
)
inline

Same as the previous function but where the type of the array is automatically inferred, so we can do : TArray<FSomeType>& Array = GraphBuilder.AllocArray<...>(); CreateStructuredBuffer(..., [&]() -> auto&{ return Array; });

◆ CreateStructuredBuffer() [4/7]

template<typename ElementType , typename AllocatorType >
FRDGBufferRef CreateStructuredBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
TArray< ElementType, AllocatorType > &&  InitialData 
)
inline

Helper to create a structured buffer with initial data from a TArray with move semantics, this can be cheaper as it guarantees the lifetimes of the data & permits copy-free upload.

◆ CreateStructuredBuffer() [5/7]

template<typename ElementType >
FRDGBufferRef CreateStructuredBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
TConstArrayView< ElementType >  InitialData,
ERDGInitialDataFlags  InitialDataFlags = ERDGInitialDataFlags::None 
)
inline

Helper to create a structured buffer with initial data from a TConstArrayView.

◆ CreateStructuredBuffer() [6/7]

RENDERCORE_API FRDGBufferRef CreateStructuredBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
uint32  BytesPerElement,
FRDGBufferNumElementsCallback &&  NumElementsCallback,
FRDGBufferInitialDataCallback &&  InitialDataCallback,
FRDGBufferInitialDataSizeCallback &&  InitialDataSizeCallback 
)

A variant where NumElements, InitialData, and InitialDataSize are supplied through callbacks. This allows creating a buffer with information unknown at creation time. Though, data must be ready before the most recent RDG pass that references the buffer is executed.

◆ CreateStructuredBuffer() [7/7]

RENDERCORE_API FRDGBufferRef CreateStructuredBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
uint32  BytesPerElement,
uint32  NumElements,
const void InitialData,
uint64  InitialDataSize,
ERDGInitialDataFlags  InitialDataFlags = ERDGInitialDataFlags::None 
)

Creates a structured buffer with initial data by creating an upload pass.

◆ CreateStructuredBuffer_Impl()

template<typename ArrayType >
FRDGBufferRef CreateStructuredBuffer_Impl ( FRDGBuilder GraphBuilder,
const TCHAR Name,
TRDGBufferArrayCallback< ArrayType > &&  ArrayCallback 
)
inline

A variant where the TArray is supplied through callbacks. This allows creating a buffer with information unknown at creation time. Though, data must be ready before the most recent RDG pass that references the buffer is executed.

◆ CreateStructuredUploadBuffer()

template<typename ElementType , typename AllocatorType >
FRDGBufferRef CreateStructuredUploadBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
const TArray< ElementType, AllocatorType > &  InitialData,
ERDGInitialDataFlags  InitialDataFlags = ERDGInitialDataFlags::None 
)
inline

Helper to create a structured upload buffer with initial data from a TArray. NOTE: does not provide a 1-size fallback for empty initial data.

◆ CreateTextureMSAA() [1/2]

FRDGTextureMSAA CreateTextureMSAA ( FRDGBuilder GraphBuilder,
FRDGTextureDesc  Desc,
const TCHAR Name,
ETextureCreateFlags  ResolveFlagsToAdd = TexCreate_None 
)
inline

◆ CreateTextureMSAA() [2/2]

RENDERCORE_API FRDGTextureMSAA CreateTextureMSAA ( FRDGBuilder GraphBuilder,
FRDGTextureDesc  Desc,
const TCHAR NameMultisampled,
const TCHAR NameResolved,
ETextureCreateFlags  ResolveFlagsToAdd = TexCreate_None 
)

◆ CreateUploadBuffer() [1/4]

template<typename ElementType >
FRDGBufferRef CreateUploadBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
const FRDGUploadData< ElementType > &  InitialData 
)
inline

◆ CreateUploadBuffer() [2/4]

template<typename ElementType >
FRDGBufferRef CreateUploadBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
TConstArrayView< ElementType >  InitialData,
ERDGInitialDataFlags  InitialDataFlags = ERDGInitialDataFlags::None 
)
inline

◆ CreateUploadBuffer() [3/4]

template<typename ElementType >
FRDGBufferRef CreateUploadBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
uint32  BytesPerElement,
uint32  NumElements,
const FRDGUploadData< ElementType > &  InitialData 
)
inline

◆ CreateUploadBuffer() [4/4]

RENDERCORE_API FRDGBufferRef CreateUploadBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
uint32  BytesPerElement,
uint32  NumElements,
const void InitialData,
uint64  InitialDataSize,
ERDGInitialDataFlags  InitialDataFlags = ERDGInitialDataFlags::None 
)

◆ CreateVertexBuffer()

RENDERCORE_API FRDGBufferRef CreateVertexBuffer ( FRDGBuilder GraphBuilder,
const TCHAR Name,
const FRDGBufferDesc Desc,
const void InitialData,
uint64  InitialDataSize,
ERDGInitialDataFlags  InitialDataFlags = ERDGInitialDataFlags::None 
)

Creates a vertex buffer with initial data by creating an upload pass.

◆ GetIfProduced() [1/2]

FRDGBufferRef GetIfProduced ( FRDGBufferRef  Buffer,
FRDGBufferRef  FallbackBuffer = nullptr 
)
inline

Returns the buffer if has been produced by a prior pass, or null otherwise.

◆ GetIfProduced() [2/2]

FRDGTextureRef GetIfProduced ( FRDGTextureRef  Texture,
FRDGTextureRef  FallbackTexture = nullptr 
)
inline

Returns the texture if it was produced by a prior pass, or null otherwise.

◆ GetLoadActionIfProduced()

ERenderTargetLoadAction GetLoadActionIfProduced ( FRDGTextureRef  Texture,
ERenderTargetLoadAction  ActionIfNotProduced 
)
inline

Returns 'Load' if the texture has already been produced by a prior pass, or the requested initial action.

◆ GetLoadBindingIfProduced()

FRenderTargetBinding GetLoadBindingIfProduced ( FRDGTextureRef  Texture,
ERenderTargetLoadAction  ActionIfNotProduced 
)
inline

Returns a binding with the requested initial action, or a load action if the resource has been produced by a prior pass.

◆ GetRenderTargetBindings() [1/2]

FRenderTargetBindingSlots GetRenderTargetBindings ( ERenderTargetLoadAction  ColorLoadAction,
TArrayView< FRDGTextureRef ColorTextures 
)
inline

◆ GetRenderTargetBindings() [2/2]

FRenderTargetBindingSlots GetRenderTargetBindings ( ERenderTargetLoadAction  ColorLoadAction,
TArrayView< FTextureRenderTargetBinding ColorTextures 
)
inline

◆ HasBeenProduced()

bool HasBeenProduced ( FRDGViewableResource Resource)
inline

Returns whether the resource was produced by a prior pass.

◆ IsRegistered() [1/2]

bool IsRegistered ( FRDGBuilder GraphBuilder,
const TRefCountPtr< FRDGPooledBuffer > &  Buffer 
)
inline

◆ IsRegistered() [2/2]

bool IsRegistered ( FRDGBuilder GraphBuilder,
const TRefCountPtr< IPooledRenderTarget > &  RenderTarget 
)
inline

◆ RegisterExternalTexture() [1/2]

FRDGTextureRef RegisterExternalTexture ( FRDGBuilder GraphBuilder,
FRHITexture Texture,
const TCHAR NameIfUnregistered 
)
inline

◆ RegisterExternalTexture() [2/2]

FRDGTextureRef RegisterExternalTexture ( FRDGBuilder GraphBuilder,
FRHITexture Texture,
const TCHAR NameIfUnregistered,
ERDGTextureFlags  Flags 
)
inline

◆ RegisterExternalTextureWithFallback()

RENDERCORE_API FRDGTextureRef RegisterExternalTextureWithFallback ( FRDGBuilder GraphBuilder,
const TRefCountPtr< IPooledRenderTarget > &  ExternalPooledTexture,
const TRefCountPtr< IPooledRenderTarget > &  FallbackPooledTexture 
)

Register external texture with fallback if the resource is invalid.

CAUTION: use this function very wisely. It may actually remove shader parameter validation failure when a pass is actually trying to access a resource not yet or no longer available.

◆ TryGetRHI() [1/3]

FRHIBuffer * TryGetRHI ( FRDGBuffer Buffer)
inline

◆ TryGetRHI() [2/3]

FRHIBuffer * TryGetRHI ( FRDGPooledBuffer Buffer)
inline

◆ TryGetRHI() [3/3]

FRHITexture * TryGetRHI ( FRDGTextureRef  Texture)
inline

Returns the RHI texture from an RDG texture if it exists, or null otherwise.

◆ TryGetSize() [1/2]

uint64 TryGetSize ( const FRDGBuffer Buffer)
inline

◆ TryGetSize() [2/2]

uint64 TryGetSize ( const FRDGPooledBuffer Buffer)
inline

◆ TryGetSRV()

FRHIShaderResourceView * TryGetSRV ( FRDGPooledBuffer Buffer)
inline

◆ TryRegisterExternalBuffer()

FRDGBufferRef TryRegisterExternalBuffer ( FRDGBuilder GraphBuilder,
const TRefCountPtr< FRDGPooledBuffer > &  ExternalPooledBuffer,
ERDGBufferFlags  Flags = ERDGBufferFlags::None 
)
inline

Variants of RegisterExternalBuffer which will return null (rather than assert) if the external buffer is null.

◆ TryRegisterExternalTexture()

FRDGTextureRef TryRegisterExternalTexture ( FRDGBuilder GraphBuilder,
const TRefCountPtr< IPooledRenderTarget > &  ExternalPooledTexture,
ERDGTextureFlags  Flags = ERDGTextureFlags::None 
)
inline

Variants of RegisterExternalTexture which will returns null (rather than assert) if the external texture is null.