Hi,
Im currently trying to make a light trail effect using GLSL. But its more like a comet tail. I did it by mixing the current frame and the previous frame. Here are the steps I'm using:
1. render the current frame normally to a texture
2. mix the texture from current frame and the previous frame (texture4) using the max value, this is the GLSL for this part:
uniform sampler2D tex1;
uniform sampler2D tex2;
uniform float deltaTime;
void main()
{
vec4 color = vec4(0.0, 0.0, 0.0, 1.0);
color.r = texture2D(tex2, gl_TexCoord[0].st).r;
color.g = texture2D(tex2, gl_TexCoord[0].st).g;
color.b = texture2D(tex2, gl_TexCoord[0].st).b;
color.r = color.r - deltaTime * 0.3;
color.g = color.g - deltaTime * 0.3;
color.b = color.b - deltaTime * 0.3;
color.r = max( texture2D(tex1, gl_TexCoord[0].st).r, color.r );
color.g = max( texture2D(tex1, gl_TexCoord[0].st).g, color.g );
color.b = max( texture2D(tex1, gl_TexCoord[0].st).b, color.b );
gl_FragColor = color;
}
since the light fades out by time, i reduce the rgb value by 0.3 per second (deltaTime is the difference between current frame and the previous, sent form c++ code. Draw the result on texture3
3. Redraw texture3 to texture4 since we are going to use this as texture4. No special code used in this one, just a normal texture rendering
texture3 would be the result to render a proper light trail effect and here is the result I have (link to youtube)
">
You might notice that when the object is moving, the trail looks normal. but when it stops, there's a weird fading behaviour on the tail side. Its hard to describe it, since I'm not a native, but you can easily notice it when the object stops moving.
Any idea why it happens? Any info how to render a proper light trail/comet tail effect?
Thanks in advance.