From BlenderWiki

Jump to: navigation, search

Light Paths

Ray Types

Ray types can be divided into four categories:

  • Camera: the ray comes straight from the camera
  • Reflection: the ray is generated by a reflection off a surface
  • Transmission: the ray is generated by a transmission through a surface
  • Shadow: the ray is used for (transparent) shadows

Reflection and transmission rays can further have these properties:

  • Diffuse: the ray is generated by a diffuse reflection or transmission (translucency)
  • Glossy: the ray is generated by a glossy specular reflection or transmission
  • Singular: the ray is generated by a perfectly sharp reflection or transmission

The Light Path node can be used to find out the type of ray the shading is being computed for.


Manual cycles light path rays.png

Bounce Control

The maximum number of light bounces can be controlled manually. While ideally this should be infinite, in practice a smaller number of bounces may be sufficient, or some light interactions may be intentionally left out for faster convergence. The number of diffuse reflection, glossy reflection and transmission bounces can also be controlled individually.

Light paths are terminated probabilistically when specifying a minimum number of light bounces lower than the maximum. In that case paths longer than minimum will be randomly stopped when they are expected to contribute less light to the image. This will still converge to the same image, but renders faster while possibly being noisier.

A common source of noise is caustics, which are diffuse bounces followed by a glossy bounce (assuming we start from the camera). An option is available to disable these entirely.

Transparency

The transparent BSDF shader is given special treatment. When a ray passes through it, light passes straight on, as if there was no geometry there. The ray type does not change when passing through a transparent BSDF.

Alpha pass output is also different for the transparent BSDF. Other transmission BSDFs are considered opaque, because they change the light direction. As such they can't be used for alpha-over compositing, while this is possible with the transparent BSDF.

The maximum number of transparent bounces is controlled separately from other bounces. It is also possible to use probabilistic termination of transparent bounces, which might help rendering many layers of transparency.

Note that while semantically the ray passes through as if no geometry was hit, rendering performance is affected as each transparency step requires executing the shader and tracing a ray.

Ray Visibility

Objects can be set to be invisible to particular ray types:

  • Camera
  • Diffuse reflection
  • Glossy reflection
  • Transmission
  • Shadow

This can be used, for example, to make an emitting mesh invisible to camera rays. For duplicators, visibility is inherited; if the parent object is hidden for some ray types, the children will be hidden for these too.

In terms of performance, using these options is more efficient that using a shader node setup that achieves the same effect. Objects invisible to a certain ray will be skipped in ray traversal already, leading to fewer rays cast and shaders executed.