NVIDIA GTX 1080: la tecnologia dietro Pascal - Il supporto alla VR

La seconda parte del nostro speciale sulle GPU Pascal si concentra sulla realtà virtuale e sulle tecnologie previste per tale campo applicativo, come il Simultaneous Multi-Projection, il Lens Matched Shading e il Single Pass Stereo.

NVIDIA GTX 1080: la tecnologia dietro Pascal - Il supporto alla VR
Articolo a cura di

Nella prima parte del nostro speciale dedicato a Pascal abbiamo parlato delle GDDR5X, dell'Enhanced Memory Compression e del calcolo asincrono, tecniche che risultano utili in svariati campi. In questa seconda parte, invece, ci concentreremo di più sulla realtà virtuale e sulle tecnologie che l'azienda di Santa Clara ha previsto per tali applicazioni. Discuteremo di Simultaneous Multi-Projection, una nuova modalità per gestire le proiezioni che porta numerosi vantaggi alle configurazioni multi-monitor, di Lens Matched Shading e di Single Pass Stereo, che invece permettono non solo di godere di una qualità più elevata sui display dei visori, ma anche di ottenere più prestazioni.

Simultaneous Multi-Projection

Le proiezioni sono state un elemento fondamentale sin dalla nascita della computer graphics. Gli oggetti 3D di un ambiente sono composti da una o più forme geometriche e sono modellati sulle tre dimensioni che conosciamo. Per far sì però che la scena sia visualizzata su un comune display - che tipicamente ha un pannello piatto -, tutti gli oggetti e gli effetti calcolati della scena devono essere proiettati sullo schermo, e sorge quindi la necessità di avere a disposizione delle tecniche di proiezione.
La tecnica che in genere si usa è chiamata Perspective Projection e si applica tracciando una linea retta da ogni punto dello scenario direttamente verso l'occhio di chi guarda. Dopodiché si campionano i punti in cui le rette incrociano il piano di proiezione, che in questo caso è proprio il pannello dello schermo. Chi fa utilizzo di tale tecnica ha naturalmente bisogno di sapere più o meno dove sarà l'occhio dell'osservatore ed in che direzione sta guardando.
Simultaneous Multi-Projection (SMP) è un nuovo blocco hardware piazzato nel PolyMorph Engine, e che - temporalmente - prende posto dopo il Geometry Shader e poco prima della Raster Unit. Come anche il nome lascia intendere, esso gestisce proprio le proiezioni multiple di un flusso geometrico. Può occuparsi di ben 16 proiezioni per ogni shape da calcolare, le quali possono essere inclinate o ruotate attorno ai propri assi. Ogni funzione utilizzata dagli sviluppatori può essere applicata a svariate proiezioni simultaneamente, per cui NVIDIA ha pensato di replicare una determinata operazione sino a 32 volte senza scrivere alcuna istruzione aggiuntiva. Si può per esempio attivare lo stesso metodo proiettore su 32 vertici differenti. Tutti i calcoli compiuti sono comunque hardware-accelerated e i risultati ottenuti dal Simultaneous Multi-Projection possono anche essere salvati per essere utilizzati in seguito - questo risulta utile soprattutto negli scenari in cui le geometrie da calcolare sono tante.

SMP per le configurazioni surround

