FilmGrainLab › Soft Particle Engine

Soft Particle Engine.

Real grain affects the photo with micro-softness. Our Soft Particle Engine recreates this softness in luminance and color layers, rendering a beautiful and subtle, grain-driven diffusion under every particle.

Basketball hoop against a dusk sky, processed with FilmGrainLab at ISO 400
Processed with FilmGrainLab at ISO 400.

Why grain needs softness

Film grain is not pasted on top of a perfectly sharp image. The crystals and dye clouds that form the grain also scatter a little light as the image is recorded, so the picture underneath is very slightly soft. That is a big part of why real grain sits in the photo. A razor-sharp digital image with noise on top reads as an overlay, however good the noise is.

How the engine works

  • Even in every direction. Each pixel is blended with a ring of neighbors at two distances, so edges soften the same way whether they are horizontal, vertical or diagonal.
  • In linear light. Light is mixed the way it physically adds up, not in gamma-encoded values. Bright edges bloom very slightly into their surroundings instead of turning dull and grey.
  • Per color layer. In color film the red-sensitive layer sits deepest in the emulsion and is the softest, while the blue-sensitive layer on top is the sharpest. The engine gives each channel its own spread: red softest, then green, then blue.
  • Driven by the grain. More grain means a little more softness, and no grain means no softness. At high ISO the softness is trimmed back, so coarse grain stays crisp instead of blurry.

Measured, not guessed

The softness is sized relative to the photo, like the grain itself, but capped for very large files so it never grows into visible blur. We measure it as the width of the transition across a hard edge, from 10% to 90% (green channel, default settings, ISO 400):

Photo size (long side)Edge width
1,600 px1.4 px
4,000 px2.4 px
6,000 px and up3.1 px

From about 6,000 pixels upward the softness holds at 3.1 px, so a 24 MP and a 100 MP export look equally tight when you zoom in.

Crisp where it counts

Film is soft in the fine detail and still reads sharp. Part of the reason is the development itself. Developer is used up faster next to bright, dense areas of the negative and stays fresher next to dark, thin ones. Across an edge the bright side develops a little denser and the dark side a little thinner, which adds a touch of contrast right at edges. Photographers call it the adjacency effect.

The engine recreates it in density terms, over a wider radius than the micro-softness. It compares every pixel with its local surroundings and gently strengthens the difference, fading out in deep shadow so noise is not amplified. Letters, rims and contours stay crisp while the finest texture keeps its softness, without the halos of a sharpening filter. The strength follows the grain, so it is part of the look rather than an extra control.

Your call: the Softness slider

The default is calibrated to match film, but you decide. The Softness slider under Grain character scales it from 0% (grain on a completely sharp image) to 200% (a softer, older-film look). Double-click the slider to return to 100%.

Open FilmGrainLab