Edge - Arnold User Guide
Edge
When turned off, the edge detection is disabled (enabled by default).
To view the Toon Edge, you must change the Filter Type (sampling settings) to Contour. Increasing the Contour Filter Width (sampling settings) value will increase render times.
![]() |
![]() |
| Enabled (default). Contour Filter enabled. | Disabled (Emission only). |
The Contour Filter can be found in the Filter Type settings of the Render Settings window.
Edge Color
The color of the toon edge. The line style can be controlled with a texture here.
![]() |
![]() |
| red | stylized edge with ramp |
Edge Tonemap
Connect a ramp node here to change the Edge Color based on the shading result of the base.
![]() |
![]() |
| Default (nothing connected) | Gradient ramp |
The direct diffuse shading contribution is mapped into the UVs. So in the example below, the back of the sphere (which has the darkest direct diffuse) is blue and the part of the sphere hit directly by the Distant Light is green. This then becomes yellow as the exposure of the lighting is increased.
![]() |
![]() |
![]() |
| Light Exposure: 0 | Light Exposure: 0.5 | Light Exposure: 1 |
In the example below, the Edge Color (yellow) is multiplied by the blue ramp color (connected to Edge Tonemap) to give green.
![]() |
![]() |
| Blue ramp -> Edge Tonemap, Edge Color: white | Blue ramp -> Edge Tonemap, Edge Color: yellow |
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.
ensure to set the Image shader's Wrap U and Wrap V to Clamp and Filter Type to Closest for best results).
![]() |
![]() |
| No Edge Tonemap Hue Saturation | Image -> Edge Tonemap Hue Saturation |
![]() |
![]() |
| No Edge Tonemap Hue Saturation | Image -> Edge Tonemap Hue Saturation |
Edge Opacity
Controls the transparency of the Edge.
![]() |
![]() |
![]() |
| 0.1 | 0.5 | 1 (default) |
Width Scaling
The maximum width of the Contour lines is determined by the Width parameter of the Contour Filter. The actual width is the multiplication of it and this parameter. The line style can be controlled by combining this with a texture.
To increase the Edge Width Scale above 1, you will need to increase the Contour Filter Width. However, this will increase render times.
![]() |
![]() |
![]() |
| 0.1 | 0.3 | 1 (default) |
You can avoid Edge 'cluttering' in the center by connecting a Facing Ratio shader to Edge Width Scale.
![]() |
![]() |
| without Facing Ratio shader | Facing Ratio (inverted) -> Edge Width Scale |
The Width Scale can be used to control the Edge depending on the distance from the camera.
You may notice flickering in animations using Width Scale values below 1. Enabling Lock Sampling Pattern (Sampling in the Render Settings) should fix this issue.
Edge Detection
ID Difference
If enabled, edge detection uses the difference of IDs from neighboring pixels.
![]() |
![]() |
| Enabled (default) | Disabled |
![]() |
![]() |
| Enabled | Disabled |
![]() |
![]() |
| Enabled | Disabled |
Curve, Point, and Shape IDs
Id Difference draws edges on curves, points, and shapes. Points also have a different ID for each point. A sphere is covered in particles (as spheres) that use the same Toon shader. Emission Color = Utility shader with Color = Uniform ID (the ID used by the toon shader). The particles have edges because each sphere is a point with a different ID. The large sphere is a shape, so the Toon shader uses the name as the ID (otherwise every primitive e.g. polygon would have an edge). For curves, every curve has a different ID, so ID Difference enabled vs disabled would look like the images below.**
![]() |
![]() |
![]() |
| Enabled (default) | Disabled | Particles have edges, polygons do not. |
Shader Difference
Detects the difference of the shaders of neighboring samples. This is useful when multiple shaders are assigned to a single polymesh, for example.
![]() |
![]() |
![]() |
| Enabled for all RGB shaders (default) | Green & blue: disabled | Red: disabled (id_difference: disabled) |
Ensure that the Angle Threshold is low enough; otherwise, you may not notice a difference.
Mask Color
The edge is detected when the mask color of neighboring pixels is different. The Mask Color is assumed to have a texture connected to draw an arbitrary shape by detecting color differences. With this parameter, lines can be drawn anywhere (the filter draws lines where the color of the mask changes).

Stylistic effects achieved by connecting different shaders to Mask Color
The Shade Modes of the Utility shader can be used to add more detail to the edge when connected to Mask Color.
![]() |
![]() |
Utility shader -> Mask Color
A tutorial that covers how to use the Edge Mask Color can be found here.
UV Threshold
If enabled, edge detection uses the difference of UVs from neighboring pixels.
![]() |
![]() |
| 0 (default) | 0.1 |
Angle Threshold
When less than 180, the edge detection uses the difference of the angle between neighboring pixels.
![]() |
![]() |
![]() |
| 180 (default) | 50 | 10 |

Angle Threshold keyframed from 180 to 10
Edge Detection
The normal used in the edge detection. Choose from: Shading Normal, Smoothed Normal, and Geometric Normal.
![]() |
![]() |
![]() |
| Shading Normal (default) with bump. | Smoothed Normal | Geometric Normal |
![]() |
![]() |
| Smoothed Normal | Geometric Normal |
Advanced Edge Control
[Priority
Changes the sorting priority of the edge.
![]() |
![]() |
![]() |
![]() |
| All objects: 0 | Red sphere: 1 | Blue plane: 1 (both spheres: 0) | Red sphere 0, green sphere 1. |
![]() |
![]() |
| Lips: 0. Skin: 1. | Lips: 1. Skin: 0. |
Ignore Throughput
By default, the contour color is affected by ray throughput. If a specific color is required for a reflected/refracted object, enable this and use a Ray Switch Shader.
![]() |
![]() |
| Disabled (default) | Enabled |
Use Toon ID
Edge detection can be controlled using a STRING type user data called toon_id. Otherwise, the detected edges will be driven by the object's own name as a toon-specific ID. This allows for grouping of objects, where Toon ID specifies which objects belong together regarding edge detection.
![]() |
![]() |
| Use Toon ID disabled (default). Shader Difference disabled. | Use Toon ID enabled. Toon ID '1' added to left sphere shape. |
Cross Hatching
Displacing the surface with a texture can help to create a crosshatch effect with Toon Edge shading.

Teapot displaced with Noise shader
Pepe model by Daniel M. Lara (Pepeland).

























































