← Field notes

A preview gain that failed on native crops

A plausible grain-rounding change improved most preview comparisons, then failed the native-crop acceptance gate.

Conor Livingston · October 2026

Among changed grain comparisons, the candidate improved 22 and worsened 2 in full-frame previews; on native crops it improved 6 and worsened 6.
Changed grain comparisons only. The native check deliberately included the preview regressions, a large-gain photograph and an ISO 6400 frame. These are different development sets and crop contexts, not two random samples of equal scope. Open full-size figure ↗

A small rounding change looked promising. In a study of grain and vignette, it lowered our grain-response error in 22 of the 24 preview comparisons it changed. The other 48 rendered controls were pixel-identical. We kept the candidate out of the app and checked native crops next.

That check rejected it. Six changed grain comparisons improved and six regressed. A photograph with large preview gains became one of the native-crop failures.

A plausible numerical explanation

Chiado combines vignette and grain late in its eight-bit display pipeline. Vignette can leave a different fractional value in each color channel. Adding one shared grain offset before rounding those values can produce different integer increments in red, green and blue.

The candidate rounded the vignetted baseline and the monochrome grain increment separately, then added and clipped them. It changed no fitted grain amplitude, spatial coefficient or effect order. The hypothesis was that removing those channel-dependent rounding differences would produce a closer response.

A reasonable numerical explanation is a reason to test a change. It does not establish what Lightroom does, or whether the change improves the complete image pipeline.

Measure each effect on the other's background

The preview study used six already-consumed development photographs, three vignette amounts and two grain amounts, on both neutral and Texture/detail backgrounds. Seventy-two Lightroom references and matching Chiado renders supplied 84 conditional comparisons: grain added over vignette, and vignette added with and without grain.

Grain was measured through lightness and chroma RMS changes and spatial correlation. Matching individual noise pixels would be inappropriate because the renderers generate different random patterns. Vignette used radial and lightness bins. Neither diagnostic has an established perceptual pass threshold.

Among changed grain comparisons, the candidate improved 22 and worsened 2 in full-frame previews; on native crops it improved 6 and worsened 6.
Changed grain comparisons only. The native check deliberately included the preview regressions, a large-gain photograph and an ISO 6400 frame. These are different development sets and crop contexts, not two random samples of equal scope.

The next gate changed the decision

We captured 36 native cropped references on three development photographs and rendered each with both implementations. All 24 control pairs remained pixel-identical. Image dimensions agreed exactly, so the comparison required no resampling or trimming.

The two negative-vignette preview regressions persisted. Another photograph regressed in all four changed native combinations. The ISO 6400 photograph improved in all four. Across the 18 native grain comparisons, including six unchanged controls, mean diagnostic error rose from 0.282 to 0.330 when measured on shared pixel support.

We also checked whether the result depended on which pixels qualified for measurement. The original grain scores used each renderer’s own lightness mask. Recomputing all three responses on the intersection of those masks preserved the improved/regressed counts and the rejection. Pixels excluded by any renderer no longer contribute to any of the three grain statistics. Clipping still needs separate reporting; excluding a pixel cannot make its loss harmless.

Vignette-response scores moved much less, but that did not cancel the grain failures. We retained the current renderer and archived the candidate, its source and executable hashes, and the complete measurements.

What this does—and does not—tell us

The native check changed both sampling resolution and crop context. It does not prove that resolution alone caused the reversal. The photographs were chosen from consumed development data, so this is also not independent final validation.

It does establish that the preview result was insufficient for adoption. The practical lesson is to specify which rendering paths a change must survive, keep the failures in the record, and let the next measurement overturn a promising first result. Grain and vignette remain an explicit calibration gap.

Related: why RAW previews can disagree with exports, why sliders interact, and how calibration can overfit.