#include "texturing.h"
#include "program.h"
#include "programdata.h"
+#include "rendertarget.h"
namespace Msp {
namespace GL {
*/
class Bloom: public PostProcessor
{
+public:
+ struct Template: public PostProcessor::Template
+ {
+ class Loader: public DataFile::DerivedObjectLoader<Template, PostProcessor::Template::Loader>
+ {
+ 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[2];
Program combine_shader;
- ProgramData combine_shdata;
Texturing combine_texturing;
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);
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