Asynchronous TimeWarp: cos'è, come migliora la VR e quali sono le sue limitazioni

Asynchronous TimeWarp: cos'è, come migliora la VR e quali sono le sue limitazioni

La VR ha comportato una serie di problematiche per le modalità di rendering delle immagini, specificamente in termini di adattamento rispetto ai movimenti della testa dell'utente. Oculus ha studiato in dettaglio il fenomeno.

di pubblicato il nel canale Schede Video
Oculus Rift
 

Differenze con Orientation-only timewarp

La versione basilare di Asynchronous TimeWarp viene definita Orientation-only timewarp e tiene conto unicamente dei movimenti di tipo rotazionale della testa. Il vantaggio di questa tecnica è che si applica su un più semplice piano bidimensionale, il che consente di risparmiare risorse di elaborazione quando i suoi dati vengono incrociati con il passaggio che produce la necessaria distorsione dell'immagine e quindi immagini VR compatibili con le lenti, adeguatamente distorte ai bordi. Per le scene non troppo complesse, quindi, orientation-only timewarp porta a uno sforzo computazionale inferiore a quello che sarebbe necessario nel caso di rendering da zero di un nuovo frame.

Asynchronous TimeWarp tiene invece conto di dati provenienti dai movimenti della testa a 360 gradi, che vengono immagazzinati in un thread separato e usati per ogni vsync: in quell'istante, infatti, ATW genera un nuovo frame che tiene conto dell'effetto di timewarp a partire dall'ultimo frame renderizzato e pronto che si trova nel thread di rendering. I due thread, rendering e ATW, operano in maniera separata, e questo spiega il nome della tecnica.

Per riprodurre immagini fedeli occorre che le immagini sul display vengano aggiornate a ogni vsync. Questo vuol dire che, per mantenere il frame rate di 90fps, il sistema video deve essere in grado di erogare un nuovo frame al massimo entro 11 millisecondi, compito certamente molto gravoso al crescere della complessità della scena da renderizzare. Se il rendering, infatti, richiede troppo tempo mancherà un frame e si paleserà il fastidioso effetto judder. Questo perché, in assenza di un frame "fresco", il display visualizza il precedente frame per una seconda volta.

Ciò che succede è che non c'è corrispondenza tra il movimento dell'occhio e l'immagine: quest'ultima rimane immobile mentre l'occhio sta puntando su un altro settore dello spazio visivo, e questo produce judder. Per esprimere questo concetto i tecnici usano dei diagrammi spazio-tempo nelle modalità qui puntualizzate da Abrash. In un diagramma di questo tipo ogni punto rappresenta una coppia di informazioni: quando (t) e dove (x). Il diagramma seguente, che si riferisce alla situazione su due differenti frame, quindi, evidenzia come all'aumentare del tempo l'utente veda le stesse immagini in due posizioni leggermente differenti tra di loro. Ciò che si vede nei diagrammi spazio-tempo, infatti, si può assimilare a ciò che si vede quando si osserva una scena dall'alto con il movimento a destra e a sinistra che rappresenta il corrispondente movimento degli oggetti rispetto agli occhi.

Naturalmente, si prosegue ancora sul blog di Oculus, il raddoppiamento non è l'unico possibile effetto perché in dipendenza delle prestazioni dell'hardware lo stesso frame può essere visualizzato tre volte, così come quattro o cinque, e così via. In questi casi verrà proiettata sulla retina un'immagine triplicata, quadruplicata, quintuplicata, e così via.

Se non è occorso il momento del vsync, quindi Orientation-only ATW è in grado di gestire adeguatamente la situazione, distorcendo l'ultimo frame generato sulla base dei dati sul movimento rotazionale della testa. Nel caso di nuovo frame renderizzato, interrompe la visualizzazione del precedente e mostra il nuovo, adeguatamente modificato in base al più recente movimento della testa. Senza il buffer separato sui movimenti della testa, invece, verrebbe visualizzato per una seconda volta lo stesso frame al momento del vsync. La tecnica della distorsione sui soli movimenti rotazionali funziona bene in certi ambiti, ad esempio con i visori Samsung Gear VR, privi del tracciamento posizionale. I contenuti per questi visori solitamente evitano il presentarsi di oggetti vicini al punto di osservazione, il che limita in maniera sensibile il presentarsi di judder. Al tempo stesso, alcuni videogiochi per Gear VR simulano delle traslazioni virtuali, e in questi casi il judder potrebbe risultare particolarmente evidente pur in assenza di tracciamento posizionale.

Ma Orientation-only ATW non tiene conto dei movimenti di tipo traslazionale, ovvero relativi allo spostamento della testa da un punto all'altro o dalla traslazione degli occhi dovuta allo spostamento in una nuova posizione della testa. Con OO TW si possono facilmente presentare effetti di sdoppiamento dell'immagine di tipo judder nel caso di oggetti particolarmente vicini al punto di osservazione, come fa ben capire lo screenshot seguente con una scena all'interno di un sottomarino.

In assenza di tracciamento posizionale, nel caso l'utente muova di poco la testa e si limiti a guardare in giro per lo scenario, l'imprecisione posizionale può essere minima e l'effetto di judder poco evidente. Ma con l'avanzamento che si sta verificando con le tecnologie di VR e le applicazioni sempre più complesse che gli sviluppatori stanno realizzando Orientation-only ATW può rivelarsi pesantemente insufficiente.

È per questo che si rendono necessarie tecnologie di full positional warping che gestiscono la visualizzazione dei frame sulla base dei dati raccolti sia su movimenti di traslazione che rotazione. Ma qui andiamo incontro a una serie di problemi, visto che tali movimenti della testa potrebbero andare a cogliere elementi della scena che non erano stati renderizzati al primo passaggio. Per questo, il positional warping deve tenere conto della profondità nella scena di ogni pixel, per operare spostamenti di parti dell'immagine di entità differenti. Positional warping diventa, quindi, particolarmente gravoso da processare, non gestisce adeguatamente alcuni effetti di traslucenza, non è compatibile con tutte le tecniche di anti-aliasing e non risolve alcuni problemi relativi alla visualizzazione di artefatti.

 
^