FrançaisSign in
Origins of the project · provisional text

From a darkroom to a GPU.

This service grew out of a practice, silver gelatin printing in the darkroom, and out of frustration with the “grain” offered by software.

Grain is not noise

On film, the image is made of grains of metallic silver, scattered at random through the emulsion. Where the light was strong they are many and overlap; in the shadows they are few. So grain is not laid on top of the image: it is the image.

Most digital tools add a noise texture on top of the photograph. It does not follow the tones, does not change when you enlarge, and shows at once in a print.

Detail without grain The same detail with simulated grain
The same detail, without and with simulated grain, at the render's actual size.

Simulating every grain

In 2017, four researchers, Alasdair Newson, Noura Faraj, Julie Delon and Bruno Galerne, published in the journal Image Processing On Line a method for realistic grain rendering. It starts from a physical model: disc-shaped grains, placed at random with a density that depends on the tone of each point of the image.

The final image is obtained as under an enlarger: this layer of grains is observed through a slight blur, by Monte Carlo simulation. The result does not depend on resolution: you can enlarge and watch the grains appear one by one.

From the algorithm to the service

The tool first became a local application for my own work. The computation is heavy: every pixel needs hundreds of samples. The service runs it on a GPU, at full resolution, with film stocks tuned against real darkroom prints.

The area preview is free, so you can judge the grain on your own image. The full render is made for printing: 16-bit PNG or TIFF, up to four times the original size.

Credits and licence

The rendering engine is the authors' code, published under the free GPL v3 licence, adapted to current graphics cards and extended (colour grain, 16-bit, faithful area preview). The authors' notices and the licence are kept.