Loading...
Searching...
No Matches
RenderedISFNode.hpp
1#pragma once
2#include <Gfx/Graph/ISFNode.hpp>
3#include <Gfx/Graph/NodeRenderer.hpp>
4#include <Gfx/Graph/RenderedISFUtils.hpp>
5
6namespace score::gfx
7{
9{
10 explicit RenderedISFNode(const ISFNode& node) noexcept;
11
12 virtual ~RenderedISFNode();
13
14 void updateInputTexture(const Port& input, QRhiTexture* tex) override;
15
16 void init(RenderList& renderer, QRhiResourceUpdateBatch& res) override;
17 void update(RenderList& renderer, QRhiResourceUpdateBatch& res, Edge* e) override;
18 void release(RenderList& r) override;
19
20 void runInitialPasses(
21 RenderList&, QRhiCommandBuffer& commands, QRhiResourceUpdateBatch*& res,
22 Edge& edge) override;
23
24 void runRenderPass(RenderList&, QRhiCommandBuffer& commands, Edge& edge) override;
25
26private:
27 std::pair<Pass, Pass> createPass(
28 RenderList& renderer, ossia::small_vector<PassOutput, 1>& m_passSamplers,
29 PassOutput target, bool previousPassIsPersistent);
30
31 std::pair<Pass, Pass> createFinalPass(
32 RenderList& renderer, ossia::small_vector<PassOutput, 1>& m_passSamplers,
33 const TextureRenderTarget& target);
34 void initPasses(
35 const TextureRenderTarget& rt, RenderList& renderer, Edge& edge, QSize mainTexSize,
36 QRhiResourceUpdateBatch& res);
37
38 PassOutput initPassSampler(
39 ISFNode& n, const isf::pass& pass, RenderList& renderer, QSize mainTexSize,
40 QRhiResourceUpdateBatch& res);
41
42 struct Passes
43 {
44 ossia::small_vector<Pass, 1> passes;
45 ossia::small_vector<Pass, 1> altPasses;
46 ossia::small_vector<PassOutput, 1> samplers;
47 };
48
49 std::vector<Sampler>
50 allSamplers(ossia::small_vector<PassOutput, 1>&, int mainOrAltPass) const noexcept;
51
52 ossia::small_vector<std::pair<Edge*, Passes>, 2> m_passes;
53
54 ISFNode& n;
55
56 std::vector<Sampler> m_inputSamplers;
57 std::vector<Sampler> m_audioSamplers;
58
59 std::vector<TextureRenderTarget> m_innerPassTargets;
60
61 const Mesh* m_mesh{};
62 MeshBuffers m_meshBuffer{};
63
64 QRhiBuffer* m_materialUBO{};
65 int m_materialSize{};
66
67 AudioTextureUpload m_audioTex;
68};
69
70}
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
Definition RenderedISFUtils.hpp:27
Connection between two score::gfx::Port.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:75
Definition Mesh.hpp:33
Data model for meshes.
Definition Mesh.hpp:46
Port of a score::gfx::Node.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:54
Definition RenderedISFNode.hpp:9
void updateInputTexture(const Port &input, QRhiTexture *tex) override
Definition RenderedISFNode.cpp:86
Useful abstraction for storing all the data related to a render target.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:122