Krzysztof Gdawiec
Wersja polska English version

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.