DirectX Raytracing (DXR) Tier 1.1 Noile caracteristici pot funcționa doar cu suport pentru driver fără modificări hardware grele

Hardware / DirectX Raytracing (DXR) Tier 1.1 Noile caracteristici pot funcționa doar cu suport pentru driver fără modificări hardware grele 3 minute citite

Xbox



Ray Tracing este cu siguranță o caracteristică pe care jucătorii, în special cu plăcile grafice high-end de la NVIDIA și AMD, o așteaptă cu nerăbdare. Principalii producători de GPU-uri, care vor include în curând și Intel, își construiesc în mod activ hardware-ul pentru a susține caracteristica care redă în mod realist efectele de lumină și umbră pe baza legilor din fizică din lumea reală și aduce imagini hiper-realiste și captivante.

Între timp, Microsoft se asigură că ecosistemul sistemului de operare Windows este bine adaptat ca platformă ideală pentru a juca jocuri high-end. Platforma companiei DirectX, care a fost mult timp un standard de vârf pentru jocurile desktop, este modificată pentru a sprijini în mod nativ și chiar pentru a spori „Real-time Ray Tracing”. De fapt, DirectX Raytracing (DXR) Tier 1.1 este cel mai recent standard care acceptă un set de noi caracteristici. Unele dintre caracteristicile interesante pe care le-ar putea susține în timp real urmărirea razelor în funcția apropiată includ urmărirea razelor în linie, Apeluri DispatchRays () prin ExecuteIndirect () , Obiecte de stare în creștere prin AddToStateObject () , GeometryIndex () în umbrele de raytracing , și altele. Să ne uităm la unele dintre noile caracteristici pe care DirectX 12 pentru Windows 10 le va suporta pentru urmărirea razelor.



Urmărirea razelor în linie:

O formă alternativă de urmărire a razelor, urmărirea razelor în linie nu folosește umbrere dinamice separate sau tabele de umbrire. API-ul pentru caracteristică ascunde accesul la structura de accelerație (de exemplu, traversarea structurii datelor, casetă, intersecție triunghiulară). Acest lucru îl lasă în esență hardware-ului / driverului. Interesant este că toate codurile de aplicație necesare pentru gestionarea atât a accesărilor candidate enumerate, cât și a rezultatului unei interogări (de exemplu, lovitură vs ratare) pot fi conținute de sine în shaderul care RayQuery .



Inline Ray Tracing oferă dezvoltatorilor opțiunea de a face mai multe procese de urmărire a razelor, spre deosebire de predarea completă a programării lucrărilor către sistem. Inutil să adăugăm, această optimizare a proceselor este destul de utilă pentru dezvoltatorii care se confruntă cu mai multe umbre. Mai mult, dezvoltatorii au libertatea completă de a trece dinamic la formularul în linie pentru raze recursive simple.



DispatchRays () Apeluri prin ExecuteIndirect ():

Această caracteristică permite umbrelor de pe GPU să genereze o listă de DispatchRays () apeluri. Acestea includ parametri individuali, cum ar fi numărul de fire, setările tabelelor de shader și alte setări ale parametrilor rădăcină. Cel mai bun aspect al funcției este că întreaga listă poate fi executată fără ca procesul să aibă nevoie vreodată de o întoarcere intermediară înapoi la CPU.



Toate scenariile care pregătesc raytracing-ul funcționează pe GPU și apoi îl generează imediat, ar trebui să beneficieze enorm de această funcție. Inutil să adăugăm, această caracteristică ar trebui să ajute foarte mult la mai multe scenarii adaptive de trasare a razelor, cum ar fi tăierea, sortarea, clasificarea și rafinarea pe bază de shader.

Obiecte de stare în creștere prin AddToStateObject ():

O caracteristică de optimizare, aceasta nouă încearcă să reducă firele de procesare risipitoare. Câteva aplicații și procese de astăzi creează o conductă de urmărire a razelor complet populată, care irosește o mulțime de resurse și împovărează sistemul. În prezent, runtime-ul D3D12 analizează încă obiectul de stare completă creat din blocuri.

Chiar dacă este făcut pentru a verifica corectitudinea, cu AddToStateObject () , un nou obiect de stare poate fi realizat prin adăugarea de umbrere la un obiect de stare de umbrire existent. Inutil să adăugați, cheltuielile generale ale procesorului vor rămâne proporționale numai cu datele adăugate.

GeometryIndex () În Ray Tracing Shaders:

Această caracteristică permite umbrelor să distingă geometriile în cadrul structurilor de accelerație de jos. Mai devreme, geometriile se puteau distinge prin date variabile în înregistrările tabelelor shader pentru fiecare geometrie, dar cu noua metodă, aplicația este eliberată de sarcină. Mai mult, dacă toate geometriile au același shader, aplicația poate alege să seteze MultiplierForGeometryContributionToHitGroupIndex parametru pentru TraceRay () 0.

Acest lucru va asigura, în esență, că indexul de geometrie nu mai este factor în calculul de indexare a tabelelor de shader cu funcție fixă. Totuși, dacă este necesar sau dorit, umbrele pot folosi GeometryIndex () pentru a indexa în propriile structuri de date ale aplicației.

În plus față de caracteristicile menționate anterior, DirectX Raytracing (DXR) Tier 1.1 include, de asemenea RAY_FLAG_SKIP_TRIANGLES și RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES steaguri. În timp ce aceste semnalizatoare sunt disponibile pentru apeluri individuale de raytracing, ele pot fi, de asemenea, declarate la nivel global prin configurația conductei raytracing.

Este clar că Microsoft încearcă să optimizeze DirectX 12 pentru jocurile cu intensitate grafică. Mai mult, având în vedere că ray tracing promite să fie una dintre cele mai importante caracteristici pentru jocurile și jucătorii de ultimă generație, compania se asigură că sistemul, procesorul și GPU sunt utilizate în mod optim cu concedieri minime.

Etichete directx nvidia raytracing RTX