Variable Rate Shading integrato nelle DirectX 12. Cos'è e perché è importante

Avatar di Manolo De Agostini

a cura di Manolo De Agostini

Microsoft ha annunciato che le DirectX 12, "sono le prime API grafiche a offrire un ampio supporto hardware al Variable Rate Shading (VRS)". Le prime soluzioni hardware a supportarlo sono le GPU di Nvidia Turing (grazie a Content Adaptive Shading e Motion Adaptive Shading, due implementazioni di VR), mentre in futuro toccherà anche alle GPU Gen11 integrate nelle CPU Intel in uscita quest'anno (Ice Lake) - di conseguenza abbiamo scoperto anche una delle tecnologie delle future GPU dedicate Xe.

Peraltro bisogna ricordare come Wolfenstein II: The New Colossus già supporti il Content Adaptive Shading sulle GPU Turing. L'annuncio di Microsoft significa semplicemente che ora la "tecnologia" è parte delle API, quindi disponibile a tutti gli sviluppatori in modo più pratico. Al momento non è stata fatta alcuna menzione sul supporto da parte di AMD, ma un recente brevetto fa sperare per il meglio, senza dimenticare che Microsoft e AMD sono partner per quanto riguarda la console Xbox.

Il Variable Rate Shading consente agli sviluppatori di ridurre selettivamente il tasso di shading (ombreggiatura) nelle aree dell'immagine che non impattano sulla qualità visiva, permettendo così di ottenere maggiori prestazioni e/o ridurre i requisiti di gioco. VRS permette anche di fare anche il contrario, ovvero usare una maggiore velocità di shading solo nelle aree in cui è più importante, favorendo una qualità visiva ancora migliore.

Ma come funziona il tutto? Gli shader devono calcolare il colore che deve avere ogni pixel a schermo. Il tasso di shading si riferisce alla risoluzione alla quale sono chiamati gli shader - è una cosa diversa dalla risoluzione dello schermo. Un tasso di shading più alto significa maggiore fedeltà visiva, ma un impatto più alto sulle prestazioni; un tasso di shading più basso l'opposto, una minore fedeltà visiva ma prestazioni superiori.

Tradizionalmente, quando gli sviluppatori impostano la velocità di shading di un gioco, questa viene applicata a tutti i pixel di un'immagine. Non tutti i pixel però hanno la stessa importanza. Così ecco arrivare VRS, integrabile secondo Microsoft nei motori di gioco con "pochi giorni di lavoro".

Nel blog del team DirectX, la casa di Redmond spiega che il variable rate shading così come implementato nelle DX12 differisce leggermente in base alle capacità dell'hardware sul quale lo si usa. Microsoft divide l'hardware in "Tier 1" e "Tier 2", il che si traduce attualmente nelle GPU DirectX 12 "generiche" e nelle ultime GPU Nvidia Turing. La differenza sta nella capacità della scheda video di variare oppure no il tasso di shading all'interno di una singola draw call. Le GPU Tier 1 possono fare questo cambiamento solo nel mezzo di draw call separate.

L'API permette agli sviluppatori di impostare tassi di shading in tre modi diversi: per draw call, all'interno di una draw call usando screenspace image o all'interno di una draw call "per primitiva". Nel post, se siete interessati, c'è una spiegazione tecnica per addetti ai lavori delle differenze, e Microsoft sottolinea che tramite dei "combiner" è possibile combinare il VRS per-draw, screenspace image e per-primitive allo stesso tempo.

Microsoft ha chiesto a Firaxis di implementare VRS in Civilization VI per dimostrare, tramite una RTX 2060, quanto è facile usarlo e quali sono i vantaggi reali. Forse un po' ironicamente, la demo di Civilization creata da Firaxis ha restituito un miglioramento più marcato delle prestazioni sulle schede Tier 1, ma come spiegato da Microsoft, il gioco ha subito un piccolo impatto sulla qualità grafica a causa del lavoro ridotto svolto dagli shader in certe aree.

Firaxis afferma che implementare il terreno e l'acqua a un tasso di shading più basso rispetto a veicoli, edifici e UI offre un miglioramento delle prestazioni del 20% sulla RTX 2060 giocando in 4K. L'implementazione Tier 2 prevede un guadagno di velocità inferiore, "solo" il 14% rispetto allo shading a velocità costante, ma visivamente la qualità non ne risente.

La buona notizia è che c'è già una discreta lista di sviluppatori pronti a implementare il VRS e tra questi troviamo 343 Industries, Playground Games e Massive Entertainment, editori come Ubisoft e Activision e motori di gioco come Unity e Epic Games.