AOV Read and AOV Write Shaders - Arnold User Guide
AOV Write Shaders
The AOV Write shaders allow you to write float, int, vector, or color data to custom AOVs.
There are two ways to use an AOV Write shader:
- As a global aov shader that runs after all surface, background, or atmosphere shading.
- As a passthrough node (for the beauty) in a shading tree on specific shapes.
Global AOV Shaders
Global AOV shaders are a list of shaders to be evaluated after regular surface shading. With global aov shaders, you can add shaders to write to specific AOVs without having to modify the original shader trees applied to shapes. These global AOV shaders also run for atmosphere and background contexts.
The global AOV shaders are listed in the Arnold render options. In an ass file, that looks like this:
options
{
outputs 2 1 STRING
"RGBA RGBA defaultArnoldFilter/gaussian_filter defaultArnoldDriver/driver_exr.RGBA"
"ao RGBA defaultArnoldFilter/gaussian_filter defaultArnoldDriver/driver_exr.RGBA"
aov_shaders "defaultArnoldRenderOptions/aov_write_rgba_util"
}
aov_write_rgba
{
name defaultArnoldRenderOptions/aov_write_rgba_util
aov_input aiUtility1
aov_name "util"
}
utility
{
name aiUtility1
shade_mode "ambocc"
overlay_mode "polywire"
}
The different Arnold plugins provide different ways to set up global AOV shaders. In Maya, you just add a shader to a custom AOV, and MtoA automatically inserts the required AOV write shader:
![]() |
In the other Arnold plugins, like Houdini and 3ds Max (and Cinema 4d and Katana too), you have to connect an AOV shader to the Arnold render settings:
![]() |
![]() |
Passthrough AOV Write Shaders
AOV Write shaders have a passthrough parameter, which allows you to insert them into a shading tree. For example, here's an AOV Write RGB shader in C4DtoA. A Standard Surface shader is still used for shading in the beauty AOV, and a Utility shader is used for a custom AOV.
![]() |
The Arnold nodes for this would look like this:
polymesh
{
name /pSphere1/pSphereShape1
shader "writeRgba1"
}
aov_write_rgba
{
name writeRgba1
passthrough aiStandardSurface2
aov_input utility1
aov_name "util"
}
utility
{
name utility1
shade_mode "ambocc"
overlay_mode "polywire"
}
standard_surface
{
name aiStandardSurface2
base 0.5
base_color 0.103779204 0.59212029 0.850649357
specular_roughness 0
specular_IOR 1.51999998
specular_anisotropy 0.5
transmission_depth 1
coat 1
coat_roughness 0
}
AOV Write parameters
Passthrough
Allows parallel evaluation in a shader network.
AOV Input (aov_input)
Input value to write to the AOV.
AOV Name (aov_name)
Name of the AOV.
Blend opacity (blend_opacity)
For transparent surfaces, this controls if only the first surface writes to the AOV, or if the value from all transparent surfaces is blended together.
AOV Read shaders
The AOV Read shaders allow you to read float, int or color data from built-in AOVs like N. AOV Read shaders can be useful to reformat built-in AOVs, for example to output normal maps derived from the built-in N AOVs when baking to texture. AOV Read shaders do not support LPE AOVs (like RGBA, direct_diffuse, and specular).
AOV Name (aov_name)
Name of the AOV.