Jump to content
  • Advertisement
Sign in to follow this  
svnstrk

Light trail using GLSL

This topic is 1965 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

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)

 

 

">

 

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
Advertisement
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
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!