Unreal Engine 5 tar itu med det största problemet inom PC-grafik

respek dt utvald bild 2
Den här historien är en del av Jacob Roachs ReSpec-serie, som täcker en värld av PC-spel och hårdvara.

Under sin State of Unreal adress på GDC 2023 tillkännagav Epic en omfattande svit med funktioner för Unreal Engine 5.2. Men kanske mest Viktig funktion som kommer i den uppdaterade motorn är inte relaterad till belysning, geometridetaljer eller strålning spårning. Allt handlar om prestanda.

Innehåll

  • Kom ihåg stamningen
  • Allt för Fortnite
  • Fortfarande mycket att vara exalterad över

Rekommenderade videor

Overklig motor spel, med rätta eller fel, har förknippats med stamning och hakar under de senaste åren. Med den nya releasen tar Epic äntligen tag i problemet direkt, så jag tyckte att det var hög tid att bryta ner varför Unreal-spel så visar vanligtvis stamning, vad Epic gör för att lösa problemet och när vi kan förvänta oss att se dessa ansträngningar dyka upp i nya utgåvor.

Kom ihåg stamningen

Bildtid i Gotham Knights på PC.
Dessa frame time toppar visar sig som allvarliga stamningar i Gotham Knights.

Under de senaste åren har Unreal Engine blivit synonymt med stamning. Vi har sett det om och om igen, från 

Star Wars Jedi: Fallen Order till Herrelös till Gotham Knights, och de har alla samma problem gemensamt. Det är samlingsstammande.

Du kommer vanligtvis att höra om stamning med shader-kompilering, men de senaste källorna till problem beror inte på individuella shaders. I den senaste grafiken API: er som Vulkan och DirectX 12, paket som kallas Pipeline State Objects (PSOs) används för att berätta för spelet om tillståndet för din GPU. PSO: er är avsedda att göra renderingen mer effektiv, så att dussintals parametrar, inklusive shaders, kan gränssnittas mellan API: et och GPU: n i ett enda paket.

Men de introducerar ett annat problem. Eftersom PSO innehåller så mycket information tar det lång tid att generera en ny i farten (enligt till Unreals dokumentation, 100 eller fler millisekunder). Denna runtime PSO-skapelse är källan till en stamning, där motorn måste generera en ny PSO medan du faktiskt spelar.

För att bekämpa detta är PSO-cache tillgängligt i Unreal Engine. Detta skapar en cache med möjliga PSO: er så att nya inte behöver genereras medan du spelar spelet, men de är inte perfekta. Som Epic förklarar kan PSO-precachning "vara betungande för stora projekt och fortfarande lämna luckor i cachen som leder till problem." Det är därför, även i spel som förkompilerar shaders på GPU: n, kommer du fortfarande att se en stamning ibland (även om de är få och långt ifrån mellan).

Epic försöker automatisera denna process genom att samla in PSO: er istället för att överlåta till utvecklare att ta hänsyn till alla möjliga GPU-parametrar. Det är på Epics allmänna vägkarta, men bara en experimentell version är tillgänglig nu. I Unreal Engine 5.2 är målet att förbättra PSO-cache för att ytterligare minska problem.

Allt för Fortnite

En scen av Fortnite som körs i Unreal Engine 5.

Det finns mycket att vara exalterad över i Unreal Engine 5 (jag kommer till en del av det härnäst), men vi har inte en klar bild av hur motorn fungerar just nu. Hittills har det bara använts i tekniska demos och Fortnite bland större utgåvor. Även spel som Redfall som lovade att utnyttja Unreal Engine 5 har backat till Unreal Engine 4.

För att vara tydlig tillåter de verktyg som finns i Unreal Engine 4 utvecklare att optimera sina spel för att undvika stamning. Atomiskt hjärtaär ett av många exempel på det. Men det komplexa tillståndet för PSO: er har lämnat dörren öppen för problem under spelandet, och Epics automatiserade PSO-insamling introducerades bara i Unreal Engine 5.1.

