Render times have come down significantly over the last couple of years. One technology that allowed this is denoising. AI can now look at an image and determine what is noise and what isn't with very good accuracy. In this article we will take a closer look atthe Intel denoiser that was recently added to Blender and see how we can use this feature.
How to use Intel denoiser in Blender? Before you render, go to the view layer tab in the properties panel and find the passes section. Here, check the denoising data checkbox and render your image. Go to the compositing workspace and add a denoise node. Plug the noisy image, denoising normal and denoising albedo into the corresponding inputs of the denoise node, then plug the denoise node to the output node. Keep in mind that this is only supported in Cycles.
In the rest of this article we will inspect the Intel denoiser and outline the steps more thoroughly.
When we render with a ray-traced render engine such as Cycles, we send rays from the camera into the scene to gather information. We then use this information to determine the final color of each pixel in the image.
With enough rays cast into the scene, we get a fairly accurate image. But if we don't have enough samples, the data is not sufficient, and we end up with differences in the result between the pixels. This variation comes out as noise or graininess.
Denoising is looking at the finished render and adjusting the colors of each pixel, smoothing out any inconsistencies. At the same time we also want to maintain the detail and clarity in the image.
So, how can the computer determine the noise from the detail?
There are three denoising methods in Blender.
The first one is a more traditional denoising tool. It is an algorithm we feed some data to determine the general level of detail in the image.
We need to dial these settings so that the denoiser does not remove too much or too little information or smooths out the wrong parts.
The second alternative is the Intel denoiser. It is an AI driven denoiser that has been fed many, many images and over time it has self adjusted or learned what parts of images are detail and what parts are noise.
It automatically denoise the image using its own "experience" with little need for configuration, and it is often very accurate.
The main benefit Intels denoiser has is that it is hardware independent. Meaning that it does not matter what CPU or GPU we have. We can still use it. It also produces very nice results in most cases.
The third way is like the Intel denoiser, but it is coming from Nvidia. It also uses AI, but it requires an Nvidia graphics card. It has been available for quite some time now through an add-on called D-Noise made by Remington graphics.
External content: D-Noise Nvidia denoiser add-on
Just recently though, In Blender version 2.83 we have built in support for Nvidia denoiser. This implementation is different though, because it includes real-time denoising of the viewport and denoising for the final render. However, this implementation requires a Nvidia RTX card that supports Optix.
If you are on 2.83 or later you can enable the Nvidia Denoiser in the view layer tab. Find the denoise section, enable it, and check the "optix ai-accelerated" checkbox to switch from using the internal denoiser to Nvidias.
As you can see, we have quite a few options built into Blender. It can be hard to know what settings and workflow correspond to witch denoiser.
In Blender, Intel denoiser is implemented as a render pass. This means that before we render, we need to enable it so that the necessary data becomes available once the render is complete.
We enable it in the view layer tab in the properties panel. Expand the Passes. In the subsection Data you will find a checkbox labeled Denoising data. Make sure you check it.
Now you can press F12 to render, and denoising data will be part of your finished render. Alternatively, press Ctrl+F12 to render animation.
When the render is complete, the denoise data won't automatically apply to your finished render. Instead, we need to combine it in the compositor.
Go to the Compositing workspace at the top and check use nodes in the compositor editor.
You will be presented with a render layer node and a composite node. The render layer node will have quite a few outputs. Most of these are added by the denoise data checkbox.
The outputs we want to use are:
To use these, add a denoise node. Press Shift+A and go to Filter and Denoise. You can also press search and type "denoise" and the nodes will filter as you type.
Plug the Noisy image into the Image input, the Denoising Normal into the Normal input and the Denoising Albedo into the Albedo input.
We can add a viewer node and press Backdrop in the editors header to get a preview in the background of the compositing editor.
If you are like me and often forget things that you need to do over and over you can set the Denoising data checkbox to be checked by default.
You can do this by opening a new Blendfile, switch to Cycles, find the Denoising data and check it. Switch back to Eevee and then go to the file menu and find the defaults sub menu. Then click Save startup file.
This way the denoising data will always be turned on when you render with Cycles and you won't forget it and have to re-render.
At first, it may seem that there is no reason not to use denoising. However, there are some drawback.
First, they are not perfect. You will have images that isn't denoised correctly. Details will be smoothed out, and grain may remain.
We can work around this by combining the denoised image with the original, so it isn't a huge deal. It is a tool and not a fix all button. Just something to keep in mind.
A harder problem to solve is denoising animations. The denoisers of today does not yet take other frames into account. Instead, each frame is denoised in isolation.
This means that if we try to denoise an animation, we may end up with severe differences between each frame. Most times this makes an animation look glitchy.
Denoisers are here to stay and the Intel denoiser is a perfect start since it isn't hardware dependent. Anyone can use it.
Personally I have changed my default startup file so that the denoise data pass is always enabled.