+++ /dev/null
-#ifndef MSP_GL_BLOOM_H_
-#define MSP_GL_BLOOM_H_
-
-#include "framebuffer.h"
-#include "mesh.h"
-#include "postprocessor.h"
-#include "texture2d.h"
-#include "texturing.h"
-#include "program.h"
-#include "programdata.h"
-#include "rendertarget.h"
-
-namespace Msp {
-namespace GL {
-
-/**
-The Bloom post-processing effect causes very bright areas of the image to bleed
-into surrounding pixels. Commonly used together with HDR rendering.
-
-The technique used is to gaussian blur the image and then blend the result with
-the original image. With suitable parameters, this effect may also be used as
-a blur filter.
-*/
-class Bloom: public PostProcessor
-{
-public:
- struct Template: public PostProcessor::Template
- {
- class Loader: public DataFile::DerivedObjectLoader<Template, PostProcessor::Template::Loader>
- {
- public:
- Loader(Template &);
- };
-
- float radius;
- float strength;
-
- Template();
-
- virtual Bloom *create(unsigned, unsigned) const;
- };
-
-private:
- RenderTarget *target[2];
- ProgramData common_shdata;
- Program blur_shader;
- ProgramData blur_shdata[2];
- Program combine_shader;
- Texturing combine_texturing;
- RefPtr<Mesh> quad;
-
-public:
- Bloom(unsigned, unsigned);
- ~Bloom();
-
- /** Sets the σ value of the gaussian blur. Values much larger than 4.0 are
- likely to cause artifacts. */
- void set_radius(float);
-
- /** Sets the blend factor between original and blurred images. Larger
- values mean more blurriness. */
- void set_strength(float);
-
- virtual void render(Renderer &, const Texture2D &, const Texture2D &);
-};
-
-} // namespace GL
-} // namespace Msp
-
-#endif