Tidigare i veckan avtäckte Epic Games nästa version av företagets spelmotor Unreal Engine. Demonstrationen bjöd inte bara på ett väntat steg i grafisk detaljrikedom utan även nya tekniska lösningar för att uppnå ett rejält visuellt steg framåt. De två pelarna i detta framsteg kallas Lumen och Nanites, och i en intervju med Digital Foundry förklarar utvecklarna hur hårdvarufunktioner som ray tracing och Mesh Shaders används för att uppnå detta.

Lumen är namnet på en ny teknik för global ljussättning i realtid. Med traditionell spelutveckling har denna sortens ljussättning varit alldeles för krävande för att kunna köras i realtid, och utvecklare har istället tillämpat ljussättning som beräknats på förhand. Det häpnadsväckande med Lumen är att tekniken uppgavs fungera utan att ta till ray tracing-kapaciteten i nästa generations grafikhårdvara, något som bara delvis är fallet.

Lumen uses ray tracing to solve indirect lighting, but not triangle ray tracing. Lumen traces rays against a scene representation consisting of signed distance fields, voxels and height fields. As a result, it requires no special ray tracing hardware.

Lumen uses a combination of different techniques to efficiently trace rays. Screen-space traces handle tiny details, mesh signed distance field traces handle medium-scale light transfer and voxel traces handle large scale light transfer

Epic Games tekniska chef Daniel Wright berättar att ray tracing faktiskt används med Lumen, men att det endast används för indirekt ljussättning. Det innebär att tekniken inte används för att direkt belysa trianglar utan istället representationer av scener, vilket inte kräver hårdvaruaccelererad ray tracing. Det innebär att Unreal Engine 5 i teorin kan använda Lumen även på hårdvara som inte stöder ray tracing, exempelvis spelkonsolen Nintendo Switch och äldre generationers grafikkort.

nanite.png

Unreal Engine 5-tekniken Nanites använder en kombination av mjukvaruberäkningar och Mesh Shaders.

Den andra pelaren i Unreal Engine 5-demonstrationen är Nanites, vilket handlar om att virtualisera geometri på mikroskopisk nivå. Med Nanites ska spelutvecklare kunna strömma miljardtals polygoner i realtid, vilka kan skalas upp och ned beroende på var i scenen de ska visas. Under demonstrationen föreföll det som att Nanites inte använder Mesh Shaders, en ny teknik för just detaljerad rendering av geometri i spel, vilket också är en sanning med modifikation.

Mesh Shaders, eller Primitive Shaders som de också kallas, är en modernisering av hur 3D-geometri beräknas och renderas i spel. Tekniken stöds i Nvidias Turing- och AMD:s RDNA-arkitekturer och är en del av Microsofts kommande DirectX 12 Ultimate-uppdatering. Likt Nanites blir det möjligt att bryta ned scener i betydlig mer komplex detaljnivå, samtidigt som prestanda optimeras genom en effektiv beräkningsprocess.

The vast majority of triangles are software rasterised using hyper-optimised compute shaders specifically designed for the advantages we can exploit. As a result, we've been able to leave hardware rasterisers in the dust at this specific task. Software rasterisation is a core component of Nanite that allows it to achieve what it does. We can't beat hardware rasterisers in all cases though so we'll use hardware when we've determined it's the faster path. On PlayStation 5 we use primitive shaders for that path which is considerably faster than using the old pipeline we had before with vertex shaders

Med Nanites tillämpar Epic Games en "hyperoptimerad" variant av mjukvarubaserade beräkningar (eng. software shaders) som nyttjar grafikkretsens vanliga beräkningsresurser. Daniel Wright berättar dock i intervjun att de hårdvarubaserade shaderenheterna i den RDNA 2-baserade grafikkretsen i Playstation 5 är bättre på vissa typer av beräkningar, och att Mesh Shaders därför används i vissa fall där det erbjuder överlägsen prestanda ställt mot den mjukvarubaserade lösningen.

Mesh Shaders eller Primitive Shaders gör sitt intåg på allvar senare under år 2020, då i form av hårdvara från Nvidia och AMD såväl som spelkonsolerna Playstation 5 och Xbox Series X.

Läs mer om nästa generations grafikteknik: