パストレーシングと大域照明 — 光の跳ね回りを積分する

現実の明るさは、光源からの直接光だけでなく、壁や床で跳ね返ってきた間接光の総和で決まります。この「あらゆる経路の合計」という手に負えない積分を、乱数でサンプリングして平均するモンテカルロ法で解くのがパストレーシング。映画のCGが最終的にたどり着いた方法を、目の前で収束していくコーネルボックスで体験します。

1. レンダリング方程式 — CGが解くべき「1本の式」

前レッスンの Whitted 型レイトレは、鏡面反射と点光源の影までしか運べませんでした。しかし現実には、白い壁で跳ねた光が影の中を照らし、赤い壁のそばの物はほんのり赤く染まります。Kajiya(1986)は、この「光のやりとりのすべて」をたった1本の式にまとめました。

Lo(x, ωo) = Le(x, ωo) + ∫Ω fr(x, ωi, ωo) Li(x, ωi) cos θi dωi レンダリング方程式。出ていく光 = 自ら発する光 +(入ってくる光 × 反射特性 × cos θ)の半球全方向の合計
POINT — この式の難しさの正体 積分は半球の全方向にわたる上、入ってくる光 Li は「別の点から出ていく光 Lo」そのもの。求めたい答えが積分の中に再帰的に現れるため、解析的には解けない。次元も跳ね返りの回数だけ増えていく。この形の問題に強い数値解法がモンテカルロ積分。

2. モンテカルロ積分 — サイコロで積分を解く

モンテカルロ積分は「積分=ランダムに選んだサンプルの平均 × 範囲」と考える方法です。サンプル数を増やせば必ず正解に近づき(不偏性)、次元がいくら高くても使えるのが決定的な強みです。まず1画素分の積分を見てみましょう。

⟨I⟩N = (1/N) Σk=1N f(Xk) / p(Xk) 確率密度 p でサンプル Xk を引き、f/p の平均を取ると期待値は真の積分値に一致する(不偏推定量)
1画素の色は半球の積分 — ランダムな方向の平均で推定する
床の1点から半球へランダムな方向に光線を飛ばし、当たった先の明るさ(空・太陽・赤い壁)を cos θ 重み付きで平均すると、その画素の色の不偏推定になります。N を増やすほど「真の色」との差が縮むことをスウォッチで確認してください。

3. パストレーシングを動かす — コーネルボックス

パストレーシングでは、一次レイのヒット点で止まらず、確率的に方向を選んで跳ね続けます。この1本のつながった道すじが「経路(パス)」。1画素につき何本もの経路を平均すれば、直接光も間接光もまとめてレンダリング方程式の推定になります。下は本物のパストレーサです(拡散反射4回まで・面光源の直接サンプリング付き・決定的な乱数シード)。

プログレッシブ・パストレーシング — サンプルが蓄積するとノイズが消える
毎フレーム少しずつサンプルを追加して平均しています(積算量は右の数字)。左壁=赤、右壁=緑、天井に面光源。影が柔らかい・鏡の球に部屋全体が映る・白い球の左側がほんのり赤い——どれも専用の仕掛けなしに、経路の平均から自動で生まれます。
注意 — ノイズはバグではない パストレ画像のザラつきは、モンテカルロ推定の分散がまだ残っている状態にすぎない。平均は必ず正しい値へ向かう(不偏)ので、待てば消える。ただしサンプルを2倍にしてもノイズは 1/√2 倍にしか減らない。映画では1画素あたり数百〜数千サンプルを費やし、さらにデノイザで仕上げるのが実務。

4. 間接光が生む「空気感」 — カラーブリーディング

同じシーンを直接光のみ(光源から1回で届く光だけ)で描くと何が失われるのか、見比べてみましょう。

直接光のみ vs 大域照明 — 何が変わる?
直接光のみでは影が真っ黒、そして天井も真っ黒(光源は天井にあり、自分の面を照らせない)。間接光を足すと影の中に光が回り込み、赤い壁の色が白い球や床ににじむ(カラーブリーディング)のが分かります。両方とも同じパストレーサで、跳ね返り回数の上限だけが違います。

5. 収束の速さ — 1/√N の壁

モンテカルロ推定の誤差(標準偏差)は σ/√N に従います。サンプルを4倍にして誤差はやっと半分。これが「パストレーシングは重い」の数学的な根源で、以降の研究の大半は「同じ N でいかに σ を小さくするか(分散低減)」に注がれてきました。

誤差(標準偏差) = σ / √N 10倍きれいにするには 100 倍のサンプルが必要。両対数グラフでは傾き −1/2 の直線になる
誤差はどう減るか — 理論線と実測ノイズ
左:両対数グラフでは 1/√N は傾き −1/2 の直線(オレンジ)。点は実測 RMSE(120 回試行の平均。決定的シードなのでリロードしても同じ)。右:同じ明るさを N サンプルで推定したタイル。N=1 ではバラバラ、N=256 ではほぼ均一になります。
一歩先へ — 「賢くサンプルを使う」現代の潮流 分散を減らす主な工夫:重要度サンプリング(明るく寄与しそうな方向を優先して引き、p(x) で割って辻褄を合わせる)、光源を直接狙うNEE(上のデモでも使用)、両者を安全に混ぜるMIS、経路を確率的に打ち切るロシアンルーレット。近年は ReSTIR のようなサンプル再利用や機械学習デノイザにより、1画素 1〜2 サンプル+強力なデノイズという構成でリアルタイムのパストレーシングも実現し始めている。

6. まとめ