Tato stránka vychází z podkladů pro tištěné studijní plány (tzv. Karolinku).

Počítačová grafika, vidění a vývoj her

Garantující pracoviště: Katedra softwaru a výuky informatiky Garant specializace: RNDr. Josef Pelikán

Specializace Počítačová grafika, vidění a vývoj her je určena studentům se zájmem o vizuální obory informatiky – syntézu obrazu, analýzu obrazu a programování počítačových her. V magisterském studiu potom mohou navázat studiem oboru Vizuální výpočty a vývoj počítačových her, kde se budou věnovat svému oboru ještě více do hloubky. Již absolvování bakalářské specializace však postačí k dobrému uplatnění v praxi (podle jednotlivých zaměření):

Návrh a vývoj grafických aplikací, například vizuálních efektů nebo fotorealistické visualizace (postprodukční týmy, architektonické visualizace, vývoj realistických herních enginů a shaderů, apod.)
Uplatnění všude tam, kde se využívá digitální zpracování obrazu a počítačové vidění (strojírenský a elektrotechnický průmysl, vývoj robotických systémů, medicína, ochrana a bezpečnost, automatická kontrola, dálkový průzkum Země, apod.)
Vývoj počítačových her na mnoha úrovních (programátor herního engine, GPU programátor /shadery/, nástroje pro přípravu obsahu hry, logika hry, programování a konfigurace herní umělé inteligence, příprava dat /levelů/ hry, apod.)

Studijní specializace Počítačová grafika, vidění a vývoj her nabízí následující zaměření:

Počítačová grafika
Počítačové vidění
Vývoj počítačových her

Pro všechna zaměření platí stejné podmínky studia, stejné povinné a povinně volitelné předměty a společné tři zkušební okruhy bakalářské státní závěrečné zkoušky (jedná se o okruhy 1. až 3. – viz níže). Jednotlivá zaměření pak mají odlišné zkušební okruhy přizpůsobené požadavkům svých disciplin.

Povinné předměty programu Informatika

Povinné předměty společné pro všechny specializace jsou uvedeny v předchozí části.

Povinné předměty specializace

kódPředmětKredityZSLS
NPGR003Základy počítačové grafiky 52/2 Z+Zk
NMAX055Matematická analýza 2 52/2 Z+Zk
NPRX041Programování v C++ 52/2 Z+Zk
NPRX035Programování v jazyce C# 52/2 Z+Zk

Povinně volitelné předměty

Podmínkou pro přihlášení ke státní závěrečné zkoušce je získání 43 kreditů za povinně volitelný předměty. Konkrétní výběr předmětů by měl být prováděn na základě zaměření, ke kterému studium směřuje. Zkušební okruhy u státních zkoušek jsou totiž dalším vodítkem při rozhodování, které předměty je třeba studovat.

kódPředmětKredityZSLS
NPGR025Introduction to Colour Science 32/0 Zk
NPGR002Digitální zpracování obrazu 43/0 Zk
NPGR035Strojové učení v počítačovém vidění 52/2 Z+Zk
NPGR037Praktikum z Matlabu 30/2 Z
NSWI160Herní middleware 60/4 Z
NSWI159Praktikum z vývoje počítačových her120/1 Z0/1 Z
NPGR004Fotorealistická grafika 52/2 Z+Zk
NPGR019Realtime grafika na GPU 52/2 Z+Zk
NPGR020Geometrie pro počítačovou grafiku 32/0 Zk
NPGR036Počítačové vidění 52/2 Z+Zk
NPGR038Základy vývoje počítačových her 52/2 Z+Zk
NSWX004Operační systémy 42/1 KZ
NAIX028Úvod do robotiky 52/2 Z+Zk
NMAX073Pravděpodobnost a statistika 2 52/2 Z+Zk
NMAX056Matematická analýza 3 52/2 Z+Zk
NPRX051Pokročilé programování v C++ 52/2 Z+Zk
NPRX038Pokročilé programování v jazyce C# 52/2 Z+Zk
NPRX005Neprocedurální programování 52/2 Z+Zk
NAIL120Úvod do umělé inteligence 52/2 Z+Zk
NPRG054Vývoj vysoce výkonného software 62/2 Z+Zk
NPRG042Programování v paralelním prostředí 62/2 Z+Zk
NMAX042Numerická matematika 52/2 Z+Zk
NDBI045Vyhledávání a explorace ve videu 52/2 Z+Zk
NOPX046Diskrétní a spojitá optimalizace 52/2 Z+Zk

