Loading [MathJax]/extensions/TeX/AMSsymbols.js
Radium Engine  1.5.29
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
DataflowRenderer.hpp
1#pragma once
2#include <Dataflow/RaDataflow.hpp>
3
12#include <Core/Resources/Resources.hpp>
13#include <Engine/Rendering/Renderer.hpp>
14
15#include <Dataflow/Rendering/Renderer/RenderingGraph.hpp>
16
17namespace globjects {
18class Framebuffer;
19}
20
21namespace Ra {
22namespace Dataflow {
23namespace Rendering {
24namespace Renderer {
25
28extern int DataflowRendererMagic;
29
57{
58
59 public:
63 struct RA_DATAFLOW_API RenderGraphController : Ra::Core::Resources::ObservableVoid {
64
66 virtual ~RenderGraphController() = default;
69 RenderGraphController& operator=( RenderGraphController&& ) = delete;
70 RenderGraphController& operator=( const RenderGraphController& ) = delete;
71
74 virtual void configure( DataflowRenderer* renderer, int w, int h );
75
78 virtual void resize( int w, int h );
79
82 virtual void update( const Ra::Engine::Data::ViewingParameters& renderData );
83
84 [[nodiscard]] virtual std::string getRendererName() const { return "Dataflow Renderer"; }
85
86 void loadGraph( const std::string& filename );
87 void saveGraph( const std::string& filename );
88 void resetGraph();
90 void defferedLoadGraph( const std::string& filename );
91
94 std::unique_ptr<RenderingGraph> m_renderGraph { nullptr };
95
96 private:
97 int m_width { -1 };
98 int m_height { -1 };
100 std::string m_graphToLoad;
101 };
102
104 explicit DataflowRenderer( RenderGraphController& controller );
105
108
109 [[nodiscard]] std::string getRendererName() const override { return m_name; }
110
111 bool buildRenderTechnique( Ra::Engine::Rendering::RenderObject* ro ) const override;
112
114 Ra::Engine::Scene::LightManager* getLightManager() { return m_lightmanagers[0]; }
115
117 RenderGraphController& getController() { return m_controller; }
118
120 // void setDisplayNode( DisplaySinkNode* displayNode );
121
123 // void loadFromJson( const std::string& jsonFilePath );
124
126 // const std::string& getJsonFilePath() { return m_jsonFilePath; }
127
129 // void setJsonFilePath( const std::string& jsonFilePath ) { m_jsonFilePath = jsonFilePath; }
130
132 // void compileRenderGraph();
133
135 // void reloadRenderGraphFromJson();
136
138 /*
139 void signalReloadJson( bool resetPath = false ) {
140 m_reloadJson = true;
141 m_resetPath = resetPath;
142 }
143 */
144
145 protected:
146 void initializeInternal() override;
147 void resizeInternal() override;
148 void updateStepInternal( const Ra::Engine::Data::ViewingParameters& renderData ) override;
149 void renderInternal( const Ra::Engine::Data::ViewingParameters& renderData ) override;
150 void postProcessInternal( const Ra::Engine::Data::ViewingParameters& renderData ) override;
151 void debugInternal( const Ra::Engine::Data::ViewingParameters& renderData ) override;
152 void uiInternal( const Ra::Engine::Data::ViewingParameters& renderData ) override;
153
158 virtual void initResources();
159
160 public:
162 return m_sharedTextures;
163 }
164
165 inline globjects::Framebuffer* postprocessFbo() { return m_postprocessFbo.get(); }
166
167 inline std::vector<RenderObjectPtr>* allRenderObjects() { return &m_fancyRenderObjects; }
168
169 inline std::vector<const Ra::Engine::Scene::Light*>* getLights() { return &m_lights; }
170
171 private:
173 void graphChanged();
174
175 bool m_graphChanged { false };
176
179
182
184 RenderGraphController& m_controller;
185
187 std::string m_name { "RenderGraph renderer" };
188
190 Ra::Engine::Data::Texture* m_colorTexture { nullptr };
191
194
197};
198
199} // namespace Renderer
200} // namespace Rendering
201} // namespace Dataflow
202} // namespace Ra
std::string getRendererName() const override
Get the name of the renderer, e.g to be displayed in the UI.
RenderGraphController & getController()
Access the controller.
~DataflowRenderer() override
The destructor is used to destroy the render graph.
Ra::Engine::Scene::LightManager * getLightManager()
Access the default light manager.
Represent a Texture of the engine.
Definition Texture.hpp:120
hepler function to manage enum as underlying types in VariableSet
Definition Cage.cpp:4
the set of viewing parameters extracted from the camera and given to the renderer