Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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.

GPU Acceleration

Denoise can attempt to use GPU acceleration. If no compatible hardware is found it will failover to CPUs. Using the GPU requires CUDA 7.0 (compute capability 2.0 or later) and a capable graphics card with support.

Denoise Flags

Running denoise -h results in the following 'help' output: 

Code Block
languagetext
-o name            Outputs to shotCam_name.exr instead of shotCam_filtered.exr
-n                 Output basename is based on variance image rather than
                     to-be-filtered image
--outdir dir       Outputs to this directory instead of the input file's
                     directory
--filtervariance   If a mix of variance and non-variance files are specified,
                     output includes filtered version of variance's color
                     channels too
--crossframe       Cross-frame sequence mode: filters across frames
--skipfirst, -F    Doesn't output an image for the first frame
--skiplast, -L     Doesn't output an image for the last frame
--layers           Filter only render output layers matching these names.
                     Supports wildcards ?, *, [...].  E.g., --layers 'diffuse,
                     specular,emission[45]'
-v name            Uses motion vectors with crossframe mode.  Motion vectors
                     are located based on the variance filename, changing
                     "/variance/" to "/<name>/", "variance." after "." or "_"
                     to "<name>."  Note that "-v variance" will use the
                     motion vectors from the variance file itself
-f configFiles     Filter definition file and/or overrides.  Separate multiple
                     files with '+' or use multiple -f's.  Use -H to list
                     available files.  The default baseFile.filter.json is
                     $RMANTREE/lib/denoise/default.
                     filter.json
-H                 Lists all available filter config files
--override key val Override a value from filter definition file.  Can use
                     multiple times.  If last flag, follow with -- before input
                     file names.  Examples:
                       --override strength 0.5
                       --override 'kernels[1].params.sigma_albedo' 0.05
                       --override debugPixel '[336, 209]'
-t nthreads        Number of threads; default is number of cores on machine
-h, --help         Help
--version          Version information

GPU Acceleration

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.0 (compute capability 2.0 or later) and a capable graphics card with support.

Denoise Filters

The Denoise tool comes with three filter presets:

...

You can override the default filter and settings using the -f or --override flags. You may also set a different environment override. The below examples are the same result with different methods. 

Code Block
setenv NOISE_FILTER_OVERRIDES '{"kernels[0].params.sigma_albedo":0.07}'

...

Code Block
denoise -f volume.filter.json+fireflyKiller.filteroverride.json+linearWarp.filteroverride.json shot.variance.001.exr

Custom

...

Overrides

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. 

Code Block
{
   "//": [
       "This file changes the strength of the noise filter."
   ],
   "filterbanks.*.strength": 0.2
}

Saved as 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.

Custom Defaults

Similar to creating custom overrides, you can copy the default.filter.json configuration 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:

Code Block
denoise -f local.filter.json shot.variance.001.exr

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 the names of channels in a layer EXR 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 comments in default.filter.json for more details.