1 Předmět Praktikum z vývoje počítačových her je vyučován v obou semestrech a smí se zapisovat opakovaně (za každý absolvovaný semestr jsou dva kredity). Studentům zaměření Vývoj počítačových her doporučujeme absolvovat ho minimálně jednou.

Doporučený průběh studia

Doporučený průběh studia zahrnuje všechny povinné předměty a některé další povinně volitelné nebo volitelné předměty – tzv. profilující předměty – pro jednotlivá zaměření.

Protože mají tři různá zaměření různé požadavky ke státním zkouškám, uvádíme zde příklady tří průběhů studia. Pro úplnost byly vytvořeny kompletní průběhy včetně volitelných předmětů. Formálně povinné předměty jsou v tabulkách vyznačeny tučně, povinně volitelné běžným písmem a volitelné kurzívou.

Volitelnost předmětů by se však mohla chápat více prakticky – vůči konkrétnímu zaměření. To znamená, že některá přednáška může být obecně pro celou specializaci povinně volitelná, ale pro konkrétní zaměření může být důležitá (profilující), protože znalosti jsou potřeba ke státním zkouškám. V jiném zaměření však poslouží třeba jen jako výběrový předmět, protože ke státním zkouškám potřeba není.

V následujících ukázkách průchodů se k naznačení důležitosti předmětu používají poznámky pod čarou: profilující předměty (znalosti ke státním zkouškám) jsou označeny jedničkou1, předměty doporučované dvojkou2. Pokud není předmět vysázený tučně ani nemá jednu z těchto poznámek1,2, je pro dané zaměření úplně volitelný a lze ho libovolně nahradit.

1. rok studia

Společné pro všechny specializace, viz předchozí část.

2. rok studia – počítačová grafika

kódPředmětKredityZSLS
NTIX061Algoritmy a datové struktury 2 52/2 Z+Zk
NDMX011Kombinatorika a grafy 1 52/2 Z+Zk
NMAX055Matematická analýza 2 52/2 Z+Zk
NPRX041Programování v C++ 52/2 Z+Zk
NPRX035Programování v jazyce C# 52/2 Z+Zk
NPGR003Základy počítačové grafiky 52/2 Z+Zk
NJAZ074Anglický jazyk pro středně pokročilé III310/2 Z
NTVY016Tělesná výchova III510/2 Z
NTIX071Automaty a gramatiky 52/2 Z+Zk
NMAX059Pravděpodobnost a statistika 1 52/2 Z+Zk
NPRG045Ročníkový projekt 40/1 Z
NPGR004Fotorealistická grafika152/2 Z+Zk
NMAX056Matematická analýza 3252/2 Z+Zk
NPRX051Pokročilé programování v C++252/2 Z+Zk
NMAX042Numerická matematika 52/2 Z+Zk
NJAZ090Anglický jazyk pro středně pokročilé IV310/2 Z
NJAZ091Anglický jazyk410/0 Zk
NTVY017Tělesná výchova IV510/2 Z

3. rok studia – počítačová grafika

kódPředmětKredityZSLS
NAIX062Výroková a predikátová logika 52/2 Z+Zk
NDBX025Databázové systémy 52/2 Z+Zk
NPGR025Introduction to Colour Science132/0 Zk
NPGR002Digitální zpracování obrazu243/0 Zk
NMAX073Pravděpodobnost a statistika 2252/2 Z+Zk
NPGR037Praktikum z Matlabu 30/2 Z
NSWX004Operační systémy 42/1 KZ
NSZZ031Vypracování a konzultace bakalářské práce 60/4 Z
NPGR020Geometrie pro počítačovou grafiku132/0 Zk
NPGR036Počítačové vidění252/2 Z+Zk
NPRG054Vývoj vysoce výkonného software 62/2 Z+Zk
NOPX046Diskrétní a spojitá optimalizace 52/2 Z+Zk
NPGR019Realtime grafika na GPU 52/2 Z+Zk

1 Profilové předměty k danému zaměření. Okruhy státních zkoušek jsou na jejich znalosti založené.

