Lightmetrica  0.0.1.50dbee3 (yosakoi)
 All Classes Functions Variables Typedefs Enumerations Enumerator
renderer.h
1 /*
2  Lightmetrica : A research-oriented renderer
3 
4  Copyright (c) 2014 Hisanari Otsu
5 
6  This program is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #pragma once
21 #ifndef LIB_LIGHTMETRICA_RENDERER_H
22 #define LIB_LIGHTMETRICA_RENDERER_H
23 
24 #include "component.h"
25 #include <boost/signals2.hpp>
26 
27 LM_NAMESPACE_BEGIN
28 
29 class Assets;
30 class Scene;
31 class ConfigNode;
32 class RenderProcess;
34 
39 class Renderer : public Component
40 {
41 public:
42 
43  LM_COMPONENT_INTERFACE_DEF("renderer");
44 
45 public:
46 
47  Renderer() {}
48  virtual ~Renderer() {}
49 
50 private:
51 
52  LM_DISABLE_COPY_AND_MOVE(Renderer);
53 
54 public:
55 
60  virtual std::string Type() const = 0;
61 
71  virtual bool Configure(const ConfigNode& node, const Assets& assets, const Scene& scene, const RenderProcessScheduler& sched) = 0;
72 
81  virtual bool Preprocess(const Scene& scene, const RenderProcessScheduler& sched) = 0;
82 
91  virtual bool Postprocess(const Scene& scene, const RenderProcessScheduler& sched) const = 0;
92 
103  virtual RenderProcess* CreateRenderProcess(const Scene& scene, int threadID, int numThreads) = 0;
104 
105 public:
106 
112  virtual boost::signals2::connection Connect_ReportProgress(const std::function<void (double, bool)>& func) = 0;
113 
114 };
115 
116 LM_NAMESPACE_END
117 
118 #endif // LIB_LIGHTMETRICA_RENDERER_H
Definition: component.h:45
Definition: renderer.h:39
virtual bool Postprocess(const Scene &scene, const RenderProcessScheduler &sched) const =0
virtual bool Preprocess(const Scene &scene, const RenderProcessScheduler &sched)=0
virtual RenderProcess * CreateRenderProcess(const Scene &scene, int threadID, int numThreads)=0
Definition: scene.h:47
Definition: assets.h:39
Definition: renderproc.h:41
virtual std::string Type() const =0
Definition: confignode.h:37
virtual boost::signals2::connection Connect_ReportProgress(const std::function< void(double, bool)> &func)=0
Definition: sched.h:52
virtual bool Configure(const ConfigNode &node, const Assets &assets, const Scene &scene, const RenderProcessScheduler &sched)=0