"Noisy Image" pass not matching "Combined" pass is not well documented. #77185

Closed
opened 2020-05-30 04:28:45 +02:00 by Alaska · 23 comments
Member

System Information:
Operating system: Linux-5.4.0-7629-generic-x86_64-with-debian-bullseye
Graphics card: NA

Blender Version:
Broken: 2.82a, 2.83.0 (2020-05-29 17:42) blender/blender@691a1e3357, 2.90.0 (2020-05-29 18:08) blender/blender@2ee94c954d
Worked: Unsure

Short description of error:
The Blender manual describes the render pass "Noisy image" as:

If denoising is enabled, the original combined pass before denoising.

The noisy image pass is not the same as the "original combined pass" before denoising. It seems to be missing some samples.

Screenshot from 2020-05-30 14-21-15.png
Screenshot from 2020-05-30 14-23-27.png

If this is difficult to fix, the manual should be updated to reflect that these two passes are different.

Exact steps for others to reproduce the error:

  1. Open Blender with default file.
  2. Change render engine to Cycles.
  3. Select the default cube and increase the "Subsurface" factor of the Principaled BSDF to 1 (the issue is quite notable with Subsurface scattering materials)
  4. Change the samples to something low like 2 (the issue is quite noticeable at low sample counts)
  5. In the "View layer" tab of the properties editor enable "Denoising data".
  6. Render a image and compare the noisy output from the "Combined pass" and "Noisy image pass". They will be different.

In the following .blend the first 5 steps have been done for you.
#77185.blend


On further investigation I realize some stuff and now believe this is more of a design question.

@EAW has commented below explaining that the reason why there's a difference between the "Combined" pass and the "Noisy Image" pass is most likely due to the removal of some outliers to make the image easier to work with, specifically for the default Blender denoiser.

With further tests I've noticed that when the OptiX denoiser is used, a normal "noisy image" pass is generated, once again confirming the differences are probably due to the denoiser being used.

The only issue I can see now is that when the "OptiX AI-Accelerated" denoiser is ticked, even if the denoiser is deactivated (see image below), then the non-outlier removed "Noisy Image" pass is generated. This means that if you rendered the animation and saved the frames as multi-layer EXRs and wanted to feed it back into Blender to use with the Animation denoiser developed by Lukas Stockner, you could get weird results as the "Noisy Image" pass may not match what's required by the denoiser set up when you run the animation denoiser. Sorry if this doesn't make much sense.
Capture.PNG

This really is an obscure use case. Especially with the animation denoiser being buried in the python console. But it's still a concern of some kind. I'm fine if you close the report, but it's something to be considered if the animation denoiser is implemented as a user facing feature into Blender.

See D3889 for the history, discussion, and information on the animation denoiser

