Grafiska pipelinen Edvin Fischer
Sammanfattning Rapporten behandlar den grafiska pipelinen och dess steg, vilka stegen är och hur de funkar.
Inledning Rapporten har till syfte att beskriva hur den grafiska pipelinen fungerar, frågeställningen lyder enligt följande, Vilka steg finns i den Grafiska pipelinen och vad händer i dem? Bakgrund Dagens bildskärmar, eller monitorer, är uppbyggda av ett 2D rutnät av pixlar. En pixel har två definierande egenskaper position, i rutnätet, och ljus. I många fall använder sig datorer av 3D grafik så som i datorspel, för att kunna visa upp dessa bilderna på en monitor krävs ett Grafikkort även kallat GPU (Graphical Processing Unit). GPU:n beräknar 3D format till 2D format och renderar ut data på monitorn, vilket sker i den grafiska pipelinen. Grafisk pipelining Vertices, Primitives, Fragments och Pixlar Den grafiska pipelinen använder sig av geometriska primitives. Primitives formas av en eller flera vertices till bland annat geometriska former så som trianglar eller cirklar, men en primitive skulle också kunna vara en punkt eller linje. (Hock-Chuan, 2012) En vertex beskrivs enligt följande, för det första har en vertex en position i ett 3D rum med koordinaterna x,y och z. För det andra har den en färg som specificeras av ett tal mellan 0.0 och 1.0 (alternativt av en 8-bitars Unsigned Integer). För det tredje har vertexen en normal, kallad Vertex-normal, normalen har betydelse för ljuskastningen i vertexens punkt på 2D bilden. Den fjärde egenskapen är texture som är en 2D koordinat förknippat med en texture (ett omslag för 3D objektet som till exempel en bild eller ett mönster). (Hock-Chuan, 2012) Figur 1: Primitives (Fatahalian, 2012)
Fragments är en approximativ bild av hur en primitiv ser ut på en 2D monitor, det vill säga pixlarna anpassas på bästa sett för att efterlikna en primitiv och med en gemensam färg. (Hock-Chuan, 2012) Figur 2: Framents (Fatahalian, 2012) Vertex processing Coordinates transformation består av tre av fyra steg, Model transform, View transform, Projektion transform och Viewport transform. Varav de tre första stegen tillhör Vertex process och det sista steget tillhör rasterizer. (Hock-Chuan, 2012) Varje 3D figur är ritad ett individuellt rum, eller koordinatsystem, för att sammanställa alla motiv till ett och samma rum måste dessa skalas om för att passa in. Detta görs med en följd av vektoradditioner och skalärmultiplikationer, även kallat linear transformation. Denna process brukar kallas Model transform. (Hock-Chuan, 2012) När Model transform är över positioneras kameran för att kunna skåda vyn. Positioneringen sker med hjälp av tre parametrar EYE, som sätter kamerans plats i rummet, AT, som bestämmer kameran riktning, och UP, som anger kamerans upp vilken vanligen sammanfaller med rummets y-riktning. Processen är den som heter View transform och genomförs även denna med hjälp av en mängd av vektoradditioner och skalärmultiplikationer. (Hock-Chuan, 2012) Projekt transform handlar om att bestämma vad i bilden som ska vara synligt och hur zoomning i bilden ska vara, vilka objekt som ska vara närmre och vilka objekt som ska vara längre bort. Begreppen Perspective projektion och Orthographic projektion används i samband med Projekt transform, de två begreppen är olika metoder för hur Projektion transform genomförs. Perspective projektion, som är den vanligare av de två metoderna, är när djup går att urskiljas ur bilden (mer av en 3D bild), Orthographic projektion kan liknas med av en 2D bild. (Hock-Chuan, 2012)
Rasterizer I Rasterizer anpassas alla pixlarna till primitives och bildar fragments i ett steg som kallas Viewport transform. I det sista steget av Rasterizer (Back-Face culling) tas primitives, som inte är vända mot kameran, bort. (Hock-Chuan, 2012) Fragment processing I Fragment processing finns fyra delar, i den första beräknas pixlarnas färger och deras texture koordinater. I den andra delen matchas pixlarna tillsammans med texture. I den tredje delen genomgår skuggas pixlarna för att ge en 3D effekt. I delen som inte är obligatorisk genomförs ett flertal tester. (Hock-Chuan, 2012) Figur 3: Fragment med texture (Fatahalian, 2012) Output Merging Z-buffert (depth-buffert) innehåller djupet för olika objekts ytor i 3D rummet, I Hidden surface removal tas dolda objekts ytor bort med hjälp Z-buffert. Med hjälp av z-koordinaterna för ett objekt kan Grafikkortet räkna ut vilka objekt som är dolda bakom andra. (Hock-Chuan, 2012) För att Hidden surface removal ska fungera krävs det att kameran inte kan se igenom det skymande objektets yta. För objekt vars ytor går att se igenom (exempelvis fönster) används metoden Alpha-Blending, där ytan i fråga har ett värde, som varierar mellan noll och ett, för en variabel alfa. Värdet för alfa definierar hur transparent ett föremål är, utifrån detta räknar GPU:n ut hur mycket det går att se igenom ett objekt. (Hock-Chuan, 2012) Figur 4: Graphics pipeline (Hock-Chuan, 2012)
Slutsats Den Grafiska pipelinen består av Vertex processing, Rasterizer, Fragment processing och Output merging. När vertices passerar igenom den grafiska pipelinen kommer de slutligen ut som en färdig bild i en 2D graf.
Referenser Chua Hock-Chuan, Juli 2012 - http://www.ntu.edu.sg/home/ehchua/programming/opengl/cg_basicstheory.html (hämtad 26/11 18) Kayvon Fatahalian, November 2012 http://www.cs.cmu.edu/afs/cs/academic/class/15462-f12/www/lec_slides/462_gpus.pdf (hämtad 26/11 17)