X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fbloom.h;h=d8bb61acd24ed8f9d1d643683754ab314b57b74e;hp=2900175ff1f8ac6e34b52dfc994572aeaacbbe74;hb=a4549c55a6d47129bd9e42c6a49a671b759ce6d9;hpb=5172d32d67595ea0b70184fadcfcb8e023cccbc8 diff --git a/source/bloom.h b/source/bloom.h index 2900175f..d8bb61ac 100644 --- a/source/bloom.h +++ b/source/bloom.h @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of libmspgl -Copyright © 2009-2011 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #ifndef MSP_GL_BLOOM_H_ #define MSP_GL_BLOOM_H_ @@ -15,6 +8,7 @@ Distributed under the LGPL #include "texturing.h" #include "program.h" #include "programdata.h" +#include "rendertarget.h" namespace Msp { namespace GL { @@ -29,21 +23,36 @@ a blur filter. */ class Bloom: public PostProcessor { +public: + struct Template: public PostProcessor::Template + { + class Loader: public DataFile::DerivedObjectLoader + { + public: + Loader(Template &); + }; + + float radius; + float strength; + + Template(); + + virtual Bloom *create(unsigned, unsigned) const; + }; + private: - Framebuffer fbo; - Texture2D tex[2]; + RenderTarget *target[2]; + ProgramData common_shdata; Program blur_shader; - ProgramData blur_shdata_common; - ProgramData blur_shdata_x; - ProgramData blur_shdata_y; + ProgramData blur_shdata[2]; Program combine_shader; - ProgramData combine_shdata; Texturing combine_texturing; - Mesh quad; + const 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); @@ -52,7 +61,7 @@ public: values mean more blurriness. */ void set_strength(float); - virtual void render(const Texture2D &, const Texture2D &); + virtual void render(Renderer &, const Texture2D &, const Texture2D &); }; } // namespace GL