summaryrefslogtreecommitdiff
path: root/src/sobel.frag
diff options
context:
space:
mode:
Diffstat (limited to 'src/sobel.frag')
-rw-r--r--src/sobel.frag29
1 files changed, 11 insertions, 18 deletions
diff --git a/src/sobel.frag b/src/sobel.frag
index 9d329f7..dd07bf5 100644
--- a/src/sobel.frag
+++ b/src/sobel.frag
@@ -1,27 +1,20 @@
-#version 120
+#version 130
-varying vec2 texcoord;
+in vec2 texcoord;
uniform sampler2D sampler;
-uniform float width;
-uniform float height;
-
-// Texel offsets
-float off_x = 1/width;
-float off_y = 1/height;
-
void main(void)
{
// http://www.roborealm.com/help/Sobel.php
- vec4 p1 = texture2D(sampler, texcoord - off_x - off_y);
- vec4 p2 = texture2D(sampler, texcoord - off_y);
- vec4 p3 = texture2D(sampler, texcoord + off_x - off_y);
- vec4 p4 = texture2D(sampler, texcoord - off_x );
- vec4 p5 = texture2D(sampler, texcoord );
- vec4 p6 = texture2D(sampler, texcoord + off_x );
- vec4 p7 = texture2D(sampler, texcoord - off_x + off_y);
- vec4 p8 = texture2D(sampler, texcoord + off_y);
- vec4 p9 = texture2D(sampler, texcoord + off_x + off_y);
+ vec4 p1 = textureOffset(sampler, texcoord, ivec2(-1, -1));
+ vec4 p2 = textureOffset(sampler, texcoord, ivec2( 0, -1));
+ vec4 p3 = textureOffset(sampler, texcoord, ivec2( 1, -1));
+ vec4 p4 = textureOffset(sampler, texcoord, ivec2(-1, 0));
+ vec4 p5 = textureOffset(sampler, texcoord, ivec2( 0, 0));
+ vec4 p6 = textureOffset(sampler, texcoord, ivec2( 1, 0));
+ vec4 p7 = textureOffset(sampler, texcoord, ivec2(-1, 1));
+ vec4 p8 = textureOffset(sampler, texcoord, ivec2( 0, 1));
+ vec4 p9 = textureOffset(sampler, texcoord, ivec2( 1, 1));
vec4 Gx = p1+2*p2+p3-p7-2*p8-p9;
vec4 Gy = p3+2*p6+p9-p1-2*p4-p7;