Mixing Lab

Spectral Kubelka–Munk mixing of real paints — Golden Matte Fluid and Heavy Body acrylics, or the IFAC-CNR classical oils — compared against Mixbox and naive RGB interpolation. Every set carries genuine two-constant K/S (a real per-pigment scattering coefficient), so yellow + blue stays a saturated green rather than muddying to grey. D65.

Swatches at current ratio

Spectral KM mix
Mixbox
RGB lerp

Full ratio sweep

Spectral KM
Mixbox
RGB lerp

Mixbox interpolates the endpoint display colors through a pigment-latent space; the spectral row mixes the actual measured spectra. Where they agree, our physics matches a shipping reference. Where they differ, one of us is extrapolating — see the curves below. The x axis uses the same logistic scale as the ratio slider (fine near the ends), so each column lines up with the slider position above.

Ratio × thickness map

over white card
over black card
← A  ·  ratio sweep (logistic, matches slider)  ·  B → top: thick film → bottom: thin film

Two dimensions at once: left→right sweeps the A : B ratio on the same logistic scale as the slider; top→bottom thins the film from full hiding down to a bare scumble, over a white card and over a black card. The vertical line marks the current slider ratio. The top row equals the Spectral KM sweep above; the bottom edge is the card itself.

Spectral reflectance

Data table (31 bands)
nmABmix

Virtual drawdown — mix over white / black card

thin film (substrate shows through) thick film (full hiding)

Top half over white, bottom over black. Where the two halves converge, the paint has reached hiding thickness — finite-thickness Kubelka–Munk, the same math the canvas renderer will use.