Även om jag är glad över att se Epic ta itu med problemet direkt, har vi inte sett den automatiska PSO-cachen pågå ännu. I takt med att mer komplicerade, varierande utgåvor kommer ut från mindre team, ökar efterfrågan på PSO-generering, och möjligheten för hakar och stamningar blir mer närvarande.

Detta gäller särskilt för spel som inkluderar strålspårning, eftersom Unreal Engine 5 inte stöder PSO-cache för strålspårning PSO: er. Som Nvidia förklarar, det är möjligt att distribuera arbetet med att skapa en ray tracing PSO till flera trådar, men det betyder inte nödvändigtvis att utvecklare kommer att använda den här processen.

Fortfarande mycket att vara exalterad över

Belysning i Unreal Engine 5.

Vi behöver fortfarande se automatiserad PSO-insamling i Unreal Engine 5, men det finns faktiskt massor att vara upphetsad över i motorn. Först och främst Lumen. Belysning är extremt viktig för grafisk trohet, och dyra tekniker som vägspårad belysning visas i Portal RTXär hårda på hårdvaran. Lumen delar skillnaden.

Lumen utnyttjar strålspårning, men det är en mycket optimerad form av strålspårning. Istället för att noggrant beräkna oändliga studsar på detaljerade objekt, använder Lumen abstraktioner för att beräkna belysningen för större delen av scenen, bara standardinställning till detaljerad belysning närmast kamera. Denna optimering gör att Lumen kan köras med programvara strålspårning, avfärdar behovet av att ha dedikerat strålspårning acceleratorer på din grafikkort.

Resultaten är redan klara. Fortnite körs på konsoler med Lumen med 60 bilder per sekund (fps), och det ser fantastiskt ut på PC, även i Fortnite's tecknade värld.

En Nanite-showcase i Unreal Engine 5.

Nanite fungerar tillsammans med Lumen. Det är ett virtualiserat geometrisystem som innehåller mycket detaljerade, mycket komprimerade maskor som kan justeras under spelet. Det är i grunden en komplex detaljnivå (LOD) för maskor som automatiskt växlar mellan detaljerade och vaga maskor beroende på var kameran tittar.

Ännu viktigare, Nanite kör på sitt eget renderingspass, så det är inte fångat i den traditionella GPU-pipelinen. Det betyder att ditt spelande förblir jämnt även när Nanite byter ut mesh-komplexiteten. Mellan Nanite och Lumen har du två visuellt imponerande, beräkningseffektiva funktioner som höjer ribban för grafisk trohet.

Epic delade dock mer under sin State of Unreal-adress. Substrate är ett nytt materialsystem i Unreal 5.2 som inkluderar mer detaljerad shaderkontroll. Epic demonstrerade detta med ett opalt ytmaterial, som visar upp flera lager och exakt ljusbrytning genom dem.

Ett opalmaterial i Unreal Engine 5.

Det nya Procedural Content Generation Framework (PCG) är också spännande, även om det inte direkt relaterar till visuell trohet. Med begränsad input kan PCG generera nya objekt för att göra det möjligt för utvecklare att snabbt bygga ut världar med en hög detaljnivå. Det är spännande för mer expansiva världar som inte behöver beröra en artist i varje hörn.

Det finns massor av mer, från framsteg inom MetaHuman till full vägspårning inom Unreal Engine. Det är spännande, men de stamningsproblem som vanligtvis förknippas med Unreal Engine-utgåvor kvarstår. Förhoppningsvis kan Epics framsteg inom PSO-caching kringgå det problemet, men vi har inte många Unreal Engine 5-spel för att se hur det systemet fungerar ännu.

Denna artikel är en del av ReSpec – en pågående kolumn varannan vecka som innehåller diskussioner, råd och djupgående rapportering om tekniken bakom PC-spel.

Redaktörens rekommendationer

  • Jag försökte återuppleva det bortglömda arvet från Halo som en Mac-franchise - och det var en katastrof
  • Med exklusiva PC-partnerskap förlorar alla
  • De sämsta PC-portarna genom tiderna – och varför de var så dåliga
  • Hur generativ AI kommer att skapa spel med "bredare, större och djupare världar"
  • Star Wars Jedi: Survivor recenseras på Steam som en "total crap" PC-port