レイトレーシングを実装(v1)

慶応大学は、春季休校に入りました。期末試験が終わり開放感を感じる中、自分のまだ知らないことを色々勉強していかなければならないと思いました。

とはいえ、テスト終わりすぐに難しい本やらを読むのは気が引けるので、きばらしとして簡単なレイトレーシングを実装してみることにした。ただしライブラリに頼るのは本末転倒であるので、今回は何もライブラリを使わずに1からやってみようと思った。(しばりプレイ)

・やること
簡単なレイトレーシングをする。
外部ライブラリは一切使わない。(画像表示、画像保存、線形代数、などの基礎ライブラリも使いません)
使えるものはVisualStudio(C++)で標準的に使えるもののみ。

・結果

sphere_rt

表示は自力BMP。

床だけは赤い床で、上からの平行光源と、光を鏡反射する球3つと床のみで構成。

よく見ると、何度も光が反射することによってできる跡が伺える。(床からの反射がわかりやすい)

図形はこのような配置にしている。

図_srr

注:実際はもっと床が下にある。

おまけ 2方向からの光

test02

3方向
test03

Posted on