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.

Pagina precedente

Shading a velocità variabile

Oltre a ottimizzare il modo in cui Turing processa la geometria, Nvidia supporta anche un meccanismo per scegliere la velocità alla quale i pixel sono ombreggiati (shading) in diverse parti di una scena per migliorare le prestazioni. Naturalmente l'hardware può comunque fare lo shading di ogni singolo pixel di un modello 1x1. Ma l'architettura facilita anche opzioni 2x1 e 1x2, insieme a blocchi 2x2 e 4x4.

full rate shading
Shading a piena velocità - clicca per ingrandire
content adaptive shading color coded
Content-adaptive shading, codificato con i colori - Clicca per ingrandire
content adaptive shading final output
Content-adaptive shading, risultato finale - Clicca per ingrandire

Nvidia ha illustrato diversi casi in cui uno shading a velocità variabile è funzionale - non bisogna applicarlo ovunque influenzando negativamente la qualità d'immagine. Il primo è definito "content-adaptive shading", dove le parti meno dettagliate di una scena non cambiano così tanto e possono essere ombreggiate a velocità inferiore.

Esiste una build di Wolfenstein II con ombreggiatura a tasso variabile attiva. In questa build potete attivare la visualizzazione della velocità di shading per osservare come gli oggetti complessi non sono affatto influenzati da questa tecnologia, mentre le aree a minor frequenza sono ombreggiate a una risoluzione inferiore. Un numero di passaggi intermedi facilita una maggiore velocità.

Immaginiamo che gli sviluppatori di giochi che cercheranno di sfruttare lo shading a velocità variabile adattandolo al contenuto (content-adaptive) daranno priorità alla qualità rispetto alle prestazioni. Ci piacerebbe tuttavia vedere questa soluzione abilitata come opzione selezionabile in modo che le terze parti possano fare confronti tra la funzione abilitata e disabilitata.

pattern
Clicca per ingrandire

Lo shading "motion-adaptive" è un'altra interessante applicazione della tecnologia di ombreggiatura a velocità variabile di Nvidia, dove gli oggetti che passano rapidamente sono percepiti a una risoluzione inferiore rispetto a qualsiasi soggetto su cui ci stiamo concentrando. In base al vettore di movimento di ogni pixel, gli sviluppatori di giochi possono determinare quanto aggressivamente ridurre la velocità di shading e applicare gli stessi modelli visti nell'esempio sul content-adaptive. Farlo in modo corretto richiede un accurato modello di risposta in frequenza per garantire che vengano usate le giuste velocità quando ci si muove, si accelera, si rallenta.

Nvidia ha presentato una demo di Wolfenstein II con content e motion-adaptive shading abilitati. L'aumento prestazionale attribuito allo shading a velocità variabile in quel titolo è stato nell'ordine del 15%, ma solo perché il gioco girava già a frame rate elevati. Su una scheda video più lenta con un gioco più esigente, sarebbe possibile andare oltre il 20%. Cosa più importante, non c'è un calo percepibile della qualità d'immagine.

Anche se Nvidia non ha detto molto su come queste funzionalità hardware saranno usate dagli sviluppatori, si può assumere che la demo di Wolfenstein II funzionasse sotto Vulkan usando le estensioni dell'API e che Nvidia stia lavorando con Microsoft per l'integrazione nelle DirectX. Fino ad allora esporrà la funzionalità Adaptive Shading tramite l'SDK NVAPI, che permette accesso diretto alle caratteristiche della GPU più di quanto permesso da DirectX e OpenGL.

RTX-OPS: Nvidia s'inventa una nuova unità di misura

L'aumento della complessità dei chip grafici, che integrano risorse che svolgono funzioni differenti ma influenzano il quadro prestazionale generale, rende sempre più difficile quantificare le loro capacità.

Usiamo già termini come fillrate per confrontare quanti miliardi di pixel o elementi texture una GPU è teoricamente in grado di renderizzare sullo schermo in un secondo.

Con l'aggiunta di Tensor e RT core ai propri Turing Streaming Multiprocessors, Nvidia ha trovato necessario dare vita a un nuovo metro che riesca a riflettere le capacità delle sue pipeline matematiche INT32 e FP32, gli RT core e Tensor core. Non abbiamo intenzione di usare il valore RTX-OPS per ogni confronto, ma dato che Nvidia lo cita, vogliamo almeno spiegare l'equazione che lo compone.

turing frame
Clicca per ingrandire

Il modello RTX-OPS richiede l'uso di tutte le risorse, che è un assunto tanto audace quanto lungimirante. Dopotutto, finché i giochi non adottano ampiamente le capacità di ray tracing e di deep learning di Turing, gli RT core e i Tensor core restano inattivi. Non appena iniziano a essere usati, Nvidia ha sviluppato una propria approssimazione della capacità di calcolo coinvolta in un frame renderizzato da una GPU Turing.

Nel diagramma qui sopra Nvidia mostra che all'incirca l'80% del frame è stato "consumato" dal rendering e il 20% è andato nell'AI. Nella fetta dedicata allo shading c'è una suddivisione di circa 50/50 tra lavoro ray tracing e FP32.

Esaminando ancora più in profondità i CUDA core, abbiamo già detto che Nvidia ha riscontrato circa 36 operazioni INT32 per ogni 100 istruzioni FP32 su una striscia di tracce shader, dando un'idea ragionevole di ciò che accade in una scena "ideale" che sfrutta ogni unità funzionale.

Perciò...

Potenza FP32 = 4352 FP32 core * 1635 MHz (GPU Boost) * 2 = 14.2 TFLOPS

Potenza RT core = 10 TFLOPS per gigaray, assumendo che la GeForce GTX 1080 Ti (11.3 TFLOPS FP32 a 1582 MHz) può generare 1,1 miliardi di raggi usando l'emulazione software = ~100 TFLOPS su una GeForce RTX 2080 Ti capace di generare circa ~10 miliardi di raggi

Istruzioni INT32 al secondo = 4352 INT32 core * 1635 MHz (GPU Boost) * 2 = 14.2 TIPS

Potenza Tensor core = 544 Tensor core * 1635 MHz (GPU Boost) * 64 operazioni in virgola mobile FMA per clock * 2 = 113.8 FP16 Tensor TFLOPS

... siamo in grado di andare a ritroso nei calcoli matematici di Nvidia per vedere come ha ottenuto una specifica di 78 RTX-OPS per la GeForce RTX 2080 Ti Founders Edition:

(14 TFLOPS [FP32] * 80%) + (14 TIPS [INT32] * 28% [~35 operazioni INT32 per ogni 100 operazioni FP32, che occupano fino all'80% del carico]) + (100 TFLOPS [ray tracing] * 40% [metà di 80%]) + (114 TFLOPS [FP16 Tensor] * 20%) = 77.9

Di nuovo, ci sono molte ipotesi in questo modello, e non vediamo alcun modo di usarlo per confronti generazionali o competitivi. Allo stesso tempo, è chiaro che Nvidia voleva un modo per rappresentare le prestazioni in modo olistico e non possiamo criticare l'azienda per averci provato, in particolare perché non ha aggiunto semplicemente le funzionalità di ciascun sottosistema, ma piuttosto ha isolato i singoli contributi a un frame.

Continua a pagina 11

Pubblicità

AREE TEMATICHE