Film Lab ProTry it free

Live Validation

Don't trust us. Test us.

Every accuracy claim on this site is verifiable right here, right now, on your own hardware.

What gets checked

GPU vs. reference — ΔE76

A 21-step gray wedge is rendered through the actual WebGL pipeline with all user controls neutral, then compared patch-by-patch against an independent CPU implementation of the same math (soft-knee, per-channel H&D LUTs, dye matrix blend). Differences are measured in CIELAB ΔE76 — the perceptual color-difference metric. ΔE below 1 is invisible; one just-noticeable difference is ≈ 2.3. We require max ΔE ≤ 2.0 across the entire tonal range.

Mid-gray pin

An 18% gray scene input must land within ±0.25 stops of the calibrated display target on every channel — through the full chain including per-layer speed shifts, the orange mask, and the print stage. This is what keeps brightness consistent when you switch stocks.

Monotonicity

Every characteristic-curve LUT is checked point-by-point: more exposure must never render darker. A non-monotonic curve would mean corrupted datasheet digitization.

Scope, honestly stated: this suite validates that the pipeline faithfully executes the published datasheet data — it does not (yet) compare against physical film scans. That next tier — shooting color charts on real stock, scanning, and publishing measured ΔE against our render — is on the roadmap. The digitized curves and every constant we use are published in full on the Published Data page.