Ray tracing w języku Scala

Kolejnym podejściem do ray tracingu jest implementacja prostego silnika ray tracera w Scali.

Scala jest językiem funkcyjnym, działającym na wirtualnej maszynie Javy. Fajnie integruje się ze standardowymi klasami Javy, co znacznie zwiększa jego funkcjonalność.

Silnik obsługuje na razie tylko prosty model oświetlenia Phonga oraz przecinanie promienia jedynie z kulami.

Zamierzam dopisać do tego bump mapping, ale z czasem może być krucho i na zamiarach może się skończyć 🙂

Poniżej przykład wygenerowanego obrazu (zamierzam sprawić, że będzie to bardziej spektakularne :))

Scala Ray Tracing

Rozproszony Ray Tracing

Aktualnie zajmuję się stworzeniem wolumetrycznego efektu dymu. Zarówno do tego przedsięwzięcia, jak i do testów przecięć z typowymi prymitywami może być potrzebny test przecięcia promienia (raya) i cylindra.

Jak to zrobić?

Otóż, jeżeli mamy nasz promień w postaci

R = Origin + V * Direction

oraz równanie cylindra w postaci..