]> git.tdb.fi Git - libs/gl.git/blobdiff - source/postprocessor.h
Helper functions for post-processors
[libs/gl.git] / source / postprocessor.h
index 9e4220abd84a24b04330727a18bc0cb8e03deacf..d9489de2c65999a73644df932fe17c26f442d519 100644 (file)
@@ -4,10 +4,14 @@
 namespace Msp {
 namespace GL {
 
+class Mesh;
+class Shader;
 class Texture2D;
 
 /**
-Base class for post-processing effects.
+Base class for post-processing effects.  Post-processors receive the contents
+of the entire framebuffer as a texture and render it back, altering it in the
+process.
 */
 class PostProcessor
 {
@@ -16,10 +20,22 @@ protected:
 public:
        virtual ~PostProcessor() { }
 
-       /**
-       Renders the effect.  Takes the source texture as a parameter.
-       */
-       virtual void render(const Texture2D &, const Texture2D &) = 0;
+       /// Renders the effect.
+       virtual void render(const Texture2D &color, const Texture2D &depth) = 0;
+
+protected:
+       /** Returns a vertex shader suitable for rendering a fullscreen quad.  Input
+       vertices are assumed to be in normalized device coordinates; no transform is
+       done.  The shader provides a varying vec2 texcoord for fragment a shader to
+       access textures. */
+       static Shader &get_fullscreen_vertex_shader();
+
+       /** Returns a mesh consisting of a single quad, covering the entire screen.
+       The vertices are in normalized device coordinates. */
+       static const Mesh &get_fullscreen_quad();
+
+private:
+       static const Mesh &create_fullscreen_quad();
 };
 
 } // namespace GL