Material AOVs

A Material AOV is a RenderOutput that provides a diagnostic view of a material “property”, like color, emission, or roughness. This material “property” is specified through a custom LPE-like material aov syntax. Note: A Material AOV does NOT include any information that is influenced by scene lighting and occlusion is not considered. A Material AOV is specified by three attributes: label + selection + property.

Syntax

[('<Label>')+\.][(SS | R | T | D | G | M)+\.][fresnel\.]<property>

Properties

A property is a value that can be computed from a Bsdf closure returned from a material shader. There are currently 7:

  • albedo: result of shining an unoccluded, omnidirectional white light
  • color
  • emission: emitted radiance
  • factor: fresnel factor
  • normal
  • radius: sub-surface radius
  • roughness: glossy roughness

Selections

A selection is a portion of the bsdf closure we are interested in. A bsdf closure can consist of up to 8 lobes:

  • R / T = reflection / transmission
  • D / G / M = diffuse / glossy / mirror
  • fresnel = optional fresnel
  • SS = bssrdf
  • emission = emission color

Labels

Labels can be used to further refine material aov selection. Material shaders can assign multiple labels to bsdf lobes and bssrdf objects. You can add labels by doing the following:

  • updating “labels” in the associated .json file
  • passing them as an argument in ISPC:
    Closure_add...(... , /* labels = */ aov...|...);
    
  • passing them as an argument in C++:
    lobe->setLabel(aov...|aov...);
    

Notes:

  • any selected lobe or bssrdf must match at least one label
  • labels in the syntax are “or” operations

Existing Labels

Material Labels
BaseMaterial “diffuse”, “specular”, “directional diffuse”, “translucency”, “transmission”
HairMaterial Hair materials only have one lobe which can be accessed via the “hair” label. When use_optimized_sampling is OFF, the hair lobes will be split into four individual lobes: “hair R”, “hair TT”, “hair TRT”, “hair TRRT”
Dwa*Materials each has some subset of the following: “fuzz”, “outer specular” (clearcoat), “specular”, “diffuse”, “specular transmission” “diffuse transmission”
HairDiffuseMaterial “hair diffuse”
IrisMaterial “iris caustics”
GlitterFlakeMaterial “glitter”

Examples

RDLA Example

-- Example that outputs subsurface color
RenderOutput("/output") {
    ["file_name"] = "result0.exr",
    ["result"] = 7, -- material aov
    ["material aov"] = "SS.color"
}