2 Další doporučované předměty pro dané zaměření. Formálně Vás nic nenutí si je zapsat, my bychom Vám to však doporučovali. Předměty, které nejsou povinné a nemají žádnou poznámku, lze libovolně nahradit jinými podle Vašeho zájmu.

3 Výuka anglického jazyka NJAZ070, NJAZ072, NJAZ074, NJAZ090 v rozsahu 0/2 v každém semestru je určena pro středně pokročilé a pokročilé. Pro začátečníky a mírně pokročilé jsou určeny předměty NJAZ071, NJAZ073, NJAZ075, NJAZ089 s rozsahem výuky 0/4 v každém semestru.

4 Zkoušku z anglického jazyka NJAZ091 je možné absolvovat v zimním nebo v letním semestru.

5 Místo jednoho z předmětů NTVY014, NTVY015, NTVY016 a NTVY017 je možné si zapsat letní výcvikový kurz NTVY018 nebo zimní výcvikový kurz NTVY019. Tyto kurzy může student absolvovat kdykoli v průběhu bakalářského studia.

2. rok studia – počítačové vidění

kódPředmětKredityZSLS
NTIX061Algoritmy a datové struktury 2 52/2 Z+Zk
NDMX011Kombinatorika a grafy 1 52/2 Z+Zk
NMAX055Matematická analýza 2 52/2 Z+Zk
NPRX035Programování v jazyce C# 52/2 Z+Zk
NPGR003Základy počítačové grafiky 52/2 Z+Zk
NPGR002Digitální zpracování obrazu143/0 Zk
NPGR037Praktikum z Matlabu230/2 Z
NJAZ074Anglický jazyk pro středně pokročilé III310/2 Z
NTVY016Tělesná výchova III510/2 Z
NTIX071Automaty a gramatiky 52/2 Z+Zk
NMAX059Pravděpodobnost a statistika 1 52/2 Z+Zk
NPRG045Ročníkový projekt 40/1 Z
NPGR036Počítačové vidění152/2 Z+Zk
NPGR020Geometrie pro počítačovou grafiku232/0 Zk
NMAX056Matematická analýza 3252/2 Z+Zk
NOPX046Diskrétní a spojitá optimalizace252/2 Z+Zk
NJAZ090Anglický jazyk pro středně pokročilé IV310/2 Z
NJAZ091Anglický jazyk410/0 Zk
NTVY017Tělesná výchova IV510/2 Z

3. rok studia – počítačové vidění

kódPředmětKredityZSLS
NAIX062Výroková a predikátová logika 52/2 Z+Zk
NDBX025Databázové systémy 52/2 Z+Zk
NPRX041Programování v C++ 52/2 Z+Zk
NPGR035Strojové učení v počítačovém vidění152/2 Z+Zk
NAIX028Úvod do robotiky252/2 Z+Zk
NMAX073Pravděpodobnost a statistika 2252/2 Z+Zk
NSZZ031Vypracování a konzultace bakalářské práce 60/4 Z
NMAX042Numerická matematika252/2 Z+Zk
NPGR004Fotorealistická grafika 52/2 Z+Zk
NPGR019Realtime grafika na GPU 52/2 Z+Zk
NPRG054Vývoj vysoce výkonného software 62/2 Z+Zk

2. rok studia – vývoj počítačových her

kódPředmětKredityZSLS
NTIX061Algoritmy a datové struktury 2 52/2 Z+Zk
NDMX011Kombinatorika a grafy 1 52/2 Z+Zk
NMAX055Matematická analýza 2 52/2 Z+Zk
NPRX035Programování v jazyce C# 52/2 Z+Zk
NPRX041Programování v C++ 52/2 Z+Zk
NPGR003Základy počítačové grafiky 52/2 Z+Zk
NJAZ074Anglický jazyk pro středně pokročilé III310/2 Z
NTVY016Tělesná výchova III510/2 Z
NTIX071Automaty a gramatiky 52/2 Z+Zk
NMAX059Pravděpodobnost a statistika 1 52/2 Z+Zk
NPRG045Ročníkový projekt 40/1 Z
NPGR019Realtime grafika na GPU152/2 Z+Zk
NPGR038Základy vývoje počítačových her152/2 Z+Zk
NPRX038Pokročilé programování v jazyce C#252/2 Z+Zk
NPRX051Pokročilé programování v C++252/2 Z+Zk
NJAZ090Anglický jazyk pro středně pokročilé IV310/2 Z
NJAZ091Anglický jazyk410/0 Zk
NTVY017Tělesná výchova IV510/2 Z

