Inlägg

Inlägg som swecoder har skrivit i forumet
Av swecoder

För er som gillar att koda grafik och undrar vilka delar av D3D12 som faktiskt används. Inte mycket D3D12-interaktion där inte...

Av swecoder
Skrivet av Gehga:

hade gärna sett högre framerate i red dead redemption 2

Här kommer något högre framerate. Samtliga inställningar på max i 4K-upplösning. Jag tycker nog att VRS visar på god potential.

Klippet inleds med gameplay och avslutas med spelets inbyggda benchmark. Jag slår av och på VRS då och då, notera FPS-skillnaderna. Vid ett tillfälle (vid ca 2:00) höjs även tröskelvärdena så att hela skärmen blir "kass överallt", dvs VRS 4X4 över hela.

Av swecoder
Skrivet av inquam:

Ahhh, en fellow Karlskronit?

Stämmer! Du fick mig att uppdatera min profil med lite mer info.

Av swecoder

FIFA 18 (demo-versionen)

Av swecoder

Metro Exodus
Nedan finner ni ett antal filmklipp från spelets benchmark samt ett klipp som visar starten av enspelarkampanjen. Prestandaresultaten i filmklippen är inte desamma som fås då filminspelning är inaktivt. Därför redovisas även benchmark-resultat för respektive testfall då videoinspelning inte utförs. Samtliga körningar är med maxade inställningar (DXR inaktiverat dock) i 4k-upplösning.

Ännu ett spel där VRS har en märkbar prestandaeffekt.

Summering av prestandaresultaten
Utan VRS: avg FPS: 32,7 - max FPS: 45,4 - min FPS: 22,1
Med "VRS-låg": avg FPS: 37,9 (~16%) - max FPS: 55,9 - min FPS: 23,1
Med "VRS-kass-överallt": avg FPS: 42,4 (~30%) - max FPS: 60,7 - min FPS: 29,31

Benchmark, VRS inaktiverat (referens)

Benchmark, VRS aktiverat med gränsvärde 3 för 4X4 och 16 för 2X2 (svårt att se några grafikfel)

VRS-visualisering:

Benchmark, VRS med 4X4 över hela skärmen (fel överallt, visar maximal VRS-effekt)

Gameplay, slår av och på VRS/VRS-visualisering vid flera tillfällen. Notera FPS-skillnaderna!

Av swecoder
Skrivet av Megagurra:

Holy shit, du är en gud!

Kommer du släppa det här som mjukvara en vacker dag? Skulle lätt donera pengar för din insats.

Bra jobbat!

Skrivet av Moton:

Grymt jobbat! Hade som en tidigare sagt lätt kunnat tänka mej donera ifall det görs tillgängligt.

Tack för vänliga ord! Får se hur jag gör framöver, vill nog testa på några spel till innan någon kod lämnar bygget...

Skrivet av Joppis:

Vilka grymma kunskaper du besitter! Hur började intresset och hur har du lärt dig detta?

En annan fråga är om de olika Anti-cheat-mjukvarorna som främst följer med multiplayerspel detektar denna mjukvara?

Edit: Du hade ju visst redan svarat på Anti-cheat-problematiken. Så singleplayer-spel främst med andra ord

Tack! Jag har alltid varit intresserad av programmering och 3D-programmering i synnerhet. Arbetar som lärare inom spelutveckling på BTH och tanken med Triangelplockaren har hela tiden varit att kunna utvinna information ur "riktiga spel" och därmed få ökad spets i undervisningen. Det som står i textböckerna stämmer inte alltid överens med hur spel fungerar i verkligheten.

Skrivet av tuomi:

Vore bra att poängtera fetstilt för de som kanske är de värsta FPS-jägarna dvs. competetive-spelare att detta innebär en stor risk för eller garanterad ban.

Helt riktigt, om och när detta släpps blir det trippelfetstil på all sådan info. Mina privata konton (Battlefield V etc) får ta den risken tillsvidare.

Av swecoder
Skrivet av loevet:

Det här är fantastiskt roligt och intressant att läsa/titta på! Om du har tid och möjlighet får du gärna berätta om hur mycket arbete det varit med att få in VRS-stöd i titlar utan det, hur stabilt stödet är och dina planer om projektet. Grymt kul, kan bli så att vi lyfter in en av dina videos i vår artikel om ämnet

