Teknik för avancerade datorspel!

Relevanta dokument
Teknik för avancerade datorspel!

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

Grafiska pipelinens funktion

Information Coding / Computer Graphics, ISY, LiTH. Minnesaccess. Vitalt för prestanda! Minnestyper. Coalescing

TSBK 10 Teknik för avancerade datorspel Fö 9: Nätverk, Peter Johansson, ISY

Simulering av rök på GPU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Information Coding / Computer Graphics, ISY, LiTH

Parallellism i NVIDIAs Fermi GPU

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

Geometry shaders! och Tesselation shaders!

Shaders. Gustav Taxén

Spelutveckling - Scenegrafer. Scenegrafer Optimeringar Culling

Procedurell grottgenerator och eld i GLSL. Marcus Widegren

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

Information Coding / Computer Graphics, ISY, LiTH. Bump mapping!

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

Magnus Nielsen, IDA, Linköpings universitet

Designing a Shading System. David Larsson

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

Procedurella Grottor TNM084. Sammanfattning. Alexander Steen

Fotorealistiska bilder 1 PV360 kap 1 7: Grunder samt material och dekaler i Photoview 360

Geometry shaders! och Tesselation shaders!

Procedurell renderingsmotor i Javascript och HTML5

Tentamen TNM061, 3D-grafik och animering för MT2. Tisdag 3/ kl 8-12 TP51, TP52, TP54, TP56, TP41, TP43. Inga hjälpmedel

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

TBSK 03 Teknik för avancerade datorspel. Jens Ogniewski Information Coding Group Linköpings universitet

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem

Tentamen TNM061, 3D-grafik och animering för MT2. Onsdag 20/ kl SP71. Inga hjälpmedel

Föreläsning 11 Datastrukturer (DAT037)

Procedurell Terräng med LOD i OpenGL 4

Föreläsning 2 Datastrukturer (DAT037)

Omtentamen. TNM077 3D-datorgrafik och animering kl 8-12 Inga hjälpmedel. (samt även TNM008 3D-datorgrafik och VR)

Datorgrafik. Programkurs 6 hp Computer Graphics TSBK07 Gäller från: 2018 VT. Fastställd av. Fastställandedatum

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

Teknik för avancerade datorspel

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Information Coding / Computer Graphics, ISY, LiTH CUDA. En lösning för generella beräkningar. En introduktion: Programmingsmodell och språk

Sortering. Intern/ extern? Antaganden. Vad kan vi kräva? Rank sort. Rank sort. På en nod/ distribuerad? Jämförelsebaserad/ icke jämförelsebaserad?

Algoritmer. Två gränssnitt

Tommy Färnqvist, IDA, Linköpings universitet

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

Datorgrafik Ray tracing. Mattias Ekström, Västerås,

Projekt i TNM084, Procedurella bilder

Grafiska pipelinen. Edvin Fischer

Sökning och sortering. Linda Mannila

Programmering för språkteknologer II. OH-serie: Sökning och sortering. Algoritm

Datorgrafik, kandidat 2018

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Datorspelsgrafik. Gustav Taxén

1 Standardalgoritmer. 1.1 Swap. 1.2 Sök minsta värdet i en array

Sökning och sortering

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

Skinning and Animation

Introduktion till 3DSMax TNM061/TNGD25 Lab4 Animering och simulering

Föreläsning 12. Söndra och härska

Linjär Algebra, Föreläsning 9

Institutionen för systemteknik

Industriella styrsystem, TSIU06. Föreläsning 2

Några saker till och lite om snabbare sortering

TBSK 03 Teknik för Advancerade Datorspel

Texturerade 3D-modeller

HAND TRACKING MED DJUPKAMERA

Problemlösning och funktioner Grundkurs i programmering med Python

Abstrakta shadergrafer för hårdvarushaders med multipla shaderspråk Richard Svensson

Objektorienterad programmering Föreläsning 10. Copyright Mahmud Al Hakim Sorteringsalgoritmer

Fotorealism, animering, SW resurser

Lokala betygskriterier Matematik åk 8

Att räkna med mellanbilder genom ett system med många linser och gränsytor blir krångligt. Vi vill kunna avbilda genom alla ytor direkt.

Tentamen den 18 mars svar Datorteknik, EIT070

Signal och bildbehandling SBB. Två (nästan identiska) profiler på D/IT resp Y programmen inom området datorer & bilder Profilansvarig: Klas Nordberg

Computer Science, masterprogram

Texturmappningsalgoritmer

Innehåll. Kamerabaserad interaktion Del 3 3D och AR. Världen genom datorn. Vad är AR? AR vs. VR. Potential

Signal och bildbehandling SBB

Simulering och rendering av gräs och vind i realtid

Hemtenta i Grafik och Interaktionsprogrammering Martin Berglund Uppgift 1 Föreläsning 1 Föreläsning 2 föreläsning 3 föreläsning 4

Universe Engine Rapport

Algoritmer för gallring av dolda ytor Johannes Staffans Institutionen för informationsbehandling Åbo Akademi, FIN Åbo, Finland e-post:

samt lite algoritmer en kortfattad introduktion för studenter på Intro:DV

Föreläsning 1. Introduktion. Vad är en algoritm?

En enkel förbättring av stränder inom Visual Effects

Rendera med mental ray

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

Parallellprogrammering i C++ 17 EDT621 Datorarkitekturer med Operativsystem Viktor Lindgren

Configura 9.0 Release notes 18 april 2016

Programmering för språkteknologer II, HT2014. Rum

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

TSBK 10 Teknik för avancerade datorspel Fö 10: Nätverk, Peter Johansson, ISY

