27 lines
986 B
GLSL
27 lines
986 B
GLSL
uniform sampler2D tDiffuse;
|
|
uniform float threshold;
|
|
uniform vec2 aspect;
|
|
varying vec2 vUv;
|
|
|
|
void main() {
|
|
float w = (1.0 / aspect.x);
|
|
float h = (1.0 / aspect.y);
|
|
|
|
vec4 n[9];
|
|
n[0] = texture2D(tDiffuse, vUv + vec2( -w, -h));
|
|
n[1] = texture2D(tDiffuse, vUv + vec2(0.0, -h));
|
|
n[2] = texture2D(tDiffuse, vUv + vec2( w, -h));
|
|
n[3] = texture2D(tDiffuse, vUv + vec2( -w, 0.0));
|
|
n[4] = texture2D(tDiffuse, vUv);
|
|
n[5] = texture2D(tDiffuse, vUv + vec2( w, 0.0));
|
|
n[6] = texture2D(tDiffuse, vUv + vec2( -w, h));
|
|
n[7] = texture2D(tDiffuse, vUv + vec2(0.0, h));
|
|
n[8] = texture2D(tDiffuse, vUv + vec2( w, h));
|
|
|
|
vec4 sobel_horizEdge = n[2] + (2.0 * n[5]) + n[8] - (n[0] + (2.0 * n[3]) + n[6]);
|
|
vec4 sobel_vertEdge = n[0] + (2.0 * n[1]) + n[2] - (n[6] + (2.0 * n[7]) + n[8]);
|
|
vec3 sobel = sqrt((sobel_horizEdge.rgb * sobel_horizEdge.rgb) + (sobel_vertEdge.rgb * sobel_vertEdge.rgb));
|
|
|
|
gl_FragColor = (length(sobel) > threshold) ? vec4(vec3(1.0), 0.0) : vec4(0.0);
|
|
}
|