Grafiska pipelinens funktion

Relevanta dokument
Grafiska pipelinen. Edvin Fischer

Shaders. Renderingssystem. Renderingssystem. Renderingssystem. Hårdvara för 3D-rendering. Hårdvara för 3D-rendering

Shaders. Gustav Taxén

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

Procedurell renderingsmotor i Javascript och HTML5

Parallellism i NVIDIAs Fermi GPU

A comparison study between OpenGL 4.3, OpenGL ES 3.0 and WebGL 1.0 With focus on rendering pipeline and texture handling

PROCEDUELL TERRÄNG. Proceduella metoder för bilder (TNM084) Jimmy Liikala Institutionen för teknik och naturvetenskap

Geometry shaders! och Tesselation shaders!

I rastergrafikens barndom...gjorde man grafik genom att skriva i ett videominne. Operationer på buffert och pixlar. Idag... Varför grafikkort?

Procedurell Terräng med LOD i OpenGL 4

Geometry shaders! och Tesselation shaders!

Teknik för avancerade datorspel!

Teknik för avancerade datorspel!

Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall

Procedurella Grottor TNM084. Sammanfattning. Alexander Steen

Robin Wahlstedt Datavetenskap / Spel Vetenskapsmetodik rwt07001@student.mdh.se. Datorgrafik i spel

Spelutveckling 3d-grafik och modellering. Grunder för 3d-grafik Blender Animering

Teknik bakom tredimensionella datorgrafiken Direct3D

Datorarkitektur. Informationsteknologi sommarkurs 5p, Agenda. Slideset 3

Digitala projekt rapport

Avalanche Studios. OpenGL. Vår teknik. Våra spel. Lite inspiration... Stora, öppna spelvärldar. Sandbox-gameplay. Hög audiovisuell standard

Laboration - Shaders

Repetition + lite av varje. Ulf Assarsson Department of Computer Engineering Chalmers University of Technology

Ett enkelt OCR-system

Procedurell grottgenerator och eld i GLSL. Marcus Widegren

Realtidsalgoritmer för ljusets spridning och absorption mot partiklar i luften P E T E R L Ö N N Q U I S T

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Föreläsning 2. Operativsystem och programmering

Procedurell 3D-eld på grafikkortet

HF0010. Introduktionskurs i datateknik 1,5 hp

I rastergrafikens barndom...gjorde man grafik genom att skriva i ett videominne. Operationer på buffert och pixlar. Idag... Varför grafikkort?

GPU Volume Voxelization

Introduktion till Matlab

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Grundläggande datavetenskap, 4p

Mälardalens högskola Västerås, Maj 2006 Institutionen för Datavetenskap och Elektronik, IDE Student: Alexander Andersson E-post:

Tron Style OpenGL ES 2.0 Shaders för ios Möjligheten att implementera ett Bloomfilter på ett ios-device

Pipelining i Intel Pentium II

Föreläsning 1: Intro till kursen och programmering

Den tekniska utvecklingen av hårdvara och mjukvara för realtidsgrafik

MESI-protokollets funktion i multiprocessorer

Displaysystem. Hans Brandtberg Saab Avitronics SAAB AVITRONICS

Föreläsning 1: Intro till kursen och programmering

CDC en jämförelse mellan superskalära processorer. EDT621 Campus Helsingborg av: Marcus Karlsson IDA

Mönsterigenkänning och följning Digitala projekt VT 2004 Carl Loodberg, grupp 10

Utveckling av terräng och partikeleffekter med

Tentamen PC-teknik 5 p Lösningar och kommentarer

Skinning and Animation

SIMD i Intel s P5- baserade Pentium MMX

3. Välj den sprajt (bild) ni vill ha som fallande objekt, t ex en tårta, Cake. Klicka därefter på OK.

Parallellism i CDC 7600, pipelinens ursprung

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Fredrik Ove Edvard Pensar. SLI och CrossFire - En studie i grafisk hårdvara

