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 Texture Tiling Model predicts that pooling region size grows linearly with eccentricity. Hardware MIP chains encode a similar hierarchy — each level halves spatial resolution. The mapping:
// MIP level grows with eccentricity
float mipLevel = clamp(normalizedEcc * 2.5, 0.0, 4.0);
vec4 pooled = textureLod(u_texture, uv, mipLevel);
Update: This single-MIP approach was decomposed into frequency-selective DoG bands in v1.6, then upgraded to 8 half-octave bands in v2.1. The eccentricity mapping was also recalibrated to linear M-scaling in v1.8. See the MIP chain explainer for how it works now.
The result: ~5x faster than the Gaussian blur it replaces, with smoother transitions and better color fidelity in the periphery. 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.
IOR is one of the mechanisms behind efficient information foraging (Pirolli & Card 1999). By suppressing already-visited locations, the visual system biases scanning toward unexplored regions — it’s the biological implementation of exploration over exploitation.
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