diff options
Diffstat (limited to 'shaders/glsl330/swirl.fs')
| -rw-r--r-- | shaders/glsl330/swirl.fs | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/shaders/glsl330/swirl.fs b/shaders/glsl330/swirl.fs new file mode 100644 index 00000000..80c16cc9 --- /dev/null +++ b/shaders/glsl330/swirl.fs @@ -0,0 +1,46 @@ +#version 330 + +// Input vertex attributes (from vertex shader) +in vec2 fragTexCoord; +in vec4 fragColor; + +// Input uniform values +uniform sampler2D texture0; +uniform vec4 fragTintColor; + +// Output fragment color +out vec4 finalColor; + +// NOTE: Add here your custom variables + +const float renderWidth = 800.0; // HARDCODED for example! +const float renderHeight = 480.0; // Use uniforms instead... + +float radius = 250.0; +float angle = 0.8; + +uniform vec2 center = vec2(200.0, 200.0); + +void main() +{ + vec2 texSize = vec2(renderWidth, renderHeight); + vec2 tc = fragTexCoord*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 = texture(texture0, tc/texSize).rgb; + + finalColor = vec4(color, 1.0);; +}
\ No newline at end of file |