Grafik. TDDC66 Datorsystem och programmering Föreläsning 4. Peter Dalenius Institutionen för datavetenskap

Koordinatsystem och Navigation

Hannes Larsson - IDA 2, LTH Campus Helsingborg. NEC V R 4300i. Interlock-handling EDT621

Borttagning av skymda ytor Painter s Algorithm och Z-buffering. MICHAEL HJORTHOLT och ANDREAS PAULSSON

Grafisk Teknik. Rastrering. Övningar med lösningar/svar. Sasan Gooran (HT 2013)

Designing a Shading System. David Larsson

Cache-koherens protokoll MESI och MOSI

Processor pipelining genom historien (Intel i9-intel i7)

Viktigt säkerhetsmeddelande till marknaden, Korrigering av medicinteknisk produkt #15483

Datorarkitekturer med operativsystem ERIK LARSSON

Du kan även lyssna på sidorna i läroboken: Teknik direkt s Lyssna gör du på inläsningstjänst.

Introduktion till Matlab

GPGPU-LOD (General Purpose Graphics Processing Unit - Level Of Detail)

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

Universe Engine Rapport

Programmeringsuppgift Game of Life

Datorkonstruktion - Grafik för datorspel

Extramaterial till Matematik Y

Datorövning 1 Calc i OpenOffice 1

Vector Displacement Mapping

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

Introduktion till programmering

TNM022 Proceduella Bilder Rendering av proceduell päls i realtid

Hantering av hazards i pipelines

Program som ska exekveras ligger i primärminnet. Processorn hämtar instruk7on för instruk7on. Varje instruk7on, som är e= antal 1:or och 0:or, tolkas

Moment 2 Digital elektronik. Föreläsning Inbyggda system, introduktion

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach

TBSK03 Teknik för avancerade Datorspel. Jens Ogniewski Information Coding Group Linköpings universitet

Information Coding / Computer Graphics, ISY, LiTH. Compute shaders!! Framtiden för GPU computing eller sen efterapning av Direct Compute?

Inledande programmering med C# (1DV402) Introduktion till programmering

Pipelining i Intel 80486

Tolkningen av L-system i realtid på grafikkortet

1 Kravspecifikation Snake App

DYNAMISKT MEDIANFILTER I REALTIDSSPEL

Inledning till OpenOffice Calculator Datorlära 2 FK2005

Extramaterial till Matematik Y

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

Grunder. Grafiktyper. Vektorgrafik

3.0. Tips och Trix Sida 1 av 18

När man vill definiera en matris i MATLAB kan man skriva på flera olika sätt.

Voxelbaserad rendering med Marching Cubes -algoritmen Patrik Andersson Kandidatarbete 2009

CanCom Bluetooth BLUETOOTH V5.6. Specifikation Specification LED. transceiver

IT-GUIDE Version 1.0 Författare: Juha Söderqvist

Realtids-strålföljning med geometriska primitiver på programmerbara grafikprocessorer (HS-IDA-EA )

Transkript:

LUNDS TEKNISKA HÖGSKOLA CAMPUS HELSINGBORG Grafiska pipelinens funktion Ludvig von Sydow EDT62, HT17 Datorarkitekturer med Operativsystem

Sammanfattning Denna rapport syftar till att beskriva hur en graphics pipeline är uppbyggd och vad skillnaden är mellan en graphics fixed-function pipeline och en programmerbar pipeline. Mot bakgrund av detta syfte så har rapporten utgått utifrån följande frågeställningar: Vilka steg har en graphics pipeline? Vad är det för skillnad på en fixed-function pipeline och en programmerbar pipeline? Pipelinen går ut på att från värden på vertex som kommer in i pipelinen ska bearbetas i 4 olika steg för att kunna visa en 3D bild på en 2D display. Rapporten inkluderar en förklaring av dessa steg och vad de gör samt en jämförelse mellan en fixed-function pipeline och en programmerbar pipeline. Resultatet visar att en programmerbar pipeline är mycket mer flexibel och tillfredställande för användare och utvecklare än en fixed-function pipeline. Slutsatserna som presenteras är att steget till programmerbar pipeline är positivt för användare då GPU:s blir mer flexibla och kan användas till mer program än för fixed-function pipelines. 1

