Here’s a simple kick trick to get a list of AOVs and LPEs.
The -laovs flag lists all the AOVs in the loaded scene, but if you give kick no input, you’ll get a list of all built-in AOVs defined by Arnold.
For example, on Windows, run kick -laovs -i Nul
On Linux or macOS, run kick -laovs -i /dev/null
kick -laovs -i Nul
Type: Name: LPE:
VECTOR2 motionvector (~)
RGBA RGBA C.*
VECTOR N (~)
FLOAT Z (~)
RGB direct C[DSV]L
RGB indirect C[DSV][DSVOB].*
VECTOR Pref (~)
RGB albedo C[DSV]A
RGB emission C[LO]
RGB diffuse_direct C<RD>L
RGB background CB
RGB denoise_albedo ((C<TD>A)|(CVA)|(C<RD>A))
RGB sss_albedo C<TD>A
RGB specular_albedo C<RS[^'coat''sheen']>A
RGB diffuse C<RD>.*
FLOAT cputime (~)
RGB diffuse_indirect C<RD>[DSVOB].*
RGB sss_indirect C<TD>[DSVOB].*
RGB diffuse_albedo C<RD>A
FLOAT volume_Z (~)
RGB specular C<RS[^'coat''sheen']>.*
RGB coat_direct C<RS'coat'>L
RGB specular_direct C<RS[^'coat''sheen']>L
RGB specular_indirect C<RS[^'coat''sheen']>[DSVOB].*
RGB volume_direct CVL
RGB coat C<RS'coat'>.*
RGB coat_indirect C<RS'coat'>[DSVOB].*
RGB coat_albedo C<RS'coat'>A
RGB sheen C<RS'sheen'>.*
RGB transmission C<TS>.*
RGB transmission_direct C<TS>L
RGB transmission_indirect C<TS>[DSVOB].*
VECTOR2 AA_offset (~)
RGB transmission_albedo C<TS>A
VECTOR P (~)
RGB sheen_direct C<RS'sheen'>L
RGB volume CV.*
RGB sheen_indirect C<RS'sheen'>[DSVOB].*
NODE shader (~)
RGB sheen_albedo C<RS'sheen'>A
RGB sss C<TD>.*
RGB sss_direct C<TD>L
RGB volume_indirect CV[DSVOB].*
RGB volume_albedo CVA
FLOAT A (~)
FLOAT ZBack (~)
RGB opacity (~)
RGB volume_opacity (~)
FLOAT raycount (~)
UINT ID (~)
NODE object (~)
FLOAT AA_inv_density (~)
RGBA RGBA_denoise (~)
(~) No opacity blending
Arnold 184.108.40.206 added support for per-light AOVs for volumetrics.
Here’s how to set up per-light AOVs in MtoA 220.127.116.11:
- In the light Attribute Editor, enter a name for the light group.
- Create a custom AOV for the light group. Give the AOV a name that starts with “volume_”. For example, if the light group name is “red”, then the AOV name is “volume_red”.
Here’s a question asked recently. Given a shading tree like the one below, why don’t AOVs like diffuse_direct include the blended color from the Blend Color node?
The answer: because it is the Standard shader that writes the AOV, not the Blend Color shader. The diffuse_direct AOV gets the diffuse layer calculated by the Standard shader, and that’s it.
The MtoA AOV browser shows you what AOVs are implemented by which shaders:
A simple example of using a Color4 Passthrough to create a custom AOV. In this example, I’m using Store Color in Channel to put a per-object Alpha in the custom AOV. I could easily use overrides to do this on a per-partition level.
In this video, I show how to a color mask AOV using a custom AOV and the Utility shader. Topics covered include:
– Creating a custom AOV
– Setting the default shader for a custom AOV
– Setting up the Utility shader to output a color for each shape
– Understanding the difference between the Color and Color ID color modes
So, what’s this Preserve Layer Name setting do?
Preserve Layer Name is for single-layer EXRs, and it determines whether or not the AOV is written into the pre-defined R,G,B,A channels.
By that, I mean that if Preserve Layer Name = False, then a single-layer EXR will have these channels:
And if Preserve Layer Name = True, then the single-layer EXR will have channels like this (that include the “layer name”):
Channel names like “Arnold_Direct_Diffuse.R” can cause problems with some software, so by default Preserve Layer Names is set to False.
Note that Preseve Layer Names applies to single-layer EXRs only. If you’re writing out multi-layer EXRs, you’ll always get names like “Arnold_Direct_Diffuse.R”.