DirectX 10: uno sguardo al futuro delle GPU

Il debutto del sistema operativo Windows Vista è lontano ancora molti mesi, mentre le architetture hardware DirectX 10 sono ancora lontane dal venir presentate. Ciò nonostante, l'attenzione verso la prossima generazione di API Microsoft è molto alta: vediamo quali innovazioni queste porteranno rispetto alle attuali DirectX 9
di Paolo Corsini pubblicato il 15 Giugno 2006 nel canale Schede VideoMicrosoftWindows
Overhead delle DirectX 9
Il realismo di una scena 3D passa attraverso vari componenti; alcuni di questi li abbiamo evidenziati in precedenza, quali la risoluzione, il dettaglio e la definizione dati da filtraggio anisotropico e anti aliasing, oltre in generale alla qualità con la quale i singoli oggetti vengono generati dall'applicazione.
Una via preferenziale è quella di aumentare il numero di oggetti che possono venir rappresentati a video. Il problema è che aumentando il numero di oggetti la complessità sale a livelli da non rendere la scena gestibile; per questo motivo in un gioco di ultima generazione diventa difficile poter riprodurre più di un determinato numero di oggetti 3D, con ciascuno un definito livello di complessità con il quale viene generato.
Nella fase di generazione di una scena 3D l'applicazione, in questo caso un gioco 3D, sposta l'oggetto che deve essere generato e visualizzato a schermo da se stessa alle API e da queste al driver video; in queste due fasi si genera overhead, cioè del tempo di calcolo speso nell'elaborazione, che tipicamente impatta il processore; per questo motivo tutti i giochi risultano essere cpu limited. Al crescere del numero di oggetti all'interno di una scena 3D viene incrementata la quantità di overhead, quindi si aumenta il tempo di elaborazione e di conseguenza diminuisce il numero di frames generati al secondo.
Se la generazione di un oggetto che entra in una scena video richiede un tempo di 10 millisecondi, e questo è l'unico oggetto all'interno della scena 3D, si ricava un frame rate medio pari a 100 frames al secondo; se il tempo di generazione dell'oggetto è infatti di 10 millisecondi, questo può essere generato sequenzialmente sino a 100 volte al secondo, e da questo si ricava il frame rate massimo.
Introduciamo nella stessa scena un secondo oggetto di identiche specifiche: otterremo un tempo di generazione degli oggetti identico tra di loro, e doppio nel complesso in quanto la stessa operazione deve essere eseguita due volte. Ogni frame quindi richiederà 20 millisecondi per essere generato, con un frame rate pari a 50 al secondo.
E' evidente come all'aumentare del numero di oggetti presenti nella scena, di complessità predefinita, crescerà il tempo necessario al sistema per generare l'intera scena e di conseguenza diminuirà il numero di frames al secondo che potranno venir generati. Scendendo sotto una soglia predefinita di frames al secondo la generazione della scena 3D perde di fluidità: le immagini risultano visualizzate a scatti, a danno della giocabilità e del realismo.
La vera novità che verrà introdotta con le API DirectX 10 è data dalla sensibile riduzione dell'overhead, come schematicamente illustrato dal grafico qui sopra riportato: il tempo di generazione della scena diminuisce complessivamente, e questo implica che a parità di numero di oggetti visualizzati debba aumentare il numero di frames al secondo che possono essere generati.
Il superiore tempo a disposizione può tuttavia essere adottato per integrare nel sistema un numero maggiore di oggetti: averne a disposizione un numero più elevato permette di incrementare il realismo delle scene. Per spiegare questo con un banale esempio, un bosco composto da 10 alberi è sicuramente meno realistico, come tale, di uno nel quale sono 100 gli alberi presenti.
Secondo ATI, la riduzione dell'overhead dovrebbe permettere di ottenere incrementi del numero di oggetti visualizzati in una scena 3D variabili tra 2 e 5 volte, a seconda del tipo di scena e di oggetti, mantenendo invariato il numero di frames al secondo generati.
Un miglioramento dell'overhead passa quindi attraverso le nuove API DirectX 10, ma parallelamente anche con un ampio lavoro sui driver; per questo motivo i produttori di architetture video DirectX 10 sono all'opera nello studio e nell'ottimizzazione dei driver video, così da ridurre il più possibile questo dannoso overhead.