
runevision
3 HN recommenders · recommended in 5 months, 2025–2026
21:46 · 647K views · Jan 23, 2025
Rune Skovbo Johansen explains Surface-Stable Fractal Dithering, a technique he invented and released as open source. It makes dithering stick to 3D surfaces and covers the experiments and shortcomings along the way, inspired by Return of the Obra Dinn.
HN recommends it as the original explainer for a clever dithering technique and the go-to video in dithering threads.
8 comments from Hacker News
To create a dithering effect for 3D scenes. Doing a straight 2D dither on each frame will result in noisy artifacts and won't be "stable". Doing an "ordered" dithering produces a "porch screen" artifact effect, where there's a stable pattern in screen space that can be seen. Trying to naively map dithering patterns as textures on 3D objects again results in unstable patterns as the dithering is dependent on the distance of the screen to the object and produces noise. This is a proposed solution that maps a dithering pattern as a texture that doesn't have the "porch screen" effect and is stable. The video linked [0] to in the repo talks about experiments and shortcomings from the above I just listed. This work is in response to some challenges the developer of the "Return of the Obra Dinn" game experienced when trying to create a dithering effect in game [1] [2]. [0] this video [1] [LINK] [2] [LINK]
On a similar note, yesterday I stumbled across a 4-days old video related to dithering which is really worth watching. " Surface-Stable Fractal Dithering " [0] by "Rune Skovbo Johansen, indie game developer and procedural generation enthusiast" [0] this video
And here's a couple videos about a technique that was inspired by the Obra Dinn's dither, but making it surface stable: this video (explanation) [LINK] (demo)
If you find this interesting, you might also be interested in this video of someone diving even deeper into how to make the dither surface stable: this video
Somewhat related and worth watching: Surface-stable fractal dithering explained this video There's a follow-up video to that one.