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

Indietro
Successivo

Geometry Rendering e Checkerboard Rendering

Questa premessa era doverosa per arrivare al punto: “Grazie ad ID Buffer abbiamo sviluppato due tecniche specifiche di miglioramento delle immagini, applicabili a PS4 Pro” – ci spiega Mark – “una più semplice chiamata Geometry Rendering, che serve a migliorare i contorni degli oggetti. E una più complessa, chiamata Checkerboard Rendering, che oltre a rendere più definiti i contorni degli oggetti aumenta anche il dettaglio al loro interno. In particolare texture e effetti speculari”.
Per capire come operano bisogna partire dalle basi. Un pixel tipicamente è definito da due valori: colore e profondità (Z), ma tecniche di rendering come l’antialiasing MSAA usano più colori e valori di profondità per ciascun pixel. Per esempio con l’MSAA 4x ciascun pixel ha 4 valori di colore e 4 valori di profondità.

Il numero di pixel da calcolare con Checkerboard Rendering è esattamente doppio rispetto al 1080p.

La tecnica che definiamo Geometry Rendering usa un formato molto particolare, dove ciascun pixel ha un colore, 4 valori di profondità e 4 ID. Il render target viene settato a 1080p, quindi i colori vengono calcolati per 2 milioni di pixel come nel FullHD nativo. Ma grazie ai valori Z multipli si ottiene una distribuzione molto più uniforme dei pixel, nello spazio 3D. Con una densità paragonabile al 4K nativo. “E grazie all’ID Buffer, ciascuno di quei pixel viene tracciato frame by frame” – precisa Mark – “quindi sappiamo sempre esattamente dove si trovano i contorni degli oggetti”. Dopo aver generato la frame in 1080p questa viene upscalata in 4K, propagando i colori in base all’ID degli oggetti. Il risultato è che, con un dispendio di risorse molto modesto, si riesce a passare dal 1080p al 4K, ottenendo immagini con contorni super definiti. E magari sfruttare le risorse di calcolo disponibili per aumentare ulteriormente il dettaglio delle scene.
ps4_pro_hdr-0-0
Anche se Mark ci tiene a precisare: “Geometry Rendering non è la strategia ottimale da implementare su PlayStation 4 Pro”. Questo perché non migliora la qualità delle texture e degli effetti speculari. Mark ci mostra due immagini prese da Infamous First Light, una renderizzata in 1080p e l’altra con Geometry Rendering 1080p, l’immagine renderizzata con Geometry Rendering mostra contorni molto più definiti, soprattutto sui cavi che risultano molto scalettati in 1080p. Tuttavia il volto della protagonista rimane piuttosto sfocato e non c’è una gran differenza.
Per ovviare al problema si ricorre a Checkerboard Rendering. Il principio sulla carta è “semplice”: l’obiettivo è ottenere un’immagine in 4K, dimezzando però il numero di pixel da renderizzare. Un primo modo per farlo è di eliminare, in modo alternato, la metà delle linee verticali dall’immagine, dimezzandone quindi la risoluzione orizzontale (dal 3840×2160 si passa a un 1920×2160). E ricostruendo poi le informazioni mancanti a partire dalle linee disponibili. “Non funziona molto bene purtroppo” – spiega Mark. Questa soluzione infatti produce delle immagini molto sfocate e piene di artefatti, perché i pixel mancanti sono tutti in fila. Si è pensato allora di eliminare sempre la metà dei pixel orizzontali, ma secondo un pattern a scacchiera (in inglese “checkerboard”), dove a ogni frame il pattern viene invertito. Per cui in una frame si elimina l’equivalente di tutte le “caselle bianche” e nella successiva tutte le “caselle nere”.


