

Ray tracing, la nuova rivoluzione della grafica?

Nvidia la definisce la più grande innovazione grafica dall'introduzione dell'architettura CUDA: il ray tracing. Le nuove schede grafiche RTX dell'inventore del processore grafico dovrebbero rendere il ray tracing in tempo reale accessibile all'utente medio. Cosa c'è dietro questa tecnologia e cosa significa per i giocatori?
Dopo il lancio della nuova serie di schede grafiche professionali basate sull'architettura Turing, Nvidia presenta le sue nuove schede consumer. Il marchio abbandona la denominazione GTX a favore di RTX per i modelli 2070 e 2080. L'architettura Turing dovrebbe finalmente rendere possibile il ray-tracing in tempo reale, in precedenza troppo impegnativo dal punto di vista computazionale. Grazie ai nuovi core di ray-tracing e ai core CUDA riuniti in un'unica scheda, le nuove GPU RTX combinano ray-tracing e rasterizzazione.
Il ray tracing permette di ottenere effetti di illuminazione realistici e dovrebbe rendere i giochi ancora più realistici. Microsoft ha sviluppato una nuova API DirectX Raytracing (DXR) ed Epic Games fornirà quest'anno il ray tracing in tempo reale agli sviluppatori di Unreal Engine. Tutto sembra portarci verso una nuova rivoluzione grafica.
Da dove viene il ray tracing?
Il ray tracing è tutt'altro che nuovo. L'algoritmo di base era già stato scritto da John Turner Whitted nel 1979. Ci è voluto un po' di tempo prima di poter visualizzare le immagini renderizzate con il ray tracing, poiché la tecnologia richiede un'enorme potenza di calcolo. Tuttavia, il ray tracing è stato utilizzato per alcune sequenze di "Shrek". Forse l'avrai notato per la prima volta in "Cars" nel 2006. Anche in questo caso, però, la tecnologia è stata utilizzata relativamente poco, perché il rendering di una singola immagine richiedeva un'enorme quantità di tempo. Nvidia ha lanciato il ray tracing per i giochi nel 2008. Ci sono voluti dieci anni prima che le prime schede grafiche che supportano il ray tracing venissero lanciate sul mercato. Giochi come "Shadow of the Tomb Raider", "Battlefield V", "We Happy Few", "Hitman 2", "Final Fantasy XV", "PlayerUnknown's Battlegrounds", "Remanant from the Ashes" e "Dauntless" supportano già il ray tracing e sono molto promettenti.
Cosa distingue il ray tracing dalla rasterizzazione?
Il ray tracing si distingue per la sua modellazione altamente realistica di un ambiente fisico, ma richiede una maggiore potenza di calcolo. La rasterizzazione, invece, è più veloce e può essere combinata con molti altri algoritmi. Tuttavia, il rendering della rasterizzazione non è neanche lontanamente paragonabile a quello del ray-tracing.

Fonte: capture d'écran venant de «Raytracing in Industry» d'Hugo Pacheco
Rasterizzazione (rasterizzazione dei poligoni)
Una scena 3D è composta da diversi elementi: modelli 3D di triangoli (poligoni) ricoperti di texture e colori, la luce che illumina l'oggetto e il punto di vista da cui si osserva la scena. Infatti, l'immagine raster è costituita da una griglia di pixel creata dal punto di vista. La grafica raster determina quali pixel sono coperti da ciascuno dei poligoni dell'immagine. Il colore del poligono viene quindi applicato al pixel. Il motore 3D inizia con i poligoni più distanti e procede verso l'angolo di visuale della telecamera. Quando un poligono si sovrappone a un altro, il pixel assume prima il colore del poligono sullo sfondo e poi quello del poligono di fronte.
Altri algoritmi come gli shader o la mappatura delle ombre vengono poi aggiunti al processo per rendere il colore dei pixel più realistico.
La rasterizzazione è limitata: un oggetto posto al di fuori del campo visivo, ad esempio, verrà ignorato. Tuttavia, potrebbe proiettare un'ombra sulla scena visualizzata o addirittura essere visibile altrove. Alcuni di questi effetti possono essere resi da algoritmi aggiuntivi come la mappatura delle ombre, ma le scene non assomiglieranno mai a quelle reali.
Questo perché la rasterizzazione non funziona come il nostro occhio. Al contrario, il ray-tracing si ispira alla natura.
Ray tracing
Il ray tracing simula il percorso inverso della luce verso il nostro occhio. Quando osserviamo una scena, il nostro occhio riceve dei raggi dalla sorgente luminosa che vengono riflessi dai vari oggetti che ci circondano.
La tecnologia del ray-tracing prevede l'invio di un raggio di luce a ciascun pixel dal punto di vista. Il punto di vista è la percezione di un'immagine bidimensionale. Il raggio si estende lungo una semilinea finché non incontra un elemento tridimensionale dell'immagine da renderizzare. Questo punto di impatto viene utilizzato per determinare il colore del pixel.
In effetti, il rendering con ray-tracing è una sorta di riflessione della luce al contrario, in quanto i raggi partono dal punto di vista e vanno verso la sorgente luminosa. Per inciso, l'algoritmo alla base del ray tracing di John Turner Whitted si basa sul principio del ritorno inverso della luce. Non è adatto per il rendering delle immagini, poiché esegue troppi calcoli inutili.
Determinare il colore di un pixel non è però sufficiente per ottenere un rendering realistico; è necessario determinare anche l'illuminazione del pixel. Questo è il ruolo dei raggi secondari, che arrivano dopo i raggi primari e hanno determinato la visibilità dei vari oggetti della scena. Per calcolare gli effetti di illuminazione di una scena, i raggi secondari vengono emessi in direzione delle diverse fonti di luce. Se i raggi sono bloccati da un oggetto, significa che l'oggetto si trova nell'ombra proiettata dalla sorgente luminosa in questione. La somma di tutti i raggi secondari che raggiungono una sorgente luminosa determina la quantità di luce che cade su un elemento della scena.

