Jan Horáček - Hardware pro počítačovou grafiku (NPRG019)
Kontakt:
Detaily na http://cgg.mff.cuni.cz/~honza
Slidy k přednášce:
- Úvod (slidy)
- Architektura (slidy)
- Matematika pro HW grafiku (slidy)
- Textury (slidy)
- Novinky v OpenGL (slidy)
- Zbytek OpenGL 4.0, geometry a tessellation shadery (slidy)
- Úvod do programování CUDA, PhysX (slidy)
- Praktický realtime raytracing (slidy)
- Grafické efekty (slidy)
další během semestru
Zápočtové úlohy:
budou prezentovány na cvičeních během semestru
Zápočtová úloha: Bazén
- Naprogramovat shader imitující efekt vodou naplněného bazénu, detaily byly na cvičení, v případě nejasností mě kontaktujte
- Vzorem může být úloha od dr.Pelikána v repozitáři ogl, vzorová úloha číslo 9
- Základní body za úlohu:
- Základní bazén bez efektů (iluze prostoru "uvnitř" polygonu) - 10 bodů
- Barva závislá na hloubce - 5 bodů
- Statická normalmapa a refrakce s indexem lomu - 7 bodů
- "Nekonečná" statická normalmapa (tzn. tileable) a její animace posunem po primárním polyonu - 2 body
- Bonusové body za úlohu
- Zakomponování do zajímavé scény - max. 5 bodů
- Obecná parametrizace na pozici, velikost a orientaci - 5 bodů
- Pěkné generované textury (statické nebo dynamické), max. 3 body
- Plně animovaná normalmapa - buněčné automaty, více oktáv vln (sinusovek nebo Gerstnerovy vlny) - důležitý pěkný efekt - max. 7 bodů
- Složitější bazén než kvádr - nepravoúhlé stěny, obecně polygonový, kulatý, válcový, eliptický, atp. - max. 5 bodů
- Při odevzdávání prosím uveďte, které části jste se pokusili splnit, které jste i úspěšně dodělali a které se vám nepodařily (a proč: časové důvody, nešlo to odladit, atp.), abyste se zbytečně nepřipravili o nějaký ten bod navíc
Zápočtová úloha: Simulace hejna v CUDA
- Naprogramovat simulaci hejna ryb/ptáků na GPU pomocí C for CUDA (volitelně OpenCL, bodováno bude stejně), detaily byly na cvičení, v případě nejasností mě kontaktujte
- Za CPU implementaci neudělím body, pokud nebude hotová (nebo alespoň výrazně rozpracovaná) GPU implementace
- Další podmínkou udělení bodů je stručná dokumentace chování jedinců (rozepsání všech pravidel, podle kterých se počítá pohyb)
- Základní body za úlohu:
- Implementace jedinců na CPU, 5 bodů
- Základní implementace pomocí CUDA (OpenCL) na GPU - 10 bodů
- Podrobná dokumentace chování - 5 bodů
- Bonusové body za úlohu
- Predátoři - 3 body
- Implementace s (rozumným) využitím rychlé sdílené paměti - 5 bodů
- Nechat data celou dobu na GPU (OpenGL interop) - 3 body
- Kolize s tělesy ve světě - 5 bodů za 1 typ kolizního tělesa, +1 za každý další max. 10 bodů
- Při odevzdávání prosím uveďte, které části jste se pokusili splnit, které jste i úspěšně dodělali a které se vám nepodařily (a proč: časové důvody, nešlo to odladit, atp.), abyste se zbytečně nepřipravili o nějaký ten bod navíc
Poznámky
- Pokud máte zájem, dal jsem na SourceForge program CudaMemoryGraph
- Měří volnou paměť využitelnou programem psaným v CUDA, je to jen narychlo sestavené v Qt, takže bugreporty vítám :)