Files
oak-editor/effects/bulge.frag
T
2018-11-16 09:45:18 +11:00

32 lines
783 B
GLSL

#version 120
uniform sampler2D tex0;
varying vec2 vTexCoord;
const float PI = 3.1415926535;
uniform vec2 resolution;
uniform float amount;
uniform float xoff;
uniform float yoff;
vec2 distort(vec2 p, vec2 offset) {
float theta = atan(p.y, p.x);
float radius = length(p);
radius = pow(radius, (1.0+amount*0.01));
p.x = radius * cos(theta) + offset.x;
p.y = radius * sin(theta) + offset.y;
return 0.5 * (p + 1.0);
}
void main(void) {
vec2 offset = vec2(xoff/resolution.x, yoff/resolution.y);
vec2 xy = 2.0 * vTexCoord - 1.0 - offset;
vec2 uv;
float d = length(xy);
uv = distort(xy, offset);
if (uv.x >= 0.0 && uv.x <= 1.0 && uv.y >= 0.0 && uv.y <= 1.0) {
gl_FragColor = texture2D(tex0, uv);
} else {
discard;
}
}