AOVΒΆ

A Layer is split into AOVs (Arbitrary Output Values), which are the actual image rendering units. Each AOV in a RenderPass produces an image at rendering time.

Guerilla comes with default AOV presets covering common use cases, but you can customize them using the Light Path Expression syntax. Skip to the end of this page for interesting light expression examples.

the Spheres contains 3 AOVs, Beauty, Reflection and Specular.

AOVs can render various information, such as the beauty illumination, shading components such as Diffuse, Specular, and also technical images such as the Z depth, normal, ids. Also, AOVs can be filtered by lights, or objects, so it is possible to render the Diffuse component with only a set of light illuminated.

Add AOVs
  1. Press the button to add an AOV.
  2. Select an AOV in the dropdown list. Guerilla comes with many builtins AOVs available in the list which can be customized later.
Disable an AOV
  1. Uncheck the first checkbox in the Passes view, on the row corresponding to the AOV.
Render only some AOVs

Alternatively, you can also solo AOVs. In this case, only soloed AOVs are rendered.

  1. Check the solo checkbox in the Passes view, on the row corresponding to the AOV.
Duplicate an AOV
  1. Select the AOV you want to duplicate.
  2. Press the button to duplicate it.
Edit the RenderPass shading network

Some technical AOVs (like Occlusion or Z) use shading nodes in the RenderPass shader. To inspect this shader :

  1. Drag'n drop the RenderPass in any viewport.
  2. Inspect and edit the shader.

Render separate shading components

Guerilla can separately render the various shader components, such a diffuse, indirect diffuse, specular, reflections and other passes. In the Render Passes view, click the AOV dropdown to show possible outputs.

Beauty: this pass includes every shader components.

Diffuse: this pass is the direct lighting diffuse component.

IndDiffuse: this pass is the indirect lighting diffuse component.

Specular: this pass is the direct lighting specular component.

Reflection: this pass is the indirect lighting specular component.

Refraction: this pass is the indirect lighting refraction component.

SSS: this pass is the direct sub surface scattering component.

Incandescence: this pass is the incandescence component.

Render separate light category

Guerilla can also separate those shader components for every light category. Each light can be assigned to a light category, see Light Attributes > Category. Each AOV can be restricted to a subset of those light categories.

Restrict an AOV to a light category
  1. Use the Light -> Light Category attribute to specify the category of your lights.
  2. Specify which lights to filter in of the rendering by changing the AOV Light Categories attribute.

Guerilla comes with default presets of AOVs including light categories, as depicted in the following examples :

DiffuseKey: the Diffuse pass for the Key lights.

DiffuseFill: the Diffuse pass for the Fill lights.

DiffuseRim: the Diffuse pass for the Rim lights.

DiffuseEnv: the Diffuse pass for the Environment lights.

SpecularKey: the Specular pass for the Key lights.

SpecularFill: the Specular pass for the Fill lights.

SpecularRim: the Specular pass for the Rim lights.

SpecularEnv: the Specular pass for the Environment lights.

Render technical passes

You can also render extra technical passes, such as occlusion, depth, normal, position in camera or world space. Practically, this connects a shading network to the AOV.

Occlusion: a pass rendering an ambient occlusion.

Id: a pass rendering the Id dynamic attribute of the objects.

Z: a pass rendering the float distance from the screen.

Pcam: a pass rendering the position in camera space.

Pworld: a pass rendering the position in world space.

Ncam: a pass rendering the surface normal in camera space.

Nworld: a pass rendering the surface normal in world space.

st: a pass rendering the texture coordinates.

ShadowMask: a pass rendering the light shadows. Here, the lights ShadowId attributes have been set in Red, Green and Blue.

Disparity: a pass rendering the disparity between the right and the left stereo cameras.

TriangleId: a pass rendering every triangles with a random color. For debug purpose.

AOV Customization

You can customize any AOV in the AOV panel:

  • Name: The name of the AOV, also used to name the output file
  • Light Categories: List the light categories which will appear in this AOV
  • Accept Expression: The Light Path Expression of accepted paths
  • Ignore Expression: The Light Path Expression of ignored paths
  • Shader Color: The Name of the technical output used, if any
  • If you change the Name of the AOV using the selection menu, these values will be changed accordingly to the new selected preset. You can however manually set a custom name without using the selection menu.

    Light Path Expression customization

    Accept Expression and Ignore Expression are Light Path Expression. You can select a symbolic name associated with a preset using the selection menu or set your expression manually.

    Render an image with all lights path except the diffuse
    1. Set All in Accept Expression
    2. Set Diffuse in Ignore Expression
    Render an image with all paths lit by the RimLight, ignoring Caustics
    1. Set All in Accept Expression
    2. Set Caustics in Ignore Expression
    3. Set RimLight in Light Category

    Technical passes customization

    Technical passes relies on Accept Expression and Shader Color

    Render the primary albedo

    1. Set [Technical] Primary in Accept Expression
    2. Set Albedo in Shader Color
    Render the normals in world space seen through a mirror
    1. Set [Technical] Indirect Singular in Accept Expression
    2. Set Nworld in Shader Color
    If your Indirect technical albedo appears too white, set the Diffuse component of your material to black

    Advanced light path expressions

    If the default presets are not enough, you can customize them with Light Path Expression. The page on Light Path Expression syntax details the syntax, but the following overview may be enough for most needs.

    Using a mix of Accept Path and Ignore Path, you can filter in or out light paths based on their characteristics such as depth, type of interaction (diffuse, glossy, singular), reflection or refraction, name of object or lights. Technical passes are included in the framework, so you can get the normal of an object see through the reflection on another object.

    All the following examples uses Caustics as Ignore Path.

    This section use formatting to help readability. A label can appear in an event <L.'label'> which is part of a bigger light expression C'Alice'L.

    C.+L: The Scene is a cornel box composed of two spheres. Left red wall is tagged as RedWall and right blue wall is tagged as BlueWall. Top light is a white square light, tagged as White. Left square light is greenish and tagged as Green.

    CDL: Diffuse direct lighting.

    CD+L: At least one Diffuse. It includes Diffuse direct and indirect lighting.

    CDD+L: At least two Diffuses. This is Diffuse indirect. It may had been written as CD{2,}L.

    C<RS>L: Singular Reflection.

    C<RS>DL: A Singular Reflection followed by a Diffuse surface.

    C<RS>{2}DL: Exactly two Singular Transmissions followed by a Diffuse surface.

    CD<L.'Green'>: Direct lighting from the Green light.

    CD<L.'White'>: Direct lighting from the White light.

    CDD+<L.'Green'>: Indirect lighting from the Green light.

    C<RS><.D'RedWall'>L: Singular Reflection followed by the RedWall surface. It may had been written has C<RS>'RedWall'L because the RedWall is only composed of a Diffuse component.

    C<RS><I'Albedo'>: Albedo seen through one Singular Reflection.

    C<RS><I'Albedo''RedWall'>: Albedo of the RedWall seen through one Singular Reflection.

    C((<TS>{2}'BlueWall')|(<RS>'RedWall'))L: Two Singular Transmissions (through the glass) followed by lighting on the BlueWall, OR a Singular Reflection followed by the RedWall.