Navigation
API > API/Plugins > API/Plugins/Niagara
Underlying storage class for data channel data. Some data channels will have many of these and can distribute them as needed to different accessing systems. For example, some data channel handlers may subdivide the scene such that distant systems are not interacting. In this case, each subdivision would have it's own FNiagaraDataChannelData and distribute these to the relevant NiagaraSystems.
| Name | FNiagaraDataChannelData |
| Type | struct |
| Header File | /Engine/Plugins/FX/Niagara/Source/Niagara/Public/NiagaraDataChannelData.h |
| Include Path | #include "NiagaraDataChannelData.h" |
Syntax
struct FNiagaraDataChannelData : public TSharedFromThis< FNiagaraDataChannelData, ESPMode::ThreadSafe >
Inheritance Hierarchy
- FSharedFromThisBase → TSharedFromThis → FNiagaraDataChannelData
Constructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
FNiagaraDataChannelData
(
const FNiagaraDataChannelData& |
NiagaraDataChannelData.h | ||
| NiagaraDataChannelData.h | |||
| NiagaraDataChannelData.h |
Destructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
~FNiagaraDataChannelData() |
NiagaraDataChannelData.h |
Variables
Protected
| Name | Type | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|---|
| CPUSimData | FNiagaraDataSet * | DataChannel data accessible to Niagara CPU sims. SoA layout. Non LWC types. | NiagaraDataChannelData.h | |
| GameData | FNiagaraDataChannelGameDataPtr | DataChannel data accessible from Game/BP. AoS Layout. LWC types. | NiagaraDataChannelData.h | |
| GameDataStaging | FNiagaraDataSet * | Dataset we use for staging game data for the consumption by RT/GPU sims. | NiagaraDataChannelData.h | |
| LayoutInfo | FNiagaraDataChannelLayoutInfoPtr | Keep reference to the layout this data was built with. | NiagaraDataChannelData.h | |
| LwcTile | FVector3f | NiagaraDataChannelData.h | ||
| NumGPUSpawningReaders | std::atomic< int32 > | Track number of explicitly registered readers that spawn GPU particles from this data. | NiagaraDataChannelData.h | |
| PendingDestGameData | TArray< FNiagaraDataChannelGameDataPtr, TInlineAllocator< 8 > > | We keep a set of incoming game data for all flag combinations and accumulate data into these rather than keeping all as separate. | NiagaraDataChannelData.h | |
| PrevCPUSimData | FNiagaraDataBufferRef | Cached off buffer with the previous frame's CPU Sim accessible data. | NiagaraDataChannelData.h | |
| PublishCritSec | FCriticalSection | Critical section protecting shared state for multiple writers publishing from different threads. | NiagaraDataChannelData.h | |
| PublishRequests | TArray< FNiagaraDataChannelPublishRequest > | Pending requests to publish data into this data channel. | NiagaraDataChannelData.h | |
| PublishRequestsForGPU | TArray< FNiagaraDataChannelPublishRequest > | Data buffers we'll be passing to the RT proxy for uploading to the GPU | NiagaraDataChannelData.h | |
| PublishRequestsFromGPU | TArray< FNiagaraDataChannelPublishRequest > | Pending requests to publish data into this data channel from the GPU. | NiagaraDataChannelData.h | |
| RTProxy | FNiagaraDataChannelDataProxyPtr | Render thread proxy for this data. Owns all RT side data meant for GPU simulations. | NiagaraDataChannelData.h | |
| WeakOwnerWorld | TWeakObjectPtr< UWorld > | The world we were initialized with, used to get the compute interface. | NiagaraDataChannelData.h |
Functions
Public
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
void BeginFrame
(
UNiagaraDataChannelHandler* Owner |
NiagaraDataChannelData.h | ||
int32 ConsumePublishRequests
(
UNiagaraDataChannelHandler* Owner, |
NiagaraDataChannelData.h | ||
void DestroyRenderThreadProxy
(
FNiagaraGpuComputeDispatchInterface* ComputeDispatchInterface |
NiagaraDataChannelData.h | ||
void EndFrame
(
UNiagaraDataChannelHandler* Owner |
NiagaraDataChannelData.h | ||
FNiagaraDataBuffer * GetBufferForCPUWrite() |
This will get a buffer from the CPU dataset intended to be written to on the CPU. | NiagaraDataChannelData.h | |
const FNiagaraDataSetCompiledData & GetCompiledData
(
ENiagaraSimTarget SimTarget |
NiagaraDataChannelData.h | ||
FNiagaraDataBufferRef GetCPUData
(
bool bPreviousFrame |
NiagaraDataChannelData.h | ||
FNiagaraDataChannelGameData * GetGameData() |
NiagaraDataChannelData.h | ||
FNiagaraDataChannelGameDataPtr GetGameDataForWriteGT
(
int32 Count, |
Returns a game data buffer into which we can write Count valuse on the Game Thread. | NiagaraDataChannelData.h | |
FVector3f GetLwcTile() |
NiagaraDataChannelData.h | ||
FNiagaraDataChannelDataProxyPtr GetRTProxy() |
NiagaraDataChannelData.h | ||
bool HasData() |
Return true if data has been written to this NDC data for the current frame. | NiagaraDataChannelData.h | |
void Init
(
UNiagaraDataChannelHandler* Owner |
NiagaraDataChannelData.h | ||
bool IsLayoutValid
(
UNiagaraDataChannelHandler* Owner |
Returns if this data is still valid. This can return false in cases where the owning data channel has been modified for example. | NiagaraDataChannelData.h | |
int32 NumRegisteredGPUSpawningReaders() |
NiagaraDataChannelData.h | ||
void Publish
(
const FNiagaraDataChannelPublishRequest& Request |
Adds a request to publish some data into the channel on the next tick. | NiagaraDataChannelData.h | |
void PublishFromGPU
(
const FNiagaraDataChannelPublishRequest& Request |
NiagaraDataChannelData.h | ||
void RegisterGPUSpawningReader() |
NiagaraDataChannelData.h | ||
void Reset() |
NiagaraDataChannelData.h | ||
void SetLwcTile
(
FVector3f InLwcTile |
NiagaraDataChannelData.h | ||
void UnregisterGPUSpawningReader() |
NiagaraDataChannelData.h |
Operators
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
FNiagaraDataChannelData & operator=
(
const FNiagaraDataChannelData& |
NiagaraDataChannelData.h | ||
| NiagaraDataChannelData.h |