These settings provide some general control over how lights are evaluated in Arnold.
![]() |
![]() |
| without Global Light Sampling | with Global Light Sampling (2x faster render time) |
In Arnold 7.2.1, we introduced the Global Light Sampling method, which analyzes the lights in the scene and automatically decides how best to distribute a globally specified number of light samples among all the lights in the scene. Unlike the older per-light sampling method, which required setting a light samples value for every light, Global Light Sampling just requires setting this one value, making it easier to use and tune. What's more, it allows for the global number of light samples to be less than the total number of lights, and therefore, it produces significantly faster renders when there are many lights.
For the best performance, use adaptive sampling with Global Light Sampling. With Global Light Sampling, you typically have fewer light samples, so you would probably see more noise with fixed (non-adaptive) AA sampling.
This new method can be enabled by setting the Light Samples parameter in the options node to a value larger than 0. By default Light Samples is 0, in which case per-light sampling is used.
Per-light sampling works by looping over all contributing lights in the scene at each shading point, and sampling each light L with the specified per-light sample count (L.samples^2). It works well when there are just a few lights contributing to the shading point, but render time will increase as the number of lights increases.
Global Light Sampling instead estimates the light contribution by taking just a fixed number of light samples (specified via the global Light Samples parameter) and preferentially choosing to sample lights contributing the most at each shading point. When there are multiple lights in the scene, this technique can be faster to render than per-light sampling, and can be significantly faster when there are a large number of lights.
Here is an example of the improved render times when using Global Light Sampling. This scene has light counts ranging from 10 to 100,000 and is rendered with adaptive sampling (AA=4, AA_max=20) in order to run until it achieves the same noise level image in each case:
![]() |
![]() |
![]() |
![]() |
| 10 lights | 100 lights | 1000 lights | 10000 lights |
The render times for per-light sampling and Global Light Sampling, here with one sample per light, and Light Samples = 2 for Global Light Sampling, are as below:
![]() |
We can see both techniques perform similarly for low light count. However, the render time for per-light sampling scales roughly linearly in the number of lights, while with Global Light Sampling, the render time grows with light count at a much reduced rate. At 10k lights, the Global Light Sampling technique is over 100 times faster.
When using the Global Light Sampling method on CPU, we recommend keeping Light Samples at 4 or fewer. On GPU, we recommend keeping Light Samples at 1. Generally, if the main source of light is from a Skydome Light or Distant Light, 1 or sometimes even no global light samples work best; otherwise, 4 for CPU and 1 for GPU tends to be near optimal. Very rarely do more samples significantly help, even if there are many lights.
With Global Light Sampling, the number of light samples affects noise and render times. The charts below show the speedups on CPU (relative to per-light sampling) for global light samples from 1 to 16. For most scenes, a value of 4 (the default in most Arnold plugins) gives a good speedup, and you can increase the Camera (AA) to deal with any noise.
![]() |
For GPU, the situation differs slightly. In the bar plot below, we show speedups (relative to per-light sampling) in different scenes for 1, 4, 8, and 16 light samples. Unlike with CPU, for GPU, using 1 light sample is often enough (except for Hangar and Tunnel scenes).
![]() |
In general, multiple factors influence efficiency:
Global Light Sampling has limitations, which we will address in future versions:
GLS now takes material glossiness into account when sampling, which greatly enhances the quality, especially when many small lights are present. It causes small slowdowns for fixed AA renders, but for adaptive renders, it brings overall speedups. For example, with adaptive in the robot scene below, we achieved 1.7x speedup. This feature can be enabled and disabled using GLS_glossy_enable.
|
|
| 7.3.5, fixed AA | 7.3.7, fixed AA |
Camera(AA): 2, Specular: 1.
Before introducing Global Light Sampling, we used the Low Light Threshold parameter to speed up rendering in many-lights scenes. It allows for trading off speed for bias by avoiding casting shadow rays for lights whose contribution is below a certain value. In some situations, this does not introduce a noticeable difference to the image, especially with lights of a finite area of influence, like a cityscape, for example.
When using Global Light Sampling, we recommend keeping the default value for the Low Light Threshold parameter as it performs well even with a large number of lights.
What is taken into account to discard a shadow ray is its maximum possible incoming irradiance, which is linearly related to the light's intensity and decreases with the square of the distance. The specific number will vary depending on exposure and light intensity values, but the default value is reasonable for the default exposure/light intensity values.
Setting the threshold too high might cause some artifacts in the image, such as visible boundaries of the light's area of influence and overall changes in brightness. In that case, the bias is perceptible, and the user is advised to lower the value of the threshold. The aim is to prune only lights that don't contribute to the final image.
In the example below, increasing the Low Light Threshold to 0.1 shows a good speedup in render time (in this case, more than twice as fast) with little noticeable difference in the image.
![]() |
![]() |
| Low light threshold: 0.01 | Low light threshold: 0.1 |
A slightly higher threshold can offer significant rendering speed increases without noticeably darkening the image.
However, increasing the Low Light Threshold value too much can have an adverse effect on the lighting:
![]() |
| Low light threshold: 1 |
The Utility shader's nlights color mode can be used to see how many lights are influencing a shading point when adjusting the Low Light Threshold.
![]() |