Di recente, Microsoft ha rilasciato per il suo nuovo sistema “Windows Vista” il Service pack 1.
Tre le tente novità introdotte dal Service pack 1, troviamo l’aggiornamento delle librerie Microsoft DirectX 10 in 10.1.
AMD è il primo produttore a supportare le nuove Direct3D 10.1. Le Direct3D 10.1 sono pienamente compatibili con la versione 10.
Le Direct3D 10.1, derivano direttamente dalle Direct3D 10, e ne aggiungono alcune caratteristiche.
Le GPU Direct3D 10 già presenti sul mercato (G8x, G9x, e R6x0) non supportano le caratteristiche presenti nelle ultime API Direct3D 10.1 come invece la Hd3870X2.
Il passaggio alle Direct3D 10 ha portato molte novità, ma come spesso accade in queste situazioni, le nuove API erano affette da alcuni errori. La versione 10.1 è una sorta di aggiornamento che corregge i problemi ed elimina alcune restrizioni.
Tutti i miglioramenti possono essere riassunti in tre categorie:
Ø Rigorose specifiche per limitare le discrepanze tra implementazioni multiple.
Ø Una manciata di nuove caratteristiche
Ø Maggiore qualità e precisione di rendering e antialiasing
Ora è obbligatorio supportare il filtraggio texture FP32, mentre nella versione 10 era solo opzionale.
E’ obbligatorio anche il blending integer a 16 bit.
Le Direct3D 10 introducono il “Cube Map Arrays”. Con le Direct3D 10, Microsoft ha introdotto i Texture Arrays, tabelle di texture che possono essere indicizzate direttamente negli shader. I Texture Arrays ricordano le Texture 3D, in circolazione da molto tempo, ma praticamente il loro comportamento è molto differente. Quando si accede a un elemento delle texture 3D, viene applicato ai vari layer un filtraggio, comportamento normale poiché una texture 3D è caratterizzata da un volume. Diversamente, le texture presenti nella tabella non hanno nessun nesso tra loro. Conseguentemente, non c'è alcun filtraggio tra gli elementi limitrofi. Inoltre, quando si usa il mipmapping, una texture 3D è divisa in 2 secondo le 3 dimensioni, mentre con le texture arrays ciò non avviene: se la composizione delle varie texture vede una diminuzione delle loro dimensioni, la dimensione della tabella rimane inalterata.
Le Direct3D 10.1 generalizzano queste Texture Arrays aggiungendo il supporto alle Cube Maps, mentre fino ad ora, erano supportate solo le tabelle di texture 1D e 2D.
Per quanto riguarda lo Shader Core, viene introdotto lo Shader Model 4.1 che apporta alcune novità come il Gather-4. Per aggiornare la memoria più velocemente, questa istruzione permette di recuperare 4 elementi non filtrati da una single-channel texture con un solo texture fetch, che quindi permette un'implementazione più efficiente e personalizzati dei filtri negli shader.
Un'altra istruzione presente nello Shader Model 4.1 permette di recuperare il livello di dettaglio (mipmal level) durante un texture sampling. Microsoft ha aggiornato anche alcuni limiti, specialmente il numero di input vertex shader, passando da 16 vettori a 128 bit (4 floating point precision) a 32.
Per quanto riguarda il blending, abbiamo già menzionato il nuovo formato supportato, Int 16, ma non è l'unica novità; le Direct3D 10.1 ora permettono l'utilizzo di modalità di blending indipendenti durante rendering simultanei in più di un buffer (MRT: Multiple Render Targets).
Con le Direct3D 10.1, Microsoft ha focalizzato sulla qualità del rendering, con un occhio di riguardo all'antialiasing. Prima notizia: da ora, il supporto dell'antialiasing 4x è obbligatori per i buffer a 32 bit (RGBA8) e 64-bit (RGBA16).
Microsoft ha cercato anche di razionalizzare la gestione dell'antialiasing offrendo più controllo ai programmatori e cercando di lasciare meno libertà ai produttori di GPU. Oltre ai livelli di anti-aliasing (2x, 4x, 8x), l'utente ha accesso al transparency antialiasing per filtrare le texture alpha sia in modalità multisampling che supersampling, e ognuna di queste modalità risponde a delle specifiche dipendenti dall'hardware: CSAA, CFAA, etc. Con le Direct3D 10.1, i programmatori possono finalmente specificare se vogliono un multisampling o un supersampling, garantendogli il controllo sui sample che vengono applicati agli shader
Infine, dove le Direct3D 10 abilitano l'accesso ai sample di un buffer colori multisampled, è ora possibile fare lo stesso in un multisampled depth buffer.
Attualmente l’unico gioco che sembra riuscire a sfruttare le nuove librerie DirectX 10.1 di Microsoft è Assassin’s Creed.
E’ di questi giorni che test condotti con questo gioco hanno evidenziato degli aumenti di Frame del 20% a favore delle DirectX 10.1, oltre ad introdurre delle migliorie qualitative a livello grafico.
Di seguito riportiamo i test condotti:
Da i test condotti da noi in laboratorio il gioco Assassin's Creed in abbinamento con le nuove DirectX 10.1 introdotte da Microsoft con il service pack 1, in abbinamento con le schede video ATI come la HD3870x2 che sfrutta le nuove librerie, ha evidenziato aumenti di Frame intorno al 20%,rispetto alle precedenti DirectX 10.
La stessa Ubisoft afferma che i guadagni dovuti alle 10.1 con il gioco Assassin's Creed son legati principalmente ad un errore di programmazione che rimuove una passata di post processing,portando ad un degrado qualitativo dell’immagine a vantaggio delle prestazioni.
Sinceramente dopo diverse prove condotte sul gioco sopra citato con le DirectX 10.1 NON abbiamo evidenziato nessuna perdita qualitativa dell’immagine rispetto alle DirectX 10.
Pertanto ci sentiamo di poter rassicurare tutti i nostri lettori, affermando in tutta tranquillità che il gioco Assassin's Creed in DirectX 10.1 beneficia di aumenti prestazionali senza perdite qualitative. Sinceramente certe affermazioni da parte di Ubisoft ci risultano di difficile comprensione, se non che dietro vi è una questione di marketing.
Come potete intuire sono diverse le novità apportate in queste nuove istruzioni introdotte da Microsoft DirectX 10.1 e dallo Shader Model 4.1.