Tack, kul att du tycker det! Koden för Triangelplockaren var relativt redo för uppdraget, tog några timmar att få till detta grundläggande stöd. Stabiliteten beror helt på hur utvecklarna valt att rendera, ska kika på en del titlar den närmaste tiden. Kul om ni väljer att använda något av klippen Hann testa på ett annat spel lite snabbt:

Mortal Kombat 11, resultat med videoinspelning aktiverad
Utan VRS: avg FPS: 35
Med "VRS-låg": avg FPS: 39
Med "VRS-kass-överallt": avg FPS: 44

Referens:

VRS-låg:

VRS-visualisering:

VRS-kass-överallt:

Skrivet av anon5930:

Spännande! Dock inget som lär fungera med 1080Ti förmodar jag.

Tack! Nej, tyvärr krävs nyare kort.

Skrivet av kelthar:

Extremt bra jobbat! Hade jag bara kunnat använda det i PUBG rakt upp och ner? Måste man starta binären från ditt program eller hookar den på automagiskt på något sätt?

Tack! I teorin ja, men i praktiken kommer deras anti cheat-logik att slänga ut (och ev. banna) dig.

Skrivet av krigelkorren:

Ser ju riktigt lovande ut! Duktigt jobbat!

Har du någon forskning på om det även går att nyttja på Linux-baserade OS via ex. Vulkan API?
Det vore rätt intressant att få någon indikation på det just p.g.a. hur dåligt optimerade spel kan vara för just den plattformen.

Gissar på att tekniken i DX12 som du refererar till motsvarar denna funktionalitet hos Vulkan:

https://www.khronos.org/registry/vulkan/specs/1.2-extensions/...

Tack! Tyvärr, har inte tillräckligt djup kunskap kring Linux. Vulkan i Windows hade varit full möjligt. Jepp, shading rate image är högst troligen samma sak.

Skrivet av JBE:

Ser ju väldigt bra ut i videon. Skulle man kunna använda det för att nå ett frametime-mål?
Tex "sänk kvalitet tills frametime <= 8.55ms"? för att exempelvis försöka hålla 117 fps alltid i 4k.

Absolut, att påverka tröskelvärdena i en eller andra riktningen hade kunnat uppnå den effekten. Kul tanke!

Skrivet av Tripsen:

Går det att köra det här fritt.
Eller måste utvecklarna implementera det i spelet?

För bäst resultat bör utvecklarna implementera det i spelet direkt. Jag har inte full insikt i deras logik och därför finns risken att inför grafikfel som hade kunnat undvikas med full insyn.

Av swecoder

Variable Rate Shading i spel som saknar inbyggt stöd

För en tid sedan fick D3D12 stöd för variable rate shading (VRS), en teknik som möjliggör att olika delar av bilden kan beräknas med olika kvalitetsgrader. För mer information rekommenderar jag er att läsa Sweclockers artikel.

Jag har utökat Triangelplockaren med funktionalitet att applicera samt visualisera bildbaserad (image-based) VRS i befintliga spel. Den färdigrenderade frame-bilden analyseras och resultatet används därefter för att påverka hur VRS-inställningarna ska vara nästkommande frame. Utfallet av analysen är en bild som indikerar huruvida området ska få VRS 1X1, 2X2 (mörkgult i filmklippen) eller 4X4 (ljusgult i filmklippen). För att få ökad prestanda måste analyssteget gå relativt fort, annars riskerar den eventuella prestandavisten att utebli.

Så här långt har två testprogramvaror använts, Tom Clancy's The Division och Battlefield V. Ingen av dem har inbyggt stöd för bildbaserad VRS. Prestandavinsten kan variera rejält beroende på hur speltillverkaren valt att rendera. Exempelvis är det mindre fördelaktigt om compute-pipelinen används för de tyngre ljus-beräkningarna, då VRS-effekten endast påverkar renderings-pipelinen.

Ta gärna en titt på filmklippen nedan (efter att Youtube färdigbehandlat dem till 4k-upplösning), de visar hur VRS kan användas för att relativt enkelt öka prestandan i befintliga spel som inte har inbyggt stöd för VRS. Spelen renderades alltid med upplösningen 3840x2160. De tröskelvärden som redovisas säger egentligen inte så mycket för er utan används internt i analyssteget, högre värde innebär högre acceptans och därmed ökad sannolikhet att grafikfel uppstår.

