summaryrefslogtreecommitdiff
path: root/wimmel.frag
diff options
context:
space:
mode:
authorBenjamin Franzke <benjaminfranzke@googlemail.com>2012-03-14 20:56:58 +0100
committerBenjamin Franzke <benjaminfranzke@googlemail.com>2012-03-14 20:57:23 +0100
commit5b50311c440dfbb2f8667161d78ca673dfdcff4b (patch)
treec6114473524eeb86e61245fbb5bc763ad87554ae /wimmel.frag
parentf50956040f3f815d412ca5e97d6c43b1fdde264d (diff)
downloadcv-5b50311c440dfbb2f8667161d78ca673dfdcff4b.tar.gz
cv-5b50311c440dfbb2f8667161d78ca673dfdcff4b.tar.bz2
cv-5b50311c440dfbb2f8667161d78ca673dfdcff4b.zip
Add wimmel_gl prototype
Uses a shader to search for matching subimages.
Diffstat (limited to 'wimmel.frag')
-rw-r--r--wimmel.frag27
1 files changed, 27 insertions, 0 deletions
diff --git a/wimmel.frag b/wimmel.frag
new file mode 100644
index 0000000..d4cb7ef
--- /dev/null
+++ b/wimmel.frag
@@ -0,0 +1,27 @@
+varying vec2 v_texcoord;
+uniform sampler2D tex;
+uniform vec2 pixelsize;
+uniform vec4 search_rect;
+uniform int barrier;
+
+void
+main()
+{
+ float i, j;
+ float width = search_rect[2];
+ float height = search_rect[3];
+ int diff = 0;
+
+ for (i = 0.0; i < width && diff < barrier; i += pixelsize.x) {
+ for (j = 0.0; j < height && diff < barrier; j += pixelsize.y) {
+ vec4 match = texture2D(tex, search_rect.xy + vec2(i,j));
+ vec4 orig = texture2D(tex, v_texcoord + vec2(i,j));
+
+ diff += int(any(greaterThan(abs(orig - match), vec4(0.2))));
+ }
+ }
+
+ gl_FragColor = vec4(float(diff < barrier), 0.0, 0.0, 0.0);
+}
+
+// vim:ft=c: