bilateral:MultipassFilter< { sigmaRange:{ default:0.08; description:"How different in colour a neighbour may be and still be averaged in. Low keeps edges; high approaches a plain blur."; label:"Colour sigma (ΔE)"; max:0.5; min:0.01; step:0.005; type:"float"; }; sigmaSpace:{ default:3; description:"How far the smoothing reaches, in pixels."; label:"Spatial sigma (px)"; max:20; min:0.5; step:0.1; type:"float"; unit:"px"; }; }, > = ...
Edge-preserving smoothing: each neighbour weighs exp(−d²/2σs²) · exp(−ΔE²/2σr²), with ΔE the
OKLab distance of the straight colours plus the alpha difference, and the average is taken on
premultiplied linear values. Window radius 2σs (max 40 px). A first pass stores OKLab per pixel
(rgba16float, like the CPU's rounded intermediate) so the main pass needs no cube roots.
Edge-preserving smoothing: each neighbour weighs exp(−d²/2σs²) · exp(−ΔE²/2σr²), with ΔE the OKLab distance of the straight colours plus the alpha difference, and the average is taken on premultiplied linear values. Window radius 2σs (max 40 px). A first pass stores OKLab per pixel (rgba16float, like the CPU's rounded intermediate) so the main pass needs no cube roots.