2025-12-13
Scrutinizer v1.4: MIP Pooling, Oklab Saliency & Inhibition of Return
The peripheral visual system doesn't blur — it pools. v1.4 replaces the previous 5-tap Gaussian blur with hardware MIP-map sampling, mapping eccentricity to MIP level the way receptive field size grows with distance from the fovea (validated against contrast sensitivity data — see report). This is faster (one texture lookup vs. five) and more biologically accurate. The release also migrates saliency computation to Oklab color space and introduces Inhibition of Return as a visual memory mode.
MIP-based peripheral pooling
Rosenholtz et al.'s pooling model predicts that receptive field size roughly doubles with eccentricity. Hardware MIP chains encode exactly this hierarchy — each level halves spatial resolution. The mapping is natural:
// MIP level grows with eccentricity
float mipLevel = clamp(normalizedEcc * 2.5, 0.0, 4.0);
vec4 pooled = textureLod(u_texture, uv, mipLevel);
The result: ~5x faster than the Gaussian blur it replaces, with smoother transitions and better color fidelity in the periphery. v1.6 would later decompose this into frequency-selective DoG bands, but v1.4 established the MIP pipeline that made everything after it possible.
Oklab saliency
Saliency feature extraction moved from RGB to Oklab, separating lightness (L) from chrominance (a, b) in a perceptually uniform space. This mirrors the magnocellular (luminance) and parvocellular (color) pathways. The practical effect: saliency maps are more stable and less sensitive to hue-saturation confounds.
Inhibition of Return
A new visual memory mode: recently fixated areas become suppressed (more distorted) rather than cleared, simulating the brain's tendency to de-prioritize previously attended locations. This pushes gaze toward novel content — the complement to Scrutinizer's existing memory-based clearing.
Other changes
- Visual Overlay refinement — Renamed from "debug grid," switched to linear spacing with variable stroke width.
- Coupled Warp + MIP Pooling (v1.4.1) — Position jitter scales with integration field size for physically-grounded crowding simulation.
- Unbound Color (v1.4.1) — Parvocellular resolution loss modeled as chromatic fringe blur ("watercolor bleed") with radial offset.
- Auto-updates — Checks GitHub releases on startup.
Links: GitHub · Full changelog · v1.4.0 release