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 lightcolor
emission
: emitted radiancefactor
: fresnel factornormal
radius
: sub-surface radiusroughness
: 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 / transmissionD
/G
/M
= diffuse / glossy / mirrorfresnel
= optional fresnelSS
= bssrdfemission
= 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"
}