Denoise artifacts caused by albedo gray roughness areas?

Hi everyone,

I recently noticed artifacts with the OpenImageDenoise and the Albedo pass seems to reveal the reason why these appear.

My test setup: Blender_Denoise_Albedo_Bug.blend (805.1 KB)
To recreate this Setup:

  1. In a new scene: Add a plane
  2. In the ‘Shader Editor’ create a standard material for that plane with a ‘Gradient Texture’ set to ‘Spherical’ feeding the ‘Roughness’ input of the ‘Principled BSDF’. (With nothing feeding the ‘Vector’ input of the ‘Gradient Texture’ it should default to ‘Generated’ texture coordinates.)
    Set the ‘BaseColor’ to black to make the artifacts easier to spot.
  3. ‘World Properties’ tab >> ‘Surface’ panel: set the ‘Color’ of the ‘Background’ shader to ‘Checker Texture’ with a ‘Scale’ of 30 and a ‘Strength’ of 3. Just to have something for the plane to reflect.
  4. ‘Render Properties’ tab: set the ‘Render Engine’ to Cycles.
    ‘Render Properties’ tab >> ‘Sampling’ panel: set the Samples for ‘Render’ to 16 to make the artifacts easier to spot.
    ‘Render Properties’ tab >> ‘Sampling’ panel >> ‘Denoise’ panel: activate the Checkbox for ‘Render’ and set it to ‘OpenImageDenoise’.
  5. ‘ViewLayerProperties’ tab >> ‘Passes’ panel >> ‘Data’ panel >> ‘Include’ category: activate the ‘Denoise Data’ Checkbox.
  6. In the ‘Compositor’ activate the ‘Use Nodes’ Checkbox in the Menu Header of the Area.
    There should be a ‘Render Layer’ node connected to a ‘Composite’ output node. The ‘Render Layer’ node should have an ‘Image’ output and a ‘Denoise Albedo’ output. Connect them to the ‘Composite’ or a ‘Viewer’ node as you please.

In the denoised rendering is a circle like artifact visible in the left corner of the plane with only speacular at 1 and a gradient in roughness

In the albedo pass is a clear gray circle visible in left corner of the plane.

Albedo with a Noise Texture in the Base Color not just Black. The gradient in the roughness gets cut off.

This is the roughness input seen through an emission shader

I tested it on CPU/GPU with standrad/CUDA/OpenCL. The jump in the albedo pass happens with a roughness value somewhere from 0.273 to 0.274.
Is it a known issue or worth reporting?

This is normal thing. Denoise is not magic. Increase your sample count.

The optix and OIDN denoisers are AI trained on photos of the real world. They might not be able to make sense of these abstract shapes.

if somebody finds this thread:
it’s a known issue with the glossy and transmisison layer

If you set the denoiser passes only to color the problem is solved. It’s not as good as using the normals for most cases, but if you have a big problem with glossy surfaces that’s is what you need to do for now.

Hello there everyone. I have been struggling lately with this problem and I am using a workaround that I liked more than what I’ve seen being suggested which was ignoring the albedo and the normal denoising passes.

What I found out is that you can pretty much substitute them for the normal and diffuse color passes with very good results. Of course, in many situations, the best would be to use the Cryptomatte mask to select only the materials you want to work with and use that technique, but it works pretty well out of the box, so I think it depends on how each scene reacts to that. In some cases, the albedo pass can provide information about indirect light that the diffuse can’t, but then you use the Cryptomatte mask and work with that only in the materials where the problem appears.
Here is the denoising albedo of my example:

The denoising normal pass:

Here it’s how the denoiser works using them:

Here you can see the standard workaround, ignoring those problematic passes. Note how the line disappears, but we lose detail in some areas, making the render look a bit blurry.

And finally here is the result of changing those passes for the normal and the diffuse color to retain details:

As I said, in many cases, the Ideal would be to use a Cryptomatte maks to isolate the materials we need to work with. But I think the results are pretty good anyway.