diff options
author | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2012-03-14 20:56:58 +0100 |
---|---|---|
committer | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2012-03-14 20:57:23 +0100 |
commit | 5b50311c440dfbb2f8667161d78ca673dfdcff4b (patch) | |
tree | c6114473524eeb86e61245fbb5bc763ad87554ae /wimmel.frag | |
parent | f50956040f3f815d412ca5e97d6c43b1fdde264d (diff) | |
download | cv-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.frag | 27 |
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: |