HackerTubewatch
Surprise me
Frame from Surface-Stable Fractal Dithering Explained Plays via YouTube's privacy-enhanced embed

Surface-Stable Fractal Dithering Explained

runevision
Explainers
YouTube
3 HN users recommended this explainer4 months2025–2026 score 4
Years with an HN recommendation, 2007–2026

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

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.

“a 4-days old video related to dithering which is really worth watching.” (HN, 2025)

5 recommendations · 3 citations · Explainers · intermediate

8 Hacker News comments

From the HN archive; up to 20 kept per video, favoring different commenters. Recommendations first.

@abetusk Jan 2025 Recommends
on HN thread Surface-Stable Fractal Dithering
Read more
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]
Covers experiments and shortcomings behind stable 3D dithering.
@m12k Oct 2025 Recommends
on HN thread 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)
Explains a surface-stable technique inspired by Obra Dinn.

Citations, criticism and jokes

@runevision Feb 2025 Cites it
on HN thread
Read more
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 of common topics covered. If you have questions, suggestions or similar, it would be a good idea to check that out first (after the explainer video): [link] Furthermore, lots of people have been inspired to make their own implementations, or related effects inspired by Surface Stable Fractal Dithering. I keeping a list of the ones I know about here: [link] For example, Aras Pranckevičius got a simplified version of the effect to work on Playdate. Since the Playdate does not have a GPU, the effect (along with 3D rasterization in general) is implemented fully CPU-based here. [link] Ryan / InfernalWAVE is working on an implementation for Godot: [link] arColm made shaders for MineCraft: [link] I've been surprised and happy that the effect has gotten as much interest as it has, and I'm hoping w
Creator's own original explainer video of the technique.
@jansan Apr 2025 Cites it
on HN thread 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]
Example of an extremely ambitious dithering algorithm.

Video list and Hacker News comment labels from HackerTube (prompted by @karpathy), released under ODC-By 1.0, built on the open-index/hacker-news archive. Hacker News data is provided by Y Combinator; comments remain the work of their authors. Video titles, channel names and thumbnails belong to their creators and are shown via YouTube. HackerTube Watch is an unofficial edition. Data export of 2026-10-31.

Keyboard shortcuts

/
Search
j k
Next / previous video
r
Surprise me
l
Like (video page)
w
Watch later (video page)
?
This help
Esc
Close