]> git.tdb.fi Git - libs/gl.git/blob - source/bloom.h
Remove useless declarations of main() from shaders
[libs/gl.git] / source / bloom.h
1 #ifndef MSP_GL_BLOOM_H_
2 #define MSP_GL_BLOOM_H_
3
4 #include "framebuffer.h"
5 #include "mesh.h"
6 #include "postprocessor.h"
7 #include "texture2d.h"
8 #include "texturing.h"
9 #include "program.h"
10 #include "programdata.h"
11 #include "rendertarget.h"
12
13 namespace Msp {
14 namespace GL {
15
16 /**
17 The Bloom post-processing effect causes very bright areas of the image to bleed
18 into surrounding pixels.  Commonly used together with HDR rendering.
19
20 The technique used is to gaussian blur the image and then blend the result with
21 the original image.  With suitable parameters, this effect may also be used as
22 a blur filter.
23 */
24 class Bloom: public PostProcessor
25 {
26 private:
27         RenderTarget *target[2];
28         ProgramData common_shdata;
29         Program blur_shader;
30         ProgramData blur_shdata[2];
31         Program combine_shader;
32         Texturing combine_texturing;
33         const Mesh &quad;
34
35 public:
36         Bloom(unsigned, unsigned);
37         ~Bloom();
38
39         /** Sets the σ value of the gaussian blur.  Values much larger than 4.0 are
40         likely to cause artifacts. */
41         void set_radius(float);
42
43         /** Sets the blend factor between original and blurred images.  Larger
44         values mean more blurriness. */
45         void set_strength(float);
46
47         virtual void render(Renderer &, const Texture2D &, const Texture2D &);
48 };
49
50 } // namespace GL
51 } // namespace Msp
52
53 #endif