uniform float s; #vertex void main() { gl_TexCoord[0] = gl_MultiTexCoord0; gl_Position = ftransform(); } #fragment uniform sampler2D tex; void main() { vec2 tc = gl_TexCoord[0].xy - 0.5; float r = sqrt(tc.x*tc.x + tc.y*tc.y); tc /= r; r = sin(r * s) / s; gl_FragColor = texture2D(tex, (tc * r) + 0.5); }