How to denoise in 3.0 to remain fine bump details

Hi all,

Google didnt deliver any good answers. I am trying to understand how in Blender 3.0 and future denoising with OID will work - not everybody has CUDA.

The old Blender denoiser has a radius setting - but with OID I do not see anything like that inside render layers or render settings.

I show my students how to render a plastic surface with fine bump mapping and the OID in Belner 3.0 just washes / blurrs it away.

It would be fun to play with an example if you can provide one.

OIDN runs on any Intel CPU with SSE4.1 support (introduced in 2006) or better or any Apple Silicon CPU, so there’s no need for CUDA or anything else special and it should work pretty much everywhere.

I think OIDN tries to do everything automagically and there really isn’t any input to the process that will let you tweak it at that level. Assuming you’re using the default final render Cycles settings with OIDN enabled for the Denoise and the Albedo and Normal passes selected for it (which I presume enables those passes internally as they no longer show automatically enabled in the Passes properties) then the Normal pass is the hint to the denoiser that your fine detail is real and not noise.

But if the detail is substantially smaller than a pixel, then both your intra-pixel detail and its associated Normal information may get blurred out resulting in the denoiser smoothing it out even more. I haven’t experimented with this though to get a feel for the behavior.

Some things I can think of offhand that might be worth experimenting with:

  1. Turn off denoising and rely on the new(ish) progressive refinement to give you a clean final render in a reasonable amount of time.

  2. Try increasing the render resolution. If you double the x and y resolution you’ll give the denoiser 4x the information to work with and this might make the Normal data more effective. You can then reduce the image to the desired final resolution as a post process using the tool of your choice if that seems to preserve the detail better.

  3. You could even try getting fancy for specific problems by using the Denoise Compositing node (which is OIDN) rather than the automatic render denoise option, and you could probably use something like Cryptomatte to mask off objects you don’t want to denoise etc. You would turn off the Render Denoise and turn on the Denoising Data data pass to get the passes needed to feed the Denoise node in the compositor.

For an extreme option that one might use in say a commercial production of an animated series etc., it’s actually possible to train your own custom AI denoising filter for OIDN rather than using the default one. So you could try to teach OIDN to recognize the kind of textures that you use. Not sure what would be involved in swapping out the model that Blender is loading with OIDN.

GitHub - OpenImageDenoise/oidn: Intel® Open Image Denoise library

Could you share the scene or an example?

https://developer.blender.org/rB1a6b48078570e746aab6412a955a8b6b87149e7b

Possibilities are:

  • None. Assumes that the guiding passes are clean. Gives best results without extra processing time (in expense of requiring to have enough samples rendered to give clean guiding passes).

Corresponds to OIDN cleanAux=true and no prefiltering done on the guiding passes.

  • Fast. Old behavior, color and guiiding passes are denoised together. This is fastest way of giving denoised result, in the expense of possible loss of details.

Corresponds to OIDN cleanAux=false and no prefiltering.

  • Accurate. Use special guiding passes prefilteringbefore denoising color passes. Gives best results in the expense of extra time needed to perform prefiltering. Avoids over-blurring details.

Corresponds to OIDN cleanAux=true and prefiltering performed on the guiding passes.

Internal NLM denoiser at low render samples may preserve details but is unusable in practice because of the noticeable patches/stains in render result. So NLM denoiser is mainly useful for removing residual noise at very high render samples.
The equivalent in Blender 3.0 with OIDN 1.4.1 to reduce noise while preserving details at high render samples is to use Prefilter=None (Passes=Albedo and Normal). High render samples are necessary for this mode because passes can still be noisy for glossy/transmission materials with low roughness.

For low render samples Prefilter=Accurate is recommended.

But you probably get better results using custom OIDN Denoise node setup in compositor (It is slower because it uses multiple Denoise nodes):

This node setup from compositor requires enabling extra passes from the View Layer tab.

Here at the end if the video when you scrub to it I talk about rendering and showing loosing details.

Braun KS 20 TS - Rendering

you can see with 400% rendering the artifact in Blender 3.0 is odd


here is the blend file
https://drive.google.com/file/d/1kwCdZUnNIf3sQt4rfnc-6MGtRkf9iZw1/view?usp=sharing

Ironically I really like my pre BSDF renderings more where you played with fresnel / blend values more

At 400% render resolution (2800x4000) it looks pretty good here with denoise on:

image

At 200% the denoise wipes out the detail almost completely. At 400% none of the OIDN settings has a significantly noticeable effect, even setting Passes to None.

I think you just have to keep the detail large enough in pixel space that there’s enough data for the denoiser to work with, or honestly I would just turn off the denoiser as it may never give good results in these cases (at least in its 1.4.1 incarnation in Blender 3.0). Letting the image cook to 4096 / 0.005 progressive at 200% resolution takes 3.25 minutes on my 2070 and produces a beautiful image that looks (IMHO) a lot better (especially in some of the chrome and glass details) than any of the denoised 100 sample images:

image

Hi.

There was a regression in version 3’s denoising because of a typo.
rBdd505a7ebba2 (blender.org)

The next build should have denoising that works a bit better when ‘fast’ is not used.

2 Likes

Using the latest Alpha build that has the fix for that problem in it, I don’t see any change at all when compared to yesterday’s Alpha build, so either the bug is not correctly fixed, or it doesn’t affect the behavior we see in this scene.

Sofar I did not do much with the 3.0 version because it is not public yet and I don’t want to confuse students.

I have not looked much into the new render method while I remember from the Cycles X renderings how much faster it also is.

So maybe just letting it cook till it is clean is fine too

or I do a composite of denoised glass area with a cut out of the structured plastic part

that might be good to know for the students anyway

1 Like