Render AOVs


Senior Compositor
Derek Rein
https://derekvfx.ca
An AOV, or "arbitrary output variable," is a component of a 3D render that is used to store a specific attribute or of an image. For example, an AOV could be used to store the diffuse color of an object, the reflections on its surface, or the shadows cast by other objects. AOVs allow compositors to fine-tune the appearance of an object or scene by adjusting specific attributes separately from the rest of the image.
Diffuse

Diffuse and specular reflection are two types of reflection that occur when light hits the
surface of an object. Diffuse reflection is the scattering of light in all directions from a surface, and is the primary source of light in a scene. It is responsible for the overall brightness and color of an object, and is a key aspect of its appearance. In contrast, specular reflection is the concentrated reflection of light from a surface in a single direction, and is the source of highlights and reflections on an object's surface. It is a key aspect of the way an object looks, and can help create the illusion of realism and depth in a scene.


Specular
Specular light is a reflection of a light source



Albedo
The albedo is a rendering component used to store the diffuse, or non-specular, color of an object. It is commonly used to separate the diffuse color of an object from its other attributes, such as reflections and shadows. This allows compositors to more easily manipulate and adjust the diffuse color of an object in a composite.


Refraction / Transmission
Refractions can be expensive to compute and challenging to art direct. Therefore in VFX, this will often be left to the compositor to simulate with the iDistort
node.

Data Layers
Additional data provided by the render engine which does not contribute to the "beauty", but can be used by compositors. Data layers need to be used unpremultiplied.
Depth

A depth pass is a rendering component used to store the distance of an object or surface from the camera. It is commonly used in compositing to create the appearance of depth and distance in a scene or used to drive the zDefocus node. A normalized depth pass uses a range of values from 0 to 1 to represent the distance of an object from the camera, with 0 representing the closest objects and 1 representing the furthest objects. This allows compositors to more easily manipulate the depth and distance of objects in a composite.
Normals

Normal represent the angle of the face represented by each pixel, the angle can be based on the location of the camera or in other words “Camera Space”, world space where the angle is based on coordinate system, and object space where normals are set to the objects coordinate system derrived from its rotational values. Most of the time you’ll want to render out camera space normals which has the added benefit of the blue channel equating to a facing ratio render.
Position

A position pass describes the actual position of the geometry represented by each pixel. ie, the origin if represented by geometry in the image, and is visible will have an RGB value of (0,0,0)


ID Mattes
Some VFX pipelines will render a selection of ID mattes to pick from. More commonly a tool called Cryptomatte is used to automatically generate selectable IDs based on materials, and object ids. This is essential in modern VFX workflow as feedback will often target specific elements or materials within a 3D render.

Motion Vectors
Motion vectors are used to represent the movement of an objects surface over time in screen space, and are commonly used to motion blur an image in comp. In a motion vector AOV, each pixel in an image is represented by a pair of vectors that indicate the direction and speed of movement for that pixel.