Uno degli scenari in cui risulta utile il Simultaneous Multi-Projection è con una configurazione a tre monitor, in quanto differenti proiezioni devono essere coordinate per più display. Questo perché l'angolo di ogni schermo può essere diverso da quello degli altri, e sorge la necessità di specificare tre proiezioni distinte che corrispondono agli altrettanti monitor. L'utente può posizionare gli schermi come più gli aggrada e lasciare che Simultaneous Multi-Projection si occupi di settare le giuste proporzioni. Può capitare che SMP non riesca a lavorare correttamente in alcuni scenari, ma in quel caso esso approssimerà il tutto per essere più vicino all'angolo di una determina superficie.
Ricordiamo però che oggigiorno i display piatti non sono i soli sul mercato, ma ritroviamo anche pannelli curvi o gli Head Mounted Display, che piazzano una lente fra lo schermo e gli occhi dell'utente. Queste due ultime tipologie richiedono chiaramente proiezioni differenti da quelle effettuate sui pannelli piatti. Attualmente le comuni GPU, per venire incontro a questi peculiari monitor, pongono dei filtri a valle del processo di rendering o semplicemente si avvalgono di operazioni di warping, che sono però onerose in termini di calcolo. Con Maxwell, NVIDIA ha presentato Multi-Resolution, che può essere definito come il precursore del SMP di Pascal. La precedente architettura poteva infatti girare una determinata proiezione di 90 gradi, oppure scalare il tutto per adattarla ad una specifica superficie. Questa tecnica è però limitata e non lavora troppo efficientemente, per cui la società di Santa Clara si è rivolta a Simultaneous Multi-Projection.
Se pensiamo ad una configurazione surround composta da tre monitor, nella quale questi sono piazzati dall'utente sulla stessa linea, allora l'area di rendering - e quindi il piano di proiezione - può essere approssimato ad una singola, grande zona. In tale casistica le tecniche di proiezione classiche vanno benissimo e lavorano senza intoppi, ma il problema si presenta se uno dei monitor viene leggermente angolato. Così facendo, l'immagine risulta all'atto pratico eccessivamente "stretchata" e distorta, soprattutto agli estremi destro e sinistro della configurazione surround. Questo perché la scheda video calcola le proporzioni per un pannello piatto e le prospettive non sono più corrette.
Al fine di risolvere la questione, NVIDIA SMP potrebbe trattare ogni monitor separatamente, tracciando delle rette che sono specifiche per ogni monitor adottato dall'utente. In questo modo si riuscirebbero a tracciare le giuste proiezioni per gli schermi, al costo però di un rendering workload molto più complesso: si dovrebbero, infatti, effettuare tre rendering per le altrettante scene, computandole tre volte separatamente.
NVIDIA ha risolto il problema renderizzando il tutto una sola volta, seppur mantenendo le proiezioni corrette, con Perspective Surround. Questa tecnica è configurata per lavorare direttamente con tre schermi angolati differentemente, per cui non fa altro che applicare una adeguata funzione di proiezione per ogni monitor, filtrando in sostanza i comandi derivanti dall'unica pipeline. Così il workload rimane uno solo, perché sarà Perspective Surround ad occuparsi di applicare diverse proiezioni per i differenti monitor. Tale tecnologia lavora poi on-the-fly, per ottenere le corrette proporzioni senza gravare sulle prestazioni finali.

Single Pass Stereo e Lens Matched Shading

Con la realtà virtuale devono essere generate due proiezioni, una per ogni occhio. In genere si renderizza ogni schermo separatamente, il che si traduce sostanzialmente con due pipeline grafiche. Con Pascal SMP, grazie a Perspective Surround, questo può essere superato renderizzando entrambi gli schermi attraverso una singola coda comandi. Per la VR tale tecnologia prende però il nome di Single Pass Stereo, e apparentemente è molto simile a Perspective Surround, che però lavora su configurazioni multi-monitor. Single Pass Stereo viene impiegata in combinazione con Lens Matched Shading per completare il pacchetto di tecnologie di proiezione per la VR.
Sappiamo che con i visori virtuali sono presenti delle lenti fra il display e l'utilizzatore, per cui si deve in qualche modo bilanciare la distorsione da esse imposta. Correggere questo effetto collaterale con le schede grafiche della precedente generazione richiede due passi: per prima cosa si deve renderizzare la scena normalmente, come se si fosse su un display planare (calcolando tra l'altro più pixel del necessario), per poi andare ad assegnare una specie di maschera che bilancia la distorsione. Essa viene applicata soprattutto ai bordi - che vengono anche schiacciati -, mentre il centro dell'immagine rimane sostanzialmente inalterato.
Con Lens Matched Shading il display viene diviso in quattro quadranti, ognuno dotato delle sue proiezioni. I parametri di queste ultime possono essere aggiustati per essere i migliori possibili a seconda del quadrante, permettendo di risparmiare preziosa potenza di calcolo. NVIDIA ha fornito agli sviluppatori delle funzioni per decidere il sampling rate, così da poter eventualmente gestire la compressione a proprio piacimento, al fine di ottenere più prestazioni o una migliore qualità visiva. Ciò è un concetto che è possibile applicare anche a determinate zone: si può per esempio lasciare il centro ad una risoluzione elevata e sotto-campionare i bordi, dove il campo visivo percepisce meno dettagli. La società di Santa Clara ha affermato che Single Pass Stereo e Lens Matched Shading riescono a fornire in output due volte le prestazioni VR rispetto ad una scheda video che usufruisce solo di Simultaneous Multi-Projection.

Per proseguire la lettura della terza parte dello speciale, dedicata allo SLI, ai monitor HDR e al Fast Sync, clicca qui.

NVIDIA GeForce GTX 1080 Come abbiamo visto, con la nuova architettura Pascal di NVIDIA propone al pubblico tante nuove tecnologie progettate ad hoc per la realtà virtuale. E’ chiaro che oramai la direzione presa dall’industria è questa, e che quindi nessuno vuol perdere il treno. Non abbiamo solo SMP, Single Pass Stereo e Lens Matched Shading, ma anche VRWorks, SDK dedicato direttamente agli sviluppatori di cui abbiamo parlato più dettagliatamente in uno degli articoli precedenti. Appuntamento alla terza ed ultima parte, nella quale discuteremo della nuova concezione dello SLI, dei vantaggi ai futuri monitor con HDR e di tanto altro.