Ray Depth - Arnold User Guide
Ray depth allows you to configure settings that limit the ray recursion based on ray type. Higher values will increase render time.
Total
Specifies the total maximum recursion depth of any ray in the scene (diffuse + transmission + specular <= Total).
Diffuse
Defines the maximum ray diffuse depth bounces. Zero diffuse is equal to disabling diffuse illumination. Increasing the depth will add more bounced light to the scene, which can be especially noticeable in interiors. You may notice subtle differences when increasing the diffuse bounces incrementally. For example, the top of the cube has no light on it with the diffuse set to 1, whereas it is visible with the diffuse set to 2.
![]() |
![]() |
![]() |
0. No bounced light. | 1. Light is bouncing round the scene but is still quite dark in areas. | 2. More diffuse rays illuminate the scene even further. The top of the cube on the right is now receiving indirect light. |
Below is an example showing the dramatic difference that Diffuse Ray Depth can have in an interior scene. Note the effect of the bounced light on the floor behind the door when rendering with Diffuse Ray Depth 2 compared to Diffuse Ray Depth 1 and 0.
![]() |
![]() |
![]() |
0 (direct lighting only) | 1 (default) | 2 |
We can see a difference in the appearance (and render time) when increasing the Diffuse Ray Depth in the production scenes below:
![]() |
![]() |
1 (default) | 3 |
![]() |
![]() |
1 (default) | 3 |
The current Arnold code will only take one random sample after a split has happened in the ray tree, causing the regions behind transmission/specular reflections and diffuse to have much fewer shadow samples than those that are viewed directly by the camera. Splitting occurs after the first bounce.
![]() |
Diagram showing how diffuse rays are propagated in an Arnold render. |
You can see the effect that increasing the Diffuse Ray Depth has on the number of rays per pixel and how that impacts render time by checking the render log.
Rendering using the 'raycount' AOV shows the total number of rays that are created/traced to compute a certain pixel ( diffuse, specular and shadow rays are shown).
![]() |
![]() |
ray depth: 1 - 1206 rays/pixel - 5 min 29 secs | ray depth_: 4 - 2897 rays/pixel - 15 mins 2 secs |
Images rendered using the builtin raycount AOV
Specular
Defines the maximum number of times a ray can be specularly reflected. Scenes with many specular surfaces may require higher values to look correct. A minimum value of 1 is necessary to get any specular reflections.
![]() |
![]() |
![]() |
0 | 1 | 3 |
Having a high enough specular_ray_depth is particularly important when rendering a complex model such as a car head light, where many specular bounces are required.
![]() |
![]() |
1 (default) | 6 |
Transmission
The maximum number of times a ray can be refracted. Scenes with many refractive surfaces may require higher values to look correct.
![]() |
Glass surface with double-sided thickness |
![]() |
![]() |
2 | 8 |
Volume
This parameter sets the number of multiple scattering bounces within a volume (defaults to 0). This is useful when rendering volumes such as clouds for which multiple scattering has a large influence on their appearance.
![]() |
![]() |
0 | 5 |
Transparency Depth
The number of allowed transparency hits. With 0 objects will be treated as opaque. The example below consists of six glass cubes that are sitting on top of each other. Arnold returns black when there is an insufficient number of rays due to the limit imposed by the transparency_depth. Increasing this value allows more rays to pass through transparent surfaces. In this case, a Transparency Depth of 12 is enough to get a good result.
![]() |
![]() |
![]() |
2 | 6 | 12 |