VJ Master 1.0
Real-time audio analysis and visualisation.
Loading...
Searching...
No Matches
ST_C_VisAudioReactiveBoids.h
1// Copyright (c) 2025 Aaron Trotter (ShaderTech). All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Main/Base/ST_VisComputeBase.h"
7#include "Data/ST_AudioReactiveBoidsLib.h"
8#include "Compute/Utils/ST_VJ_PingPongBuffer.h"
9#include "GlobalShader.h"
10#include "NiagaraComponent.h"
11#include "DataDrivenShaderPlatformInfo.h"
12#include "Data/ST_AudioIOLib.h"
13#include "Materials/MaterialInstanceDynamic.h"
14#include "ST_C_VisAudioReactiveBoids.generated.h"
15
19UCLASS()
20class ST_AUDIOVISUALISATION_API AST_C_VisAudioReactiveBoids : public AST_VisComputeBase
21{
22 GENERATED_BODY()
23
24public:
27
28protected:
30 virtual void BeginPlay() override;
31
33 virtual void BeginDestroy() override;
34
35 // --- Start Managed Compute Shader Interface ---
36
38 virtual void InitComputeShader_GameThread() override;
39
41 virtual void InitComputeShader_RenderThread(FRHICommandListImmediate& RHICmdList) override;
42
44 virtual void ExecuteComputeShader_GameThread(float DeltaTime) override;
45
47 virtual void ExecuteComputeShader_RenderThread(FRHICommandListImmediate& RHICmdList) override;
48
50 virtual void DisposeComputeShader_GameThread() override;
51
53 virtual void DisposeComputeShader_RenderThread(FRHICommandListImmediate& RHICmdList) override;
54
55 // --- End Managed Compute Shader Interface ---
56
57protected:
63 virtual bool SetConstantParameters() override;
64
70 virtual bool SetDynamicParameters() override;
71
77 virtual FString GetOwnerName() const override;
78
79protected:
86 virtual void OnAudioIOStatusChanged_Implementation(bool bIsActive, FIntPoint IOId) override;
87
95 virtual void OnFrequencyBandsReady_Implementation(const TArray<float>& FrequencyBands, int32 NumFrequencyBands, FIntPoint IOId) override;
96
103 virtual void OnAmplitudesReady_Implementation(const TArray<float>& Amplitudes, FIntPoint IOId) override;
104
111 virtual void OnPitchesReady_Implementation(const TArray<float>& Pitches, FIntPoint IOId) override;
112
119 virtual void OnBeatDetected_Implementation(const TArray<float>& Beats, const TArray<bool>& BeatDetectedForChannel, FIntPoint IOId) override;
120
121private:
123 TArray<class UST_AudioIOBase*> RegisteredIOs;
124
125protected:
127 UPROPERTY(Transient, VisibleAnywhere, BlueprintReadOnly, Category = "ShaderTech|Boids")
129
131 UPROPERTY(Transient, VisibleAnywhere, BlueprintReadOnly, Category = "ShaderTech|Boids")
133
135 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "ShaderTech|Boids")
137
139 UPROPERTY(Transient, VisibleAnywhere, BlueprintReadOnly, Category = "Niagara")
140 UNiagaraComponent* Niagara = nullptr;
141
143 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Transient, Category = "ShaderTech|Boids")
144 UMaterialInstanceDynamic* MatiD = nullptr;
145
148
151
154
157
163 virtual TSoftObjectPtr<UNiagaraSystem> GetNiagaraSystem() const;
164
165private:
167 FMatrix BoundsMatrix;
168};
169
171{
172 return "VisAudioReactiveBoids";
173}
FST_VJ_BoidsRDGStateData BoidsRDGStateData
Definition ST_C_VisAudioReactiveBoids.h:150
virtual void InitComputeShader_GameThread() override
Definition ST_C_VisAudioReactiveBoids.cpp:43
FST_VJ_PingPongBuffer BoidsPingPongBuffer
Definition ST_C_VisAudioReactiveBoids.h:147
FST_AudioIOBuffers_RenderThread ST_AudioIOBuffers_RT
Definition ST_C_VisAudioReactiveBoids.h:156
virtual FString GetOwnerName() const override
Definition ST_C_VisAudioReactiveBoids.h:170
virtual void DisposeComputeShader_RenderThread(FRHICommandListImmediate &RHICmdList) override
Definition ST_C_VisAudioReactiveBoids.cpp:116
virtual void BeginPlay() override
Definition ST_C_VisAudioReactiveBoids.cpp:21
virtual void OnAudioIOStatusChanged_Implementation(bool bIsActive, FIntPoint IOId) override
Definition ST_C_VisAudioReactiveBoids.cpp:203
virtual void ExecuteComputeShader_GameThread(float DeltaTime) override
Definition ST_C_VisAudioReactiveBoids.cpp:82
FST_VJ_BoidCurrentParameters BoidCurrentParameters
Definition ST_C_VisAudioReactiveBoids.h:128
FST_VJ_ReactiveBoidDynamicParameters ReactiveBoidDynamicParameters
Definition ST_C_VisAudioReactiveBoids.h:132
virtual bool SetConstantParameters() override
Definition ST_C_VisAudioReactiveBoids.cpp:131
virtual void InitComputeShader_RenderThread(FRHICommandListImmediate &RHICmdList) override
Definition ST_C_VisAudioReactiveBoids.cpp:63
virtual void OnBeatDetected_Implementation(const TArray< float > &Beats, const TArray< bool > &BeatDetectedForChannel, FIntPoint IOId) override
Definition ST_C_VisAudioReactiveBoids.cpp:232
UNiagaraComponent * Niagara
Definition ST_C_VisAudioReactiveBoids.h:140
virtual void BeginDestroy() override
Definition ST_C_VisAudioReactiveBoids.cpp:32
virtual TSoftObjectPtr< UNiagaraSystem > GetNiagaraSystem() const
Definition ST_C_VisAudioReactiveBoids.cpp:125
virtual void ExecuteComputeShader_RenderThread(FRHICommandListImmediate &RHICmdList) override
Definition ST_C_VisAudioReactiveBoids.cpp:91
FST_AudioIOData_GameThread ST_AudioIOData_GT
Definition ST_C_VisAudioReactiveBoids.h:153
virtual void OnFrequencyBandsReady_Implementation(const TArray< float > &FrequencyBands, int32 NumFrequencyBands, FIntPoint IOId) override
Definition ST_C_VisAudioReactiveBoids.cpp:217
virtual void OnPitchesReady_Implementation(const TArray< float > &Pitches, FIntPoint IOId) override
Definition ST_C_VisAudioReactiveBoids.cpp:222
virtual void OnAmplitudesReady_Implementation(const TArray< float > &Amplitudes, FIntPoint IOId) override
Definition ST_C_VisAudioReactiveBoids.cpp:227
virtual bool SetDynamicParameters() override
Definition ST_C_VisAudioReactiveBoids.cpp:169
TArray< FST_VJ_BoidItem > BoidsArray
Definition ST_C_VisAudioReactiveBoids.h:136
UMaterialInstanceDynamic * MatiD
Definition ST_C_VisAudioReactiveBoids.h:144
virtual void DisposeComputeShader_GameThread() override
Definition ST_C_VisAudioReactiveBoids.cpp:110
AST_C_VisAudioReactiveBoids()
Definition ST_C_VisAudioReactiveBoids.cpp:12
AST_VisComputeBase()
Definition ST_VisComputeBase.cpp:7
Struct that holds audio I/O buffers for the render thread, including scoped references and pooled buf...
Definition ST_AudioIOLib.h:165
Struct that holds audio I/O data for the game thread.
Definition ST_AudioIOLib.h:31
Struct to hold current parameters for VJ boids, combining constant and dynamic parameters along with ...
Definition ST_AudioReactiveBoidsLib.h:254
Struct representing a single boid item in the VJ system, including its position, velocity,...
Definition ST_AudioReactiveBoidsLib.h:41
Struct representing the render graph state data for VJ boids, including passes and fences.
Definition ST_AudioReactiveBoidsLib.h:70
Structure representing a Ping-Pong buffer setup for compute shaders.
Definition ST_VJ_PingPongBuffer.h:17
Struct to hold reactive dynamic parameters for boids, such as audio-reactive noise multipliers and fr...
Definition ST_AudioReactiveBoidsLib.h:196