X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=blur_effect.cpp;h=ddf542eec62fea98c362ba726d3b942bb0b61fa7;hp=e945295da641dd565c74b54684be93e158de0022;hb=c0461658ca2abaa10aae42f40ffee7e5128bc7ab;hpb=b5e3174594efe9a920621a68d3b28f5e44676d03 diff --git a/blur_effect.cpp b/blur_effect.cpp index e945295..ddf542e 100644 --- a/blur_effect.cpp +++ b/blur_effect.cpp @@ -8,7 +8,7 @@ #include "util.h" BlurEffect::BlurEffect() - : radius(0.3f) + : radius(3.0f) { register_float("radius", (float *)&radius); } @@ -21,4 +21,24 @@ std::string BlurEffect::output_fragment_shader() void BlurEffect::set_uniforms(GLuint glsl_program_num, const std::string &prefix, unsigned *sampler_num) { Effect::set_uniforms(glsl_program_num, prefix, sampler_num); + + //glActiveTexture(GL_TEXTURE0); + //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 3); + //check_error(); + + set_uniform_float(glsl_program_num, prefix, "pixel_offset", 1.0f / 1280.0f); // FIXME + + // Simple Gaussian weights for now. + float weight[15], total = 0.0f; + for (unsigned i = 0; i < 15; ++i) { + float z = (i - 7.0f) / radius; + weight[i] = exp(-(z*z)); + total += weight[i]; + } + for (unsigned i = 0; i < 15; ++i) { + weight[i] /= total; + printf("%f\n", weight[i]); + } + printf("\n"); + set_uniform_float_array(glsl_program_num, prefix, "weight", weight, 15); }