DirectX Raytracing (DXR) Tier 1.1 Nya funktioner kan fungera med bara drivrutinsstöd utan tung hårdvaruändring

Hårdvara / DirectX Raytracing (DXR) Tier 1.1 Nya funktioner kan fungera med bara drivrutinsstöd utan tung hårdvaruändring 3 minuter läst

Xbox



Ray Tracing är verkligen en funktion som spelare, särskilt med avancerade grafikkort från NVIDIA och AMD, väntar ivrigt på. Ledande tillverkare av GPU: er, som snart även kommer att inkludera Intel, bygger aktivt sin hårdvara för att stödja funktionen som realistiskt återger ljus- och skuggeffekter baserat på fysikens verkliga lagar och ger hyperrealistiska och uppslukande bilder.

Under tiden säkerställer Microsoft att Windows OS-ekosystemet är väl lämpligt som en idealisk plattform för att spela avancerade spel. Företagets DirectX-plattform, som länge har varit en ledande standard för skrivbordsspel, justeras för att stödja och till och med förstärka 'Real-time Ray Tracing'. Faktum är att DirectX Raytracing (DXR) Tier 1.1 är den senaste standarden som stöder en uppsättning nya funktioner. Några av de spännande funktionerna som strålspårning i realtid kan stödja i den närmaste funktionen inkluderar inline strålspårning, DispatchRays () -samtal via ExecuteIndirect () , Växande tillståndsobjekt via AddToStateObject () , GeometryIndex () i raytracing-skuggor , och mer. Låt oss titta på några av de nya funktionerna som DirectX 12 för Windows 10 stöder för strålspårning.



Inline Ray Tracing:

En alternativ form av strålspårning, inline strålspårning använder inga separata dynamiska skuggor eller skuggbord. API: et för funktionen döljer åtkomst till accelerationsstrukturen (t.ex. datastrukturgenomgång, ruta, triangelkorsning). Detta lämnar i princip det till hårdvaran / drivrutinen. Intressant är att all nödvändig appkod för hantering av både uppräknade kandidatträffar och resultatet av en fråga (t.ex. träff vs miss) kan vara fristående i skuggningen som driver RayQuery .



Inline strålespårning ger utvecklare möjlighet att driva på fler strålespårningsprocesser, i motsats till att överlämna arbetsplanering helt till systemet. Det behöver inte läggas till att den här optimeringen av processer är ganska användbar för utvecklare som tappar med flera skuggor. Dessutom har utvecklarna fullständig frihet att dynamiskt växla till den inbyggda formen för enkla rekursiva strålar.



DispatchRays () Samtal via ExecuteIndirect ():

Den här funktionen gör det möjligt för shaders på GPU: n att skapa en lista över DispatchRays () samtal. Dessa inkluderar enskilda parametrar som trådräkning, skuggningstabellinställningar och andra rootparameterinställningar. Den bästa aspekten av funktionen är att hela listan kan köras utan att processen någonsin behöver en mellanliggande returresa till CPU: n.



Alla scenarier som förbereder strålspårningsarbete på GPU: n och sedan omedelbart skapar det, bör ha enorm nytta av funktionen. Det behöver inte läggas till att den här funktionen ska hjälpa mycket med flera adaptiva raytracing-scenarier som skuggbaserad nedslagning, sortering, klassificering och förfining.

Växande tillståndsobjekt via AddToStateObject ():

En optimeringsfunktion, den här nya försöker minska slösaktiga bearbetningstrådar. En hel del appar och processer idag skapar en fullbefolkad pipeline för strålspårning, som slösar bort mycket resurser och belastar systemet. För närvarande analyserar D3D12-körtiden fortfarande hela tillståndsobjektet som skapas av byggstenar.

Även om det görs för att verifiera korrekthet, med AddToStateObject () , kan ett nytt tillståndsobjekt skapas genom att lägga till skuggor till ett befintligt skugglägeobjekt. Det behöver inte läggas till att CPU-omkostnaderna förblir proportionella endast mot de data som läggs till.

GeometryIndex () I Ray Tracing Shaders:

Denna funktion gör det möjligt för skuggare att skilja geometrier inom accelerationsstrukturer på bottennivå. Tidigare kunde geometrier särskiljas genom att variera data i skuggningstabellposter för varje geometri, men med den nya metoden befrias appen från bördan. Dessutom, om alla geometrier delar samma skuggning, kan appen välja att ställa in MultiplierForGeometryContributionToHitGroupIndex parameter till TraceRay () 0.

Detta kommer i huvudsak att säkerställa att geometriindex inte längre påverkas av den fasta funktionens skuggningstabellindexberäkning. Om det behövs eller önskas kan skuggorna ändå använda GeometryIndex () att indexera i appens egna datastrukturer.

Förutom de ovan nämnda funktionerna inkluderar DirectX Raytracing (DXR) Tier 1.1 också RAY_FLAG_SKIP_TRIANGLES och RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES flaggor. Även om dessa flaggor är tillgängliga för enskilda raytracing-samtal, kan de också deklareras globalt via raytracing pipeline-konfiguration.

Det är tydligt att Microsoft försöker optimera DirectX 12 för grafikintensiva spel. Dessutom, med strålespårning som lovar att vara en av de viktigaste funktionerna för avancerade spel och spelare, ser företaget till att systemet, CPU och GPU används optimalt med minimala uppsägningar.

Taggar directx nvidia raytracing RTX