1 Inledning 1.1 Bakgrund För att ett datorspel eller annan datoranimation med 3D grafik ska gå att visas på en skärm måste systemet ha ett grafikkort. Ett grafikkort eller GPU, Graphics Processing Unit, kan sitta i ett videokort eller på moderkortet. Meningen med ett grafikkort är att den får 3D data från processorn och omvandlar detta till en 2D bild och beräknar hur detta ska visas på skärmen. Den gör alltså beräkningar för hur den ska rendera data på en skärm. Detta sker i den grafiska pipelinen. 1.2 Syfte och problemformulering Syftet med denna rapport är att visa hur en graphics pipeline fungerar. Frågeställningarna lyder: Vilka steg har en graphics pipeline? Vad är det för skillnad på en fixed-function pipeline och en programmerbar pipeline? 2 Graphics pipeline 2.1 Olika delarna i en Graphics pipeline En graphics pipeline är uppdelad i 4 delar: Vertex, Primitive, Fragment och pixel operations. (Kayvon Fatahalian 2011, bild 13). I Vertex delen så beräknas var topparna, det vill säga vertices, av det som ska renderas är. Sedan organiseras dessa i primitive steget där olika vertices sätts ihop. I nästa steg, fragment, så beräknas vilka pixlar som ska användas och ger dem färg. Efter det så visas det på skärmen i pixel operations steget. 2.1.1 Vertex I vertex delen tas data in från en input assembler som beroende på teknik finns i GPU eller i CPU. Enligt Hock-Chuan (2012) består en vertex av en vector med följande information: 1. Koordinater i ett 3D plan (x,y,z) 2. Färg(Red-Green-Blue) 3. Vertex-normal (n x, n y, n z ) 4. Textur (s,t som är en referenspunkt) Figur 1: Vertices (Fatahalian, 2012) 2

2.1.2 Primitives Primitives skapas utifrån att en eller flera vertices och kan se ut på många olika sätt. Exempelvis kan de se ut som trianglar där varje hörn har information om färg, position, textur och dess normal. Då vertices inte är grid-aligned så är inte primitives det heller. (Hock- Chuan, 2012) Figur 2: Primitives (Fatahalian, 2012) 2.1.3 Fragments För att bilden ska visas rätt på skärmen måste alla primitives vara rätt anpassade till skärmen. Detta görs i ett rasterization steg genom att varje primitive genomgår en raster-scan som innebär att skärmen tar reda på vilken färg varje pixel har, från vänster till höger och uppifrån och ner, då skapas det fragment inom varje primitiv. Ett fragment har en position (x,y,z) där x och y matchas med skärmens 2D rutnät, z värdet anger vilket djup som fragmentet har. Utöver detta så har varje fragment samma värden som de vertices som anger primitiven. (Hock- Chuan, 2012) Figur 3: Fragments (Fatahalian, 2012) 3

2.1.4 Pixel Operations För att bilderna ska kunna visas på skärmen så skickas värdena från processen till framebuffer. Frame-buffer är en speciell del av GPUns minne där färgvärdena från varje pixel lagras. Här läser sedan displayen varje pixels värden och visar sedan dessa. Beroende på pixelns z-värde så visas olika färger på varje pixel. (Hock-Chuan, 2012) Kommenterad [LvS1]: Hur kan vi skriva? Figur 4: Pixels (Fatahalian, November 2012) 2.1.5 Processing Varje del förutom den sista är uppdelad i två olika steg, generation och processing. I Generation så tar man emot data från föregåendes process steg där textur har lagts till. Exempelvis så efter att primitiverna fragmenterats så går fragmenten in i processing-steg där varje fragment får en egen färg. Dessa delar av pipelinen kallas i moderna system för shaders som vi kommer prata om lite senare. (Hock-Chuan, 2012) Figur 5: Shaded fragments (Fatahalian, 2012) 4

