2#include <Gfx/Graph/Node.hpp>
24 inputAboutToFinish(
RenderList& renderer,
const Port& p, QRhiResourceUpdateBatch*&);
26 virtual void init(
RenderList& renderer, QRhiResourceUpdateBatch& res) = 0;
27 virtual void update(
RenderList& renderer, QRhiResourceUpdateBatch& res,
Edge* edge)
30 virtual void runInitialPasses(
31 RenderList&, QRhiCommandBuffer& commands, QRhiResourceUpdateBatch*& res,
34 virtual void runRenderPass(
RenderList&, QRhiCommandBuffer& commands,
Edge& edge);
38 void checkForChanges()
40 materialChanged = node.hasMaterialChanged(materialChangedIndex);
41 geometryChanged = node.hasGeometryChanged(geometryChangedIndex);
42 renderTargetSpecsChanged
43 = node.hasRenderTargetChanged(renderTargetSpecsChangedIndex);
49 bool materialChanged{
false};
50 bool geometryChanged{
false};
51 bool renderTargetSpecsChanged{
false};
54 int64_t materialChangedIndex{-1};
55 int64_t geometryChangedIndex{-1};
56 int64_t renderTargetSpecsChangedIndex{-1};
59using PassMap = ossia::small_vector<std::pair<Edge*, Pipeline>, 2>;
60SCORE_PLUGIN_GFX_EXPORT
61void defaultPassesInit(
62 PassMap& passes,
const std::vector<Edge*>& edges,
RenderList& renderer,
63 const Mesh& mesh,
const QShader& v,
const QShader& f, QRhiBuffer* processUBO,
64 QRhiBuffer* matUBO,
const std::vector<Sampler>& samplers,
65 std::span<QRhiShaderResourceBinding> additionalBindings = {});
67SCORE_PLUGIN_GFX_EXPORT
68void defaultRenderPass(
69 RenderList& renderer,
const Mesh& mesh,
const MeshBuffers& bufs,
70 QRhiCommandBuffer& cb, Edge& edge, PassMap& passes);
72SCORE_PLUGIN_GFX_EXPORT
74 RenderList& renderer,
const MeshBuffers& bufs, QRhiCommandBuffer& cb, Edge& edge,
94 std::vector<Sampler> m_samplers;
104 QRhiBuffer* m_processUBO{};
112 defaultMeshInit(
RenderList& renderer,
const Mesh& mesh, QRhiResourceUpdateBatch& res);
115 void defaultPassesInit(
116 RenderList& renderer,
const Mesh& mesh,
const QShader& v,
const QShader& f,
117 std::span<QRhiShaderResourceBinding> additionalBindings = {});
119 void init(
RenderList& renderer, QRhiResourceUpdateBatch& res)
override;
121 void defaultUBOUpdate(
RenderList& renderer, QRhiResourceUpdateBatch& res);
122 void defaultMeshUpdate(
RenderList& renderer, QRhiResourceUpdateBatch& res);
123 void update(
RenderList& renderer, QRhiResourceUpdateBatch& res,
Edge* edge)
override;
128 void defaultRenderPass(
131 void defaultRenderPass(
135 void runRenderPass(
RenderList&, QRhiCommandBuffer& commands,
Edge& edge)
override;
Generic renderer.
Definition NodeRenderer.hpp:84
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:227
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
Utility to represent a shader material following score conventions.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:255
Connection between two score::gfx::Port.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:66
Data model for meshes.
Definition Mesh.hpp:23
Port of a score::gfx::Node.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:48
Useful abstraction for storing all the data related to a render target.
Definition score-plugin-gfx/Gfx/Graph/Utils.hpp:111