2#include <Gfx/Graph/Node.hpp>
27 virtual QRhiTexture* textureForOutput(
const Port& output);
31 virtual void updateInputTexture(
const Port& input, QRhiTexture* tex);
36 inputAboutToFinish(
RenderList& renderer,
const Port& p, QRhiResourceUpdateBatch*&);
38 virtual void init(
RenderList& renderer, QRhiResourceUpdateBatch& res) = 0;
39 virtual void update(
RenderList& renderer, QRhiResourceUpdateBatch& res,
Edge* edge)
42 virtual void runInitialPasses(
43 RenderList&, QRhiCommandBuffer& commands, QRhiResourceUpdateBatch*& res,
46 virtual void runRenderPass(
RenderList&, QRhiCommandBuffer& commands,
Edge& edge);
50 void checkForChanges()
52 materialChanged = node.hasMaterialChanged(materialChangedIndex);
53 renderTargetSpecsChanged
54 = node.hasRenderTargetChanged(renderTargetSpecsChangedIndex);
58 void process(int32_t port,
const ossia::geometry_spec& v);
59 virtual void process(int32_t port,
const ossia::transform3d& v);
72 bool materialChanged{
false};
73 bool geometryChanged{
false};
74 bool renderTargetSpecsChanged{
false};
77 int64_t materialChangedIndex{-1};
78 int64_t renderTargetSpecsChangedIndex{-1};
81using PassMap = ossia::small_vector<std::pair<Edge*, Pipeline>, 2>;
82SCORE_PLUGIN_GFX_EXPORT
83void defaultPassesInit(
84 PassMap& passes,
const std::vector<Edge*>& edges, RenderList& renderer,
85 const Mesh& mesh,
const QShader& v,
const QShader& f, QRhiBuffer* processUBO,
86 QRhiBuffer* matUBO, std::span<const Sampler> samplers,
87 std::span<QRhiShaderResourceBinding> additionalBindings = {});
89SCORE_PLUGIN_GFX_EXPORT
90void defaultRenderPass(
91 RenderList& renderer,
const Mesh& mesh,
const MeshBuffers& bufs,
92 QRhiCommandBuffer& cb, Edge& edge, PassMap& passes);
94SCORE_PLUGIN_GFX_EXPORT
96 RenderList& renderer,
const MeshBuffers& bufs, QRhiCommandBuffer& cb, Edge& edge,
116 ossia::small_vector<Sampler, 8> m_samplers;
126 QRhiBuffer* m_processUBO{};
134 defaultMeshInit(
RenderList& renderer,
const Mesh& mesh, QRhiResourceUpdateBatch& res);
137 void defaultPassesInit(
138 RenderList& renderer,
const Mesh& mesh,
const QShader& v,
const QShader& f,
139 std::span<QRhiShaderResourceBinding> additionalBindings = {});
141 void init(
RenderList& renderer, QRhiResourceUpdateBatch& res)
override;
143 void defaultUBOUpdate(
RenderList& renderer, QRhiResourceUpdateBatch& res);
144 void defaultMeshUpdate(
RenderList& renderer, QRhiResourceUpdateBatch& res);
145 void update(
RenderList& renderer, QRhiResourceUpdateBatch& res,
Edge* edge)
override;
150 void defaultRenderPass(
153 void defaultRenderPass(
157 void runRenderPass(
RenderList&, QRhiCommandBuffer& commands,
Edge& edge)
override;
159 void updateInputTexture(
const Port& input, QRhiTexture* tex)
override;
Generic renderer.
Definition NodeRenderer.hpp:106
Root data model for visual nodes.
Definition score-plugin-gfx/Gfx/Graph/Node.hpp:74
Common base class for most single-pass, simple nodes.
Definition score-plugin-gfx/Gfx/Graph/Node.hpp:203
Renderer for a given node.
Definition NodeRenderer.hpp:11
ossia::geometry_spec geometry
The geometry to use.
Definition NodeRenderer.hpp:69
List of nodes to be rendered to an output.
Definition RenderList.hpp:19
Graphics rendering pipeline for ossia score.
Definition Filter/PreviewWidget.hpp:12
Utility to represent a shader material following score conventions.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:263
Connection between two score::gfx::Port.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:74
Data model for meshes.
Definition Mesh.hpp:30
Port of a score::gfx::Node.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:53
Useful abstraction for storing all the data related to a render target.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:119