今までの結果を描画回数で割って、フレームバッファに色を出力します。通過しない限り画面は更新されないので、今回は1ピクセルごとにレンダリングする姿は見れません。移って次のパスをレンダリングします。今回は何度もレンダリングするのですが、この方法に都合がいいアンチエイリアスも試みました。それは、レイを飛ばすときに、ピクセルの中をランダムに飛ばす方法です。ピクセルの中を適当にずらしてレイをサンプリングしたほうがアンチエイリアスがかかりより正確な画像になります。本当はサンプリングする場所も適当に決めたほうがいいのですが、モンテカルロ法を信じるなら、多くのレイを飛ばしたアンサンブル平均はピクセルの中を一様にレイを飛ばした結果と等しくなるので、今回はレイをランダムに飛ばしてサンプリングします。関数自体が1秒ごとに帰ってくる関数になったので、アプリケーションの呼び出し側も変更しましょう。関数が帰ってきたときに、イベントの処理や画面の再描画をしています。現在何回目のレンダリングをしているかどうかをウィンドウのタイトルに表示するようにしました。メソッドでタイトルを変更することができるので、レンダリング回数を所得できる関数を作っておいて、画面を更新するたびにタイトルを書き換えました。80分で10000回程度レンダリングできました。1回のレンダリングでは、まばらにしか点がありません。ほとんどの計算が無駄になっています10回のレンダリングでは、うっすらと色が見えますが、概要は全然わかりません。50回のレンダリングでは、なんとなく形が見えてきました。集光効果はこの時点でもはっきりわかります100回のレンダリングでは、もう形がわかります。500回のレンダリングでは、形がはっきりとわかります。これからがノイズとの戦いです。1000回のレンダリングでは、透明な球もはっきりしだしています。5000回のレンダリングでは、だんだんノイズも取れてきました。13000回のレンダリングでは、だいぶすべすべです。ノイズは目立ちますね。50000回のレンダリングでは、よりよくなっていますが。ノイズが取れる気はしません...この後、80000回ほどレンダリングしたら、マシンがフリーズしてしまいました。比較として、計算打ち切り深度を深くして計算してみました。100回、レイを反射、屈折させても光源にたどり着かなかったときに、計算をやめるように変更して、プログラムをまわしてみたら50008回まわした時点で次のようになりました。こちらのほうが間接光が強く出ているカナ?■最後にこれでグローバルイルミネーションを取り込むことができました。いっても間接照明はかなり弱いですね。このモンテカルロ法はノイズが多すぎで時間もかかります。このままでは、とてもリアルタイムにはなりそうもありません...もどるimagire@gmail.com。