Microsoft DirectX 11
Le DirectX 11 sono un superset delle DX10 e DX10.1 ovvero estendono le funzionalità delle librerie precedenti. Le nuove API sono disponibili in Windows 7 e saranno disponibili come aggiornamento per Windows Vista attraverso Windows Update. Per chi volesse installare una versione preliminare delle DX11 per Windows Vista è sufficiente abilitarne il download, seguendo le istruzioni a questo indirizzo.
Dopo aver eseguito lo script, è possibile installare il Platform Update KB971644, un pacchetto che include le DirectX 11 e altre funzionalità di Windows 7. | Terminata l'installazione il tool dxdiag fornirà informazioni riguardo alle nuove librerie. |
Cronistoria delle DirectX 11
Le DirectX 10 non erano state accolte con molto clamore dagli sviluppatori a causa del supporto esclusivo a Windows Vista, i miglioramenti erano tali da attendersi una rapida crescita della loro diffusione; sono infatti molto più semplici da programmare rispetto alle vecchie librerie DX9 e sono più efficienti potendo sfruttare specifiche ottimizzazioni nei driver. L'esperienza d'uso inoltre è consistente tra le varie piattaforme, le DX10 impongono specifici requisiti ai produttori di Hardware, evitando implementazioni “fantasiose” che hanno spesso causato problemi di compatibilità e fruibilità di molti applicativi.
Le DirectX 10.1 sono state introdotte con il primo Service Pack di Windows Vista e hanno migliorato le funzionalità di AntiAliasing e gestione, sono però state supportate solo dalle schede video ATI, NVIDIA ha rinunciato ad integrarne le funzionalità perché sarebbe stato necessario riprogettare alcuni registri che non rispettavano i requisiti di precisione imposti della nuovi API. I vantaggi delle DX10.1 si sono dimostrati tangibili nei titoli che ne fanno uso, uno per tutti H.A.W.X., dove l'abilitazione delle nuove funzionalità può portare ad un incremento delle prestazioni variabile tra il 20-30%.
Con Windows 7 le librerie DX10.1 sono state estese e hanno dato origine alle DX11, introducendo il supporto agli Shader Model 5.0, Tesselation e DirectCompute 11.
(* le performance saranno inferiori a quelle dell'hardware DX11 nativo)
Alcune delle funzionalità delle DirectX 11 potranno inoltre essere sfruttate su hardware DX10 e DX10.1 con un aggiornamento dei driver, tra queste ricordiamo il supporto Multi-threading che permette di parallelizzare alcune operazioni di rendering distribuendole su più core fisici del sistema.
Pipeline DirectX 11
La pipeline delle DirectX 11 è stata estesa per poter introdurre il motore di Tassellazione, ovvero una funzionalità nata per migliorare la qualità dei modelli in hardware senza particolari overhead dati nell'uso di modelli più complessi.
ATI e Microsoft avevano già lavorato in passato sulle funzionalità di Tassellazione, integrandole nella GPU Xenos utilizzata nella XBOX 360, la versione introdotta con le DX11 è però più evoluta, anche se il porting tra le due piattaforme è ulteriormente facilitato da questo avvicinamento tra le due tecnologie.
In verde sono evidenziati i 3 nuovi stage della pipeline DirectX 11, nelle schede DirectX 10 troviamo implementate le parti restanti. La nuova architettura permette di migliorare le superfici in un solo passaggio, riducendo le risorse necessarie e il lavoro dello sviluppatore. Queste funzionalità sono disponibili solo sull'hardware DX11 compliant, necessitano infatti di una circuiteria dedicata all'interno delle GPU. |
La prima immagine rappresenta i passaggi necessari per renderizzare una immagine con la tecnologia attuale, la seconda la semplificazione introdotta dalle DirectX 11. |
Il motore di Tassellazione è compatibile con varie tecniche di compressione riducendo l'I/O necessario per lo scambio dei modelli tra la CPU e la GPU; la personalizzazione del livello di intervento inoltre, rende questa funzionalità scalabile a seconda dell'hardware impiegato.
DirectCompute 11
La novità più importante introdotta con le DirectX 11 è sicuramente il DirectCompute11, ovvero un layer utilizzabile dal programmatore, per far svolgere compiti non prettamente grafici alla scheda video, utilizzando varie interfacce di programmazione. I Computer Shader fanno il loro ingresso nel mercato scontrandosi con due tecnologia già affermate: CUDA di NVIDIA e OpenCL sponsorizzato da Apple.
La potenziale diffusione di questa architettura è direttamente proporzionale alla diffusione dell'hardware compatibile e dei due sistemi operativi supportati (Windows 7 e Windows Vista), è infatti possibile creare software che tragga vantaggio dalla scheda video per migliorare la fisica dei giochi o la velocità di ricodifica dei video, senza preoccuparsi dalla scheda video realmente utilizzata, cosa che non avviene oggi con la tecnologia ATI Stream o NVIDIA CUDA. Programmare un Computer Shader richiede una buona conoscenza del linguaggio di programmazione C++ (e affini) e conoscenze di programmazione concorrente, anche se le funzionalità previste dalle API facilitano il compito dello sviluppatore.
La pipeline DX11 viene estesa per l'utilizzo dei Computer Shader, introducendo nuove Strutture Dati per la manipolazione delle informazioni. Un Computer Shader può lavorare all'unisono con la pipeline grafica, applicando effetti, post processing o svolgendo compiti diversi e non direttamente correlati. |
Le applicazioni più comuni per le DirectCompute11 sono:
-
Image/Post processing:
-
Image Reduction
-
Image Histogram
-
Image Convolution
-
Image FFT
-
-
A-Buffer/OIT
-
Ray-tracing, radiosity, etc.
-
Simulazione Fisica
-
Intelligenza Artificiale (AI)