INNO3D GeForce RTX 2080 SUPER TWIN X2 OC [N208S2-08D6X-11801167]

NVIDIA Turing - Uno sguardo alla nuova architettura - Parte Terza

Indice

A seconda della complessità della scena da elaborare possono essere necessari migliaia di slot di istruzioni per ogni raggio proiettato fino al momento in cui non verrà effettivamente colpito un triangolo, che sarà successivamente colorato sulla base del punto di intersezione (o se al contrario non ne viene colpito alcuno, il colore di sfondo può essere usato per l’ombreggiatura del pixel stesso).

Stiamo parlando di un processo estremamente intensivo dal punto di vista computazionale, al punto da essere considerato impensabile da eseguire in tempo reale facendo uso di una GPU sprovvista di accelerazione ray-tracing in hardware.

La presenza di questo genere di unità dedicate, al contrario, consente un’elaborazione efficiente di tutti i test di intersezione tra i raggi proiettati e i triangoli, sgravando la SM di migliaia di slot di istruzioni per ogni singolo raggio proiettato. Un vantaggio enorme se pensiamo alla mole di calcoli che sarebbero necessari per un’intera scena.

All’interno di ogni unità RT Cores troviamo due sotto-unità specializzate: la prima si occupa dell’elaborazione della scena e della sua suddivisione, dapprima in grandi rettangoli (denominati box) e successivamente in ulteriori rettangoli sempre più piccoli fino ad arrivare ai singoli triangoli; la seconda invece si occupa della gestione dei calcoli di intersezione tra i raggi proiettati e i triangoli, restituendo un risultato in termini di colorazione o meno dei pixel.

Alle unità SM, di conseguenza, viene esclusivamente affidato l’onere di lanciare il “raggio sonda”, trovandosi di fatto in gran parte libere di svolgere eventualmente altre operazioni grafiche o computazionali.

Oltre alle unità di accelerazione dedicate anche varie tecniche di filtraggio avanzate possono aiutare ad incrementare le prestazioni e la qualità dell’immagine senza richiedere l’aggiunta di ulteriori raggi. Il “Denoising” ad esempio consente di migliorare la qualità visiva di immagini disturbate, ovvero costruite con dati sparsi, presentare artefatti casuali, rumore di quantizzazione o altre tipologie di rumore.

Così come esistono diversi tipi e cause di rumore dell’immagine, allo stesso modo esistono anche svariati metodi per risolvere questo genere di problematica. Il Denoising Filtering, ad esempio, consente di ridurre il tempo impiegato al rendering di immagini ray-traced ad alta fedeltà visivamente prive di rumore, sfruttando specifici algoritmi messi a punto da NVIDIA, basati o meno sull’intelligenza artificiale a seconda del caso di applicazione specifico.

Anche la qualità delle ombre è fondamentale per rendere maggiormente realistica l’atmosfera di una scena. Nella maggior parte dei giochi vengono utilizzate tecniche di Shadow Mapping in quanto veloci, semplici da implementare e non richiedono buffer speciali. L’approccio previsto è del tutto semplice e parte dal presupposto che qualunque oggetto visibile da una fonte di luce dovrà per forza apparire illuminato, al contrario qualunque oggetto non visibile sarà in ombra. Il risultato finale, seppur certamente gradevole a vedersi, non potrà certamente vantare il massimo dell’accuratezza.

Il ray-tracing, combinato con il denoising, consente alle GPU Turing di superare i limiti delle Shadow Map, come la mancata corrispondenza della risoluzione, che rende difficile generare bordi accurati in presenza di ombre dure, e l’ìndurimento del contatto. Quest’ultimo può essere approssimato con tecniche quali Percentage Closer Soft Shadows (PCSS) e Distance Field Shadows, la prima (PCSS) particolarmente intensiva dal punto di vista computazionale e non ugualmente in grado di generare ombre completamente corrette in presenza di aree di illuminazione arbitrarie; la seconda (DFS) è fortemente limitata dalla geometria statica nelle attuali implementazioni.

Con l’accelerazione del ray-tracing basata su tecnologia NVIDIA RTX, in aggiunta ai sofisticati algoritmi di denoising veloce, le ombre ray-traced possono facilmente sostituire le obsolete Shadow Map e fornire una tecnica pratica per simulare l’indurimento del contatto fisicamente corretto in presenza di qualsiasi tipologia di illuminazione presente.

