「レイトレーシング」をご存知でしょうか?
最近のグラボやPS5などでもリアルタイムでレイトレーシングが使えるようになり、言葉自体は良く聞くようになりましたが、いまいち何をしているのかピンと来ていないプログラマーの方もいらっしゃるのではないでしょうか。
私たちが物を「見る」ためには、光が光源から放たれ、さまざまな場所で反射し、最終的に目に届いた光の色を知覚する必要があります。
レイトレーシングはそんな目に届いた光の軌跡を逆算し、どこからやってきたのかを求めることでよりリアルな色をシミュレートするアルゴリズムです。
で、なんとこのアルゴリズムやプログラムは「週末レイトレーシング」(英語タイトル:Ray Tracing in One Weekend)として無料で公開されているのです。
https://raytracing.github.io/
めちゃくちゃ良い時代になりましたね・・・。
筆者は学生時代にレイトレーシングに一度興味を持ちましたが、なかなか参考書などを入手することができず入門すらできないでおりました。
数十年経って入門できる日が来ることになろうとは。
さて、たまたまGLSLというシェーダープログラムの入門をしていたのですが、今回はGLSLの勉強を兼ねてレイトレーサーをWeb上で動かしてみました。
DEMO ※まぁまぁ重いです。
いかがでしょうか?
屈折や反射などがとても綺麗にレンダリングされているのがわかるかと思います。
計算だけでリアルな画像が作れるって凄いですよね。
実際に作って綺麗な画像が出ると「おお!」ってなります(笑)
是非、興味を持たれた方は週末レイトレーシングにチャレンジしてみてください(年末年始に是非!)。
—-
ちなみにCPUのみでレンダリングすると、結構な時間が掛かりますが、上のDEMOのようにシェーダーを使えば並列に計算できるため、FPSを稼ぐことができます。
GLSLは反面、クラスや再帰が使えないといった制約もあるため実装が大変ではありますが…