Sign in to follow this  
svnstrk

Light trail using GLSL

Recommended Posts

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)

 

 http://www.youtube.com/watch?v=QPaLLKkO7Yc&feature=youtu.be

 

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. 

Share this post


Link to post
Share on other sites
I think that part of the problem may be that you're just using basic alpha blending, which can darken parts of the image (hence the dark crescent that appears as the trail fades), whereas a real-life light trail would always lighten the image (relative to a rendering with no trails). As far as fixing it goes, I'm not totally sure what would work best, but try using some additive blending (adding a certain fraction of the last frame to the current one) instead of averaging. You'll want to clamp the value, though; otherwise a stationary light would just keep getting brighter and brighter.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this