2#include <Gfx/Graph/Node.hpp>
20 virtual QRhiBuffer* bufferForInput(
const Port& input);
21 virtual QRhiBuffer* bufferForOutput(
const Port& output);
26 inputAboutToFinish(
RenderList& renderer,
const Port& p, QRhiResourceUpdateBatch*&);
28 virtual void init(
RenderList& renderer, QRhiResourceUpdateBatch& res) = 0;
29 virtual void update(
RenderList& renderer, QRhiResourceUpdateBatch& res,
Edge* edge)
32 virtual void runInitialPasses(
33 RenderList&, QRhiCommandBuffer& commands, QRhiResourceUpdateBatch*& res,
36 virtual void runRenderPass(
RenderList&, QRhiCommandBuffer& commands,
Edge& edge);
40 void checkForChanges()
42 materialChanged = node.hasMaterialChanged(materialChangedIndex);
43 renderTargetSpecsChanged
44 = node.hasRenderTargetChanged(renderTargetSpecsChangedIndex);
47 void process(int32_t port,
const ossia::geometry_spec& v)
52 geometryChanged =
true;
58 for(
auto& mesh : this->
geometry.meshes->meshes)
60 for(
auto& buf : mesh.buffers)
64 geometryChanged =
true;
86 bool materialChanged{
false};
87 bool geometryChanged{
false};
88 bool renderTargetSpecsChanged{
false};
91 int64_t materialChangedIndex{-1};
92 int64_t renderTargetSpecsChangedIndex{-1};
95using PassMap = ossia::small_vector<std::pair<Edge*, Pipeline>, 2>;
96SCORE_PLUGIN_GFX_EXPORT
97void defaultPassesInit(
98 PassMap& passes,
const std::vector<Edge*>& edges, RenderList& renderer,
99 const Mesh& mesh,
const QShader& v,
const QShader& f, QRhiBuffer* processUBO,
100 QRhiBuffer* matUBO, std::span<const Sampler> samplers,
101 std::span<QRhiShaderResourceBinding> additionalBindings = {});
103SCORE_PLUGIN_GFX_EXPORT
104void defaultRenderPass(
105 RenderList& renderer,
const Mesh& mesh,
const MeshBuffers& bufs,
106 QRhiCommandBuffer& cb, Edge& edge, PassMap& passes);
108SCORE_PLUGIN_GFX_EXPORT
110 RenderList& renderer,
const MeshBuffers& bufs, QRhiCommandBuffer& cb, Edge& edge,
130 ossia::small_vector<Sampler, 8> m_samplers;
140 QRhiBuffer* m_processUBO{};
148 defaultMeshInit(
RenderList& renderer,
const Mesh& mesh, QRhiResourceUpdateBatch& res);
151 void defaultPassesInit(
152 RenderList& renderer,
const Mesh& mesh,
const QShader& v,
const QShader& f,
153 std::span<QRhiShaderResourceBinding> additionalBindings = {});
155 void init(
RenderList& renderer, QRhiResourceUpdateBatch& res)
override;
157 void defaultUBOUpdate(
RenderList& renderer, QRhiResourceUpdateBatch& res);
158 void defaultMeshUpdate(
RenderList& renderer, QRhiResourceUpdateBatch& res);
159 void update(
RenderList& renderer, QRhiResourceUpdateBatch& res,
Edge* edge)
override;
164 void defaultRenderPass(
167 void defaultRenderPass(
171 void runRenderPass(
RenderList&, QRhiCommandBuffer& commands,
Edge& edge)
override;
Generic renderer.
Definition NodeRenderer.hpp:120
Root data model for visual nodes.
Definition score-plugin-gfx/Gfx/Graph/Node.hpp:75
Common base class for most single-pass, simple nodes.
Definition score-plugin-gfx/Gfx/Graph/Node.hpp:204
Renderer for a given node.
Definition NodeRenderer.hpp:11
ossia::geometry_spec geometry
The geometry to use.
Definition NodeRenderer.hpp:83
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:259
Connection between two score::gfx::Port.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:70
Data model for meshes.
Definition Mesh.hpp:23
Port of a score::gfx::Node.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:52
Useful abstraction for storing all the data related to a render target.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:115
Definition Uniforms.hpp:8