While some RenderMan plugins integrate the Denoise feature, RenderMan does ship with a tool for processing images after rendering. Keep in mind that the appropriate AOVs must be included for the Denoise filter to work.
Denoising does not affect the alpha channel of images. Doing so can cause artifacts and halos to form and is therefore avoided.
Denoise can attempt to use GPU acceleration. You can activate this mode by adding
--override gpuIndex 0 to the command line, where the number indicates which GPU to use. In a single-GPU system, this will always be 0. If no compatible hardware is found it will failover to CPUs. Using the GPU requires CUDA 7.5 (compute capability 2.0 or later) and a capable graphics card with support.
Enabling GPU Denoise
Globally you can enable the GPU features by changing the .json file here: $RMANTREE/lib/denoise/default.filter.json
gpuIndex corresponds to the GPU installed to use for denoising. If -1 is used, it will use the CPU instead.
denoise -h results in the following 'help' output:
The Denoise tool comes with three filter presets:
Used for most scenes. This filter achieves reasonable results without changes.
Used to filter based on image alpha.
Used for volumes rendered alone onto transparent black.
It's important to use the volume filter on images containing isolated volume elements or you may introduce more noise into the filtered image using the default filter.
You can override the default filter and settings using the
--override flags. You may also set a different environment override. The below examples are the same result with different methods.
Optional Pre-made Filter Controls
There are also several override filter settings that can be combined with the base filters. Notice these are named as filteroverride.
Removes fireflies (bright pixels) from an image.
Sets the noise filter's prev/next frame warp type to 'linear'.
Sets the noise filter's prev/next frame warp type to 'nearest' (non-interpolated).
Turns off dividing by the albedo.
Turns off use of the 'depth' feature to cue the noise filter.
Turns off the firefly killer for the noise filter.
Defines the parameters of the noise filter, using separate diffuse vs specular variances.
Turns off unpremultiply by color options.
Defines the parameters of the noise filter, using separate, diffuse vs specular variances.
Turns on unpremultiply by color.
Turns on both unpremultiply by color and features.
You may also create your own filter overrides based on your needs. Note that RenderMan looks for the filters under the RenderMan ProServer install directory in
lib/denoise/ The following example creates a control that alters the overall strength of the denoising effect.
strength0.2.filteroverride.json you can then use the following command:
Note that increasing the filter strength may take longer to process the image result.
Similar to creating custom overrides, you can copy the
default.filter.json configuration (or one of the others) to a new file and edit it. For example if you saved it to
local.filter.json you could then use it with the following command:
Note that unlike filter overrides, there is no plus sign before the name of the file.
There are three main sections of note in the configuration file. The
kernel section defines the properties of individual kernels filter kernels – namely the size and tolerances. The
filterbank section refers to the filter kernels by name and collects them together into filter banks. By default, there are two main ones: one for filtering diffuse layers and one for specular layers (there is also a generic specularAndDiffuse for both in special cases). Finally, there is a
layergroups section which defines the names of channels in a layer image recognized as belonging together in a layer and gives the names of filterbanks from the
filterbank section to be used to filter the diffuse and specular elements of the layer.
See the Layered Filtering section here and the comments in
default.filter.json for more details.