Dither

Ordered dithering: Bayer and blue-noise threshold masks quantised to real machine palettes — Game Boy, PICO-8, CGA, EGA, NES, C64, ZX Spectrum and more.

DEGRADE family · free, no signup

← All the FX

Family
DEGRADE
Availability
Free — no signup
Controls with options
5

What ordered dithering actually does

Ordered dithering doesn’t average anything and doesn’t look at its neighbours. Each pixel is compared against a threshold read out of a small repeating matrix, and then snapped to the nearest colour the palette allows. The matrix is the entire trick: because the threshold varies from cell to cell, a flat mid-grey resolves into a regular pattern of light and dark pixels whose density reads back as the original tone.

That independence is why it runs at full frame rate. Every pixel can be decided at the same instant as every other, which suits a GPU exactly — and it is the property that error diffusion gives up in exchange for a better-looking result.

Bayer, blue noise, and why they look different

Bayer matrices are the classic recursive construction, and the size you pick is a trade. A 2×2 matrix offers four threshold levels, so it can only describe four densities and reads as hard, chunky texture. An 8×8 matrix offers sixty-four, so gradients step much more finely — at the cost of a larger, more visible repeat. The crosshatch you associate with 1980s machines is a Bayer matrix showing its structure.

Blue noise replaces that ordered matrix with a mask engineered to carry no low-frequency energy. The decision is still per-pixel and still independent, but the dots distribute evenly without ever settling into a grid, so the result reads as texture rather than as pattern. It is the option to reach for when the Bayer weave is fighting the picture instead of serving it.

The palettes are quantisation targets, not tints

A tint multiplies your colours by something. Quantisation throws them away: every pixel is replaced by the nearest entry in a fixed set. That is why a Game Boy result carries that specific four-value green rather than a green cast, and why a CGA result has CGA’s particular cyan and magenta — those were the only colours the hardware could address, and the palettes here are those sets.

The dithering and the palette are doing two halves of one job. The palette decides what colours exist; the mask decides how to fake the ones that don’t.

Dithering by depth

Dither carries the app’s DEPTH PLANES control. Turn it on and the frame is split front-to-back using the depth inferred from the image, and each plane quantises to its own palette — the MID PLANE and FAR PLANE sections each carry their own Palette control.

The use is a subtle one: a background quantised to a coarser or cooler palette than the subject reads as further away, without any blur, any haze, or any loss of the flat graphic quality that made you reach for a dither in the first place.

When you’d reach for it

When you want the picture reduced to something graphic and printable-feeling rather than photographic, and you want the reduction to be legible as a deliberate constraint. Ordered dithering announces itself — that pattern is the point.

It sits well early in a stack, before anything that adds tone back on top. Put a grain or a bloom after a dither and you soften the very structure you just built; put them before it and they get quantised along with everything else, which is usually what you wanted.

Every option, from the app

Generated from the registry the app publishes, so this list is whatever the current build actually ships — not a copy of it.

Mask
Bayer 2x2Bayer 4x4Bayer 8x8Blue NoisePattern
Palette
MonoGame BoyGB PocketPICO-8CGAEGANESC64Amiga 500ZX SpectrumGreen PhosphorAmber PhosphorTeletextApple IIMSXVirtual BoyCustom
Planes
OffNear + FarNear · Mid · Far
Palette · Mid Plane
MonoGame BoyGB PocketPICO-8CGAEGANESC64Amiga 500ZX SpectrumGreen PhosphorAmber PhosphorTeletextApple IIMSXVirtual BoyCustom
Palette · Far Plane
MonoGame BoyGB PocketPICO-8CGAEGANESC64Amiga 500ZX SpectrumGreen PhosphorAmber PhosphorTeletextApple IIMSXVirtual BoyCustom

It’s one of the free effects — open the app and it’s there, no signup. Open V3KTR · all the FX · how it works