Mark Cerny – “Così ho creato PlayStation 4 Pro”

Indietro
Successivo

Antialias con ID Buffer

Mark Cerny ci parla di PlayStation 4 Pro con l’affetto di un padre verso i propri figli, e lo fa con quell’orgoglio misto a consapevolezza che si ha quando questi raggiungono grandi risultati. Snocciola dati tecnici con una naturalezza e una sicurezza disarmanti, mentre ci spiega le novità della console, entrando nel merito di come si sia riusciti a ottenere una qualità visiva così alta a fronte di un dispendio di risorse così basso.
“Raddoppiare la potenza di calcolo della CPU non sarebbe bastato a garantirci la possibilità di eseguire i giochi in 4K. È una questione puramente matematica” – spiega Mark. In effetti il 4K è 4 volte la risoluzione FullHD, ma PS4 Pro offre poco più del doppio della potenza di PS4 standard. Il 4K nativo è decisamente fuori dalla sua portata.
ps4-pro-1
Supportare 4K e HDR, senza ricorrere alla “forza bruta” (e quindi ai costi) messi in campo dai PC non è stato affatto semplice, ha richiesto di ripensare completamente l’approccio al rendering dei pixel, bilanciando risorse hardware e prestazioni. Ne sono nate nuove soluzioni tecniche, che hanno il potenziale per rivoluzionare l’approccio al rendering della grafica 3D.
Il metodo più diffuso per migliorare la qualità delle immagini 3D generate digitalmente è l’antialiasing, ossia quel procedimento volto a eliminare le scalettature dai contorni. Per Mark le varie tipologie di “antialiasing” ricadono sostanzialmente dentro due grandi categorie: c’è l’antialias basato sulla geometria, che si propone di rendere più definiti i contorni dei poligoni, lasciando però inalterato il contenuto. Algoritmi come MSAA, FXAA, MLAA o Geometry Rendering appartengono a questo primo tipo. E poi c’è l’antialias basato su supersampling, che è più dispendioso in termini di risorse, ma che migliora l’intera immagine e non solo i contorni degli oggetti. L’SSAA e il Checkerboard Rendering appartengono a questo secondo tipo: “Non voglio semplificare eccessivamente” – precisa – “ma io la vedo così”.

Il problema quando si applica l’antialiasing è individuare i contorni dei poligoni con precisione, e per farlo serve conoscere con esattezza quali pixel siano effettivamente coperti da triangoli. Ma questa è un’informazione di cui normalmente non si dispone: “Non si può semplicemente guardare alle aree ad alto contrasto nell’immagine e applicare un filtro di bilanciamento” – precisa Mark – “Perché le immagini risultanti sarebbero sfocate”. Alcune tecniche guardano ai dati dello Z-buffer per determinare la copertura. “A volte funziona bene” – dice Mark – “ma quando ci sono tanti oggetti vicini tra loro pure questa informazione non è sufficiente”.

“Quando una GPU raggiunge una certa complessità, è importante che disponga di un cervello centrale in grado di distribuire e bilanciare i carichi di lavoro al suo interno.

Mark ci spiega come ha ovviato al problema: “Per conoscere la posizione di oggetti e bordi, tracciarle da frame a frame ed eseguire un antialias accurato abbiamo dotato PS4 Pro di quello che chiamiamo ID Buffer”. ID Buffer è un buffer indipendente, scritto da hardware dedicato e che contiene l’ID degli oggetti. Viene aggiornato automaticamente e contemporaneamente allo Z Buffer. E’ anche possibile scrivere il numero di uno specifico triangolo all’interno di questo buffer. Se dei triangoli condividono lo stesso vertice a noi interessa calcolare quel vertice una volta sola e per farlo dobbiamo identificare i triangoli. Le CPU moderne non ti danno accesso a questa informazione, salvo che si voglia sacrificare una bella fetta di prestazioni”. ID Buffer risolve il problema.
“La sua implementazione ha richiesto un gran lavoro” – spiega Mark – “Con l’aiuto di AMD abbiamo dovuto riconfigurare la pipeline grafica per permettere di scrivere l’ID dei triangoli a piena velocità”. Grazie ad ID Buffer è possibile sapere con precisione dove sono i contorni degli oggetti e tracciarli frame by frame.

Indietro
Successivo