VJ Master 1.0
Real-time audio analysis and visualisation.
Loading...
Searching...
No Matches
NiagaraDataInterfaceSTWaveformDisplay.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 "NiagaraDataInterfaceSTWaveformDisplay.generated.h"
8
9enum class ENiagaraSimTarget : uint8;
10struct FNiagaraDataInterfaceGeneratedFunction;
11struct FNiagaraFunctionSignature;
12struct FVMExternalFunctionBindingInfo;
13
18UCLASS(EditInlineNew, Category = "ShaderTech|AudioVisualisation", meta = (DisplayName = "Waveform Display Query"))
19class ST_AUDIOVISUALISATION_API UNiagaraDataInterfaceSTWaveformDisplay : public UNiagaraDataInterface
20{
21 GENERATED_UCLASS_BODY()
22
23
24 BEGIN_SHADER_PARAMETER_STRUCT(FShaderParameters, )
25 SHADER_PARAMETER(FVector4f, ColourSolid)
26 SHADER_PARAMETER(FVector4f, ColourRange1)
27 SHADER_PARAMETER(FVector4f, ColourRange2)
28 END_SHADER_PARAMETER_STRUCT()
29
30public:
32 UPROPERTY(EditAnywhere, Category = "Audio", meta = (ToolTip = "Which measurement display properties we should use"))
33 EAudioMeasurement Measurement = EAudioMeasurement::Frequency;
34
35 // UObject Interface
37 virtual void PostInitProperties() override;
38 // UObject Interface End
39
41 virtual bool CopyToInternal(UNiagaraDataInterface* Destination) const override;
42
43 // UNiagaraDataInterface Interface
45 virtual void GetFunctions(TArray<FNiagaraFunctionSignature>& OutFunctions) override;
46
48 virtual void GetVMExternalFunction(const FVMExternalFunctionBindingInfo& BindingInfo, void* InstanceData, FVMExternalFunction& OutFunc) override;
49
51 virtual bool CanExecuteOnTarget(ENiagaraSimTarget Target) const override { return true; }
52
53#if WITH_EDITORONLY_DATA
55 virtual bool AppendCompileHash(FNiagaraCompileHashVisitor* InVisitor) const override;
56
58 virtual bool GetFunctionHLSL(const FNiagaraDataInterfaceGPUParamInfo& ParamInfo, const FNiagaraDataInterfaceGeneratedFunction& FunctionInfo, int FunctionInstanceIndex, FString& OutHLSL) override;
59
61 virtual void GetParameterDefinitionHLSL(const FNiagaraDataInterfaceGPUParamInfo& ParamInfo, FString& OutHLSL) override;
62#endif
63
65 virtual void BuildShaderParameters(FNiagaraShaderParametersBuilder& ShaderParametersBuilder) const override;
66
68 virtual void SetShaderParameters(const FNiagaraDataInterfaceSetShaderParametersContext& Context) const override;
69
71 virtual bool InitPerInstanceData(void* PerInstanceData, FNiagaraSystemInstance* SystemInstance) override;
72
74 virtual void DestroyPerInstanceData(void* PerInstanceData, FNiagaraSystemInstance* SystemInstance) override;
75
77 virtual int32 PerInstanceDataSize() const override;
78
80 virtual bool HasPreSimulateTick() const override { return true; }
81
83 virtual bool PerInstanceTick(void* PerInstanceData, FNiagaraSystemInstance* SystemInstance, float DeltaSeconds) override;
84
86 virtual void ProvidePerInstanceDataForRenderThread(void* DataForRenderThread, void* PerInstanceData, const FNiagaraSystemInstanceID& SystemInstance) override;
87 // UNiagaraDataInterface Interface
88
90 void GetSolidColourVM(FVectorVMExternalFunctionContext& Context);
91
93 void GetRandomColourInRangeVM(FVectorVMExternalFunctionContext& Context);
94
96 void GetRandomColourVM(FVectorVMExternalFunctionContext& Context);
97
99 void GetRandomColourHSVVM(FVectorVMExternalFunctionContext& Context);
100
102 void GetMappedColourInWheelVM(FVectorVMExternalFunctionContext& Context);
103
105 void GetMappedColourInRangeVM(FVectorVMExternalFunctionContext& Context);
106
107private:
109 static const FName NAME_GetSolidColour;
110
112 static const FName NAME_GetRandomColourInRange;
113
115 static const FName NAME_GetRandomColour;
116
118 static const FName NAME_GetRandomColourHSV;
119
121 static const FName NAME_GetMappedColourInWheel;
122
124 static const FName NAME_GetMappedColourInRange;
125};
UNiagaraDataInterfaceSTWaveformDisplay is a custom Niagara data interface for waveform display query....
Definition NiagaraDataInterfaceSTWaveformDisplay.h:20
virtual void GetFunctions(TArray< FNiagaraFunctionSignature > &OutFunctions) override
Definition NiagaraDataInterfaceSTWaveformDisplay.cpp:168
virtual bool CopyToInternal(UNiagaraDataInterface *Destination) const override
Definition NiagaraDataInterfaceSTWaveformDisplay.cpp:155
EAudioMeasurement Measurement
Definition NiagaraDataInterfaceSTWaveformDisplay.h:33
virtual void PostInitProperties() override
Definition NiagaraDataInterfaceSTWaveformDisplay.cpp:144
virtual bool CanExecuteOnTarget(ENiagaraSimTarget Target) const override
Definition NiagaraDataInterfaceSTWaveformDisplay.h:51
virtual void GetVMExternalFunction(const FVMExternalFunctionBindingInfo &BindingInfo, void *InstanceData, FVMExternalFunction &OutFunc) override
Definition NiagaraDataInterfaceSTWaveformDisplay.cpp:230
virtual bool HasPreSimulateTick() const override
Definition NiagaraDataInterfaceSTWaveformDisplay.h:80