Microsoft annuncia DirectX Raytracing

Microsoft annuncia DirectX Raytracing

L'annuncio fatto da Microsoft ieri al GDC rischia di rivoluzionare la storia della grafica. DirectX Raytracing è un grosso passo in avanti per le DirectX 12

di pubblicata il , alle 11:41 nel canale Schede Video
MicrosoftDirectXNVIDIAAMD
 

Nella lunga storia dell'evoluzione della grafica per computer, il raytracing è sempre stata considerata come la tecnica di rendering più efficiente per quanto riguarda la gestione dell'illuminazione e l'accuratezza visiva. Questo perché lavora similmente all'occhio umano o, per meglio dire, esattamente al contrario rispetto all'occhio umano. La tecnica di raytracing, infatti, proietta i raggi di luce dal punto di osservazione agli oggetti; i raggi poi rimbalzano dagli oggetti al resto della scena, determinando in ultima analisi le interazioni tra le fonti di luce e gli oggetti in un modo realistico.

La gestione di un così elevato numero di raggi di luce però richiede moltissime risorse di elaborazione, il che ha confinato il raytracing alle scene statiche o pre-renderizzate (pre-baked). Gli sviluppatori di giochi hanno usato il raytracing per renderizzare a monte alcuni contenuti di gioco per poi inserirli in maniera statica nella scena finale. Gli esperti di grafica per computer, d'altronde, sanno bene come la componente dell'illuminazione sia in assoluto la più importante per quanto riguarda la qualità complessiva della scena.

DirectX Raytracing

Quando si sente parlare di DirectX 12 si ha la sensazione che si parli di una tecnologia relativamente nuova, ma in realtà il debutto delle ultime API di Microsoft risale a più di quattro anni fa. Questo perché, per una serie di motivazioni, l'adozione delle DirectX 12 è ancora agli inizi: le tempistiche di sviluppo dei software ottimizzati sono lunghe e lo stesso può dirsi sulla velocità di adozione del sistema operativo. Il team tecnico di Microsoft è però già al lavoro sulla prossima versione delle API, come ha rivelato al Game Developers Conference di San Francisco, e questa volta il focus principale sarà proprio sul Raytracing.

Durante una sessione a cui hanno partecipato anche alcuni partner hardware e software, Microsoft ha annunciato la nuova feature delle DirectX 12: le API saranno dunque in grado di gestire ray tracing via software e accelerato via hardware permettendo agli sviluppatori di implementare effetti grafici più accurati.

Lo scopo principale di Microsoft è quello di fornire agli sviluppatori una piattaforma standard per implementare il ray tracing in modo agevole per la GPU, sfruttando tutte le risorse di elaborazione a disposizione. Inoltre, come estensione del set di funzionalità DirectX 12 esistente, DXR è pensato per essere strettamente integrato alla rasterizzazione tradizionale, e consente agli sviluppatori di combinare le due tecniche di rendering in base alle proprie esigenze e di scegliere quella migliore in funzione delle prestazioni e degli effetti che consente di implementare.

Nel rendering abituale il motore grafico gestisce solamente pochi raggi luminosi, fondamentalmente uno per ogni fonte di luce. A differenza del raytracing si parte quindi dalla fonte di luce, piuttosto che dal punto di osservazione. Il raytracing, invece, prevede la gestione di un cospicuo numero di raggi, perché richiede un raggio per ogni singolo pixel presente sullo schermo: inoltre, questi raggi possono essere riflessi, rifratti e, infine, ricorsivamente rigenerati molte volte. Per ogni singolo pixel bisogna, inoltre, calcolare la quantità di luce e il colore determinando il tipo di rifrazione e la penetrazione all'interno dell'oggetto.

DirectX Raytracing

La consistente mole di calcoli alla base della tecnica di raytracing ha storicamente spinto gli sviluppatori a usare la rasterizzazione. Questa fondamentalmente semplifica la scena tridimensionale a un piano bidimensionale, riducendo le differenze in termini di spessore e di estensione di gran parte degli effetti grafici presenti. La proiezione di uno spazio 3D in un piano 2D comporta un'approssimazione delle luce e degli shader, che va in qualche modo compensata.

