All work

OFLIM

A darkroom console that simulates black-and-white film: 19 emulsions, optical lens filters, push and pull development, and silver halide grain computed on the GPU.

Develop a print

A reduced port of OFLIM's shader, running in your browser with its filter weights and 400 TX curve.

Lens filter

Blue sky reads 24% silver

Box speed
Film format
OFLIM editing a black-and-white photo of a cathedral spire, with film stocks below and density, contrast, lens filter and grain controls on the right.

OFLIM turns a digital photograph into a black-and-white print by modelling what film does to light: spectral response, characteristic curves, lens filters and grain.

Each of the 19 emulsions carries its own profile, and the result can be compared against the original with a split view or by holding Space.

Sensitometry in a fragment shader

The pipeline converts colour through filter weights, applies exposure in stops, compresses shadows and highlights along a D-Log E toe and shoulder, then pivots contrast around 18% middle grey.

Grain with no visible tiling

Noise is Gaussian, generated with Box-Muller into a 1024 pixel texture and sampled twice, the second octave at a golden-ratio frequency of 0.618. Stacking the two hides the repeat that a single tiled texture would show.

Two render tiers

Editing happens on a 2048 pixel preview so sliders stay responsive with very large negatives. Export runs a dedicated offscreen WebGL pass at full resolution.

Grain follows the film format

Crystal size scales with the negative, from coarse half frame through 35mm and 120 down to ultra-fine 4×5 sheet film.

Next projectAureon Engine