E non è tutto. Per un rendering ancora più realistico, è necessario prendere in considerazione anche la riflessione e la rifrazione. In altre parole, la quantità di luce riflessa al momento dell'impatto e la quantità di luce che penetra nel materiale. Anche in questo caso, i raggi vengono inviati per determinare il colore finale del pixel.
In sintesi, il ray-tracing utilizza diversi tipi di raggi luminosi per renderizzare un'immagine. I raggi primari determinano la visibilità dell'oggetto. I raggi secondari sono costituiti da raggi d'ombra, di riflessione e di rifrazione e stabiliscono un modello di illuminazione.
Se tutto questo è un po' troppo teorico per te, ti consiglio questo tutorial (in inglese). Dal video imparerai prima la teoria e poi metterai tutto in pratica.
I vantaggi del ray tracing
Come detto in precedenza, la rasterizzazione consente di ottenere effetti di illuminazione relativamente realistici. Ma il ray tracing permette di renderizzare perfettamente i riflessi, senza impantanarsi in complessi algoritmi aggiuntivi. Tutto viene calcolato direttamente dall'algoritmo di rendering. Lo stesso vale per gli inter-riflessi, ad esempio il riflesso di uno specchietto retrovisore sulla carrozzeria di un'auto. Con la rasterizzazione è molto difficile riprodurre questo effetto.
Gli effetti di trasparenza sono un altro vantaggio del ray tracing. Il calcolo corretto della trasparenza è particolarmente complesso con la rasterizzazione, poiché dipende dall'ordine di rendering. Per ottenere buoni risultati, i poligoni trasparenti dovrebbero essere ordinati dal più lontano dalla telecamera al più vicino prima del calcolo del rendering.
In pratica, questo processo richiede un'eccessiva potenza di calcolo e gli errori non sono inevitabili, dato che l'ordinamento viene effettuato sui poligoni e non sui pixel. Il ray-tracing, invece, rende possibile il rendering di bellissimi effetti di trasparenza.
È necessario aggiungere anche il calcolo delle ombre Nella rasterizzazione, è la mappatura delle ombre, tra le altre cose, che permette di renderizzarle nell'immagine. Ma questo richiede molta memoria e l'aliasing è un problema. Il ray-tracing evita qualsiasi problema senza nemmeno bisogno di un algoritmo aggiuntivo.
Evoluzione grafica o semplice evoluzione?
Siamo onesti: Nvidia non ha tutti i torti nel dichiarare che il ray tracing potrebbe essere la più grande rivoluzione grafica dai tempi dell'architettura CUDA. Certo, i giochi sono sempre più belli grazie alla risoluzione 4K, agli shader migliorati e così via. Ma se si considera che i benchmark di Crysis (lanciato nel 2007) sono ancora attivi, è chiaro che non abbiamo visto una vera rivoluzione grafica da dieci o dodici anni. Resta da vedere se la colpa sia delle console o meno. Il fatto è che finalmente sta succedendo qualcosa in termini di grafica per i giocatori.
E questo qualcosa potrebbe essere il ray tracing. Le prime demo di giochi con il ray tracing sono francamente impressionanti. Mi sembra di essere in un film d'animazione, solo che questo lo posso controllare. La cosa migliore è che tu lo veda con i tuoi occhi.
Come accennato all'inizio dell'articolo, le GPU RTX si basano su una combinazione di ray-tracing e rasterizzazione. E in effetti, i tre video dimostrativi non si limitano a mostrare l'impressionante rendering degli effetti di illuminazione utilizzando il ray tracing. Se dai un'occhiata più da vicino al video di Battlefield V, intorno ai 20 secondi vedrai una carrozza gialla del tram sullo sfondo. Non si vede alcun effetto di illuminazione, anche se la superficie della carrozza dovrebbe riflettere l'esplosione alla sua sinistra. Nvidia chiama la combinazione di queste due tecnologie rendering ibrido.
Le demo sono comunque mozzafiato e non ci resta che gioire della nuova rivoluzione grafica.
Le nuove GPU disponibili da digitec
RTX 2080 Ti
RTX 2080


Tecnologia e società mi affascinano. Combinarle entrambe e osservarle da punti di vista differenti sono la mia passione.