Per questi motivi negli ultimi anni si è cercato di unire i benefici delle due tecniche per combinarne i punti di forza, ovvero l'efficienza della pipeline di rendering esistente con la qualità del raytracing. Il modo più semplice è quello di rasterizzare una scena per averne una prima rappresentazione geometrica e poi illuminarla con il raytracing, per poi aggiungere uno strato di pixel shader per amalgamare i due lavori. Questo approccio sfrutta i punti di forza del ray tracing in termini di illuminazione e ombreggiatura, con un risultato finale molto accurato per quanto riguarda riflessi di luce, diffusione, occlusione ambientale e ombre.

DirectX Raytracing

Questo excursus per capire perché Microsoft con il nuovo supporto si stia innanzitutto concentrando sul rendere compatibile il nuovo approccio con le tecniche di rasterizzazione esistenti. L'architettura delle attuali GPU è talmente generica che gli sviluppatori possono implementare il raytracing tramite le attuali unità hardware adibite al calcolo degli shader (nello specifico via DirectCompute), ma in questo modo si perdono i benefici di un'eventuale unità di elaborazione espressamente dedicata al raytracing. All'interno delle DirectX 12, dunque, ci saranno nuovi comandi DXR e i produttori di schede video decideranno come gestirli via hardware o software. A ogni modo, le API di Microsoft lasceranno gli sviluppatori liberi di stabilire il loro approccio verso il raytracing, ovvero se gestirlo via software o tramite altre risorse hardware già disponibili o se sfruttare i nuovi comandi DXR con hardware dedicato.

Questo approccio di Microsoft consente agli sviluppatori di iniziare a lavorare sin da subito con il raytracing con l'hardware esistente. Inoltre, si tratta di un espediente che consentirà ai produttori di schede video di vendere le attuali GPU DX12 come soluzioni in grado di gestire il raytracing. Questo vuol dire che entro la fine dell'anno potremo vedere i primi videogiochi con supporto DXR e cominciare a capire quali saranno i benefici in termini di resa visiva.

Ci sono alcune parti del processo di raytracing che possono essere eseguite in hardware e altre funzioni che invece è conveniente gestire tramite gli attuali shader (fallback layer). Microsoft fornirà ai produttori di GPU gli strumenti per gestire questa convergenza e ridurre al minimo possibile la differenza prestazionale tra rasterizzazione e raytracing.

Microsoft non considera i nuovi comandi DXR come un motore primario delle DirectX 12, che rimangono quelli delegati alla grafica 3D e i compute engine, ma si tratta di un task secondario che può essere eseguito dagli altri motori, e questo fondamentalmente è propedeutico rispetto all'adozione in software del raytracing. Ci saranno nuovi tipi di shader per gestire il raytracing, ovvero ray-generation, closest-hit, any-hit e miss shader.

Partner di Microsoft è ovviamente NVIDIA, che sempre al GDC ha annunciato che supporterà l'accelerazione hardware di DXR attraverso la nuova tecnologia RTX. NVIDIA fa sapere che la nuova architettura Volta presenta hardware dedicato al raytracing non precedentemente annunciato, e allo stesso tempo è in grado di gestire il raytracing via software. Le architetture pre-Volta, invece, gestiranno il raytracing esclusivamente in software.

AMD ha invece fatto sapere di essere al lavoro con Microsoft per il rilascio di un driver che renda subito disponibile il raytracing con le attuali schede video, ma non è chiaro in quale parte il raytracing verrà gestito via hardware e in quale via software.

Gli sviluppatori possono iniziare a sfruttare i comandi DXR fin da subito attraverso la modalità sperimentale di Windows 10 Fall Creators Update.

Project PICA

Epic Games, Futuremark, DICE, Unity e Electronic Arts hanno già annunciato l'intenzione di implementare DXR all'interno dei loro motori grafici. Nessuna informazione invece è pervenuta circa Xbox One, anche se il supporto al raytracing per la console Microsoft dovrebbe comunque esserci, visto che tutte le novità grafiche provenienti da Redmond negli ultimi anni prima o poi sono arrivate anche su Xbox.

Certo è che gli annunci di Microsoft e NVIDIA al GDC vanno in direzione opposta rispetto alla filosofia delle recenti GPU, che sono andate sempre più verso l'eliminazione delle unità a funzione fissa.

Allo stesso tempo, però, il raytracing potrebbe rivoluzionare il modo di concepire la grafica nei videogiochi e la qualità dell'illuminazione. Avere un'unità hardware espressamente dedicata al raytracing in tutte le schede video, presto, potrebbe diventare obbligatorio. L'annuncio di Microsoft, per questi motivi, è veramente molto importante nella storia dell'evoluzione della grafica, e può comportare un rilancio nel percorso di continuo miglioramento che negli ultimi anni si è bruscamente interrotto.

