Udvidelse af DirectX 12: Microsoft annoncerer DirectX Raytracing

For mange derude ser det ud til, at DirectX 12 stadig er en helt ny teknologi - og på nogle måder er det stadig - men vi har faktisk snakket om grafik-API'en i mere halvdelen af ​​et årti. Microsoft annoncerede først den næste generations grafik API for meget fanfare tilbage på GDC 2014, med den indledende iterationsforsendelse som en del af Windows 10 et år senere. Af en lang række årsager er DirectX 12-adoption stadig i sine tidlige dage - software dev-cyklusser er lange, og OS-godkendelsescyklusserne er længere stillede - men med deres lave grafik-API, der er fast på plads, er Microsofts DirectX-teams allerede hårdt på arbejde på næste generation af grafikteknologi. Og nu, som vi endelig kan afsløre, kommer DirectXs fremtid til at omfatte et betydeligt fokus på raytracing.

I morges ved GDC 2018 som led i en koordineret udgivelse med nogle af deres hardware- og softwarepartnere annoncerer Microsoft en stor ny funktion til addition til DirectX 12 grafik API: DirectX Raytracing. Præcis hvad navnet siger på tinet, vil DirectX Raytracing tilbyde en standard API for hardware og software accelereret ray tracking under DirectX, så udviklere kan klare rendering modellen til nyere og mere præcise grafik og effekter.

Går hånd i hånd med både ny og eksisterende hardware, er DXR-kommandosættet beregnet til at tilvejebringe et standardiseret middel til udviklere til at implementere strålesporing på en GPU-venlig måde. Desuden skal DXR som en udvidelse af det eksisterende DirectX 12-funktionssæt være tæt integreret med traditionel rasterisering, hvilket gør det muligt for udviklere at blande de to gengivelsesteknikker, der passer til deres behov, og at anvende gengivelsesteknikken, der leverer de bedste effekter / bedste ydeevne som nødvendig.

Hvorfor Ray Tracing lyser fremtiden

Historisk set har strålesporing og dens tætte kollegebaneopfølgning i de fleste henseender været de overlegne gengivelsesteknikker. Ved at gøre en scene mere som de menneskelige øjenværker - ved at fokusere på hvor lysstråler kommer fra, hvad de interagerer med og hvordan de interagerer med disse genstande - det kan producere et langt mere præcist billede generelt, især når det kommer til belysning i alle dens former. Specielt fungerer strålesporing som menneskesyn i omvendt retning (som en måde at tale), støder stråler ud fra betragteren til objekter og hopper derefter fra disse genstande til resten af ​​verden og bestemmer i sidste ende interaktionerne mellem lyskilder og objekter i en realistisk måde. Som følge heraf har strålesporing været go-to-metoden til højkvalitetsgengivelse, især statiske billeder, film og endda forbagte spilaktiver.


Ray Tracing Diagram (Henry / CC BY-SA 4.0)

Men beregningsomkostningerne ved fotorealistisk strålesporing er utrolige på grund af alt det arbejde, der kræves for ikke blot at spore individuelle stråler, men også det rene antal af dem. Dette er en stråle for hver skærm pixel (eller flere) støbt, reflekteret, refraheret og i sidste ende genereret recursivt mange gange. Springer fra objekt til objekt, bryder gennem objekter, diffunderer langs andre objekter, alt for at bestemme alle lys- og farveværdier, som i sidste ende påvirker en enkelt pixel.


En illustration af ray rekursion i en scene

Som en konsekvens heraf har strålingssporing ikke været egnet til realtidsgengivelse, hvilket begrænser brugen til "offline" brug af tilfælde, hvor systemer kan tage så meget tid som de har brug for. I stedet er real-time grafik bygget op omkring rasterisering, et smukt, crass hack, der grundlæggende projekterer 3D-rum på et 2D-plan. Ved at reducere meget af renderingsprocessen til et 2D-billede, forenkler dette i høj grad den samlede arbejdsbyrde, hvilket gør real-time rendering praktisk. Ulempen ved denne metode er, som man kunne forvente, at den ikke er så høj kvalitet; I stedet for nøjagtige lyssimuleringer giver pixel og beregningsskygger tilnærmelser af varierende kvalitet. Og i sidste ende kan shaders ikke helt gøre op for manglen på end-til-ende 3D-behandling og simuleringer.

Mens praktiske overvejelser betyder, at rasterisering har - og vil fortsætte med at være - den dominerende realtidsgengivelsesteknik i mange år fremover, er den hellige graal i realtidsgrafik stadig ray tracing eller i det mindste den kvalitet, den kan levere. Som et resultat har der været en stigende mængde fokus på sammenlægning af strålesporing med rasterisering for at kombinere styrken af ​​begge gengivelsesteknikker. Dette betyder parring af rasteriseringens effektivitet og eksisterende udviklingsrørledning med nøjagtigheden af ​​strålesporing.

