NEUROMANTIC

自分でC/C++/UE4/Graphics/ゲームなどをやったことをメモするブログ

CPUレイトレーシングプロジェクトでのAABB実装の愚痴

今リリースしているバージョンは、素のままにレンダリングしちゃっていて複雑なモデル(トーラスなど)をレンダリングしようとすると急に時間が大きくなることが生じます。 なのでリアルタイムレンダリングでよく使われるAABBをこっちにも実装して、レイ(光線)が衝突しているAABBがあたってるかを判断してレンダリングしたかったので、実装してみました。

それで二日かけて実装したんですが、効果はあんまり聞かなかったです。下の図はレンダリングした時の処理時間を現したものとなります。

f:id:neuliliilli:20190619204200p:plain
上がAABBを実装していた時、下はしてない時

f:id:neuliliilli:20190619204337p:plain
レンダリング後のイメージ。8sampels/pixelで描画しました。

上の画像のように、SDFモデルの中で一番複雑なトーラス状を40個くらいレンダリングしています。が、AABBを実装したとしても20秒ちょいしか減りませんでした。もしかして-s 8じゃなくて-s 64だったら4分の減少効果になりますがそれでも効果的であるわけではありませんね。 AABBを用いてレイカーリングすることは、単なるSDFモデルではなくて複雑な3Dモデルに適用すると良さそうに見えます。ぐちすんじゃなくて黙って早く実装します。