+
+ virtual std::string output_fragment_shader() {
+ assert(false);
+ }
+ virtual void set_uniforms(GLuint glsl_program_num, const std::string &prefix, unsigned *sampler_num) {
+ assert(false);
+ }
+
+ virtual bool needs_many_samples() const { return true; }
+ virtual bool needs_mipmaps() const { return true; }
+ virtual void add_self_to_effect_chain(std::vector<Effect *> *chain);
+ virtual bool set_float(const std::string &key, float value);
+
+private:
+ SingleBlurPassEffect *hpass, *vpass;
+};
+
+class SingleBlurPassEffect : public Effect {
+public:
+ SingleBlurPassEffect();