diff options
Diffstat (limited to 'src/sobel.frag')
-rw-r--r-- | src/sobel.frag | 29 |
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; |