Overview
BergCraft is a film simulation tool for photographers. It applies analogue film looks to processed images: tone response, halation, and physically-modelled grain. It ships as a Rust CLI and as a WebAssembly module for in-browser use.
Current stable version: v0.2.4 · What's new
Quick start: If you just want to try it without installing anything, open the browser editor and drop a JPEG or TIFF onto the canvas.
How it works
BergCraft processes images in a fixed pipeline:
- Input decode — JPEG, TIFF (8- or 16-bit), or WebP.
- Linear conversion — applies a 3×3 colour matrix to convert from sRGB to a linear working space.
- Tone response curves — per-channel curves derived from measured film scans.
- Halation — a layered bloom applied to highlight regions above a configurable threshold.
- Film grain — Poisson-disc sampled grain with ISO-dependent variance (see the deep dive for details).
- Output encode — JPEG (quality 90 default) or 16-bit TIFF with embedded ICC profile.
Each step can be disabled or tuned via command-line flags or the browser UI. The profiles bundle a fixed set of per-step parameters.
Available profiles
- portra400 — Kodak Portra 400. Warm shadows, compressed highlights, moderate grain. Good for portraits and landscapes in mixed light.
- provia100f — Fuji Provia 100F. Cooler neutral balance, high saturation in greens and blues, very fine grain. Works well for clear-sky mountain shots.
- hp5plus — Ilford HP5 Plus. Converts to B&W via luminosity weighting, characteristic shoulder roll-off, visible grain at 400 ISO equivalent.
Supported platforms
- CLI: Linux (x86_64, aarch64), macOS (x86_64, Apple Silicon), Windows (x86_64)
- Browser: any modern browser supporting WebAssembly (Chrome 89+, Firefox 87+, Safari 15+)