Ludomedia è il social network per chi ama i videogiochi. Iscriviti per scoprire un nuovo modo di vivere la tua passione.

Ray tracing e l'importanza della luce nei videogiochi

Per approfondire:
PS5 prime impressioni: si prospetta una Next Gen di tutto rispetto?



Alla GDC 2018 (Game Developers Conference), NVIDIA annunciò finalmente RTX. Tecnologia per il ray tracing nei videogiochi che 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 utilizzare un motore di rendering in real time avrà sicuramente provato un piccolo moto di derisione, dati i mille problemi molto più pratici che sono 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. 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, con l'ago della bilancia che fa scegliere una scheda video piuttosto che un'altra, a simboleggiare un'innovazione incredibile, senza precedenti. 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 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 affatto, 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.



https://ilovevg.it/wp-content/uploads/2019/10/ray_tracing_videogiochi_unity.jpg



L'immagine più a sinistra mostra il risulato di un render senza la procedura di baking. E' possibile notare come l'immagine sia completamente irreale, priva di contesto e profondità. Ma se si aggiungono le lightmaps prodotte dal baking il discorso cambia.



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 QuakeJS online, 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.



Una mera questione di potenza



Per approfondire:
PlayStation VR: La Realtà Virtuale un anno dopo



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 con l'environment privo di qualsiasi animazione. Se per esempio il nostro personaggio cammina sopra ad una pozzanghera, essa non potrà rifletterne naturalmente l'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 sia per tutte le luci, che 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'ombra che i raggi di luce generano quando colpiscono un oggetto, sia statico che in movimento

Continua la lettura su ilovevg.it

2 novembre 2019 alle 14:40

Piace a 2 persone