Dithering Heights tests resolution-dependent perception: as spatial resolution drops, object identity depends more heavily on palette size and color separation. The same shadeless 3D model can remain readable or collapse into noise depending on the balance between pixel count, palette count, and dithering rule.
Source Model
Drag the small source window to rotate Chew on every axis.
Dither Output
loading Chew source...
The small source window shows a clean textured model. The large output window intentionally updates slower and at lower resolution, so thresholding, ordered patterns, and error diffusion become visible as different image-making behaviors. At 48 x 48 and below, 1-bit and Game Boy palettes lose much of the model's object separation, while NES RGB and RGB cube palettes preserve more readable parts.
Dithering is not just a filter. It is a decision rule for what can survive when color and resolution are constrained. A live 3D source makes that rule easier to see because the same model keeps moving underneath the reduction. The readout reports an illustrative nearest-color decision budget: pixel count multiplied by palette size, not a browser performance profile.
- Source asset:
ps1-devlogexperiment archive. - The old project used React Three Fiber; this toy keeps only the Chew model, texture, and a small Three.js loader path.
- The model is rendered without lighting so the hand-drawn texture remains the source signal.
- The NES RGB palette is treated as a named emulator-style RGB table; stock NES video does not define one canonical RGB palette.
Shane Curry, "Dithering Heights," https://shanecurry.com/lab/toys/dithering-heights/, toy note, prepared 2026-05-01.
The big picture is worse on purpose. It is larger, slower, and less faithful, which makes the interpretation easier to inspect.