Scrutinizer v1.6 & v1.7: Abstracting and Reading the Latest Science

v1.6.0 · v1.7.0 release notes →

Two releases in February. v1.6 broke apart a growing monolith and shipped biologically-grounded peripheral rendering (DoG band decomposition with M-scaling from measured cortical data). v1.7 came from reading a new paper, extracting one equation into a switchable pipeline mode in an afternoon, and discovering a shared theoretical ambiguity worth resolving.

What shipped

v1.6 — De-Monolith + DoG Peripheral Reconstruction

v1.7 — FOVI Cortical Magnification + Experimental Modes

The architecture is designed for this — modes.json config, per-mode uniform injection, hot-switchable pipelines. Want to contribute a mode? See CONTRIBUTING.md and the project backlog for grad students.


From hand-tuned cutoffs to FOVI's CMF

Cortical magnification — spatial resolution falling off with eccentricity — has been the design target since v1.6. Our DoG band cutoffs were derived from Rovamo & Virsu (1979) M-scaling data, hand-tuned to GPU MIP semantics. They worked, but the constants were empirical rather than analytical.

While preparing a system paper for arXiv, we surveyed recent foveated vision literature. On February 3rd, Blauch, Alvarez & Konkle published FOVI: a kNN-convolutional architecture that reformats a variable-density retinal sensor array into a V1-like manifold for deep vision models. It's a substantial piece of work — novel kernel mapping, LoRA-adapted DINOv3, the whole pipeline. What caught our attention was their cortical magnification function — the analytically grounded form of the curve we'd been approximating.

FOVI gave us the clean analytical form: resolution drops off logarithmically from the center of gaze. The further from fixation, the less cortical surface area is dedicated to processing that region — and resolution falls off accordingly.

We adapted their magnification curve to Scrutinizer’s GPU pipeline. FOVI uses the curve to build a variable-density sensor for neural networks; we use it to control how much detail the GPU preserves at each distance from fixation. Same biological curve, different application. (Thanks to Nicholas Blauch for catching an original attribution error.)

We implemented our MIP adaptation of the CMF as a switchable textureLod() sampling mode and dropped it into Scrutinizer as Mode 6. (We did not implement FOVI's kNN manifold, kernel mapping, or neural network pipeline — just the spatial resolution curve.) Side by side, our CMF-derived cutoffs preserve detail 3–4× further into the periphery:

BandCMF-adapted cutoffv1.6 cutoffRatio
Serifs (c0)0.580.153.8×
Letters (c1)1.390.304.6×
Words (c2)2.540.604.2×
Buttons (c3)4.171.203.5×

That gap is crowding, RF growth, and contrast sensitivity — factors FOVI leaves to the downstream network, factors Scrutinizer bakes into the shader.

Mode 0: smoothstep desaturation
Mode 0 — smoothstep
Mode 8: Gaussian exponential desaturation
Mode 8 — Gaussian exp
Mode 6: FOVI reference
Mode 6 — FOVI CMF

Update (March 2026): These captures were re-generated after we ran a full-spectrum color diagnostic through the pipeline. The original comparison revealed that salient regions were capping desaturation at 85% — an aesthetic guard that left visible color in the far periphery. Investigating why led us to expose the cap as a tunable parameter (u_desat_floor) and default it to 1.0 (full desaturation). The images above now reflect the corrected pipeline.

The color question: why blue survives

FOVI doesn't address color — it's a spatial resolution transform. Scrutinizer has to pick a transfer function for peripheral desaturation, and the results are strikingly different. Run a color wheel through both pipelines and it's immediately visible: Scrutinizer preserves blue-green tints deep into the periphery while red and orange vanish. FOVI strips all color uniformly.

This isn't the saliency gate — it happens on pure image content with no DOM structure to preserve. The mechanism is the eigengrau tint in Scrutinizer's Oklab desaturation. Peripheral pixels don't fade to neutral gray; they fade toward eigengrau (L=0.1, a=0, b=-0.05), a dark blue-gray that models the intrinsic color of rod-dominated dark adaptation. That b=-0.05 on the blue-yellow axis means the destination itself has a blue bias. Red gets pulled away from its warm coordinates and pushed cool. Blue gets reinforced. The result: blue and green survive in the periphery while red goes first.

The empirical motivation for this is strong. Mullen & Kingdom (2002) measured red-green vs. blue-yellow cone opponency across eccentricity with independently scaled stimuli — controlling for the confound that the channels have different spatial tuning. They found red-green (L-M) sensitivity is a foveal specialization that collapses in the periphery, while blue-yellow (S-(L+M)) declines gradually, tracking achromatic sensitivity.

A 2025 far-periphery study put numbers on it:

Channel At 15° At 75° 50% eccentricity
Red-green (L-M) 29% 4% ~8–10°
Blue-yellow (S-(L+M)) 79% 18% ~40–50°
Achromatic (L+M) 76% 12% ~35–45°

At 15 degrees, red-green has lost 71% of its foveal sensitivity while blue-yellow has lost only 21%. The 50% crossover eccentricities differ by a factor of 4–5×.

The reason is in the wiring. The blue-yellow pathway has dedicated retinal wiring that covers the entire retina — it’s evolutionarily ancient. Red-green sensitivity, by contrast, depends on fine-grained one-to-one connections that only exist near the fovea. In the periphery, those connections pool together and the red-green signal collapses. Red-green is a foveal specialization. Blue-yellow is retina-wide.

Scrutinizer’s desaturation is correct in direction: peripheral pixels fade toward a blue-shifted dark gray (the Purkinje effect), so blue persists and red goes first. But both color channels are reduced by the same amount — the asymmetry comes from the destination color, not from channel-specific decay rates. v1.9 fixes this with per-channel decay.

A shared open question

Both FOVI and Scrutinizer model peripheral color loss, but neither captures the full biology. FOVI strips all color uniformly. Scrutinizer fades toward a blue-shifted dark gray (eigengrau), which gives the right qualitative asymmetry — blue persists, red goes first — but through the wrong mechanism.

The correct approach is separate decay rates for red-green (fast, foveal specialization) and blue-yellow (slow, retina-wide). v1.9 shipped this fix — see the chromatic pipeline post. We’ve also opened a discussion with the FOVI team about per-channel decay.

Making science go fast

Paper published February 3rd. CMF equation extracted and shipping as a switchable mode by February 28th. The modular architecture made this trivial — one new uniform, one branch in the MIP sampling function, one entry in modes.json. Reading a paper and absorbing the relevant piece into your system should be the same afternoon. That's what branch points are for.

Blauch's larger program

FOVI is one piece. Blauch's arc — from topographic organization in ventral temporal cortex, through foveated vision, to Topoformer (topographic self-attention in language transformers) — builds the case that cortical spatial organization is a general computational principle. The retina and cortex aren't just biology to model — they're engineering solutions to port. The color decay question and the magnification gap matter to both pipelines.


Links: FOVI paper (Blauch et al.) · GitHub · Full changelog