#ifndef MSP_GL_POSTPROCESSOR_H_
#define MSP_GL_POSTPROCESSOR_H_
+#include <msp/datafile/objectloader.h>
+
namespace Msp {
namespace GL {
class Mesh;
+class Renderer;
class Shader;
class Texture2D;
*/
class PostProcessor
{
+public:
+ struct Template
+ {
+ class Loader: public Msp::DataFile::ObjectLoader<Template>
+ {
+ public:
+ Loader(Template &);
+ };
+
+ unsigned size_divisor;
+
+ Template();
+ virtual ~Template() { }
+
+ virtual PostProcessor *create(unsigned, unsigned) const = 0;
+ };
+
protected:
PostProcessor() { }
public:
virtual ~PostProcessor() { }
/// Renders the effect.
- virtual void render(const Texture2D &color, const Texture2D &depth) = 0;
+ virtual void render(const Texture2D &, const Texture2D &) { }
+
+ virtual void render(Renderer &, const Texture2D &, const Texture2D &);
protected:
/** Returns a vertex shader suitable for rendering a full-screen quad.