Anonim

Ammettiamolo: DirectX 11 e OpenGL stanno invecchiando. DirectX 11 è stato introdotto con Windows 7 nel 2009 e OpenGL 4.0 è seguito un anno dopo. Negli anni del software queste tecnologie sono ormai antiche e l'attuale raccolto di hardware che stavano eseguendo non era nemmeno sul tavolo da disegno quando sono state rilasciate queste API grafiche. Data questa ovvia disconnessione, che cosa sta facendo l'industria al passo con i tempi? Bene, daremo un'occhiata al prossimo futuro e vedremo, ma per iniziare spieghiamo prima cosa è un'API e quale funzione serve per i giochi.

Che cos'è un'API?

Un'API o un'interfaccia di programmazione dell'applicazione è un insieme di protocolli e strumenti utilizzati per creare software. Le API grafiche sono in realtà solo un'API specializzata creata per facilitare la generazione di grafica 3D. Le API grafiche rendono più semplice la creazione di immagini 3D, ma consentono anche di dire all'API di fare qualcosa (ad es. Disegnare un rettangolo) e, a loro volta, consentono all'API di comunicare con l'hardware su come completare questa attività. Questo è il motivo principale per cui così tante GPU diverse con hardware specializzato possono eseguire tutti gli stessi giochi. Senza l'esistenza di un'API, lo stesso gioco dovrebbe essere scritto in modi diversi per comunicare con ogni specifico set di hardware. Ciò limiterebbe gravemente i produttori di hardware e aumenterebbe notevolmente il costo di costruzione dei giochi, un costo che alla fine verrebbe trasferito al consumatore finale.

Per rendere la spiegazione sopra un po 'più semplice da capire, userò un'analogia: pensa a un'API come a un gestore di cantiere. Il suo compito è quello di prendere l'idea dell'architetto e scomporla, pianificare ciò che gli equipaggi devono essere dove e quando, e assicurarsi che tutti siano sulla stessa pagina su ciò che deve essere fatto.

Figura 1: Rappresentazione grafica del funzionamento di un'API

API grafiche attualmente utilizzate

Ora che comprendiamo il lavoro di un'API grafica, diamo un'occhiata più da vicino alla formazione attuale. Il principale attore sul mercato oggi è Microsoft DirectX, che è stato introdotto nel lontano 1995. È stato aggiornato più volte dalla sua uscita ed è incluso nel sistema operativo Windows di Microsoft. DirectX è l'unica API grafica supportata praticamente da tutti i giochi rilasciati per PC. In effetti, è così comune che oggi è davvero lo standard per i giochi per PC. DirectX è esclusivo dei prodotti Windows e Microsoft che sfortunatamente lo rende un sistema molto chiuso. Il prossimo in linea è OpenGL, l'unica importante API grafica open source. OpenGL è stato rilasciato nel 1992 ed è multipiattaforma, il che significa che funziona con diversi sistemi operativi tra cui Windows, Linux e Mac OS. Infine, abbiamo la più recente API grafica, Mantle. Mantle è stato sviluppato nel 2013 attraverso una partnership tra AMD e Dice. Mantle è disponibile su Windows e solo per GPU AMD.

Figura 2: confronto tra DirectX 12 e DirectX 11
Fonte immagine; Credito di immagini: Intel

DirectX 12

DirectX 12 dovrebbe essere rilasciato con Windows 10 questo autunno e molti nuovi miglioramenti sono stati propagandati. Uno dei grandi miglioramenti è il supporto multi-threading molto migliore. Gran parte del lavoro è distribuito su più core della CPU, consentendo un utilizzo della CPU molto migliore ed efficiente. Molte volte DirectX 11 avrà un solo core della CPU completamente al massimo mentre altri core sono quasi inattivi. DirectX 12 promette di distribuire questo carico di lavoro sui core della CPU in modo più uniforme, dando ai giochi molta più potenza della CPU su cui lavorare. Il prossimo grande miglioramento promesso da DirectX 12 è la capacità di gestire molte più chiamate di disegno. Una chiamata di pareggio si verifica ogni volta che il motore di gioco vuole disegnare qualcosa sullo schermo. Il requisito di molte chiamate di sorteggio è generalmente molto faticoso per la CPU. DirectX 12 dovrebbe essere in grado di gestire fino a 600.000 chiamate di disegno. In prospettiva, DirectX 9 è in grado di gestire solo 6.000 chiamate di disegno o 1/100 di ciò che DirectX 12 sarà in grado di fare.

Da anni è possibile eseguire più GPU in modalità SLI / Crossfire. Tuttavia, uno dei grandi limiti era che la VRAM integrata nelle carte non si accumulava insieme per formare un grande pool continuo. Ad esempio, se hai due GPU ciascuna con 2 GB di VRAM, in realtà hai ancora solo 2 GB di VRAM perché ogni scheda deve contenere le stesse informazioni. DirectX 12 spera di risolvere questo problema utilizzando AFR o il rendering di frame alternativo. Invece di ogni GPU che rende parte di ogni frame, ora la GPU eseguirà il rendering di un intero frame ciascuno. Ciò consentirà di utilizzare la VRAM su ogni scheda in modo indipendente e, si spera, consentirà alle carte con quantità inferiori di VRAM di essere vitali per giocare per un periodo di tempo più lungo. Dovrebbero esserci molte altre nuove funzionalità incluse in DirectX 12 per spingere la grafica di gioco più che mai. Tuttavia, Microsoft è ancora abbastanza zitta su quali siano queste nuove funzionalità. Speriamo di saperne di più su di loro non appena il rilascio dell'API si avvicina.

