Prestazioni e sguardo
Rendering foveato: perché la VR non disegna ogni pixel allo stesso modo
Ridurre il dettaglio dove l'occhio lo percepisce meno può liberare lavoro grafico. La parte difficile è decidere dove, quanto e che cosa fare quando lo sguardo non è disponibile.
Un visore deve produrre due immagini, aggiornarle rapidamente e correggerle in base ai movimenti della testa. Ogni pixel richiede lavoro. Il rendering foveato parte da un'osservazione semplice: la zona centrale dello sguardo coglie più dettaglio rispetto alla periferia. Il sistema può quindi concentrare la densità dei pixel in una parte dell'immagine e ridurla altrove.
Il trucco non consiste nel rendere nitido un oggetto e sfocare tutto il resto come farebbe una fotografia. È una scelta sulla quantità di informazione calcolata nelle diverse regioni del fotogramma. Se la transizione è ben progettata, l'utente dovrebbe occuparsi del contenuto, non della mappa usata per risparmiare lavoro alla GPU.
Fisso significa centrato sul display
Nel rendering foveato fisso, la regione a piena densità resta in una posizione prestabilita, in genere attorno al centro della vista. La specifica OpenXR consente a un'applicazione di richiedere un profilo con un livello massimo, uno spostamento verticale e un'impostazione dinamica. Il runtime interpreta questi parametri e applica il profilo alla superficie che riceverà l'immagine.
Questo metodo non richiede di sapere dove stia guardando la pupilla. È una semplificazione utile, ma ha un limite evidente: gli occhi possono muoversi senza che la testa li segua. Se una persona guarda di lato, potrebbe incontrare prima la regione a densità ridotta. Quanto si nota dipende dal livello scelto, dal contenuto e dall'intero sistema di rendering.
Con l'eye tracking la zona si sposta
Il rendering foveato guidato dallo sguardo usa la direzione rilevata dall'eye tracking per spostare la regione più dettagliata. La documentazione Meta descrive questa tecnica come un'evoluzione del profilo fisso: il centro ad alta densità segue il punto osservato, mentre la periferia può essere trattata in modo più aggressivo.
Non è una funzione universale dei visori. Servono sensori adatti, supporto del runtime, integrazione nell'applicazione e permesso dell'utente. La documentazione invita gli sviluppatori a verificare il supporto durante l'esecuzione, invece di affidarsi a un elenco di modelli scritto nel codice. È un dettaglio importante anche per chi legge una scheda tecnica: la presenza dell'eye tracking non prova che ogni applicazione lo usi per il rendering.
Dinamico non vuol dire guidato dagli occhi
Il termine dinamico può creare confusione. Nelle API di foveation può indicare che il livello cambia in risposta al carico grafico. Se la GPU è sotto pressione, il sistema può aumentare la riduzione di dettaglio periferico entro il limite impostato. Questo comportamento è diverso dallo spostamento della regione in base allo sguardo.
Le due idee possono convivere: una mappa segue gli occhi e il suo livello cambia secondo il carico. Per capire una funzione, bisogna quindi chiedere che cosa si muove e che cosa viene regolato. La parola dinamico, da sola, non risponde.
Permessi, fallback e artefatti
L'eye tracking può non essere disponibile perché manca l'hardware, perché l'utente lo ha disattivato o perché non ha concesso il permesso. Meta documenta un passaggio automatico a un profilo fisso in alcuni percorsi di integrazione. Anche OpenXR tratta il supporto come una capacità da controllare. Un'applicazione solida deve dunque avere un piano per continuare a funzionare senza lo sguardo.
Il risparmio non è gratuito. Livelli troppo aggressivi possono rendere visibile la variazione di densità, soprattutto nei bordi netti, nei testi o durante movimenti rapidi dello sguardo. La stessa documentazione Meta raccomanda di provare la qualità al livello massimo previsto. Questo è il punto in cui una funzione tecnica incontra il lavoro editoriale e artistico: ogni scena tollera compromessi diversi.
Come leggere una promessa di prestazioni
Il rendering foveato libera una parte del budget grafico, ma non stabilisce come verrà speso. Uno sviluppatore può usarlo per aumentare la risoluzione, rendere più stabile il frame rate, aggiungere effetti oppure conservare margine. Una percentuale isolata non descrive il risultato percepito e non può essere trasferita automaticamente da un'applicazione a un'altra.
La domanda utile è più concreta: il profilo è fisso o segue lo sguardo? Che cosa accade senza permesso? Il livello cambia con il carico? Quali scene sono state provate? Queste risposte raccontano meglio la funzione di una sigla sulla confezione.
Per confrontare impostazioni e compatibilità senza trasformare una singola esperienza in una regola generale, puoi aprire una discussione nella Piazza Oculandia. Indicare visore, applicazione e versione aiuta gli altri a capire il contesto.
Fonti primarie
- Meta for Developers, Eye Tracked Foveated Rendering, documentazione Unreal aggiornata il 17 aprile 2026.
- Khronos OpenXR, XrFoveationLevelProfileCreateInfoFB, parametri del profilo foveato fisso.
- Khronos OpenXR, XR_META_foveation_eye_tracked, estensione per la foveation guidata dallo sguardo.