Anotace

Cílem předmětu je poskytnout přehled o základních technických a matematické konceptech stojících za tvorbou fotorealistických obrazů. Úvodní část kurzu se zabývá tradičními technikami jako je Whittedův ray tracer, akcelerační datové struktury, přenos světla a jeho interakce s okolím. Následuje popis globální iluminace a řešení renderovací rovnice metodou Monte Carlo. Výsledek implementace probíraných metod můžete vidět na obrázku níže.

6887_allied_avenger 5590_whirl_n'_wheel_super_truck blacktron_base_flyby

Předmět volně navazuje na úvodní bakalářský kurz Základy počítačové grafiky a pokrývá hlavní principy fotorealistické syntézy obrazu. Jsou probírána zejména tato témata: metoda sledování paprsku, osvětlovací modely, modely odrazu světla od povrchu (BRDF), zobrazovací rovnice, základy metody Monte Carlo pro simulaci transportu světla, zajištění fyzikální korektnosti výsledků, urychlování výpočtu, vyhlazování obrazu a popis základních optických materiálových modelů. Předmět zahrnuje cvičení, během kterých jsou témata probírána na přednáškách prakticky realizována formou implementace programů k zápočtu. Teoretické poznatky získané během rozboru dílčích úloh slouží jako základ pro praktickou implementaci konkrétních příkladů na cvičeních. Cvičení tedy úzce korespondují s přednáškami a předpokládá se praktická realizace zmíněných témat v prostředí jazyka C++.

Kontakty v případě distanční výuky

V případě distanční výuky budou on-line přednášky probíhat na videokonferenčním serveru Zoom v předem oznámeném čase jedenkrát týdně. Identifikátor videohovoru bude zaslán hromadným mailem všem studentům zapsaným do tohoto předmětu. Konzultace praktické části výuky budou probíhat průběžně mailem a na platformě Matrix. Pozvánka do místnosti PG 1 byla zaslána mailem.

Připojení k přednášce na Zoomu

Po zadání mailem zaslané adresy schůzky do prohlížeče (funkčnost odzkoušena ve Firefoxu) zvolte možnost "join from your browser", vyplňte své jméno, opište captcha kód a klikněte na tlačítko Join. Následně potvrďte volbu zvukového vstupu a výstupu. Nyní byste měli vidět živý přenos.

Přednášky

Den Hodina Přednáška
22. 9. 2022 12:30 – 14:00 přednáška č. 1
29. 9. 2022 12:30 – 14:00 přednáška č. 2
6. 10. 2022 12:30 – 14:00 přednáška č. 3
13. 10. 2022 12:30 – 14:00 přednáška č. 4
20. 10. 2022 12:30 – 14:00 přednáška č. 5
27. 10. 2022 12:30 – 14:00 přednáška č. 6
3. 11. 2022 12:30 – 14:00 přednáška č. 7
10. 11. 2022 13:00 – 14:00 přednáška č. 8
17. 11. 2022 státní svátek
24. 11. 2022 12:30 – 14:00 přednáška č. 9
1. 12. 2022 12:30 – 14:00 přednáška č. 10
8. 12. 2022 12:30 – 15:45 Odevzdání řešení zadaných úloh

Vedle doporučené literatury uvedené na slidech první přednášky (především tato on-line kniha a tyto přehledové tabulky), jsou jako materiál ke studiu k dispozici tato SKRIPTA (kapitola 3), popřípadě novější verze SKRIPT (kapitoly 1.1-1.3 a 3), jež obsahují některá rozšíření.

Maximální bodový zisk za vypracování (tj. provedení implementace a ověření funkčnosti) jednotlivých úloh naleznete ZDE. U všech odevzdávaných úloh se předpokládá perfektní orientace ve zdrojovém kódu. Nejzazším termínem pro udělení zápočtu je 9. 12. 2022.

Zkouška

Zkouška je ústní s písemnou přípravou (max. 55 bodů). Zkušební otázky korespondují s tématy na přednáškách, seznam okruhů zkušebních otázek naleznete ZDE.

Během distanční výuky bude zkouška probíhat individuálně přes videokonferenční server Zoom na adrese shodné s přednáškou a v termínech oznámených v místnosti předmětu na serveru Matrix. Termíny jsou rovněž vypsány v Edisonu.

