In vista dell'arrivo dei primi titoli costruiti fin dal principio con l'Unreal Engine 5 e non semplicemente convertiti come Fortnite, siamo tornati a parlare delle tecnologie in continua evoluzione dell'Unreal Engine 5, arrivato alla versione 5.2 e diretto verso la 5.3. Ma c'è spazio per addentrarci ulteriormente nei segreti del motore grafico alla base di molti dei titoli più attesi della prossima stagione videoludica, questa volta con un approfondimento dedicato al sistema di illuminazione Lumen e alle differenze tra il ray tracing ottimizzato dal sistema di illuminazione Epic e il ray tracing con accelerazione hardware che va tanto in voga in questi ultimi anni.
I segreti di Lumen
Per prima cosa è bene specificare che il sistema di illuminazione Lumen dell'Unreal Engine 5, integrato pienamente nel sempre più intuitivo editor del motore grafico, è un insieme di tecnologie pensato per gestire separatamente illuminazione globale (Lumen GI), riflessi (Lumen Reflections) e ombre (Lumen Virtual Shadow Maps). Inoltre, cosa ancora più importante, Lumen utilizza il ray tracing, senza dubbio la tecnologia più avanzata per riprodurre luci dinamiche realistiche. Ma non si tratta del pesante ray tracing hardware delle GPU AMD e NVIDIA delle ultime generazioni, pienamente supportato dal motore Epic qualora uno sviluppatore voglia utilizzarlo.
Per mantenere i vantaggi del ray tracing in funzione di un'illuminazione globale dinamica, riducendone però il peso sull'hardware, Epic ha puntato su una soluzione software ricorrendo a una serie di escamotage per renderlo estremamente digeribile dal metallo senza bisogno di core specializzati. Questo è un fattore importante per consentire la realizzazione, ovviamente con l'Unreal Engine 5, di giochi a mondo aperto di enormi dimensioni capaci di girare a 60 FPS sulle console della generazione attuale, dotate sì di hardware dedicato al ray tracing, ma piuttosto deboli nel calcolarlo. Ed è qui che entrano in campo una serie di trovate essenziali per rendere tutto questo possibile.
La prima cosa che fa Lumen GI è ricorrere allo Screen Space Tracing che utilizza il buffer di profondità ed è più limitato, ma grazie al supporto per qualsiasi tipo di geometria evita i problemi del ray tracing con i dettagli più piccoli. A questo punto la pipeline ibrida del sistema di illuminazione può passare al ray tracing hardware, che in questa sede non ci interessa, oppure al ray tracing software che ricorre a diversi metodi per risparmiare risorse.
Il sistema Signed Distance Field determina la qualità dell'illuminazione in base alla distanza delle mesh poligonali, utilizzando le Mesh Distance Field l'illuminazione sulla media distanza e il Distance Field Voxel per i grandi spazi aperti. Ma c'è un altro fattore che stabilisce complessità e ottimizzazione dell'illuminazione. Lumen infatti, effettua una sintesi in parametri di una scena per generare una Surface Cache che permette di calcolare rapidamente i punti di impatto delle luci e i materiali delle superfici che vanno a influenzare il comportamento dei raggi di luce. In questa fase vengono generati automaticamente 12 punti chiave per ogni mesh poligonale, chiamati Mesh Cards, ma è possibile aumentarne il numero per migliorare l'illuminazione o per adattarla a oggetti più complessi e superfici irregolari. Come per il numero di rimbalzi della luce, quindi, anche questo aspetto può essere tarato in funzione della resa o delle prestazioni.
Le semplificazioni, come vedremo, hanno conseguenze sulla qualità come nel caso delle tecnologie a basso impatto sull'hardware per differenziare nettamente l'illuminazione all'aperto da quella al chiuso, per gestire le trasparenze dei materiali e per la nebbia volumetrica. Ma parliamo di un'illuminazione globale che risulta ben più leggera del ray tracing, ma ne mantiene i capisaldi, compresa la possibilità di aumentare esponenzialmente il numero dei rimbalzi delle luci sulle diverse superfici, e punta comunque al realismo estremo. Inoltre la possibilità di aumentare la qualità dell'illuminazione lascia agli sviluppatori la libertà di adattare il sistema alle necessità specifiche di un gioco. Ma gli escamotage di Lumen non si fermano qui.
Ombre e riflessi
Come anticipato, Lumen è un insieme di tecnologie, con i riflessi che ricadono sotto il controllo di Lumen Reflections. Possono quindi essere gestite a parte anche se le tecnologie coinvolte non cambiano rispetto a Lumen GI e questo si traduce in riflessi che tengono conto dell'illuminazione globale, della luce del cielo, dei rivestimenti trasparenti e via dicendo. Inoltre dalla versione 5.1 dell'Unreal Engine, il sistema Reflections gestisce anche le superfici a specchio, compresi i liquidi (Single Layer Water), cosa che ha eliminato la necessità di usare screen space, trucchi come l'uso di telecamere apposite per riprodurre un'immagine speculare o il più fedele ma anche più pesante ray tracing hardware.
Parliamo infine di un sistema diverso per la gestione delle ombre, anche se le tecniche utilizzate sono familiari. Per le Virtual Shadow Maps infatti, la metodologia per ottenere un effetto realistico risparmiando risorse è la stessa che è stata e viene utilizzata con altre tecnologie. Si parte infatti da una mappatura iniziale di qualità elevatissima, in questo caso delle ombre che hanno una risoluzione virtuale di 16.000 x 16.000 pixel, che viene poi spezzettata in pagine da 128 x 128 pixel ciascuna che vengono renderizzate solo quando è necessario. Rientra in campo invece il ray tracing per quanto riguarda le ombre soffuse con un algoritmo dedicato chiamato Shadow Map Ray Tracing (SMRT) che riproduce correttamente la trasformazione delle ombre da nette a morbide quando si allontanano dall'oggetto che le produce. Inoltre lo stesso algoritmo gestisce la penombra garantendo un effetto realistico, ma comporta alcuni compromessi rilevanti dovuti alla dipendenza dal sistema Virtual Shadow Maps.
Lumen vs ray tracing hardware
Come anticipato, Lumen è un insieme di tecniche di ray tracing pensate per garantire un colpo d'occhio fotorealistico con un impatto sulle prestazioni decisamente inferiore rispetto al ray tracing hardware o, ancora peggio, al path tracing. Certo, gli escamotage comportano compromessi qualitativi, qualche limitazione e qualche problema, ma parliamo di un sistema pensato per integrarsi in un motore grafico dalle grandi possibilità e che promette un colpo d'occhio mozzafiato senza mettere alle strette l'hardware. Il tutto con una scalabilità elevata e un sacco di opzioni per incrementare o diminuire la qualità dei vari effetti. Inoltre, l'abbiamo già detto, la pipeline ibrida di Lumen può utilizzare anche il classico ray tracing hardware se lo sviluppatore ha quell'interesse. Ma è chiaro che il punto di forza è il ray tracing software e in quest'ottica vale la pena riassumere alcuni dei problemi più rilevanti.
La qualità, lo diciamo subito, non è un vero problema. D'altronde Lumen nasce dalla volontà di ottimizzare al massimo il ray tracing anche per garantire un'illuminazione di grande effetto in mappe dettagliatissime e caratterizzate da una distanza visiva elevatissima. Non proprio un compito facile che comporta qualche compromesso. Inoltre si tratta di una tecnologia in continua evoluzione, come dimostrano le migliorie introdotte con l'Unreal Engine 5.2, anche se l'effetto d'insieme era già eccezionale ai tempi della demo di The Matrix Awakens.
Restano, però, dei problemi pratici, a partire dalle difficoltà con le grandi mesh poligonali. Il sistema Surface Cache infatti, funziona al meglio, a causa delle Mesh Cards, quando ci sono più oggetti e superfici. Di conseguenza è necessario un lavoro maggiore sulla modellazione degli ambienti e quando lo stesso sistema è sfruttato per i riflessi comporta una perdita di definizione. Inoltre il sistema basato sulle Mesh Distance Fields ha limiti con geometrie estremamente complesse così come con oggetti troppi piccoli che invece di restituire riflessi restituiscono superfici nere.
Anche per quanto riguarda le ombre ci sono pro e contro. Il vantaggio maggiore è quello di poter partire da Virtual Shadow Maps di alta qualità. Ma il fatto che siano renderizzate a partire da un singolo punto causa qualche problema con le ombre soffuse. Da qui la necessità di limitare il raggio di ampiezza delle zone di penombra per evitare anomalie e artefatti. Anche in questo caso però, si tratta di problemi risolvibili per una tecnologia pensata per integrarsi con un motore grafico complesso e che tra l'altro, sempre parlando di ombre, pur non arrivando all'accuratezza e alla ricchezza del ray tracing, garantisce un intervallo dinamico superiore e, grazie alle tecnologie di supporto, luci ambientali eccellenti tra bagliori, rifrazioni accurate e lo stacco realistico tra interni ed esterni.
Del tutto diversa la questione del path tracing, l'espressione massima del ray tracing hardware che può essere applicata anche a titoli basati su motori antidiluviani. Questa feature ha debuttato con Cyberpunk 2077, ed è l'ultima frontiera dell'illuminazione realistica, per quanto sia basata su algoritmi che hanno parecchi anni sulle spalle. Può infatti essere utilizzato per gestire l'intero spettro degli effetti luminosi, a partire dalle ombre per arrivare alla diffusione dei colori attraverso i rimbalzi di milioni di raggi di luce, il tutto con una qualità elevatissima. Ma anche in questo caso ci sono un paio di problemi rilevanti.
A seconda del motore grafico gli effetti in ray tracing possono risultare poco evidenti e apportare all'immagine poche migliorie in più rispetto a un sistema di illuminazione dinamico. Risulta quindi più difficile giustificare il peso che comporta la pesante tecnologia per l'hardware, tanto da essere ingestibile senza upscaling, almeno con un titolo come Cyberpunk 2077. Ed è qui che entra in campo Lumen con il suo bagaglio di compromessi, ma che possiede la forza delle ottimizzazioni legate ad un motore grafico utilizzato anche per una miriade di serie TV e già implementato in Fortnite grazie alla totale compatibilità con la versione precedente.
Certo, Fortnite è una conversione dall'Unreal Engine 4 e la grafica cartoon dello sparatutto non punta certo al realismo, ma gli effetti del passaggio all'Unreal Engine 5 si vedono tutti e ci sarà sicuramente modo per il motore, di mostrare i muscoli nella valanga di giochi in arrivo nei prossimi mesi e anni. Nel mucchio ci sono sia sorprese destinate a diventare giochi come Unrecord, sia pezzi da novanta come Awoved, la prossima trilogia di The Witcher, S.T.A.L.K.E.R. 2, Black Myth: Wukong, Dragon Quest XII: The Flames Of Fate, Senua's Saga: Hellblade II, The First Descendant, Kingdom Hearts 4, Tekken 8, il nuovo FPS Respawn e forse anche il prossimo progetto di Bungie e l'Indiana Jones di Bethesda.