3. rok studia – vývoj počítačových her

kódPředmětKredityZSLS
NAIX062Výroková a predikátová logika 52/2 Z+Zk
NDBX025Databázové systémy 52/2 Z+Zk
NSWI160Herní middleware260/4 Z
NSWI159Praktikum z vývoje počítačových her220/1 Z0/1 Z
NAIX028Úvod do robotiky 52/2 Z+Zk
NSWX004Operační systémy 42/1 KZ
NPGR002Digitální zpracování obrazu 43/0 Zk
NSZZ031Vypracování a konzultace bakalářské práce 60/4 Z
NPGR020Geometrie pro počítačovou grafiku132/0 Zk
NAIL120Úvod do umělé inteligence 52/2 Z+Zk
NPGR004Fotorealistická grafika 52/2 Z+Zk
NPGR036Počítačové vidění 52/2 Z+Zk

Požadavky znalostí ke státní závěrečné zkoušce

Některá témata studijního oboru Informatika jsou požadována ve všech specializacích, viz první část.

Studenti specializace Počítačová grafika, vidění a vývoj her mají další okruhy 1. až 3. pokryté povinnými přednáškami NMAI055 Matematická analýza 2 a NPGR003 Základy počítačové grafiky.

1. Matematická analýza
Diferenciální a integrální počet ve více rozměrech. Riemannův integrál. Extrémy funkcí více proměnných. Metrický prostor, otevřené a uzavřené množiny, kompaktnost.

2. Základy 2D počítačové grafiky
Základy lidského vidění, barvy, jejich vnímání a reprezentace na počítači, barevné systémy RGB, CMY a HSV. High dynamic range grafika (HDR). Rastrová a vektorová grafika, příklady rastrových a vektorových formátů a jejich použití. Průhlednost (alfa-kanál) a její použití. Základy rasterizace – vykreslování tvarů do 2D rastru. Základy půltónování a rozptylování, využívané při digitálním tisku.

3. Základy 3D počítačové grafiky
Systémy 3D souřadnic a transformací, homogenní souřadnice, maticové transformace. Příklady skládání praktických složitějších transformací, reprezentace orientace. Projekce používané při zobrazování 3D scén. Základy zobrazování 3D scén na GPU v knihovně OpenGL. Architektura typické GPU, formáty dat posílané do GPU, princip programování GPU (shadery). Reprezentace 3D scén v počítači, hierarchické reprezentace, výpočet viditelnosti a základy stínování. Princip rekurzivního sledování paprsku.

Požadavky pro jednotlivá zaměření

Studenti jednotlivých zaměření se musí dále připravit na zkušební okruhy vycházející z příslušných profilových přednášek.

Požadavky pro zaměření Počítačová grafika

Zkušební okruhy 4. až 6. jsou pokryté přednáškami NPGR004 Fotorealistická grafika, NPGR025 Introduction to Colour Science a NPGR020 Geometrie pro počítačovou grafiku.

4. Fotorealistická grafika
Rekurzivní sledování paprsku: základní princip, vlastnosti naivního algoritmu. Výpočet průsečíků paprsku s 3D scénou a jeho urychlování – obalová tělesa a jejich hierarchie (BVH), dělení prostoru, KD-stromy, konstrukce urychlovacích datových struktur. Modely odrazu světla na povrchu těles: empirické modely (Phong), fyzikálně věrnější přístupy (mikroploškové modely). Textury, objemové textury a modelování přírodních fenoménů, spojité šumové funkce. Anti-aliasing v paprskově založených metodách, vzorkovací algoritmy, distribuované sledování paprsku. Monte-Carlo přístupy v realistickém zobrazování: základy fotometrie, teorie zobrazování, integrální zobrazovací rovnice. Náhodné procházky, ruská ruleta, nestranné odhady integrálů metodami Monte-Carlo, odhad příští události (NEE). Kombinované odhady, path-tracing, obousměrné sledování paprsku.

