Microsoft introduce le DirectX Raytracing: rivoluzioneranno la grafica dei giochi

20 Marzo 2018 57

Nel corso della Game Developer Conference che si sta svolgendo in questi giorni a San Francisco, Microsoft ha annunciato un nuovo componente per DirectX12, DirectX Raytracing (DXR). La nuova API rende possibile il raytracing con accelerazione hardware per le applicazioni DirectX e, di fatto, apre a nuovi scenari per quanto riguarda i futuri videogiochi che saranno caratterizzati da una illuminazione, ombre e render dei materiali estremamente realistici. Col passare del tempo questa tecnologia potrebbe consentire di avere all'interno dei videogiochi sequenze di fotogrammi con lo stesso realismo che troviamo nelle ricostruzioni digitali di alcune scene dei più recenti film. Ma facciamo un passetto indietro per capire meglio di cosa stiamo parlando.

Qualunque sia la GPU in vostro possesso, che sia l'incredibile Nvidia Titan V da 3.000 e più euro o la GPU integrata in un qualsiasi SoC, anche di fascia bassa, i principi base della grafica 3D non sono cambiati. Pur essendo molti gli aspetti legati alle schede grafiche che si sono evoluti nel tempo, infatti, si basa sempre tutto su un unico principio comune: la rasterizzazione.

COME FUNZIONA AD OGGI

Attualmente una scena 3D è composta da diversi elementi: abbiamo i modelli 3D, costruiti con triangoli con texture applicate ad ogni singolo triangolo, ci sono le luci che illuminano gli oggetti della scena e c'è una telecamera che osserva la scena da una particolare angolazione. Fondamentalmente, nel processo chiamato rasterizzazione la telecamera rappresenta una griglia di pixel, o un raster - da qui il nome del processo - che avanza all'interno della scena e colora i pixel man mano che questi incontrano i triangoli che compongono i modelli 3D di cui sopra. Il processo funziona partendo dal fondo della scena e quindi colorando prima i pixel più lontani e poi quelli più vicini.

Questo processo detto back-to-front è basato quindi sulla sovrascrittura ed è anche noto come algoritmo del pittore, dalla tecnica utilizzata da Bob Ross che applicava lo stesso principio stendendo prima il cielo in lontananza e sovrascrivendolo con tutti gli altri elementi del paesaggio in ordine di lontananza.

Gran parte dello sviluppo delle GPU negli ultimi anni si è concentrato sull'ottimizzazione di questo processo, riducendo di volta in volta la quantità di pixel da calcolare. Ad esempio gli oggetti fuori dal campo visivo vengono automaticamente esclusi, cosi come le parti di un oggetto nascoste da altri oggetti. Dato che comunque i pixel che compongono quella porzione di oggetto non verranno visualizzati nel risultato finale, tanto vale non calcolarli nemmeno.

Le GPU sono quindi diventate sempre più complicate con vertex shader che elaborano il comportamento dei singoli triangoli, i geometry shader che creano nuovi triangoli, i pixel shader che modificano i pixel successivamente alla rasterizzazione e gli shader computazionali che eseguono calcoli fisici. Ma in tutto ciò il modello di funzionamento è rimasto lo stesso.

Il vantaggio della rasterizzazione è quello di poter essere eseguita velocemente; le ottimizzazioni che saltano i triangoli nascosti sono efficaci, riducono notevolmente il lavoro della GPU e la rasterizzazione permette anche alla GPU di calcolare i triangoli uno alla volta, senza doverli tenere tutti in memoria nello stesso momento.


Ma parliamo di un processo che ha comunque dei limiti legati alla fedeltà visiva. Ad esempio, un oggetto fuori dalla scena non verrà calcolato ma esso stesso può comunque influire nella scena stessa, magari perchè proietta un'ombra sul terreno. Oppure potrebbe dover comparire riflesso in una superficie lucida. Oppure una luce bianca che rimbalza su un oggetto rosso appena fuori dalla scena nella realtà dovrebbe influenzare l'illuminazione della stanza, che assumerebbe dei toni rosastri.

Alcuni di questi difetti vengono attualmente corretti con tecniche come la mappatura delle ombre, ma il risultato è che comunque le immagini rasterizzate finiscono per apparire differenti dalla realtà. In altre parole la rasterizzazione funziona in una maniera totalmente diversa rispetto alla visione umana.

