Transmission And Opacity - Arnold User Guide
Transmission and Opacity are handled similarly in Arnold to other render engines, however, there are a few differences. The purpose of this document is to give users a better understanding of these differences as well as explaining when to use Opacity and when to use Transmission. These two ways of calculating transparency have different purposes, so are represented by different ray types and thus have different controls in the OpenPBR Surface shader as well as in the render settings. They can be used together but most of the time you'll want to use either one or the other.
The transmission lobe (controlled by Transmission Weight) represents the presence of a dielectric with translucent internal media. This is used to render glass, crystals, liquids, or other refractive materials (such as the glass dragon below).

Transmission can also be used in thin walled mode to represent thin sheets of transparent material, such as window panes.
The Opacity controls the presence of the surface itself. If set to zero, the surface is cut away and light can freely pass through. This is used for cases such as a "sprite" type of effect where one cuts out the shape of a leaf from a polygon card. Note this only strictly makes physical sense in the thin-walled mode, as cutting away the boundary of a solid object makes the interior ill-defined.
![]() |
![]() |
![]() |
Leaf mask driving the opacity | Leaf base color | Render |
Below is a 'sprite' example using opacity or transmission. The render using transmission (where the map has been reversed) looks like a thin pane of glass with a motif etched onto it. Opacity cuts out the shape completely whereas transmission leaves the specular reflection and refraction visible even on areas that are completely transparent. Setting the Specular IOR to 1 would "fix" this, but would also eliminate specular reflection, and be slower than simply using the opacity mask.
![]() |
![]() |
![]() |
Mask driving Opacity | Mask (inverted) driving Transmission | Mask |
The Opaque flag is set automatically by changing the Opacity or transmission on a material.
If rendering a thin pane of glass with a motif etched onto it as above, it would be more physically correct to enable Thin Walled so that the incident light is scattered by the thin rough pane but not refracted.
Using Transmission And Opacity Together
Although unusual, there are a few situations where combining transmission and opacity together in the same shader can be useful. Below are some examples of a simple glass sphere being cut out using a stripe mask:
![]() |
![]() |
![]() |
Transmission only | Mask texture | Mask -> Opacity |
While an interesting effect, this is somewhat physically incorrect as the rays entering the glass sphere may leave the sphere through a hole and thus never exit the glass (similarly, rays strike the interior of the glass without ever entering).
There are some tips which can further speed things up:
When using Opacity for sprites, make sure that the mask is pure black and white away from the mask edge, for example in the black areas there shouldn't be any noise or other imperfections as that will have a negative effect on the render times. For example it's not a good idea to use JPEG textures for masks as they often have compression artifacts.
When rendering objects with transmission, such as the dragon above, it can speed things up a lot to disable the internal reflections using the checkbox on the shader (this can also be achieved with a Ray Switch shader). While less physically correct, this greatly reduces the render time while producing a plausible glass appearance still.
Transmission and Alpha
If you want to see transmission in the alpha channel, enable Transmit AOVS (under Transmission of OpenPBR Surface). If you are using a Skydome Light, set its Transmission Weight to 0.
![]() |
![]() |
![]() |
Beauty | Default alpha of beauty AOV | Alpha using Transmit AOVs |