Raytracer
Opisywany tutaj Raytracer powstawał jako zaliczeniowa aplikacja na laboratorium z Zaawansowanej grafiki komputerowej oraz po części z Rozproszonych Systemów Informatycznych. Aplikacja implementuje podstawowe algorytmy takie jak:
- przecięcie promienia z trójkątem (w oparciu o współrzędne barycentryczne)
- kd-tree (znaczna optymalizacja wyszukiwania trójkątów) + podział jednorodny (zamiennie po przekompilowaniu)
- model oświetlenia, cienie, odbicie i refrakcja
Oprócz tego ważnymi cechami aplikacji, są:
- generowanie tekstury proceduralnej – cegła (napisane wspólnie z Adamem Jordankiem)
- obliczenia w oparciu o model klient/serwer (wykorzystując sockety)
- multiplatformowość (kompilacja zarówno msvc jak i gcc na platformach Windows i Linux)
Aplikację udostępniam wraz z kodem (na licencji GNU GPL), gdzie oprócz samego Raytracera znajduje się fragment starszej wersji wykorzystywanej przeze mnie biblioteki NLib, która zawiera w sobie podstawowe kontenery, logger oraz funkcje matematyczne. Oprócz tego na potrzeby aplikacji napisałem kilka klas uproszczających korzystanie z socketów i parsowanie poleceń z linii komend.
Program działa zarówno w systemie Windows jak i Linux. Podstawowym parametrem jest tutaj nazwa sceny, których listę można znaleźć w pliku ReadMe dołączonym do aplikacji. Pozostałe służą zmianie ustawień sceny, kamery, pliku wyjściowego czy parametrów cegły. Wyjściem aplikacji jest plik w formacie .bmp.
Aplikację można pobrać tutaj.