Denoiser

Facts

The denoiser included in Maxwell is based on Innobright's Altus technology.

Maxwell developers team, in collaboration with the Innobright team, has integrated Altus Denoiser inside Studio, Maxwell Render and plugins so you can enjoy the power of Altus and Maxwell together.

Denoiser integration is offered as a free solution for all Maxwell customers. No extra license is required.

The denoiser calculation is a biased process applied over unbiased Maxwell renders. The higher the sampling level of the render, the more accurate the denoiser solution will be and the less bias it will introduce.

User Interface

You can launch a render with Denoiser either from Maxwell Studio, Maxwell Render or any plugin. You will find very similar options on all platforms.

In Maxwell, it is in Render Options panel > Denoiser, right below Scene section.

In plugins, its location may change from one to the other but it should be close to main render options.

Denoiser options section

Regardless of where you use the denoiser, you will find the same options:

Enabled

Activates or deactivates denoiser calculation for the next render.

Denoised Image

Here you can specify the path, name and format of the denoised image.

Apply Denoise

In this drop-down menu you can choose to calculate the denoised image at each SL starting with the one set in the spinbox (default option) or only at the end of the render.

Denoise Shadow

This option allows to additionally denoise shadow channel (only available with "Auto configure" set to "Accurate")

Use GPU

If on, the denoised image will be calculated using the GPU (much faster usually), if not it will use CPU

Auto Configure

If activated, this option will set all the required channels and options automatically; it comes in two flavours: Fast and Accurate (explained below).

Re-Denoise (only in Maxwell Render)

This option allows to redo denoise calculation after you have made changes to Multilight sliders, so you can produce a denoised image with the new light configuration.

Workflow

Two renders.

It's important to understand that the Denoiser needs to launch two renders and benefits from some extra channels so, when you activate the denoiser, render routine changes in order to get this information.

Don't worry, everything is done under the hood automatically and at the end, you will get the work of both renders combined in a merged mxi plus the denoised image.

You can get information the progress of both renders in Render Progress and Render Info toolbars and in Console:

Toolbar with two passes information

Apply Denoise - Each SL or At end.

There are two options to show denoised image:

Each SL

In this mode, Maxwell will calculate first pass (first render) until it gets to the SL set in the spinbox ("starting with SL") and then the second pass (second render) will kick in;

when both passes have reached SL4 (default setting) the first denoised image is calculated and shown in render viewport as if it was an extra channel (but with a square icon instead of a circle);

after that, the first pass is resumed until it reaches next SL and then the second pass is also resumed; when both passes reach the same SL another denoised image is calculated and the process continues with this loop until it reaches the final SL or the process is stopped.

When the render is finished you will get the denoised image and both not-denoised passes will be merged into one file mxi and the image saved in the specified output format, so you get the result of all the work done.

All intermediate denoised images are calculated with a faster and lower quality method, but the final denoised image is always top quality.

This method allows to monitor if the render needs more time or not while you see the denoised result. It's the most interactive method.

Render routine scheme at "Each SL" mode.

At end

In this mode, Maxwell will calculate first pass until it reaches final SL and then it will launch the second pass till final SL.

Then it will produce a denoised image and both not-denoised passes will be merged into one file mxi and the image saved in the specified output format.

You won't get a denoised image until the end of the process.

If you stop the render before starting rendering second pass, you won't get a denoised image as the Denoiser won't have enough information to work with.

This method is less interactive and is only recommended if you already know which SL your scene will need to get a good result, for network renders, or animations.

Icon

Please, note that if you stop the render before the second pass has started rendering, you won't get a denoised image as the Denoiser won't have enough information (the second pass) to work with.

Render routine scheme at "At end" mode.

Icon

The two passes are stored in a temporal folder; their names are based on the output name of the mxi following this pattern: mxiname_render1.mxi and mxiname_render2.mxi. The folder depends on the operating system but is printed in Maxwell Render Console during the render process after a blue DEBUG message like this: DEBUG: - Modifying Scene for Denoise values (MXI file: C:/Users/<username>/AppData/Local/Temp/maxwellrendertmp/test folders_render2.mxi)

In Windows they are stored under: C:/Users/<username>/AppData/Local/Temp/maxwellrendertmp/

In MacOS they are stored in a random folder under /var/folders/

GPU or CPU

Regardless the render engine you use, the Denoiser is capable of running on GPU, with Nvidia, AMD and Intel hardware; it works with CUDA (Nvidia) and also can work using OpenCL either in GPU (Nvidia, AMD or Intel) or CPU.

The default option is GPU as it is usually much faster; the Denoiser will first try to use CUDA, if it doesn't find a compatible card, it will fallback to OpenCL GPU (usually with AMD and Intel cards) and then OpenCL with CPU.

This would be minimum system requirements for Denoiser:

When using GPU, we recommend having a graphics card with at least 2.5GB. This number is actually dependent on frame size, 2.5GB is for 2k square imagery. Usually to calculate the denoised image you need a bit more than double the amount of memory used for rendering.

When using Nvidia CUDA, the drivers should support at least CUDA 7.0

When using AMD, the Catalyst driver should be up to date.

Icon

