Ray Depth

 

Ray Depth allows you to configure settings that limit the ray recursion based on ray type. Higher values will increase render time.

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.

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 ray depth 2 compared to ray depth 1 and 0.

We can see a difference in the appearance (and render time) when increasing the ray depth in the production scenes below: 

Diffuse ray depth: 1 (default). Roll over image to view 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). 

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. 

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.


Volume Indirect

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.

Specifies the total maximum recursion depth of any ray in the scene (diffuse + transmission + specular <= Total).

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.

Low Light Threshold

Raising this value can speed up rendering by allowing Arnold to ignore tracing a shadow ray for light samples whose light contribution is below a certain value. The point of low_light_threshold is to save casting shadow rays when Arnold knows that the error from not casting that ray is below a certain amount. This makes sense because below a certain threshold there will be no perceptible difference between shadowed and unshadowed areas.

Roughly, 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 distance. The specific number will vary depending on your exposure and light intensity values, but the default value is reasonable for the default exposure/light intensity values. This will typically help more in scenes with lots of lights with a finite area of influence, like a cityscape for example. It will help much less with a single strong source of light.

You should never be able to see the boundary when this optimization kicks in. If you can see it, you need to make the threshold lower. The aim is to prune shadow rays 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.

A slightly higher threshold can offer significant rendering speed increases without noticeably darkening the image (rollover image).

 

However, increasing the low_light_threshold value too much can have an adverse effect on the lighting:

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. 

low_light_threshold: 0 to 1. Red = all lights, blue = low values, black = no lights.