Come possiamo osservare in quest’ultima immagine, l’implementazione della Shadow Map seppur riesca ad uniformare i bordi delle ombre non è in grado di rappresentare un corretto indurimento dei contatti. Le ombre ray-traced vengono generate dalla stessa fonte di luce direzionale con angoli di cono variabili.

Con questa tecnica si possono ricreare, se lo si desidera, ombre con bordi completamente duri (come mostrato nell’immagine in basso a destra con angolo di cono pari a 0°), oppure ombre morbide con indurimento corretto in relazione all’angolo di cono (figure mostrate sulla destra con angolo di cono pari a 1,5° e 10°).

L’aspetto che più mostra i vantaggi, in termini di qualità visiva, del ray-tracing, riguarda però i riflessi, specialmente se utilizzati in scene ricche di materiali speculari e lucidi. Le tecniche più comuni utilizzate oggi, come la Screen-space Reflections, seppur molto costose in quanto a risorse elaborative, spesso producono buchi e artefatti nell’immagine renderizzata.

Le sonde Cubemap, per lo più statiche e a bassa risoluzione, non rappresentano una soluzione accettabile in presenza di materiali lucidi all’interno di scene con illuminazione prevalentemente statica. Le riflessioni planari sono limitate dal numero che può essere generato facendo uso di tecniche basate sulla rasterizzazione.

I riflessi ray-traced, al contrario, combinati con il denoising, evitano tutti questi problemi e producono riflessi privi di artefatti e fisicamente corretti, assicurando un deciso impatto visivo. Nelle immagini che seguono andremo a mostrare l’implementazione della tecnologia NVIDIA RTX all’interno dell’ultimo capitolo dell’apprezzata serie Battlefield, sviluppato da DICE.

Come possiamo osservare l’attivazione della tecnologia RTX assicura un maggior quantitativo di effetti all’interno della scena di gioco. Ad esempio è possibile osservare la rappresentazione di riflessi realistici sulla macchina provocati da un’esplosione scoppiata al di fuori dello schermo. Questo genere di riflessi sarebbe stato impossibile da riprodurre facendo uso di tecniche Screen-space Reflection, restituendo la scena visibile nell’immagine “RTX Off”.

In questa seconda serie di immagini viene mostrato un altro problema alla base dei riflessi di tipo non ray-traced. Nello specifico, nonostante sia presente un parziale riflesso sul suolo, possiamo osservarne la mancanza all’interno del mirino (correttamente riprodotto nella scena “RTX On”).

Sono varie le tecnologie che unite assieme hanno reso possibile la gestione in tempo reale del ray-tracing da parte dei processori grafici Turing. Tra queste, volendo fare una breve sintesi, troviamo:


  • Rendering Ibrido: riduce la quantità di ray-tracing necessaria nella scena continuando a utilizzare la rasterizzazione per i passaggi di rendering in cui è considerata efficace, limitando il ray-tracing per i passaggi di rendering in cui la rasterizzazione è in difficoltà non riuscendo ad assicurare un impatto visivo realistico;
  • Algoritmi di riduzione del rumore (Denoising) delle immagini;
  • Algoritmo BVH: utilizzato per rendere le operazioni di ray-tracing molto più efficienti riducendo il numero di triangoli che devono essere effettivamente testati per trovare quelli effettivamente colpiti dai raggi di luce presenti nella scena;
  • RT Cores: tutte le ottimizzazioni precedentemente elencate hanno contribuito a migliorare l’efficienza del ray-tracing, ma non abbastanza da renderlo vicino al tempo reale. Tuttavia, una volta che l’algoritmo di BVH è diventato standard, è emersa l’opportunità di realizzare un acceleratore accuratamente predisposto per rendere le operazioni necessarie estremamente più efficienti. Le unità RT Cores messe a punto da NVIDIA sono proprio quell’acceleratore, capace di rendere le GPU Turing oltre dieci volte più veloci nell’elaborazione ray-tracing (superando i 10 Giga Rays/s contro 1,1 Giga Rays/s della precedente soluzione GTX 1080 Ti su base Pascal) e portare per la prima volta il ray-tracing in tempo reale in ambito gaming.