Figura 3: il sovraccarico dell'API DirectX 12 è ridotto quando si utilizzano CPU multi-core.
Fonte immagine; Credito di immagine: nVidia GeForce

Vulkan

Non si sa molto su Vulkan quanto su DirectX 12, come è stato appena annunciato al GDC 2015. Quello che sappiamo è che i produttori di OpenGL, Khronos Group, hanno lasciato il nome glNext a favore di Vulkan. Vulkan sembra derivare da Mantle, che ho menzionato prima nell'articolo. Inoltre, sembra che AMD stia portando le migliori parti di Mantle al tavolo di Vulkan in una partnership con Khronos Group. Vulkan dovrebbe avere molti degli stessi vantaggi di DirectX 12, ma non è legato a un'unica piattaforma come Windows. Sarà invece disponibile su molte piattaforme diverse, tra cui Linux e persino i dispositivi mobili. I driver Vulkan per Windows e Linux saranno completamente open source a differenza di DirectX. Vulkan migliorerà il multi-threading e quindi farà un uso molto migliore della potenza della CPU disponibile oggi diffondendo il carico di lavoro su più core della CPU. Come accennato in precedenza, ridurre il carico sulla CPU consentirà di non strozzare le GPU con la stessa facilità con cui sono ora. Ciò dovrebbe fornire una spinta framerate abbastanza consistente durante il gioco. Source 2, che è stato recentemente annunciato da Valve, sarà il primo nuovo motore di gioco a supportare pienamente Vulkan, anche se sono sicuro che molti altri verranno annunciati nel prossimo futuro. Dota 2, un gioco noto per l'uso intensivo della CPU, era in esecuzione spettacoli in Source 2 con la nuova API Vulkan che utilizzava la grafica integrata Intel sulla CPU. Questo è qualcosa che certamente non sarebbe stato auspicabile con DirectX 11, ma con Vulkan il gioco sembrava mantenere un frame rate ragionevole in tutto. Dan Baker, che è uno sviluppatore per i giochi Oxide, è persino arrivato a dire che "fino a quando i produttori di GPU non si metteranno d'accordo e realizzeranno GPU dieci volte più velocemente di quanto non abbiamo ora, non possiamo massimizzare la CPU". Questa è una buona notizia per le persone che eseguono CPU più lente o che hanno molta potenza della GPU al momento perché significherà che si possono ottenere prestazioni molto migliori sullo stesso set di hardware.

Figura 4: diagramma che mostra i vantaggi di Vulkan (collo di bottiglia ridotto alla GPU).
Fonte immagine; Credito di immagine: Khronos

Cosa significa questo per il futuro dei giochi?

Bene, da molto tempo ormai la potenza della GPU è aumentata ad un ritmo molto più veloce della potenza della CPU. Cinque anni fa Intel ha persino dichiarato che alcune GPU erano 14 volte più veloci delle loro stesse CPU. Questi test sono stati condotti utilizzando una nVidia GTX 280 contro una CPU Intel i7 960 - ora considerata hardware relativamente obsoleto. Il divario tra una nVidia GTX Titan X (o anche una nVidia GTX 980) e l'attuale potenza della CPU tradizionale - la CPU Intel i7-4790k - dovrebbe essere molto più grande. Il punto che sto cercando di sottolineare è che stiamo iniziando a vedere sempre più giochi colpire un muro nelle prestazioni a causa della CPU. Chiedi a chiunque abbia un monitor ad alta frequenza di aggiornamento quanto sia difficile mantenere 100 + fps con la CPU corrente in alcuni giochi. Francamente, sarebbe solo più difficile senza queste nuove API e la loro capacità di utilizzare la potenza della CPU in modo più efficiente. L'introduzione di queste nuove API potrebbe significare un enorme aumento delle prestazioni per la maggior parte delle persone. Inoltre, consentirebbe anche agli sviluppatori di creare giochi molto più intensivi per la CPU di quanti ne abbiamo ora. Ad esempio, immagina un gioco come Assasins Creed con migliaia di NPC sullo schermo contemporaneamente, tutti interagendo tra loro e con il tuo personaggio mentre vaghi per una città. O giochi come Star Citizen, in cui è necessaria una CPU molto potente per ottenere qualsiasi tipo di frame rate stabile e accettabile, potrebbero nel prossimo futuro richiedere una CPU media al massimo e una GPU potente per mantenere una buona potenza di 60 fps.

In definitiva, questo è un momento molto eccitante per essere un giocatore. Quando verranno rilasciate queste nuove API grafiche, potremmo vedere il più grande salto nella tecnologia di gioco da molto tempo. Speriamo solo che queste API possano essere all'altezza dell'hype che hanno già creato per se stessi.

Nuove API grafiche e il futuro dei giochi per PC