Tom Clancy's The Division
Nedan finner ni ett antal filmklipp från spelets benchmark samt ett klipp som visar starten av speldemot. Prestandaresultaten i filmklippen är inte desamma som fås då filminspelning är inaktivt. Därför redovisas även benchmark-resultat för respektive testfall då videoinspelning inte utförs.

Summering av prestandaresultaten
Utan VRS: avg FPS: 56,3 - typical FPS: 57,0
Med "VRS-låg": avg FPS: 61,1 - typical FPS: 61,4 - ~8-9% högre än utan VRS
Med "VRS-hög": avg FPS: 66,3 - typical FPS: 66,7 - ~17-18% högre än utan VRS
Med "VRS-kass-överallt": avg FPS: 76,4 - typical FPS: 76,8 - ~35-36% högre än utan VRS

Benchmark, VRS inaktiverat (referens)
Resultat utan videoinspelning: avg FPS: 56,3 - typical FPS: 57,0

Benchmark, VRS aktiverat med gränsvärde 3 för 4X4 och 16 för 2X2 (svårt att se några grafikfel)
Resultat utan videoinspelning: avg FPS: 61,1 - typical FPS: 61,4 - ~8-9% högre än utan VRS

VRS-visualisering:

Benchmark, VRS aktiverat med gränsvärde 8 för 4X4 och 25 för 2X2 (tydliga grafikfel uppstår)
Resultat utan videoinspelning: avg FPS: 66,3 - typical FPS: 66,7 - ~17-18% högre än utan VRS

VRS-visualisering:

Benchmark, VRS med 4X4 över hela skärmen (fel överallt, visar maximal VRS-effekt)
Resultat utan videoinspelning: avg FPS: 76,4 - typical FPS: 76,8 - ~35-36% högre än utan VRS

Gameplay, slår av och på VRS/VRS-visualisering vid flera tillfällen. Notera FPS-skillnaderna!

Battlefield V
Gameplay, slår av och på VRS/VRS-visualisering vid flera tillfällen.

Det finns kanske inte så mycket att diskutera kring detta, men förhoppningsvis kan det leda till att fler hobby- och proffsutvecklare anammar tekniken. Mitt mål är att arbeta vidare något med analyslogiken och landa någonstans där prestandanvinsten blir runt 10-15% utan att större grafikfel uppstår.

Kika gärna på fler videoklipp längre ner i tråden: Mortal Kombat 11, Metro Exodus och FIFA 18.

Av swecoder

Kikade lite med Triangelplockaren

Säkert intressant för någon att se vilken geometri som skickas genom grafikpipen samt lite om hur de använder D3D12 internt.

Av swecoder

Kikade lite med Triangelplockaren. Spelversion 1207.69 och Nvidia GeForce-drivrutin 441.12

Säkert intressant för någon att se vilken geometri som skickas genom grafikpipen samt hur de använder D3D12 internt.

Gameplay

Benchmark

Benchmark freecam

Av swecoder

Tack för fin artikel! Inte konstigt att prestandan dyker då GPUn får betydligt mer att pyssla med. Datastrukturen för ray tracing-systemet måste hållas uppdaterad, vilket påverkar väntetider etc. i pipen.

Kikade på startbanan med Triangelplockaren, se https://youtu.be/5_utsUxDR7U

Av swecoder
Skrivet av Ratatosk:

Nice! Beror säkerligen på att de faktiskt nyttjar stora delar av D3D12 (multitrådning, async compute, copy-hw, ...).

Liten kik med Triangelplockaren

Av swecoder

Tack för info, intressant!

