メトロポリス光輸送(Metropolis Light Transport, MLT)を lucille に実装してみました。っていうか今の段階ではまだ Graphics Programming Methods のコード(ラージステップ MLT 法)をそのまま持ってきてるだけです。
コーネルボックス、 500 万サンプル、256x256、色なしディフューズ面のみでのレンダリング結果。 レンダリング時間は 3 分。

MLT のアルゴリズムは直感的ではないのですが、理論通りに画像が出てきてちょっと感動。品質や速度はこれから改善していくということで。
今現在の MLT コード部分。 cvs
利点と欠点
MLT の利点と欠点を挙げてみます。
利点:
o レイのパス(path)を再利用するので、毎回パスを最初からトレースする必要がなく、レイトレの回数が減らせる
o パストレ、双方向パストレとは逆に、コースティクスなどの明るい部分にサンプルが集中するのでコースティクスをノイズなしでレンダリングできる
o グローバルフォトンマップのように間接照明に対してファイナルギャザーをする必要がない
o パスの生成はピクセルの位置とは独立なので、フレームバッファに表示するとプログレッシブに徐々に画像が埋め尽くされて生成されていく過程が見て取れる。テストレンダリングに便利。
欠点:
o アルゴリズムが確率的なものであって直感的でないので、実装と検証がやりにくい
o 画像の暗い部分はノイズが大きくなる(コースティクスのノイズに比べればこれはそれほど気にならないのでは)
o インポータンスや確率密度を考えないといけないので、シェーダ言語と統合するのは難しいか?
o アルゴリズムの計算では、気をつけないと浮動小数点値が小さい値や巨大な値になりやすいので、 double で処理しないと桁落ちしやすいかもしれません。
o 効率の良いアルゴリズムであるが、いかんせん実装やドキュメントがなかなか無いので流行っていない...(なのでいずれ詳しく解説したいと思います)
って感じでしょうか。
個人的には、間接光を表現できる G.I. アルゴリズム(パストレーシング、双方向パストレーシング、グローバルフォトンマップ+ファイナルギャザーでの間接照明など)の中では MLT が一番効率が良いような気がします。ただしコースティクスはコースティクスフォトンマップでもいいかと思います。
MLT は lucille で提供する各種レンダリング手法において、デフォルトのレンダリングアルゴリズムにしていきたいと考えています。
投稿者 syoyo : 2004年02月27日 01:41