Nella realtà i nostri occhi non proiettano una griglia di punti che assume colore e forme degli oggetti che ci circondano ma è piuttosto la luce dell'ambiente introno a noi che viene riflessa nei nostri occhi. E questa stessa luce può rimbalzare sugli oggetti, essere rifratta da una superficie o oscurata da un ostacolo per poi raggiungere i nostri occhi e formare l'immagine che il nostro campo visivo ci consente di osservare.

COSA CAMBIA CON IL RAYTRACING

Il raytracing è una tecnica per la produzione grafica che imita più da vicino il processo fisico che abbiamo appena descritto e che riguarda la tecnica di visione dell'occhio umano. A seconda dell'algoritmo utilizzato i raggi vengono proiettati da una sorgente, che può essere la telecamera stessa, rimbalzano sugli oggetti venendo tracciati in tutto il loro percorso finchè non raggiungono la fonte di luce.

Proiettare i raggi da ciascun pixel è meno complesso dal punto di vista del calcolo computazionale, ma proiettare delle sorgenti di luce nello spazio e fare in modo che siano questi stessi, modificati nella forma e nell'intensità, a ricostruire l'immagine permette di ottenere una qualità visiva nettamente superiore e di riprodurre effetti di luce più vicini alla realtà.

I motori di raytracing possono, in sostanza, produrre immagini fotorealistiche. Ed è proprio questo il motivo per cui è la tecnica utilizzata già oggi per produrre i rendering grafici all'interno dei film: le immagini a computer possono essere integrate con riprese live senza apparire finte. Con queste nuove DirectX, in sostanza, potremo avere questo fotorealismo anche all'interno dei videogiochi.

Il problema più grande di questa tecnica è la sua complessità dal punto di vista della potenza di calcolo necessaria. La rasterizzazione è stata infatti ormai ampiamente ottimizzata per cercare di limitare la quantità di lavoro che la GPU è chiamata a sopportare. Con la nuova tecnica questo tipo di ottimizzazione non funziona perchè, potenzialmente, ogni oggetto può contribuire all'immagine finale con un'ombra piuttosto che un riflesso, ed è quindi necessario calcolare tutti gli oggetti, anche quelli fuori dalla scena o nascosti.

Il problema non si pone se parliamo di produzioni cinematografiche: chi produce queste pellicole ha, infatti, a disposizione intere server farm utilizzate per calcolare in parallelo i singoli fotogrammi che andranno a comporre la scena finale. Mentre per i giochi costituisce un grosso ostacolo per il fatto che si hanno soltanto 16 millisecondi (per ottenere 60 fps), o anche meno, per calcolare ogni fotogramma.


Tuttavia le moderne GPU e quelle che arriveranno in futuro sono molto potenti e, anche se ancora non sono abbastanza veloci da poter gestire un flusso video interamente renderizzato utilizzando la tecnica del raytracing, specialmente su giochi molto complessi, possono già iniziare ad utilizzare una sorta di tecnica ibrida che unisce la rasterizzazione come la conosciamo noi con piccoli processi di raytracing.

Spieghiamoci meglio. Almeno per il momento lo scenario più probabile, e disponibile proprio grazie alle nuove DXR rilasciate da Microsoft, è quello di vedere una scena costruita utilizzando le API DirectX 3D 12 e il classico processo di rasterizzazione che viene trasmessa al raytracing e ottimizzata con i processi spiegati poco sopra.


In sostanza, gli sviluppatori possono proiettare raggi di luce all'interno della scena 3D già costruita e tracciare il loro percorso nella scena per creare effetti di luce e ombre più realistici. Quindi, almeno per ora, a causa della grande potenza di calcolo richiesta si potrà utilizzare il raytracing per coprire le lacune della rasterizzazione. Per quanto riguarda titoli interamente realizzati con la tecnica di raytracing occorrerà sicuramente attendere ancora qualche tempo.

Secondo quanto affermato da Microsoft, rudimenti di raytracing potranno essere sfruttati anche con l'hardware attualmente sul mercato. Per quanto riguarda il software, invece, sempre secondo quanto affermato dall'azienda di Redmond, EA con Frostbite, EPIC con Unreal Engine e Unity 3D con il proprio Unity potranno molto presto sfruttare le nuove API.

Tre fotocamere per il massimo divertimento e un hardware eccellente? Huawei Mate 20 Pro, in offerta oggi da Stockphone a 635 euro oppure da ePrice a 798 euro.

