Cycles feedback

There has been a fix today, perhaps it’s working fine now (haven’t tested myself)

https://developer.blender.org/rBfd9c4f166b61ac91db792c1d6b637f06faac902b

Related to the problem that I had mentioned above related to the option would seem to be inverted, I think that my build includes that commit.

Cycles X new version fd9c4f166b61 Cycles crashing when entering rendering in the viewport.

Update, I figured out this was caused by Optix completely missing from the system settings, yet the old “Optix” setting was selected from the previous version of blender, causing crashes. Switching to “Cuda” solves this crashing issue. Why is Optix missing?

I believe this might be expected behaviour in this specific scene.

At the moment as of commit rBfd9c4f166b61ac91db792c1d6b637f06faac902b, OIDN has “CleanAux” always enabled. How I understand it, with “CleanAux” enabled OIDN assumes that the auxiliary passes (Albedo and normal passes) are noise free and as such will try to retain as much detail as possible from these auxiliary passes as all the detail in these passes are detail that should be in the scene.

Along with “CleanAux”, there is the “Prefilter” option that is available in the user interface. From what I understand, what the prefilter does is it removes bits of noise from the auxiliary passes so you can denoise with “CleanAux” on in noisy scenes.

If you look at the scene you’ve provided, especially at 1 sample at 540p, you can see that with “Prefilter” turned on, you get a worse result. Why is that? I would take a guess that the “Prefilter” step is trying to remove “noise” from the auxiliary pass. And because of the low sample count (which results in aliasing) and low resolution, the fine pattern on the ground gets picked up as “noise” and so the prefilter step smooths it out, resulting in a worse image. With “Prefilter” off and only “CleanAux” on, you get the image you expect. Because the prefilter step isn’t blurring out the “noise”. Also, as you increase the sample count, and more importantly, increase the resolution with this specific scene, the issue with prefilter blurring the image is reduced as you now have more detail in the auxiliary passes and as such the prefilter step is less easily confused and decides that it’s noise.

Note: “Prefiltering” in OIDN 1.4.X isn’t some magic feature that will make all your renders look closer to the “ground truth”. It is a feature that CAN help in some cases, and be detrimental in others (mainly situations where the scene contains a lot fine detail that varies in direction and/or colour, such as in your scene).

1 Like

I have tested a lot of Cycles X builds (CPU + GPU), including the new one (fd9c4f166b61). Here are the results:

3660X / GTX1660 471.41 / 1920x1080 / 100 samples / OIDN

Additional notes: As you can see the latest build doesn’t have OptiX test results… because it doesn’t have OptiX available for some reason. Performance fluctuation still there. It can go as high as 22s and as low as 19s. Looks like OIDN now takes normals into account and it produces interesting results when used in the viewport. Now I can see more fine details when I move the camera around. Examples:

OIDN 1 sample (viewport):

OIDN 4 samples (viewport):

6 Likes

Nice to see OIDN improvement! Is this only for the OIDN option in the render properties or is this also implemented in the compositor denoise node?

How does your render point scoring work? Is higher points faster renders?

OIDN has been updated to v1.4.1 , so all the improvements OIDN v1.4.X brings should be available in the compositor and render properties.

However, the extra improvements (CleanAux and Prefilter) aren’t available in the compositor node yet.

1 Like

That is time in seconds.

I just compared today’s build (fd9c4f166b61) with yesterday’s build (8c577cd4040a) using my test file. The OIDN render time part in the old build was 12 seconds and in the new build 25 seconds. Changes are noticeable in the image, but they cannot be categorized as improvements.

Thus, OIDN has degraded by a factor of 2.08 (25 seconds to 12 seconds).

I hope that this will be investigated.

The most likely cause for this is the “prefilter” step of OIDN. You can disable it here:

According to Sergey, this step takes “0.5 seconds per pass” to process on a FullHD render with a Intel core i9-11900K. As you increase the resolution of the render, and change the hardware used this processing time will change.
Source: rBfd9c4f166b61

Try disabling it and seeing if that helps.

1 Like

Thank you very much for your helpful hint.

By deactivating I get back to the old fast values.
Since I work with an older PC, it is important for me to disable this most of the time and I hope that Cycles will disable this switch by default in the future, since the qualitative improvement seems to be only marginal for me.

By the way: You are doing a great job here

Update: Just did some more testing. This seems to be a CPU viewport only problem, and it is not really related to the light threshold, turning light threshold to 0 just made it easier to see, but it is not the cause of it. CPU is fine in the final render. GPU is fine both in viewport and final render.
CPU Viewport:

GPU Viewport:


Final render works fine for both CPU and GPU.

Now I am more confident that this is a bug. Hope it gets fixed soon. I still don’t understand why this is happening though, wonder why CPU viewport would look like this.

