Loading...
Searching...
No Matches
SimpleRenderedISFNode.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{
9// Used for the simple case of a single, non-persistent pass (the most common case)
10
12{
13 SimpleRenderedISFNode(const ISFNode& node) noexcept;
14
15 virtual ~SimpleRenderedISFNode();
16
17 void updateInputTexture(const Port& input, QRhiTexture* tex) override;
18 QRhiTexture* textureForOutput(const Port& output) override;
19
20 void init(RenderList& renderer, QRhiResourceUpdateBatch& res) override;
21 void update(RenderList& renderer, QRhiResourceUpdateBatch& res, Edge* edge) override;
22 void release(RenderList& r) override;
23
24 void runInitialPasses(
25 RenderList&, QRhiCommandBuffer& commands, QRhiResourceUpdateBatch*& res,
26 Edge& edge) override;
27
28 void runRenderPass(RenderList&, QRhiCommandBuffer& commands, Edge& edge) override;
29
30private:
31 void initPass(const TextureRenderTarget& rt, RenderList& renderer, Edge& edge);
32 void initMRTPass(RenderList& renderer, QRhiResourceUpdateBatch& res);
33 void initMRTBlitPasses(RenderList& renderer, QRhiResourceUpdateBatch& res);
34
35 std::vector<Sampler> allSamplers() const noexcept;
36
37 ossia::small_vector<std::pair<Edge*, Pass>, 2> m_passes;
38
39 ISFNode& n;
40
41 std::vector<Sampler> m_inputSamplers;
42 std::vector<Sampler> m_audioSamplers;
43 std::vector<QRhiSampler*> m_blitSamplers;
44
45 const Mesh* m_mesh{};
46 MeshBuffers m_meshBuffer{};
47
48 QRhiBuffer* m_materialUBO{};
49 int m_materialSize{};
50
51 std::optional<AudioTextureUpload> m_audioTex;
52
53 // MRT: internally-owned render target with multiple attachments
54 TextureRenderTarget m_mrtRenderTarget;
55 bool m_hasMRT{false};
56 bool m_mrtRenderedThisFrame{false};
57};
58}
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: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 SimpleRenderedISFNode.hpp:12
void updateInputTexture(const Port &input, QRhiTexture *tex) override
Definition SimpleRenderedISFNode.cpp:17
QRhiTexture * textureForOutput(const Port &output) override
Definition SimpleRenderedISFNode.cpp:41
Useful abstraction for storing all the data related to a render target.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:122