57

Commenti

Regolamento Commentando dichiaro di aver letto il regolamento e di essere a conoscenza delle informazioni e norme che regolano le discussioni sul sito. Clicca per info.
Caricamento in corso. Per commentare attendere...
Oliver Cervera

Figo! Qualcosa di bello e nuovo!

Boronius

Microsoft rivoluziona, due parole che valgono tutto il blog

mariano giusti

Complimenti per l’articolo, se aumentano gli articoli tecnici di questo tipo si alzerà molto il livello del portale.

Marco -

Ma che vecchietto! A quell'epoca usavo computer già da almeno 15 anni.... Sig

Marco -

Come sempre le prime schede a supportare una nuova tecnica saranno rese obsolete poco dopo. Ricordo le mystique con il 3d, rese obsolete da 3dfx voodoo o successivamente le prime nvidia con t&l, superate prima che si iniziasse davvero a sfruttare questa tecnologia nei games.

Chi ha una 1080ti o anche qualcosa meno sarà più che a posto per i prossimi 2-3 anni. Salterà una generazione e poi se vorrà il massimo sempre potrà passare alla serie 3000 o come la chiameranno...

kesy85

Finchè vendono bene a cifre sempre più alte e AMD non gli si contrappone nel settore entusiast la vedo molto dura, temo che uscirà una sola scheda serie 2000 con nome titan o qualcosa di simile e prezzo esorbitante, un po'un bis della 1080ti / 1070ti. Loro nel breve guadagnano uguale grazie ai prezzi pompati ma nel frattempo ci affamano in modo da crollare tutti all'uscita della prima scheda con rapporto prezzo - prestazioni decente. Ovviamente questa è la mia opinione, poi magari escono tutte insieme dopodomani

Paul

D'accordo

ijskdldsad

Ottima spiegazione. Ho studiato queste 2 tecniche e implementato 2 giochi usando entrambe (sempre per il corso universitario), e' un tema molto interessante!

kesy85

non se ne parla per almeno 5-10 anni, ora che adeguano i motori di rendering, il supporto software per la modalità ibrida già ce l'hanno tutti, la potenza hw per gestirlo interamente invece è ancora lontanuccia, direi che durerà più o meno quanto potrà durare una 980 o una 2080 (che magari ha hw specifico ma cmq non affinato e performante) cioè sta cosa non influisce

DiRavello

eppure quel divano non mi è nuovo....

hammyboy

si forse mi confondo :)

Vincenzo Caputo

Tu si che mi capisci! https://uploads.disquscdn.c...

italba

Il ray-tracing, a quanto ne so, si è sempre fatto all'inverso, dallo spettatore verso la scena. Probabilmente ti stai confondendo con gli altri tipi di shading

Top Cat

Molto grossolana.

mat

Remedy ha rilasciato un video in cui si vede l'attuale implementazione di questo sistema: https://youtu.be/70W2aFr5-Xk
Purtroppo non si sa l'hardware utilizzato.
Rimane comunque un progetto di lunga durata, prima di avere un gioco intero renderizzato così ci vorranno anni.

hammyboy

Vero, anche se in passato era il contrario. Poi per evitare di sprecare milioni di raggi che non finiscono nella visuale credo sia stata ottimizzata come è ora. Spero di ricordare bene.

italba

Correzione, non è vero che "i raggi di luce vengono proiettati dalla sorgente e rimbalzano sugli oggetti della scena finchè non colpiscono la telecamera.", ma si fa esattamente l'opposto, i raggi vengono fatti partire dalla telecamera e tracciati in tutti i loro rimbalzi sui vari oggetti finché non incontrano una sorgente di luce, o lo sfondo

Paul

Io capisco che per questa architettura ci vorranno le nuove schede video. La 1080 forse dura un po' ma non molto!

acitre

La prima 3dfx (e la seconda in SLI) dovrei avera ancora da qualche parte :'(

makeka94

Leggi su era una battuta =)

kesy85

Domandona da 1 milione di dollari, secondo me dipende da quanti raggi deve tracciare (quindi quante luci ci sono in una scena e quanto dettagliata è la loro emissione in raggi) e per quanti rimbalzi seguirli, diciamo che con una scena comune, un motore ben bilanciato ( che non si perde a seguire raggi inutili grazie a trick vari) e un hw ottimizzato/specifico secondo me basta un 2/4 volte, dopo tutto con cose molto basilari era già stato presentato nel 2012 https : / / www . theverge . com /2012/5/15/3022837/nvidia-kepler-gpu-video-demo

