5#include "NiagaraCommon.h"
6#include "NiagaraShared.h"
7#include "NiagaraDataInterface.h"
8#include "RenderGraphFwd.h"
9#include "RenderGraphResources.h"
10#include "NiagaraDataInterfaceSTReactiveBoids.generated.h"
12struct FNiagaraDataInterfaceGeneratedFunction;
13struct FNiagaraFunctionSignature;
22UCLASS(EditInlineNew, Category =
"ShaderTech|AudioVisualisation", meta = (DisplayName =
"ST Reactive Boids Query"))
25 GENERATED_UCLASS_BODY()
28 BEGIN_SHADER_PARAMETER_STRUCT(FShaderParameters, )
30 SHADER_PARAMETER_RDG_BUFFER_SRV(StructuredBuffer<FST_VJ_BoidItem>, boidsIn)
32 SHADER_PARAMETER(int32, numBoids)
33 END_SHADER_PARAMETER_STRUCT()
39 TRefCountPtr<FRDGPooledBuffer> ReadPooled =
nullptr;
48 void SetData(int32 _numBoids, TRefCountPtr<FRDGPooledBuffer> _ReadPooled)
51 ReadPooled = _ReadPooled;
58 virtual void PostInitProperties()
override;
67 virtual void GetFunctions(TArray<FNiagaraFunctionSignature>& OutFunctions)
override;
75 virtual bool CanExecuteOnTarget(ENiagaraSimTarget Target)
const override {
return Target == ENiagaraSimTarget::GPUComputeSim; }
82 virtual void BuildShaderParameters(FNiagaraShaderParametersBuilder& ShaderParametersBuilder)
const override;
89 virtual void SetShaderParameters(
const FNiagaraDataInterfaceSetShaderParametersContext& Context)
const override;
91#if WITH_EDITORONLY_DATA
98 virtual bool AppendCompileHash(FNiagaraCompileHashVisitor* InVisitor)
const override;
109 virtual bool GetFunctionHLSL(
const FNiagaraDataInterfaceGPUParamInfo& ParamInfo,
const FNiagaraDataInterfaceGeneratedFunction& FunctionInfo,
int FunctionInstanceIndex, FString& OutHLSL)
override;
117 virtual void GetParameterDefinitionHLSL(
const FNiagaraDataInterfaceGPUParamInfo& ParamInfo, FString& OutHLSL)
override;
135 virtual bool PerInstanceTick(
void* PerInstanceData, FNiagaraSystemInstance* SystemInstance,
float DeltaSeconds)
override;
142 virtual int32 PerInstanceDataSize()
const override;
151 virtual bool InitPerInstanceData(
void* PerInstanceData, FNiagaraSystemInstance* SystemInstance)
override;
159 virtual void DestroyPerInstanceData(
void* PerInstanceData, FNiagaraSystemInstance* SystemInstance)
override;
Niagara data interface for ST Reactive Boids Query.
Definition NiagaraDataInterfaceSTReactiveBoids.h:24
virtual bool HasPreSimulateTick() const override
Definition NiagaraDataInterfaceSTReactiveBoids.h:125
void SetData(int32 _numBoids, TRefCountPtr< FRDGPooledBuffer > _ReadPooled)
Definition NiagaraDataInterfaceSTReactiveBoids.h:48
virtual bool CanExecuteOnTarget(ENiagaraSimTarget Target) const override
Definition NiagaraDataInterfaceSTReactiveBoids.h:75
Data structure used to store reactive boid instance data on the game thread.
Definition NiagaraDataInterfaceSTReactiveBoids.h:168
void ReleaseData()
Definition NiagaraDataInterfaceSTReactiveBoids.h:181
~FNDISTReactiveBoidsInstanceData_GameThread()
Definition NiagaraDataInterfaceSTReactiveBoids.h:175
int32 numBoids
Definition NiagaraDataInterfaceSTReactiveBoids.h:172
TRefCountPtr< FRDGPooledBuffer > ReadPooled
Definition NiagaraDataInterfaceSTReactiveBoids.h:170
Data structure used to store reactive boid instance data on the render thread.
Definition NiagaraDataInterfaceSTReactiveBoids.h:193
TRefCountPtr< FRDGPooledBuffer > ReadPooled
Definition NiagaraDataInterfaceSTReactiveBoids.h:195
void ReleaseData()
Definition NiagaraDataInterfaceSTReactiveBoids.h:222
int32 numBoids
Definition NiagaraDataInterfaceSTReactiveBoids.h:201
~FNDISTReactiveBoidsInstanceData_RenderThread()
Definition NiagaraDataInterfaceSTReactiveBoids.h:204
FRDGBufferSRVRef ReadScopedSRV
Definition NiagaraDataInterfaceSTReactiveBoids.h:199
FRDGBufferRef ReadScopedRef
Definition NiagaraDataInterfaceSTReactiveBoids.h:197
void UpdateData(FNDISTReactiveBoidsInstanceData_GameThread &InstanceData_GT)
Definition NiagaraDataInterfaceSTReactiveBoids.h:214
Proxy structure for reactive boids data interface.
Definition NiagaraDataInterfaceSTReactiveBoids.h:234
virtual int32 PerInstanceDataPassedToRenderThreadSize() const override
Definition NiagaraDataInterfaceSTReactiveBoids.h:248
TMap< FNiagaraSystemInstanceID, FNDISTReactiveBoidsInstanceData_RenderThread > SystemInstancesToProxyData_RT
Definition NiagaraDataInterfaceSTReactiveBoids.h:251
virtual void ConsumePerInstanceDataFromGameThread(void *PerInstanceData, const FNiagaraSystemInstanceID &Instance) override
Definition NiagaraDataInterfaceSTReactiveBoids.h:241