Specular (Toon) - Arnold User Guide
More information about specular can be found here.
Weight
The Specular Weight. Influences the brightness of the specular highlight. The Base Weight is affected by the Specular Weight. This is because the Toon shader is not a physically based shader but is designed to conserve energy.
![]() |
![]() |
![]() |
0.1 | 0.5 | 1 (default) |
The specular examples here all use tonemap.
Color
The color the specular reflection will be modulated with. Use this color to 'tint' the specular highlight. You should only use colored specular for certain metals, whereas non-metallic surfaces usually have a monochromatic specular color. Non-metallic surfaces normally do not have a colored specular.
![]() |
![]() |
![]() |
red | green | blue |
Roughness
Controls the glossiness of the specular reflections. The lower the value, the sharper the reflection. In the limit, a value of 0 will give you a perfectly sharp mirror reflection, while 1.0 will create reflections that are close to a diffuse reflection. You should connect a map here to get variation in the specular highlight.
![]() |
![]() |
![]() |
0.1 (default) | 0.3 | 0.6 |
Note that the Toon edge will not appear in reflected surfaces unless Specular Roughness is 0.
![]() |
![]() |
0.1 (default) | 0 |
Toon shader assigned to floor plane
Anisotropy
Anisotropy reflects and transmits light with a directional bias and causes materials to appear rougher or glossier in certain directions. The default value for anisotropy is 0, which means 'isotropic.' As you move the control towards 1.0, the surface is made more anisotropic in the U axis.
![]() |
![]() |
![]() |
0 (default) | 0.6 | 0.9 |
More information about Specular Anisotropy can be found here.
Rotation
The rotation value changes the orientation of the anisotropic reflectance in UV space. At 0.0, there is no rotation, while at 1.0 the effect is rotated by 180 degrees. For a surface with brushed metal, this controls the angle at which the material was brushed. For metallic surfaces, the anisotropic highlight should stretch out in a direction perpendicular to the brushing direction.
![]() |
![]() |
![]() |
![]() |
![]() |
0 (default) | 0.25 | 0.5 | 0.75 | 1 |
Tonemap
Connect a ramp node here to create a cell look (regarded as a tone map).
![]() |
![]() |
specular without tonemap | ramp RGB -> specular tonemap |
Specular Tonemap with increasing Specular Roughness
Tonemap Hue Saturation
When the hue and saturation tonemaps are used in conjunction with the pre-existing tonemap, the pre-existing tonemap parameter will only be used for the value (a sort of brightness) in the direct light of the HSV mapping, whereas without it would produce full RGB colors mapped to the value of direct light. This allows for the full set of HSV components to be mapped independently through these two shader parameters.
The connected shader's U coordinate drives direct light hue and the V coordinate drives saturation, which enables textures to map the toon shader's response to colored lighting.
Specular Tonemap Hue Saturation only affects direct colored light.
without Tonemap Hue Saturation with Tonemap Hue Saturation the tone mapping reacts to colored lights
Below are variatons of the color palettes used for the Base Tonemap Hue Saturation. In theory, any image could be used here as long as it has some suitable saturated colors.
![]() |
![]() |
![]() |
1:1 mapping of the hue & saturation. A physical representation of what the light would look like. | A quantized version of the 1:1 mapping using 18 different cells with different levels of saturation. | An exaggerated version with sharp transitions between the red and blue tones. |
Ensure to set the Image shader's Wrap U and Wrap V to Clamp and Filter to Closest for best results. The reason why the Image shader Clamp is required is because, by default, the Image shader will wrap around and tile the texture values when the UV coordinates go beyond the 0 to 1 range. So in this example, the saturation is very high causing the texture lookups to have a high value in the V coordinate (1 or near 1). That high V coordinate value with a texture that wraps around will start averaging in pixel values from the bottom edge of the texture, which are white or near white usually. When set to Clamp, there is no averaging with the pixel values at the bottom edge.
Various saturated color images -> Tonemap Hue Saturation
![]() |
![]() |
No Specular Tonemap Hue Saturation | Image -> Specular Tonemap Hue Saturation |
The image.uv_coords
can be used to control the effect of the Specular Tonemap Hue Saturation.

Image Offset U: 0 to 1
The Specular Tonemap Hue Saturation works better with high Specular Roughness values:
0 0.5 0.8