=
"#version 110\n"
"varying vec2 textCoords;\n"
"uniform sampler2D textureSampler;\n"
"uniform float opacity;\n"
"uniform vec2 rayOrigin;\n"
"uniform float power;\n"
"void main(void) {\n"
" vec4 FragColor = texture2D(textureSampler, textCoords);\n"
" int samples = 120;\n"
" vec2 delta = vec2(textCoords - rayOrigin);\n"
" delta *= 1.0 / float(samples) * 0.99;"
" vec2 coord = textCoords;\n"
" float illuminationDecay = power;\n"
" for(int i=0; i < samples ; i++)\n"
" {\n"
" coord -= delta;\n"
" vec4 texel = texture2D(textureSampler, coord);\n"
" texel *= illuminationDecay * 0.4;\n"
" texel.x *= 80.0 / 255.0;\n"
" texel.y *= 99.0 / 255.0;\n"
" texel.z *= 115.0 / 255.0;\n"
" FragColor += texel;\n"
" illuminationDecay *= power;\n"
" }\n"
" FragColor = clamp(FragColor, 0.0, 1.0);\n"
" gl_FragColor = vec4(FragColor.xyz, opacity);\n"
"}"