Cos'è il Ray Tracing, il nuovo mantra delle GPU gaming

Spieghiamo cos'è il ray tracing, tecnica di rendering che ritroviamo nei videogiochi di ultima generazione e che promette un maggiore realismo.

Avatar di Manolo De Agostini

a cura di Manolo De Agostini

Negli ultimi mesi in ambito gaming si parla molto di ray tracing, una tecnologia di rendering che in futuro dovrebbe prendere il posto della rasterizzazione. Per ora si parla di rendering ibrido (hybrid rendering), con l'uso del ray tracing solo per alcuni aspetti nei videogiochi, in quanto la tecnica è molto pesante da gestire, quindi non è possibile - al momento - renderizzare interamente e in tempo reale tutta la scena in ray tracing.

Proviamo a spiegare cos'è il ray tracing e che cosa significa per il mondo del gaming. Prima di spiegarlo bisogna dire che dai primi anni '90 il rendering 3D è basato su un processo chiamato "rasterization" (rasterizzazione), in cui gli oggetti sono creati da una maglia (mesh) di triangoli o poligoni che servono a rappresentare il modello tridimensionale di un oggetto.

La pipeline di rendering si occupa poi di convertire ogni triangolo dei modelli 3D in pixel visualizzati su una schermata 2D. I pixel, a loro volta, possono poi essere ulteriormente processati (shading), prima di essere mostrati sullo schermo. È in questa fase che si cambia il colore di un pixel in base a come la luce della scena lo colpisce e si applicano una o più texture al pixel. La rasterizzazione può ancora offrire un'eccellente qualità grafica, come dimostrato da tantissimi giochi odierni.

Il ray tracing agisce in modo diverso ed è un passo ulteriore verso l'obiettivo finale, il fotorealismo, ossia ottenere immagini indistinguibili dalla realtà. Usato a lungo per definire un rendering “in tempo non reale” data la sua pesantezza, permette un'illuminazione realistica delle scene simulando il comportamento fisico della luce, prendendo in considerazione le interazioni dei raggi prodotti da una o più sorgenti con le varie superfici, prima di raggiungere l'occhio umano.

Questo almeno è ciò che avviene nella realtà. Nel caso della grafica, si calcola il percorso della luce seguendo i raggi a ritroso lungo il percorso che dovrebbero aver compiuto prima di colpire una lente immaginaria.

Percorrendo la scena, la luce potrebbe essere riflessa da un oggetto all'altro (causando dei riflessi), bloccata da altri oggetti (portando ad avere delle ombre) o attraversare oggetti trasparenti e semitrasparenti (rifrazione). Tutte queste interazioni sono combinate per produrre il colore finale di un pixel che viene poi mostrato sullo schermo.

Insomma, le proprietà materiali superficiali di un oggetto, come il colore, la riflettività e l'opacità, sono tutte informazioni che influenzano il colore dell'oggetto e il suo modo d'interagire con i raggi luminosi. Poiché i raggi si propagano dal vostro occhio, le luci e le ombre interagiscono in modo naturale cambiando l'angolo di visione.

Finora il ray tracing è stato visto come il Santa Graal del rendering, in quanto permette di aumentare nettamente la qualità grafica, permettendo luci e ombre di grandissima qualità in ogni frangente.

Purtroppo, tanta bellezza richiede anche molta potenza per una fruizione in tempo reale, come quella che devono garantire i videogiochi. Questo malgrado il tracciamento inverso dei raggi consenta di alleggerire i calcoli richiesti, in quanto alcuni raggi di luce potrebbero non fornire informazioni importanti a chi sta osservando una determinata scena.

Finora quindi il ray tracing era una sorta di tabù, se non per il rendering "in non tempo reale". La tecnologia in sé non è esattamente nuova e probabilmente vi ci siete imbattuti più volte, perché affonda le sue radici verso la fine degli anni '60, quando Arthur Appel di IBM introdusse il concetto di ray casting, che consiste nel far partire i raggi dall'occhio, uno per pixel, e trovare l'oggetto più prossimo che ne blocca il tragitto. L'oggetto colpito è quello che l'occhio vede tramite quel pixel.

