Here's a new effect that I've developed in cooperation with AlexTheDacian.

If you have any feedback, drop them here or (if it's relevant to the development) in the PR:
https://github.com/Warzone2100/warzone2100/pull/770
We are thinking of three trail types, Mega (for super large ICBM type stuff), Mini (for Mini-Rockets etc) and Micro (for cannons etc, not in table).
Note: "Existing" in the table refers to the Mega trail.
The Mega trail is pretty much what we have in the Gif. The Mini trail is "shorter" (fading more quickly) and thinner. The Micro trail should be even more discrete, barely noticeable to give more effect to the shot.
I'm thinking this configuration goes into weapons.json? A new property "smokeTrail" perhaps? Or does it fit in any existing properties.
We would also like to disable the "smoke puffs" for at least some of the projectiles that will have the new smoke trail.
Some work remains:
The trail should "look at the camera" to prevent being rendered as a thin line when looking right at it, or straight from behind. (https://twitter.com/i/status/1241438137668247552) I'm afraid this kind of calculation is beyond me and my non-existent matrix multiplication skills
The trail vertices should be somewhat rotated to match the trajectory angle. Right now the seams are vertical.
The segment frequence shouldn't be constant, but instead depending on the angle of the new tracked position. Long segments should repeat the smoke texture, and following segments should tile seamlessly (ie. begin at non-0)
We can include more of the rendering logic into the shader, namely the dispersion (named expansion in the code) and the whole trail can be rendered in one API call.
The shaders are hard-coded bco my inability to understand how they should be properly included in the existing framework.
Perhaps we should think of a fallback for low-end computers? Or is the effect not considered taxing on performance?
This PR depends on #769
I've temporarily disabled all smoke puffs, in projectile.cpp
Looked a bit at the openGL documentation, apparently you have to set glDepthMask to false when drawing the effects.