Dither
Apply dithering to reduce value precision while preserving perceived density.
What it does
Dither reduces an image to a small number of value levels per channel while holding the impression of the original gradient, trading smooth tonal steps for fine noise that reads as continuous at a distance. Two families of method are available: ordered patterns (Bayer, Blue Noise, White Noise) threshold each pixel against a repeating tile, and error-diffusion methods (Floyd-Steinberg through Sierra-Lite) carry each pixel's rounding error forward into its neighbours for a softer result.
Ordered methods can borrow a halftone or line pattern shape instead of the Bayer grid, and can pixelate the source into blocks before dithering. Dither also runs on a Collection's per-point colour or scalar attribute, using each point's position to drive the same threshold pattern.
When to use it
Cutting an image to a handful of colour levels while preserving a smooth gradient: posterisation without the banding.
Retro, print or pixel-art looks: halftone dots, cross-hatch lines, a chunky pixelated grid.
Stipple or newspaper-print styles, with Floyd-Steinberg or another error-diffusion method.
Dithering a point cloud's colour or density attribute rather than a flat image.
| Parameter | Type | Default |
|---|---|---|
content_in | OneOf([FieldOf(Raster), Collection, GpuGeometry, CollectionOf(Geometry)]) | — |
method | String | "Bayer" |
levels | Number | 4 |
matrix_size | String | "4x4" |
strength | Number | 1 |
pattern | String | "Bayer" |
pattern_scale | Number | 1 |
pattern_angle | Number | 0 |
pixelate_input | Boolean | false |
pattern_texture | OneOf([FieldOf(Raster)]) | — |
threshold_bias | Number | 0.500 |
per_channel | Boolean | false |
strength_r | Number | 1 |
strength_g | Number | 1 |
strength_b | Number | 1 |
mix | Number | 1 |
temporal_mode | String | "Static" |
attribute | String | "Cd" |
attribute_type | String | "Color" |
spatial_strength | Field | — |
Gotchas
Ordered methods (Bayer, Blue Noise, White Noise) and error-diffusion methods (Floyd-Steinberg, Atkinson, Jarvis-Judice-Ninke, Stucki, Burkes, Sierra3, Sierra2, Sierra-Lite) work differently. Pattern, Pattern Scale, Pattern Angle, Pixelate Input and Temporal Mode apply to ordered methods only, and are ignored once an error-diffusion method is selected.
On a Collection input, points or a mesh, error-diffusion methods have no scanline to diffuse across and fall back to Bayer silently. Pixelate Input is raster-only as well: each point carries only its own attribute value, so there is no neighbouring pixel to snap to.
Per-channel strength pushes the dither harder on one colour channel than another, which keeps shadows or a dominant colour clean while the rest roughens. Threshold Bias is separate: it shifts the rounding centre rather than the strength, down to bias the result brighter, up to bias it darker.
Worked example
Add a Dither node and feed it an image.
Drop Levels to 2–4 for a strong posterised look, or keep it higher for a subtler reduction in value precision.
Try Bayer first for a fast, regular pattern, then switch Method to Floyd-Steinberg for a softer stipple.
With an ordered method selected, raise Pattern Scale for a coarser tile, or switch Pattern to Halftone Dot for a print-style look.
Enable Pixelate Input to snap the source to the pattern grid for a chunky, low-res result.
Bring Mix down from 1 to blend the dithered result back with the original image.