Loading...
Searching...
No Matches
InvertYRenderer.hpp
1#pragma once
2
3#include <Gfx/Graph/NodeRenderer.hpp>
4#include <Gfx/Graph/OutputNode.hpp>
5namespace Gfx
6{
7
8class SCORE_PLUGIN_GFX_EXPORT InvertYRenderer final
10{
11public:
12 explicit InvertYRenderer(
14 QRhiReadbackResult& readback);
15
18
19 QShader m_vertexS, m_fragmentS;
20
21 std::vector<score::gfx::Sampler> m_samplers;
22
24
26
28 renderTargetForInput(const score::gfx::Port& p) override
29 {
30 return m_inputTarget;
31 }
32
33 void finishFrame(
34 score::gfx::RenderList& renderer, QRhiCommandBuffer& cb,
35 QRhiResourceUpdateBatch*& res) override;
36
37 void init(score::gfx::RenderList& renderer, QRhiResourceUpdateBatch& res) override;
38 void update(
39 score::gfx::RenderList& renderer, QRhiResourceUpdateBatch& res,
40 score::gfx::Edge* edge) override;
41 void release(score::gfx::RenderList&) override;
42
43 void updateReadback(QRhiReadbackResult& rb) { m_readback = &rb; }
44
45private:
46 QRhiReadbackResult* m_readback{};
47};
48
50{
51public:
54
55 QShader m_vertexS, m_fragmentS;
56
57 std::array<score::gfx::Sampler, 1> m_samplers;
60
61 // When the output is a swap chain, the render target must be re-queried for
62 // every frame (QRhiSwapChain::currentFrameRenderTarget: "the value must not
63 // be cached and reused between frames"). Null for offscreen outputs.
64 QRhiSwapChain* m_swapChain{};
65
66
69 const score::gfx::Node& parent, QRhiSwapChain* swapChain = nullptr);
71
72 score::gfx::TextureRenderTarget renderTargetForInput(const score::gfx::Port& p) override;
73
74 void init(score::gfx::RenderList& renderer, QRhiResourceUpdateBatch& res) override;
75 void update(score::gfx::RenderList& renderer, QRhiResourceUpdateBatch& res, score::gfx::Edge* edge) override;
76 void release(score::gfx::RenderList&) override;
77
78 void runRenderPass(score::gfx::RenderList&, QRhiCommandBuffer& commands, score::gfx::Edge& e) override;
79
80 void finishFrame(
81 score::gfx::RenderList& renderer, QRhiCommandBuffer& cb,
82 QRhiResourceUpdateBatch*& res) override;
83};
84
86{
87public:
89
90 score::gfx::TextureRenderTarget renderTargetForInput(const score::gfx::Port& p) override;
93
94 void init(score::gfx::RenderList& renderer, QRhiResourceUpdateBatch& res) override;
95 void update(score::gfx::RenderList& renderer, QRhiResourceUpdateBatch& res, score::gfx::Edge* edge) override;
96 void runRenderPass(score::gfx::RenderList&, QRhiCommandBuffer& commands, score::gfx::Edge& e) override;
97 void release(score::gfx::RenderList&) override;
98};
99
100}
Definition InvertYRenderer.hpp:86
Definition InvertYRenderer.hpp:10
Definition InvertYRenderer.hpp:50
Root data model for visual nodes.
Definition score-plugin-gfx/Gfx/Graph/Node.hpp:74
Definition OutputNode.hpp:18
List of nodes to be rendered to an output.
Definition RenderList.hpp:19
Binds the rendering pipeline to ossia processes.
Definition CameraDevice.cpp:31
Connection between two score::gfx::Port.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:78
Definition Mesh.hpp:33
Useful abstraction for storing a graphics pipeline and associated resource bindings.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:107
Port of a score::gfx::Node.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:57
Global state associated to a rendering context.
Definition RenderState.hpp:37
Useful abstraction for storing all the data related to a render target.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:125