2.2 Fixed-function pipeline Då grafikkort först började produceras var det fixed-function pipelines som användes. I varje processteg i pipelinen så fanns det inbyggda matematiska formler som var komplexa och därmed inte enkla att ändra på. Genom att ställa in vissa inställningar och skicka in matriser med relevanta värden så kunde användaren få grafikkortet att göra användbara saker. Detta sätt var väldigt oflexibelt. I fragments processteg så får pixlarna färg och textur. Om användaren vill få en viss funktion inom detta steg, så fick man i en fixed-function pipeline ställa in detta genom inställningar snarare än programmering. Dessa inställningar kallas för texture environment. Texture enviornment är den del man kan göra flest inställningar i men inte den enda. Man kan exempelvis göra inställningar i vertex-delen med men dessa gick inte att justera lika mycket. vertex-delen är mycket hårdkodad vilket göra denna ännu mer oflexibel. (www.khronos.org, 2015) 2.3 Programmable pipeline En programmable pipeline är ser ungefär likadan ut som en fixed-function pipeline. Den enda skillnaden är att i en programmerbar pipeline kan justeringar göras i varje processteg med hjälp av programmering. Dessa steg är nu mycket flexibla och användaren kan programmera beteendet för varje steg. Varje steg har nu en shader. 2.3.1 Shaders En shader är ett program skapat av användaren som exekveras i process-steget i varje del. Syftet med en shader är att den ska exekvera ett av de programmerbara steg som finns i pipelinen. Det finns några shaders som användaren kan programmera, några exempel är vertex shader, geometry shader och fragment shader. Dessa shaders kan programmeras i språk som OpenGL eller DirectX som båda är språk som påminner om C (www.khronos.org, 2015). Figur 6: Graphics pipeline (Hock-Chuan, 2012) 5

3 Slutsats En graphics pipeline består av fyra grund-delar som är vertex, primitives, fragments och pixel operations. Dessa är i sin tur uppdelade i två steg enviornment och processing där den förstnämnda tar emot data från tidigare steg medans den senare gör beräkningar och skickar vidare. Skillnaden mellan en fixed-function pipeline och en programmerbar är inte stor. Däremot den lilla skillnad som finns mellan dem resulterar i stor förändring för användaren. En fixedfunction pipeline har hårdkodade matematiska formler i processtegen vilket gör hela processen oflexibel och användaren får oftast anpassa sig till pipelinen snarare än tvärtom. Shaders medför en stor flexibilitet för användaren och kan med denna enkelt anpassa grafiken efter programmet. En slutsats som kan belysas är att utvecklingen från att gå från fixed-function pipeline till programmerbar pipeline är att GPU generellt sätt blivit mer mångsidiga och kan användas till många olika saker. Innan denna utveckling skedde så var GPU:s isolerade och specialanpassade för ett visst program eller liknande. Nu kan en GPU användas effektivt med många olika sorters program oberoende av behovet vilket i sin tur är positivt för den alldagliga användaren. 6

Källförteckning OpenGL wiki https://www.khronos.org/opengl/wiki/ (hämtade 25/11 17) Följande sub-sidor har används: 1. Fixed_function_pipeline (April 2015) 2. Shader (May 2015) Chua Hock-Chuan, Juli 2012 - http://www.ntu.edu.sg/home/ehchua/programming/opengl/cg_basicstheory.html (hämtad 26/11 17) Kayvon Fatahalian, November 2012 - http://www.cs.cmu.edu/afs/cs/academic/class/15462- f12/www/lec_slides/462_gpus.pdf (hämtad 4/12 17) Mark, Maj 2014, http://www.zedalos.org/2014/05/introduction-into-zedalos-computer-graphics-the-renderingpipeline/ (hämtad 26/11 17) 7