Normal mapping works by replacing the interpolated surface normal by the one evaluated from an RGB texture, where each channel (Red, Green, Blue) corresponds to the X, Y and Z coordinates of the surface normal. It can be faster than bump mapping since bump mapping requires evaluating the shader underneath at least three times.


Normal map -> Standard Surface


The map, usually exported from Mudbox or ZBrush.

Arnold executes calculations in radiometrically linear space which means 8 and 16-bit images are linearized. By a normal map input, this linearization is not necessary therefore C4DtoA automatically sets the color space of the input map to linear.


Increase or decrease the normal map effect.

Color To Signed

For 8-bit maps. If enabled, the input is remapped to the [-1, 1] range.

In general, if you want to use a 16/32 format that can contain negative values, you should avoid the [-1..1] -> [0..1] conversion, and so that map would contain already the normal value, in which case color-to-signing back should be avoided in the shader.

The default values of these parameters (order, invert, color_to_signed) let you correctly import a map generated in Mudbox in Tangent coordinate space.

Tangent Space

Specifies if the input is in world space or tangent space.


Lets you shuffle the input channels order.

Invert X

If enabled, inverts (1-channel) the x input channel.

Invert Y

If enabled, inverts (1-channel) the y input channel.

Invert Z

If enabled, inverts (1-channel) the z input channel.


The tangent map. Together with the shading normal, it defines the tangent coordinate system that the input vector applies to. If available from your sculpting tool, you should connect here the tangent map that the normal map relies on. If 0, the shader attempts the following actions to build the frame:

  1. Look for vector user data named "tangent" and "bitangent".
  2. Use the UV derivatives.
  3. Build its own local frame.

The shader works in tangent space only. If your tangent map was exported in either world or object space, you could instead use the more generic space_transform shader.


The normal and tangent parameters can be optionally linked to define a custom tangent coordinate system that the input is transformed from. If the normal is not linked, it will use the default surface normal.


  • No labels
Privacy settings / Do not sell my personal information / Privacy/Cookies