DirectX 12 vs DirectX 11: cosa cambia?

Le DirectX 12 di Windows 10 ci portano una nuova generazione di API grafiche Direct3D che dovrebbero migliorare nettamente le prestazioni dei giochi. Facciamo il punto delle informazioni note sino a oggi.

Avatar di Tom's Hardware

a cura di Tom's Hardware

DirectX 12 vs DirectX 11: cosa cambia?

Sin dall'inizio le DirectX hanno sempre cercato di semplificare il lavoro degli sviluppatori gestendo la memoria, la distribuzione delle operazioni tra i core e occupandosi della sincronizzazione. Questo approccio universale non è sempre ottimale perché non bada alle necessità dei singoli videogiochi.

Il risultato è un maggiore carico su CPU e GPU che non solo consuma energia ma non permette di avvantaggiarsi completamente della potenza della GPU, spesso messa in attesa di istruzioni e dati dai driver. Le DirectX 12 permettono di parallelizzare e distribuire in modo molto più efficiente il carico tra i differenti core della CPU. In particolare danno agli sviluppatori un controllo diretto su risorse e GPU affinché ottimizzino meglio a seconda delle loro necessità.

Fornendo un livello di astrazione hardware molto più basso è possibile avvantaggiarsi in modo più completo delle capacità multithreading delle CPU, dei molti core all'interno delle GPU e potenzialmente delle diverse GPU e schede video presenti in un computer.

Le nuove librerie consentono agli sviluppatori di effettuare operazioni in parallelo sfruttando GPU separate. Di solito tutti i giochi 3D integrano una fase di post processing per il rendering delle immagini. Con le DX 12 è possibile affidare il compito a una seconda GPU liberando la prima GPU, che può così iniziare a calcolare il frame successivo, per un rendering più veloce (Asynchronous Shaders).

Una delle caratteristiche più originali delle DirectX 12 è che l'elaborazione parallela può essere eseguita su GPU differenti (DirectX 12 Multiadapter). Molti portatili hanno due GPU. Una integrata nel processore (probabilmente una Intel HD Graphics) per l'uso in modalità batteria e un'altra GPU specializzata (AMD o Nvidia) per compiti più esigenti.

Con le DX12 gli sviluppatori possono usare le GPU dedicate per il rendering della scena e le GPU integrate per il post processing. Ciò porta ad avere un frame rate migliore, come evidenziato in questo filmato:

Le DirectX12 migliorano anche la gestione della memoria e riducono gli effetti della frammentazione. Soprattutto, tendono a offrire un frame rate più costante grazie a un nuovo meccanismo di caching.

Infine, le DirectX 12 introducono nuove funzioni e ottimizzazioni per il rendering. Nella pipeline di generazione delle scene 3D c'è spazio per miglioramenti molti ampi con gli algoritmi di rilevamento delle collisioni, la gestione delle trasparenze e l'ottimizzazione sul fronte della geometria (backface culling, occlusion culling, frustum culling, contribution culling).