La CPU, sempre più nullafacente
La potenza raggiunta dai processori grafici è di gran lunga superiore a quella delle ultime CPU, tanto che spesso ci troviamo a parlare di schede video "CPU limited" - ovvero limitate dalle capacità di calcolo del processore.
Come abbiamo scritto nella pagina precedente, sono nate le GPGPU, dei veri e propri processori generici, che grazie alla loro potenza e flessibilità stanno sottraendo sempre più compiti alla CPU centrale.
Le DirectX 10 introducono a questo proposito diverse caratteristiche che riducono enormemente l'intervento della CPU, spostandone il carico proprio sulla GPGPU:
- Texture array: con l'avvento di Shader Model 4.0 gli sviluppatori di giochi potranno abbandonare i poco efficienti texture atlas e sfruttare le matrici di texture, che potranno immagazzinare fino a 512 texture delle stesse dimensioni
- Predicated draw: gli oggetti complessi vengono tracciati inizialmente in maniera semplificata e vengono poi realizzati completamente solo se saranno visibili nella scena finale. Questa tecnica era già presente in versioni precedenti delle DirectX ma, a partire dalla release 10, non usa più risorse della CPU.
- Stream out: permette a vertex o geometry shader di restituire i risultati in uscita direttamente nella memoria grafica.
Altre novità delle DirectX 10:
- State Objects: nelle DirectX 10 ci saranno solo cinque state object: InputLayout, Sampler, Rasterizer, DepthStencil e Blend.
- Costant Buffers: le costanti sono valori predefiniti utilizzati in tutti i programmi shader (ad esempio il numero di luci nella scena le cui caratteristiche sono definite da costanti). Come sapete queste caratteristiche devono aggiornarsi costantemente per riflettere un mondo sempre più credibile e vivo. Questo produce un significativo overhead a livello API. Grazie ai Costant Buffers possono essere immagazzinate fino a 4096 costanti in un buffer, riducendo l'overhead.