Přednáška 1

Úvodní přednáška, model jednoduché kamery, kolize parsku s geometrií

Přednáška 2

Základy rádiometrie a fotometrie, Whittedův ray tracer, barevné prostory

Přednáška 3

Lom a odraz paprsku, mapy prostředí

Přednáška 4

Akcelerační datové struktury a jejich další urychlení, supersampling, hloubka ostrosti

Přednáška 5

Úvod do globální iluminace, zobrazovací rovnice, Monte Carlo metoda, vzorkování domény integradu, ruská ruleta

Přednáška 6 - 10

Path Tracing, BRDF, modifikovaný Phong a jeho normalizace, konzervace energie, vzorkování zdrojů

Cvičení

Cvičení budou probíhat formou implementace úloh z přednášek a k zápočtu je možno získat max. 45 bodů. Jednotlivé úlohy budou hodnoceny v zápočtovém týdnu. Bodové ohodnocení úloh se odvíjí od jejich obtížnosti, správnosti implementace a vizuální kvality prezentovaných výsledků. Při předvádění dosažených výsledků se očekává perfektní orientace v implementovaném kódu. Celkem bude možno z cvičení získat 45 bodů.

Cvičení 1

Hlavním cílem prvního cvičení je seznámení se s šablonou pro vypracování úloh na dalších cvičeních. Na cvičení budeme probírat následující témata: reprezentace vstupní geometrie (formát OBJ), vertexy, normály, materiály (formát MTL) a textury, základní funkční prvky a operace používané v algoritmech sledování paprsků. Rovněž bude popsána základní funkcionalita knihovny Embree.

Cvičení 2

Hlavním cílem druhého cvičení je implementace metody GenerateRay do třídy Camera pro generování primárního paprsku a otestování její funkčnosti. Výsledkem tohoto cvičení by mělo být zobrazení testovací scény v následující podobě: 6887_allied_avenger_bw

Cvičení 3

Hlavním cílem třetího cvičení je implementace jednoduchého normálového shaderu a otestování jeho funkčnosti. Popis postupu je obsahem cvičení. Význam barycentrických souřadnic u a v potřebných např. pro interpolaci normál a nanášení textur je znázorněn ZDE. Model z ukázek naleznete ZDE. Můžete také použít TENTO alternativní model.

6887_allied_avenger_normal

Na cvičení budeme probírat následující témata: implementace normálového shaderu, interpolace normál a texturovacích souřadnic.

Cvičení 4

Hlavním cílem čtvrtého cvičení je implementace základního Phongova osvětlovacího modelu. Popis postupu je obsahem cvičení.

6887_allied_avenger_phong

Na cvičení budeme probírat následující témata: Phongův osvětlovací model.

Cvičení 5

Hlavním cílem pátého cvičení je implementace environmentální mapy, která bude sloužit jako textura prostředí a později ji využijeme pro nasvětlení scény. Popis postupu je obsahem cvičení a naleznete ho rovněž ZDE.

Aktualizovaná šablona obsahuje upravenou třídu Texture a příklad načítání EXR a HDR textur (viz funkce tutorial_2 v souboru tutorials.cpp).

Na cvičení budeme probírat následující témata: načítání textur a implementace environmentální mapy.

Cvičení 7, 8

Hlavním cílem sedmého cvičení je implementace lomu paprsku. Popis postupu je obsahem přednášky. Pro otestování funkcionality doporučuji použít jednoduchý model jednotkové koule umístěné v počátku. Rovněž doporučuji mít naimplementovanou environmentální mapu pro snadnější kontrolu výsledků.

sphere_snell_fresnel 6887_allied_avenger_snell 6887_allied_avenger_snell_fresnel

Na cvičení budeme probírat následující téma: implementace trasování průhledných materiálů.

Cvičení 9, 10

Hlavním cílem deváteho cvičení je implementace základního path tracingu pro Lambertovskou BRDF. Ucelený seznam užitých funkcí naleznete ZDE. Můžete také použít TENTO model tzv. Cornell boxu.

6887_allied_avenger_pt 6887_allied_avenger_pt

Na cvičení budeme probírat následující téma: renderovací rovnice, Monte Carlo integrace, BRDF.