Huge real-time smoke in game egine

Hello community,
Let me introduce myself, my name is Valentine and I’m an VFXer!
I am looking for creating huge smoke and perhaps some of you have encountered this kind of problem.

The main criteria are:

  • smoke should look equally good from different distances and angles (main view from ground level)
  • of course this smoke should work as a realtime effect
  • smoke should be natural, not magical or stylized.

I thought about various shaders, but I can’t imagine how they can solve this problem, and about vertex animation and about particles … but what can I say, I have not seen any such effect in modern games.

Thanks for any tips and ideas!

Rough sketch

1 Like

… but what can I say, I have not seen any such effect in modern games.

Military games are full of them. I especially remember the ones in the Battlefield series, because they look really great. Here you can see a setup they used with such an pillar:
https://youtu.be/AfLrkL6PoB0?t=3723

Afaik: They capture a smoke sim as a flipbook with a 6-way “lightmap” and then use particles with those flipbooks.
You can look at this thread on how such an setup works:

I can recommend Embergen for realistic smoke, because they can export everything you need at once. If you are using UE4 and want more styalized looking smoke, I can recommend Fluid Ninja.

Another Method would be to use a big mesh with tessellation and animated WPO (just like you’d do it with oceans), if it should look very thick.

5 Likes

if I had such a task, i probably would start with tesselated geometry + vertex shader.
Im not doing any measurements, but im believe what tesselated geo can be pretty cheap in the end rather than some more classic particle plains, even if cutout texture are using, and also can look realistic.

Maybe even something like:

  1. tesselated geo which will provide main “body” of the smoke.
    And cause its not easy to achieve some “vanishing” of the smoke if its a geometry, i.e. its hard to make something which will look like dense smoke with all that swirlings, which constantly grow and same time dissapear and become more transparent buy evenly spreaded particles in the air, so →
  2. additional classic particles (probably only on bottom side of smoke body) to achieve mostly vanished evenly spreaded smoke.
1 Like

Thanks a lot for these examples and @Mederic repost. I probably want a little big from myself. On video example from Battlefield 5, the smoke where the crashed plane looks blurry and quickly disappearing. Even on the references they are long and have a natural smoke shape - not uniform, turbulence, bends.

I really love EmberGen, and respect its creator, they have done and are doing incredible things to simulate fires, smokes, vapors in real time. But my smoke should be really huge over the gameplay area. That does not allow the use of particles, since their size/count and lifetime will drop FPS.

Big mesh with tessellation and animated WPO

I look in this direction as the most real in my case.

Also here is my search:
https://youtu.be/V2p-e9Ce7P8 - smokes from burning ships, my favorite
https://youtu.be/4r-YtrYGAIQ - some smokes from buildings not so big and blurry
https://youtu.be/jSPj5V1jie0 - extra big explosions and smokes, but very fast disappearing and bit stylize
https://youtu.be/_GNd_HxTJHw - fast disappearing smokes

Thank you @SoundDifferent

Yes, this is my way of thinking too. I have to learn more about vertex shaders to achieve my ideas.
I fully agree with the fact that the particles can be used only on the bottom of the smoke. It should be some particles with smoke and fire/sparks which should masking some issues of tessellated mesh.

As far as I can see, all the examples use the the particle flipbook method I mentioned. The Nuke Mushroom even looks as if it is just a sprite of a nice render.
If you are scared, that this is to performance heavy: if I remember correctly, Battlefield IV had a budget of 2ms for all gameplay VFX and used this method.
But the Budget and approaches can differ from game to game, from scene to scene. If there is just one Building with a huge smoke pillar, I guess you could go nuts.

In an project (that is under NDA) I also used a big mesh (that is split up for better culling) with WPO. But this was more of an artistic choice.
Keep in mind, that tessellation is not supported on all platforms (or at least differently).

Another approach could be the use of parallax rendering like in this blogpost: Real Time VFX Mike: Dark and Stormy

Disclaimer: Is just give general direction because I do not know about the art direction, the scene, the project, the budget nor the target platforms.

1 Like