Tempo di lettura: 3 minuti

Un concetto nuovo?

Di Ray Tracing se ne parla da parecchio tempo, la prima concezione risale al 1979 ad opera di Turner Whiteed. Ci sono voluti svariati anni di ricerche ed elaborazioni tecnologiche affinché questa tecnologia approdasse nelle nostre case. Ma a cosa serve? Oltre che nei videogiochi, questa tecnica può essere utilizzata in molteplici ambiti, compresi quelli scientifici, in modo da affinare e rendere maggiormente affidabili le proiezioni delle proprie ricerche. Un esempio su tutti è il debunk dello sbarco lunare fatto da Nvidia ben quattro anni fa.

La tecnologia, che tenta di ricreare nel modo più fedele possibile il comportamento della luce, mira alla sostituzione alla vecchia tecnica di rasterizzazione, ovvero della creazione diretta di texel, da parte del programmatore, partendo da una texture map… vi sto confondendo? Allora procediamo con ordine.

Mesh e poligoni

Qualsiasi elemento grafico visualizzato all’interno di un software di creazione e modellazione 3D è una maglia di pixel detta mesh poligonale. I pixel di questa maglia sono degli elementi composti da vertici, lati e facce che determinano la forma dell’oggetto modellato. I poligoni possono avere forma diversa: dai triangoli a dei poligoni convessi, il tutto in modo dipendente dalla qualità e dalla tipologia del prodotto finale. Una volta designati gli elementi da visualizzare, se vogliamo si comportino e reagiscono in un determinato modo a determinate condizioni, è necessario impostare una serie di elementi programmati in grado di attivarsi uno dopo l’altro. Questo concetto viene definito pipeline. Tramite le pipeline riusciamo ad avere una serie di reazioni a cascata, in questo caso tramite il processo di renderizzazione, dove gli elementi 3D vengono elaborati in pixel 2D per essere poi riprodotti a schermo. Detto questo, occupiamoci della luce, intesa nel modo in cui viene elaborata nei videogiochi.

Luci e motori grafici: sistemi classici

Esistono diversi tipi di sorgenti di luce elaborate da un motore grafico, ognuna delle quali si basa su precisi modelli matematici e sistemi di predizione e, ovviamente, approssimazione. Sia chiaro che la gestione della luce non è altro che un cambiamento nei pattern del colore, a seconda del tipo di luce (diretta o indiretta), dell’intensità, del colore… Per risolvere il problema, i motori grafici distinguono due tipi differenti di luci:

  • Illuminazione diretta, proveniente da una fonte di luce esterna
  • Illuminazione globale (global illumination), ovvero la luce che viene assorbita, riflessa o diffusa tramite il contatto con i triangoli che compongono le texture degli oggetti

L’illuminazione viene gestita da algoritmi molto semplici, seguendo il modello del Phong Shading: in soldoni, la mesh di una immagine viene divisa in fragment, ovvero in dati necessari a gestire una griglia di pixel. Successivamente, per ogni fragment viene calcolata l’intensità di luce ricevuta (pixel-per-pixel shading). Questo tipo di algoritmo è chiaramente meno capace di interpretare differenti tipi di materiali e di increspature nelle texture: ad ogni punto della superficie, infatti, viene associato durante la fase di rasterizzazione un valore (texel) che ne descrive le proprietà. Questo valore modula il colore di riflessione diffusa.

Come si evince, la capacità del programmatore di inserire i texel, unita alle possibilità del motore grafico, è fondamentale per la creazione di un sistema di illuminazione credibile, che sarà comunque relegato ad una “copia” o “similitudine” del vero comportamento della luce.

Ray Tracing

Se nei vecchi sistemi la luce è una copia imperfetta, nel Ray Tracing la luce viene direttamente dal platonico mondo delle idee. Il Ray Tracing, infatti, funziona in modo completamente diverso offrendo una immagine più realistica simulando il comportamento delle particelle-onde luminose. Il software lavora tracciando il percorso che la luce potrebbe fare e, autonomamente, elabora i dati in real-time. La processione dei dati avviene tramite il deep-learning fornito dall’IA. Quest’ultimo è il concetto chiave. Elaborare qualcosa durante la renderizzazione, senza interventi pre-automatizzati, permette di offrire una rappresentazione quasi aderente a quella naturale. A beneficiare non è solo la luce, ma tutto ciò che vi orbita intorno: le ombre, inclusa l’occlusione ambientale, i colori degli oggetti (tra cui la loro trasparenza), la riflessione ecc… Tutti elementi che vengono definiti in base all’algoritmo, regalando una immagine generale più credibile.

Nvidia come apripista

Nvidia è al momento l’unico produttore di schede grafiche consumer che ha integrato questa tecnologia nelle nuove GPU RTX. La gestione è affidata a dei processori noti come RT Core (Ray Tracing Core) Tensor Core. Ovviamente, per poter gestire una quantità di informazioni così elevata è necessaria una potenza di calcolo avanzata. Così avanzata che la fascia bassa della serie RTX è poco adatta a mostrare le potenzialità di questo nuovo sistema di illuminazione.

Altro fattore riguarda l’adozione, da parte degli sviluppatori, di tale strumento. Al momento i giochi proposti sono ben pochi ma, considerando il breve lasso di tempo dall’uscita, non potremmo aspettarci di meglio. Col tempo, è possibile (se non probabile) che il Ray Tracing divenga lo standard in tutti i giochi. Non ci resta che aspettare il nuovo, luminoso, futuro.