DirectX Raytracing (DXR) Tier 1.1 Nye funktioner kan fungere med bare driverunderstøttelse uden tung hardwareændring
Ray Tracing er bestemt en funktion, som spillere, især med avancerede grafikkort fra NVIDIA og AMD, venter på. Ledende producenter af GPU'er, som snart også inkluderer Intel, bygger aktivt deres hardware til at understøtte den funktion, der realistisk gengiver lys- og skyggeeffekter baseret på de fysiske love i fysikken og bringer hyperrealistiske og fordybende billeder.
I mellemtiden sikrer Microsoft, at Windows OS-økosystemet er velegnet som en ideel platform til at spille high-end-spil. Virksomhedens DirectX-platform, der længe har været en førende standard for desktop-spil, bliver tweaked for at understøtte og endda øge 'Real-time Ray Tracing'. Faktisk er DirectX Raytracing (DXR) Tier 1.1 den nyeste standard, der understøtter et sæt nye funktioner. Nogle af de spændende funktioner, som strålesporing i realtid kan understøtte i nærfunktionen, inkluderer indbygget strålesporing, DispatchRays () opkald via ExecuteIndirect (), Voksende tilstandsobjekter via AddToStateObject (), GeometryIndex () i raytracing shaders, og mere. Lad os se på nogle af de nye funktioner, som DirectX 12 til Windows 10 understøtter strålesporing.
Inline strålesporing:
En alternativ form for strålesporing, inline strålesporing bruger ikke nogen separate dynamiske skyggefulde eller skyggetabeller. API'et til funktionen skjuler adgang til accelerationsstrukturen (f.eks. Traversering af datastruktur, boks, trekantskæringspunkt). Dette overlader det i det væsentlige til hardware / driver. Interessant nok kan al den nødvendige appkode til håndtering af både opregnede kandidat-hits og resultatet af en forespørgsel (f.eks. Hit vs miss) være selvstændig i skyggen, der kører RayQuery.
Inline strålesporing giver udviklere mulighed for at presse på for flere strålesporingsprocesser i modsætning til at aflevere arbejdsplanlægning helt til systemet. Det er overflødigt at tilføje, at denne optimering af processer er ret nyttig for udviklere, der skubber med flere skygger. Desuden har udviklerne fuldstændig frihed til dynamisk at skifte til den integrerede form til enkle rekursive stråler.
DispatchRays () Opkald via ExecuteIndirect ():
Denne funktion gør det muligt for shaders på GPU'en at generere en liste over DispatchRays () opkald. Disse inkluderer individuelle parametre som trådantal, indstillinger for skyggetabeller og andre rodparameterindstillinger. Det bedste aspekt ved funktionen er, at hele listen kan udføres, uden at processen nogensinde har brug for en mellemretur tilbage til CPU'en.
Alle scenarier, der forbereder strålesporingsarbejde på GPU'en og derefter straks gyder det, skal have enorm fordel af funktionen. Det er overflødigt at tilføje, at denne funktion skal hjælpe meget med flere adaptive raytracing-scenarier, såsom skyggebaseret slagtning, sortering, klassificering og forfining.
Voksende tilstandsobjekter via AddToStateObject ():
En optimeringsfunktion, denne nye forsøger at reducere spildende behandlingstråde. En hel del apps og processer i dag skaber en fuldt befolket pipeline til strålesporing, der spilder en masse ressourcer og byrder for systemet. I øjeblikket analyserer D3D12-runtime stadig det fuldstatsobjekt, der oprettes ud af byggesten.
Selvom det er gjort for at kontrollere rigtigheden med AddToStateObject (), kan et nyt tilstandsobjekt oprettes ved at tilføje skyggelægere til et eksisterende skyggetilstandsobjekt. Det er overflødigt at tilføje, at CPU-omkostningerne kun forbliver proportionale med de data, der tilføjes.
GeometryIndex () I Ray Tracing Shaders:
Denne funktion gør det muligt for shaders at skelne mellem geometrier inden for accelerationsstrukturer på bundniveau. Tidligere kunne geometrier skelnes ved at variere data i skyggetabelregistreringer for hver geometri, men med den nye metode frigøres appen fra byrden. Desuden, hvis alle geometrier deler den samme skygge, kan appen vælge at indstille MultiplikatorForGeometryContributionToHitGroupIndex parameter til TraceRay () 0.
Dette vil i det væsentlige sikre, at geometriindekset ikke længere indgår i beregningen af indeksering af shader-tabel med fast funktion. Hvis det er nødvendigt eller ønsket, kan skyggerne stadig bruge GeometryIndex () at indeksere i appens egne datastrukturer.
Ud over de ovennævnte funktioner inkluderer DirectX Raytracing (DXR) Tier 1.1 også RAY_FLAG_SKIP_TRIANGLES og RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES flag. Mens disse flag er tilgængelige for individuelle raytracing-opkald, kan de også erklæres globalt via raytracing pipeline-konfiguration.
Det er klart, at Microsoft forsøger at optimere DirectX 12 til grafikintensive spil. Desuden, med strålesporing, der lover at være en af de vigtigste funktioner til avancerede spil og gamere, sikrer virksomheden, at systemet, CPU'en og GPU'en udnyttes optimalt med minimale afskedigelser.