In the case you get an error message when using CPU about OpenCL ICDs, it means Maxwell cannot find valid OpenCL drivers installed on your machine; usually those drivers are included with your graphics card drivers, so I would try updating the drivers to the latest. If that doesn't help, it will probably be solved by installing one of the packages you can find following these links:

Auto configure

The Denoiser can make good use of extra channels in order to preserve features and details of the image, but it has some special requirements for the channels. Auto configure option sets everything up for you.

Both options, Fast and Accurate, calculate de denoised image with the same quality but activate different options under the hood that may affect render time and the final result in different ways.

Let's see the differences between Fast (default) and Accurate:

When you activate Auto configure, you won't see these channels actually active in the interface, but they will be activated internally at render time.

The main difference between Fast and Accurate is that Fast doesn’t use shadow channel making it almost twice faster than accurate, but as it relies on fewer channels, it could be less accurate.

On the other hand, Accurate method marks Shadow option in all materials except for emitters, so they show in shadow channel and activates this channel. The render will be slower but will count on shadow channel information which can make the denoiser process more accurate.

If you don't want to use any of the two Auto configure options and set everything up manually, you have to take into account that the Denoiser needs the following to work correctly:

all channels in EXR 32 format;

if you use Normals channel it should be in Camera mode;

If you use Position channel it should be in World mode;

if you want to use Shadow channel, it is recommended to turn on Shadow option in all materials except for emitters.

Re-Denoise

This option is only available in Maxwell Render. It was added to the interface in order apply Multilight changes to the denoised image after the render has finished.

Normally you will be able to change Multilight sliders and they will affect not-denoised image as always; if you want to get a denoised version of it, you only have to click this button and Maxwell will apply the changes to both passes and redo the denoiser process with the new light configuration.

Denoiser and Network Render

The Network System can handle renders with Denoiser.

You will find a new checkbox in the Add Network Job Wizard to turn it on or off.

Icon

Regardless of what was set in the scene, when launching a network job with Denoiser, it will always run in "At end" mode.

Cooperative or single

Single mode: If the render is computed in single mode so each node runs a different frame (regardless it is an animation or batch render), the denoised image will be computed by the nodes, the same way as when it is rendered in Maxwell Render; this means each node will run the two passes and compute the denoised image.

Cooperative mode: in this case, as there are at least two nodes rendering the same frame, there is no need for the nodes to run the two passes, so the nodes will run normal renders (with the required extra channels and settings) and at the end, the manager will collect all the mxi files, merge them until there are only two left, and compute the denoised image from those two mxi files. So in this case, the computer running manager is the one that is going to calculate the denoised image.

Particularities and known issues

When using GPU render engine (not for denoising, but for rendering), the denoised image will always be calculated at the end of the process only; "Each SL" method won't be available. Also, as Shadow and Reflectance channels are not available when using GPU engine for the moment, as a consequence of this, Auto configure will always be set to "Fast" when using GPU render engine.

When using Extra Sampling feature, only "At end" method will be available, as "Each SL" method makes mistakes when combined with extra sampling routine.

When using Multilight with Denoiser, if you make changes to the sliders while rendering, you won't see the expected result in the denoised image until both passes have been updated with the same light configuration. You will probably have to make the same changes in both passes.

For the moment, once Maxwell is closed after rendering an image with Denoiser, the two passes cannot be loaded again into the interface to resume them or make changes and Re-Denoise, nevertheless, if you have at least a couple of mxi files of the same frame (and with the required channels), you can make Maxwell denoise them by running the following commands through command line (in Windows using cmd.exe and in Mac using Terminal, not in Maxwell Render):

Icon

mximerge -folder:"folder containing the mxi files of the same frame" -coopdenoiser:"output path and name of the denoised image" -target:"path and name of the merged mxi file"

You have to execute this command in the installation folder of Maxwell Render, where you will find mximerge executable file. Please, notice there is a space between the path and the next command, but not after the colon.

The Denoiser does not work with CPU Draft engine; if you notice an unexpected error and the render is not launched with extra channels when using the Denoiser, most probably you are using CPU Draft engine. Please use CPU Production or GPU engines to solve the problem.

In some particular situations, Maxwell produces a wrong Shadow channel with big black dots; in these cases, it's better not to use it to calculate the denoised image or it will introduce artefacts in the final image. In this case, it is recommended not to use Auto configure in "Accurate" method and avoid using Shadow channel at all.

If the image is very small and the render very fast, it may occur that the Denoiser does not have enough time to compute the denoised image and its routine may eventually fail. In these cases, please, set it to apply Denoiser "At end" or increase "starting with SL" value.

When launching a network render with Denoiser, previews are not working.

When launching a network render in single mode with Denoiser, if the job is stopped before it has started the second pass, the job will become irresponsive (internally, it will try to start the second pass instead of stopping, and the interface will fall into an unknown state).

In some cases, usually when rendering big images, you may get this error: "Error running denoise process: OpenCL exception". Most probably this is caused by your graphics card running out of memory. In this case, it is recommended to change to CPU (where it is very common to have a bigger amount of memory available). When using the CPU you may run into another error about missing OpenCL ICDs; please check CPU or GPU section above to find a solution for that.

We will try to solve these issues or remove these limitations as soon as possible. Please, be patient.