diff --git a/samples/bin/datas/shader/blur.sfx b/samples/bin/datas/shader/blur.sfx index 4c9f11285..c856e3320 100644 --- a/samples/bin/datas/shader/blur.sfx +++ b/samples/bin/datas/shader/blur.sfx @@ -6,11 +6,15 @@ void main() vec2 offx = vec2(offset, 0.0); vec2 offy = vec2(0.0, offset); - vec4 c0 = texture2D(texture, gl_TexCoord[0].xy); - vec4 c1 = texture2D(texture, gl_TexCoord[0].xy - offy); - vec4 c2 = texture2D(texture, gl_TexCoord[0].xy + offy); - vec4 c3 = texture2D(texture, gl_TexCoord[0].xy - offx); - vec4 c4 = texture2D(texture, gl_TexCoord[0].xy + offx); + vec4 pixel = texture2D(texture, gl_TexCoord[0].xy) * 1 + + texture2D(texture, gl_TexCoord[0].xy - offx) * 2 + + texture2D(texture, gl_TexCoord[0].xy + offx) * 2 + + texture2D(texture, gl_TexCoord[0].xy - offy) * 2 + + 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); } diff --git a/samples/bin/datas/shader/edge.sfx b/samples/bin/datas/shader/edge.sfx new file mode 100644 index 000000000..ce0d99c61 --- /dev/null +++ b/samples/bin/datas/shader/edge.sfx @@ -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; +}