Faktorer som mest påverkar Ray Tracing PC-prestanda –

Med den mest kraftfulla CPU eller GPU / GRAFISK PROCESSOR Idag räcker det inte att hålla spel som använder ray tracing igång smidigt. Även idag, när denna teknik används så primitivt, är strålspårningsprestandan inte som förväntat. Vilka fenomen påverkar detta?

Hur påverkar CPU strålspårningsprestanda?

Vi har redan berättat om delade volymer eller BVHs mer än en gång i olika artiklar, men idag genereras de inte av GPU:n, och spel använder en gemensam BVH för nivån, vilket gör att den kan placera olika delar av scenen. beroende på spelarens position. Mest frekvent användning? Även om renderingen av scenen görs av GPU:n måste CPU:n vid varje bildruta beräkna tillståndet för vart och ett av elementen.

Det är därför som i spel ofta rumsliga datastrukturer används som nivåkartor, som används för att bestämma positionen för varje objekt på skärmen i förhållande till spelaren och nivåernas struktur. Således är alla beräkningar fokuserade på vad som händer nära där deras avatar är och vad spelaren kan se i det ögonblicket.

Jordbävning utan klipp

Det finns knep i olika spel som gör att vi kan gå bortom kartans ytterligheter eller till och med se allt som händer på scenen samtidigt. När vi gör detta sjunker spelets prestanda dramatiskt. Tja, rumsliga datastrukturer är processorgenererade eftersom de är ett verktyg som används för att ta bort allt från scenen som spelaren inte kan se, och därför skulle det vara ett slöseri med resurser att beräkna dem samtidigt.

När CPU:n skapar en lista med skärmar som beräknas av GPU:n, är det den kommer att göra att skapa en lista med skärmar i den angivna ramen med alla objekt i spelarens synfält, och det blir exakt samma om det är matematiskt korrekt, eftersom det utanför synfältet finns element som också påverkar scenen.

Samtidigt är den också ansvarig för att uppdatera BVH i varje bildruta och leverera den uppdaterad till GPU:n. Eftersom i BVH de statiska elementen på nivån inte rör sig, men mobila enheter som NPC:er, karaktärer eller spelaren själv gör detta på varje nivå, och det är CPU:n som är ansvarig för att uppdatera statusen för var och en av dem.

GPU och strålspårningsprestanda

AMD VRAM GPU

Grafikprocessorer är parallella processorer par excellence, så mycket att vi har använt högpresterande beräkningar, eller HPC, i flera år för att snabba upp parallella delar av olika program. Ray Tracing är en av de applikationer som drar mest nytta av parallellisering och därför drar mest nytta av GPU-kraft, men vi är fortfarande långt ifrån det ideala paradigmet att GPU:er som vi känner dem idag är idealisk utrustning för strålspårning.

I strålspårning, som i en annan algoritm för att skapa 3D-grafik, rastrering, tar vi en samling objekt i 3D-rymden och representerar den i ett 2D-utrymme som består av en matris av pixlar. att det här är en skärm. Det har dock aldrig varit möjligt för GPU:n att rendera en scen baserad på strålspårning i realtid med samma hastighet och prestanda som rastrering.

Strålspårning är upplösningsoberoende

strålspårning AMD

Detta kan låta vågat för många, eftersom renderingsprestandan i FHD är annorlunda än i QHD eller 4K. Prestandaskillnaderna är ojämförliga, men när du väl förstår vad vi menar kan du förstå varför vi pratar om detta oavsett upplösning.

Den ursprungliga strålspårningsalgoritmen berättar om inverkan av scenens primära och sekundära strålar på var och en av pixlarna i scenen. Detta kräver mycket kraft, så istället för att använda den ursprungliga algoritmen använder vi rumsliga datastrukturer som BVH för att påskynda algoritmen. För utan den rumsliga datastrukturen skulle strålspårning ha krävt enorm beräkningskraft.Datacenter

Därför använder man trädliknande rumsliga datastrukturer för att förbättra GPU-prestanda vid strålspårning. Moderna spel har dock extremt komplexa scener vars datastruktur som används för korsning inte kan cachelagras av GPU:n på grund av dess storlek. För att göra detta kopierar den fragment av strukturen i GPU-cachen från VRAM efter behov.

Ett annat knep är, som du nu vet, användningen av den hårdvara som är ansvarig för att beräkna skärningspunkten mellan varje stråle och datastrukturen. Det är en beräkning som körs kontinuerligt och rekursivt och i slutändan kommer att förbruka mycket GPU-resurser, så med dessa moduler ser vi prestandavinster från fem gånger till en storleksordning.

Datalokaliseringsproblem

BVH inspelare

Faktum är att vi inte föreställer oss ljusets väg, för i det verkliga livet har ljuset ingen tid och på grund av sin hastighet är det på alla platser samtidigt. Datastrukturen representerar alltså inte ljusstrålens väg i scenen, utan de delar av scenen som den påverkar.

Det vi gör är att organisera objekten i scenen i uppsättningar, som vi kallar för avgränsade volymer, på ett sådant sätt att det tolkas som att om strålen inte passerar genom den avgränsade volymen kommer den inte att påverka föremålen, andra avgränsade volymer som är i sin uppsättning.

NVIDIA BVH

Det första vi kan tänka på är att det skulle vara trevligt att regelbundet dela scenerymden. En del av scenen tar alltså hand om en del av GPU:n och en annan del av scenen tar hand om en annan del av den. Med andra ord skulle det vara som att ta en karta och avgränsa den i kvadranter, vilket tvingar informationen från varje kvadrant, eller till och med underkvadrant, att lagras på olika cachenivåer. Denna metod fungerar mycket bra med rasterisering.

Å andra sidan, med ray tracing, kan vi upptäcka att om vi delar upp scenen i flera delrum, så färdas en ljusstråle genom flera delrum, som kan tilldelas olika processelement i GPU:n. Det är därför en helt annan väg skapas, scenen delas inte upp i pixlar som varje stråle påverkar, utan varje stråle katalogiseras efter områdena i scenen som den korsar.

Exempel på bil och karta

Karta Vehiculo

För att bättre förstå situationen, anta att vi måste markera platsen för ett leveransfordon på en karta. Hur kan vi göra detta? Det första är att skapa en karta och rita en rutt. Det andra är inget annat än att göra en lista över områden på kartan som bilen har kört igenom, och sedan göra det lättare att bygga en rutt.

I det andra fallet kan vi helt bygga om rutten och förvandla den till en linjär. I slutändan är vi bara intresserade av var bilen har kört, inte var den inte är, så vid användning av kartan blir det mesta av informationen överflödig, och vi kan kassera den utan att bidra med något.

Men faktumet att skapa en beställd lista betyder inte att fordonsförare måste åka ett stort antal kilometer för att leverera sina varor. Denna information tas inte med i beräkningen, och samma sak händer med prestanda vid strålspårning, var och en av strålarna har olika beräkningskostnader, inte bara för att de har en annan väg, utan också för att vi inte känner till minnet av hoppen som vi måste göra.

Relaterade artiklar

Back to top button