Nel 1979 Turner Whitted completò il lavoro, catturando riflessi, ombre e rifrazione. Con la tecnica di Whitted, quando un raggio incontra un oggetto nella scena, l'informazione riguardo il colore e l'illuminazione nel punto d'impatto sulla superficie dell'oggetto contribuisce al colore del pixel e al livello di illuminazione. Se il raggio rimbalza o viaggia attraverso superfici di oggetti differenti prima di raggiungere la sorgente di luce, l'informazione di colore e illuminazione da tutti questi oggetti può contribuire al colore finale del pixel.

Robert Cook, Thomas Porter e Loren Carpenter nel 1984 spiegarono il ray tracing può incorporare una serie di tecniche di produzione cinematografica comuni - inclusi motion blur, profondità di campo, penombra, translucenza e riflessi sfocati - fino ad allora creabili solo con videocamere. Due anni dopo il professore della Caltech Jim Kajiya, in "The Rendering Equation", ha espanso ulteriormente il modo in cui la luce si disperde in una scena.

Hollywood usa il ray-tracing nei film per generare o potenziare gli effetti speciali digitali e fonderli con l'azione reale. Progettisti e architetti usano il ray tracing per generare prototipi fotorealistici dei loro prodotti. Le aziende cinematografiche possono impiegare tutto il tempo che desiderano per renderizzare una singola immagine, e lo fanno offline tramite moltissimi computer situati in enormi render farm. Per renderizzare dei videogiochi invece è richiesta una frazione di secondo. Per questo il ray tracing solo di recente ha iniziato a fare capolino nei nel mondo del gaming e in modo limitato.

Battlefield applica il ray tracing ai riflessi. Metro Exodus lo usa per l'illuminazione globale dal sole/cielo, modellando come la luce interagisce con varie superfici. Le sorgenti di luce locali non sono invece renderizzate in ray tracing. Shadow of The Tomb Raider lo usa per gli effetti di ombra,

Poiché il ray tracing è così intensivo dal punto di vista della potenza di calcolo, viene spesso usato per rendere quelle aree o oggetti in una scena che beneficiano maggiormente della qualità visiva e del realismo della tecnica, mentre il resto della scena è reso utilizzando la rasterizzazione. La rasterizzazione può ancora offrire un'eccellente qualità grafica.

Con l'avvento delle nuove architetture grafiche, come la nuova Turing di Nvidia, le GPU stanno guadagnando un'adeguata capacità di calcolo per svolgere in tempo reale alcuni carichi con il ray tracing. Questo tramite unità dedicate all'accelerazione dei calcoli e allo sviluppo da parte di Microsoft di una API dedicata chiamata DirectX Raytracing (DXR). Anche l'API Vulkan supporta il ray tracing tramite un'estensione sviluppata da Nvidia.

Fortunatamente il lavoro dei produttori di hardware e degli sviluppatori sta portando il ray tracing anche su GPU prive di unità dedicate alla tecnologia, ma con un impatto su qualità visiva e prestazioni. Come detto il ray tracing introduce diversi nuovi carichi di lavoro. Il primo è determinare quale triangolo nella scena di gioco intersecherà un raggio. Per farlo si usa una tecnica, molto esigente dal punto di vista della potenza di calcolo, chiamata Bounding Volume Hierarchy, o BVH. Dopo che i raggi sono stati calcolati, un algoritmo di denoising (di ripulitura) viene applicato per migliorare la qualità visiva dell'immagine finale, in modo da usare un numero minore di raggi, consentendo così che il processo avvenga in tempo reale.

Gli RT Core delle GeForce RTX non sono altro che hardware deputato ad accelerare BVH e i calcoli sull'intersezione tra raggi e triangoli, e possono velocizzare il ray tracing. Sulle GeForce GTX questi calcoli sono svolti dagli shader, che però sono condivisi con altre funzioni grafiche. Nel gaming il ray tracing è destinato a trovare sempre più spazio nei prossimi anni, anche se per diverso tempo si continuerà a usare un rendering ibrido che combina la rasterizzazione con il ray tracing.