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

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 den funktion som realistiskt återger ljus- och skuggeffekter baserat på fysikens verkliga lagar och ger hyperrealistiska och uppslukande bilder.

Samtidigt ser Microsoft till att Windows OS-ekosystemet är väl lämpat som en idealisk plattform för att spela avancerade spel. Företagets DirectX-plattform, som länge har varit en ledande standard för spel på stationära datorer, justeras för att stödja och till och med öka "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 att hantera 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 schemaläggning 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 ():

Denna funktion 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äkningar, skuggningstabellinställningar och andra root-parameterinstä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 som sedan omedelbart skapar den, 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 anpassningsbara 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ålespårning, som slösar bort mycket resurser och belastar systemet. För närvarande analyserar D3D12-körningen 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 med de data som läggs till.

GeometryIndex () I Ray Tracing Shaders:

Med den här funktionen kan skuggor 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 frigörs appen från bördan. Dessutom, om alla geometrier delar samma skuggning, kan appen välja att ställa in MultiplikatorForGeometryContributionToHitGroupIndex parameter till TraceRay () 0.

Detta kommer i huvudsak att säkerställa att geometriindexet inte längre påverkas av den fasta funktionens skuggningstabellindexberäkning. Om det behövs eller önskas kan skuggorna fortfarande använda GeometryIndex () att indexera till 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 utnyttjas optimalt med minimala uppsägningar.

Facebook Twitter Google Plus Pinterest