Ny DirectX 12 API kan simulere lys i stedet for at imitere det

Illustration: Unreal Engine/ILM Studios
Den nyeste udgave af API-pakken, DirectX 12, lader spil- og filmfolk simulere lys i realtid i stedet for at imitere det.

Et nyt API i DirectX 12 pakken giver 3D udviklere adgang til solens kræfter i simuleret realtid. Teknikken kaldes Raytracing, og de første tekniske demonstrationer er mildest talt imponerende.

Microsoft annoncerede sin raytracing API på spiludvikler-konferencen GDC i sidste uge og integration med både Unity og Unreal spilmotorerne er på vej.

Raytracing teknikken, der har været kendt i 3D-kredse i flere år, er først nu blevet praktisk mulig at anvende i realtids-rendering på grund af moderne grafikkort. Det nye API kan være den killer-app, som får spiludviklere til at tage springet fra DirectX 10 og 11 til 12. Sidste år udkom der nemlig blot fem spil, der anvendte den nyeste udgave af API-pakken.

Læs også: Det har aldrig været nemmere at udvikle spil, og det kan føre til en guldalder

Simulerer virkelighedens lys

De 3D-verdener, vi nyder i spil og film i dag, er resultatet af kompliceret matematik og en masse snydeeffekter.

Fordi 3D-billeder næsten altid skal kunne vises på en 2D skærm, tager udviklere deres komplekse verdener af geometri, lys og overflader og komprimerer det til et såkaldt rasteriseret billede.

I den proces bliver 3D-objekterne projiceret som pixels på din skærm, der bliver farvelagt parallelt.

En komprimeringsteknik, der dominerer spilverdenen fordi den både er effektiv og giver et flot resultat. Der går til gengæld meget 3D-information tabt i konverteringen til to dimensioner.

Den proces forhindrer realistisk lys og farver, da et objekts farve og tekstur påvirker andre objekter omkring det på grund af måden lyset brydes eller forstærkes på.

Den dynamik er ikke mulig i den parallelle farvelægningsproces, der lægger bag rasterisering.

Det er her raytracing kommer ind i billedet. Det er en proces, hvor farven af hver eneste pixel på et billede beregnes ud fra, hvor den er placeret.

Det gøres ved, at hver pixel kaster en linje, eller en ’stråle’ ud fra sig, der så interagerer med alle andre pixels og simulerer lysets rejse gennem alle objekterne i en scene.

Skygger, reflektioner og farver i en 3D-verden, der bruger raytracing, bliver på den måde defineret direkte i 3D i stedet for at blive tilføjet senere som special-effects i et forsøg på at gøre billedet mere realistisk.

Læs også: Unity opgraderer grafikmusklerne og tilbyder helt ny rendering pipeline

Udviklerne skal først imponeres

3D-udviklere kan allerede nu eksperimentere med raytracing API’et i det nyeste eksperimentielle build af Direct X, men vi skal ikke regne med at se teknikken i spil lige foreløbigt.

For selvom de fleste moderne grafikkort kan udnytte mulighederne i DirectX 12 lige nu, såfremt de også kører Windows 10, så er det småt med spil som gør brug af pakken af visuelle API’er.

Der kom sidste år kun fem spil, som udnyttede DirectX 12.

Det skyldtes både at den nye udgave havde performance problemer i sine første år, og at spiludviklere ikke ville risikere at lære de nye API’er at kende.

Vi skal heller ikke regne med at se fuldt raytracede verdener lige foreløbigt, da high-end grafikkort er urimeligt dyre og svære at få fat på takket være kryptovaluta minere.

Læs også: Krypto-minere hamstrer grafikkort i danske netbutikker

Kunstnere og animatorer vil dog uden tvivl tiltrækkes af mulighederne, der ligger i at simulere ægte lys i virtuelle verdener, og de første tech-demoer er skam også meget imponerende.

Man behøver heller ikke raytrace en hel 3D-scene, men kan f.eks. nøjes med at gøre det på særligt reflekterende overflader, hvilket vil give mere naturlige spejlbilleder i blanke overflader.

Her er to demonstrationer af API'et i aktion.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (1)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Log ind eller Opret konto for at kommentere