three ways i know of...
Particles, Pixel Shader and Billboard Plains (yeah basically particles but less complex)
you'll need a GOOD fog effect, and you'll want to add to that a good alpha channel ontop of it - you then use the Billboard Plains as if they are particles within a cos-sin contraint around the Y axis withing a few deg which is then affected by the wind direction which should be a global variable that everything adhears to particle wise really.
The major trick is what kinda of smoke you wish to create... Fire smoke begins small grows and just disappates so you'd give the growth of the particle a belzier curve spline for the growth (i.e. the larger it gets the slower it grows at) whilst at the same time give it a lifespan of say no more than 5seconds after which you either fade it or alpha it into non existance, give that an inverse-square to do the trick. After 2*Lifetime you then delete or rather recycle the life span of the partile.
if its from say a tube which spews steam, like say a train's funnel - then from the get go you slowly make it disappear and grow... say giving it around double the lifespan yet at 1/3 the growth rate you'd do for a fire.
and making sure the direction of it is calculated correctly, because there is nothing work that seeing a train's smoke flow straight up when it is suppose to be moving.
well i'm sure you get the idea - its all pretty simple and should never need more than 5-6 particles for the entire effect
Tsu'va Oni Ni Jyuuko Fiori Sei Tau!
One block follows the suit ... the whole suit of blocks is the path ... what have you found?