Render AOVs

August 20, 2024
No Alt

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

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.

diffuse direct
diffuse indirect

⁠Specular

Specular light is a reflection of a light source

specular
specular direct
specular indirect

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.

albedo
albedo example

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.

transmission

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

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

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

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)

position
position matte

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.

id matte

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.

vectors