Mens det bare er, hvordan man bedst kan gøre det, kommer til at være op til udviklere på et spil-for-spil-basis, er den mest enkle metode at rasterisere en scene og derefter bruge strålesporing til at tænde den og følge den op med en anden runde pixel shaders for bedre at integrere de to og tilføje eventuelle endelige effekter. Dette gør det muligt at udnytte strålesporingens største styrker med belysning og skygge, hvilket giver mulighed for meget præcise lysløsninger, som korrekt simulerer lysrefleksioner, diffusion, spredning, omgivende okklusion og skygger. Eller at sætte en anden måde: Faking realistisk belysning i rasterisering bliver så dyr, at det lige så godt kan være lettere at gøre det på den rigtige måde til at begynde med.

Indtast DirectX Raytracing

DirectX Raytracing er så Microsoft lagt grunden til at gøre dette praktisk ved at oprette en API for ray tracking, der fungerer sammen med virksomhedens eksisterende rasteriserings-API'er. Teknisk set er GPU'er allerede generiske nok til, at udviklere i dag kunne implementere en form for strålingssporing lige gennem shaders, men det ville dog gå glip af muligheden for at udnytte specialiserede GPU-hardwareenheder til at hjælpe med opgaven, for ikke at nævne hele processen ikke standard. Så både for at afsløre nye hardwarefunktioner og abstrakte nogle af optimeringsarbejdet omkring denne proces til GPU-leverandører, i stedet implementeres denne funktionalitet gennem nye API-kommandoer til DirectX 12.

Men ligesom Microsofts andre DirectX API'er er det vigtigt at bemærke, at virksomheden ikke definerer, hvordan hardwaren skal fungere, kun at hardwaren skal understøtte visse funktioner. Tidligere er det op til de enkelte hardwareleverandører at oprette deres egne backends for at udføre DXR-kommandoer. Som et resultat - og især da dette er så tidligt - er alle fra Microsoft til hardware-leverandører vagent vage om, hvordan hardware acceleration skal fungere.

På basisniveau vil DXR have et fuldt tilbagekoblingslag for at arbejde på eksisterende DirectX 12-hardware. Da Microsofts meddelelse er rettet mod softwareudviklere, pitcher de backslaget som en måde for udviklere at komme i gang i dag med at bruge DXR. Det er ikke den hurtigste mulighed, men det lader udviklere straks prøve API'en og begynde at skrive software for at drage fordel af det, mens alle venter på, at nyere hardware bliver mere udbredt. Fallback-laget er imidlertid ikke begrænset til bare udviklere - det er også en catch-all at sikre, at alle DirectX 12-hardware understøtter ray tracking - og at tale med hardwareudviklere, det lader til, at nogle spilstudios kan forsøge at inkludere DXR-drevne effekter så snart så sent i år, hvis det kun er en tidlig teknisk udstilling for at demonstrere, hvad DXR kan gøre.

I tilfælde af at trykke på backslaget bliver DXR udført via DirectCompute computere, som allerede understøttes på alle DX12 GPU'er. På hele GPU'erne er det ikke rigtig godt med strålesporing, men det er heller ikke halvt dårlig. Da GPU'er er blevet mere fleksible, er de blevet lettere at kortlægge til ray tracking, og der er allerede en række professionelle løsninger, der kan bruge GPU gårde til ray tracking. Hurtigere, selvfølgelig, blander det med optimerede hardwarebaner, og det er her, hvor hardware acceleration kommer ind.

Microsoft siger ikke bare, hvilken hardware acceleration af DXR vil involvere, og API'ens høje niveau betyder, at det er ret nemt for hardwareleverandører at blande hardware- og softwarefaser efter behov. Det betyder, at det er op til GPU-leverandører, der skal udføre tilbagekoblingen bag DXR og gøre DXR kørende så effektivt som muligt på deres forskellige mikroarkitekturer. Når det kommer til at implementere disse backends igen, er der nogle dele af ray tracing processen, der kan gøres i fast funktion hardware mere effektivt end det kan gøres shaders, og som følge heraf giver Microsoft GPU-forhandlere midlerne til at accelerere DXR med denne hardware for yderligere at lukke præstationskløften mellem ray tracking og rasterization.

DirectX Raytracing Planlagt support
VendorHjælp
AMD Ubestemt - Driver snart
NVIDIA VoltaHardware + Software (RTX)
NVIDIA Pre-Voltasoftware

Til dagens afsløring meddeler NVIDIA samtidig, at de vil understøtte hardware acceleration af DXR gennem deres nye RTX-teknologi. RTX tilsammen kombinerer tidligere uanmeldte Volta arkitektur ray tracking funktioner med optimerede software rutiner til at give en komplet DXR backend, mens pre-Volta kort vil bruge DXR shader-baserede back-up option. I mellemtiden har AMD også meddelt, at de samarbejder med Microsoft, og at de vil frigive en driver i den nærmeste fremtid, der understøtter DXR acceleration. Tonen i AMDs annoncering gør mig til at tro, at de vil have meget begrænset hardwareacceleration i forhold til NVIDIA, men vi skal vente og se, hvad AMD afslører, når deres drivere er tilgængelige.

