Ray Tracing på AMD Radeon RX 6000-grafikkort, hur fungerar det?

Ray Tracing på AMD Radeon RX 6000 grafikkort

Med presentationen av RX 6000 från AMD it är tydligt att Ray-spårning mer än att vara ett infall av NVIDIA har kommit för att stanna som en standard inom grafikhårdvara, och det är också klart att det kommer att vara det vanliga sättet att rendera i framtiden. Ändå väntar oss för närvarande en övergångstid där båda ledande företagen kommer att lägga fram förslag i detta avseende. Hur är AMDs strategi presenteras med sin RX 6000?

När AMD presenterade sitt nya RDNA grafisk arkitektur om året sedan, vi tog en av kalk och en av sand; De goda nyheterna kom i form av en ny grafikarkitektur efter mer än fem år med GCN-arkitekturen, men de dåliga nyheterna kom i form av bristen på dedikerad hårdvara för vad som kallas Real Time Ray Tracing eller realtids ray tracing . . Men för några månader sedan bekräftade AMD att RDNA 2-arkitekturen kommer att vara utrustad med denna typ av enheter, så de kommer att kunna konkurrera med NVIDIA i detta avseende, även om dess funktion skiljer sig något från NVIDIAs förslag.

Korsningsenheten i RX 6000: nyckeln till strålspårning

RX 6000 strålespårning

Om vi ​​tittar på strålspårningsrörledningen kommer vi att se att oavsett hårdvara är det alltid detsamma, det är en process som upprepas upprepade gånger där ett enormt antal gånger skärningspunkten mellan strålen och objektet beräknas. Denna upprepade beräkning är dyrare att göra i specialiserade enheter snarare än skuggorna själva.

Eftersom AMD- och NVIDIA-enheterna är mycket lika, rekommenderar vi att du läser självstudien på den här webbplatsen med titeln "Vad är RT-kärnor för strålespårning och hur fungerar de?" där NVIDIA-lösningen fungerar som ett komplement till denna handledning så att du kan få en fullständig uppfattning om skillnaderna mellan de två metoderna.

Var och en av korsningsenheterna finns inom varje beräkningsenhet, orsakerna till dem är följande:

  • De måste ha tillgång till BVH-trädet i minnet, så de måste kunna korsa GPU-cachesystemet, och precis som SIMD-enheterna som kör skuggprogram behöver de tillgång till hela cachehierarkin.
  • De måste vara nära SIMD-enheterna eftersom det är dessa som beror på resultatet av korsningsenheten för att veta vilken typ av skuggning de tillämpar på objekten i Ray Tracing.

AMD har valt en annan lösning: integrera korsningsenheten i strukturfiltreringsenheten eller åtminstone låta dem dela åtkomst till datacache. Vi känner till den här informationen från två olika källor, den första är presentationen i Hot Chips 2020 gjord av Microsoft om SoC för dess xbox Serie X, eftersom den har en integrerad GPU med RDNA 2-arkitektur, samma som RX 6000-grafikkorten. från AMD.

Xbox RX 6000 PS5 CU

Låt oss inte glömma att AMD själv bekräftade att lösningen för Ray Tracing i nästa generations konsoler med sina GPU: er och på PC är exakt densamma.

RX 6000 strålespårning

Den andra källan är ett patent från AMD själv där det sägs att skärningsenheten för Ray Tracing är i texturenheten, och detta har lett till förvirring att texturenheten inte kan beräkna skärningspunkten mellan strålarna och texturering samtidigt , men i själva verket tillämpas textureringen bara i ett steg i den grafiska pipelinen, vilket är struktureringen av scenen där pixelskuggorna fungerar, så utanför dessa scener är dessa enheter sällan nödvändiga.

Patente intersección AMD

Texturenheten applicerar helt enkelt det bilinära filtret, och det betyder att det tar 4 intilliggande prover per pixel och interpolerar mellan dem. Varje samtida GPU har vanligtvis fyra texturenheter åtföljt av 4 Load / Store-enheter med vilka de får åtkomst till datacache för Compute Unit eller SM.

Den enda skillnaden med NVIDIA: s lösning för att beräkna korsningen i Ray Tracing är att i RX 6000 AMD växlas tillgången till datacache via L / S-enheterna mellan texturfiltreringsenheterna och korsningsenheten.

Varför finns korsningsenheten för strålespårning i CU?

Cache CPU-processor