Föreläsning 12. Söndra och härska

ID1020: Quicksort. Dr. Jim Dowling kap 2.3. Slides adapted from Algoritms 4 th Edition, Sedgewick.

Här är ett väldigt bra tidpunkt att spara scenen. Jag har valt att bygga ett litet pyramidtorn.

Problemlösning och algoritmer

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Hyper Threading Intels implementation av SMT. Datorarkitekturer med operativsystem - EITF60. Felix Danielsson IDA2

Cel-shadings påverkan på effektivitet inom animerad film

UTVÄRDERING AV ALGORITMER FÖR BRED KOLLISIONSDETEKTERING MED HJÄLP AV BOIDS ALGORITM

SIMD i Intel s P5- baserade Pentium MMX

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

LANDING ZONE II (v1.0, uppgift 2 av 4) för 3D Animering B 1112

Transkript:

1(84) Information Coding / Computer Graphics, ISY, LiTH TSBK 03 Teknik för avancerade datorspel Ingemar Ragnemalm, ISY Fysik Datorgrafik Spelmekanismer AI Animation 1(84)

Föreläsning 5 GPU computing GPU computing/gpgpu, vad och varför Partikelsystem i shaders Intro till CUDA Lite om Compute Shaders 2(84)2(84)

GPU Computing/GPGPU Generella beräkningar på GPUs Intressant trend som kom i början på 2000-talet: Försök använda GPU ns beräkningskraft för andra problem än grafik Argument för: GPU erna uppvisar stor prestandaökning medan CPU er håller på att avstanna. Nyckelkomponenter: Shaders, flyttalsbuffrar, parallellism. 3(84)3(84)

Power wall Vi kan inte längre höja frekvensen. Effekten stiger brant. Men vi kan öka ANTALET 4(84)4(84)

The GFLOPS race 5(84)5(84)

6(84)6(84)

Hur är detta möjligt? Area use: Men i synnerhet: SIMD architecture, många små processorer 7(84)7(84)

Typisk klassisk GPGPU: som filtreringsdelen i HDR Samma grundkoncept: Rendera till rektangel över hela bilden Gärna FBOs Flyttalsbuffrar Ping-ponging, flera pass med olika shaders 8(84)8(84)

Enklaste GPGPU: Processning av existerande bilder Skillnad: Vi jobbar med en bild, en rektagulär yta, från början. Linjära filter precis som i shaders, möjligheter till multipass och kombination av bilder. 9(84)9(84)

GPGPU-konceptet Array av indata = textur Array av utdata = resulterande frame buffer Beräkningskärna = shader Beräkning = rendering Återkoppling = växling av FBO eller kopiering av textur OBS skillnaden i renderingssituation: Extremt enkel geometri. Inget behov av vertexshaders. Mycket arbete på pixelnivå. Stora krav på fragmentshaders, höga precisionskrav. 10(84) 10(84)

Enkelt exempel: process-array Array av data läggs i textur uniform sampler2d texunit; in vec2 texcoord; out vec4 fragcolor; void main(void) { vec4 texval = texture(texunit, texcoord); fragcolor = sqrt(texval); } Hämtas sedan tillbaka till CPU igen. 11(84)11(84)

Shader-baserad GPGPU idag? Om ditt problem passar i grafikpipelinen Utmärkt för problem som lätt mappas på texturdata. Problem: Data bör mappas på RGBA. Renderingsdelarna gör ditt program mer komplicerat. 12(84)12(84)

Att processa partikelsystem med shaders Stora partikelsystem bör hanteras på GPU Detta kan göras med shaders, men även med CUDA/CL/CS. CPU: Ohanterbart med mer än ganska små system. Partikelsystem lämpligt för parallella beräkningar. Shaders nära grafiken, men lite mindre flexibelt än t.ex. CUDA. 13(84)13(84)

Minimalt partikelsystem Position p Hastighet v Uppdatering: Position p = p + v * dt Hastighet v = v + a * dt 14(84)14(84)

Lagra data i texturer positiontex R G B vec3 = p velocitytex R G B vec3 = v 15(84)15(84)

Dubbla texturer för ping-ponging positiontex1 positiontex2 velocitytex1 velocitytex2 16(84)16(84)

Rendera till FBO för att uppdatera Rendera till textur, uppdatera positioner positiontex1 + positiontex2 velocitytex1 Rendera till textur, uppdatera hastigheter velocitytex2 17(84)17(84)

Två problem kvar: Sortering Rendering 18(84)18(84)

Sortering behövs i många fall Partiklar med semitransparens Sortera på avstånd från kameran QuickSort olämplig Bitonic Merge Sort bättre Parallell bubblesort i några steg per fram kan vara ett bättre val 19(84)19(84)

Parallell bubblesort: Jämför parvis 20(84)20(84)

Rendering med instancing: Beräkna position i textur från instancing-index Sätt position (vertexshader) på billboard från position läst ur textur p p 21(84)21(84)

Kollisionsdetektering för partikelsystem Svårt problem - många till många Dela upp i celler Octrees möjligt, uniform uppdelning ofta effektivare. Test mot omgivning: Kan förenklas t.ex. med Z- buffer 22(84)22(84)

Exempel: Regn/snö mm Kamera för att rendera Z-buffer uppifrån Z-buffer Scen Partiklar kan nu studsa av objekt enbart genom att inspektera Z- buffern 23(84)23(84)

Sammanfattning: Lagra partikeldata i texturer, en per texel Bind texturerna till FBOer Uppdatera genom rendering med ping-ponging Kollisionsdetektering Sortering (om det behövs) Rendera partiklar med instancing 24(84)24(84)