X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Feffects%2Fbloom.h;h=30e98f7ee75f95a52e8f3e0ef7764daf380f3876;hb=190a7e11237351f6b730c28f7b16f183e8adc69c;hp=27584886824ae3dc7ed8a255eee9c9fa0cf625ca;hpb=9a63244c1342337915c4610401a24c09fa72cc3d;p=libs%2Fgl.git diff --git a/source/effects/bloom.h b/source/effects/bloom.h index 27584886..30e98f7e 100644 --- a/source/effects/bloom.h +++ b/source/effects/bloom.h @@ -1,25 +1,21 @@ #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 { +class Program; + /** -The Bloom post-processing effect causes very bright areas of the image to bleed -into surrounding pixels. Commonly used together with HDR rendering. +Bleeds very bright areas of the image into surrounding pixels to simulate +optical imperfections in lenses. -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. +The input image is blurred with a gaussian kernel to simulate the Airy disc +produced by a lens, then the blurred image is blended with the original. */ class Bloom: public PostProcessor { @@ -32,12 +28,10 @@ public: Loader(Template &); }; - float radius; - float strength; - - Template(); + float radius = 2.0f; + float strength = 0.2f; - virtual Bloom *create(Resources &, unsigned, unsigned) const; + virtual Bloom *create(unsigned, unsigned) const; }; private: @@ -49,10 +43,9 @@ private: const Mesh &quad; const Sampler &nearest_sampler; const Sampler &linear_sampler; - Texturing combine_texturing; public: - Bloom(Resources &, unsigned, unsigned); + Bloom(unsigned, unsigned); ~Bloom(); /** Sets the σ value of the gaussian blur. Values much larger than 4.0 are @@ -64,6 +57,8 @@ public: void set_strength(float); virtual void render(Renderer &, const Texture2D &, const Texture2D &); + + virtual void set_debug_name(const std::string &); }; } // namespace GL