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.