Przedmiot: Zaawansowana grafika komputerowa (S1)
Tematyka wykładów:
- Metoda śledzenia promieni (pdf)
- Algorytm ray tracingu (rekurencyjne śledzenie promieni pierwotnych i wtórnych, testowanie widoczności, wyznaczanie cieni).
- Obliczanie promieni pierwotnych.
- Obliczanie przecięć.
- Równanie oświetlenia.
- Teksturowanie.
- Obliczanie promieni wtórnych (odbitych i załamanych).
- Podziały przestrzeni (jednorodny podział przestrzeni, algorytm 3DDDA).
- Antyaliasing.
- Metoda energetyczna (pdf)
- Równanie radiosity.
- Współczynnik sprzężenia, metody obliczania współczynnika sprzężenia (analityczna, półsześcianów, Monte Carlo).
- Metody rozwiązywania równania radiosity
- Metoda podstawowa (ang. full matrix radiosity, rozwiązywanie układu równań liniowych (metoda Gauss’a-Seidel’a)).
- Metoda progresywna (ang. progressive radiosity).
- Shooting radiosity.
- Hierarchiczna struktura mesh’a (ang. hierarchical radiosity)).
- Rekonstrukcja obrazu w metodzie energetycznej.
- Techniki obliczania oświetlenia globalnego (pdf)
- Metoda map fotonowych
- Algorytm metody map fotonowych (rola poszczególnych etapów algorytmu):
- śledzenie fotonów (ang. photon tracing),
- tworzenie map fotonowych (ang. photon maps),
- ocena rozkładu gęstości prawdopodobiestwa (ang. density estimation),
- final gathering.
- Algorytm metody map fotonowych (rola poszczególnych etapów algorytmu):
- Rozproszony ray tracing
- Metoda śledzenia ścieżek (ang. path tracing)
- Natychmiastowe radiosity (ang. instant radiosity)
- Obliczanie przesłaniania środowiska (ang. Ambient Occlusion, AO):
- szacowanie współczynników przesłaniania,
- integracja z równaniem oświetlenia.
- Przesłanianie środowiska w przestrzeni obrazów (ang. Screen Space Ambient Occlusion, SSAO):
- próbkowanie otoczenia piksela,
- szacowanie współczynników przesłaniania.
- Metoda map fotonowych
- Metoda IBR (ang. Image Based Rendering) (pdf)
- Algorytm metody IBR.
- Mapa głębokości i mapa różnic głębokości.
- Równanie warpingu 3D.
- Splatting i uzupełnianie braków informacji.
- Metoda IBL (ang. Image Based Lighting) (pdf)
- Mapa światła (obrazy HDR), tworzenie map światła (ang. light probes).
- Identyfikacja źródeł światła na mapie światła (ang. importance sampling).
- Rendering z wykorzystaniem map światła (oświetlanie komputerowych obiektów).
- Oświetlanie obiektów naturalnych (ang. light stage system).
- Wyświetlacze (pdf)(pdf)
- Wyświetlacz LCD (zasada działania i parametry).
- Wyświetlacz OLED (zasada działania i parametry).
- Wyświetlacze stereoskopowe (systemy aktywne i pasywne, wyświetlacze VR).
- Kodowanie i korekcja gamma.
- Kalibracja kolorów
- Przestrzenie kolorów RGB i XYZ, funkcje dopasowania barw, wykres chromatyczności.
- Kolory podstawowe, punkt bieli i gama barw wyświetlacza.
- Profile kolorów (profile sRGB) oraz system zarządzania kolorami (CMS).
- Obraz cyfrowy (pdf)
- Próbkowanie, integracja i kwantyzacja obrazu.
- Rekonstrukcja obrazu (analogowego) z obrazu cyfrowego.
- Aliasing i antyaliasing.
Laboratoria i projekt:
Na laboratoriach omawiana jest i ćwiczona implementacja kluczowych technik programistycznych stosowanych w ray tracingu. Na zajęciach projektowych studenci programują własną implementację metody śledzenia promieni z wybranym rozszerzeniem.
1. Implementacja operacji macierzowo-wektorowych w oparciu o bibliotekę GLM.
Operacje stosowane w raytracerze: dodawanie i odejmowanie wektorów, iloczyn skalarny i wektorowy, obliczanie długości wektora, mnożenie wektora przez liczbę, kopiowanie wektora, normalizacja wektora, mnożenie macierzy 3×3 razy wektor 3×1.
#include <glm/glm.hpp>
int foo(){
glm::vec4 Position = glm::vec4(glm::vec3(0.0), 1.0);
glm::mat4 Model = glm::mat4(1.0);
Model[3] = glm::vec4(1.0, 1.0, 0.0, 1.0);
glm::vec4 Transformed = Model * Position;
return 0;
}
2. Zapis danych obrazu do pliku graficznego (wykorzystanie biblioteki FreeImage). Korekcja gamma. Przykładowy kod do pobrania tutaj.
3. Obiektowa struktura ray tracera (raytracer.h, scene_simple.txt, image_simple.png).
4. Obliczanie kierunku promienia pierwotnego.
5. Obliczanie przecięć (kula, trójkąt, obliczanie wektorów normalnych).
6. Równanie oświetlenia (wyznaczanie cieni).
7. Rekurencyjne śledzenie promieni odbitych od obiektów (scene_trian.txt, scene_trian.png).
8. Teksturowanie (tylko dla kuli).