Method
Models first, then the eye.
Distortionary is David Berube's filter workshop. Each filter starts from published research or exact geometry and is then tuned by eye on real photographs until it looks right. The catalog is small on purpose. A filter ships when it runs the same in every host and holds up on a full-size image.
Who
David Berube writes the filters, the plug-ins and the desktop app, and takes the photographs they are tested on. He also runs Cast Iron Type, whose Neomodette sets this site and ships inside Grungetyper. Distortionary is a one-person workshop. That is the working method, not a phase.
Start from the research
Most glow filters are a blur and a screen blend. Bloomifier starts from what the eye does: Spencer et al.’s point spread functions for day, dusk and night vision, the CIE glare equation, diffraction through the iris. Octodoctor’s refine step is a guided filter from the image-processing literature. Color keys are measured in OKLab, where equal steps look equal.
Where there is no model to work from, the filter is built from exact geometry instead. In Dithertastical and Grungetyper, “thicker” and “worn two pixels deep” mean exactly that.
Under all of it sits the field’s older work: the shading, texture, ray tracing and edge detection papers of the 1970s and 1980s that taught computers to make and read pictures.1–6 Each filter page footnotes the papers its own steps rest on.
Then tune by eye
A model gets you to physically plausible. It doesn’t get you to a picture anyone wants. Defaults and presets are set by running the filters on real photographs, full size, and adjusting until the result looks right on a print and on a screen.
Sometimes the research decides the look directly. Yoshida et al. found that clipping glare at white draws a bright band around it and makes the light look dimmer, so every Distortionary glow eases into the headroom below white instead.
What that gives a buyer
Settings that mean something. Levels double a radius. Field of view sizes glare the way a lens would. A grunge layer’s opacity is a depth in pixels. When a control has a physical meaning, you can predict what it will do before you drag it.
And the same pixels everywhere. Every host runs one Rust library, so a preset made on the desktop renders identically in Photoshop, in GIMP and in a batch script on a server.
Purpose-built, and offline
The filters are written from scratch rather than wrapped around someone else’s image library. That takes longer. It is also the only way to run the same code natively in a GIMP plug-in, as WebAssembly in a Photoshop panel and in this browser, and as a static binary on a render box.
Nothing phones home. There is no account, no license server and no cloud render. The software you buy keeps working as long as your computer does.
Notes
- 1
Phong (1975). Illumination for computer generated pictures. Communications of the ACM 18(6).
- 2
Blinn and Newell (1976). Texture and reflection in computer generated images. Communications of the ACM 19(10).
- 3
Whitted (1980). An improved illumination model for shaded display. Communications of the ACM 23(6).
- 4
Kajiya (1986). The rendering equation. SIGGRAPH ’86.
- 5
Marr and Hildreth (1980). Theory of edge detection. Proceedings of the Royal Society of London B 207.
- 6
Canny (1986). A computational approach to edge detection. IEEE Transactions on Pattern Analysis and Machine Intelligence 8(6).