Metal Gear Solid 5 FOX Engine - analisi tecnica
Hideo Kojima punta al fotorealismo.
Alla Games Developers Conference di qualche settimana fa, Kojima Productions ha svelato al grande pubblico il quinto capitolo della serie Metal Gear Solid, The Phantom Pain, che incorporerà anche Ground Zeroes, annunciato precedentemente. Lo stesso Kojima ha suggerito su Twitter che il secondo farà da prologo al primo titolo, anche se, da un grande depistatore qual è il game designer giapponese, ci possiamo effettivamente aspettare di tutto. Il vero punto di contatto tra questi due giochi sarà quindi l'uso del nuovo motore FOX Engine, che promette di cambiare radicalmente il gameplay della serie. Dai livelli di stampo classico, si passerà infatti a scenari open world completamente navigabili.
Il trailer e la dimostrazione di gameplay di The Phantom Pain sono state seguite da una presentazione molto completa che metteva in mostra le potenzialità di questo engine intitolata: "Fotorealismo attraverso gli occhi della volpe". L'ambizione di Kojima è chiara e punta al fotorealismo assoluto, il Santo Graal del rendering applicato al videogioco.
Guardando ai filmati presentati alla GDC, sembrerebbe che Kojima e i suoi grafici siano sulla strada giusta: l'approccio di questo motore al rendering, illuminazione e creazione degli elementi grafici è sicuramente molto innovativo e intrigante ad andarci piano, anche se saranno le applicazioni pratiche che deriveranno da questi strumenti a definire realmente l'esperienza di gioco. Alla GDC molti non hanno prestato particolare attenzione all'annuncio per il modo in cui queste novità sono state presentate, sicuramente troppo da addetti ai lavori e con tecnicità poco comprensibili ai più. Con questo articolo proviamo a semplificare i concetti espressi per capire cosa bolle nel pentolone di Kojima.
"Con questo articolo proviamo a semplificare i concetti espressi da Kojima"
La base di questo nuovo engine è il concetto di rendering differito: si tratta di una tecnica di gestione della luce usata già da qualche tempo, seppur con molte limitazioni dovute alle superfici trasparenti e all'incompatibilità con le soluzioni antialias tradizionali. Tuttavia il suo utilizzo è cresciuto notevolmente con questa generazione di console, grazie anche a motori grafici in grado di supportarlo in modo efficiente. Il Cryengine 3, per esempio, è stato ampiamente modificato per girare su console usando questa tecnica ma molti altri titoli (e motori) ne fanno uso, come ad esempio Perfect Dark Zero, la serie Killzone e Uncharted, ma anche GTA IV, BioShock Infinite e l'ultimo Tomb Raider.
Rispetto al rendering tradizionale, il rendering differito è uno step ulteriore nel processo di creazione di un'immagine: si aggiunge infatti un passaggio in più che si frappone tra la definizione dei materiali e come l'ombreggiatura delle texture dovrebbe essere definita, e la creazione e la testurizzazione di un oggetto nella sua versione finale rispetto al resto dell'ambiente. Le informazioni supplementari sono immagazzinate nel Geometry buffer (G-buffer) che viene richiamato ogni volta che il sistema lo richiede.
In soldoni, la tecnica permette di separare due attività che fino ad oggi, nel processo di rendering, sono sempre state unificate ovvero la creazione dell'oggetto e come la luce si comporta quando un fascio luminoso lo investe a seconda di intensità e angolazione. Il metodo di rendering tradizionale è il single o multi-pass. Il primo è il più semplice ma anche il meno efficace a causa della singola renderizzazione dell'oggetto, che porta a una resa molto semplice della fonte luminosa e di solito presenta problemi quando si combinano tra loro numerose permutazioni di ombreggiatura dovute a luci proiettate su materiali diversi.
Nel caso del multipass rendering invece, dieci fonti luminose equivalgono a dieci ricreazioni dell'oggetto e questo spiega chiaramente perché effetti avanzati di luce sono computazionalmente molto pesanti da gestire. Nel rendering differito le fonti luminose sono gestite come elementi geometrici che condizionano l'informazione della luce proiettata sugli oggetti quale colore e profondità. Questo significa che, inserendo questi dati nel G-buffer, e richiamandoli solo al momento del bisogno, gli oggetti vengono renderizzati una volta sola con conseguenze ovvie; in una scena si possono introdurre molte più fonti luminose impegnando una frazione della performance necessaria in passato.
"Il rendering differito permette di introdurre in una scena molte più fonti luminose impegnando una frazione della prestazioni necessarie in passato "
In Metal Gear Solid 5 l'implementazione di queste tecniche sarà vitale perché l'illuminazione è centrale per arrivare al miglior fotorealismo possible. Il FOX usa una tecnica chiamata linear-space lighting. Si tratta di un'implementazione analoga al rendering differito, che compie un percorso leggermente più lungo nella pipeline grafica per ottenere lo stesso risultato spiegato poc'anzi, ossia più fonti luminose e meno richieste hardware.
Il linear-space lighting tiene in considerazione il fatto che il livello di contrasto tra luce e oscurità è piuttosto alto sui monitor moderni e corregge automaticamente la gamma per arrivare a ottenere luci e ombre più naturali. La demo dell'ospedale di MGS5 dimostra questa caratteristica chiaramente grazie alla colorazione e alla brillantezza dell'ambientazione, che mette in primo piano la raffinatezza della soluzione tecnica proposta dal sistema di ombreggiature del FOX Engine. Il risultato è piacevole e meno evidente rispetto a molti titoli della current-gen, che tendono a nascondere la mancanza di dettaglio sparando in faccia al giocatore riverberi e altri effetti legati alla profondità di campo.
Se questo effetto è dovuto alla tecnica di linear-space lighting, altre componenti secondarie entrano in gioco nel rendering differito prima che l'immagine venga inviata al framebuffer. Alcune di queste si basano sull'attenuazione della luce determinata dall'intensità della fonte luminosa stessa in base al fuoco e alla distanza da un oggetto. Inoltre, la luce del giorno all'aperto deve simulare accuratamente la dispersione atmosferica, un compito complicato da riprodurre tridimensionalmente che condiziona sia l'illuminazione del cielo, non più piatta e uniforme, sia quella degli oggetti che si trovano al livello del terreno.
Altre tecniche di gestione dell'illuminazione sono mirate a gestire in modo diverso il comportamento della luce su certe superfici. Nel caso di MGS5 l'enfasi sembra concentrarsi su quelle non riflettenti, proseguendo un trend iniziato con la Screen-Space Ambient Occlusion (SSAO), che recentemente si è evoluta nelSingle Bounce GI che simula la luce sulle superfici lucide. Gli shader del FOX engine supportano infatti le translucenze, un effetto importante per dare a capelli pelle e vestiti una definizione la più accurata possibile in ogni condizione di illuminazione.
Quello che ci interessa spiegare è che anche l'irregolarità di una superficie renderizzata con il FOX Engine può essere alterata per dare all'oggetto un look bagnato, molto utile in certe scene piovose per simulare i liquidi senza che l'impatto computazionale arrivi a quello dell'acqua simulata tradizionalmente. Ciò che più conta è tuttavia la possibilità considerare l'irregolarità in base all'angolazione della luce e alla posizione della telecamera. Quindi un muro intonacato appare più chiaro e riflettente sull'angolo più lontano dove il punto focale è più stretto, che non in quello vicino dove l'apertura è più ampia e i contorni sono maggiormente visibili. Questo può risultare un dettaglio insignificante ma che in realtà fa una differenza enorme, evidente in particolare nella demo dell'ospedale dove lunghi corridoi sono illuminati da file di neon.
Allo stesso modo per cui il rendering differito pone le basi per la tecnica del linear-space lighting, quest'ultimo è a sua volta la struttura portante per una terza tecnica che Kojima Productions ha definito "physically-based rendering". Paroloni altisonanti che in realtà equivalgono al concetto di renderizzare texture, modelli e materiali usando dati di rifrazione della luce calcolati prendendo a riferimento un modello realmente esistente, quasi a simulare il comportamento della luce nella realtà.
"Devono essere eseguite catture con foto in 3D, rilevamenti laser e motion capture per creare asset dettagliati e realistici da inserire nel gioco."
La spiegazione relativamente semplice non deve trarre in inganno: l'implementazione pratica di questo metodo di rendering dipende da un'immensa mole di lavoro, visto che il concetto di "fotorealismo" viene preso molto seriamente dal team di sviluppo. Devono essere eseguite catture con foto in 3D, rilevamenti laser e motion capture per creare asset dettagliati e realistici da inserire nel gioco. E questo dev'essere fatto da numerose angolazioni per poi compilare un modello tridimensionale della scena usando un programma chiamato Photoscan.
Nel caso di singoli oggetti, le superfici vengono fotografate con un tempo di esposizione molto alto per preservare l'informazione sulla linearità della luce e dare una rappresentazione migliore di come l'occhio umano percepisca gli oggetti rispetto alla lente di una telecamera. Queste immagini vengono poi ripulite e importate in programmi come Marvelous Designer, che permettono di realizzare un design complesso degli abiti incluse pieghe, risvolti, cuciture e così via.
Ecco perché il linear-space lighting è importante: usando asset presi dalla realtà è possibile riprodurre un ambiente tridimensionale già caratterizzato dall'illuminazione nelle prime fasi della sua creazione e non solo dopo la sua realizzazione tridimensionale. L'effetto tipico di molti giochi è quello di far sembrare le texture fuori posto, una conseguenza dei riflessi speculari usati su texture piatte che fanno rimbalzare la luce in una sola direzione. La rifrazione diffusa del rendering differito invece permette di "spandere" la luce quando tocca un oggetto irregolare in varie direzioni, restituendo un effetto molto più complesso e realistico.
"La rifrazione diffusa del rendering invece permette di 'spandere' la luce quando tocca un oggetto irregolare in varie direzioni."
Quindi, più realistica è la superficie, più complesse e diffuse devono essere le mappature speculari e quindi è in questo campo che il rendering differito entra in gioco. Il FOX Engine immagazzina queste informazioni e altri parametri (tipo di luce, intensità, riverbero) nel G-buffer per produrre un solo rendering senza doverlo ripetere ogni volta.
Sicuramente l'intenzione di Kojima di arrivare al fotorealismo non è campata per aria, visto che qualcosa di grosso sta bollendo in pentola dal punto di vista tecnico. Siamo tuttavia all'inizio del progetto e prima di vedere le applicazioni pratiche di quanto presentato alla GDC, molte domande devono trovare risposta. Il fatto che la demo girasse su un PC ma al momento siano previste solo le versioni Xbox 360, PS3 e PS4 del gioco, ha fatto alzare qualche sopracciglio, considerando che nessuno sa esattamente quali saranno, se ci saranno, le differenze prestazionali tra i prossimi PC di fascia alta e le console della next-gen. Le demo precedenti del FOX Engine erano però state eseguite su PC di potenza equivalente a quella dell'attuale generazione console, i motivi per essere ottimisti ci sono quindi tutti.
Il dubbio più consistente riguarda poi la metodologia di lavoro da applicare al contesto. Un conto è infatti riprodurre con stupefacente attenzione al dettaglio una sala conferenze scarsamente arredata, un altro è applicare lo stesso approccio a uno spazio aperto molto ampio e diversificato. Nonostante questo, anche se Kojima è ormai noto ai più per le influenze cinematografiche degli ultimi MGS che non per il gameplay, bisogna dire che la serie raramente dal punto di vista tecnico non ha mantenuto le promesse, soprattutto a ogni cambio di hardware di riferimento. Se Kojima ha intenzione di puntare al PC come piattaforma di lancio, cosa che non ha mai fatto finora, Metal Gear Solid 5 poterebbe centrare l'obiettivo di arrivare a ridefinire il concetto di grafica 3D, o arrivarci molto vicino.
Traduzione a cura di Matteo "Elvin" Lorenzetti