Hybrid Ray Tracing in tempo reale

Parliamo ora del Ray Tracing core (RT core) integrato in ogni SM di TU102. Gli RT core di Nvidia sono in breve degli acceleratori a funzione fissa per Bounding Volume Hierarchy (BVH) traversal e triangle intersection evaluation. Entrambe le operazioni sono essenziali per l'algoritmo di ray tracing. 

bvh 01
bvh 02
bvh 03
bvh 04
I passaggi dell'algoritmo BHV, clicca per ingrandire

In breve, BVH forma dei box geometrici in una determinata scena. Questi box aiutano a restringere la posizione dei triangoli che intersecano i raggi tramite una struttura ad albero. Ogni volta che si trova un triangolo in un box, quel box viene ulteriormente diviso in più box fino a quando il box finale può essere diviso in triangoli. Senza BVH, l'algoritmo sarebbe costretto a ricercare nell'intera scena, bruciando tonnellate di cicli nel testare ogni triangolo per un'intersezione.

bvh software emulation

Il funzionamento di questo algoritmo è possibile grazie alle API Microsoft D3D12 Raytracing Fallback Layer, che usano i computer shader per emulare DirectX Raytracing su dispositivi senza supporto nativo - e spingerli verso DXR quando c'è il supporto da parte dei driver.

Su una GPU Pascal, ad esempio, la scansione BVH avviene sui core programmabili, che prelevano ogni box, lo decodificano, testano per un'intersezione e determinano se c'è un sottobox o triangoli all'interno. Il processo prosegue fino a quando non si trovano i triangoli, punto in cui sono testati per l'intersezione con il raggio. Come potete immaginare è un'operazione molto probante da svolgere in software, impedendo al ray tracing in tempo reale di funzionare fluidamente sulle attuali GPU.

ray tracing hardware acceleration

Creando acceleratori a funzione fissa per queste operazioni, l'SM inserisce un raggio nella scena usando uno shader per la generazione dei raggi e cede la struttura di accelerazione trasversale agli RT core a funzione fissa. Di conseguenza, tutte le valutazioni delle intersezioni si verificano molto più rapidamente e le altre risorse SM sono liberate per lo shading proprio come farebbero per un carico di lavoro tradizionale di rasterizzazione.

ray tracing 1
Clicca per ingrandire

Secondo Nvidia, la GeForce GTX 1080 Ti può gestire 1,1 miliardi di raggi al secondo via software usando i CUDA core capaci di 11,3 TFLOPs in FP32. Di contro la nuova RTX 2080 Ti può gestire 10 miliardi di raggi al secondo usando i suoi 68 RT core. È importante notare che nessuno di questi dati è basato su valori di picco, ma sul significato geometrico dei risultati di diversi carichi.

Pagina precedente

NVLink, molto più che un'evoluzione dello SLI

TU102 e TU104 sono le prime GPU desktop di Nvidia ad avere l'interconnessione NVLink anziché l'interfaccia Multiple Input/Output (MIO) per il supporto SLI.

nvlink bridge

La prima mette a disposizione due collegamenti x8, MIO è limitata a uno. Ogni collegamento NVLink garantisce un bandwidth bidirezionale fino a 50 GB/s. Perciò la RTX 2080 Ti può offrire fino a 100 GB/s tra due schede mentre la RTX 2080 la metà.

Che vi sia un collegamento oppure due, lo SLI tramite NVLink funziona solo con un paio di GeForce RTX con almeno uno slot vuoto tra loro per garantire il flusso d'aria. Ufficialmente le GPU Pascal supportavano un massimo di due schede. Tecnicamente però era possibile farne lavorare fino a quattro in una manciata di benchmark. Con le nuove proposte potete acquistare il vostro bridge NVLink per connettere più schede. Sul sito di Nvidia sono disponibili soluzioni in grado di coprire tre e quattro slot.

nvlink capabilities
Clicca per ingrandire

