GPU mesh shaders för att förbättra grafiken i dina spel –

Om vi ​​frågade 4K-konsol- och PC-spelutvecklare om ray tracing är viktigt för framtiden eller att ändra den “geometriska” delen av 3D-pipelinen, skulle många inte veta vad de ska säga. Mesh shaders är en del av utvecklingen av scengeometri som gör att du kan skapa mycket mer detaljerade objekt i spel.

Vad är en shader?

En shader är ett program som kör en serie specialiserade block i GPU:er som kan köra program. Shaders skiljer sig från CPU-program genom att de används för att manipulera attributen för en eller flera grafikprimitiv.

En grafikprimitiv kan vara en pixel, en vertex eller en triangel om vi pratar om en 3D-pipeline. Men en shader kan också vara vad vi kallar en compute shader som manipulerar vilken typ av data som helst men som inte är beroende av grafikpipeline och som används utanför den.

Det finns moduler som kör shader-program i alla GPU:er, och idag finns det dussintals av dem i varje. GPU / GRAFISK PROCESSOR, inklusive budget. Eftersom en pixel-, triangel-, vertex- eller ekorrkarta inte är något annat än data till processorn, är enheterna som används för att köra dessa program desamma oavsett skuggningstyp.

Vad är mesh shaders?

Konceptet med mesh shaders börjar med att tillhandahålla mångsidigheten hos datorshaders till de olika typerna av shaders som används i vad vi kallar världsrymdpipelinen i 3D-pipeline. Med andra ord: de som används för att manipulera scenens geometri.

För att förstå detta måste du ta hänsyn till att det som skiljer beräkningsskuggningen från andra skuggningar, med undantag för pixelskuggningen, är den input de får för att styra och den utdata de genererar. Idén bakom Mesh Shader är inget annat än att förena alla grafiska shaders som är relaterade till att manipulera scengeometri i en typ av shader.

Det vill säga, Mesh Shader kombinerar en Vertex, Hull, Domain eller Geometry Shader till en typ av shader-program. Eftersom det tillåter utvecklare med fullständig frihet att definiera ingångar och utgångar för shader-program, förutom att förenkla och omdefiniera World Space Pipeline, ger det den också mycket flexibilitet.

Meshlet koncept

3D-pipelinen kommer inte att förändras, men hur scenens geometri hanteras i World Space Pipeline kommer att förändras. För närvarande beräknas hela det geometriska nätet som utgör scenen synkront. Var och en av objektpolygonerna som utgör scenen refereras till i listan över skärmar som CPU:n genererar, och var och en måste bearbetas i den ordning som de skapades i listan.

Därmed står vi inför paradoxen att något körs sekventiellt i en GPU designad för att beräkna data parallellt. Lösning? Tja, att tänka om hur World Space Pipeline fungerar har med geometri att göra, och det är här så kallade Meshlets kommer till undsättning.

Precis som Chipleten är den mindre delen av Chipet, är Meshlet den mindre delen av det polygonala nätet. Dess arbete är väldigt enkelt: istället för att ha en lista för geometrin har vi flera små listor som bearbetas parallellt, där varje del tar hand om en del av scenens polygonala nät. Detta ökar möjligheten att beräkna geometrin för en scen, samtidigt som den gör den mindre stel för programmerare.

Dessutom, eftersom mesh shaders kan fungera som vilken typ av shader som helst, är det möjligt att arbeta på olika pipelinesteg med olika mesh asynkront och till och med exekvera dem i en annan ordning än en traditionell pipeline om det behövs.

Få skugga

En gain shader är en typ av shader-program som körs i pipeline före shaders. Även om de till skillnad från andra shaders i 3D-pipelinen inte kontrollerar några grafiska primitiver, förutom att de är helt valfria.

Dess funktion är att kontrollera exekveringen av Mesh Shaders, det vill säga genom dem kan vi bestämma vilka Mesh Shaders som ska köras och vilka som inte kommer att exekveras, i vilken ordning de kommer att göra det, och de har möjlighet att lägga till och ta bort data från Meshlets som styr mesh shaders …

Utan gain shaders genereras genereringen av Meshlets geometriindex av CPU:n, och med en gain shader kan dessa listor styras från själva GPU:n. Detta gör att du enkelt kan skapa scenarier där du behöver lägga till eller ta bort geometri mycket enklare, såsom tessellering och utslaktning.

Vilka är fördelarna med Amplification och Mesh Shaders i spel?

De har flera fördelar, vi kommer att lista de mest kända:

  • De låter dig eliminera onödig och därför osynlig geometri utan att behöva beräkna hela pipelinen.
  • De möjliggör adaptiv tessellation, vilket innebär att du kan välja graden av tessellation, vilket gör att du kan simulera en extremt detaljerad bild nära kameran.
  • Du kan dynamiskt generera geometri på olika detaljnivåer utan att behöva 3D-modellerare för att skapa flera versioner av samma modell.
  • Förbättrar animering av objekt, vilket ger mer flexibilitet vid manipulering av geometrirelaterade skuggningar.

Vi kommer att se alla dessa implementerade i alla spel när DX12 Ultimate blir referens-API för utveckling av PC-spel. Detta kommer att leda till att tekniker som att använda normala och härledda kartor försvinner för att återge ytor i relief och på högre detaljnivåer.

Relaterade artiklar

Back to top button