2011-01-06 16:18:27 +00:00
|
|
|
uniform sampler2D sample;
|
|
|
|
uniform vec2 u_cursor;
|
|
|
|
uniform float u_zoom;
|
|
|
|
uniform float u_radius;
|
|
|
|
uniform vec2 u_textureSize;
|
2007-07-13 13:22:09 +00:00
|
|
|
|
2011-01-06 16:18:27 +00:00
|
|
|
varying vec2 varyingTexCoords;
|
2007-07-13 13:22:09 +00:00
|
|
|
|
2011-01-06 16:18:27 +00:00
|
|
|
#define PI 3.14159
|
2007-07-13 13:22:09 +00:00
|
|
|
|
|
|
|
void main()
|
|
|
|
{
|
2011-01-06 16:18:27 +00:00
|
|
|
vec2 d = u_cursor - varyingTexCoords;
|
|
|
|
float dist = sqrt(d.x*d.x + d.y*d.y);
|
|
|
|
vec2 texcoord = varyingTexCoords;
|
|
|
|
if (dist < u_radius) {
|
|
|
|
float disp = sin(dist / u_radius * PI) * (u_zoom - 1.0) * 20.0;
|
|
|
|
texcoord += d / dist * disp;
|
2007-07-13 13:22:09 +00:00
|
|
|
}
|
|
|
|
|
2011-01-06 16:18:27 +00:00
|
|
|
texcoord = texcoord/u_textureSize;
|
|
|
|
texcoord.t = 1.0 - texcoord.t;
|
|
|
|
gl_FragColor = texture2D(sample, texcoord);
|
2007-07-13 13:22:09 +00:00
|
|
|
}
|
|
|
|
|