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?

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

Grafiska pipelinens funktion

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

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

Geometry shaders! och Tesselation shaders!

Information Coding / Computer Graphics, ISY, LiTH

Parallellism i NVIDIAs Fermi GPU

Shaders. Gustav Taxén

Procedurell grottgenerator och eld i GLSL. Marcus Widegren

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

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

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

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

Magnus Nielsen, IDA, Linköpings universitet

Procedurella Grottor TNM084. Sammanfattning. Alexander Steen

Geometry shaders! och Tesselation shaders!

Procedurell renderingsmotor i Javascript och HTML5

Designing a Shading System. David Larsson

Spelutveckling - Scenegrafer. Scenegrafer Optimeringar Culling

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

Föreläsning 11 Datastrukturer (DAT037)

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

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

Teknik för avancerade datorspel

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

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

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:

Procedurell Terräng med LOD i OpenGL 4

Sökning och sortering. Linda Mannila

Föreläsning 2 Datastrukturer (DAT037)

Projekt i TNM084, Procedurella bilder

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

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

Datorspelsgrafik. Gustav Taxén

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

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

Algoritmer. Två gränssnitt

Skinning and Animation

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

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

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

Institutionen för systemteknik

Linjär Algebra, Föreläsning 9

Några saker till och lite om snabbare sortering

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

Problemlösning och funktioner Grundkurs i programmering med Python

Sökning och sortering

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

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

Lokala betygskriterier Matematik åk 8

Grafiska pipelinen. Edvin Fischer

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

Computer Science, masterprogram

Texturmappningsalgoritmer

Displaysystem. Hans Brandtberg Saab Avitronics SAAB AVITRONICS

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

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

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

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

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

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

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

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

Industriella styrsystem, TSIU06. Föreläsning 2

Problemlösning och algoritmer

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

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

SIMD i Intel s P5- baserade Pentium MMX

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

Matematikboken Z PROVLEKTION: RÄKNA OCH HÄPNA

HAND TRACKING MED DJUPKAMERA

Simulering och rendering av gräs och vind i realtid

KONSULTPROFIL Marco. Fullstackutvecklare. Sammanfattning. Uppdragshistorik

Föreläsning 2 Datastrukturer (DAT037)

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)

Provet består av Del I, Del II, Del III samt en muntlig del och ger totalt 76 poäng varav 28 E-, 24 C- och 24 A-poäng.

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

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

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

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

Föreläsning Datastrukturer (DAT037)

Vektoranalys, snabbrepetition. Vektorfält

Glesa voxelträd: skapande och lagring HENNING TEGEN

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.

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

Utveckling av terräng och partikeleffekter med

KUNDCASE. Inovia gjorde sin AI-utveckling 10 gånger snabbare med Power-plattformen

TBSK 03 Teknik för Advancerade Datorspel

Datorarkitekturer med operativsystem ERIK LARSSON

Sortering. Om du följt dessa steg korrekt så ska böckerna nu vara sorterade.

Introduktion till programmering

Tentamen den 18 mars svar Datorteknik, EIT070

P Q = ( 2, 1, 1), P R = (0, 1, 0) och QR = (2, 2, 1). arean = 1 2 P Q P R

Datorgrafik, kandidat 2018

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

The Procedural Arctic

Transkript:

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

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

GPU Computing/GPGPU Generella beräkningar på GPUs Intressant trend: 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. 3(83)3(83)

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

The GFLOPS race 5(83)5(83)

6(83)6(83)

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

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(83)8(83)

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(83)9(83)

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(83) 10(83)

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(83)11(83)

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(83)12(83)

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(83)13(83)

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

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

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

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

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

Sortering behövs i många fall 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(83)19(83)

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

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(83)21(83)

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(83)22(83)

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 23(83)23(83)