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

ParameterTypeDefault
content_inOneOf([FieldOf(Raster), Collection, GpuGeometry, CollectionOf(Geometry)])
methodString"Bayer"
levelsNumber4
matrix_sizeString"4x4"
strengthNumber1
patternString"Bayer"
pattern_scaleNumber1
pattern_angleNumber0
pixelate_inputBooleanfalse
pattern_textureOneOf([FieldOf(Raster)])
threshold_biasNumber0.500
per_channelBooleanfalse
strength_rNumber1
strength_gNumber1
strength_bNumber1
mixNumber1
temporal_modeString"Static"
attributeString"Cd"
attribute_typeString"Color"
spatial_strengthField

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

  1. Add a Dither node and feed it an image.

  2. Drop Levels to 2–4 for a strong posterised look, or keep it higher for a subtler reduction in value precision.

  3. Try Bayer first for a fast, regular pattern, then switch Method to Floyd-Steinberg for a softer stipple.

  4. With an ordered method selected, raise Pattern Scale for a coarser tile, or switch Pattern to Halftone Dot for a print-style look.

  5. Enable Pixelate Input to snap the source to the pattern grid for a chunky, low-res result.

  6. Bring Mix down from 1 to blend the dithered result back with the original image.

See also

Quantize · Levels · Colour Correct · Rasters (images)