12 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - info
cignox120 Marzo 2018, 11:48 #1
ERA ORAAAAAAA!
Non dico che siamo giá pronti per il Grande Salto, ma prima o poi si dovrá fare e il supporto da parte delle directX potrebbe certamente agevolare la transizione!
cignox120 Marzo 2018, 11:49 #2
ray-generation, closest-hit, any-hit e miss shader.

Gestisci questi bene bene via hw, e metá del lavoro (o quasi) é giá svolto
CrapaDiLegno20 Marzo 2018, 12:05 #3
NVIDIA fa sapere che la nuova architettura Volta presenta hardware dedicato al raytracing non precedentemente annunciato, e allo stesso tempo è in grado di gestire il raytracing via software.

Sì, vabbe', ma noi mortali quando avremo l'onore di vedere finalmente questa architettura nei nostri PC?

Ottimo tempismo comunque, tutta roba che comincerà ad essere presta in considerazione tra 4 o 5 anni, giusto quando cambierò la scheda grafica.
Cfranco20 Marzo 2018, 12:15 #4
Originariamente inviato da: Bivvoz
Proprio quando comincia a pensare che ci sia poco da migliorare nella grafica dei giochi calano l'asso e ti caricano una scimmia sulle spalle


Io non tratterrei il fiato più di tanto, i giochi al momento sono ancora fatti in DX9
Le novità DX ci mettono sempre molti anni prima di entrare a far parte dei motori grafici, e la prima generazione di schede video che supporta in HW tali effetti è sempre solo un' operazione di marketing che non comporta vantaggi per chi compra.
Alodesign20 Marzo 2018, 12:16 #5
Originariamente inviato da: CrapaDiLegno
Sì, vabbe', ma noi mortali quando avremo l'onore di vedere finalmente questa architettura nei nostri PC?

Ottimo tempismo comunque, tutta roba che comincerà ad essere presta in considerazione tra 4 o 5 anni, giusto quando cambierò la scheda grafica.


Visto che mi arrivano le newsletter da Unreal:

https://www.unrealengine.com/en-US/...-and-nvidia-rtx
Lampetto20 Marzo 2018, 12:23 #6
Originariamente inviato da: Alodesign
Visto che mi arrivano le newsletter da Unreal:

https://www.unrealengine.com/en-US/...-and-nvidia-rtx


Un Unreal Tournament in Ray Tracing non sarebbe male... ho qualche ricordo
CrapaDiLegno20 Marzo 2018, 12:24 #7
NVIDIA fa sapere che la nuova architettura Volta presenta hardware dedicato al raytracing non precedentemente annunciato, e allo stesso tempo è in grado di gestire il raytracing via software.

Che non vuol dire nulla come ogni annuncio markettaro.
Non è la manciata di pixel calcolati in ray tracing a fare la differenza, è la riscrittura del motore grafico intero a farla e questo avverrà, se va bene, in non meno di 4 anni.
Di patch e patchine che usano questo o quella nuova funzionalità ne abbiamo avute in abbondanza nel passato. E ne abbiamo ancora oggi evidenza con motori DX9/10 forse 11 che usano qualche funzionalità DX12 senza in verità apportare alcuna reale differenza.

Già mi aspetto gli annunci di motori esattamente uguali a quelli che abbiamo oggi dove "lo specchio è in raytracing", "la nebbia usa la modalità raytracing" (per costruire il cubo volumetrico poi ovviamente usato staticamente, magari giusto come miglioramento della tecnica dei Voxel), "il vasetto sul tavolino là in fondo ha riflessi raytracing", e cazzatine varie.
Per il raytracing permeante (non dico completo) ci vorranno anni. Giusto il tempo di un paio di generazioni di GPU. Da quel momento in poi si comincerà a ragionare su chi fa meglio cosa.
Varg8720 Marzo 2018, 12:58 #8
Originariamente inviato da: CrapaDiLegno
l'ha in fondo


Comboh!
CrapaDiLegno20 Marzo 2018, 13:08 #9
Originariamente inviato da: Varg87
Comboh!


xxxyyy20 Marzo 2018, 15:39 #10
Mi aiutate a dire Cyberpunk 2077 in raytracing, in realta' virtuale?

Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".

La discussione è consultabile anche qui, sul forum.
 
^