diff --git a/gst/gl/effects/gstgleffectssources.c b/gst/gl/effects/gstgleffectssources.c index aeaeb7d07b..6934712e9a 100644 --- a/gst/gl/effects/gstgleffectssources.c +++ b/gst/gl/effects/gstgleffectssources.c @@ -308,13 +308,22 @@ const gchar *hconv9_fragment_source = "uniform sampler2DRect tex;" "uniform float kernel[9];" "void main () {" - " vec2 texturecoord = gl_TexCoord[0].st;" - " texturecoord.s -= 4.0;" + " vec2 texturecoord[10];" + " float s = gl_TexCoord[0].s;" + " float t = gl_TexCoord[0].t;" + " texturecoord[0] = vec2(s-4.0, t);" + " texturecoord[1] = vec2(s-3.0, t);" + " texturecoord[2] = vec2(s-2.0, t);" + " texturecoord[3] = vec2(s-1.0, t);" + " texturecoord[4] = vec2(s, t);" + " texturecoord[5] = vec2(s+1.0, t);" + " texturecoord[6] = vec2(s+2.0, t);" + " texturecoord[7] = vec2(s+3.0, t);" + " texturecoord[8] = vec2(s+4.0, t);" " int i;" " vec4 sum = vec4 (0.0);" " for (i = 0; i < 9; i++) { " - " vec4 neighbor = texture2DRect(tex, texturecoord); " - " ++texturecoord.s;" + " vec4 neighbor = texture2DRect(tex, texturecoord[i]); " " sum += neighbor * kernel[i];" " }" " gl_FragColor = sum;" @@ -326,13 +335,22 @@ const gchar *vconv9_fragment_source = "uniform sampler2DRect tex;" "uniform float kernel[9];" "void main () {" - " vec2 texturecoord = gl_TexCoord[0].st;" - " texturecoord.t -= 4.0;" + " vec2 texturecoord[9];" + " float s = gl_TexCoord[0].s;" + " float t = gl_TexCoord[0].t;" + " texturecoord[0] = vec2(s, t-4.0);" + " texturecoord[1] = vec2(s, t-3.0);" + " texturecoord[2] = vec2(s, t-2.0);" + " texturecoord[3] = vec2(s, t-1.0);" + " texturecoord[4] = vec2(s, t);" + " texturecoord[5] = vec2(s, t+1.0);" + " texturecoord[6] = vec2(s, t+2.0);" + " texturecoord[7] = vec2(s, t+3.0);" + " texturecoord[8] = vec2(s, t+4.0);" " int i;" " vec4 sum = vec4 (0.0);" " for (i = 0; i < 9; i++) { " - " vec4 neighbor = texture2DRect(tex, texturecoord); " - " ++texturecoord.t;" + " vec4 neighbor = texture2DRect(tex, texturecoord[i]);" " sum += neighbor * kernel[i]; " " }" " gl_FragColor = sum;"