Surface-Stable Fractal Dithering Explained

runevision · 646K views · 2025 · 21:46

Open on YouTube

Computer graphics & renderingCreative coding & generative artGame programming & enginesexplainer

Why Hacker News recommends it

HN recommends it as the original explainer for a clever dithering technique and the go-to video in dithering threads.

What it is

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.

Recommended by 3 HN commenters across 4 different months, 2025 to 2026.

What Hacker News said

Recommends abetusk · 2025-01 · on “Surface-Stable Fractal Dithering”

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

Recommends qwertox · 2025-01 · on “Bilinear down/upsampling, aligning pixel grids, and that infamous GPU half pixel (2021)”

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]

Recommends qwertox · 2025-04 · on “Writing my own dithering algorithm in Racket”

Somewhat related and worth watching: Surface-stable fractal dithering explained [this video] There's a follow-up video to that one.

Recommends m12k · 2025-10 · on “Dithering – Part 1”

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)

Recommends m12k · 2026-03 · on “Return of the Obra Dinn: spherical mapped dithering for a 1bpp first-person game”

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]

Cites biercarsten · 2025-02 · on “The Art of Dithering and Retro Shading for the Web (2024)”

Ah, thats from runevision. I recently whatched his youtube video on this ( [this video] ) and "Return of the Obra Dinn" was also the first thing I thought of.

Cites runevision · 2025-02 · on “”

I'd like to expand with some more details and developments since the post I saw here a few weeks ago about my Surface-Stable Fractal Dithering technique. (That post (not by me) was here: [LINK] ) I've since made it work also in color (RGB dithering and CMYK halftone) and demonstrated what it looks like in true 1-bit (or 3-bit for color) at low resolutions as well. See the linked demonstration video for a variety of styles/aesthetics it can be used for: [LINK] The original explainer video is here: [this video] And the repository is here: [LINK] Lots of people both here and elsewhere has speculated about various alterations or different use cases, etc. I'd like to point to this FAQ that have a lot

Cites jansan · 2025-04 · on “Writing my own dithering algorithm in Racket”

I think implementing a dithering algorithm is one of the most satisfying projects, because it is fun, small(ish) and you know when you are done. Of course, unless you are trying to implement something completely insane like Surface-Stable Fractal Dithering [this video]