Light trail using GLSL

Started by
1 comment, last by BLM768 11 years, 2 months ago

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.

Advertisement

still no luck figuring this problem.

help anyone? :)

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.

This topic is closed to new replies.

Advertisement