Skip to content
Techniques & Technology

Dithering

More colours from fewer

Dithering created the illusion of additional colours by interleaving pixels of different shades, expanding limited palettes through optical mixing.

commodore-64sinclair-zx-spectrumcommodore-amigaibm-pc graphicsarttechnique 1980–present

Overview

When your palette has 16 colours but your image needs thousands, dithering provides the illusion. By carefully placing pixels of different colours adjacent to each other, artists created apparent gradients and shades that didn't exist in the palette. The eye blends neighbouring pixels — at the right viewing distance, on the right display — perceiving colours the hardware cannot literally display.

Dithering is the optical equivalent of a pointillist painting: dots of pure pigment that read as a smooth tone when stepped back from.

The principle

Two factors govern perceived colour:

FactorEffect
Pattern densityMore of colour A in the mix → output reads more like A
Pattern sizeSmaller, finer dots → smoother apparent blend
Viewing distanceFurther away → better blending; up close, the dots are visible
Display blurCRT phosphor bleed helps; sharp LCDs make dots visible

Common patterns

Ordered dithering

Regular, repeating patterns. Cheap to compute, predictable artistic results.

Bayer 2×2:           Bayer 4×4:
0 2                  0  8  2 10
3 1                 12  4 14  6
                     3 11  1  9
                    15  7 13  5

The Bayer matrix gives threshold values: when rendering pixel (x, y) in colour c, compare to bayer[x % 4][y % 4]. Bayer 4×4 is the workhorse of late-80s / early-90s computer graphics — visible in Deluxe Paint tutorials, MicroProse simulators, and most Amiga / Atari ST artwork.

Error diffusion

Spread quantisation error to neighbouring pixels — when picking the closest palette colour, the difference between exact and picked colour is added to surrounding pixels:

   X  7
1  5  3        (Floyd-Steinberg distribution, fractions of 16)

The pixel below-right gets 7/16 of the error, etc. Result: smoother gradients, more "natural" look.

AlgorithmYearDistributionNotes
Floyd-Steinberg19767/3/5/1 over 4 neighboursThe classic; default in most image editors
Stucki1981Spread over 12 neighboursSmoother, slightly more expensive
Atkinson~19861/8 over 6 neighboursBill Atkinson's original Mac dithering; high contrast
Sierra1990Multiple variantsSpeed/quality tradeoffs

Error diffusion costs more per pixel than ordered, but the result is harder to spot.

Platform applications

Commodore 64

ModeColours per cellDithering use
Hi-res2 (1 BG + 1 FG per 8×8 cell)Common — alternating-pixel dithering creates 50% blends
Multicolour4 (3 fixed + background per 8×8 cell)Essential — multicolour pixels are 2:1 wide so dithering happens at "2 multi-pixels = 1 hi-res" granularity
FLI8+ per cellLess needed — VIC-II tricks expose more colours per cell

The C64's 16-colour palette has limited gradients (especially blues/greens), so dithering between adjacent palette entries was an artist's stock-in-trade.

ZX Spectrum

The Spectrum's attribute system (8×8 cells, two colours per cell from a 15-colour palette) makes traditional pixel dithering hard. What Spectrum artists do instead:

  • Dither within the cell between the two attribute colours.
  • Choose attribute pairs that visually blend (alternate hot/cold colours in the cell to imply midpoints).
  • Rely on CRT blur to soften the cell boundaries.
  • Skip dithering entirely for game graphics — colour-clash means dithering between cells doesn't work cleanly.

Amiga

ModeNative coloursDithering use
OCS lores32 from 4096Common — 32 colours leaves big gaps in any gradient
OCS hires16 from 4096Heavier dithering — fewer palette entries
EHB (Extra Half-Brite)64 (32 + 32 half-bright copies)Less needed for shadows; still useful for warm-cool gradients
HAM6 / HAM84096 / 262144 simulatedDifferent game entirely — HAM lets each pixel modify one R/G/B channel from the previous, costing horizontal neighbour constraints

HAM mode complements rather than replaces dithering — HAM's per-pixel colour-shift constraints often produce streak artefacts that dithering helps mask.

IBM PC (CGA / EGA / VGA)

ModeColoursDithering use
CGA4 from 16 (limited subset modes)Essential — CGA's notorious cyan/magenta/white/black palette is mostly dithered for any complex art
EGA16 from 64Common, especially for skin tones and skies
VGA 13h256 from 262144Less needed but still used for smooth gradients

Artist techniques

Faking gradients

Five-step blend between colour A and colour B:

StepPattern
1100% A
275% A / 25% B (3 dots A, 1 dot B per 4-pixel block)
350% A / 50% B (checkerboard)
425% A / 75% B
5100% B

Tightening the dot pattern (smaller blocks) gives smoother apparent gradients at the cost of computation or pre-drawn brush authoring.

Texture simulation

Dithering reads as different surfaces:

  • Coarse checkerboard → fabric, mesh
  • Random scatter → noise, dust, water spray
  • Diagonal stripes → metal, machined surface
  • Bayer 2×2 → smooth shading, "computer-y" look

The Bitmap Brothers (Speedball 2, The Chaos Engine) made aggressive dithering a stylistic signature on the Amiga — metallic surfaces and angular shading that only read correctly with their dithering.

Tools

SoftwarePlatformNotable for
Deluxe PaintAmiga, PCThe canonical dithering toolset; "dither paint" mode and stencil-based dither brushes
BrillianceAmigaBetter gradient tools; Amiga rival to DPaint
Art Studio / OCP Art StudioC64 / SpectrumPixel-level art tools with dither pattern support
PI / GrafX2 (modern)PC, modernDPaint-inspired tools used by current pixel artists
PhotoshopModern"Bitmap mode" with diffusion-dither output; standard since 90s

Display considerations

DisplayDithering appearance
CRTPhosphor bleed naturally blurs adjacent pixels; dithering reads as a smooth blend
LCDPixels are sharper; dither pattern visible at native resolution; needs higher-frequency dithering
EmulatorDepends on filtering — bilinear smooths it; nearest-neighbour preserves the artistic intent
Modern 4K displayOriginal-resolution art is tiny; integer scaling preserves dithering, blurry scaling destroys it

CRTs' natural blur was a critical part of how dithering worked. Modern emulators add CRT shaders specifically to restore this blending.

Famous examples

Game / artworkDithering use
Speedball 2 (Bitmap Brothers, Amiga)Heavy dithering on metallic player armour
Another World / Out of This WorldVector art with hand-tuned dithering for shadows
Sierra adventures (KQ4 onward, EGA)Background gradients via 16-colour dithering
Deluxe Paint art galleriesShowcase pieces with virtuoso dithering
Beneath a Steel Sky (Revolution, 1994)Comic-book backgrounds dithered for cel-shaded look
Day of the Tentacle (LucasArts, 1993)Selective dithering for cartoon shading

See also