5. Základy vědy o barvách
Fundamental causes of colour, human eye and function of its parts, retina, metamerism. Colour spaces and colour collections, gamuts, color mixing, color matching experiments. CIE RGB, sRGB, CIE XYZ, L*a*b and L*u*v. Chromatic adaptation transforms (CAT), white balance operation in digital photography. Colour appearance models (CAM). Examples of Colour ordering systems (Munsell, Pantone). Colour measurement devices. Printing technology, laser printers, inkjet printers, offset printing, ICC profiles, PCS, Device ling ICC profile, colour separation.

6. Geometrie pro počítačovou grafiku
Eukleidovské shodnosti v rovině a prostoru, jejich aplikace, animace spojitého pohybu. Kvaterniony a jejich využití pro animaci a pohyb v prostoru, LERP a SLERP. Projektivní prostor a projektivní zobrazení, aplikace na panoramatické lepení fotografií a rekonstrukci scény. Dvojpoměr a jeho využití při odečítání velikostí ze snímků.

Požadavky pro zaměření Počítačové vidění

Zkušební okruhy 7. až 9. jsou pokryté přednáškami NPGR002 Digitální zpracování obrazu, NPGR036 Počítačové vidění a NPGR035 Strojové učení v počítačovém vidění.

7. Digitální zpracování obrazu
Vzorkování a kvantizace obrazu, Shannonova věta. Základní operace nad obrázky, histogram, změny kontrastu, redukce šumu, zvyšování ostrosti. lineární filtrace obrazu v obrazovém a spektrálním prostoru. Konvoluce a Fourierova transformace. Detekce hran a rohů. Matematické modelování degradace obrazu. Potlačování základních zkreslení obrazu (rozmazání pohybem, rozostření), inverzní a Wienerův filtr.

8. Počítačové vidění
Pořizování obrazu, vlastnosti digitálního obrazu. Matematická morfologie. Segmentace obrazu. Registrace a porovnávání obrazu. Popis plošných objektů – základní principy. Invarianty pro rozpoznávání 2D objektů. Detekce, popis a párování lokálních příznaků. Významné oblasti v obraze. Detekce a Sledování objektů (napr. tváří), optický tok.

9. Strojové učení
Výběr a předzpracování příznaků. Bayesovská teorie rozhodování, kritérium minimální chyby. Rozhodovací stromy. Diskriminační analýza, lineární klasifikátor. Rozpoznávání objektů, klasifikátory s učitelem (k-NN, lineární, Bayes). Support Vector Machines (SVM). Shluková analýza, iterační a hierarchické metody. Hodnocení kvality klasifikace.

Požadavky pro zaměření Vývoj počítačových her

Zkušební okruhy 10., 11. a 6. jsou pokryté přednáškami NPGR038 Základy vývoje počítačových her, NPGR019 Realtime grafika na GPU a NPGR020 Geometrie pro počítačovou grafiku.

10. Vývoj počítačových her
2D hry: sprite-based animace, 2D kostra, parallax scrolling, dlaždicové systémy, pixel art. 3D hry: 3D scény, modely, kosterní animace, rigging. 3D rendering: shadery, stíny, částicové systémy, billboards, screenspace efekty. Zvuk: zvukové efekty, 3D zvuk, sound engine, kompozice zvuku. Návrh architektury herního kódu, návrhové vzory pro počítačové hry. Herní design: definice, historie, taxonomie hráčů. Úvod do architektury herních engine, engine Unity. Řízení vývoje počítačových her a životní cyklus herního projektu.

11. GPU grafika
Princip fungování programovatelné rasterizační pipeliny na GPU. Buffery, constant buffery, efektivní předávání dat do GPU. Textury a texturovací jednotky, funkce jednotlivých druhů shaderů. Vyšší programovací jazyky shaderů (GLSL, HLSL). Řešení osvětlení ve scéně (materiály, výpočet stínů). Stencil buffer a jeho použití. Víceprůchodový rendering, deffered shading a screen-space efekty. Realtime raytracing. GPGPU – masivně paralelní algoritmy na GPU, základy CUDA/OpenCL.

6. Geometrie pro počítačovou grafiku
Eukleidovské shodnosti v rovině a prostoru, jejich aplikace, animace spojitého pohybu. Kvaterniony a jejich využití pro animaci a pohyb v prostoru, LERP a SLERP. Projektivní prostor a projektivní zobrazení, aplikace na panoramatické lepení fotografií a rekonstrukci scény. Dvojpoměr a jeho využití při odečítání velikostí ze snímků.