88template <
typename ReadbackProcessingLambdaType>
146 template <
typename ElementType,
typename AllocatorType>
162 template <
typename ElementType,
typename AllocatorType>
168 template <
typename GetArrayRefCallback>
176 uint32 NumBytes = BytesPerElement * NumElements;
178 check((NumBytes & 15) == 0);
189template <
typename InValueType,
typename InBufferTraits>
215 template <
typename ValueCheckFuncType>
240template <
typename InValueType,
typename InBufferTraits,
int32 InNumValuesPerScatter = 1>
249 static_assert((
BytesPerElement % 4) == 0,
"The struct used must be 4-byte aligned");
357 if (BufferTraits::bAutoValuesPerScatter)
385template <
typename InValueType,
typename InBufferTraits,
int32 InNumValuesPerScatter = 1>
416 if (Base::BufferTraits::bAutoValuesPerScatter)
445template <
typename InValueType>
448template <
typename InValueType,
int32 InNumValuesPerScatter = 1>
451template <
typename InValueType>
454template <
typename InValueType,
int32 InNumValuesPerScatter = 1>
457template <
typename InValueType,
int32 InNumValuesPerScatter = 1>
constexpr auto MakeArrayView(OtherRangeType &&Other)
Definition ArrayView.h:873
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::Math::TVector2< float > FVector2f
Definition MathFwd.h:74
UE::Math::TIntVector3< int32 > FIntVector3
Definition MathFwd.h:92
@ RLM_ReadOnly
Definition RHIDefinitions.h:786
#define RDG_EVENT_NAME(...)
Definition RenderGraphEvent.h:529
FRDGBufferRef CreateByteAddressUploadBuffer(FRDGBuilder &GraphBuilder, const TCHAR *Name, const TArray< ElementType, AllocatorType > &InitialData, ERDGInitialDataFlags InitialDataFlags=ERDGInitialDataFlags::None)
Definition RenderGraphUtils.h:1161
FRDGBufferRef CreateStructuredUploadBuffer(FRDGBuilder &GraphBuilder, const TCHAR *Name, const TArray< ElementType, AllocatorType > &InitialData, ERDGInitialDataFlags InitialDataFlags=ERDGInitialDataFlags::None)
Definition RenderGraphUtils.h:1145
void AddClearIndirectDispatchArgsPass(FRDGBuilder &GraphBuilder, ERHIFeatureLevel::Type FeatureLevel, FRDGBufferRef IndirectArgsRDG, const FIntVector3 &DimClearValue, uint32 NumIndirectArgs, uint32 IndirectArgStride)
Definition RendererUtils.cpp:360
RENDERER_API FBufferRHIRef & GetOneTileQuadVertexBuffer()
Definition RendererUtils.cpp:336
void AddBufferLockReadbackPass(FRDGBuilder &GraphBuilder, TRefCountPtr< FRDGPooledBuffer > SourceBuffer, uint32 NumBytes, ReadbackProcessingLambdaType &&ReadbackProcessingLambda)
Definition RendererPrivateUtils.h:89
FRDGBufferRef CreateAndClearIndirectDispatchArgs(FRDGBuilder &GraphBuilder, ERHIFeatureLevel::Type FeatureLevel, const TCHAR *Name, const FIntVector3 &DimClearValue, uint32 NumIndirectArgs, uint32 IndirectArgStride)
Definition RendererUtils.cpp:382
bool ShouldSkipNaniteLPIs(EShaderPlatform ShaderPlatform)
Definition RendererUtils.cpp:31
void AddClearIndirectDispatchArgs1DPass(FRDGBuilder &GraphBuilder, ERHIFeatureLevel::Type FeatureLevel, FRDGBufferRef IndirectArgsRDG, uint32 NumIndirectArgs, uint32 IndirectArgStride)
Definition RendererPrivateUtils.h:470
FRDGBufferRef CreateAndClearIndirectDispatchArgs1D(FRDGBuilder &GraphBuilder, ERHIFeatureLevel::Type FeatureLevel, const TCHAR *Name)
Definition RendererPrivateUtils.h:482
RENDERER_API FBufferRHIRef & GetOneTileQuadIndexBuffer()
Definition RendererUtils.cpp:341
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition RendererPrivateUtils.h:104
RENDERER_API void UploadTo(FRDGBuilder &GraphBuilder, FRDGBuffer *DestBuffer, FRDGBuffer *ScatterOffsets, FRDGBuffer *Values, uint32 NumScatters, uint32 NumBytesPerElement, int32 NumValuesPerScatter)
Definition RendererUtils.cpp:283
Definition RenderResource.h:509
FBufferRHIRef IndexBufferRHI
Definition RenderResource.h:524
Definition RenderGraphAllocator.h:34
Definition RenderGraphAllocator.h:24
Definition RenderGraphResources.h:1321
Definition RenderGraphBuilder.h:49
ObjectType * AllocObject(TArgs &&... Args)
Definition RenderGraphBuilder.inl:158
FRDGPassRef AddPass(FRDGEventName &&Name, const ParameterStructType *ParameterStruct, ERDGPassFlags Flags, ExecuteLambdaType &&ExecuteLambda)
const FRDGBufferDesc Desc
Definition RenderGraphResources.h:1214
Definition RHIResources.h:1581
Definition RHICommandList.h:455
void * LockBuffer(FRHIBuffer *Buffer, uint32 Offset, uint32 SizeRHI, EResourceLockMode LockMode)
Definition RHICommandList.h:747
void UnlockBuffer(FRHIBuffer *Buffer)
Definition RHICommandList.h:755
FRHIBufferInitializer CreateBufferInitializer(const FRHIBufferCreateDesc &CreateDesc)
Definition RHICommandList.h:792
Definition RendererPrivateUtils.h:49
FTileIndexBuffer(int32 InNumTileQuadsInBuffer)
Definition RendererPrivateUtils.h:51
const uint32 NumTileQuadsInBuffer
Definition RendererPrivateUtils.h:80
void InitRHI(FRHICommandListBase &RHICmdList) override
Definition RendererPrivateUtils.h:57
Definition RendererPrivateUtils.h:17
FTileTexCoordVertexBuffer(int32 InNumTileQuadsInBuffer)
Definition RendererPrivateUtils.h:19
const uint32 NumTileQuadsInBuffer
Definition RendererPrivateUtils.h:45
virtual void InitRHI(FRHICommandListBase &RHICmdList) override
Definition RendererPrivateUtils.h:24
Definition RenderResource.h:474
FBufferRHIRef VertexBufferRHI
Definition RenderResource.h:489
Definition ArrayView.h:139
UE_FORCEINLINE_HINT SizeType AddUninitialized()
Definition Array.h:1664
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
void Append(const TArray< OtherElementType, OtherAllocatorType > &Source)
Definition Array.h:2412
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
Definition AndroidPlatformMisc.h:14
UE_FORCEINLINE_HINT bool IsValid() const
Definition RefCounting.h:594
Definition RendererPrivateUtils.h:124
RENDERER_API void Empty()
Definition RendererUtils.cpp:310
bool bRoundUpToPOT
Definition RendererPrivateUtils.h:140
int32 MinimumNumElementsReserved
Definition RendererPrivateUtils.h:138
RENDERER_API FRDGBuffer * ResizeBufferIfNeeded(FRDGBuilder &GraphBuilder, const FRDGBufferDesc &BufferDesc)
Definition RendererUtils.cpp:315
TRefCountPtr< FRDGPooledBuffer > PooledBuffer
Definition RendererPrivateUtils.h:141
const TCHAR * Name
Definition RendererPrivateUtils.h:139
RENDERER_API FRDGBuffer * ResizeAndClearBufferIfNeeded(FRDGBuilder &GraphBuilder, const FRDGBufferDesc &BufferDesc)
Definition RendererUtils.cpp:320
Definition RendererPrivateUtils.h:387
static TAsyncBufferScatterUploader * Allocate(FRDGBuilder &GraphBuilder, int32 NumScatters=0)
Definition RendererPrivateUtils.h:395
FRDGBuffer * ResizeAndUploadToAsync(FRDGBuilder &GraphBuilder, TPersistentBuffer< InValueType, InBufferTraits > &DestDataBuffer, int32 DestDataMinimumSize)
Definition RendererPrivateUtils.h:404
Definition RendererPrivateUtils.h:242
static constexpr int32 NumValuesPerScatter
Definition RendererPrivateUtils.h:247
void Reserve(int32 NumScatters)
Definition RendererPrivateUtils.h:264
void Add(const TConstArrayView< ValueType > &InValues, int32 ScatterOffset)
Definition RendererPrivateUtils.h:288
static constexpr int32 BytesPerElement
Definition RendererPrivateUtils.h:246
InBufferTraits BufferTraits
Definition RendererPrivateUtils.h:244
TBufferScatterUploader(int32 NumScatters=0)
Definition RendererPrivateUtils.h:254
void AddMultiple(const TConstArrayView< ValueType > &InValues, int32 FirstScatterOffset)
Definition RendererPrivateUtils.h:301
FUploadData * UploadDataProxy
Definition RendererPrivateUtils.h:381
TArrayView< ValueType > AddMultiple_GetRef(int32 FirstScatterOffset, int32 NumValues)
Definition RendererPrivateUtils.h:317
FUploadData UploadData
Definition RendererPrivateUtils.h:382
InValueType ValueType
Definition RendererPrivateUtils.h:245
void Add(const ValueType &Value, int32 ScatterOffset)
Definition RendererPrivateUtils.h:275
int32 GetNumScatters() const
Definition RendererPrivateUtils.h:332
FRDGBuffer * ResizeAndUploadTo(FRDGBuilder &GraphBuilder, TPersistentBuffer< ValueType, BufferTraits > &DestDataBuffer, int32 DestDataMinimumSize, FScatterInfo &OutScatterInfo)
Definition RendererPrivateUtils.h:338
FRDGBuffer * ResizeAndUploadTo(FRDGBuilder &GraphBuilder, TPersistentBuffer< ValueType, BufferTraits > &DestDataBuffer, int32 DestDataMinimumSize)
Definition RendererPrivateUtils.h:369
virtual ~TBufferScatterUploader()=default
Definition RendererPrivateUtils.h:191
InBufferTraits BufferTraits
Definition RendererPrivateUtils.h:194
void ValidateGPUData(FRDGBuilder &GraphBuilder, TConstArrayView< ValueType > HostValues, ValueCheckFuncType &&ValueCheckFunc)
Definition RendererPrivateUtils.h:216
FRDGBuffer * ResizeAndClearBufferIfNeeded(FRDGBuilder &GraphBuilder, int32 InNewMinNumElements)
Definition RendererPrivateUtils.h:209
const TRefCountPtr< FRDGPooledBuffer > & GetPooledBuffer() const
Definition RendererPrivateUtils.h:237
TPersistentBuffer(int32 InMinimumNumElementsReserved, const TCHAR *InName, bool bInRoundUpToPOT=true)
Definition RendererPrivateUtils.h:198
InValueType ValueType
Definition RendererPrivateUtils.h:193
TRefCountPtr< FRDGPooledBuffer > & GetPooledBuffer()
Definition RendererPrivateUtils.h:236
FRDGBuffer * ResizeBufferIfNeeded(FRDGBuilder &GraphBuilder, int32 InNewMinNumElements)
Definition RendererPrivateUtils.h:203
static constexpr uint32 BytesPerElement
Definition RendererPrivateUtils.h:196
Type
Definition RHIFeatureLevel.h:20
Definition RendererPrivateUtils.h:118
U16 Index
Definition radfft.cpp:71
Definition RendererPrivateUtils.h:108
FRDGBuffer * ScatterOffsetsRDG
Definition RendererPrivateUtils.h:109
int32 NumScatters
Definition RendererPrivateUtils.h:110
Definition RenderGraphResources.h:940
static FRDGBufferDesc CreateByteAddressDesc(uint32 NumBytes)
Definition RenderGraphResources.h:941
uint32 NumElements
Definition RenderGraphResources.h:1111
static FRDGBufferDesc CreateStructuredDesc(uint32 BytesPerElement, uint32 NumElements)
Definition RenderGraphResources.h:993
Definition RHIResources.h:1417
FRHIBufferCreateDesc & SetInitActionInitializer()
Definition RHIResources.h:1542
FRHIBufferCreateDesc & SetInitialState(ERHIAccess InInitialState)
Definition RHIResources.h:1528
FRHIBufferCreateDesc & AddUsage(EBufferUsageFlags InUsage)
Definition RHIResources.h:1524
RHI_API FBufferRHIRef Finalize()
Definition RHIBufferInitializer.cpp:17
Definition RHIBufferInitializer.h:110
Definition RendererPrivateUtils.h:161
static FRDGBuffer * CreateUploadBuffer(FRDGBuilder &GraphBuilder, const TCHAR *Name, GetArrayRefCallback &&ArrayCallback)
Definition RendererPrivateUtils.h:169
static FRDGBuffer * CreateUploadBuffer(FRDGBuilder &GraphBuilder, const TCHAR *Name, const TArray< ElementType, AllocatorType > &InitialData)
Definition RendererPrivateUtils.h:163
static constexpr bool bAutoValuesPerScatter
Definition RendererPrivateUtils.h:182
static FRDGBufferDesc CreateDesc(uint32 BytesPerElement, uint32 NumElements)
Definition RendererPrivateUtils.h:174
Definition RendererPrivateUtils.h:145
static constexpr bool bAutoValuesPerScatter
Definition RendererPrivateUtils.h:157
static FRDGBuffer * CreateUploadBuffer(FRDGBuilder &GraphBuilder, const TCHAR *Name, const TArray< ElementType, AllocatorType > &InitialData)
Definition RendererPrivateUtils.h:147
static FRDGBufferDesc CreateDesc(uint32 BytesPerElement, uint32 NumElements)
Definition RendererPrivateUtils.h:152
Definition RendererPrivateUtils.h:377
TArray< ValueType > Values
Definition RendererPrivateUtils.h:378
TArray< uint32 > ScatterOffsets
Definition RendererPrivateUtils.h:379