X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=blur_effect.cpp;h=f2d5d038e6ac57105441c71de2b60e4b8942f0e8;hp=fd81aa86cdbc342cbdf3e231e6f89acbae9fa80d;hb=c5ec91799b647b647c57da323acbf5076f9518de;hpb=0a3c9320e21fc211f0c61a4bda1c6932920c6883 diff --git a/blur_effect.cpp b/blur_effect.cpp index fd81aa8..f2d5d03 100644 --- a/blur_effect.cpp +++ b/blur_effect.cpp @@ -10,8 +10,27 @@ // Must match blur_effect.frag. #define NUM_TAPS 16 + +BlurEffect::BlurEffect() { + hpass = new SingleBlurPassEffect(); + hpass->set_int("direction", SingleBlurPassEffect::HORIZONTAL); + vpass = new SingleBlurPassEffect(); + vpass->set_int("direction", SingleBlurPassEffect::VERTICAL); +} + +void BlurEffect::add_self_to_effect_chain(std::vector *chain) { + hpass->add_self_to_effect_chain(chain); + vpass->add_self_to_effect_chain(chain); +} + +bool BlurEffect::set_float(const std::string &key, float value) { + if (!hpass->set_float(key, value)) { + return false; + } + return vpass->set_float(key, value); +} -BlurEffect::BlurEffect() +SingleBlurPassEffect::SingleBlurPassEffect() : radius(3.0f), direction(HORIZONTAL) { @@ -19,12 +38,12 @@ BlurEffect::BlurEffect() register_int("direction", (int *)&direction); } -std::string BlurEffect::output_fragment_shader() +std::string SingleBlurPassEffect::output_fragment_shader() { return read_file("blur_effect.frag"); } -void BlurEffect::set_uniforms(GLuint glsl_program_num, const std::string &prefix, unsigned *sampler_num) +void SingleBlurPassEffect::set_uniforms(GLuint glsl_program_num, const std::string &prefix, unsigned *sampler_num) { Effect::set_uniforms(glsl_program_num, prefix, sampler_num);