レイトレーシングに入門した

レイトレ自体は前から興味あったんだけど年末年始でいよいよ真面目に入門し始めました(今後も続けるかは不明)。

Ray tracing in one weekendシリーズを読んでこの3冊分の実装をRustで書きました。 本に沿って実装したのでレイトレーサーとして使えるような感じにはなってない(再利用性がなさすぎるところがちょいちょいある)。

スクショ

個人的にお気に入りのやつをいくつか貼っておきます

https://github.com/myuon/ruyt/blob/master/assets/14413648f55e334871d6f07836adfdac5d77ad76.png?raw=true

https://github.com/myuon/ruyt/blob/master/assets/22cd0642d79f817b7bae173fd957a33b8b9e8244.png?raw=true

https://github.com/myuon/ruyt/blob/master/assets/8073afea1de6acdb0040b5d51b5f28c7ecf5d504.png?raw=true

今後やりたいこととか

本では純粋なCPU実装で最適化とかもそこまで(3冊目の後半はやるけど)だったので、まぁその辺かなー。SIMDとか使って高速化するのはできそうなのと、GPUを使ったちゃんとした高速レイトレみたいなのもちょっとやってみたい(そこまでそっちに傾倒する気はないしガリガリチューニングしたり最適化テク実装というよりは、もっと綺麗な絵を高速にレンダリングしたい)。

レイトレにも色々なテクがあるようで(bidirectionalなんとかとかmetropolisなんとかとか)、その辺によっても得意なシチュエーションが変わってくるみたいなので色々実装して遊べたりしたら面白そうだなーと思う。

アルゴリズムの詳細については以下のスライドが詳しくてしかも超面白かった。