UE4 - Fake Volumetric Smoke & Global Vector Field Turbulence


If you’re in the unreal slackers group, you may have seen this floating around a while back. Otherwise, I’d like to show you guys something I did to test out “PBR” on smoke with a subsurface shader so that light could pass through it. All of the smoke is spawning through GPU particles for performance and the ability to have much higher spawn counts. This most likely isn’t anything that could be practical as of yet in an actual game, but it’s still certainly cool to see!

All turbulent motion of the smoke is controlled through a global vector field that fills the entire room, which is about 216,000 vectors. All of the explosion tendrils are affected by this global vector field as well. The explosions sparks use a local vector field. All of the vector fields were generated with my software VectorayGen.

I also use a high quality particle light to cast the lighting and shadows from the actual fireballl :slight_smile:


Overall, this resulted in some pretty cool RnD!


How does the performance hold up?
This could be useful for VR.

Is the subsurface actually doing any work here? It seems really flat and I would think subsurface only works or at least displays well on meshes with curvature.

My average performance in this map is 80 frames per second with nothing going on. When the particles start going off i get between 45 - 60+ frames per second. Not sure how reliable my counter is, as its from shadow play. This could be useful for VR to a degree. The illusion of depth is given off by sheer amount of smoke particles and by using an opaque material instead of translucent. The edges are masked to give a fuzzy shape.

So subsurface actually does work on this decently well. If you go under the smoke you can see lighting and shadows pass through. If i had a way to diffuse the light, and make it scatter through the smoke more, it may look better, but I’m not sure how i’d do that.

Here’s a screenshot showing what it looks like.

Can you give us a side by side comparison of it with and without the subsurface? Exact same shot?

Not particularly easy to get an exact same shot, but same angle and camera position, with the same parent particle directions.

On the left it shows subsurface, on the right its just a default lit material, which is still masked.