|
nexthardware.com |
Presentazione delle nuove API grafiche di Microsoft
Le API DirectX 10 sono state introdotte 13 mesi fa con il lancio commerciale di Windows Vista. Solo nell'ultimo periodo però, sono state sfruttate dai produttori di videogiochi per creare ambienti ancor più ricchi di dettagli ed effetti grafici. La complessità delle scene create, sfruttando le potenzialità delle nuove interfacce di programmazione, ha messo in evidenza i limiti architetturali e prestazionali delle nuove GPU, relegando l'uso delle DX10 sono su schede video di fascia alta; ATI tuttavia ha reso disponibile l'uso delle nuove API Microsoft anche sulle schede di fascia media bassa (HD2400-HD2600).
Con l'imminente rilascio del primo service pack di Vista, le librerie DX10 sono state aggiornate alla versione 10.1, un aggiornamento che renderà disponibili, sulle GPU abilitate, nuove funzionalità grafiche e una nuova serie di strumenti per gli sviluppatori.
Le DX10.1 sono al 100% retrocompatibili con la versione 10 e sono da considerare come una “minor release”, cioè una naturale evoluzione del prodotto originale senza alcun stravolgimento della architettura di base.
Le novità delle DirectX 10.1 sono catalogabili in tre differenti aree: Miglioramenti degli Shader e Texture, Miglioramento delle tecniche di Anti-Aliasing e più severe specifiche architetturali e funzionali.
Illuminazione globale e occlusione
Illuminazione Globale
L'illuminazione dell'ambiente e degli oggetti è una delle problematiche che più affliggono i creatori di videogiochi e ambienti virtuali. Simulare in modo fedele l'illuminazione (es. ombre, riflessi) richiede avanzate tecniche di programmazione e a seconda del risultato che si vuole ottenere, un dispendio di potenza di calcolo non indifferente.
La tecnica più comunemente utilizzata nelle applicazioni real-time e videogiochi è la rasterizzazione (es. mappatura delle ombre e delle luci) che permette buone performance e una qualità più che accettabile nelle scene dinamiche, ma gli effetti di riflessione e ombre sono pesantemente influenzati dalla qualità delle texture usate e dalla loro risoluzione.
Per i rendering offline (es. film in Computer Graphics ), viene utilizzata la tecnica di Ray tracing , estremamente valida dal punto di vista qualitativo ma difficilmente utilizzabile in ambito real time a causa delle ingenti risorse di sistema necessarie per riprodurre ogni singolo "raggio" di luce all'interno di una scena complessa.
Le API DX10.1 vengono in aiuto del programmatore fornendo una tecnica di Illuminazione Globale che utilizza funzionalità simili alla rasterizzazione ma permettendo un numero virtualmente illimitato di sorgenti luminose, garantendo così una migliore qualità delle ombre e dei riflessi, vero tallone di Achille di questa tecnologia.
Tutte le operazione di gestione dell'illuminazione possono essere svolte in Hardware utilizzando le numerose unità di calcolo parallelo presenti nelle GPU moderne rendendo così possibile la gestione di ambienti complessi senza gravare in modo eccessivo sulle performance finali.
|
|
|
L'immagine mostra l'uso della tecnica di Illuminazione Globale con un software dimostrativo prodotto da ATI, come si può notale la scena dove la funzionalità è attiva, produce ombre realistiche su ciascun oggetto colpito dalla luce ambientale, senza la funzionalità attiva invece, l'illuminazione è irrealistica non fornendo un effetto di profondità agli oggetti visualizzati. |
Occlusione Ambientale
L'occlusione ambientale è una tecnica basata sugli shader che permette di determinare quali parti della scena debbano essere illuminate in relazione agli altri elementi presenti nell'ambiente. Se due oggetti si sovrappongono, l'ombra del primo dovrà essere disegnata sopra l'oggetto sottostante per generare senso di profondità, in assenza di quest'ultima la scena risulterebbe piatta. Le Direct X 10.1 implementano una nuova funzione Gather4 che permette di gestire 4 sample contemporaneamente contro il singolo sample normalmente utilizzato per questa operazione, questo permette di migliorare la qualità delle ombre prodotte ed effetti più sofisticati.
|
|
|
Nella immagine di sinistra, l'ombra delle palline è ben visibile su quelle che sono posizionate in posizione arretrata, il senso di profondità è quindi ottimale. Nella parte destra dell'immagine invece le palline non producono alcuna ombra sulle altre. |
Le novità sulle tecniche di Anti-Aliasing nelle DX10.1
Le tecniche di Anti Aliasing sono utilizzate per rendere i bordi delle immagini meno frastagliate ed uniformi. Come è noto l'abilitazione dell'AA è generalmente molto gravosa per la GPU che si trova a dover calcolare più volte la stessa scena per ottenere l'effetto voluto. Fino ad oggi ogni produttore era libero di implementare le funzione di Anti Aliasing secondo le proprie specifiche, di conseguenza la stessa scena renderizzata con schede differenti può portare a risultati grafici diversi.
Nelle specifiche delle DX10.1, un requisito fondamentale per l'hardware compatibile è il supporto minimo per il Multi Sample Anti Aliasing 4x e la definizione di alcuni pattern predefiniti per AA.
La standarizzazione delle tecniche di AA, rende la programmazione dei software che devono utilizzare questa funzione semplificata, infatti pur potendo definire dei pattern e delle tecniche proprietarie, queste dovran essere compatibili con tutto l'hardware compatibile presente.
ATI aveva già indotto nelle sue GPU alcune funzionalità simili alla tecnica di Custom Anti-Aliasing, ma con le nuove specifiche queste funzionalità sono ora esposte al programmatore che può decidere di implementarle in modo trasparente all'hardware sottostante.
Le DX10.1 prevedono inoltre l'applicazione dell'AA attraverso gli Shader così da non rendere più necessaria la creazione di unità di elaborazioni dedicate a questa funzionalità.
|
|
|
L'Anti-Aliasing permette di migliorare la qualità delle immagini sullo schermo, eliminando artefatti, spigoli e altre imperfezioni grafiche, la maggior potenza delle nuove VGA permette di applicare questi filtri senza decadimenti di prestazioni a patto che queste funzionalità siano implementate in modo efficiente a livello HW. |
Nuovi standard per le GPU di domani
Le Direct X 10.1 impongono nuovi standard di qualità per quanto riguarda le capacità di calcolo delle GPU.
In precedenza la maggior parte delle caratteristiche riguardati la precisione dei calcoli era lasciata ai produttori, le DX10 infatti, forniscono solo le linee guida per una corretta implementazione.
Le nuove feature richieste sono:
FP32 (Rappresentazione dei numeri a virgola mobile con 128 bit)
Int16 (Gestione dei numeri interi a 64 bit)
Supporto per 4x MSAA (deve essere supportato almeno l'Anti Aliasing Multi Sample 4x)
Sample AA standardizzati (deve essere possibile gestire i sample per l'Anti Aliasing in modo unificato su tutti i modelli di VGA compatibili)
Migliore precisione dei calcoli a virgola mobile
Queste nuove restrizioni dovrebbero portare ad una esperienza visiva e di programmazione migliore, infatti l'uso di pattern standard per l'applicazione dei filtri, dovrebbe fornire risultati omogenei tra le varie schede, evitando di dover ottimizzare il codice per uno specifico modello.
Le operazioni a virgola mobile devono rispettare gli standard industriali IEEE così da rendere predicibili i risultati delle operazioni anche tra architetture differenti, attualmente la stessa operazione, può infatti restituire valori leggermente diversi a seconda della macchina che esegue la computazione, questo a causa delle approssimazione successive necessarie per arrivare al risultato finale.
Cosa ci riserva il futuro?
ATI ha presentato le sue schede video con supporto DX10.1 con il lancio della serie HD3000, NVIDIA, da parte sua non sembra ancora interessata ad aggiornare la propria lineup di GPU per integrare le nuove API, questo infatti richiederebbe l'aggiornamento di molti circuiti per aderire alle nuove specifiche descritte nelle pagine precedenti.
Attualmente le DX10 sono sfruttate solo in minima parte e nessun produttore di videogiochi ha già in programma di aggiornare i propri motori alla versione 10.1.
Con il consolidamento di Windows Vista Service Pack 1, le nuove API potranno essere sfruttate completamente. Microsoft continuerà comunque a supportare le DX10 ed aggiornarle a cadenza quasi mensile come già oggi avviene per le DX9.c. Chi ha acquistato una scheda compatibile con questa nuova release potrà beneficiare fin da subito delle nuove caratteristiche quando queste saranno utilizzate nei videogiochi, chi invece ha acquistato una scheda DX10 può dormire sogni tranquilli per ancora molto tempo, nessuna software house produrrebbe un programma compatibile esclusivamente con una ristretta cerchia di schede video.