Selvom i sidste ende ideen om hardware acceleration kan være en (relativt) kortvarig. Siden introduktionen af ​​DirectX 12 har Microsofts langsigtede vision - og faktisk GPU-industriens overordnede vision - været, at GPU'er bliver mere og mere generelle formål, med flere generationer af GPU'er, der bevæger sig længere og længere i denne retning. Som følge heraf er der tale om GPU'er, der udelukkende afvikler fastfunktionsenheder, og selv om denne form for tænkning ganske vist har brændt sælgerne før (Intel Larrabee), er det ikke ubegrundet. Større programmerbarhed gør det endnu nemmere at blande rasterisering og strålesporing, og længere i fremtiden kan det stadig være grundlaget for ren ray tracking i spil.

Det er overraskende, at de faktiske DXR-kommandoer til DX12 er meget designet til en meget programmerbar GPU. Mens jeg ikke kommer ind i programmerings minutiae bedre tjent af Microsofts dev blog, er Microsofts øje solidt på fremtiden. DXR vil ikke introducere nogen nye eksekutormotorer i DX12-modellen - så de to primære to motorer forbliver grafik (3D) og beregne motorer - og faktisk behandler Microsoft DXR som en beregningsopgave, hvilket betyder, at den kan køres oven på begge motorer. I mellemtiden vil DXR introducere flere nye shader-typer til håndtering af strålebehandling, herunder ray generation, nærmest-hit, enhver-hitog glip af shaders. Endelig vil 3D verden selv beskrives ved hjælp af hvad Microsoft kalder accelerationsstruktur, som er et fuldt 3D-miljø, der er optimeret til GPU-traversal.

Øjne på fremtiden

Ligesom meddelelsen om DirectX 12 selv tilbage i 2014, er dagens meddelelse om DirectX Raytracing beregnet til at sætte scenen for fremtiden for Microsoft og dets hardware- og softwarepartnere. Interesserede udviklere kan komme i gang med DXR i dag ved at aktivere Win10 FCUs eksperimentelle tilstand. I mellemtiden annoncerer top-tier-softwareudviklere som Epic Games, Futuremark, DICE, Unity og Electronic Arts 'SEED-koncernen, at de planlægger at integrere DXR-support i deres motorer. Og som Microsoft lover, er der flere grupper endnu at komme.


Projekt PICA PICA fra SEED, Electronic Arts

Selv selvom det cirka et års hovedstart, som Microsofts nærmeste udviklere har modtaget, er mit indtryk af alt dette, at DXR stadig er et meget langsigtet projekt. Måske endda mere end DirectX 12. Mens DX12 var en ny API for eksisterende hardwarefunktioner, er DXR tættere på en traditionel DirectX-udgivelse, fordi det er en ny API (eller ret nye DX12-kommandoer), der passer bedst til ny hardware. Og da der i det væsentlige er 0 forbruger hardware på markedet lige nu, der tilbyder hardware DXR acceleration, det betyder DXR virkelig starter fra begyndelsen.

Det store spørgsmål, jeg formoder, er lige så nyttigt, at den rene softwarebackback-tilstand vil være; hvis der er noget, der meningsfuldt kan gøres på selv dagens high-end videokort uden fast funktions hardware til ray tracking. Jeg har ingen tvivl om, at udviklere vil inkludere nogle DXR-drevne funktioner til at vise deres varer tidligt, men det bedste ved brug af DXR føles, at det vil kræve hardware support som en baseline funktion. Og som vi har set med tidligere lanceringer som DX11, vil det være lidt tid at have en ny API.

Det andet interessante aspekt ved dette er, at Microsoft ikke annoncerer DXR til Xbox One på dette tidspunkt. Windows og Xbox One er praktisk taget bundet i hofte når det kommer til DX12, hvilket gør mig i tvivl om hvilken rolle konsolerne skal spille. Det, der i sidste ende dræbte DX9 i alle henseender var trods alt frigivelsen af ​​8th-genkonsolerne, hvor DX11 / 12-funktionaliteten var en basislinje. Så vi kan se noget lignende ske med DXR, i hvilket tilfælde vi taler om en overgang, der er 2 + år ud.

Men vi bør forhåbentlig få nogle flere svar her senere i ugen på GDC. Microsoft præsenterer et par forskellige DXR-relaterede sessioner, hvoraf det vigtigste er DirectX: Udvikler Microsofts grafikplatform og bliver præsenteret af Microsoft, DICE og SEED. Så hold dig opdateret for flere nyheder fra GDC.

Oprindelig artikel

Giv en kommentar

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.