Loading...
Searching...
No Matches
RenderedVSANode.hpp
1#pragma once
2
3#include <Gfx/Graph/ISFNode.hpp>
4#include <Gfx/Graph/NodeRenderer.hpp>
5#include <Gfx/Graph/RenderedISFUtils.hpp>
6
7namespace score::gfx
8{
10{
11 SimpleRenderedVSANode(const ISFNode& node) noexcept;
12
13 virtual ~SimpleRenderedVSANode();
14
15 TextureRenderTarget renderTargetForInput(const Port& p) override;
16
17 void init(RenderList& renderer, QRhiResourceUpdateBatch& res) override;
18 void update(RenderList& renderer, QRhiResourceUpdateBatch& res, Edge* edge) override;
19 void release(RenderList& r) override;
20
21 void runInitialPasses(
22 RenderList&, QRhiCommandBuffer& commands, QRhiResourceUpdateBatch*& res,
23 Edge& edge) override;
24
25 void runRenderPass(RenderList&, QRhiCommandBuffer& commands, Edge& edge) override;
26
27private:
28 ossia::small_flat_map<const Port*, TextureRenderTarget, 2> m_rts;
29
30 void initPass(
31 const TextureRenderTarget& rt, RenderList& renderer, Edge& edge,
32 QRhiResourceUpdateBatch& res);
33
34 std::vector<Sampler> allSamplers() const noexcept;
35
36 struct PassData
37 {
38 Edge* edge;
39 Pass main_pass;
40 QRhiGraphicsPipeline* background_pipeline{};
41 QRhiShaderResourceBindings* background_srb{};
42 QRhiBuffer* background_ubo{};
43 MeshBuffers background_tri{};
44 };
45
46 ossia::small_vector<PassData, 2> m_passes;
47
48 ISFNode& n;
49
50 std::vector<Sampler> m_inputSamplers;
51 std::vector<Sampler> m_audioSamplers;
52
53 Mesh* m_mesh{};
54
55 QRhiBuffer* m_materialUBO{};
56 int m_materialSize{};
57
58 std::optional<AudioTextureUpload> m_audioTex;
59
60 int m_prevFormat{};
61};
62}
Data model for Interactive Shader Format filters.
Definition ISFNode.hpp:20
Renderer for a given node.
Definition NodeRenderer.hpp:11
List of nodes to be rendered to an output.
Definition RenderList.hpp:19
Graphics rendering pipeline for ossia score.
Definition Filter/PreviewWidget.hpp:12
Connection between two score::gfx::Port.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:70
Definition Mesh.hpp:15
Data model for meshes.
Definition Mesh.hpp:23
Definition RenderedISFUtils.hpp:13
Port of a score::gfx::Node.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:52
Definition RenderedVSANode.hpp:10
Useful abstraction for storing all the data related to a render target.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:115