| 1234567891011121314151617181920212223242526272829303132333435 |
- // Scene buffer
- uniform sampler2D tex0;
- uniform float rt_w = 1280;
- uniform float rt_h = 720;
- // Swirl effect parameters
- uniform float radius = 400.0;
- uniform float angle = 0.3;
- uniform vec2 center = vec2(800.0, 300.0);
- vec4 PostFX(sampler2D tex, vec2 uv)
- {
- vec2 texSize = vec2(rt_w, rt_h);
- vec2 tc = uv * texSize;
- tc -= center;
- float dist = length(tc);
- if (dist < radius)
- {
- float percent = (radius - dist) / radius;
- float theta = percent * percent * angle * 8.0;
- float s = sin(theta);
- float c = cos(theta);
- tc = vec2(dot(tc, vec2(c, -s)), dot(tc, vec2(s, c)));
- }
- tc += center;
- vec3 color = texture2D(tex0, tc / texSize).rgb;
- return vec4(color, 1.0);
- }
- void main (void)
- {
- vec2 uv = gl_TexCoord[0].st;
- gl_FragColor = PostFX(tex0, uv);
- }
|