VJ Master 1.0
Real-time audio analysis and visualisation.
Loading...
Searching...
No Matches
ST_VJ_PingPongBuffer.h
1// Copyright (c) 2025 Aaron Trotter (ShaderTech). All Rights Reserved.
2
3#pragma once
4#include "RenderGraphUtils.h"
5#include "RenderGraphBuilder.h"
6#include "GlobalShader.h"
7#include "RenderGraphResources.h"
8#include "ST_VJ_ComputeFunctionLibrary.h"
9
17{
19 TRefCountPtr<FRDGPooledBuffer> ReadPooled = nullptr;
20
22 TRefCountPtr<FRDGPooledBuffer> WritePooled = nullptr;
23
25 FRDGBufferRef ReadScopedRef = nullptr;
26
28 FRDGBufferRef WriteScopedRef = nullptr;
29
31 FRDGBufferSRVRef ReadScopedSRV = nullptr;
32
34 FRDGBufferUAVRef WriteScopedUAV = nullptr;
35
38 {
39 ReadPooled = nullptr;
40 WritePooled = nullptr;
41 ReadScopedRef = nullptr;
42 WriteScopedRef = nullptr;
43 ReadScopedSRV = nullptr;
44 WriteScopedUAV = nullptr;
45 }
46
52 void PingPong(FRDGBuilder& GraphBuilder)
53 {
55
56 ReadScopedSRV = GraphBuilder.CreateSRV(ReadScopedRef);
57 WriteScopedUAV = GraphBuilder.CreateUAV(WriteScopedRef);
58 }
59
67 void RegisterRW(FRDGBuilder& GraphBuilder, FString readName, FString writeName)
68 {
71 }
72
79 void RegisterR(FRDGBuilder& GraphBuilder, FString readName)
80 {
82 }
83
90 void RegisterW(FRDGBuilder& GraphBuilder, FString writeName)
91 {
93 }
94
100
103 {
104 if (ReadPooled.IsValid())
105 {
106 ReadPooled.SafeRelease();
107 }
108
109 if (WritePooled.IsValid())
110 {
111 WritePooled.SafeRelease();
112 }
113
114 ReadScopedRef = nullptr;
115 WriteScopedRef = nullptr;
116 ReadScopedSRV = nullptr;
117 WriteScopedUAV = nullptr;
118 }
119};
static void RegisterSRV(FRDGBuilder &GraphBuilder, TRefCountPtr< FRDGPooledBuffer > buffer, FString name, FRDGBufferRef &outRDGRef, FRDGBufferSRVRef &outSRVRef, ERDGBufferFlags flags=ERDGBufferFlags::None)
Definition ST_VJ_ComputeFunctionLibrary.cpp:23
static void RegisterUAV(FRDGBuilder &GraphBuilder, TRefCountPtr< FRDGPooledBuffer > buffer, FString name, FRDGBufferRef &outRDGRef, FRDGBufferUAVRef &outUAVRef, ERDGBufferFlags flags=ERDGBufferFlags::None)
Definition ST_VJ_ComputeFunctionLibrary.cpp:35
FST_VJ_PingPongBuffer()
Definition ST_VJ_PingPongBuffer.h:37
void PingPong(FRDGBuilder &GraphBuilder)
Definition ST_VJ_PingPongBuffer.h:52
void RegisterR(FRDGBuilder &GraphBuilder, FString readName)
Definition ST_VJ_PingPongBuffer.h:79
TRefCountPtr< FRDGPooledBuffer > WritePooled
Definition ST_VJ_PingPongBuffer.h:22
FRDGBufferUAVRef WriteScopedUAV
Definition ST_VJ_PingPongBuffer.h:34
~FST_VJ_PingPongBuffer()
Definition ST_VJ_PingPongBuffer.h:96
FRDGBufferRef ReadScopedRef
Definition ST_VJ_PingPongBuffer.h:25
FRDGBufferRef WriteScopedRef
Definition ST_VJ_PingPongBuffer.h:28
void RegisterW(FRDGBuilder &GraphBuilder, FString writeName)
Definition ST_VJ_PingPongBuffer.h:90
void ReleaseData()
Definition ST_VJ_PingPongBuffer.h:102
FRDGBufferSRVRef ReadScopedSRV
Definition ST_VJ_PingPongBuffer.h:31
TRefCountPtr< FRDGPooledBuffer > ReadPooled
Definition ST_VJ_PingPongBuffer.h:19
void RegisterRW(FRDGBuilder &GraphBuilder, FString readName, FString writeName)
Definition ST_VJ_PingPongBuffer.h:67