La scheda video per calcoli generici, anche nei giochi

Test - Con DirectCompute i giochi diventano più realistici, con un impatto sulle prestazioni ma sotto controllo.

Avatar di Tom's Hardware

a cura di Tom's Hardware

La scheda video per calcoli generici, anche nei giochi

CPU e GPU possono gestire differenti tipi di applicazioni in base alle loro rispettive architetture: quando si applica un effetto a un'immagine, per esempio, si deve ripetere la stessa operazione su diverse migliaia di pixel simultaneamente, un buon esempio di calcolo dove la GPU è migliore della CPU.   

Almeno in teoria usare la scheda video per questa attività aumenta il bandwidth, perché abbiamo memoria GDDR5 fino a 4 GT/s piuttosto che a circa 1600 MT/s. Questo dovrebbe offrire un grande impatto sulle prestazioni di calcolo e sull'efficienza, con i giusti algoritmi.

D'altra parte la CPU è superiore alla GPU in molte operazioni, ma quando questi due chip comunicano tra loro si attivano risorse aggiuntive e compaiono latenze. A volte quindi può essere più vantaggioso ricorrere direttamente alla sola GPU.

Per usare il potenziale aggiuntivo della GPU bisogna lavorare sul software. Ci sono diversi modi per sfruttare le capacità hardware, e DirectCompute è l'API di Microsoft che si frappone tra la GPU e le applicazioni.

È una novità rilevante perché in passato gli sforzi per usare le capacità di calcolo generale delle GPU si sono rivelati utili solo per la ricerca e la scienza in generale, o in ambito server; successivamente il GPGPU ha iniziato a spostarsi nel settore consumer, in ambiti come la gestione video e la transcodifica. E infatti ci sono applicazioni che usano la scheda grafica per aumentare le prestazioni. Nel mondo dei videogiochi però fino a oggi non si è mosso quasi nulla.  

Ora DirectCompute e OpenCL cominciano a entrare nel mondo dei videogiochi. Il primo in particolare è usato per migliorare il rendering, l'IA, l'Occlusion, l'illuminazione e la fisica.

Ambient Occlusion

Una delle applicazioni più popolari di DirectCompute all'interno dei giochi è l'Ambient Occlusion, una tecnologia di shading (sviluppata in origine da Industrial Light and Magic oltre un decennio fa) che cerca di riprodurre effetti di luce realistici.

L'idea è di avere raggi che si diffondono da ogni superficie: quelli che raggiungono lo sfondo contribuiscono alla luminosità ambientale, mentre quelli che colpiscono gli oggetti vengono assorbiti. In questo modo si creano effetti di luce che rendono più scuri alcuni elementi e altri più luminosi, e in generale l'immagine ottenuta è più realistica.

Immaginate un vicolo ombreggiato: gli angoli appaiono più bui allo sguardo, perché meno luce ne raggiunge le superfici per poi rimbalzare verso i nostri occhi. La luce è ostacolata dalla struttura dei muri, un fenomeno che la tecnica dell'Ambient Occlusion cerca di replicare. In sua assenza l'illuminazione appare più piatta e artificiale.

Gareth Thomas di Codemasters ci ha fornito i seguenti scatti in DiRT 3 per spiegare il concetto. Notate in particolare le aree interne, alla base delle gomme.

Ambient occlusion off

Ambient occlusion off - Clicca per ingrandire

Ambient occlusion on

Ambient occlusion on - Clicca per ingrandire

"L'effetto Ambient Occlusion prende in considerazione la profondità di campo e calcola quanto dev'essere oscurata un'area, dopo aver stabilito se il punto è una valle oppure no dal punto di vista che si sta usando" ha spiegato Thomas. "Per esempio le fessure tra i pneumatici nelle immagini dovrebbero essere più scure, perché c'è meno luce di rimbalzo. L'HDAO (HD Ambient Occlusion) dà un'approssimazione della quantità di luce riflessa che arriva a ogni pixel, per  poi integrarla nel modello d'illuminazione a schermo. Non è una tecnica perfetta, perché definire la scena dal punto di vista della telecamera non è sufficiente per calcolare correttamente l'Ambient Occlusion. Però è sicuramente meglio che avere un'Ambient Occlusion completamente disattivata".