UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UE::RendererPrivateUtils::Implementation::TBufferScatterUploader< InValueType, InBufferTraits, InNumValuesPerScatter > Class Template Reference

#include <RendererPrivateUtils.h>

+ Inheritance diagram for UE::RendererPrivateUtils::Implementation::TBufferScatterUploader< InValueType, InBufferTraits, InNumValuesPerScatter >:

Classes

struct  FUploadData
 

Public Types

using BufferTraits = InBufferTraits
 
using ValueType = InValueType
 

Public Member Functions

 TBufferScatterUploader (int32 NumScatters=0)
 
virtual ~TBufferScatterUploader ()=default
 
void Reserve (int32 NumScatters)
 
void Add (const ValueType &Value, int32 ScatterOffset)
 
void Add (const TConstArrayView< ValueType > &InValues, int32 ScatterOffset)
 
void AddMultiple (const TConstArrayView< ValueType > &InValues, int32 FirstScatterOffset)
 
TArrayView< ValueTypeAddMultiple_GetRef (int32 FirstScatterOffset, int32 NumValues)
 
int32 GetNumScatters () const
 
FRDGBufferResizeAndUploadTo (FRDGBuilder &GraphBuilder, TPersistentBuffer< ValueType, BufferTraits > &DestDataBuffer, int32 DestDataMinimumSize, FScatterInfo &OutScatterInfo)
 
FRDGBufferResizeAndUploadTo (FRDGBuilder &GraphBuilder, TPersistentBuffer< ValueType, BufferTraits > &DestDataBuffer, int32 DestDataMinimumSize)
 
- Public Member Functions inherited from FBufferScatterUploader
RENDERER_API void UploadTo (FRDGBuilder &GraphBuilder, FRDGBuffer *DestBuffer, FRDGBuffer *ScatterOffsets, FRDGBuffer *Values, uint32 NumScatters, uint32 NumBytesPerElement, int32 NumValuesPerScatter)
 
RENDERER_API void UploadTo (FRDGBuilder &GraphBuilder, FRDGBuffer *DestBuffer, FRDGBuffer *ScatterOffsets, FRDGBuffer *Values, TFunction< uint64()> &&GetNumScatters, uint32 NumBytesPerElement, int32 NumValuesPerScatter)
 

Static Public Attributes

static constexpr int32 BytesPerElement = sizeof(ValueType)
 
static constexpr int32 NumValuesPerScatter = InNumValuesPerScatter
 

Protected Attributes

FUploadDataUploadDataProxy = nullptr
 
FUploadData UploadData
 

Member Typedef Documentation

◆ BufferTraits

◆ ValueType

Constructor & Destructor Documentation

◆ TBufferScatterUploader()

template<typename InValueType , typename InBufferTraits , int32 InNumValuesPerScatter = 1>
UE::RendererPrivateUtils::Implementation::TBufferScatterUploader< InValueType, InBufferTraits, InNumValuesPerScatter >::TBufferScatterUploader ( int32  NumScatters = 0)
inline

Optionally reserve space for NumScatters items.

◆ ~TBufferScatterUploader()

Member Function Documentation

◆ Add() [1/2]

Add a number of values to scatter to a common destination start offset, NOTE: the destination start offset is ScatterOffset * InNumValuesPerScatter (not ScatterOffset)

◆ Add() [2/2]

Add single value to scatter to the destination offset.

◆ AddMultiple()

template<typename InValueType , typename InBufferTraits , int32 InNumValuesPerScatter = 1>
void UE::RendererPrivateUtils::Implementation::TBufferScatterUploader< InValueType, InBufferTraits, InNumValuesPerScatter >::AddMultiple ( const TConstArrayView< ValueType > &  InValues,
int32  FirstScatterOffset 
)
inline

Add a number of values to scatter to consecutive destination offsets with a common start offset, NOTE: this allocates a new scatter offset for each NumValuesPerScatter elements.

◆ AddMultiple_GetRef()

template<typename InValueType , typename InBufferTraits , int32 InNumValuesPerScatter = 1>
TArrayView< ValueType > UE::RendererPrivateUtils::Implementation::TBufferScatterUploader< InValueType, InBufferTraits, InNumValuesPerScatter >::AddMultiple_GetRef ( int32  FirstScatterOffset,
int32  NumValues 
)
inline

Add a number of values to scatter to consecutive destination offsets with a common start offset, NOTE: this allocates a new scatter offset for each NumValuesPerScatter elements.

◆ GetNumScatters()

◆ Reserve()

Pre-size the value and scatter arrays, allocates space for InNumValuesPerScatter * NumScatters values & NumScatters scatter offsets.

◆ ResizeAndUploadTo() [1/2]

template<typename InValueType , typename InBufferTraits , int32 InNumValuesPerScatter = 1>
FRDGBuffer * UE::RendererPrivateUtils::Implementation::TBufferScatterUploader< InValueType, InBufferTraits, InNumValuesPerScatter >::ResizeAndUploadTo ( FRDGBuilder GraphBuilder,
TPersistentBuffer< ValueType, BufferTraits > &  DestDataBuffer,
int32  DestDataMinimumSize 
)
inline

◆ ResizeAndUploadTo() [2/2]

template<typename InValueType , typename InBufferTraits , int32 InNumValuesPerScatter = 1>
FRDGBuffer * UE::RendererPrivateUtils::Implementation::TBufferScatterUploader< InValueType, InBufferTraits, InNumValuesPerScatter >::ResizeAndUploadTo ( FRDGBuilder GraphBuilder,
TPersistentBuffer< ValueType, BufferTraits > &  DestDataBuffer,
int32  DestDataMinimumSize,
FScatterInfo OutScatterInfo 
)
inline

Resize the destination persistent buffer (if needed) and upload & scatter the collected data to it. This locks the uploader to prevent accidental resize (and thus realloc) of the buffer by adding more elements.

Member Data Documentation

◆ BytesPerElement

◆ NumValuesPerScatter

◆ UploadData

◆ UploadDataProxy


The documentation for this class was generated from the following file: