I just want to know if I am understanding this correctly.

Lets pretend my domain is 18 vox wide, if I want Cycles to render all the way through, do I need to set the volume samples to 18?

Below I have it set to 2, does this mean it will only go 2 voxels deep and then stop?

enter image description here


1 Answer 1


No, you are confusing volume samples, volume bounce depth, and ray-marching steps, which are all different controls.

To start with, a short overview of how volume rendering works. As a ray passes through the volume, it is checked at a series of steps via a process known as "ray marching". Here's an example illustration, from this answer by the user sambler:

example of ray marching

When using the volume scatter shader, there is a chance that the ray will experience a "scattering event" at each step. The higher the density, the greater the chance of a scattering event. For the volume absorption shader, the energy of the ray is reduced at each step. For the emission shader, the energy of the ray is increased at each step.

Ok, now, a breakdown of volume step size, volume bounces, and volume samples.

Volume Bounces

The control you pointed to is the volume bounces control, also sometimes called volume depth. This controls the number of bounces of multiple scattering that will be computed. Depth of 0 disables multiple scattering, leaving you with single scattering: Volume scatter shaders will bounce once, and after that the ray will exit the volume regardless of if it should experience another scatter event. If volume depth is non-zero, it is the number of additional scatter events a ray is allowed to experience.

Multiple scatterings are needed to for some physically accurate lighting situations, such as making clouds appear white instead of gray. However, each bounce takes computing time, and increases the chance for noise. So this control limits how many bounces you can have.

Volume depth example

In most cases you will want to set this to 0 or 1. Higher values may be needed, but can increase render times a lot. See my answer here for some methods for dealing with bright volumes: Realistic smoke?

Volume Steps

Volume steps are controlled from the Geometry panel: location of the volume step controls

The "max steps" control is roughly what you were envisioning in your question: it's the maximum number of steps the ray is allowed to take before it gets shut down. However, the steps are not automatically snapped to individual voxels, but rather are a simple distance control. "Step size" is in meters, even though for some reason it does not display units. Step size is a set as a world-space distance rather than a number of voxels because volumes don't need to have voxels. In fact, as Cycles sees it, voxels are something that 3D textures, not volumes, have, and those just sometimes happen to be used to texture volumes.

Smaller step sizes better capture detail in fine volumetric structures, and reduce the grainy appearance when you undersample the volume. However, smaller step sizes will take longer to render.

Example of too large step size, volume details are grainy

For volumes defined by a voxel grid, the optimal step size is one-half the length of each voxel. You can find this for Blender's smoke sim by getting the dimensions of your domain, and plugging the length of the longest size into the formula: voxel size + length / (base res * (hi-res level + 1)). So a 10m domain with 80 res and 2 hi-res divisions would be 10 / (80 * (2+1)), or about 4cm. (so step size is set to half that, 2cm, aka 0.02)

Volume Samples

If you are using Branched Path Tracing you will have an option under the samples panel to set a number of volume samples. This is the number of times a ray will branch to continue the path after a scattering event.

volume samples control location

Higher values will reduce some sources of volume noise, such as from using volume bounces > 0.

example of 1 vs 8 volume samples


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .