Updated the shader sample (fixed "blur", added "edge")
git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/branches/sfml2@1273 4e206d99-4929-0410-ac5d-dfc041789085
This commit is contained in:
parent
7aabc3c3c1
commit
677e0343e2
@ -6,11 +6,15 @@ void main()
|
|||||||
vec2 offx = vec2(offset, 0.0);
|
vec2 offx = vec2(offset, 0.0);
|
||||||
vec2 offy = vec2(0.0, offset);
|
vec2 offy = vec2(0.0, offset);
|
||||||
|
|
||||||
vec4 c0 = texture2D(texture, gl_TexCoord[0].xy);
|
vec4 pixel = texture2D(texture, gl_TexCoord[0].xy) * 1 +
|
||||||
vec4 c1 = texture2D(texture, gl_TexCoord[0].xy - offy);
|
texture2D(texture, gl_TexCoord[0].xy - offx) * 2 +
|
||||||
vec4 c2 = texture2D(texture, gl_TexCoord[0].xy + offy);
|
texture2D(texture, gl_TexCoord[0].xy + offx) * 2 +
|
||||||
vec4 c3 = texture2D(texture, gl_TexCoord[0].xy - offx);
|
texture2D(texture, gl_TexCoord[0].xy - offy) * 2 +
|
||||||
vec4 c4 = texture2D(texture, gl_TexCoord[0].xy + offx);
|
texture2D(texture, gl_TexCoord[0].xy + offy) * 2 +
|
||||||
|
texture2D(texture, gl_TexCoord[0].xy - offx - offy) * 1 +
|
||||||
|
texture2D(texture, gl_TexCoord[0].xy - offx + offy) * 1 +
|
||||||
|
texture2D(texture, gl_TexCoord[0].xy + offx - offy) * 1 +
|
||||||
|
texture2D(texture, gl_TexCoord[0].xy + offx + offy) * 1;
|
||||||
|
|
||||||
gl_FragColor = gl_Color * (c0 * 0.2 + c1 * 0.2 + c2 * 0.2 + c3 * 0.2 + c4 * 0.2);
|
gl_FragColor = gl_Color * (pixel / 13.0);
|
||||||
}
|
}
|
||||||
|
30
samples/bin/datas/shader/edge.sfx
Normal file
30
samples/bin/datas/shader/edge.sfx
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
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;
|
||||||
|
|
||||||
|
float edge = sqrt(hEdge.rgb * hEdge.rgb + vEdge.rgb * vEdge.rgb);
|
||||||
|
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;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user