EDIT: Test Blend File:

Disabling it gives me this:

I guess I’ll just leave it on…

@Eary and @rtdietrich With the recent changes made to the Cycles-X branch of Blender in relation to OIDN, two things were changed.

  1. “CleanAux” is enabled at all times (unless using the compositing node (this may change in the future)).
  2. “Prefiltering” is an option you can change.

“CleanAux” being enabled at all times can mean you get artifacts like the one shown in the image below if your sample count is relatively low. “Prefiltering” can be used to help avoid this issue. But in the case of @rtdietrich where the use of prefiltering on a old processor introduces a lot of extra processing, it might be preferable to render with “CleanAux” off and “Prefiltering” off, ultimalty getting a blurrier render, but avoiding artifacts and long processing time. At the moment you can not adjust the “CleanAux” value without modifying the source code.

This issue was NOT present prior to the recent changes because the code was designed around OIDN V1.3 which did not have a “CleanAux” option.

sorry if this doesn’t make much sense.

I will bring this use case up with someone and see if the “CleanAux” setting can be exposed to the end user.

2 Likes

Hi. I really don’t understand anything about technical matters. The only thing I can say is that from that commit I get a similar result comparing Cycles-X before the Prefilter option is incorporated, with when Prefilter is ON in the new Cycles-X. In other words, now when Prefilter is OFF the result is worse than old version of Cycles-X before Prerfilter option is incorporated:
All tests performed with the following settings in the View Layer tab: Color+Albedo+Normal and Prefilter changes from that View Layer tab (just in case people think that Viewport similar option influences the final Render result)

Cycles-X (8c577cd4040a) - Fishy Cat 10 samples:

Cycles-X (fd9c4f166b61) - Prefilter OFF - Fishy Cat 10 samples:

Cycles-X (fd9c4f166b61) - Prefilter ON - Fishy Cat 10 samples:

Cycles-X (8c577cd4040a) - My Scene above - 1 sample

Cycles-X (fd9c4f166b61) - Prefilter OFF - My Scene above - 1 sample

Cycles-X (fd9c4f166b61) - Prefilter ON - My Scene above - 1 sample

So in my current state tests, Prefilter ON is the one that is giving similar results to Cycles-X when Prefilter option did not exist. I was really expecting that Prefilter OFF would be the one that looks the most like old Cycles-X when Prefilter option didn’t exist.

You can disable it for all future scenes you create by disabling it then saving that that file as your new default. That way each time you create a new file, the setting is disabled. Ideally this should be done after the Cycles-X branch is merged into the master branch of Blender.

For instructions on how to save a file as your new default, read below:

  1. Open Blender and make the changes you want to make.
  2. From the top of Blender select “File → Defaults → Save Startup File”
  3. Now you’re done. Every time you open Blender and create a new scene, it will start with the changes you made here.

This is correct. These are the results you observe and I observe in my own tests.

This is because of what happened in the recent OIDN changes. Two main settings were changed. “Prefiltering” and “CleanAux”. Actually, here’s a thing that will hopefully explain it better.

Prior to the recent commits, Blender would always denoise the scene with these settings:
CleanAux = off
Prefiltering = off

And this is the result you observe here:

With the recent commits, Blender will denoise the scene with these settings:
CleanAux = on
Prefiltering = Defined by the user in the UI

This means with “Prefiltering” off in the new version of Blender, the results WILL be different when compared to the old version. This is because “CleanAux” is on in this new version when it was not in the old version.

As for why the results with “Prefiltering” off look so much noiser compared to old versions of Blender, that’s because the “CleanAux” setting (which is now enabled at all times) introduces issues like these at low sample counts unless “prefiltering” is turned on.

As for why the “CleanAux” setting can’t be adjusted, that’s still up for debate. I’ve done an investigation into how useful it will be to have the “CleanAux” setting available to the user in the user interface and I’ve given the investigation results to the Blender developers, just waiting on their decision on whether or not to expose this setting to the user or make other adjustments.

Hopefully this helps? I’m sorry, I’m trying to keep messages short, and my though process changes a lot while writing them and I don’t know the technical knowledge of everyone here, so some of this may not make sense. Just ask if you want more information, or if you want a more technical explaination.

1 Like

Ok, I don’t know what to say. In principle I think this could get confusing in the simple logic of simple users like me. What is the new feature in OIDN 1.4? It is Prefilter. Oh, ok. so with Prefilter OFF give me a similar result to the one I got with OIDN 1.3. And that is not happening.

======
Now here a comparison with native NLM:

Cycles - NLM (default settings) - 100 samples

Cycles-X - OIDN Prefilter OFF - 100 samples:

Cycles-X - OIDN Prefilter ON - 100 samples: