Alla GDC 2018 (Game Developers Conference), NVIDIA annunciò finalmente RTX. Tecnologia per il ray tracing nei videogiochi, mette a disposizione degli sviluppatori il rendering di livello cinematografico in tempo reale. Ed è stato divertente osservare come tutti i profili social dei più blasonati game engine non proprietari furono inondati da post inerenti al ray tracing, che ne garantivano il supporto immediato. A tale vista ogni sviluppatore minimamente abituato a utilizzare un motore di rendering in real time, avrà sicuramente provato un piccolo moto di derisione, dati i mille problemi molto più pratici che son soliti affliggere tali piattaforme da tempo immemore. Ma tutto ciò era inevitabile visto il clamore mediatico che tale tecnologia stava avendo da qualche tempo e che continua ad avere tutt’ora. Sul web sono ricercatissimi i video di Minecraft o di Battlefield con attivo il ray tracing, e nelle ultime settimane tale argomento è tornato alla ribalta con la conferma del suo supporto da parte di PS5.
Il ray tracing sembra essere la tecnologia del momento, l’ago della bilancia sulla scelta della scheda video da acquistare. Un’innovazione incredibile che tutti noi stavamo aspettando. Di sicuro lo è, ma se vi dicessi che le sue radici affondano già negli anni ’80? Che ormai da tempo sistemi di render offline, come Renderman della Pixar e gli stessi game engine in parte, supportano tale tecnologia? Partiamo dalle basi…
La luce al giorno d’oggi
Prendiamo ad esempio Unity, una delle piattoforme per lo sviluppo videoludico non proprietaria più diffusa al mondo. Tale ambiente permette agli sviluppatori di gestire l’illuminazione ambientale attraverso due principali tecniche, ovvero realtime lighting e baked lightmaps. La prima gestisce l’illuminazione diretta in tempo reale, ovvero il comportamento del materiale e dell’ombra di un oggetto 3D colpito direttamente da una fonte luminosa. Questa fonte può essere:
Point light: un punto luminoso che illumina l’ambiente ugualmente in ogni direzione, diminuendo di intensità mano a mano che ci si distanzia dal centro. Il comportamento classico di una lampadina;
Spot light: stesso principio della point light solamente costretto ad un cono luminoso. Pensate a un faro teatrale;
Directional light: luce che simula il comportamento del Sole, una fonte luminosa distantissima che illumina l’intero ambiente;
Area light: area rettangolare che emana luce solo da un lato e che si propaga via via diminuendo in tutte le direzioni. Simula il comportamento di una finestra;
Emissive materials: letteralmente un materiale che emette luce. Permette di far diventare fonte luminosa qualsiasi superficie 3D;
Ambient light: luce di fondo dell’intera scena. Non proviene da una fonte specifica ma “aleggia” nell’ambiente. Solitamente vengono usate particolari foto a 360° di un ambiente, chiamate HDRI, che portano informazioni luminose.
Non sono minuzie da sviluppatori...
Ognuna di queste luci presenti in scena, se gestita solamente attraverso il realtime lighting, fornisce agli oggetti e ai materiali le sole informazioni dirette, come intensità, colore, raggio, inclinazione eccetera. Dirette significa che non viene tenuto conto del comportamento fisico della luce, ovvero il fatto che i fotoni rimbalzino tra una superficie e l’altra, cambiando così ogni volta direzione, colore e intensità. E questo cosa significa? Significa che se un bicchiere viene appoggiato sopra a un tavolo di colore rosso, anche il bicchiere prenderà un leggera sfumatura di rosso, nonostante il materiale sia di vetro trasparente. Senza queste informazioni, che sembrano minuzie ma che in realtà non lo sono, non si potrebbe mai avere una resa fotorealistica. Il problema è che il calcolo dell’effettivo comportamento fisico della luce in tempo reale è(era) impossibile, poiché richiede(va) troppa potenza di calcolo. Come fare allora? Utilizzando le baked lightmaps.
Attraverso la procedura di baking, è possibile calcolare l’effettivo comportamento fisico della luce, indicando quali luci e oggetti coinvolgere. Ovviamente questa procedura non avviene in realtime, ma è precalcolata. Come per il rendering offline (il redering cinematografico per intenderci), l’operazione di baking impiega diverso tempo, durante il quale lo sviluppatore di turno può tranquillamente giocare a QuakeJSonline, senza che il proprio capo gli possa dire alcunché. Una volta conclusasi la procedura, vengono generate delle mappe di luce, contenenti riflessi, sfumature e ombre, le quali verranno renderizzate in realtime sopra le texture dei vari oggetti. Ciò permette di aumentare di molto la qualità e il fotorealismo dell’intera scena.
Ma se la procedura di baking già precalcola il comportamento esatto della luce, a che diamine serve il ray tracing? Come accennato sopra, l’algoritmo di calcolo del percorso fatto dalla luce, seguendone i raggi attraverso l’interazione con le superfici, è da tempo in mano agli sviluppatori. Da anni ormai le produzioni cinematografiche ne fanno ampio utilizzo, e anche i videogiochi non sono da meno. O quasi. Sì, perchè purtroppo la procedura di baking funziona solamente per gli oggetti statici, ovvero per l’environment privo di qualsiasi animazione. Se per esempio il nostro personaggio cammina sopra ad una pozzanghera, essa non potrà riflettere naturalmente il nostro aspetto (a meno di qualche barbatrucco dei programmatori).
Questo perché il nostro personaggio non è statico e non può essere incluso nel baking. Ed è proprio qui che si infila il ray tracing in tempo reale. Gli algoritmi di ray tracing nei videogiochi, ottimizzati per funzionare in real time, calcolano frame dopo frame la riflessione, la rifrazione e l’ombra che i raggi di luce generano quando colpiscono un oggetto, seguendone l’intero percorso, sia statico che in movimento. Questo per tutte le luci e per tutti gli oggetti in scena, sessanta volte al secondo. Dunque era solamente una questione di tempo. Tempo per permettere ai produttori di schede video di costruire architetture abbastanza potenti, in grado di processare quell’immane mole di calcoli, aiutate ovviamente da driver e algoritmi appositamente ottimizzati per il real time. Come è successo per la Realtà Virtuale.
Gli algoritmi di ray tracing calcolano la riflessione, la rifrazione e l'ombrache i raggi di luce generano quando colpiscono un oggetto, sia statico che in movimento
Con l’avvento del ray tracing in tempo reale nei videogiochi, la luce sta avendo finalmente la considerazione che gli spetta di diritto. Siamo sempre stati attenti alla qualità dei modelli e delle texture, delle animazioni e dei sistemi particellari, ma è la luce che lega il tutto per donare all’ambiente l’atmosfera desiderata. E’ la luce a rendere i materiali e le texture brillanti o opache; è la luce che, insinuandosi nelle piccole pieghe e cavità, esalta la definizione dei modelli. Non ce ne siamo forse mai accorti, ma essa è sempre stata lì ad emozionarci, a volte diventando essa stessa protagonista indiscussa. Pensate ad Insideper esempio. Durante il gioco, un occhio attento noterà subito che la qualità dei modelli e delle texture è molto buona, ma nulla a che vedere con una produzione AAA. Molti dei materiali sono privi di texture e i modelli dell’environment risultanto abbastanza squadrati.
La luce ha un incredibile potere emotivo...
Eppure è graficamente un gioco eccelso, che riesce a emozionarci come pochi. Questo perchè l’illuminazione da sola esalta tutti i componenti grafici, creando paesaggi dal fortissimo impatto emotivo. Come la cupa penombra del bosco nel quale silenti ci nascondiano, squarciata solamente dai fari luminosi della jeep dei nostri inseguitori. Le lunghe ombre degli schiavi deambulanti, che a ritmo di marcia si stagliano rigide tra un edificio e l’altro. Il bianco chiarore sfumato che dall’alto ci invita a raggiungerlo, per uscire dall’oscura pozza d’acqua nella quale ci siamo immersi così profondamente. Inside è un ottimo esempio di come la luce abbia avuto da sempre un incredibile potere emotivo, senza necessariamente dover scomodare complessi algoritmi di simulazione e potenze di calcolo di livello Titan. Ora, con l’arrivo del ray tracing nei videogiochi, essa non conoscerà più alcun confine. Maggiormente consapevoli della sua importanza, prepariamoci dunque a un luminoso rinascimento videoludico.
#LiveTheRebellion
Privacy & Cookies Policy
Privacy Overview
This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
#LiveTheRebellion