A floating jousting helmet, lit by an environment map and pushed through an ordered dithering post-processing pass: the shader compares each pixel's luminance against a Bayer threshold matrix tiled in screen space, so continuous shading collapses into a two-tone pattern of dots without any temporal noise. Drag to orbit; the panel exposes the background colour, the environment intensity and the dither settings. Built with React Three Fiber, Three.js and the postprocessing library — source in the dithering-shader repository on GitHub.
Made by Niccolò Fanton. Browse all WebGL demos on the demo hub.