Tanto rumore per... il Ray Tracing: perché il denoising è fondamentale?

Il Ray Tracing va di pari passo con il rumore, ma cosa si intende precisamente e perché il denoising è una tecnologia cruciale nel gaming?

Tanto rumore per... il Ray Tracing: perché il denoising è fondamentale?
Articolo a cura di

Il Ray Tracing è una tecnologia rumorosa. No, non parliamo di rumore acustico, bensì di qualcosa molto più affine alla fotografia e all'imaging in generale. Stiamo parlando di una serie di artefatti visivi più o meno ingombranti, la cui quantità può arrivare a compromettere del tutto l'aspetto dell'immagine e la qualità dell'esperienza.
Ci sono molti parametri da tenere in considerazione quando si pensa al Ray Tracing applicato ai videogiochi, una tecnologia tutt'altro che banale, particolarmente impegnativa per l'hardware ma che riesce a regalare un impatto visivo superiore in termini di credibilità del mondo di gioco nella sua interezza.
Ma cosa è questo rumore? Perché ha rappresentato un limite enorme per l'approdo del Ray Tracing sui videogiochi e, soprattutto, perché non lo vediamo?

Tutta questione di "raggi"

Il più comune algoritmo di Ray Tracing viene utilizzato in ambito cinematografico da decenni. Questo potrebbe lasciarvi perplessi, soprattutto se pensiamo a quanto impatti oggi sulle prestazioni di un videogioco che lo implementa.

Tuttavia, c'è un elemento da considerare e non è per nulla scontato, vale a dire la sua applicazione in un contesto non solo di rendering in tempo reale ma anche di interazione del giocatore con l'ambiente in maniera imprevedibile.
In effetti, per la produzione di un lungometraggio in computer grafica il tempo di produzione è un parametro molto relativo e dovevano essere messe in conto svariate ore per portare a termine minuti di girato in Ray Tracing pronto per essere montato.
Se si introduce il parametro tempo, le cose cambiano in maniera a dir poco radicale: in pratica, siamo passati dall'utilizzo in settimane e mesi alla sua applicazione istantanea da una generazione all'altra, motivo per cui il famoso teaser di Star Wars proiettato nel corso della presentazione delle RTX Serie 20 di NVIDIA fece tanto scalpore. Di fatto, era la prima volta che dei sistemi consumer mostravano di poter calcolare le luci e i loro rimbalzi in tempo reale, ma non è stato tutto solo merito della maggiore potenza a disposizione.
Per comprendere cos'è successo realmente, però, dobbiamo procedere per gradi.

Tutto ruota, infatti, intorno alla quantità di raggi e suoi rimbalzi: se il tempo a nostra disposizione non è quello di uno studio cinematografico e la potenza del nostro PC, neanche a dirlo, non è quella di una macchina di Hollywood, allora bisognerà scendere a qualche compromesso.

Il compromesso, in questo caso, riguarda il numero di raggi principali presenti nella scena, definiti come Sample per Pixel (SPP) e quantificati come numero di raggi per singolo pixel, e il numero di "rimbalzi" della luce sull'ambiente e sulle superfici (RPP o Ray per Pixel).
Se in un film vengono solitamente impiegati circa 3000 SPP, dalle nostre parti il numero dovrà tassativamente scendere a una frazione: e che problema c'è, direte voi. Purtroppo il problema c'è eccome, e si tratta appunto dell'elefante nella stanza... il rumore.
Meno raggi faremo calcolare in un contesto di illuminazione globale e maggiore sarà il rumore, che per il Ray Tracing si esprime in una sorta di forte granulosità dell'immagine. Ciò è causato principalmente dalla diffusione delle luci indirette che vengono riflesse su varie superfici fino a dissiparsi del tutto sui materiali presenti in scena.

Anche solo passare da 4 SPP a 50 SPP costerebbe tantissimo in termini di velocità di rendering e, quindi, di framerate.
Per nostra fortuna è possibile scendere a patti con questo effetto collaterale grazia a una "ricostruzione" dell'immagine: i più attenti di voi sapranno già dove andremo a parare.

Denoising, questo sconosciuto

Per ricostruire un'immagine fortemente granulosa, frutto di una pipeline in cui è stato utilizzato il Ray Tracing con pochi sample per pixel, è necessario applicare un filtro, detto denoiser, che non è certamente uguale per tutti. NVIDIA, per esempio, ha sviluppato il suo particolarmente apprezzato filtro di denoising, che abbiamo brevemente menzionato anche nel nostro ultimo speciale sulle tecnologie RTX di NVIDIA.

Immagine a 1 SPP

Stessa immagine dopo denoising

Il denoiser non è una tecnologia univoca e possono essere utilizzati metodi diversi per filtrare e ricostruire un'immagine, principalmente tramite inferenza e quindi con una ricostruzione che tira in causa nient'altro che il Deep Learning.
Il team verde utilizza, infatti, la sua rete neurale per ricostruire immagini già renderizzate e in cui è stato prodotto il rumore per pulirle prima di proporre il risultato finale.

Abbiamo già imparato a familiarizzare con questo tipo di proposta grazie all'ormai onnipresente DLSS, upsampler che permette di abbassare la risoluzione di rendering nei giochi per aumentare gli FPS, restituendo però un'immagine a risoluzione maggiorata dopo aver ricostruito i dettagli mancanti.
Il concetto alla base è molto simile, ma quando si parla di denoising viene richiesto alla macchina anche di saper distinguere correttamente tra il rumore e gli elementi di scena con le loro caratteristiche. Per il resto, gli step sono i medesimi, quindi viene impostata una libreria contenente immagini di riferimento ad altissima risoluzione (decine di migliaia) che l'IA dovrà studiare e dalle quali apprenderà le caratteristiche reali di tutti gli elementi che sarà possibile incontrare durante il gioco.
Dopodiché, avverrà l'individuazione del rumore e la ricostruzione dell'immagine tramite inferenza, sostituendo le informazioni nascoste dai granelli neri con quelle create dall'IA.
A prescindere dalla qualità del denoiser, tuttavia, il risultato finale dipenderà dalla quantità di informazioni di partenza che daremo in pasto alla scheda video: questo significa che il progresso tecnologico consentirà di sviluppare hardware sempre più potenti, affiancati da sistemi di elaborazione più snelli ed efficienti, che consentiranno insieme di partire da un numero maggiore di sample per pixel per riuscire ad avere un'immagine quanto più realistica possibile.

In ogni generazione di schede video si parla di nuovi Tensor Core e Core dedicati al Ray Tracing, unità che evolvendosi consentiranno di ottenere immagini sempre più pulite e sofisticate. L'obiettivo di questo percorso è il path tracing in tempo reale e non è così lontano come credereste: già nella nostra prova di Portal with RTX, infatti, abbiamo avuto la possibilità di dare un'occhiata al path tracing in tempo reale, reso possibile non solo grazie all'enorme efficienza di Ada Lovelace e degli RT-Core di terza generazione di NVIDIA, ma anche dal DLSS3, che può moltiplicare il framerate con una sorta di interpolazione di nuovi fotogrammi creati da una media tra un frame e il successivo.
Insomma, la strada è lunga e in salita ma siamo già nel futuro, un futuro conquistato in larga parte proprio dal denoising, con cui non abbiamo compiuto un semplice balzo generazionale, bensì un vero e proprio cambio di paradigma nel nostro percorso verso il fotorealismo.