di Michele Braga
La velocità non basta per creare la migliore esperienza di gioco. Esaminiamo le tecniche che migliorano la qualità visiva e il loro impatto sulle prestazioni.
Siamo da tempo nell’era dell’alta definizione, almeno per quello che riguarda le immagini e i video in digitale: televisori, tablet, smartphone, videocamere e fotocamere utilizzano schermi e sensori con risoluzioni di molto superiori a quelle cui eravamo abituati fino a pochi anni fa. Nel mondo dei Pc l’alta definizione in termini di risoluzione esiste dall’introduzione dello standard Sxga (intorno agli anni ‘90), ma la qualità delle immagini 3D generate in tempo reale è rimasta un obiettivo in continua evoluzione. La disponibilità di una maggiore potenza di calcolo permette non solo di incrementare le prestazioni in senso assoluto, ma anche di alzare il numero dei dettagli e di applicare tecnologie di postproduzione sempre più complesse senza degradare in modo distruttivo la fluidità di gioco.
Il termine “qualità ” introduce un tema ampio e articolato che investe numerosi aspetti legati ai processi di creazione delle immagini 3D in tempo reale e alla loro manipolazione negli istanti che precedono la visualizzazione a schermo. Affrontiamo quindi alcune delle problematiche e le possibili soluzioni disponibili in modo specifico nei moderni videogiochi 3D, valutandone l’impatto in termini di prestazioni e di giocabilità .
La scelta dei videogiochi come soggetto di analisi deriva dalla dinamicità e dalla velocità con le quali tali applicazioni seguono gli sviluppi tecnologici per offrire un’esperienza di gioco coinvolgente attraverso la ricerca di un realismo sempre più accentuato. Grazie agli strumenti messi a disposizione dall’hardware grafico, gli sviluppatori, nel corso degli anni, hanno incrementato la complessità dei modelli e il dettaglio delle immagini facendo leva sulla maggiore potenza di calcolo a disposizione. Quest’ultima ha raggiunto un livello tale che una sua parte può essere utilizzata per migliorare ulteriormente l’aspetto delle immagini attraverso l’applicazione di filtri che spaziano dalla simulazione di effetti cinematografici a quelli più comuni, ma di non banale applicazione, per correggere gli artefatti tipici della visualizzazione a video.
L’obiettivo è ottenere immagini, statiche e in movimento, piacevoli e prive di artefatti evidenti come linee seghettate, dettagli geometrici alterati o assenti, texture deformate e dai colori slavati o, ancora, con figure d’interferenza (effetto moiré). Sebbene sia scontato per molti, ricordiamo che fluidità e qualità degli effetti di gioco sono i due contendenti che si spartiscono la potenza di calcolo e che solo un buon punto di compromesso tra i due permette di ottenere un’esperienza di gioco gradevole: immagini splendide che scattano durante il movimento e la rotazione del punto di vista, oppure immagine fluide così prive di dettaglio da non permettere di apprezzare il lavoro degli artisti che hanno contribuito a produrre il videogioco non sono soluzioni accettabili.
I test di prestazioni che eseguiamo sui prodotti che mese dopo mese sono disponibili sul mercato hanno lo scopo non solo di fornire informazioni di confronto tra i diversi modelli, ma permettono anche di capire di quanta potenza di calcolo in eccesso è possibile disporre e destinare all’incremento della qualità una volta che sia stato raggiunto l’obiettivo minimo richiesto per la fluidità di gioco: tale soglia è fissata in linea teorica a 60 fotogrammi al secondo.
Pipeline 3D: la genesi dell’immagine
La conoscenza dei processi che intervengono nella costruzione di un’immagine digitale che rappresenta uno scenario 3D costituisce un bagaglio di nozioni utile per comprendere la natura di alcuni difetti riscontrabili durante la rappresentazione a video. Tali nozioni sono indispensabili per realizzare gli strumenti atti a correggere i difetti e a rendere l’immagine più piacevole ai nostri occhi. Questa non vuole essere una guida esaustiva su tutti gli aspetti connessi alle tecniche di rendering, ma più semplicemente una rapida infarinatura sufficiente a comprendere le principali nozioni di base.
Nel caso dei videogiochi – ma le medesime considerazioni rimangono valide anche in altri campi d’impiego – lo schermo del monitor rende visibile la rappresentazione virtuale di uno scenario tridimensionale le cui proprietà (oggetti, colori, luci) sono prima definite e rappresentate in forma matematica all’interno del Pc. L’intero processo di fabbricazione dell’immagine si sviluppa passo passo lungo la struttura della pipeline 3D che svolge le operazioni necessarie a trasformare i dati in ingresso nell’immagine finale in uscita.
Il primo obiettivo è costruire lo scenario virtuale partendo dai singoli elementi che lo compongono. Durante tale operazione, gestita dal motore grafico dell’applicazione, i singoli modelli degli oggetti da rappresentare sono caricati dalla memoria e, attraverso trasformazioni di coordinate, collocati nella scenografica virtuale. Attraverso l’utilizzo dello stadio Vertex Shader, le caratteristiche geometriche degli oggetti possono essere modificate: in particolare la struttura geometrica, definita dal numero e dalla posizione dei vertici, può essere arricchita e quindi deformata per aggiungere dettagli assenti nel modello di partenza. Tale operazione permette da un lato di risparmiare banda di trasferimento dati in quanto modelli più semplici sono composti da set di dati più compatti, mentre dall’altro l’utilizzo della tessellation parametrica eseguita all’interno della Gpu permette di adattare la complessità e la definizione del modello in base alle distanza dal punto di vista della scena o in base al livello di prestazioni che si vuole ottenere.
Contestualmente a questa trasformazione di coordinate, denominata modelling transform, gli oggetti sono inseriti e orientati nello scenario 3D. Una volta che la scena è stata montata, l’intero sistema di coordinate è convertito, attraverso l’operazione di view transform, nel sistema di riferimento che ha come origine il punto di vista dell’osservatore.
Questo passaggio è eseguito per semplificare l’individuazione del volume di visione, definendo l’angolo di campo e i piani di clip frontale e posteriore. Questi ultimi, posizionati lungo l’asse Z identificano le distanze dello spazio visibile: tutto ciò che ha un valore Z inferiore a quello del piano di clipping frontale e uno Z superiore a quello del piano di clippling posteriore viene scartato dalla scena.
Per semplificare questa operazione e per eseguire quella della proiezione prospettica (perspective projection), che serve a rappresentare gli oggetti più distanti dal punto di vista dell’osservatore in scala più piccola, lo spazio di visione (eye space) è trasformato in un sistema di coordinate denominato homogeneous clip space. In sostanza l’intero spazio di visione è normalizzato in intervalli che vanno dal valore -1 a quello 1. Attraverso l’operazione di projection transform permette di mappare i piani del volume di visione con i piani che definiscono lo spazio di clipping (clip space).
Tale operazione permette di limitare la quantità di dati a quelli che servono in modo effettivo alla generazione dell’immagine finale. In realtà è possibile snellire ulteriormente le informazioni attraverso l’operazione culling che permette di eliminare tutte le geometrie e le superfici, o porzioni di esse, non visibili prendendo come punto di riferimento quello dell’osservatore. In questa fase è necessario tenere conto della presenza di eventuali superfici trasparenti per evitare di scartare geometrie che sono visibili.
Un esempio banale ma esemplificativo è di pensare a una casa osservata dall’esterno: il progettista, i muratori e gli arredatori l’hanno realizzata in ogni minimo dettaglio, ma dall’esterno è visibile solo la facciata rivolta verso di noi e le parti degli interni osservabili attraverso le finestre. Tutto il resto potrebbe anche non esserci, un po’ come accade nelle scenografie cinematografiche. (…)
Estratto dell’articolo pubblicato sul numero 255 giugno 2012