trimming down render time on volumetrics?

So, I have been invited to do VFX on a fellow student project. It’s a great oppertunity for me, and I look forward to working with one of my favorite people on campus. One of the things he will be needing is a rolling thunderstorm.

So I set up a pretty nice looking particle driven smoke sim, and I am really very happy with it.

The trouble is, I know none of us will have the budget to render this thing at 4 hours per frame!

I am already pushing the samples low at around 60, and even with that we’ll probably have to do some noise reduction once color correction is applied.

If I change the volume bounce, I loose too much shading (though, maybe I could fake something with with light path?).

Does anyone have any pointers or a tutorial for optimizing this? Bake time is OK, but my render times are way too long.

If Blender isn’t the best tool for this, what else should I be looking into? I’m at a position that I can learn new tools, so about anything with a reasonable student discount and preferably with good render farm support would work.

I chose Blender because my render farm supports it, and it’d be easy to set up my own farm at school, but this doesn’t do much good if a single sequence will render in 4000 hours or cost $1200. I am currently looking into Maya fluid with Maya internal, Mental Ray, Renderman, Maxwell and maybe Guerrilla, Arnold or Clarisse if I can get VDB to work. Houdini/Mantra is definitely on my radar and it’s something I have to learn anyway, but the learning curve there is pretty significant. Krakatoa is probably too expensive, especially if I end up buying Houdini for the project.

Volume shading in cycles is still quite young. It is constantly getting faster, but it may not be ideal in your case. That said:

Setting volume bounces to zero makes a huge difference in reducing noise, in my experience. Though you’re right – it also reduces the subtlety of the shading. In my experience, you can make up for that with some well-placed lighting…

Have you looked at your “Step Size” setting under the Volume Sampling tab of the Render Properties? By default that is set to 0.10. If you change that to, say, 1.0 your render time will be reduced dramatically. but the detail in the smoke will be compromised. This is a setting that will change from project to project, depending on your needs. Overall you want it as large as you can get away with. In most cases, that’s around 0.10, but you might be able to increase that.

If you want to render tests, just pipe an emit shader ONLY (with the density acting as the color or strength) into your volume output. This approach is super fast, though in the end you will still need to render with Absorption/Scatter shaders to get a “smoke” look. But Emission is great for tests, since the number of samples doesn’t matter nearly as much (drop the samples to 10 or so). Do the Light-Path trick to make it even a bit faster:


-Use branched path tracing for volumetrics, it is MUCH faster at clearing volume noise. (due to sampling all lights and the ability to trace several rays per sample for multiple scattering, if you are using it)

-Speaking of multiple scattering, can you get the look you want without it? (volume bounces = 0)? That will save a lot of noise and render time if you can.

-You can implement a fairly simple empty-space optimization in the shader, which will improve speed a good bit:



This will prevent running the volume shader unless the smoke density is above a certain threshold. Should make the empty parts of your domain render very quickly.

Thanks, J_the_Ninja – that’s a terrific tip!

Thanks for all your input, I will keep it all in mind.

I think though I am going with Renderman or Mental Ray using Maya Fluids and/or Bifrost Aero for this one.