--- cg_trails.c +++ cg_trails_jpl.c @@ -60,7 +60,9 @@ if( ts->destroyTime > 0 && btb->fadeOutTime ) { - fadeAlpha -= ( cg.time - ts->destroyTime ) / btb->fadeOutTime; + // jpl + // use a float, otherwise we always get alpha 1 or 0! + fadeAlpha -= (float)( cg.time - ts->destroyTime ) / btb->fadeOutTime; if( fadeAlpha < 0.0f ) fadeAlpha = 0.0f; @@ -559,7 +561,11 @@ tb->lastEvalTime = cg.time; // first make sure this beam has enough nodes - if( ts->destroyTime <= 0 ) + // + // jpl: trails that use fadeOutTime have >0 destroyTime, so handle + // this case as well. if >0 destroyTime trails are skipped entirely, + // they're never populated with beams and don't render. + if( ( ts->destroyTime <= 0 ) || ( btb->fadeOutTime > 0 ) ) { nodesToAdd = btb->numSegments - CG_CountBeamNodes( tb ) + 1;