Krzysztof Gdawiec
Wprowadzenie do shaderów
Opis przedmiotu
Wykład:
III rok INF Inż (PGK1) — czwartek 13:45-15:15 (co dwa tygodnie), sala B-101A
Laboratorium:
III rok INF Inż (PGK1) — czwartek 09:45-11:15 (co dwa tygodnie), sala B-101A
Zajęcia poświęcone będą programowaniu grafiki z użyciem shaderów. Do celów prezentacyjnych wykorzystana zostanie biblioteka OpenGL w profilu rdzennym wraz z językiem GLSL. Główne tematy poruszane na wykładach to:
- historia OpenGL i GLSL,
- programowalny potok graficzny,
- maszyna stanów, wskazówki, obsługa błędów,
- wprowadzenie do GLSL,
- praca z profilem rdzennym,
- używanie shaderów w OpenGL,
- VAO, VBO i indeksowane tablice wierzchołków,
- macierze: modelu, widoku, projekcji,
- usuwanie powierzchni niewidocznych,
- oświetlenie (modele źródeł światła, BRDF, modele oświetlenia),
- obliczanie wektorów normalnych,
- cieniowanie,
- teksturowanie,
- tekstury proceduralne,
- funkcje szumu,
- mapowanie alfa,
- billboarding,
- shadery geometrii,
- shadery tesselacji,
- shadery obliczeniowe,
- zapytania,
- transformacja sprzężenia zwrotnego.
Zasady panujące na zajęciach oraz zaliczenie
Warunkiem zaliczenia zajęć jest pozytywna ocena z projektu zaliczeniowego.
Ogólne uwagi odnośnie zajęć:
- każdy pracuje nad zadaniami samodzielnie,
- dozwolone jest douczanie się nawzajem oraz dzielenie się informacjami; za informacje nie uznaje się cudzego kodu, więc kopiowanie kodu jest traktowane jako oszustwo,
- należy przestrzegać zasad uczciwości akademickiej,
- wszelkie próby oszustwa, np. oddawanie cudzego kodu, skutkują brakiem zaliczenia przedmiotu.
Uwagi dotyczące projektu zaliczeniowego:
- projekt powinna stanowić prosta gra, np. endless runner,
- projekty można wykonywać pojedynczo lub w zespole dwuosobowym,
- każdy projekt może być wykonany z wykorzystaniem dowolnego silnika gier lub profilu rdzennego biblioteki OpenGL, nie wolno korzystać z profilu kompatybilnościowego,
- projekty wykonane z wykorzystaniem OpenGL będą wyżej ocenione jak analogiczne projekty z wykorzystaniem silnika gier,
- ocena projektu będzie zależała od typu grafiki (2D — 3, 3.5; 3D — 4, 4.5, 5) oraz ilości elementów OpenGL wykorzystanych w projekcie,
- algorytmy używane w projekcie powinny być zaimplementowane w taki sposób, aby działały w rozsądnym czasie,
- w kodzie projektu należy umieszczać komentarze ułatwiające zrozumienie kodu osobie z ,,zewnątrz'',
- jakość kodu (czytelność, odpowiednie nazwy zmiennych i funkcji itp.) będzie miała wpływ na ocenę,
- do każdego projektu powinien być dołączony opis (czego projekt dotyczy, możliwości programu, opis obsługi, użyte dodatkowe biblioteki); szablon ze strukturą dokumentu z opisem projektu: szablon.pdf, szablon.tex
- kompletny projekt (kod źródłowy + wszystkie pliki potrzebne do kompilacji, opis projektu w pliku pdf, wersja wykonywalna) w postaci archiwum zip lub 7z należy przesłać/dostarczyć do prowadzącego do 23:59:59 30.01.2025; struktura katalogów w archiwum powinna być następująca:
- bin — katalog z wersją wykonywalną projektu,
- doc — katalog z plikiem pdf z opisem oraz inne pliki prezentujące projekt,
- src — katalog ze źródłami, bibliotekami potrzebnymi do kompilacji itp.,
- oddanie projektu w terminie późniejszym niż wymieniony w poprzednim punkcie, ale nie później niż 23:59:59 19.02.2025, skutkuje obniżeniem oceny projektu o 0,5 stopienia,
- oddanie projektu w terminie późniejszym niż wymieniony w poprzednim punkcie skutkuje oceną niedostateczną w pierwszym terminie oraz obniżeniem oceny w drugim terminie o 1 stopnień,
- projekty na ocenę w drugim terminie można przesyłać do 23:59:59 08.03.2025,
- nie ma możliwości przesunięcia ostatecznego terminu oddawania projektów.