X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Feffects%2Fbloom.h;h=30e98f7ee75f95a52e8f3e0ef7764daf380f3876;hb=ae423e6ef278388f92802fbae34b1c7ec339292f;hp=6b10195b873e684d6af7634b85d8dd31a9f05879;hpb=7aaec9a70b8d7733429bec043f8e33e02956f266;p=libs%2Fgl.git diff --git a/source/effects/bloom.h b/source/effects/bloom.h index 6b10195b..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,10 +28,8 @@ public: Loader(Template &); }; - float radius; - float strength; - - Template(); + float radius = 2.0f; + float strength = 0.2f; virtual Bloom *create(unsigned, unsigned) const; }; @@ -43,13 +37,12 @@ public: private: RenderTarget *target[2]; ProgramData common_shdata; - Program blur_shader; + const Program &blur_shader; ProgramData blur_shdata[2]; - Program combine_shader; - Texturing combine_texturing; - RefPtr quad; - RefPtr nearest_sampler; - RefPtr linear_sampler; + const Program &combine_shader; + const Mesh &quad; + const Sampler &nearest_sampler; + const Sampler &linear_sampler; public: Bloom(unsigned, unsigned); @@ -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