Alcuni dei problemi dell'ultima generazione erano causati dai limiti di bandwidth tra i bridge SLI. Rispetto all'originale interfaccia SLI con il suo collegamento MIO da 1 GB/s, l'implementazione Pascal arrivava a circa 4 GB/s, sufficienti per garantire che la seconda scheda restituisca il frame renderizzato alla prima scheda in tempo per avere un frame rate fluido su un monitor 4K a 60 Hz. Non sarebbe però stato sufficiente per i 120 Hz o superiori.

Persino nella configurazione con singolo collegamento il nuovo NVLink può spostare dati così rapidamente da permettere lo SLI su uno schermo 8K. Pilotare tre monitor 4K a 144 Hz in modalità Surround non è un problema. Due collegamenti x8 hanno il throughput necessario per schermi 8K in Surround.

La domanda però è una: a chi interessa? AMD e Nvidia hanno fatto un lavoro così buono negli ultimi anni nel frenare le configurazioni multi-GPU che oggi sono poche le persone che realizzano configurazioni con più schede. In passato lo SLI o il CrossFire erano usati da chi voleva ottenere alte prestazioni comprando schede di fascia medio-bassa.

Nvidia ha messo un freno a questa pratica rimuovendo il supporto dai modelli di fascia bassa. Adesso anche la RTX 2070 è priva di connettore NVLink. I vecchi giochi DX11 funzionano comunque bene su due schede e una manciata di giochi DX12 sfruttano l'explicit multi-adapter. Ma il fatto che sviluppatori come EA DICE stiano puntando su funzioni come il ray-tracing in tempo reale e ignorando il multi-GPU dice molto sul futuro dello SLI.

Alcune persone di Nvidia ci hanno detto che avranno di più da dire in merito in futuro. Per ora, il supporto di NVLink su GeForce RTX 2080 Ti e 2080 è una novità di cui tenere conto, in particolare perché è possibile avere frame rate giocabili in 4K con G-Sync.

Mesh Shading: primo passo per avere più oggetti a schermo

I miglioramenti all'architettura si dividono comunemente tra cambiamenti che influenzano il gaming odierno e nuove caratteristiche che richiedono supporto dai titoli futuri. Almeno al lancio, le schede GeForce RTX saranno giudicate principalmente per i primi. I giochi attuali sono ciò che possiamo "quantificare".

E anche se i veterani del settore hardware hanno la propria opinione su cosa significhi il ray tracing in tempo reale per un'esperienza di gioco immersiva, siamo in questo ambito da così tanto tempo che sappiamo che non si può consigliare un prodotto sulle promesse di ciò che garantirà.

mesh shader nvidia
Clicca per ingrandire

L'architettura di Turing, tuttavia, include alcune funzionalità grafiche avanzate dal grande potenziale, ma non ancora accessibili. Mesh shader, ad esempio, accresce l'attuale pipeline grafica DirectX 11/12, laddove le CPU sono responsabili di calcolare i livelli di dettaglio, occuparsi degli oggetti che non sono in vista e fare draw call per ogni oggetto. Fino a un certo punto le CPU vanno bene per quei compiti. Ma in scene complesse con centinaia di migliaia di oggetti, hanno difficoltà a tenere il passo.

Usando invece un mesh shader, gli sviluppatori di giochi possono scaricare il calcolo del LOD (distanza del dettaglio) e l'eliminazione di oggetti non in vista a un task shader, che rimpiazza gli stadi vertex shader e hull shader. Poiché un task shader è più generale di un vertex shader, più specializzato, è in grado di prendere una lista di oggetti dalla CPU e farli passare tramite un programma di calcolo che determina dove gli oggetti sono localizzati, quale versione di ogni oggetto usare in base al LOD e se un oggetto deve essere eliminato prima di passarlo nella pipeline.

Continua a pagina 9

Pubblicità

AREE TEMATICHE