Nvidia ha annunciato durante la Gamescom di quest’anno la sua nuova gamma di prodotti, presentando le schede video RTX 2070, 2080 e 2080ti, su cui si era a lungo vociferato e sulle cui performance sono state fatte diverse speculazioni; la vera novità della generazione in arrivo non sta tanto nell’incremento di prestazioni, assolutamente prevedibile, ma sta nell’introduzione del supporto al rendering tramite Ray Tracing in tempo reale, un’innovazione tecnologica che quasi certamente avrà grosse ripercussioni sull’industria del videogioco negli anni a venire.

Ma esattamente di cosa si tratta e quanto realmente costituisce una novità?

Con “Ray Tracing” ci si riferisce a una famiglia di algoritmi di rendering in computer grafica, contrapposta tradizionalmente a quella del “Rastering”, che sfrutta la matematica dei vettori per permettere di visualizzare un’immagine tramite un processo che simula il reale comportamento della luce. Approfondiremo entrambi gli algoritmi e il loro funzionamento in seguito, quello che per ora serve sapere è che il costo computazionale di un algoritmo ray-tracing è considerevole e per questa ragione la computer grafica in tempo reale ha sempre optato per il concorrente, in grado di fornire performance più adeguate ad esempio per un videogioco; a fare invece largo uso del Ray Tracing è il cosiddetto “rendering off-line”, come  ad esempio quello usato nel mondo del cinema.

Nvidia ha presentato per la prima volta la propria tecnologia di rendering ray-tracing a Marzo, alla GPU Technology Conference. Inizialmente era stata presentata solo come soluzione su schede video di altissima fascia, pensate anche per applicazioni AI e Machine Learning, per tale ragione sembrava che non fosse destinata a sbarcare così rapidamente in ambito gaming, da qui la sorpresa nel vedere la nuova gamma di prodotti essere nominata addirittura RTX e con l’introduzione dell’unità di misura dedicata, il “Gigaray/secondo”.

Di per sé, il Ray-Tracing come tecnologia esiste da decenni, il merito di Nvidia è stato quello di intraprendere un percorso di ricerca e sviluppo tecnologico che ha portato a realizzare le soluzioni che oggi permettono alla gamma RTX di effettuare un rendering in tempo reale basato su questo tipo di processo. Se da un lato le applicazioni di questa tecnologia in game development sono ancora primitive e di utilità discutibile, diverso invece è il discorso quando si guarda a lungo termine, dove la proposta di Nvidia potrebbe rivelarsi rivoluzionaria.

Come avviene dunque un rendering Ray-Tracing e cosa ha di speciale?

Tradizionalmente, il rendering tramite rasterizzazione effettua una serie di procedure, su cui non andremo a dilungarci, al termine delle quali si è ottenuta una mappa di punti nello spazio in 3 dimensioni, che può essere trasposta su un piano, andando quindi a formare un’immagine. In ognuno di questi punti è contenuta una serie di informazioni che consentono di completare il processo di rendering: sappiamo dove il punto si collocava nella figura di origine, quindi possiamo scegliere quale punto della texture visualizzare e conosciamo anche l’orientamento della figura di origine, permettendoci di eseguire il computo dell’illuminazione. Normalmente mancano però importanti informazioni di altro tipo, che vengono fornite tramite un parametro dell’oggetto detto “Shader”, che ne descrive le proprietà fotografiche e che sopperisce alle mancanze di un algoritmo di rastering.

Esempi di rendering via Rasterizzazione, con diversi tipi di shading. L’immagine mostra in particolare lo shading di una mesh di poligoni.

Il rendering tramite Ray Tracing, invece, simula il comportamento fisico della luce, ma in direzione opposta: mentre nella realtà la luce parte da una sorgente e tracciando dei raggi raggiunge tutti i possibili punti dello spazio, tale soluzione sarebbe impossibile da realizzare sotto l’aspetto computazionale, perciò si tracciano dei raggi dal punto di vista dell’osservatore e si “vede” che oggetti intercettano; dal punto di contatto viene poi tracciato un ulteriore raggio, diretto verso una sorgente di luce, per ognuna di quelle presenti nella “scena”.

Questo permette con semplicità da un punto di vista intuitivo e di implementazione di codice di studiare se un oggetto si trova rivolto verso la luce o vi da le spalle, se è all’ombra di un altro oggetto, se riflette la luce in maniera particolare o se è trasparente, il tutto senza dover ricorrere a strani artefici e agli “shader” che invece sono fondamentali in un rendering via rasterizzazione.

Un semplice esempio di rendering via Ray Tracing: vettori sono tracciati dalla camera ad un punto nella scena, dal punto colpito viene tracciato un altro vettore verso una sorgente di luce.