**System Information:** Operating system: Linux-5.4.0-7629-generic-x86_64-with-debian-bullseye Graphics card: NA **Blender Version:** Broken: 2.82a, 2.83.0 (2020-05-29 17:42) `blender/blender@691a1e3357`, 2.90.0 (2020-05-29 18:08) `blender/blender@2ee94c954d` Worked: Unsure **Short description of error:** The [Blender manual ](https://docs.blender.org/manual/en/dev/render/layers/passes.html) describes the render pass "Noisy image" as: > If denoising is enabled, the original combined pass before denoising. The noisy image pass is not the same as the "original combined pass" before denoising. It seems to be missing some samples. ![Screenshot from 2020-05-30 14-21-15.png](https://archive.blender.org/developer/F8564279/Screenshot_from_2020-05-30_14-21-15.png) ![Screenshot from 2020-05-30 14-23-27.png](https://archive.blender.org/developer/F8564281/Screenshot_from_2020-05-30_14-23-27.png) If this is difficult to fix, the manual should be updated to reflect that these two passes are different. **Exact steps for others to reproduce the error:** 1. Open Blender with default file. 2. Change render engine to Cycles. 3. Select the default cube and increase the "Subsurface" factor of the Principaled BSDF to 1 (the issue is quite notable with Subsurface scattering materials) 4. Change the samples to something low like 2 (the issue is quite noticeable at low sample counts) 5. In the "View layer" tab of the properties editor enable "Denoising data". 6. Render a image and compare the noisy output from the "Combined pass" and "Noisy image pass". They will be different. In the following .blend the first 5 steps have been done for you. [#77185.blend](https://archive.blender.org/developer/F8564735/T77185.blend) --- On further investigation I realize some stuff and now believe this is more of a design question. @EAW has commented below explaining that the reason why there's a difference between the "Combined" pass and the "Noisy Image" pass is most likely due to the removal of some outliers to make the image easier to work with, specifically for the default Blender denoiser. With further tests I've noticed that when the OptiX denoiser is used, a `normal` "noisy image" pass is generated, once again confirming the differences are probably due to the denoiser being used. The only issue I can see now is that when the "OptiX AI-Accelerated" denoiser is ticked, even if the denoiser is deactivated (see image below), then the `non-outlier removed` "Noisy Image" pass is generated. This means that if you rendered the animation and saved the frames as multi-layer EXRs and wanted to feed it back into Blender to use with the Animation denoiser developed by Lukas Stockner, you could get weird results as the "Noisy Image" pass may not match what's required by the denoiser set up when you run the animation denoiser. Sorry if this doesn't make much sense. ![Capture.PNG](https://archive.blender.org/developer/F8564873/Capture.PNG) This really is an obscure use case. Especially with the animation denoiser being buried in the python console. But it's still a concern of some kind. I'm fine if you close the report, but it's something to be considered if the animation denoiser is implemented as a user facing feature into Blender. See [D3889](https://archive.blender.org/developer/D3889) for the history, discussion, and information on the animation denoiser
Author
Member

Added subscriber: @Alaska

Added subscriber: @Alaska

blender/blender#85298 was marked as duplicate of this issue

blender/blender#85298 was marked as duplicate of this issue

blender/blender#77278 was marked as duplicate of this issue

blender/blender#77278 was marked as duplicate of this issue
Member

Added subscriber: @EAW

Added subscriber: @EAW
Member

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'
Member

I could have sworn that I have previously read an explanation for it (maybe deleting outliers?), but my searching turns up empty, so marking it as confirmed.

Note that the pixel locations where there is a difference between the Combined Pass and the Noisy Image Pass is also where the Denoising Depth Pass <0.

Comp_Nodes.png

#77185.blend

It seems that something is subtracted from the Diffuse Direct Pass before it is used to create the Noisy Pass (if that is indeed how it works on the backend.)

Tested using 2.90.0 alpha 2ee94c954d67

I could have sworn that I have previously read an explanation for it (maybe deleting outliers?), but my searching turns up empty, so marking it as confirmed. Note that the pixel locations where there is a difference between the `Combined Pass` and the `Noisy Image Pass` is also where the `Denoising Depth Pass` <0. ![Comp_Nodes.png](https://archive.blender.org/developer/F8564732/Comp_Nodes.png) [#77185.blend](https://archive.blender.org/developer/F8564735/T77185.blend) It seems that something is subtracted from the `Diffuse Direct Pass` before it is used to create the `Noisy Pass` (if that is indeed how it works on the backend.) Tested using 2.90.0 alpha 2ee94c954d67
Author
Member

I could have sworn that I have previously read an explanation for it (maybe deleting outliers?)

Do you mean the "noisy image" pass deletes outliers? Because if that was the cause, then in theory the noisy pass would produce better results when working with the intel denoiser. From my personal experience on past projects this isn't the case. I will retest and post a .blend file with examples if they're still present. (I believe the difference between the noisy pass and combined pass has reduced in recent versions of blender which is why I'm not so certain that I will be able to reliably reproduce the issue with the denoiser)

> I could have sworn that I have previously read an explanation for it (maybe deleting outliers?) Do you mean the "noisy image" pass deletes outliers? Because if that was the cause, then in theory the noisy pass would produce better results when working with the intel denoiser. From my personal experience on past projects this isn't the case. I will retest and post a .blend file with examples if they're still present. (I believe the difference between the noisy pass and combined pass has reduced in recent versions of blender which is why I'm not so certain that I will be able to reliably reproduce the issue with the denoiser)
Author
Member

Edit: I realize now that when you enable the OptiX denoiser, the "outlier removed" noisy image pass is no longer used.


Here's an example scene:
#77185 - Comparison Scene.blend
In both images I used the Intel denoiser in the compositor to denoise the image. As you can see, the one on the right (Denoised using the "noisy image" pass) produces weird artifacts that don't occur in when denoising using the "Combined" pass. Presumably due to the information difference between the two passes.

#77185 - Comparison.png

If the "noisy image" pass is setup in such a way to remove outliers (as I assume that's what @EAW means), then I can understand the reasoning behind it. If the standard Blender denoiser works better with this "outlier removed" pass, then it should stay in Blender. Especially if the animation denoiser by Lukas Stockner gets implemented into Blender as a user facing feature. But this can also cause issues else where. For example, I've noticed that the OptiX denoiser can generate a patchy look to the image due to the tile nature of how it operates. This can be fixed by using the Intel denoiser in the compositor if you find that OptiX doesn't give you the results you want, but with the "Noisy image" pass being the way it is at the moment, then using the "Noisy image" pass could produce more artifacts (as can be seen in the photo above).

Edit: I realize now that when you enable the OptiX denoiser, the "outlier removed" noisy image pass is no longer used. --- Here's an example scene: [#77185 - Comparison Scene.blend](https://archive.blender.org/developer/F8564841/T77185_-_Comparison_Scene.blend) In both images I used the Intel denoiser in the compositor to denoise the image. As you can see, the one on the right (Denoised using the "noisy image" pass) produces weird artifacts that don't occur in when denoising using the "Combined" pass. Presumably due to the information difference between the two passes. ![#77185 - Comparison.png](https://archive.blender.org/developer/F8564842/T77185_-_Comparison.png) If the "noisy image" pass is setup in such a way to remove outliers (as I assume that's what @EAW means), then I can understand the reasoning behind it. If the standard Blender denoiser works better with this "outlier removed" pass, then it should stay in Blender. Especially if the animation denoiser by Lukas Stockner gets implemented into Blender as a user facing feature. But this can also cause issues else where. For example, I've noticed that the OptiX denoiser can generate a patchy look to the image due to the tile nature of how it operates. This can be fixed by using the Intel denoiser in the compositor if you find that OptiX doesn't give you the results you want, but with the "Noisy image" pass being the way it is at the moment, then using the "Noisy image" pass could produce more artifacts (as can be seen in the photo above).

Added subscriber: @bent

Added subscriber: @bent
Author
Member

Upon further investigation I've found that in some situations the "Noisy Image pass" being different from the "Combined pass" can be beneficial while others show it being detrimental.

Now I'm confused about what to do with this report. In theory the only issue is technically the documentation. But also how the passes are handled in situations where someone wanted to use the animation denoiser.

Upon further investigation I've found that in some situations the "Noisy Image pass" being different from the "Combined pass" can be beneficial while others show it being detrimental. Now I'm confused about what to do with this report. In theory the only issue is technically the documentation. But also how the passes are handled in situations where someone wanted to use the animation denoiser.
Member

Added subscriber: @AdamPreisler

Added subscriber: @AdamPreisler

Added subscriber: @brecht

Added subscriber: @brecht

@brecht Could you please shed some light onto this? I keep having artifacts because I forget to turn normal denoising off and noisy image pass has clamped values.

@brecht Could you please shed some light onto this? I keep having artifacts because I forget to turn normal denoising off and noisy image pass has clamped values.
Author
Member

Changed status from 'Confirmed' to: 'Archived'

Changed status from 'Confirmed' to: 'Archived'
Alaska self-assigned this 2020-06-29 09:28:23 +02:00
Author
Member

Changing to Invalid as the denoiser seems to be operating as expected. We'll also get "clean" denoising passes better suited for OIDN with the patch for the task: blender/blender#76259 (assuming you don't already own a compatible Nvidia GPU to use OptiX denoising)

Changing to `Invalid` as the denoiser seems to be operating as expected. We'll also get "clean" denoising passes better suited for OIDN with the patch for the task: blender/blender#76259 (assuming you don't already own a compatible Nvidia GPU to use OptiX denoising)
Member

@AdamPreisler see this and the next 3 comments in this thread.
https://devtalk.blender.org/t/cycles-oidn-support/5783/25

@AdamPreisler see this and the next 3 comments in this thread. https://devtalk.blender.org/t/cycles-oidn-support/5783/25
Member

Added subscriber: @deadpin

Added subscriber: @deadpin
Evan Wilson changed title from "Noisy Image" pass not matching "Combined" pass. to "Noisy Image" pass not matching "Combined" pass is not well documented. 2021-02-02 18:42:07 +01:00
Alaska was unassigned by Evan Wilson 2021-02-02 18:42:07 +01:00
Evan Wilson self-assigned this 2021-02-02 18:42:07 +01:00
Member

Changed status from 'Archived' to: 'Confirmed'

Changed status from 'Archived' to: 'Confirmed'
Member

I am reopening this and assigning it to myself with the intent to update the manual.

I am reopening this and assigning it to myself with the intent to update the manual.
Contributor

Added subscriber: @Raimund58

Added subscriber: @Raimund58

This issue was referenced by blender/cycles@5db8d93df3

This issue was referenced by blender/cycles@5db8d93df3800ed9e90651ca305611c0612e606d

This issue was referenced by blender/blender@0803119725

This issue was referenced by blender/blender@08031197250aeecbaca3803254e6f25b8c7b7b37

Changed status from 'Confirmed' to: 'Resolved'

Changed status from 'Confirmed' to: 'Resolved'
Sign in to join this conversation.
No Milestone
No project
No Assignees
7 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender-manual#77185
No description provided.