mirror of
https://github.com/SFML/SFML.git
synced 2024-12-02 00:01:05 +08:00
fb543957ee
git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/branches/sfml2@1275 4e206d99-4929-0410-ac5d-dfc041789085
32 lines
1.4 KiB
Plaintext
32 lines
1.4 KiB
Plaintext
uniform sampler2D texture;
|
|
uniform float threshold;
|
|
|
|
void main()
|
|
{
|
|
const float offset = 1.0 / 512.0;
|
|
vec2 offx = vec2(offset, 0.0);
|
|
vec2 offy = vec2(0.0, offset);
|
|
|
|
vec4 hEdge = texture2D(texture, gl_TexCoord[0].xy - offy) * -2.0 +
|
|
texture2D(texture, gl_TexCoord[0].xy + offy) * 2.0 +
|
|
texture2D(texture, gl_TexCoord[0].xy - offx - offy) * -1.0 +
|
|
texture2D(texture, gl_TexCoord[0].xy - offx + offy) * 1.0 +
|
|
texture2D(texture, gl_TexCoord[0].xy + offx - offy) * -1.0 +
|
|
texture2D(texture, gl_TexCoord[0].xy + offx + offy) * 1.0;
|
|
|
|
vec4 vEdge = texture2D(texture, gl_TexCoord[0].xy - offx) * 2.0 +
|
|
texture2D(texture, gl_TexCoord[0].xy + offx) * -2.0 +
|
|
texture2D(texture, gl_TexCoord[0].xy - offx - offy) * 1.0 +
|
|
texture2D(texture, gl_TexCoord[0].xy - offx + offy) * -1.0 +
|
|
texture2D(texture, gl_TexCoord[0].xy + offx - offy) * 1.0 +
|
|
texture2D(texture, gl_TexCoord[0].xy + offx + offy) * -1.0;
|
|
|
|
vec3 result = sqrt(hEdge.rgb * hEdge.rgb + vEdge.rgb * vEdge.rgb);
|
|
float edge = length(result);
|
|
if (edge > threshold)
|
|
gl_FragColor.rgb = vec3(0, 0, 0);
|
|
else
|
|
gl_FragColor.rgb = vec3(1, 1, 1);
|
|
gl_FragColor.a = gl_Color.a * texture2D(texture, gl_TexCoord[0].xy).a;
|
|
}
|