]> git.sesse.net Git - movit/blobdiff - vignette_effect.cpp
Add a vignette effect.
[movit] / vignette_effect.cpp
diff --git a/vignette_effect.cpp b/vignette_effect.cpp
new file mode 100644 (file)
index 0000000..08dadab
--- /dev/null
@@ -0,0 +1,33 @@
+#define GL_GLEXT_PROTOTYPES 1
+
+#include <math.h>
+#include <GL/gl.h>
+#include <GL/glext.h>
+
+#include "vignette_effect.h"
+#include "util.h"
+
+VignetteEffect::VignetteEffect()
+       : center(0.5f, 0.5f),
+         radius(0.3f),
+         inner_radius(0.3f)
+{
+       register_vec2("center", (float *)&center);
+       register_float("radius", (float *)&radius);
+       register_float("inner_radius", (float *)&inner_radius);
+}
+
+std::string VignetteEffect::output_glsl()
+{
+       return read_file("vignette_effect.glsl");
+}
+
+void VignetteEffect::set_uniforms(GLhandleARB glsl_program_num, const std::string &prefix)
+{
+       Effect::set_uniforms(glsl_program_num, prefix);
+
+       set_uniform_float(glsl_program_num, prefix, "inv_radius", 1.0f / radius);
+
+       Point2D aspect(16.0f / 9.0f, 1.0f);  // FIXME
+       set_uniform_vec2(glsl_program_num, prefix, "aspect_correction", (float *)&aspect);
+}