Exekveringsenheterna i GPU: n arbetar vanligtvis med instruktioner, vanligtvis av registerregistret, så de saknar en komplex mekanism för att komma åt minneshierarkin, och detta gör att de kan vara enklare kärnor än de för en CPU och placera fler av dem i varje chip. Sättet att SIMD-enheterna i beräkningsenheten får åtkomst till minneshierarkin, som består av de interna cacherna i GPU: n och VRAM, är att använda Load / Store-enheterna för detta.

Nästan alla typer av skuggprogram tenderar att fungera på register, men det finns en typ som är pixlar eller skuggare som kräver åtkomst till minneshierarkin, eftersom de arbetar med de enorma mängder data från texturerna och därmed texturenheterna ha tillgång till minneshierarkin tillsammans med SIMD-enheterna.

I det specifika fallet med Ray Tracing behöver vi lagra objektens position i scenen i en rumslig datastruktur som vi kallar BVH. Denna datastruktur passar inte i GPU: s interna minne, så korsningsenheten måste använda minneshierarkin, vilket innebär att dessa enheter också är anslutna till cachen och VRAM.

RX 6000 är mer anpassad till DirectX 12 Ultimate-kraven

DX12 Ultimate-logotyp

Det finns fortfarande en lång väg att gå för strålspårning för att ersätta rasterisering och det finns en lång väg att gå där de mest optimistiska förutsägelserna talar om minst tre år framåt. Anledningen till detta är att Ray Tracing kräver mycket hög datorkraft och det finns scener där även den mest kraftfulla GPU: n helt skulle kväva på att försöka få adekvat prestanda.

I traditionell strålespårning studsar en stråle av olika föremål tills den tar slut på energi eller helt enkelt lämnar scenen; För att förstå energi måste man komma ihåg att varje objekt har en brytningskvotient som går från 0 till 1 och det är den mängd ljus som de absorberar och reflekterar. Ett objekt med en brytningskvotient på 0 absorberar allt ljus helt och kommer inte att avge det, medan ett objekt med en brytningskvotient på 1 kommer att avge allt ljus som når det.

Varje gång en stråle träffar ett objekt skapar den nya indirekta strålar och så vidare så länge brytningskvoten inte är tillräckligt låg. Uppenbarligen kan det förstås att detta är ett stort antal korsningar att beräkna som överskrider korsningsenheternas kapacitet.

DX12 strålespårning

För att undvika detta har man i API: er som Microsofts DX12 Ultimate eller Vulkan lagt till en ny typ av skuggprogram: Ray Generation Shader, som består i att genereringen av nya strålar inte är automatisk utan måste åberopas uttryckligen. med koden, vilket innebär att vi under de första åren kommer att se objekt i spel som inte bryter strålar för att minska mängden strålar i scenen och för att uppnå stabila bildhastigheter.

Detta innebär att när en stråle träffar ett föremål och måste fortsätta sin bana som genererar nya strålar måste skärningsenheten be skuggprogrammet som ansvarar för att samordna vägen vad man ska göra.

Är RX 6000 Ray Tracing-lösningen bättre än RTX 3000?

AMD vs NVIDIA

Tja, vi vet inte säkert eftersom för närvarande både det ena företaget och det andra har valt att ge olika mått, och när det gäller AMD är informationen som vi har indirekt via Microsoft att korsningsenheterna kan utföra 4 strålar. Ops per cykel, men vi vet inte vad dessa Ray Op är exakt, det enda vi också vet från Microsoft är att korsningsenheterna i GPU: n på konsolen motsvarar 25 TFLOPS, men vi vet inte sammanhanget med detta figur.

I NVIDIA: s fall hävdar de att RTX 3080: s RT-kärnor har en kombinerad effekt på 58 RT-TFLOPS, men vi vet inte om det är datorkraften för RT-kärnorna i sig eller är den datorkraft som CUDA-enheterna borde vara tillräckligt för att ha samma prestanda.

NVIDIA Ampere 6

Hur det än är, verkligheten är att vi bara kan lita på vad båda arkitekturerna berättar för oss och den information vi har, och det verkar som om enheterna på RX 6000 liknar de i RTX 2000 med fyra beräkningsenheter blixt- boxkorsning och 4 blixt-triangel enhet, men NVIDIA i RTX 1 har fördubblat den senare så kapaciteten vid beräkning av korsningarna är något större.

Hur detta översätts till varje spel beror på ett antal faktorer, men i alla fall verkar det som om AMDs lösning för Ray Tracing på deras RX 6000 är tillräckligt bra och effektiv för att även gå till nästa generations konsoler.