2013-07-03 22:32:11 -04:00
|
|
|
// Jean-manuel clemencon supertuxkart
|
|
|
|
// Creates a cone lightbeam effect by smoothing edges
|
|
|
|
// Original idea: http://udn.epicgames.com/Three/VolumetricLightbeamTutorial.html
|
|
|
|
// TODO: Soft edges when it intesects geometry
|
2013-07-29 10:40:42 -04:00
|
|
|
// Some artefacts are still visible
|
2013-07-03 22:32:11 -04:00
|
|
|
|
2013-07-29 10:41:13 -04:00
|
|
|
uniform sampler2D tex;
|
2013-07-03 22:32:11 -04:00
|
|
|
uniform float transparency;
|
2013-07-29 10:41:13 -04:00
|
|
|
|
2013-07-03 22:32:11 -04:00
|
|
|
varying vec2 uv;
|
|
|
|
varying vec3 eyeVec;
|
|
|
|
varying vec3 normal;
|
|
|
|
|
|
|
|
void main()
|
|
|
|
{
|
2013-07-29 10:40:42 -04:00
|
|
|
float inter = dot(normal, eyeVec);
|
2013-07-29 10:41:13 -04:00
|
|
|
float m = texture2D(tex, vec2(0.5, uv.y)).r;
|
2013-07-29 10:40:42 -04:00
|
|
|
float alpha = inter * inter * inter * inter * m;
|
2013-07-03 22:32:11 -04:00
|
|
|
|
2013-07-29 10:40:42 -04:00
|
|
|
gl_FragColor = vec4(1.0, 1.0, 0.8, alpha);
|
2013-07-03 22:32:11 -04:00
|
|
|
}
|