Tangent space normal maps


The built-in N AOV is in world space. So how to get a tangent-space N AOV?
Like this:

In brief, I read the N AOV, transform the normals from world to tangent space, and then map the normal values to the range 0.5, 1 (I used the range node here, but I could have used Add and Multiply to do the same thing).

Here’s the shader tree. You can save this in a .ass file and import it into Maya or whatever application you use. Then set up an AOV shader to write the custom Ntangent AOV

range
{
 name aiRange1
 input space_transform
 output_min 0.5
}

space_transform
{
 name space_transform
 input read_N_AOV
 type "normal"
 to "tangent"
 tangent 1 0 0
 normal 0 1 0
 normalize on
}

aov_read_rgb
{
 name read_N_AOV
 aov_name "N"
}

aov_write_rgb
{
 name defaultArnoldRenderOptions/aov_write_rgb_Ntangent
 aov_input aiRange1
 aov_name "Ntangent"
}

Denoising AOVs with the Optix imager


The Optix imager can denoise the beauty and any other AOV.

The so-called layer selection tells the imager what AOVs to denoise. For example, if you want to denoise both the beauty and the coat AOVs, enter RGBA or coat in the Layer Selection text box.

Using AOV names with or is an easy way to select multiple AOVs.

You can also use wildcard characters (such as *, ., and []) to select AOVs (this is what is called glob in the docs). For example:

*Selects all AOVs
RGBA_*Selects all light group AOVs for the beauty (for example, RGBA_default, RGBA_key, and so on)
RGBA_light0[135]Selects RGBA_light01, RGBA_light03, and RGBA_light05
RGBA_light0.The period (.) matches any single character, so this selects RGBA_light00 through to RGBA_light09.
RGBA_light0[1-9] does the same thing.

You can even use regular expressions for more complicated selections. But in general, using or and wildcards should be more than enough.