]> git.tdb.fi Git - libs/gl.git/blob - source/effects/postprocessor.h
Load various built-in things through Resources
[libs/gl.git] / source / effects / postprocessor.h
1 #ifndef MSP_GL_POSTPROCESSOR_H_
2 #define MSP_GL_POSTPROCESSOR_H_
3
4 #include <msp/datafile/objectloader.h>
5
6 namespace Msp {
7 namespace GL {
8
9 class Mesh;
10 class Renderer;
11 class Resources;
12 class Sampler;
13 class Shader;
14 class Texture2D;
15
16 /**
17 Base class for post-processing effects.  Post-processors receive the contents
18 of the entire framebuffer as a texture and render it back, altering it in the
19 process.
20 */
21 class PostProcessor
22 {
23 public:
24         struct Template
25         {
26                 class Loader: public Msp::DataFile::ObjectLoader<Template>
27                 {
28                 public:
29                         Loader(Template &);
30                 };
31
32                 unsigned size_divisor;
33
34                 Template();
35                 virtual ~Template() { }
36
37                 virtual PostProcessor *create(Resources &, unsigned, unsigned) const = 0;
38         };
39
40 protected:
41         PostProcessor() { }
42 public:
43         virtual ~PostProcessor() { }
44
45         /// Renders the effect.
46         virtual void render(const Texture2D &, const Texture2D &) { }
47
48         virtual void render(Renderer &, const Texture2D &, const Texture2D &);
49 };
50
51 } // namespace GL
52 } // namespace Msp
53
54 #endif