AmblyoPunch: A Dichoptic VR Architecture for Binocular Training
When the headset renders two slightly offset scenes, my visual cortex finally gets a reason to cooperate. I spent months chasing a lazy eye with patching and pencil push‑ups, only to watch the gains evaporate the moment I took the patch off. The breakthrough came when I strapped on a standalone VR rig running AmblyoPunch’s dichoptic pipeline.
Under the hood the engine splits a single Unity scene into left/right render textures, applies a per‑eye contrast gain, and drives a real‑time disparity shader that keeps the combined image within the Panum’s fusional area. The SDK ships a lightweight OpenXR layer, so the same binary runs on Quest 2, Pico 4, and PC‑VR without recompilation. Latency stays under 12 ms end‑to‑end, measured with the built‑in frame‑timing overlay — critical because any jitter re‑introduces suppression.
My first session lasted eight minutes. The calibration wizard asked me to align a floating crosshair; the algorithm then auto‑tuned the inter‑ocular contrast ratio to 1.3:1, the sweet spot the literature cites for adult amblyopes. After three weeks of daily 15‑minute runs, my log shows a 0.18 logMAR improvement — roughly two Snellen lines — and the suppression scotoma shrank from 12° to 4° on the Hess chart.
The code path is open enough to hook a custom reward signal; I wired a simple Unity event that fires when the disparity error drops below 0.5°, feeding a haptic pulse on the controllers. That tactile cue turned the training into a game loop I actually wanted to repeat.
If you’re building a vision‑therapy tool or just curious about dichoptic rendering, the repo’s README walks through the shader graph and the OpenXR integration step‑by‑step.

