shader language=GLSL fragment~ filter=linear uniform sampler2D rubyTexture; uniform vec2 rubyInputSize; uniform vec2 rubyTextureSize; #define distortion 0.2 vec2 barrelDistortion(vec2 coord) { vec2 cc = coord - 0.5; float dist = dot(cc, cc); return coord + cc * (dist + distortion * dist * dist) * distortion; } void main(void) { vec2 coord = barrelDistortion (gl_TexCoord[0] * rubyTextureSize / rubyInputSize) * rubyInputSize / rubyTextureSize; gl_FragColor = texture2D(rubyTexture, coord); }