12
$\begingroup$

Is there any trick to increase performance in background-only tiles in cycles. As you can see in the pictures, an empty render takes more than one minute. When you render motion graphics animations, there are a lot of these empty tiles in every frame, so it would decrease reder times quite a bit.

Thanks.

settings

render

$\endgroup$
  • 1
    $\begingroup$ As of 2.74 RC, if the background is entirely black, it will be ignored, making it faster. $\endgroup$ – someonewithpc Mar 23 '15 at 14:08
  • 1
    $\begingroup$ mmm, it doesn't seem to be the case in my master build. $\endgroup$ – DavidGasku Mar 24 '15 at 12:41
  • 1
    $\begingroup$ I've tried rc2, up to date master, and 2.73. Yes, maybe there is a little improvement, not much. $\endgroup$ – DavidGasku Mar 24 '15 at 15:43
  • 1
    $\begingroup$ I guess, it is just that all the samples are calculated even for background, maybe something like adaptive sampling is necesary to speed-up background. $\endgroup$ – DavidGasku Mar 24 '15 at 15:45
  • 1
    $\begingroup$ @someonewithpc Black backgrounds have been optimized but still take time to render. rendering 100% black will not result in realtime rendering. So they have not been ignored. Just optimized. $\endgroup$ – Johnson Martin Mar 24 '15 at 17:07
6
$\begingroup$

As of Blender 2.83 (currently in alpha at the time of this post), this can be solved by using the "Adaptive Sampling" option in Cycles. Adaptive sampling will automatically stop sampling in areas of the frame that are no longer noisy. To enable it, check the "Adaptive Sampling" box in Render Settings > Sampling

screenshot showing the adaptive sampling checkbox in the sampling panel

Once adaptive sampling is enabled, the render and viewport samples settings become the maximum number of samples that a pixel can have. How many samples a pixel actually gets will be adjusted automatically based on how noisy it is. Once Cycles sees a pixel as no longer being noisy, it will stop sampling it.

Under Sampling > Advanced, there are 2 additional options, Adaptive Min Samples, and Adaptive Threshold. Both are set to 0 (automatic) by default.

screenshot of advanced sampling panel, with adaptive settings circled

Adaptive Min Samples dictates how many samples Cycles will take before beginning to check if a region is noise-free. Checking for completion adds some overhead, so you don't want to do it when the image is still hopelessly noisy. The default setting of 0 puts this in automatic mode, which will set it to the square root of the maximum samples setting. This is good enough in most cases, although if you're using a high number of samples (such as several thousand) and have blank areas in your frame, manually setting it to a value such as 32 may give some performance improvement.

Adaptive Threshold sets a metric that defines when a pixel is "no longer noisy". The default of 0 puts this in automatic mode, which is usually fine if you're using denoising. If you need to adjust it manually, smaller values correspond to less noise. For final renders, values such as 0.001 are common.

In this example image, adaptive sampling allows the render to finish twice as fast (10sec instead of 20sec) at 1024 samples while producing the same final image.

example render of Suzanne on a plane, there is a large amount of empty space on the sides

By enabling the "sample count" pass, you can see a "heatmap" of where Cycles needed to use more samples. Darker values show fewer samples, with the darkest being areas that stopped right away at the minimum number of samples. Brighter values show more samples, with white being areas that went all the way to the maximum number of samples.

example of the sample-count pass from the above Suzanne render.

| improve this answer | |
$\endgroup$
3
$\begingroup$

It really depends on what type of motion graphics you are trying to render. I would question whether you need the full 576 samples to achieve the renders you want.

Decrease AA Samples - If you switch to Branched Path Tracing, keeping square samples on, I would try reducing the effective AA samples to 20 or under (try 4 or 5 in square sample mode). You can increase the other sample rates to get multiples that equal 576 (although you may not need it for Transmission, Volume or Subsurface, depends on your scene). Decreasing the AA samples will speed up background tile rendering significantly. As long as you have enough AA quality for the edges of your rendered objects, you should be fine.

Turn Off Sample All Indirect Lights - Also I'd turn off "Sample All Indirect Lights" if it doesn't affect your scene quality noticeably. It will make quite a difference.

Optimize Tile Size - Small tile sizes (16-32 for CPU) seem to be more efficient around the edges of objects where there is a transition area between object and background. However, once the tiles are rendering 100% background it seems a little larger tile size (64-128) is more efficient in Cycles. You need to find the optimum balance between the 2 sizes depending on how much background is being rendered in the frame.

enter image description here

If these suggestions do not help, perhaps you could share a sample frame render so we can see the type of scenes you are trying to render.

| improve this answer | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.