Počítačová grafika a vývoj počítačových her
7. Počítačová grafika a vývoj počítačových her
Garantující pracoviště: Katedra softwaru a výuky informatiky
Oborový garant: Doc. Alexander Wilkie, Dr.
Zaměření:
- – počítačová grafika
- – vývoj počítačových her
Absolvent oboru je zdatným programátorem se znalostí příslušných postupů a technologií. Podle zvoleného zaměření je vybaven buď hlubokými znalostmi z počítačové grafiky a analýzy obrazu, anebo - v zaměření Vývoj počítačových her - jeho znalosti pokrývají programování rozsáhlých herních projektů, aplikací pracujících v reálném čase, programování malých zařízení, jakožto i základy umělé inteligence a základy počítačové grafiky v kontextu počítačových her. Absolvent umí tyto znalosti aplikovat při řešení konkrétních praktických úkolů.
Povinné předměty
kód | Předmět | Kredity | ZS | LS | |
NTIN090 | Základy složitosti a vyčíslitelnosti | 5 | 2/1 Z+Zk | — | |
NTIN066 | Datové struktury I | 5 | 2/1 Z+Zk | — | |
NMAI060 | Pravděpodobnostní metody | 3 | 2/0 Zk | — | |
NPRG027 | Zápočet k projektu | 6 | 0/4 Z | 0/4 Z | |
NPRG023 | Softwarový projekt | 9 | 0/6 Z | 0/6 Z | |
NSZZ023 | Diplomová práce I | 6 | 0/4 Z | 0/4 Z | |
NSZZ024 | Diplomová práce II | 9 | 0/6 Z | 0/6 Z | |
NSZZ025 | Diplomová práce III | 15 | 0/10 Z | 0/10 Z |
Povinně volitelné předměty
Je požadováno splnění povinně volitelných předmětů z následujícího seznamu v rozsahu alespoň 47 kreditů:
kód | Předmět | Kredity | ZS | LS | |
NPGR007 | Pokročilá 2D počítačová grafika | 5 | 2/1 Z+Zk | — | |
NPGR010 | Počítačová grafika III | 6 | 2/2 Z+Zk | — | |
NPGR001 | Autonomní robotika | 5 | 2/2 Z+Zk | — | |
NPGR021 | Geometrické modelování | 6 | 2/2 Z+Zk | — | |
NPGR026 | Predictive Image Synthesis Technologies | 6 | — | 2/2 Z+Zk | |
NPGR027 | Shading Languages | 5 | — | 2/1 Z+Zk | |
NPGR028 | High Performance Ray Tracing | 3 | — | 2/0 Zk | |
NPGR033 | Grafika pro počítačové hry | 6 | — | 2/2 Z+Zk | |
NPGR024 | Seminář z vědecké práce | 3 | — | 0/2 Z | |
NPGR029 | Variační metody ve zpracování obrazu | 3 | — | 2/0 Zk | |
NSWI115 | Vývoj počítačových her | 6 | 2/2 Z+Zk | — | |
NPRG056 | Vývoj aplikací pro mobilní zařízení | 3 | 0/2 Z | — | |
NSWI035 | Principy distribuovaných systémů | 3 | 2/0 Zk | — | |
NPRG054 | Vývoj vysoce výkonného software | 5 | — | 2/2 Z+Zk | |
NPRG042 | Programování v paralelním prostředí | 6 | — | 2/2 Z+Zk | |
NAIL069 | Umělá inteligence I | 5 | 2/1 Z+Zk | — | |
NAIL070 | Umělá inteligence II | 3 | — | 2/0 Zk | |
NPRG059 | Praktikum z pokročilého objektového programování | 2 | 0/1 Z | — | |
NSWI026 | Pokročilé aspekty softwarového inženýrství | 5 | — | 2/2 Z+Zk | |
NAIL068 | Umělé bytosti | 6 | — | 2/2 Z+Zk | |
NAIL071 | Plánování a rozvrhování | 3 | — | 2/0 Zk | |
NPRG043 | Doporučené postupy v programování | 6 | — | 2/2 Z+Zk | |
NMAI061 | Metody matematické statistiky | 5 | — | 2/1 Z+Zk | |
NAIL106 | Multiagentní systémy | 6 | — | 2/2 Z+Zk | |
NPGR016 | Aplikovaná výpočetní geometrie | 5 | — | 2/1 Z+Zk | |
NPRG014 | Koncepty moderních programovacích jazyků | 3 | 0/3 Z | — | |
NPFL114 | Hluboké učení | 7 | — | 3/2 Z+Zk |
Doporučené volitelné předměty
kód | Předmět | Kredity | ZS | LS | |
NPGR005 | Speciální seminář z počítačové grafiky | 2 | 0/2 Z | 0/2 Z | |
NPGR013 | Speciální funkce a transformace ve zpracování obrazu | 3 | — | 2/0 Zk | |
NPGR022 | Speciální seminář ze zpracování obrazu | 2 | 0/2 Z | 0/2 Z | |
NAIL028 | Úvod do robotiky | 6 | 2/2 Z+Zk | — | |
NAIL108 | Mobilní robotika | 3 | — | 1/1 KZ | |
NSWI072 | Algoritmy komprese dat | 3 | 2/0 Zk | — | |
NPGR012 | Interaktivní 3D grafika na webu | 6 | 2/2 Z+Zk | 2/2 Z+Zk | |
NPGR030 | Optika pro počítačovou grafiku | 3 | 2/0 Zk | — | |
NPGR023 | Visualizace | 5 | 2/1 Z+Zk | — | |
NAIL025 | Evoluční algoritmy I | 6 | 2/2 Z+Zk | — | |
NAIL082 | Seminář z umělých bytostí | 3 | 0/2 Z | 0/2 Z | |
NAIL087 | Informatika a kognitivní vědy I | 6 | 3/1 Z+Zk | — | |
NSWI149 | Softwarové inženýrství v praxi | 3 | — | 2/0 Z | |
NPRG058 | Pokročilé programování v paralelním prostředí | 3 | 0/2 Z | — | |
NSWI159 | Praktikum z vývoje počítačových her | 2 | 0/1 Z | 0/1 Z | |
NSWI160 | Herní middleware | 6 | 0/4 Z | — |
Státní závěrečná zkouška
Zaměření: Počítačová grafika
Ke dvěma povinným okruhům společným pro všechny obory si student vybere alespoň dva z následujících okruhů:
- – Geometrické modelování a výpočetní geometrie
- – Analýza a zpracování obrazu, komprese obrazu, počítačové vidění
- – Realistická syntéza obrazu
Třetí okruh student zvolí libovolně ze všech okruhů nabízených v zaměřeních Počítačová grafika a Vývoj počítačových her, kromě okruhu``Počítačová grafika pro hry". Z každého vybraného okruhu dostane po jedné otázce. Celkem tedy každý student dostane pět otázek.
Zkušební okruhy
- 1. Geometrické modelování a výpočetní geometrie
- 2. Analýza a zpracování obrazu, komprese obrazu, počítačové vidění
- 3. Realistická syntéza obrazu
Zkušební požadavky
1. Geometrické modelování a výpočetní geometrie
Homogenní souřadnice, afinní a projektivní transformace v rovině a v prostoru, kvaterniony v reprezentaci 3D orientace, diferenciální geometrie křivek a ploch, základní spline funkce, kubické spliny C2, interpolace kubickými spliny, Bézierovy křivky, Catmull-Rom spliny, B-spliny, de Casteljau a de Boor algoritmus, aproximační plochy, plochy zadané okrajem, Bézierovy plochy, plátování, B-spline plochy, NURBS plochy. Návrh geometrických algoritmů a jejich složitost, triangulace polygonů a množin bodů, Voronoi diagram a Delaunayova triangulace, konvexní obal, průsečíky a průniky geometrických útvarů, dualizace, lokalizace, geometrické vyhledávání, datové struktury pro efektivní prostorové vyhledávání.
Doporučené předměty
kód | Předmět | Kredity | ZS | LS | |
NPGR003 | Základy počítačové grafiky | 5 | 2/2 Z+Zk | — | |
NPGR016 | Aplikovaná výpočetní geometrie | 5 | — | 2/1 Z+Zk | |
NPGR021 | Geometrické modelování | 6 | 2/2 Z+Zk | — | |
NPGR007 | Pokročilá 2D počítačová grafika | 5 | 2/1 Z+Zk | — |
2. Analýza a zpracování obrazu, komprese obrazu, počítačové vidění
Matematický model obrazu, 2D Fourierova transformace a konvoluce, vzorkování a kvantování obrazu, změna kontrastu a jasu, odstranění šumu, detekce hran, inverzní a Wienerův filtr, určení vzájemné polohy snímků, korespondence bodu a objektu, odstranění geometrických zkreslení, detekce hranic objektu, detekce oblastí, příznaky pro popis a rozpoznávání 2D objektů, momentové invarianty, wavelety a jejich použití, statistická teorie rozpoznávání, klasifikace s učením a bez učení, počítačové vidění.
Reprodukce barevné grafiky, rozptylování a půltónování, kompozice poloprůhledných obrázků, warping, morphing, komprese rastrové 2D grafiky, skalární a vektorové kvantování, prediktivní komprese, transformační kompresní metody, hierarchické a progresivní metody, komprese videosignálu, časová predikce (kompenzace pohybu), standardy JPEG a MPEG, snímání obrazu v digitální fotografii.
Doporučené předměty
kód | Předmět | Kredity | ZS | LS | |
NPGR003 | Základy počítačové grafiky | 5 | 2/2 Z+Zk | — | |
NPGR002 | Digitální zpracování obrazu | 5 | 3/0 Zk | — | |
NPGR029 | Variační metody ve zpracování obrazu | 3 | — | 2/0 Zk | |
NPGR013 | Speciální funkce a transformace ve zpracování obrazu | 3 | — | 2/0 Zk | |
NPGR007 | Pokročilá 2D počítačová grafika | 5 | 2/1 Z+Zk | — | |
NPGR001 | Autonomní robotika | 5 | 2/2 Z+Zk | — |
3. Realistická syntéza obrazu
Metody reprezentace 3D scén, výpočet viditelnosti, výpočet vržených stínů, modely osvětlení a stínovací algoritmy, rekurzivní sledování paprsku, textury, anti-aliasing, urychlovací metody pro ray-tracing, princip radiačních metod výpočtu osvětlení, fyzikální model šíření světla (radiometrie, zobrazovací rovnice), Monte Carlo integrování, Monte Carlo přístupy ve výpočtu osvětlení, přímé metody ve vizualizaci objemových dat, generování izoploch. Architektura grafického akcelerátoru, předávání dat do GPU, textury a GPU buffery, programování GPU - shadery. Základy OpenGL, GLSL, CUDA a OpenCL. Pokročilé techniky práce s GPU.
Doporučené předměty
kód | Předmět | Kredity | ZS | LS | |
NPGR003 | Základy počítačové grafiky | 5 | 2/2 Z+Zk | — | |
NPGR004 | Počítačová grafika II | 5 | — | 2/1 Z+Zk | |
NPGR019 | Realtime grafika na GPU | 5 | — | 2/1 Z+Zk | |
NPGR010 | Počítačová grafika III | 6 | 2/2 Z+Zk | — | |
NPGR026 | Predictive Image Synthesis Technologies | 6 | — | 2/2 Z+Zk | |
NPGR027 | Shading Languages | 5 | — | 2/1 Z+Zk |
Zaměření: Vývoj počítačových her
Ke dvěma povinným okruhům společným pro všechny obory student dostane po jedné otázce ze zvolených zkušebních okruhů:
- 1. povinný okruh ``Multi-agentní systémy" ze zaměření Inteligentní agenti oboru Umělá inteligence
- 2. buď okruh ``Počítačová grafika pro hry", nebo libovolný z okruhů ze zaměření Počítačová grafika
- 3. jeden ze zkušebních okruhů: ``Programování paralelních aplikací", ``Systémové aspekty počítačových systémů", ``Moderní koncepty programování", ``Analýza a architektury software", ``Rozšířené programování",``Webové technologie".
Celkem tedy každý student dostane pět otázek.
Zkušební okruhy
- 1. Multi-agentní systémy (povinný okruh pro zaměření Vývoj počítačových her)
- 2. Počítačová grafika pro hry
- 3. Programování paralelních aplikací
- 4. Systémové aspekty počítačů
- 5. Moderní koncepty programování
- 6. Analýza a architektury software
- 7. Rozšířené programování
- 8. Webové technologie
Zkušební požadavky
1. Multi-agentní systémy
Architektura autonomního agenta; percepce, mechanismus výběru akcí, paměť; psychologické inspirace. Metody pro řízení agentů; symbolické a konekcionistické reaktivní plánování, hybridní přístupy. Problém hledání cesty; navigační pravidla, reprezentace terénu. Komunikace a znalosti v multiagentních systémech, ontologie, řečové akty, FIPA-ACL, protokoly. Distribuované řešení problémů, kooperace, Nashova ekvilibria, Paretova efektivita, alokace zdrojů, aukce. Etologické motivace, modely populační dynamiky. Metody pro učení agentů; zpětnovazební učení, základní formy učení zvířat. Metodologie návrhu, jazyky a prostředí multiagentních systémů.
Doporučené předměty
kód | Předmět | Kredity | ZS | LS | |
NAIL054 | Adaptivní agenti | 3 | — | 0/2 Z | |
NAIL068 | Umělé bytosti | 6 | — | 2/2 Z+Zk | |
NAIL106 | Multiagentní systémy | 6 | — | 2/2 Z+Zk |
2. Počítačová grafika pro hry
Homogenní souřadnice, afinní a projektivní transformace v rovině a v prostoru, kvaterniony, spline funkce, interpolace kubickými spliny, Bézierovy křivky, Catmull-Rom spliny, B-spliny, de Casteljau a de Boor algoritmus. Animace postav, skinning, rigging. Detekce kolizí.
2D Fourierova transformace a konvoluce, vzorkování a kvantování obrazu, anti-aliasing, textury, změna kontrastu a jasu, kompozice poloprůhledných obrázků, principy komprese rastrové 2D grafiky, komprese videosignálu, časová predikce (kompenzace pohybu), standardy JPEG a MPEG.
Reprezentace 3D scén, výpočet viditelnosti, výpočet vržených stínů, měkké stíny, rozptyl světla pod povrchem, modely osvětlení a stínovací algoritmy, rekurzivní sledování paprsku, fyzikální model šíření světla (radiometrie, zobrazovací rovnice), algoritmus sledování cest, předpočítané globální osvětlení, výpočet globálního osvětlení v reaálném čase, stínování založené na sférických harmonických funkcích, předpočítaný přenos radiance.
Architektura grafického akcelerátoru, předávání dat do GPU, textury a GPU buffery, programování GPU - shadery. Základy OpenGL, GLSL, CUDA a OpenCL. Pokročilé techniky práce s GPU. Architektura herní engine.
Doporučené předměty
kód | Předmět | Kredity | ZS | LS | |
NPGR003 | Základy počítačové grafiky | 5 | 2/2 Z+Zk | — | |
NPGR004 | Počítačová grafika II | 5 | — | 2/1 Z+Zk | |
NPGR019 | Realtime grafika na GPU | 5 | — | 2/1 Z+Zk | |
NPGR033 | Grafika pro počítačové hry | 6 | — | 2/2 Z+Zk |
3. Programování paralelních aplikací
Moderní hierarchie paměti (multiprocesory, GPU, NUMA), vztah efektivity přístupu a umístění dat. Podpora virtualizace. Transformace úloh na datově paralelní, paralelní řešení nehomogenních úloh. Efektivní paralelní implementace základních algoritmů. Synchronizace, vyvažování zátěže.
Doporučené předměty
kód | Předmět | Kredity | ZS | LS | |
NPRG042 | Programování v paralelním prostředí | 6 | — | 2/2 Z+Zk | |
NPRG054 | Vývoj vysoce výkonného software | 5 | — | 2/2 Z+Zk |
4. Systémové aspekty počítačů
Správa procesů a vláken, komunikace, synchronizace, memory models. Správa paměti (stránkování, heap, garbage collection). Běhová podpora, volací konvence, virtualizace. Správa periferií. Systémy souborů. Metriky výkonnosti systému, měření výkonnosti, simulace a modelování. Vše v kontextu soudobých paralelních architektur.
Doporučené předměty
kód | Předmět | Kredity | ZS | LS | |
NSWI004 | Operační systémy | 5 | 2/1 Z+Zk | — | |
NSWI131 | Vyhodnocování výkonnosti počítačových systémů | 5 | — | 2/1 Z+Zk |
5. Moderní koncepty programování
Moderní objektové koncepty, metaprogramování, reflexe, aspekty. Konstrukce moderních programovacích jazyků (například anotace, iterátory, generika, lambda funkce). Metriky kvality kódu, dokumentace, refaktoring, testování a ladění. Návrhové vzory. Vše v kontextu soudobých programovacích jazyků.
Doporučené předměty
kód | Předmět | Kredity | ZS | LS | |
NPRG043 | Doporučené postupy v programování | 6 | — | 2/2 Z+Zk | |
NPRG014 | Koncepty moderních programovacích jazyků | 3 | 0/3 Z | — |
6. Analýza a architektury software
Procesy vývoje SW a jejich fáze. Podnikové procesy a jejich modelování pomocí BPMN. UML a jeho využití pro analýzu a návrh struktury a chování SW. Návrhové vzory. Testování SW, dopadová a změnová analýza. Plánování SW projektů, odhad nákladů, úrovně řízení projektů. Právní aspekty SW, hlavní zákony důležité pro IT projekty. Typy pohledů na SW architekturu. Modelování a dokumentace SW architektury. Klasifikace atributů kvality SW architektury, jejich popis pomocí scénářů a taktik. Servisně orientované architektury. Algebraické metody, vícedruhové algebry, iniciální modely. Formální základy jazyka UML. OCL jako specifikační jazyk a formální základy dle specifikace. Formální základy RDF a jazyka OWL, deskripční logika.
Doporučené předměty
kód | Předmět | Kredity | ZS | LS | |
NSWI130 | Architektury softwarových systémů | 5 | 2/2 Z+Zk | — | |
NSWI026 | Pokročilé aspekty softwarového inženýrství | 5 | — | 2/2 Z+Zk | |
NTIN043 | Formální základy softwarového inženýrství | 5 | 2/2 Z+Zk | — |
7. Rozšířené programování
Objektové koncepty moderních jazyků. Koncepty jazyků bez tříd. Generické programování a metaprogramování, generika a šablony, politiky, traits, type inference. Moderní konstrukce programovacích jazyků. Odkazy na objekty a jejich životnost. Pokročilé aspekty imperativních jazyků. Výjimky a bezpečné programování v prostředí s výjimkami. Implementace objektových vlastností, běhová podpora, volací konvence, garbage collection. Vliv moderních konstrukcí na výkonnost kódu. Návrhové vzory a jejich využití. Skriptovací jazyky, prototype-based jazyky. Domain Specific Languages. Funkcionální programování. Principy tvorby kvalitního kódu, doporučené postupy. Refaktorizace. Testování funkčnosti, hledání chyb, monitorování programů.
Doporučené předměty
kód | Předmět | Kredity | ZS | LS | |
NPRG059 | Praktikum z pokročilého objektového programování | 2 | 0/1 Z | — | |
NPRG014 | Koncepty moderních programovacích jazyků | 3 | 0/3 Z | — | |
NPRG024 | Návrhové vzory | 3 | — | 0/2 KZ | |
NPRG043 | Doporučené postupy v programování | 6 | — | 2/2 Z+Zk |
8. Webové technologie
Obecný přehled základní webových technologií. Síťové služby pro webové technologie. Webové služby. Architektura klient-server aplikací, skriptování na straně serveru a klienta, webové frameworky. Použití databázových systémů ve webových aplikacích, NoSQL databáze, multimediální databáze. Indexace a prohledávání dokumentů, principy fungování webových vyhledávačů. Linked Data, integrace sémantických dat do webových stránek. Zajištění bezpečnosti informačních systémů v prostředí internetu, autentizace, autorizace, bezpečnostní modely, základy šifrování, ochrana dat.
Doporučené předměty
kód | Předmět | Kredity | ZS | LS | |
NSWI130 | Architektury softwarových systémů | 5 | 2/2 Z+Zk | — | |
NSWI153 | Pokročilé technologie webových aplikací | 5 | — | 2/2 Z+Zk | |
NSWI145 | Webové služby | 5 | — | 2/2 Z+Zk | |
NDBI034 | Vyhledávání multimediálního obsahu na webu | 4 | 2/1 Z+Zk | — | |
NPRG043 | Doporučené postupy v programování | 6 | — | 2/2 Z+Zk |