BlenderのCyclesレンダラのパストレーシングについて勉強したメモです。
パストレーシング?
Cyclesではパストレーシングという手法を用いてレンダリングを行っています。
ではパストレーシングとは何なのでしょうか。
このあたりの話は次の記事が非常にわかりやすく参考になりました。
まず、カメラから光源への経路を辿ってからライティングの計算をする手法をパストレーシングというようです。
反対に光源からの経路を辿る手法はライトトレーシングといいます。
光源から放たれた光はそのすべてがレンダリングしたい部分の色に寄与するわけではありません。
そのため、パストレーシングのほうが処理効率が良いようです。
ただしパストレーシングはコースティクスのような表現が苦手だったり、
明暗差の大きい環境ではノイズが出やすいというデメリットがあります。
次節ではパストレーシングによって色が計算されるまでの流れをまとめてみます。
パストレーシングで色を計算するまでの流れ
パストレーシングではあるピクセルの色を計算するとき、まずカメラからその点へのレイを飛ばします。
レイが当たったらその位置からランダムな方向にレイを飛ばします。
またレイが当たったらランダムな方向にレイを飛ばします。
ライトに辿り着くまでこれをやります。
ライトに辿り着いたら、光の影響を計算します。
ただしライトに辿り着かない場合もあるので最大試行回数は決まっています。
この処理の結果は、レイを飛ばした方向にすぐライトがあれば明るくなるし、
しばらく反射を重ねた後にライトがあれば暗くなります(物体の反射率によりますが)。
しかしレイを飛ばす方向はランダムなので、結果が明るくなるか暗くなるかもランダムです。
つまりこの処理は一回やるだけでは正しいピクセル色が取れません。
本当の色はこれらの結果が干渉しあったものです。
そのためパストレーシングではこの処理を複数回行って結果を混ぜ合わせることで色を求めます。
この回数を決めるための数値がサンプリング数です。
サンプリング数を上げるとより正確な結果が得られますが、処理に時間がかかります。
サンプリング数が小さいと結果がブレるのでそれがノイズとして現れることになります。
このノイズについてはもうちょっと深いけど重要な話になりそうなので、別記事にまとめようと思います。