パストレーシングと大域照明
写真のような陰影や色移りがなぜ再現できるのかを、レンダリング方程式とモンテカルロ積分から一気に理解できます。重要度サンプリングとロシアンルーレットでノイズを抑える実装勘所まで押さえます。
- 1.レンダリング方程式は「ある点からある方向へ出る光=自ら発する光+全方向から入る光の反射」という再帰的な積分方程式で、大域照明とはこの多重反射を解くこと。
- 2.積分は解析的に解けないため、光路(パス)をランダムに追跡して期待値で近似するモンテカルロ積分で解く。誤差は標本数 N に対し 1/√N でしか減らないためノイズが出る。
- 3.重要度サンプリングで寄与の大きい方向を優先的に選び、ロシアンルーレットで無駄なパスを不偏に打ち切ることで、同じ標本数でもノイズを大幅に減らせる。
大域照明とは「光が跳ね返り合う状態」を解くこと
3D シーンをリアルに見せる肝は影の付け方ではなく、光が面から面へ何度も跳ね返って回り込む 効果をどこまで再現できるかにあります。白い壁の横に赤い箱を置くと壁がほんのり赤く染まる「色移り(color bleeding)」、光源が直接当たらない天井裏がぼんやり明るくなる間接光、これらはすべて光の多重反射から生まれます。光源からの1回の反射だけを計算する 直接照明(direct illumination) に対し、任意回数の反射をまとめて扱うのが 大域照明(global illumination, GI) です。
パストレーシングは、この GI を「1つの数式を数値的に解く」という一貫した枠組みで実現する手法です。アドホックな影・反射の足し合わせではなく、物理法則そのものを積分方程式として立て、それをモンテカルロ法で解きます。だからこそ、追加のトリックなしに色移りも柔らかい影も焦線(コースティクス)も自然に出てきます。
レンダリング方程式 ── GI の支配方程式
1986 年に Kajiya が定式化したレンダリング方程式は、ある表面点 x から方向 wo へ出ていく放射輝度(radiance)を次のように定めます。地の文では積分を擬似的に書き下します。
Lo(x, wo) = Le(x, wo) + ∫[Ω] f(x, wi, wo) · Li(x, wi) · cosθi dwi
Lo : 点 x から出射方向 wo へ出ていく放射輝度(求めたい量)
Le : 点 x が自ら発する放射輝度(光源なら非ゼロ、通常面はゼロ)
∫[Ω]: 上半球 Ω 全体にわたる入射方向 wi の積分
f : BRDF(双方向反射率分布関数)。wi から入り wo へ反射する割合
Li : 方向 wi から点 x に入ってくる放射輝度
cosθi : 入射方向と面法線の角度による減衰(幾何項)
この式の本質は 再帰 にあります。入射光 Li(x, wi) は、方向 wi の先にある別の点 y から出射する光 Lo(y, -wi) そのものです。つまり Lo を求めるには Li が要り、Li を求めるにはまた別の Lo が要る——光が跳ね返るたびに方程式が自分自身を呼び出します。GI とはこの再帰を(近似的に)解き切ることに他なりません。
レンダリング方程式は未知関数 Lo が積分の内側(Li 経由)にも外側にも現れる第二種フレドホルム積分方程式です。シーン形状・BRDF が任意である一般の場合、閉じた解は存在しません。しかも積分は各点で半球全体(2次元)にわたり、反射のたびに次元が2ずつ増える無限次元積分に展開されます。この高次元積分を現実的に扱えるのが、次元数に計算コストが直接依存しないモンテカルロ積分です。
モンテカルロ積分による解法
モンテカルロ積分は、積分を「ランダムな標本点での被積分関数の平均」として推定します。積分 I = ∫ g(x) dx を、確率密度関数 p に従って抽出した N 個の標本で近似します。
I ≈ (1/N) · Σ[k=1..N] g(Xk) / p(Xk) (Xk 〜 p)
・p(Xk) で割るのは、選ばれやすい標本を過大評価しないための補正
・N を増やすほど真の値に収束(大数の法則)
・この推定量は不偏(期待値が真の積分値に一致)
パストレーシングでは、カメラから画素ごとに光線を飛ばし、面に当たるたびに BRDF などに従って次の反射方向をランダムに選び、光源に当たるか打ち切るまでパスを伸ばします。1本のパスがレンダリング方程式の1標本に対応し、画素あたり多数のパス(サンプル)を平均して色を決めます。
問題は収束の遅さです。モンテカルロ推定の 標準誤差は 1/√N でしか減りません。ノイズ(推定の分散の見た目)を半分にするには標本を4倍、1/10 にするには100倍必要です。この非効率が、素朴なパストレーシング画像に残る粒状ノイズの正体です。分散を減らす工夫が実用化の鍵になります。
重要度サンプリング ── 寄与の大きい方向を狙う
分散削減の王道が 重要度サンプリング(importance sampling) です。標本を一様にばらまくのではなく、被積分関数 g が大きい領域に確率密度 p を寄せます。理想は p を g に比例させることで、そのとき推定量の分散はゼロになります(各標本の g/p が定数になるため)。
レンダリングでは g = f · Li · cosθ なので、これに近い形を狙って主に2種類のサンプリングを組み合わせます。
| 手法 | 何に比例させるか | 得意な状況 |
|---|---|---|
| BRDF サンプリング | f · cosθ(反射の指向性) | 鏡面・光沢面。反射ローブが鋭い材質 |
| 光源サンプリング | 光源の立体角(Li の分布) | 小さな光源。直接光の影がはっきり出る場面 |
| 複合重要度サンプリング (MIS) | 両者を重み付き結合 | 上記2つの弱点を相互に補う汎用策 |
BRDF サンプリングだけだと小さな光源を偶然しか捉えられず影がザラつきます。逆に光源サンプリングだけだと鏡面反射で光源の像がうまく出ません。複合重要度サンプリング(MIS, multiple importance sampling) は両方から標本を取り、各標本にバランスヒューリスティックなどの重みを掛けて結合することで、どちらの状況でも破綻しない推定を与えます。物理ベースレンダラの標準装備です。
ロシアンルーレット ── 不偏に打ち切る
再帰は原理上無限に続きますが、反射のたびに光はエネルギーを失うため、深いパスの寄与はごく小さくなります。とはいえ一定深度で機械的に打ち切ると、そこから先の光を捨てることになり、画像が暗くなる バイアス が入ります。
これを回避するのが ロシアンルーレット(Russian roulette) です。パスを続けるか確率的に決め、生き残ったパスの寄与を継続確率で割り増して埋め合わせます。
継続確率を q(例: 反射率などから決める。0 < q ≤ 1)とする
乱数 ξ を [0,1) から引く
もし ξ が q 以上なら → パスをここで終了(寄与 0)
そうでなければ → 反射を続け、その寄与を 1/q 倍する
期待値: q · (寄与/q) + (1−q) · 0 = 寄与
→ 平均すれば打ち切っても真の値と一致する(不偏)
ミソは、打ち切っても 期待値が変わらない(unbiased) ことです。個々のパスは早く終わったり長く伸びたりしますが、多数平均すれば正しい明るさに収束します。継続確率をパスの現在の重み(それまでの反射率の積など)に応じて決めると、寄与が小さいパスほど早く枝刈りされ、計算予算を寄与の大きいパスへ回せます。結果として、無限再帰を有限時間で不偏に扱えます。
継続確率で割り増す操作は、生き残ったパスの寄与を大きくブレさせるため、1標本あたりの分散はむしろ増えます。得なのは計算量の削減効果です。無駄なパスを早く止めた分だけ単位時間により多くのパスを走らせられるので、同じ計算時間で比べたときのノイズは下がります。q を小さくしすぎると割り増しが極端になりノイズが跳ねるため、通常は序盤の反射では打ち切らず、ある程度深くなってから適用します。
ノイズと収束、そして実務での立ち位置
パストレーシングの誤差は理論上ノイズ(分散)だけで、標本を増やせば真値へ収束する不偏推定です。ここが、光を格子で離散化して系統誤差(バイアス)を持つラジオシティなどとの決定的な違いです。ノイズは「時間をかければ必ず消える」種類の誤差なので、品質と計算時間を素直にトレードできます。
とはいえ 1/√N の収束は遅く、リアルタイム用途ではサンプル数を稼げません。そこで実務では次の合わせ技が使われます。
- デノイズ: 少ないサンプルの粒状画像を機械学習ベースのフィルタ(例: OptiX/OIDN 系)で平滑化し、見た目のノイズを除く。ここに GPU の AI 推論器(/ai/ の技術基盤)が活きます。
- ハードウェアレイトレーシング: 光線と三角形の交差判定を専用回路で加速する GPU(/hardware-components/ 参照)が、パスあたりのコストを桁で下げました。
- 時間的蓄積: 前フレームの結果を再利用し、フレームをまたいで実効サンプル数を稼ぐ。
「パストレーシングはなぜラジオシティより汎用的か」を問われたら、(1) 鏡面反射やコースティクスなど視点依存の効果を BRDF を通して自然に扱える、(2) シーンを面パッチに離散化する前処理が要らず不偏、(3) 高次元積分でも次元数に計算量が直接依存しない、の3点で答えます。逆に弱点は 1/√N の遅い収束=ノイズであり、その対策が重要度サンプリング・MIS・ロシアンルーレット・デノイズだと整理できると強いです。
まとめ
- 大域照明 とは光の多重反射(間接光・色移り・コースティクス)まで含めて解くことで、パストレーシングはそれを1つの積分方程式として一貫して扱う。
- レンダリング方程式 は「出射光=自発光+半球全体からの入射光の反射」という再帰的積分方程式で、閉じた解は一般に存在しない。
- モンテカルロ積分 はパスをランダムに追跡して期待値で近似する不偏推定だが、誤差が 1/√N でしか減らずノイズが出る。
- 重要度サンプリング(BRDF/光源/MIS) で寄与の大きい方向を狙い、ロシアンルーレット で不偏に打ち切ることで、同じ標本数・計算時間あたりのノイズを大幅に削減できる。
- 遅い収束は デノイズ・ハードウェアレイトレーシング・時間的蓄積 で補い、実写級の GI をリアルタイムへ近づけている。
グラフィックス Article
パストレーシングと大域照明を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
レンダリング
比較で見る軸
難易度: advanced / カテゴリ: グラフィックス / タグ数: 5
導入後に効く点
積分は解析的に解けないため、光路(パス)をランダムに追跡して期待値で近似するモンテカルロ積分で解く。誤差は標本数 N に対し 1/√N でしか減らないためノイズが出る。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- グラフィックス
- タグ数
- 5
判断チェックリスト
- 自社の用途が「レンダリング / パストレーシング」に近いか確認する。
- 強みである「レンダリング方程式は「ある点からある方向へ出る光=自ら発する光+全方向から入る光の反射」という再帰的な積分方程式で、大域照明とはこの多重反射を解くこと。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。