Lo svantaggio è che il Ray Tracing può diventare molto esigente in termini di risorse, al punto da diventare impossibile renderizzare ad una framerate che sia adatta a quella di un videogioco o comunque in un contesto dove è necessario avere un feedback e una resa video costante e fluida; per capirci meglio, il rendering di film in CGI richiede l’uso di macchine ad altissime prestazioni collegate in rete per formare una server farm; pure con così tanta potenza a disposizione, quella della neozelandese Weta Digital per renderizzare Avatar ha richiesto anche diverse ore per un singolo fotogramma.

Chiaramente è necessario ridimensionare il problema: i parametri di rendering di un film non sono quelli di un videogioco, né tantomeno la generazione RTX ha a disposizione una potenza di calcolo tale da eguagliare anche solo vagamente quella di una server farm; al momento, inoltre, pare che la tecnologia dietro Nvidia RTX si limiti ad effettuare il solo computo dell’illuminazione via ray-tracing, realizzando un rendering ibrido con il normale processo di rasterizzazione attraverso il quale vengono visualizzate geometrie.

Tuttavia, le implicazioni che l’introduzione del Ray Tracing ha nel contesto dell’industria del videogioco sono considerevoli, al punto che, se la tecnologia introdotta da Nvidia (o valide proposte avanzate dalla concorrenza) dovesse attecchire, vi saranno grossi cambiamenti che si ripercuoteranno su tutta la produzione di un videogioco.

Innanzitutto, con l’introduzione del Ray Tracing andremo incontro a un progressivo smantellamento di quella che oggi è tutta la produzione degli shader, in quanto diventeranno semplicemente non più necessari; già negli ultimi anni, infatti, alcuni shader sfruttano il ray tracing ad esempio per renderizzare riflessi ambientali in tempo reale o per gestire lo scattering sottosuperficiale, ma in questo caso parliamo di qualcosa che si avvicina proprio alla totale eliminazione dello shader convenzionale.

In secondo luogo, attualmente non tutte le sorgenti di luce in un videogioco sono “shadow casting”: solo determinate sorgenti di luce infatti generano volumi d’ombra, sulla base dei quali viene poi realizzato un rendering che riproduce più fedelmente un’illuminazione fotorealistica. Il posizionamento di tali luci all’interno di un gioco spetta ad artisti e level designer, che devono spesso avere a che fare con non indifferenti problemi tecnici e di ottimizzazione; differenze derivanti dal lavoro in questo ambito fra le versioni in sviluppo e le release finali sono state fonte di controversie e spesso si grida al “downgrade”, quando invece si tratta per lo più di aggiustamenti che richiedono una gran mole di tempo per essere fatti adeguatamente.

Infine, il rendering via Ray Tracing permetterà di eseguire un vero e proprio passo avanti, praticamente inarrivabile tramite rasterizzazione, per quanto riguarda l’illuminazione globale di una scena: nella presentazione di Metro Exodus alla Gamescom, ad esempio, possiamo vedere come RTX realizza il computo dell’illuminazione della scena globale, usando un unica fonde di luce, il sole, raggiungendo un risultato fotorealistico in cui vi sono ottimi contrasti fra zone in ombra e illuminate; in un rendering raster-based con shading, invece, un valore costante sarebbe sommato a ogni punto visibile, allo scopo di fornire l’illusione di un’illuminazione globale, ma questo risulterebbe nell’illuminazione forzata anche delle zone normalmente in ombra, che risulterebbero come pervase da una luce “finta” e onnipresente.

In breve: con RTX e il Ray-Tracing, il gioco vale la candela?

Purtroppo è ancora presto per poter godere appieno dei benefici di questa tecnologia: siamo di fronte a qualcosa che, pur considerando l’enorme sforzo di Nvidia, è ancora in una fase poco più che embrionale e che comporta tanto dei buoni risultati visuali, quanto delle complicazioni e incrementi dei costi nel processo di sviluppo.

Visto e considerato come la scheda video consigliata per raggiungere 1080p a 60fps con Ray-Tracing attivo è la RTX 2080ti, saranno ben pochi coloro che potranno godere dei benefici di questa tecnologia nei prossimi anni e ad un costo non indifferente; al momento potremmo quasi poter affermare che la feature è come una game-wide demo, e quanto “wide” sia è molto discutibile.

I resoconti di chi ha potuto provare la tecnologia dal vivo durante la Gamescom parlano di framerate molto titubanti e di risultati non sempre riscontrabili; prima che la transizione da ray tracing a rasterizzazione sia completa ci vorranno anni e questo sarà possibile solo se l’intera industria del videogioco deciderà di muoversi in questa direzione, su cui per adesso solo Microsoft e Nvidia sembrano puntare.