VJ Master 1.0
Real-time audio analysis and visualisation.
Loading...
Searching...
No Matches
NiagaraDataInterfaceSTAudio.h
1// Copyright (c) 2025 Aaron Trotter (ShaderTech). All Rights Reserved.
2
3#pragma once
4
5#include "NiagaraDataInterface.h"
6#include "Main/ST_AudioVisSettings.h"
7#include "RenderGraphFwd.h"
8#include "RenderGraphResources.h"
9#include "Data/ST_AudioIOLib.h"
10#include "NiagaraDataInterfaceSTAudio.generated.h"
11
12struct FNiagaraDataInterfaceGeneratedFunction;
13struct FNiagaraFunctionSignature;
14
20UCLASS(EditInlineNew, Category = "ShaderTech|AudioVisualisation", meta = (DisplayName = "ST Audio Query"))
21class ST_AUDIOVISUALISATION_API UNiagaraDataInterfaceSTAudio : public UNiagaraDataInterface
22{
23 GENERATED_UCLASS_BODY()
24
25
26 BEGIN_SHADER_PARAMETER_STRUCT(FShaderParameters, )
28 SHADER_PARAMETER(uint32, IODataSize)
29
30
31 SHADER_PARAMETER_RDG_BUFFER_SRV(StructuredBuffer<uint>, IOData)
32
33
34 SHADER_PARAMETER(uint32, frequencyBandsLength)
35
36
37 SHADER_PARAMETER_RDG_BUFFER_SRV(StructuredBuffer<float>, frequencyBands)
38
39
40 SHADER_PARAMETER(uint32, amplitudesLength)
41
42
43 SHADER_PARAMETER_RDG_BUFFER_SRV(StructuredBuffer<float>, amplitudes)
44
45
46 SHADER_PARAMETER(uint32, pitchesLength)
47
48
49 SHADER_PARAMETER_RDG_BUFFER_SRV(StructuredBuffer<float>, pitches)
50
51
52 SHADER_PARAMETER(uint32, beatsLength)
53
54
55 SHADER_PARAMETER_RDG_BUFFER_SRV(StructuredBuffer<float>, beats)
56 END_SHADER_PARAMETER_STRUCT()
57
58private:
60 FST_AudioIOData_GameThread ST_AudioIOData_GT;
61
62public:
69 {
70 ST_AudioIOData_GT = InST_AudioIOData_GT;
71 }
72
73 //~ Begin UObject Interface
77 virtual void PostInitProperties() override;
78 //~ End UObject Interface
79
80 //~ Begin UNiagaraDataInterface Interface
86 virtual void GetFunctions(TArray<FNiagaraFunctionSignature>& OutFunctions) override;
87
94 virtual bool CanExecuteOnTarget(ENiagaraSimTarget Target) const override { return Target == ENiagaraSimTarget::GPUComputeSim; }
95
101 virtual void BuildShaderParameters(FNiagaraShaderParametersBuilder& ShaderParametersBuilder) const override;
102
108 virtual void SetShaderParameters(const FNiagaraDataInterfaceSetShaderParametersContext& Context) const override;
109
110#if WITH_EDITORONLY_DATA
117 virtual bool AppendCompileHash(FNiagaraCompileHashVisitor* InVisitor) const override;
118
128 virtual bool GetFunctionHLSL(const FNiagaraDataInterfaceGPUParamInfo& ParamInfo, const FNiagaraDataInterfaceGeneratedFunction& FunctionInfo, int FunctionInstanceIndex, FString& OutHLSL) override;
129
136 virtual void GetParameterDefinitionHLSL(const FNiagaraDataInterfaceGPUParamInfo& ParamInfo, FString& OutHLSL) override;
137#endif
138
144 virtual bool HasPreSimulateTick() const override { return true; }
145
154 virtual bool PerInstanceTick(void* PerInstanceData, FNiagaraSystemInstance* SystemInstance, float DeltaSeconds) override;
155
161 virtual int32 PerInstanceDataSize() const override;
162
170 virtual bool InitPerInstanceData(void* PerInstanceData, FNiagaraSystemInstance* SystemInstance) override;
171
178 virtual void DestroyPerInstanceData(void* PerInstanceData, FNiagaraSystemInstance* SystemInstance) override;
179 //~ End UNiagaraDataInterface Interface
180};
181
186struct FNDISTAudioProxy : public FNiagaraDataInterfaceProxy
187{
194 virtual void ConsumePerInstanceDataFromGameThread(void* PerInstanceData, const FNiagaraSystemInstanceID& Instance) override {}
195
201 virtual int32 PerInstanceDataPassedToRenderThreadSize() const override { return 0; }
202
204 TMap<FNiagaraSystemInstanceID, FST_AudioIOData_RenderThread> SystemInstancesToProxyData_RT;
205};
This class serves as a data interface for interacting with audio data in Niagara systems....
Definition NiagaraDataInterfaceSTAudio.h:22
virtual bool CanExecuteOnTarget(ENiagaraSimTarget Target) const override
Definition NiagaraDataInterfaceSTAudio.h:94
virtual bool HasPreSimulateTick() const override
Definition NiagaraDataInterfaceSTAudio.h:144
void SetSTAudioBuffers(FST_AudioIOData_GameThread InST_AudioIOData_GT)
Definition NiagaraDataInterfaceSTAudio.h:68
FNDISTAudioProxy struct for handling the proxy data in the Niagara system. This proxy handles per-ins...
Definition NiagaraDataInterfaceSTAudio.h:187
virtual void ConsumePerInstanceDataFromGameThread(void *PerInstanceData, const FNiagaraSystemInstanceID &Instance) override
Definition NiagaraDataInterfaceSTAudio.h:194
TMap< FNiagaraSystemInstanceID, FST_AudioIOData_RenderThread > SystemInstancesToProxyData_RT
Definition NiagaraDataInterfaceSTAudio.h:204
virtual int32 PerInstanceDataPassedToRenderThreadSize() const override
Definition NiagaraDataInterfaceSTAudio.h:201
Struct that holds audio I/O data for the game thread.
Definition ST_AudioIOLib.h:31