deepdark

Oltre alla potenza bruta, immagino serva una gran quantità di memoria.

Gianni Papera

ergo tra qualche anno neanche le comprerai le GPU sarà tutto Cloud.

manu1234

esatto, l'hardware progettato per il software è la cosa migliore che ci sia, invece del contrario. per questo one x da questi risultati pur avendo una cpu scrausa

Gianni Papera

Esatto, un po' come la tessellation che ha reso performanti anche GPU scrause.

Ricordo anni fa quando il bus di memoria sulle GPU era tutto, adesso ci sono GPU con bus da 128bit che girano benissimo.

Raffael

Davvero interessantissime! è vero che, per ora sono per le 1080, ma, in futuro, arriveranno (o almeno si spera) sicuramente anche per soluzioni medio-alte

Juanito82

Cambia anche se la scena è all'aperto o al chiuso.
Ci sono mille fattori, il tipo faceva una stima grossolana

Top Cat

Hai centrato il punto.

Top Cat

Ti vorrei sottolineare che se la scena fosse più grande, tutti gli oggetti verrebbereo rappresentati e tutti interagirebbero in un modo o nell'altro.

Ci vorrebbe una potenza enorme.

Juanito82

Un po' di tempo fa lessi un'intervista a qualche sviluppatore di videogiochi credo, che parlava di circa 40tflops per avere una scena fotorealistica, ma molto dipende anche da cosa fa l'hw e come lo fa

Matteo

si si, appunto, un utilizzo parallelo potrebbe compensare (se non in toto, almeno in parte) la richiesta di risorse

Top Cat

Infatti, non vedi come è tutto bitorzoluto.
E' duro per un divano sopportare simili durezze!

manu1234

possono essere usati insieme, ma non sono collegati

Matteo

Che sia collegato al brevetto MS per la previsione dei fotogrammi?

 https://mobile.hdblog.it/2018/02/22/microsoft-research-raven-consumo-giochi-smartphone/
manu1234

quello che sarà insomma ahahah

Anthony

non gtx 2050?

manu1234

non è tanto un fatto di potenza, ma di architettura studiata apposta per farlo. sono sicuro che una eventuale gtx 1150 sarà in grado di farlo pur essendo meno potente di una 1080

bda94

E gli han dato troppe botte :D

Vincenzo Caputo

Ma come, il fotorealismo non era arrivato con i 32 bit delle TNT2?
Come sono vecchietto! :D :D :D

Michel

Per avere rendering realtime per videogiochi usando il raytracing credo ce ne voglia ancora molto. In genere ogni frame (a seconda della risoluzione, numero di raggi e molto altro) può andare da qualche minuto a diverse ore (un film della Pixar può richiedere fino 20-30 ore a frame per il rendering. Loro usano renderfarm per i render ovviamente). Per adesso, questo è un buon inizio comunque

Top Cat

Ma il divano non ti sembra un pò troppo schiacciato?

Top Cat

Allora grazie!
(Io ce l'ho! Io ce l'ho!)

Top Cat

Credo ci vorrà almeno un una 1080X100 e minimo 12 TB di Videoram.
A essere parsimoniosi!

makeka94

Voleva essere una battuta, leggi su

makeka94

Voleva essere una battuta, sto ancora aspettando vulcan / dx12

makeka94

Voleva essere una battuta, sto ancora aspettando vulcan

Giardiniere Willy

Direi che è pure ottimistica come data

Leox91

Eeeeehhhhh, finché non escono giochi ne passano due o tre anni, e la tua sk sarà comunque obsoleta per allora :)

B!G Ph4Rm4

Prendendo come riferimento una GTX 1080, quanta altra potenza serve per effettuare un raytracing totale?
2, 3, 10 volte di piu?
E quanta memoria occupa?

deepdark

Si ma ne passerà di tempo prima che avranno la potenza necessaria.

Huawei MateBook: X Pro 2019 e 14 ufficiali, prezzi Italia del 13 | VIDEO

Recensione Lenovo Yoga Book C930: il ritorno del convertibile 4 in 1

Devolo Magic 2: Powerline a 2400 Mbps e Wi-Fi Mesh | Video

Xiaomi Notebook Pro e MacOS: binomio possibile? Video