In questo modo si dimezza la risoluzione orizzontale e quindi il carico di rendering, ma i pixel rimanenti sono distribuiti in modo molto più omogeneo, per cui le immagini ricostruite partendo da questo pattern a scacchiera sono estremamente definite e sostanzialmente prive di artefatti.
Il formato di pixel usato da Checkerboard Rendering è molto particolare: ciascun pixel ha un colore, 2 valori per la profondità (Z) e 2 valori per ID. “Durante il Rendering Checkerboard utilizziamo 4 milioni di pixel con questi attributi” – spiega Mark – “ossia il doppio rispetto al 1080p nativo”. Nello specifico viene calcolato il colore dei pixel nel doppio delle posizioni rispetto a un 1080p nativo. Con profondità e ID calcolati nello stesso numero di posizioni rispetto al 4K nativo. Questo permette di applicare tutta una serie di tecniche che migliorano la qualità risultante delle immagini. Ad esempio attraverso la propagazione dei colori, utilizzata anche nel Geometry Rendering, leggendo le informazioni su colore e ID dalla frame precedente, si può ottenere un eccellente antialias. E grazie all’inversione del “pattern” a scacchiera effettuata a ogni frame, arrivare ad avere immagini praticamente indistinguibili dal 4K nativo, a telecamera ferma. Mentre se la scena è in movimento si ricorre all’ID Buffer e all’ID di oggetti e triangoli per identificare le parti più appropriate dalla scena precedente, preservando così la qualità delle immagini.


Con Checkerboard Rendering si ottengono immagini con bordi molto definiti, come con Geometry Rendering, ma diversamente da quest’ultimo anche l’interno degli oggetti mantiene dettaglio, così come le texture e gli effetti speculari.
Mark ci ripropone la stessa immagine tratta da Infamous First Light. Il divario tra Geometry Rendering e Checkerboard Rendering è evidente. Con Checkerboard Rendering il volto della protagonista acquisisce un livello di dettaglio che permette di coglierne perfettamente l’espressione. La differenza, rispetto al 4K nativo è minima.
“Il numero di pixel da calcolare con Checkerboard Rendering è esattamente doppio rispetto al 1080p, ma per via di un overhead introdotto da questa tecnica non è sempre possibile passare da 1080p a 2160p mantenendo inalterate le prestazioni” – chiarisce Mark – “anche se la potenza di calcolo della GPU di PlayStation 4 Pro è 2,28 volte quella di una PlayStation 4 standard”. Per questo motivo può essere necessario ridurre la risoluzione verticale a 1800p (quello che si chiama Checkerboard 1800p), lasciando allo scaler di PS4 Pro il resto del lavoro.

Geometry Rendering non è la strategia ottimale da implementare su PlayStation 4 Pro.

Sony fornisce agli sviluppatori degli esempi di codice per aiutarli a implementare queste tipologie di rendering sui loro giochi. Il Geometry Rendering è più semplice e bastano pochi giorni a un singolo programmatore per implementarlo. Checkerboard Rendering richiede invece alcune settimane, sempre considerando un singolo programmatore. Si tratta in entrambi i casi di tecniche che possono essere implementate in una frazione del tempo complessivo di sviluppo di un gioco. Quindi con costi molto bassi, un obiettivo più volte ribadito da Mark nel corso di questa presentazione.
La spiegazione si conclude con una demo dei vantaggi di Checkerboard Rendering. Vediamo Infamous First Light in 1080p e poi in Checkerboard Rendering 2160p, la differenza, in termini di definizione è sostanziale.
“Sono certo” – chiede Mark – “che a questo punto sarete curiosi di vedere un confronto tra Checkerboard Rendering e 4k nativo”. Per scorgere delle differenze siamo costretti ad avvicinarci allo schermo, osservando minuscoli dettagli. Tra Checkerboard 2160p e 4K nativo la differenza, in Infamous First Light, si riduce a un leggero tremolio che appare su un insegna di un negozio, visibile sulla distanza. Si nota di più invece il passaggio da Checkerboard 1800p a 4K nativo. Le scritte sulle insegne dei negozi risultano un po’ sfocate con Checkerboard. Ma anche qui la differenza si nota solo osservando da vicino lo schermo. Mentre nel complesso l’immagine risulta ugualmente dettagliata, con contorni chiari e definiti e una pulizia complessiva ben lontana da quanto permetta il normale FullHD.

Indietro
Successivo