Advertisement

You're blocking ads, which pay for BlenderNation. Read about other ways to support us.

Denoising in Cycles Coming Soon

9

Lukas Stockner is working on some clever Cycles improvements that will denoise renders without rendering more samples or losing details in your scenes!

Greg Zaal writes:

Lukas Stockner has been working on yet another awesome Cycles feature, this time a sneaky method to reduce noise without actually rendering more samples.

To put it simply, “denoising” is a process of analysing your render and trying to shmoosh the noise/grain together and make it look clean.

A common side-effect of all denoising algorithms is that some detail is lost. It’s almost impossible for the computer to tell the difference between noise that you don’t want and noise that you do want (like details in a texture). To address this, as far as I can tell, Lukas has added options to denoise Direct and Indirect passes separately, which allow you to (potentially) smooth only the noise introduced by the rendering process and keep all the details of your textures in tact.

About the Author

Avatar image for Bart Veldhuizen
Bart Veldhuizen

I have a LONG history with Blender - I wrote some of the earliest Blender tutorials, worked for Not a Number and helped run the crowdfunding campaign that open sourced Blender (the first one on the internet!). I founded BlenderNation in 2006 and have been editing it every single day since then ;-) I also run the Blender Artists forum and I'm Head of Community at Sketchfab.

9 Comments

  1. AWESOME AWESOME!!! AWESOME! I see the "very" slight shade differences but it is absolutely minor in comparison to how many samples it would have taken!

  2. Damn, these developers never ceases to amaze me.
    We always look at the awsome artists, but these guys are the real MVPs.

  3. Good news, if you can't wait for these features, you can have them now!!

    You can actually do this with the compositor right now if you're willing to spend an hour wangling nodes & experimenting! A hassle I know but if you can't wait for denoising features to become part of Blender and want to save a LOT of render time (like, hundreds of hours!), you can do it now. I've made my own node group which does this I use on any big render task and it has cut my render times down by 80%!

    Here's how to do it:

    First enable practically all passes from Cycles, do a low sample render and start having a look at em:
    Diffuse Colour, Diffuse Indirect, Diffuse Direct, Gloss Colour, Gloss Indirect, Gloss Direct, Transmission Colour, Transmission Direct, Transmission Indirect, Subsurface Colour, Subsurface Indirect, Subsurface Direct, Normal, Depth, Emit, Environment, UV, etc...

    It may be easier to just enable all of them and disable later any you don't use.

    If you look at each pass, you'll notice a lot of them have fairly flat and unchanging colours across surfaces when colour/direct/indirect is separated, and importantly, the "colour" passes never have any noise, at worst they may have some aliasing, because there's nothing to introduce any noise into those passes, they are just final outputs of values from your materials. The direct/indirect passes are where the noise come from, but they are usually incredibly flat, very little sudden colour variations except for the boundaries around objects. 'Fireflies' also stand out very clearly when the passes are separated, very obvious white dots sticking out of very dull colours.

    Now the trick is to use the **Despeckle** node & the **Bilateral Blur** node on each pass seperately. (Bilateral blur is amazing, easily the best node of the compositor imo!)

    Bilateral Blur has the option to providing an image to use to control the blurring of an image, and what neighbouring pixels the current pixel being blurred is blurred with. The image which controls that is called the 'delimiter' image, and there's parameters to control how the blurring spreads with that delimiter.

    So for example, if you give it an input image of indirect diffuse, and delimiter of the normals, then pixels with similar normal values will be blurred together, but pixels with different normal values will not. Meaning surfaces facing the same direction get blurred, but not surfaces facing different directions.

    Likewise there are other inputs you can use to control the blurring:
    Z - Pixels with similar depths are blurred, separating foreground and background objects
    Gloss Colour - Strangely provides an often very accurate separation between regions worth blurring.
    Object ID/Mat ID - If you need more manual control, maybe even use it to completely mask out some things from blurring.

    My current 'NoiseRemover1.3' uses Normals, Z, Diffuse Colour, and Gloss Colour, all multiplied by different scale factors, and added together, as my 'delimiter' image. Because there's very little sudden change across passes like indirect diffuse, blurring them has very little negative effect, and removes much of the noise of these images. By using the delimiter, it provides very accurate results, pixels are only blurred together if they are in a similar location, facing a similar direction, with a similar surface colour and similar gloss colour.

    The basic process is:
    1. Enable all Cycles Passes
    2. Create a delimiter image from your inputs, Z + Normals is a good start, plus whatever else looks good, whatever works for your current render.
    3. Apply Despeckle to each pass image which suffers from noise (all the indirect/direct passes)
    4. Apply Bilateral Blur to each pass image with noise, using your delimiter image.
    5. Combine blurred/despeckled passes using the regular lighting equation into final output image.

    Then just tweak bilateral blur settings/delimiter image to suit your needs.

    Using this method I've brought 20 hour renders down to 4 hours, and achieved render results that look actually better than the 20 hour versions.

    The only problem this suffers from is that sometimes sharp shadows from objects on surfaces are blurred more than I'd like, and I have to sometimes manually mask out certain things from being blurred, such as very sharp noiseless reflections on mirror surfaces, but this is usually a minor problem at worst.

Leave A Reply

To add a profile picture to your message, register your email address with Gravatar.com. To protect your email address, create an account on BlenderNation and log in when posting a message.

Advertisement

×