Nové funkcie DirectX Raytracing (DXR) úrovne 1.1 môžu pracovať iba s podporou ovládačov bez náročných úprav hardvéru

Hardware / Nové funkcie DirectX Raytracing (DXR) úrovne 1.1 môžu pracovať iba s podporou ovládačov bez náročných úprav hardvéru 3 minúty prečítané

Xbox



Ray Tracing je určite funkcia, na ktorú hráči, najmä pri špičkových grafických kartách od NVIDIA a AMD, netrpezlivo čakajú. Poprední tvorcovia grafických procesorov, ktorých súčasťou čoskoro bude aj spoločnosť Intel, aktívne budujú svoj hardvér na podporu funkcie, ktorá realisticky vykresľuje svetelné a tieňové efekty na základe fyzikálnych zákonov v reálnom svete a prináša hyperrealistický a pohlcujúci vizuál.

Spoločnosť Microsoft medzitým zaisťuje, aby bol ekosystém Windows OS vhodný ako ideálna platforma na hranie špičkových hier. Platforma spoločnosti DirectX, ktorá je už dlho popredným štandardom pre stolné hry, sa vylepšuje, aby natívne podporovala a dokonca vylepšovala ‘Ray-Tracing v reálnom čase’. DirectX Raytracing (DXR) Tier 1.1 je v skutočnosti najnovší štandard, ktorý podporuje množinu nových funkcií. Niektoré zo zaujímavých funkcií, ktoré môže sledovanie lúčov v reálnom čase podporovať v blízkej funkcii, sú sledovanie lúčov inline, Volania DispatchRays () cez ExecuteIndirect () , Rastúce objekty stavu pomocou AddToStateObject () , GeometryIndex () v shaderoch sledujúcich lúče , a viac. Pozrime sa na niektoré z nových funkcií, ktoré DirectX 12 pre Windows 10 bude podporovať pre sledovanie lúčov.



Inline sledovanie lúčov:

Alternatívna forma sledovania lúčov, vložené sledovanie lúčov, nepoužíva žiadne samostatné dynamické shadery alebo tabuľky shaderov. Rozhranie API pre túto funkciu skrýva prístup k štruktúre zrýchlenia (napr. Prechod dátovej štruktúry, kríženie trojuholníka). To v podstate ponecháva na hardvér / ovládač. Je zaujímavé, že všetok potrebný kód aplikácie na spracovanie vyčíslených prístupov kandidáta a výsledku dotazu (napr. Zásah vs chýbanie) môže byť samostatný v shaderi riadiacom RayQuery .



Inline sledovanie lúčov ponúka vývojárom možnosť presadiť viac procesov sledovania lúčov, na rozdiel od úplného odovzdania plánovania práce do systému. Netreba dodávať, že táto optimalizácia procesov je celkom užitočná pre vývojárov, ktorí zápasia s viacerými tieňmi. Okrem toho majú vývojári úplnú slobodu dynamicky prepínať do inline formy pre jednoduché rekurzívne lúče.



Hovory DispatchRays () cez ExecuteIndirect ():

Táto funkcia umožňuje shaderom na GPU vygenerovať zoznam DispatchRays () hovory. Patria sem jednotlivé parametre, ako sú počty vlákien, nastavenia tabuľky shaderov a ďalšie nastavenia koreňových parametrov. Najlepším aspektom tejto vlastnosti je, že je možné vykonať celý zoznam bez toho, aby proces niekedy vyžadoval prechodnú cestu späť k CPU.



Všetky scenáre, ktoré pripravia raytracingové práce na GPU a potom ich okamžite vytvoria, by mali mať z tejto funkcie obrovský úžitok. Nie je potrebné dodávať, že táto funkcia by mala veľmi pomôcť pri niekoľkých scenároch adaptívneho sledovania lúčov, ako je utratenie založené na shaderoch, triedenie, klasifikácia a vylepšenie.

Rastúce štátne objekty pomocou AddToStateObject ():

Táto nová optimalizačná funkcia sa pokúša znížiť zbytočné vlákna spracovania. Pomerne veľa aplikácií a procesov dnes vytvára plne osídlené potrubie na sledovanie lúčov, ktoré zbytočne míňa zdroje a zaťažuje systém. V súčasnosti runtime D3D12 stále analyzuje objekt v úplnom stave, ktorý sa vytvára zo stavebných blokov.

Aj keď sa to robí na overenie správnosti, s AddToStateObject () , nový stavový objekt je možné vytvoriť pridaním shaderov k existujúcemu objektu shaderu. Nie je potrebné dodávať, že réžia CPU zostane proporcionálna iba k pridávaným údajom.

GeometryIndex () v shaderoch sledovania lúčov:

Táto vlastnosť umožňuje shaderom rozlíšiť geometrie v rámci štruktúr zrýchlenia spodnej úrovne. Predtým sa dali geometrie rozlíšiť tak, že sa v záznamoch tabuľky shaderov pre každú geometriu menili údaje, ale s novou metódou sa aplikácia zbaví záťaže. Ak navyše všetky geometrie zdieľajú rovnaký shader, aplikácia sa môže rozhodnúť nastaviť MultiplierForGeometryContributionToHitGroupIndex parameter do TraceRay () 0.

Tým sa v podstate zabezpečí, že index geometrie už nebude zohľadňovať výpočet indexovania tabuľky shaderu s pevnou funkciou. V prípade potreby alebo želania môžu byť tieňovače použité GeometryIndex () indexovať do vlastných dátových štruktúr aplikácie.

Okrem vyššie spomenutých funkcií obsahuje aj DirectX Raytracing (DXR) Tier 1.1 RAY_FLAG_SKIP_TRIANGLES a RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES vlajky. Aj keď sú tieto príznaky dostupné pre jednotlivé volania raytracingu, môžu byť tiež globálne deklarované prostredníctvom konfigurácie potrubia raytracingu.

Je dosť zrejmé, že Microsoft sa snaží optimalizovať DirectX 12 pre hry náročné na grafiku. Navyše, s ray tracingom sľubujúcim, že bude jednou z najdôležitejších funkcií pre špičkové hry a hráčov, spoločnosť zaisťuje, aby systém, CPU a GPU sú optimálne využité s minimálnym prepúšťaním.

Značky directx nvidia raytracing RTX