Har kikat snabbt med Triangelplockaren (mer info: https://tinyurl.com/y5jlpbxw).

Verkar inte vara någon ray tracing i huvudmenyn.
Ray traced shadow quality: High

Rasterpipe- och DXR-data. Rastreras fler trianglar än vad som finns i ray tracing-steget. Tungt att strålspåra
Ray traced shadow quality: High

DXR-data i benchmarkscenerna.
Ray traced shadow quality: Ultra

Av swecoder

Har kikat lite på DXR-datan. Mer info om verktyget i denna tråd: https://www.sweclockers.com/forum/trad/1545908-dxr-i-battlefi...

Animationsuppdateringar och bilåkningen i slutet är småintressant att se.

Av swecoder

Metro Exodus

Nu finns äntligen ett spel till att leka med.

Metro Exodus hamnade under lupp, animationerna i Metros DXR-data är inte riktigt lika eleganta som de i Battlefield V.

Ta en titt!

Av swecoder
Skrivet av trickeh2k:

Ånyo en tråd där man knappt begriper något, men som ändå är superintressant! Hatten av för swecoder och ni andra som budragit. Kommer följa och antagligen förstå noll, men vad förvdet när det ändå känns intressant? :>

Tack, kul att du är intresserad!

Återkommer med mer, förhoppningsvis intressanta, saker inom kort.

Av swecoder
Skrivet av Olle P:

Exakt vad jag skrev: Mindre antal trianglar på föremål längre bort jämfört med samma föremål nära.
Alternativet är ju att ha exakt lika många trianglar oavsett om föremålet, exempelvis ett ansikte på en NPC, befinner sig en halvmeter eller en kilometer bort.

Ber om ursäkt om jag feltolkat dig. I din ursprungstext kan budskapet tolkas som att tekniken "tesselering" minskar antalet trianglar. Det stämmer inte, tesselering på grafikkortet kan endast öka antalet trianglar.

"I så fall skulle det inte vara någon vits med tesselering, som ju minskar antalet trianglar med avståndet till objektet."

Av swecoder
Skrivet av Radolov:

Den verkar bestämma sig att göra massiva uppdateringar vid ett visst tillfälle och återskapa i stort sett allting. I videon ser man även att antalet bottom-level instanser är det som dikterar prestandan, inte antalet trianglar (som man såg i förra videon var lägre för trudelur där den rätt så ofta hade ~2/3 - 3/4 av trianglarna, men långt många fler instanser).

Det finns en hyfsat stor intervju med en utvecklare där du kanske får några svar på dina frågor. Den har två månader på nacken så många ändringar där är redan implementerade. Ahhh...vänta ett tag. Jag har en möjlig förklaring till varför det blir fler objekt när du ser ner i marken. De har implementerat screen-space reflektioner och då kanske de tar bort de objekt i strukturen som är på skärmen? Tänk omvänd frustum culling . Det blev faktiskt sämre kvalité när de införde detta som kan ses här , men bättre prestanda.

Går det att markera alla bottom-level strukturer i triangelplockaren? Då kanske det blir lättare att resonera.

Om du vill ha en typ av sanity check, så ska antalet rays skala linjärt mot antalet pixlar (från samma kameravinkel/position). Så om du jämför 1080p med 4k så ska resultatet för ray tracing tiden vara ~4x så stor, medan tiderna för BVH:n bör vara opåverkad. Kan ju förstås vara så att vissa resurser blir upptagna när upplösningen ökar, men det är bara att testa på och se vad som händer.

Det kan vara som du skriver att antalet instanser spelar större roll än antalet trianglar. Om vi ser både bottom- och top level-strukturerna som sökträd, bör antalet trianglar påverka generering av bottom-level-träden. Ska testa variera antalet trianglar som används i bottom level-strukturen.

Håller på och uppdaterar så att separata instanser kan markeras i plockaren. Ska även lägga in stöd för att "följa en specifik modell", kan vara intressant att låsa kameran på ex spelaren.

Tackar för ditt svar och förhoppningsvis har vi mer data att resonera kring framöver.

Skrivet av Lordsqueak:

hmm, 3D Mark ska ju inkludera Port Royal , deras raytracing benchmark. Vore intressant att se om/vad du kan få ut för info med den.

Tack för info! Får införskaffa programmet och testa.

Skrivet av Olle P:

I så fall skulle det inte vara någon vits med tesselering, som ju minskar antalet trianglar med avståndet till objektet.

Nja, tessellering "minskar inte antalet trianglar". Det som sker är att antalet trianglar, relativt ursprungsmodellen, dynamiskt ökar ju närmare kameran (eller annat villkor) de befinner sig.

Skrivet av Yoshman:

Episk förstapost

Först en disclamer: även om jag är programmerare så är det över ett decennium sedan det blev några större mängder 3D-programmering. Har sedan länge gått över till att jobba med OS-kärnor. Så har ingen superkoll på helheten i DX12 och kan inte påstå att jag har superkoll på speciellt många detaljer heller. Men har av intresse ändå läst på en del om just DXR.

Några saker som skulle kunna göra en diskussion lite enklare är om man förstod lite mer i detalj exakt vad det är för saker ditt verktyg kikar på.

Får jag gissa handlar det om någon form av proxy-implementation av DX12 dll:en, d.v.s. du har skrivit en komponent som exporterar DX12 interfacen och den proxyn gör den loggning som är intressant och skickar sedan vidare data till en verkliga DX12 dll:en.

Om så är fallet, vilka är metoderna som instrumenteras? Egentligen avsett hur programmet fungerar är detta viktigt att vara på det klara med.

Ett potentiellt problem för mätvärdena är att DX12 tillåter anrop från flera trådar samtidigt och biblioteket sköter erforderlig synkronisering. Finns då en möjlighet att t.ex. uppdatering av Bottom-Level Acceleration Structure (BLAS) råkar spendera relativt mycket tid för synkronisering mot andra trådar, så en mätning av det anropet tar även med tid när tråden egentligen inte gör något alls (den kanske inte är är schemalagd på en CPU-tråd under hela förloppet).

Det som klart talar för att stora kostnaden ligger i uppdatering av BLAS är att dokumentationen nämner att man bör minimera antalet uppdateringar till den strukturen då den är relativt dyr.
Känns ändå konstigt då BLAS i teorin bara behöver uppdateras om geometrin förändras. Man ser ju i första/andra videon att majoriteten av all geometri är statisk, förändring av kameran ändrar bara transformationsmatrisen och men inte värdet på vertexes hos geometri.

Det som ändras mellan varje scen är relativt enkla och stora fyrkanter (två trianglar) som används för att simulera drivande snö. Frågan är hur relevant denna geometri är för raytracing resultatet, var inte en av de riktigt stora optimeringarna att man uteslöt geometri för träd och löv ("foliage")?

Optimeringsguider pekar på att i den bästa av världar (sett ur DXR prestanda) skulle man bara ha två BLAS. En för statisk geometri som egentligen aldrig behöver uppdateras, samt en för dynamisk geometri som förhoppningsvis inte är lika stor. Statistiken från ditt program ger en vink om att princip alla BLAS strukturer uppdateras varje scen.

Om det stämmer, varför gör man så? Optimeringstipsen jag sett här säger att det är bättre att dels separera BLAS i statiskta resp. dynamiska delar. Vidare kan man m.h.a. top-level AS (TLAS) utföra vissa typer av animationer (rigid-body), TLAS är mycket billigare att uppdatera.

DXR verkar ju lämna rätt mycket frihet till underliggande implementation för representation av data. Enda man vet med säkerhet är att RT-kärnorna använder sig av "bounding volume hierarchies" (BVH), men har då inte hittat någon information kring hur olika BVH-boxar ordas sinsemellan samt hur man matchar alla trianglar inom matchande BVH (Microsoft skriver bara att det finns en väldigt effektiv any-hit-shader integrerad i DXR för trianglar).

Angående mätning av sista steget, d.v.s. TraceRay() jobbet. Är det verkligen tiden till att all ray-tracing är klar som mäts här eller mäts bara tiden för att kicka igång alla strålar? Själva jobbet utförs ju rätt mycket asynkront m.a.p. CPU-tråden när det väl startats (men finns självklart sätt att säga åt DX12, jag vill blocka till dess att en visst uppgift är klar på GPU-sidan).

Som jag skrev ovan har ju DXR rätt få krav på exakt hur en implementation lagrar data, men gissar att uppdatering tyvärr är dyrare än linjärt. Gissningsvis skapas någon form av sökträd i BLAS, att uppdatera blir då typ O(N*log(N)). Fördelen är att varje stråle då kan söka på O(log(N)) i stället för O(N).

Men vet inte om RTX satsat på gungor eller karuseller här
Kan därför vara så att uppdateringar är linjära i kostnad m.a.p. storlek på geometri.

Tack!

Du gissar helt korrekt, verktyget bygger på proxy-implementationer av samtliga gränssnitt i D3D12. Det innebär att mätningar kan ske lite där vi vill ha dem. Samtliga mätvärden i filmklippen sker utan några direkta låsmekanismer från min sida. Uppdateringar av trädstrukturer sker på GPUn och mäts mha mätpunkter (D3D12_QUERY_TYPE_TIMESTAMP). Exempel:

MätpunktPåGPUStart();
DispatchRays();
MätpunktPåGPUEnd();

När mätpunkter för hel frame finns i RAM (jag låser inte och väntar på att de finns tillgängliga) beräknas tiden enligt: time = (end - start) * gpu_frequency_to_ms;

Tiden som mäts blir då den faktiska tid GPUn spenderat på anropen mellan start() och end().

I Battlefield appliceras ingen transformation på bottom level-geometrin. All uppdartering är ren överskrivning av befintlig triangeldata. Endast top level-instanser transformeras med matris.

Varför många BLAS uppdateras vet jag inte, kanske är det så att objekten faktiskt är animerade och behöver uppdateras. Hur interna strukturen är vet vi inte, vi vet bara att DXR har full frihet att omtolka ingående data, ref D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS här https://docs.microsoft.com/sv-se/windows/desktop/api/d3d12/ne....

Ska försöka göra lite fler undersökningar där antalet trianglar som skickas för BLAS ändras. Ex, spelet skapar BLAS med 100 trianglar men jag omskalar antalet olika mycket; 100 * 0.25, 100 * 0.3, osv...

Skrivet av Megagurra:

OffT: Jag sa ju att du skulle få bättre respons här än FZ!

Skickades från m.sweclockers.com

Tack, mycket bra förslag

Av swecoder

Då samtliga mätvärden, på olika sätt, påverkas av verktyget kommer här en filmsekvens där endast mätvärden presenteras. All "triangelplockning" är inaktiverad.

Notera! Verktyget är fortfarande aktivt. Verktyget ändrar spelets exekveringsbeteende. Dvs, verktyget kan alltid ha indirekt negativ påverkan och mätvärden ska därför aldrig ses som "sanningar".

En intressant iakttagelse kan ses vid 2:23-2:30. Vanligtvis i datorspel ökar prestandan då man tittar upp i luften eller ner i marken, detta pga "frustum culling" (objekt utanför kameran behöver inte ritas). Här ser vi det motsatta, fler objekt uppdateras just då man tittar upp och ner. Kan vara en tillfällighet på just den platsen, men lite intressant oavsett.

Av swecoder
Skrivet av HappyPie:

Välkommen till Sweclockers! Trevlig första tråd.

Ej programmerare men av vad jag har förstått både av de jag har läst och de programmerare jag har pratat med så spelar antalet trianglar i princip ingen roll för prestandan, däremot är upplösningen av en stor betydelse.

Därför så kan det vara bra att trycka på med trianglar av denna anledning, minimal prestandapåverkan samtidigt högre detaljer i scenen.

edit: men eftersom detta är en hybrid-renderare så bör trianglar spela roll och belasta rastererar-delen, såvida dessa olika "renderare-delar" inte skulle ha separate LOD parametrar eller något liknande.

Tack. Antalet trianglar spelar roll då de måste uppdateras (animationer, etc.). När de väl är uppdaterade och indelade i trädstrukturen spelar antalet en mindre roll.

Skrivet av Radolov:

Skämt åsido, riktigt bra jobbat. Ska bottom-level hierarkin verkligen ta så lång tid? På trudelur scenen så kunde den ju uppgå upp mot 18ms , medan ray dispatch och top-level build var mer eller mindre försumbara. Noterade även att trudelur scenen hade långt färre trianglar i top-level hierarkin än norge scenen och gick avsevärt långsammare.
Enligt denna gamla rapport (som för övrigt AMD använder i sin Radeonrays kernel) så kunde en GTX 280 kunna återbygga en turbin som sprängdes i 1,78 miljoner delar på ~65ms. Jag vet inte vad du har för grafikkort, men jag har en känsla av att det nästan skulle gå lika snabbt att bygga upp allting från grunden just i det fallet i stället för refitting som nämns i deras turing whitepaper s.71.

Om vi antar att det är ett binärträd så sorterar vi bort ~hälften av alla trianglar för varje intersection test. Då spelar antalet trianglar inte så stor roll. T.ex log (1,8m) = 20,78 medan log(900k)= 19,78 alltså relativt försumbart. De nämner även att antalet trianglar inte spelade så stor roll, men antalet instanser gjorde det. Sedan så kan möjligtvis en lägre detaljerad struktur påverka åt vilket håll strålarna färdas, vilket kommer påverka noggrannheten. Till vilken grad är jag inte helt säker på.

Lite samma svar som ovan. Binärträdsresonemanget stämmer först då geometrin finns tillgänglig. All bottom-level-tid (som mycket väl kan vara felaktig i videon) är i stort uppdatering av geometri. Det finns någon underliggande trädstruktur och intersektionstesterna sker i "dispatch ray"-tiden.