X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbloom.h;h=6b10195b873e684d6af7634b85d8dd31a9f05879;hb=860aec7bfaabbad139d27dd7f4738984276e6676;hp=957febb20923670ebe53bd99aeb6b31de4faa059;hpb=d1e3975c163694d7bca6417463462be950019e5e;p=libs%2Fgl.git diff --git a/source/bloom.h b/source/bloom.h index 957febb2..6b10195b 100644 --- a/source/bloom.h +++ b/source/bloom.h @@ -8,6 +8,7 @@ #include "texturing.h" #include "program.h" #include "programdata.h" +#include "rendertarget.h" namespace Msp { namespace GL { @@ -22,19 +23,37 @@ 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[2]; - Texture2D tex[2]; + RenderTarget *target[2]; + ProgramData common_shdata; Program blur_shader; - ProgramData blur_shdata_common; ProgramData blur_shdata[2]; Program combine_shader; - ProgramData combine_shdata; Texturing combine_texturing; - const Mesh &quad; + RefPtr quad; + RefPtr nearest_sampler; + RefPtr linear_sampler; public: Bloom(unsigned, unsigned); + ~Bloom(); /** Sets the σ value of the gaussian blur. Values much larger than 4.0 are likely to cause artifacts. */