Share

Adaptive Sampling - Arnold User Guide

Arnold has the capability of adapting the sampling rate of each pixel when Adaptive Sampling is enabled, allowing it to dedicate a greater number of camera samples (and thus also a greater amount of render time) to the pixels that show a greater variation in their sample values. When used, all pixels will receive a sampling rate of at least Camera (AA) samples, but no more than AA Samples Max. The adaptive sampler's sensitivity to noise may be controlled through the Adaptive Threshold render option, where lower threshold values will apply higher sampling rates to a greater number of pixels.

Adaptive sampling is good for situations where small areas of the image have high levels of noise that require an impractical number of samples to clear up. For example scenes with bright, motion-blurred speculars, DOF, buzzing rim lights, or scenes with the hair shader.

Important:

There are memory implications when using adaptive or progressive rendering with the Gaussian filter. You can avoid this either by disabling adaptive or progressive rendering, or by using the Box filter instead.

Adaptive/Progressive and IPR

In Arnold plugins that perform a series of render passes at lower AA settings for the purpose of previewing the output before rendering at the final sampling rates, Adaptive Sampling should be DISABLED for all but the final render pass to enhance performance.

Likewise, when the Progressive Render render mode is used, for best performance plugins may skip performing preview renders with Camera (AA) settings of 1 or higher since the progressive rendering mode will already display all of the intermediate AA sampling steps from 1 to the user-selected setting to the render view drivers.

Adaptive Sampler and Custom Filters

Adaptive sampling consists of placing samples in a non-uniform fashion over the rendered frame. Because of this, some pixels will have a higher density of samples than others, and this sample density must be taken into account by weighted-average filters otherwise the sample values of high-density regions will become over-represented and those from low-density regions will become under-represented in the filtered result.

Each sample's sampling density can be obtained through an AiAOVSampleIteratorGetInvDensity() function call in each iteration of a sample filtering loop. The scalar return value can be used to properly adjust each sample's value in the weighted average filter through a multiplication.

The AA_inv_density AOV can help to visualize the sample density with Adaptive Sampling. Use it with a Heatmap filter.

Enable

Enables/disables Adaptive Sampling.

Max. Camera (AA)

Sets the maximum amount of supersampling. It controls the per-pixel maximum sampling rate and is equivalent to the units used by Camera (AA). Adaptive sampling is enabled when Max. Camera (AA) > Camera (AA) samples and Camera (AA) samples >= 2. Scenes with a large amount of depth of field or motion blur may require higher Max. Camera (AA) values. This parameter can also help with 'buzzing' speculars and hair shading as well.

Setting Camera (AA) samples to 1 or lower does not yet allow Arnold to calculate the measures needed for adaptive thresholding, and setting Max. Camera (AA) to Camera (AA) samples or lower does not leave a margin for any adaptive AA samples.

variance_filter showing effect of Max. Camera (AA)

Adaptive Threshold

The threshold which triggers/terminates adaptive-AA. This value controls how sensitive to noise the adaptive sampling algorithm gets. Lower numbers will detect more noise. The default value (0.015) should work well for most scenes.

Variance filter showing effect of Adaptive Threshold

Was this information helpful?