Podstawy Grafiki Komputerowej

Wykład 01 (07/10/2019), Notatki - wprowadzenie - czym jest grafika komputerowa, dziedziny grafiki, zastosowania
Wykład 02 (14/10/2019), Notatki - wprowadzenie do OpenGL, potok grafiki w różnych wersjach OpenGL, dodatkowe biblioteki
Wykład 03 (21/10/2019), Notatki - transformacje (1) - przekształcenia liniowe 2D, obroty 3D, rozkład SVD, prawo i lewoskrętny układ współrzędnych, przekształcanie wektora normalnego, jednorodny układ współrzędnych, rzuty i przekształcenie perspektywiczne, model wirtualnej kamery
Wykład 04 (28/10/2019), Notatki - transformacje (2) - kamera Obscura, model kamery, obcinanie, reprezentacje rotacji (macierze 3x3, kąty Eulera, kwaterniony), kwaterniony - czym są, ich cechy i uwagi, arcball, inne przekształcenia: warping, morphing
Wykład 05 (04/11/2019), Notatki - widoczność - back face culling, z-buffer, sortowanie (algorytm malarza), algorytm Newella, Newella i Sancha, drzewo BSP (Binary Space Partitioning), ray casting, culling - view frustum culling, back face culling, occlusion culling, occluder fusion, portal rendering, PVS (Potentially Visible Set), Guided Visibility Sampling
Wykład 06 (18/11/2019), Notatki - oświetlenie - rodzaje źródeł światła, odbicie idealnie rozproszone (lambertowskie, diffuse), odbicie zwierciadlane, model Phonga, model Phonga-Blinna, prawo Snell'a i Beer'a, funkcja Fresnella, przybliżenie Schlicka, cieniowanie - metody cieniowania stałym kolorem, interpolacji przez punkty w wierzchołkach, cieniowanie Phonga (+ sposób implementacji na GPU), pasma Macha
Wykład 07 (25/11/2019) - światło i kolor - system widzenia człowieka, krzywe czułości na długość fal w zależności od natężenia światła, iluzje (relatywne postrzeganie długości, jasności), intensywność, luminancja, postrzeganie różnic jasności (JND - just noticable difference), gamma, postrzeganie zmian (CFF - critical flicker frequency), zakres dynamiczny (HDR), metamery i modele koloru: LMS, CIE XYZ (diagram chromatyczny), modele percepcyjne: Luv oraz Lab, RGB + sześcian RGB, sRGB, CMY, CMYK, HSL, HSV
Wykład 08 (02/12/2019) - ray tracing, global illumination - śledzenie promieni, rekurencyjne śledzenie promieni, przecięcia z obiektami (sfery, trójkąty, prostopadłościany, powierzchnie parametryczne), struktury przyspieszające działanie, kd-drzewa (k-wymiarowe), BVH (bound volume hierarchy - drzewo brył ograniczających), jednostki radiometryczne i fotometryczne, funkcje BRDF (dwukierunkowa funkcja rozkładu odbicia), zasada Helmholza, postulat zachowania energii, równania renderingu, metody Monte Carlo, przykłady rendererów
Wykład 09 (09/12/2019), Wykład 10 (16/12/2019) - reprezentacje - hierarchia, szczególne obiekty, wymiary reprezentacji, SceneGraph, źródło modeli 3D, siatki wielokątów, powierzchnie uwikłane, powierzchnie parametryczne, krzywe Beziera i ich własności (otoczka wypukła, gładkie łączenie, ciągłość geometryczna, algorytm de Casteljau), powierzchnie Beziera, iloczyn tensorowy, trójkątne powierzchnie Beziera, reprezentacje wolumetryczne, zbiory wokseli, metoda maszerujących sześcianów, drzewa ósemkowe (3D), drzewa czwórkowe (2D), BSP (binary space partitioning), CSG (constructive solid geometry), LoD (Level of Detail), klasyfikacja metod LoD (dyskretne, ciągłe,hierarchiczny), artefakty, ROAM, progressive meshes, clipmaps, duże dane i cache'owanie
Wykład 11 (07/01/2020) - teksturowanie - modelowanie lokalnych zmian własności powierzchni, skomplikowana geometria vs prostsza geometria + tekstura, mapy środowiska, parametryzacja 2D, reprezentacja proceduralna tekstury, generowanie szumu, szum kratowy, szum Perlina, suma fraktalna i turbulencja

Zadania na pracownie

Zadanie 01 - tutorial, Rozwiązanie
Zadanie 02 - gra w odcinki/trójkąty (2D), Rozwiązanie
Zadanie 03 - arkanoid dla trójkątów (2D), Rozwiązanie - nie robiłem obiektowo, bo mi się nie chciało
Zadanie 04 - gra w bąbelki (3D)
Zadanie 05 - wyświetlanie terenu z map DTED (3D)

Dodatkowe materiały

Kwaterniony - czym są i jak wykonać obrót w przestrzeni 3D za ich pomocą
Grafika komputerowa i wizualizacja - materiały do wykładu z PW