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:

  1. Input decode — JPEG, TIFF (8- or 16-bit), or WebP.
  2. Linear conversion — applies a 3×3 colour matrix to convert from sRGB to a linear working space.
  3. Tone response curves — per-channel curves derived from measured film scans.
  4. Halation — a layered bloom applied to highlight regions above a configurable threshold.
  5. Film grain — Poisson-disc sampled grain with ISO-dependent variance (see the deep dive for details).
  6. 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+)

Next steps