in what scenario is one better than the other
I’m going to assume you’re asking:
“When is it better to use
Automatic Scrambling Distanceif I want the best performance?”
I added the condition of
Automatic Scrambling Distance to simplify things. And I’ve made this a question about performance as the goal of
Adaptive Sampling and
Automatic Scrambling Distance is to improve performance while maintaining good image quality.
Let’s start by explaining what each does:
Adaptive sampling takes a look at your render during the render process and analyzes the noise in the render. If an area is deemed to be “within the set noise threshold”, adaptive sampling will stop sampling that area of the scene.
This can result in speed increases as with adaptive sampling some areas of the scene get lower sample counts than others, resulting in a faster render due to less overall processing. For example, a scene might render and the sky is rendered with 64 samples, a rock is rendered with 128 samples, some grass is rendered with 1024 samples, etc. Doing this is quicker than rendering the entire scene at 1024 samples, all while hopefully looking very similar in terms of noise level.
Automatic Scrambling Distance:
Automatic Scrambling Distance reduces the randomness between samples of neighboring pixels. This, in combination with some other code changes, increases correlation between pixels, which results in better utilization of cache on your rendering device, resulting in reduced need to gather information from VRAM/RAM, resulting in improved performance. The reduction in randomness between samples of neighboring pixels is automatically picked when
Automatic Scrambling Distance is enabled such that the final render generally looks the same as it would if the setting was off.
At the moment
Automatic Scrambling Distance has only been found to provide a performance increase when rendering with the GPU. Rendering with the CPU sees very little to no performance increase compared to having the setting off.
From my own testing, I’ve also found that a sample count of 64 or higher is generally needed for
Automatic Scrambling Distance to provide a performance increase. And with a higher sample count, the greater the performance increase. (E.G. At 64 samples, you might get a 1% performance increase by turning on this setting. But at 4096 samples you might get a 20% performance increase)
Now onto “which is better”.
Let’s start with a simple thing. If you’re rendering with your CPU, and CPU only, then
Adaptive Sampling will generally be better for performance than
Automatic Scrambling Distance. This is because
Automatic Scrambling Distance has no measurable performance benefit for CPUs while
Adaptive Sampling does. This may change with future generations of CPUs. But at the moment this is the case.
If you’re rendering with your GPU, then you can start to investigate which one is better for performance.
Generally speaking, if
Adaptive Sampling ends up bringing the majority of the image to roughly the same sample count (E.G. 80% of the image is in the range of 1800-2200 samples), then changing your sample count to the middle of that range (2000 samples) and enabling
Automatic Scrambling Distance will generally result in better performance with comparable image quality.
Adaptive Sampling renders the image with a really wide range of sample counts (20% is at 4000 samples, 30% is at 2000 samples, 30% is at 1000 samples, 20% is at 500 samples) and these sample counts are justified to achieve the required noise level, and a large portion of the image is complex to render (E.G. Requires light bounces to render), then
Adaptive Sampling tends to be better for performance at the same quality when compared against
Automatic Scrambling Distance.
These are just general rules though. And there may be other situations where one is better than the other in terms of performance or noise level.
One last thing though. If you’re rendering an animation with the
Animated Seed parameter turned on, then I’ve personally found
Adaptive Sampling to produce a more temporally consistent result than
Automatic Scrambling Distance and as such would recommend
Adaptive Sampling for animations with an animated seed. But I might just be mis-remembering things.
thanks for the detailed answer.
i came up with some follow up questions,
why scrambling distance cant be used together with adaptive sampling?
which is better sobol or pmj for both method
is scrambling distance performance increase depends on how much VRAM is used? for example a scene that uses a lot of vram will get a better performance increase. a scene that uses very little vram will have little benefits
what if I used all the VRAM and started to use a lot of the system memory? will scrambling distance be less effective in that case?
Rendering artifacts can occur when you combine the two. I have created a patch that tunes the
Automatic Scrambling Distance setting to avoid the artifacts here: ⚙ D13325 Allow Enabling Adaptive Sampling with Scrambling Distance If this patch gets accepted by the Cycles developers, then you can enable both at the same time.
Adaptive Sampling, you don’t have a choice, PMJ is used if
Adaptive Sampling is on.
As for Scrambling Distance, I don’t know which one is “better”. However, since the Cycles developers want PMJ to be the default in all situations, I suspect PMJ is “better” in some way.
I don’t know the answer to this. Sorry.
thanks for the answer
I just wanted to add that the
Scrambling Distance option can be great for certain NPR renders.
This is an example of a scene I made where I was experimenting with developing a concept art style of rendering:
It really cuts down on the noise (and with lower samples required!), while at the same time introducing splotches of light that give hints of a digitally painted look. I’m not sure if this holds up with higher resolutions, but it works well for my lowres, pixelated workflow.
(Original game art is from a game made by Sierra On-Line back in 1989.)