NLM Denoiser in Blender 3.0

Hey, I recently downloaded a Blender 3.0 Alpha from the Cycles X branch. The lack of an NLM denoiser caught my eye. Anyone know if they are dropping it in future versions, or have they just not implemented it in this experimental build yet? I am asking this because the other denoisers give a more blurred image and lose details a bit, so if they actually give up NLM, in my opinion it is a bit of a lame. Anyone know anything about it maybe?

1 Like

Source:

The OIDN got some quality improvements in v1.4 to preserve more details.

1 Like

Well, in that case it’s a shame they’re dropping NLM. Results on IOD are better, of course, but “generally” is a keyword here imo. Personally, I don’t prefer this denoiser because some objects, especially when they have detailed textures, just look blurry. Hopefully when Blender 3.0 is officially released, the OID will be doing better than it is now. Anyway, thanks for info.

We will have OIDN 1.4.1 in Blender soon:

4 Likes

OIDN does not gaurantee normal denoised imaged. I have experienced many times that some fireflies (far away from the camera) in a images result in patches of “explosion pixels” after OIDN denoising. I have to switch back to 2.93.0 and using the NLM denoiser to avoid it.

And we might have it sooner than we think. Check last comment by Brecht:
https://developer.blender.org/D11748
If 1.4.1 is needed for Cycles-X development it will land in master.

2 Likes

Brecht is requiring users to share scenes (.blend files) that demonstrate that internal denoiser performs better than OIDN overall, taking into account noise reduction, texture preservation, and artifacts/patches. To later be compared with the result of OIDN 1.4

I think so far no one shared any scenes for it.

2 Likes

Since 2.93 I’ve stopped using NLM. I find that OIDN gives the best results overall, especially on interiors.

1 Like

In the Cycles X branch, OIDN is getting to the point where even a lighter weight multipass denoising setup (in the compositor) is producing a result that is not objectively worse in any area compared to the original image (even in terms of smaller details).

Overall, the results are a lot better than they were when OIDN first made it into Blender at version 1.1, compare that to NLM and its issues with producing artifacts with highlights as well as just ignoring the noise in spots (which is just the major ones).

Yeah I stopped using NLM denoiser. It was producimg noticable artifacts. I mean really noticable.

In my opinion Open Image is the cleanist and gives sharp results of you tweak AA just right aling with samples.

It is also far more stable than Optix and compatible across a variety of GPUs which is good for a low budget cobled -together farm.

I just downloaded 3.0 and the open image denoise sucks on low frequency details. Blurs everything into oblivion. 3.0 rocks but I’m a product designer, I desperately need NLM denoiser back. Are there any major architectural issues why they can’t just leave it in? NLM does a much much much better job at denoising for single image renders with relatively higher sample count compared to OID. OID DOES NOT replace NLM, they are almost like two different tools for 2 different things. I really don’t understand. This sucks so much.

1 Like

It seems that it was a combination of two: Nobody really cared that much (Since Developers asked for examples,in the developers forum, that NLM results varied too much from OIDN and Optix, and almost nobody cared, (https://devtalk.blender.org/t/cycles-x-feedback/18598) and devs only got requests and more requests from what i can see after taking a quick look), and probably since cycles-x is tuned for OIDN and Optix, NLM is considered obsolete and deprecated now.

In the same thread is hinted that better results can be achieved in the compositor, but you’ll need to ask for information for details.

(Edited for clarity)

There are no noise sliders neither. There’s 0 control over the denoise from the menu. I feel like it’s a huge step back in this regards. I will have to see what can be done from the compositor, but I feel like every time you want to adjust the noise you have to build a compositor setup for it it’s a bit too much.

1 Like

I know this is not ideal, but if you need a render with super crisp detail, there is a workaround I sometimes use with OIDN.

-Render and denoise at double resolution (you can reduce the samples so it doesn’t take longer).
-Save the image.
-Use an image editing software to reduce back to intended resolution.

This will cause the denoising to be a lot more accurate with fine details, even after scaling back down. But I will admit I too would like a denoiser that could do perfect quality directly.

2 Likes

Thanks! I will try it out, I’m trying to find someone to write me an addon that puts back the NLM denoiser. I will let you know, if I have it :smiley:

I just tried it out, it does work. Thanks so much. It’s not perfect but it’s a bit better.

Can you post a comparison screenshot? I’m just an amateur but prior to OIDN there was never an occassion where I got any benefit from the old denoiser. Most of the times I used it the result reminded me of the bad old days of trying to remove the splotchy look of global illumination in mental ray.

For the record: (google search gives me this, is not my opinion, tho. so i can’t assert its validity, YMMV)

Open Image Denoise and NLM are two sorts of denoising modes. OIDN is faster and doesn’t need a high sampling rate, it is ideal for animation. NLM is slower and needs a higher sampling rate, it is ideal for single image.

You can use OIDN either through the Render panel or through the Compositor. The second solution gives better results.

For the first solution, enable OIDN through Properties panel > Render > Sampling > Denoising > Render.

For the second solution, make sure you’ve deactivated any denoising in the Render panel, then go into Properties panel > View Layers > Passes > Data, and activate Denoising Data, it will create all the necessary output sockets in the Compositor Render Layers node.

Now open the Compositor, create a Filter > Denoise node, plug the Nosiy Image, Albedo and Normal output sockets of the Render Layers node into the Denoise, plug Denoise into the Output and Viewer nodes.

Feel free to test this, personally i don’t use any kind of denoisers, so i can’t vouch for veracity of this.

In depth article about denoising Sprite Fright shows OIDN is not suitable for animation: https://studio.blender.org/blog/denoising-sprite-fright/

Intel’s denoising algorithm can in fact catch some fine detail if you set the preservation mode to ‘none’. It means more samples are needed, but smaller details can be caught. You can also use the compositor to feed a sharpened denoisng normal path (which can work if ‘none’ is picked), and you can always denoise light and color passes individually if what you did is still not enough.

Sure, NLM can catch some fine detail, but we must remember that it was far from being free of issues. It was not good at all at catching detail in things not seen in the denoising passes (shadows, caustics, ect…) and it produced huge artifacts with small and/or thin specular highlights as well as in areas of high contrast. It may have worked better for some scenes, but not in others, and many of the scenes where it worked well only did so when the image was almost converged to begin with (because it was designed to get rid of those last bits of noise and not much more).

Then there’s the tendency of NLM to ignore increasing amounts of noise the more samples are put onto the screen (to where it ceases to do anything once you get past 20,000 samples).