Strålföljning, strålspårning eller raytracing har varit ett av de hetaste ämnena under det senaste året, men vad betyder det egentligen, hur fungerar det och hur kan det kan ta grafiken i TV- och datorspel till nästa nivå?
Sedan Nvidia avtäckte sin grafikarkitektur Turing har raytracing (svenska: strålföljning, strålspårning) varit ett ord som de flesta har blivit bekanta med. Turing må vara den allra senaste grafikarkitekturen från Nvidia och ett av dragplåstren har varit arkitekturens stöd för raytracing i realtid.
Raytracing är en teknik för att skapa mer verklighetstrogna ljussättningar och skuggor baserade på vart spelvärldens ljuskällor befinner sig. Det är inte en ny teknik, men nu börjar datorhårdvara bli kapabel till att nyttja tekniken i realtid för mer naturliga spelvärldar. Det är dock en ytterst krävande teknik, men dörren för det kan komma att bli nästa industristandard har nu ställts på glänt.
Raytracing har dock funnits i olika former under de senaste årtiondena. Redan på 1980-talet var en implementation av tekniken i realtid i en speltitel den högsta drömmen för många som arbetade inom spelutveckling och andra grafikrelaterade fält. När Intel fortfarande arbetade på utvecklingen av Larrabee var raytracing i realtid ett mål tillverkaren hade sitt sikte ställt på. Däremot skrotades Larrabee och raytracing i realtid återgick till att bli önsketänkande.
År 2010 visade Nvidia upp den första interaktiva raytracing-demon med hjälp av en uppsättning Quadro-beräkningskort baserade på arkitekturen Fermi. Vid detta tillfälle spekulerades det i att raytracing i realtid skulle kunna bli en verklighet inom ett par grafikkortsgenerationer.
Däremot är det nog många som undrar vad raytracing egentligen är och gör. I denna artikel ska vi gå igenom tekniken på ett inte allt för djupdykande vis och försöka ge en generell uppfattning om vad raytracing i realtid kan bidra med till den grafiska nivån i framtidens speltitlar.
Vad gör raytracing?
Traditionell grafik i TV- och datorspel använder sig av så kallad rastrering som omvandlar 3D-renderade objekt till 2D för att kunna visas på en vanlig bildskärm. Dessa objekt kräver sedan att så kallade shaders används för objekt och spelvärld ska få en känsla av djup. Detta är något som inte krävs med raytracing då djupet är en grundläggande del av tekniken då skuggor och djup ingår i beräkningarna.
En tidig version av tekniken använde sig av så kallad strålgångsberäkning för att följa de ljusstrålar som finns i spelarens synfält bakåt till dess ljuskälla. Detta innebär att varje pixels ljusstråle spåras från spelarens vy bakåt till exempelvis en vattenpöl, vidare till en blank yta, ett fönster och sedan till spelvärldens sol eller någon annan ljuskälla som är basen för just den ljusstrålen. Det finns andra varianter på detta, det är inte nödvändigtvis så att strålarna spåras baklänges, men grundtanken är densamma.
Mellan varje yta och ljuskällan brukar det oftast även finnas en dedikerad skuggstråle som bestämmer hur den skugga som kastas av föremål och karaktärer ska se ut och vilken färg skuggorna ska ha.
Tekniken lägger grunden för en mer realistisk och naturtrogen ljussättning genom att låta till exempel en sol vara den enda ljuskällan i en utomhusmiljö. Solstrålarnas interaktioner med världen och dess innehåll beräknas ett flertal gånger innan de når spelaren. Något som ger mer naturliga skuggor, reflektioner och kontraster mellan platser i direkt solljus och mörkare platser.
Tidigare har spelutvecklare använt sig av flera osynliga ljuskällor som placeras runtom i spelvärlden och arrangerats på ett sätt som ger intrycket av att den tidigare nämnda solen och dess ljusstrålar fungerar som i verkliga livet. Något som med raytracing inte kommer att vara lika nödvändigt då ljusstrålarna kan studsa mellan olika ytor.
Teknikens krav på hårdvaran
Då det rör sig om en ofantlig mängd beräkningar som måste genomföras för varje bildruta ställer raytracing ett mycket högre krav på hårdvaran än vad tidigare tekniker gjort. Nvidias Turing-arkitektur siktar på att lösa det ökade kravet med specialanpassad hårdvara. Detta görs med hjälp av så kallade RT-kärnor inuti grafikprocessorerna hos Nvidias RTX-grafikkort. Det går även att begränsa antalet ljusstrålar och beräkningar som ska göras i spelvärlden för att sänka prestandakraven ytterligare. Trots detta är det fortfarande en otroligt krävande teknik som kommer att få även de dyraste grafikkorten att gå på knäna.
Även AMD har uttryckt intresse för tekniken. Däremot har det inte bekräftats om det kommer att vara specialutvecklad hårdvara som hos Nvidias RTX-kort eller om AMD kommer att sikta på att basera det hela kring mjukvarustöd.
Ett sänkt maxantal reflektioner och refraktioner är även vad som används när raytracing aktiveras på grafikkort ur Nvidias GTX 16-serie och GTX 10-serie. Dessa grafikkortsmodeller kommer utan några RT eller Tensor-kärnor som RTX-serien utrustats med men kan enligt Nvidia fortfarande hantera raytracing i viss mån.
Raytracing utan dedikerad hårdvara
Utvecklare av spelmotorer har även börjat demonstrera hur tekniken kan implementeras på mjukvarunivå utan krav på dedikerad hårdvara utvecklad för just raytracing i realtid. Mycket pekar mot att sådan teknik kommer att implementeras i framtida iterationer och spelmotorer.
Företag som Epic Games har bland annat visat upp sin mjukvaruform av raytracing i realtid inuti sin spelmotor Unreal Engine 4. Stödet kommer att fortsätta utvecklas och implementeras i framtida versioner av spelmotorn.
Även Unity har bekräftat att deras spelmotor vid samma namn kommer att få stöd för raytracing i realtid framåt slutet av 2019.
Raytracing idag och i framtiden
I dagsläget fortsätter tekniken att vara mer eller mindre en önskedröm. Trots att Nvidia tagit det första steget för att erbjuda raytracing i realtid handlar det fortfarande om en teknik som kräver enorma mängder prestanda jämfört med rastrering. Detta leder till att även de dyraste grafikkorten har svårt att erbjuda tekniken tillsammans med ett högt antal bildrutor per sekund (fps).
Å andra sidan har nu dörren öppnats. Vi vet att det är möjligt att få raytracing i realtid som industristandard, även om det kommer att dröja ytterligare några år. Med optimeringar från utvecklare och mognare hårdvarustöd för tekniken i kommande grafikkortsgenerationer finns det ändå en chans att rastrering kommer att få en utmanare. Den äldre tekniken kommer inte nödvändigtvis vara på väg bort, men kan komma att få dela med sig av en allt större andel av marknaden.
Raytracing i realtid är möjligt, men det krävs fortfarande att allt fler aktörer anammar tekniken för att den ska kunna bli vardagsmat när det kommer till spelutveckling.
Denna artikel är inte menad som en djupgående guide i ämnet raytracing. Däremot hoppas vi att den som inte satt sig in i tekniken nu har en lite bättre uppfattning om hur tekniken fungerar och vad den gör för spelentusiaster.