

パストレーシングは、コンピュータグラフィックスにおけるレンダリングアルゴリズムの一つで、光が物体や媒質とどのように相互作用するかをシミュレートし、現実的(物理的に妥当な)画像を生成するものです。これは、より以前の、より限定的なレイトレーシングアルゴリズムに基づいています。
パストレーシングは、芸術的な目的や、建築レンダリング、製品デザインなどの用途において、フォトリアリスティックな画像を作成するために使用されます。また、アニメーション映画のフレームレンダリングや、映画・テレビの視覚効果にも使用されます。非常に高精度で偏りのないレンダリングが可能であるため、他のレンダリングアルゴリズムの品質をテストする際の参照画像の生成によく用いられます。
この手法は、モンテカルロ法を用いて全照度を推定し、様々な物質が光を反射(または散乱)、透過、吸収、放出する様子をシミュレートします。絞りやレンズ(被写界深度、ボケ)、シャッタースピード(モーションブラー)の影響を単純にモデル化することも、カメラ内の光学部品をよりリアルにシミュレートすることも可能です。
このアルゴリズムは、レンダリング方程式または光輸送方程式を使用してシーン内の照明を記述し、モンテカルロ積分を使用して近似解を見つけることで機能します。このアルゴリズムの非効率的(ただし正確)なバージョンは非常に単純で、カメラから光線を追跡し、この光線がシーン内のさまざまなオブジェクトに当たるときにランダムな方向に反射させ、パスが光源に遭遇するたびにカメラまでのパスに沿って伝達される光の量を計算することを含みます。このプロセスは各ピクセルに対して何度も繰り返され(生成されたパスと伝達された光を含む各繰り返しはサンプルと呼ばれます)、結果は平均化されます。このアルゴリズムと標準的なレイ トレーシングの主な違いの 1 つは、毎回単一の分岐しないパスがトレースされるのに対し、「Whitted スタイル」または「Cook スタイル」のレイ トレーシングは分岐パスを再帰的にサンプリングすることです(たとえば、光がガラスのオブジェクトによって反射および屈折の両方される場合)。
より実用的なバージョンでは、準モンテカルロ法(サンプルをより均等に分配する手法)、重点サンプリング(より多くの光を運ぶ可能性が高い経路のサンプルをより多く取得する)、次イベント推定(非常に限定的な分岐を許容し、ライトにより直接的に接続する追加の経路をサンプリングする)などの改良が取り入れられています。
パストレーシングはランダムサンプルを使用するため、最終画像にはノイズが含まれますが、サンプル数を増やすほどノイズは減少します。一般的に、ノイズを許容レベルまで低減するには、ピクセルあたり数千個のサンプル(spp)が必要となるため、ニューラルネットワークに基づくノイズ除去技術がよく用いられます。ビデオゲームのリアルタイムレンダリングにパストレーシングを使用する場合、比較的少ないサンプル数で済むため、ノイズ除去が必須となります。
パス追跡のための代替アルゴリズムは数多く開発されてきましたが、必ずしもより単純な実装よりも優れた性能を発揮するとは限りません。これらには、双方向パス追跡(光源から前方へのパスとカメラから後方へのパスを追跡する)、メトロポリス光輸送、パス追跡とフォトンマッピングを組み合わせる方法などがあります。ビデオゲームでは、パフォーマンスを向上させるために、パス追跡のバイアスバージョンがよく使用されます(たとえば、各パスでの反射回数を制限するなど)。ReSTIRと呼ばれる一連の技術が開発されており、近接するピクセル間および連続するフレーム間でデータを共有することで、リアルタイムのパス追跡を支援できます。
すべてのレイ トレーシング法と同様に、パス トレーシングは、1960 年代後半にアーサー アペルがコンピュータ グラフィックス レンダリングに使用したレイ キャスティングに基づいています。1980 年、ジョン ターナー ウィッテッドは、鏡面や屈折する透明な物体を含むシーンの画像をレンダリングできる再帰的レイ トレーシング アルゴリズムを発表しました。1984 年、クックらは、モンテ カルロ積分を使用して被写界深度、モーション ブラー、粗い表面からの反射、エリア ライトなどの効果をレンダリングする分散レイトレーシングと呼ばれるレイ トレーシングの形式について説明しました。同じ年に、拡散グローバル イルミネーションをレンダリングするための最初の物理ベースの方法であるラジオシティ法 (レイ トレーシング法ではない) が発表されました。1986年、ジム カジヤは、分散レイ トレーシングを使用して物理ベースのグローバル イルミネーションをレンダリングする方法を探求した論文を発表し、この論文では「パス トレーシング」と呼ばれる方法も紹介し、命名しました。パス トレーシングやその他の分散レイ トレーシング技術は、1980 年代後半から 1990 年代初頭にかけて、James Arvo やPeter Shirleyなどの研究者、およびオープンソースのRadianceソフトウェアの Greg Ward によってさらに改良されました。[ 1 ] : 15.9 [ 2 ] [ 3 ]
理論的にはあらゆる照明をレンダリングできるにもかかわらず、パス トレーシングの元の形式は、カメラからのみパスをトレースするため、可視面を照らす前に反射または屈折する光をレンダリングする場合、拡散グローバル イルミネーションなど、非常に非効率的 (またはノイズが多い) になることがあります。この問題を解決するために、双方向パス トレーシングと呼ばれる、カメラと光源の両方からパスをトレースするパス トレーシングのバリエーションが、1993 年に Eric Lafortune と Yves Willems によって、1997 年に Eric Veach と Leonidas Guibas によって発表されました。1997 年に Veach と Guibas は、双方向パス トレーシングとメトロポリス法を組み合わせたメトロポリス光輸送と呼ばれる別の方法も発表しました。Veach の長い博士論文では、パス トレーシングの理論的背景とともに、両方の技術について説明しています。その後、書籍『Physically Based Rendering』( 2014年にアカデミー技術賞を受賞)がパストレーシングに関する情報をより広く普及させるのに役立った。[ 3 ] [ 4 ]
パス トレーシングでは、視覚的に許容できる量のノイズを持つ画像を生成するために、多数の光の経路をトレースする必要があります。このため、1980 年代と 1990 年代に利用可能だったコンピュータではパス トレーシングは非常に遅く、初期のコンピュータ グラフィックス アニメーション映画のスタイルを再現しようとするとノイズが問題となりました。2010 年頃までPixarなどのスタジオによって制作されたほとんどのアニメーション映画は、ラスタライズ ベースのレンダリングを使用し、反射 (および後に事前計算またはキャッシュされたグローバル イルミネーション) に選択的にレイ トレーシングを使用しました。しかし、1990 年代にはコンピュータの速度が急速に向上しました。Blue Sky Studios は、 1998 年の短編映画「バニー」を含むアニメーションのグローバル イルミネーションにモンテ カルロ レイ トレーシングを使用する先駆者でしたが、使用した正確な技術は公開していません。[ 3 ] [ 4 ]
パス トレーシングは、2000 年代初頭に映画制作において徐々に実用的になっていった。マルコス ファハルドが開発した Arnoldレンダラーは、ソニー ピクチャーズ イメージワークスによって、2006 年に公開された長編映画「モンスター ハウス」の制作に使用された。ピクサーは、パス トレーシングを使用するためにRenderManソフトウェアを書き直し、2016 年に初のパス トレーシング長編映画「ファインディングドリー」を公開した。パス トレーシングは依然として計算コストが高かったものの、アニメーション スタジオは、例えば、ライトを手動で配置してグローバル イルミネーションを偽装する必要がなくなったため、パス トレーシングを使用すると必要な人的作業が少なくなることを発見した。パス トレーシング画像に存在するノイズの量は、特にモーション ブラー (初期のアニメーション映画で広く使用されていた) のレンダリング時に依然として問題を引き起こしたが、これに対処するためにノイズ除去技術が開発された。また、髪や毛皮のレンダリング、および映画で必要とされる非常に大きなシーンを処理するための新しい技術も必要となった。[ 3 ] [ 4 ] [ 6 ]
ArnoldやDisneyのHyperionなどのレンダラーは、当初はレンダリングにCPUのみを使用していましたが、GPUの性能が向上し(CUDA、OpenCL、OptiXなどのAPIがリリースされたため)、研究者や開発者はGPUを使用するようにアルゴリズムや実装を適応させ始めました。GPUはレンダリング時間を劇的に短縮できます。たとえば、ハイエンドGPUを使用してレンダリングコードの一部を高速化すると、ハイエンドCPUのみを使用する場合よりも30倍以上高速になります。[ 6 ] [ 4 ] [ 7 ]

梶谷の1986年の論文では、レンダリング方程式と呼ばれる再帰的な積分方程式が定義されており、これは光輸送の簡略化された形式を記述しています。方程式の右辺の積分にモンテカルロ積分を使用すると、パス追跡アルゴリズムにかなり直接的につながります。 [ 8 ]
これは、点x 'から点xに到達する光I(x,x ' )を、2 点間の光を遮るものがある場合は 0、そうでない場合は 1 となる幾何学項g(x,x')と、点x 'からxに向かって進む光量の積として表しています。点x 'から出る光は、 x 'の表面から放射される光と、シーン内の他のすべての点 (積分領域S ) からx 'に到達し、 xに向かって反射される光の積分の合計です。反射される光量を計算する係数ρ(x,x',x ' ' )は、光の入射角と出射角、および表面材料の特性を考慮に入れる必要があり、通常は双方向反射率分布関数(BRDF) または双方向透過率分布関数(BTDF) として表されます。[ 8 ] [ 1 ] : 31.13
この方程式はしばしば光輸送方程式(LTE)と呼ばれ、面ではなく方向に関する積分を用いて記述されることが多い。(梶谷の方程式では、幾何学項によって、任意の方向から光を寄与できる面上の点は1点のみであることが保証される。)実際のレンダリングでは、カメラが特定の光線に沿って受け取る光量を表す測定方程式と呼ばれる関連方程式も用いられる。 [ 9 ] [ 10 ] [ 11 ] [ 12 ]: 89
梶谷が使用した方程式のバージョンは、光が単一波長であると仮定しています(波長はどの関数のパラメータとしても現れません)。これは幾何光学の簡略化であり、回折、偏光、蛍光などの現象は考慮されていません。積分は表面のみで行われ、散乱、吸収、発光する空間領域である散乱媒体は扱われません。ただし、このようなケースや複数の波長を扱うための拡張は論文中で言及されており、よく理解されています(そして、これらの効果のレンダリングを妨げるパストレーシングアルゴリズムの根本的な制限はありません)。[ 8 ]
梶谷氏は、従来のレイトレーシング手法がレンダリング方程式の近似解をどのように見つけるかを説明した。また、レンダリング方程式は、放射輝度レンダリング手法で解かれる放射輝度方程式と等価であることを示した。しかし、放射輝度手法は表面がランバート面であることを前提としており、ランバート面でない材料に適用すると不正確な(偏った)値が得られる。さらに、放射輝度手法が表面の有限要素近似を使用していることも偏りの原因となっている。梶谷氏は、モンテカルロ積分を用いて、既存の分散レイトレーシング手法を応用し、レンダリング方程式(すなわち、シーン内の光輸送の定常状態または平衡解における表面上の選択された点の放射輝度値)を偏りなく解くことに成功した。 [ 8 ] [ 12 ] : 9 [ 1 ] : 31.10 [ 13 ] : 626
Whittedスタイルの再帰的レイ トレーシングでは、方程式の右辺の積分は、シーン内のすべての光源からその点に到達する特定の反射光線と屈折光線、および直接光の寄与の合計に置き換えられます (光源は点光源または指向性光源であるため、照明は簡単に評価できます。他のタイプの光源には何らかの近似が使用される場合があります)。定数の「環境項」を追加して、グローバル イルミネーションを近似することができます。分散レイ トレーシングでは、粗い反射をレンダリングするためにモンテ カルロ積分の使用が導入され、単一の方向の寄与を使用する代わりに、各バウンスで複数の方向をサンプリングしますが、拡散グローバル イルミネーションは依然として通常、環境項を使用して近似されます。[ 8 ]
拡散グローバルイルミネーションにモンテカルロ積分を使用する際の問題点は、結果の分散が大きいこと(ノイズを許容レベルまで低減するために多くのサンプルが必要となる)です。この問題を解決するために、本論文ではまず層別サンプリング手法を検討しました。分散レイトレーシングでは、各ステップで複数の分岐レイを追跡することができ、各ステップで積分領域を独立して層別化する「階層的積分」と呼ばれる手法が以前に検討されていました。しかし、グローバルイルミネーションでは、方向または表面点のより大きな領域をサンプリングする必要があります。分散を低減するためにこれらの領域を適応的に層別化することは困難すぎることがわかりました。最終結果にどれだけ寄与する可能性が高いかに応じて、非一様分布からサンプルを選択する重点サンプリングが、より実行可能なアプローチとして特定されました。[ 8 ]
重点サンプリングを使用する場合、階層的統合(再帰的レイトレーシングによる)はもはや必要なくなり、これがパストレーシングの定式化につながった:[ 8 ] [ 1 ]: 31.17
この図は、従来の分散型レイトレーシングの代替アルゴリズムも示しています。分岐ツリーを照射する代わりに、確率的に選択されたレイでパスを照射します。反射や屈折が多いシーンでは、これにより特定のピクセルに対して計算する必要のあるレイオブジェクト交差の数が大幅に削減され、プログラミング作業はごくわずかでレイトレーシングの速度が著しく向上します。ただし、パストレーシングと呼ばれるこの新しい高速レイトレーシング方式では、各ピクセルに寄与する反射、屈折、および影のレイタイプの適切な比率を維持することが非常に重要であることがわかりました。
—ジェームズ・T・カジヤ、「レンダリング方程式」[ 8 ]
レイトレーサーは再帰関数を用いて実装されることが多いが、パストレーサーは本質的に再帰的である必要はなく、代わりにループを用いることができる。
以下に、単一のパスをトレースする非再帰関数の擬似コードを示します。次のイベント推定(NEE) を使用するか、パスが偶然に光に当たるまで待ってから光を蓄積することができます。光線の方向のコサイン重み付けサンプリングを使用します。これは拡散面に対して効果的で (ランバート面に対して最適です)、コードを簡素化します。[ 14 ] [ 15 ] [ 16 ]
function TracePath(cameraRay): レイ ← カメラレイ スループット ← 1 値 ← 0 ループ: 交差点 ← FirstRayIntersection(ray) [NEEを使用する場合] : lightSample ← SampleLights() value ← value + スループット × ComputeLightAmount(ray, intersection, lightSample) そうでなければ、 [交差オブジェクトがライトである場合] : value ← value + スループット × intersection.emittedLight newDirection ← CosineWeightedSample(intersection.surfaceNormal) スループット ← スループット × π × intersection.BRDF(−ray.direction, intersection.surfaceNormal, newDirection) ray.start ← intersection.location ray.direction ← newDirection q ← ComputeTerminationProbability(throughput) random() < qの場合: 戻り値 スループット ← スループット / (1 - q)
このコードは、3D空間における始点と正規化された方向ベクトルからなる「レイ」値を使用します。ピンホールカメラをシミュレートする場合、入力カメラレイはカメラの位置を始点とし、方向はピクセル位置に基づいて選択する必要があります。この関数は各ピクセルに対して複数回呼び出され、返された結果の平均値が最終的なピクセル値となります。関数はrandom()0から1の間の値を返します。
簡略化のため、このコードは不透明な表面マテリアルにのみ適用され、シーンは閉じている(光線がシーンから出ることはない)ことを前提としています。単一波長の光のみを追跡しますが、RGB値やスペクトルレンダリングに対応するように変更することも可能です(下記参照)。NEE以外のケースで処理される光源は、完全に拡散していると想定されています(そうでない場合、一定のemittedLight値の代わりに、光線とは反対方向に放出される光の量を計算するために別の関数を評価する必要があります)。
このコードは、確率的にループを終了させることで関数を偏りのないものにするために、ロシアンルーレットと呼ばれる手法を使用しています。 がComputeTerminationProbability0 より大きい値を返す場合(または、 がthroughput閾値を下回った場合など、最終的に 0 より大きい値を返す場合)、ループは最終的に終了します(累積値を返すことによって)。 q が 0 より大きく、ループが継続する場合、 は、throughputその時点で他のサンプリングされたパスが終了した可能性があることを補償するために増加します。これにより、結果が正しい期待値を持つことが保証されます。[ 17 ] : 2.2.4 [ 18 ] : 13.2.1 [ 12 ] : 67-68
「q」値は任意のヒューリスティック(定数確率でも可)を用いて計算できますが、効果的にするためには、がthroughput非常に低い値(ゼロに近い値)に低下した場合、qは1に近い値にする必要があります。終了確率を大きくすると、パスは短くなる傾向がありますが、分散は大きくなります(長いパスは少なくなりますが、それらのパスのスループットはより大きな係数で増加するため、明るいピクセルが散在する傾向があります)。[ 17 ]: 2.2.4 [ 19 ]: 5.3.2
CosineWeightedSample表面上の点における半球内の方向を、方向と表面法線との間の角度のコサインに比例する確率でサンプリングします(投影立体角測定を使用して積分することと同等)。これは一般的に拡散面で行われ、スループット式のコサイン係数と逆確率係数(重要度サンプリングに必要な係数)が相殺されるため、コードが簡略化されます。それ以外の場合、方向サンプリングは通常、BRDFとコサイン係数の積に比例する確率を使用しようとします。完全に鏡面反射する表面の場合、可能な方向は1つだけであり、少し異なるコードを使用する必要があります。[ 12 ]: 77、82、172、254 [ 16 ]
BRDF の値は、慣例により BRDF に含まれる係数1/ πを打ち消すためにπ倍されます。(この慣例は、方向と表面法線の間の角度のコサインを半球全体で積分するとπになるという事実から来ており、そのため、完全な非吸収性ランバート面の BRDF は、評価が1 になるように1/ πの正規化係数を含める必要があります。) 1/ π係数は、コサイン重み付きサンプリングの PDF (打ち消されたコサイン係数も含まれる) の一部と見なすこともできます。PDF で割る必要があるため、πを掛けます。パス トレーシングの例では、コサイン重み付きサンプリングの完全な PDF を明示的に計算し、それで割る (そして、もはや打ち消されていないため、BRDF にコサイン係数を掛ける) ことがよくあります。これは、サンプリング方向に対してコサイン重み付き分布以外の分布を使用する場合にも、コードが行う必要があることです。[ 1 ] : 14.9.2
パフォーマンスを向上させ、パストレーシングを複雑でリアルな画像をレンダリングするための有用なアルゴリズムにするために、さまざまな技術と機能強化がレンダリングエンジンに組み込まれています。
重点サンプリングは、モンテカルロ積分の結果の分散(この文脈では、誤差の二乗平均)を低減するための標準的な手法です。これにより、許容できるノイズ量でパストレーシング画像をレンダリングするために必要なサンプル数を大幅に削減できます。この手法では、積分対象の値にほぼ比例する確率密度関数(PDF)を選択し、一様分布からではなく、その確率密度からサンプルを抽出します。[ 17 ]: 2.2.2 [ 12 ]: 47
表面材料はあらゆる方向に同じ量の光を反射するわけではないため、パストレーシングで一般的に用いられる重点サンプリング法は、パス内の次の光線の方向を選択する際に、材料に使用される双方向反射率分布関数(BRDF)(下記の「散乱分布関数」を参照)と同じ形状の確率密度関数(PDF)からサンプル(この場合は表面点の周りの半球からの方向)を抽出することです。これは、光沢のある材料や輝く材料に特に効果的です。[ 12 ]: 254
重点サンプリングでは、モンテカルロ積分に使用するサンプルを抽出するための単一の確率密度関数(PDF)を選択する必要がありますが、パストレーシングでは、使用できる代替PDFが複数存在することがよくあります。たとえば、2つの関数の積である関数を積分する場合、2つの関数を個別にサンプリングするための適切なPDFは知られているものの、積をサンプリングするための適切なPDFが知られていない場合などに、このような状況が発生する可能性があります。いずれかのPDFを選択するか、それらを組み合わせる方法を見つける必要があります。[ 17 ]: 2.2.3
一般的な例として、物体の表面上の点からカメラに向かって反射される面光源からの直接光の量をサンプリングすることが挙げられます。物体の表面点におけるサンプリング光線の方向を選択する際には、光源表面上のランダムな点を選択し(物体の表面材質に関する情報は使用しない)、その光源点に向かう光線の方向を計算する方法と、物体の表面の双方向反射率分布関数(BRDF)に比例した光線の方向をサンプリングする方法(光源の位置と形状は考慮しない)があります。最初の方法では、サンプリングされた光線が光源を逃すことはありませんが、光沢のある表面では、カメラに向かって反射される光が非常に少ない方向を選択する可能性があるため、粗い(拡散)表面に対してより効果的です。2番目の方法は、BRDFの値が高い方向を選択する可能性が高いため、光沢のある表面に対して効果的な場合が多いですが、選択した方向の光線が光源を逃す可能性があります。[ 12 ]: 252-257
より単純なパストレーシングでは、通常、最初の戦略が直接光に使用され、次イベント推定(NEE)として知られています。その後、アルゴリズムはパスのトレースを続け、2番目の戦略を使用してサンプリング方向を選択し、間接光をサンプリングします。次の光線が偶然光源の表面に当たった場合(光源も通常はシーン内のオブジェクトです)、表面から放出された光は無視されます。そうしないと、その光が二重にカウントされてしまうためです。これは拡散面には適していますが、光沢のある表面には最適ではありません。[ 18 ]: 13.2.3
多重重要度サンプリング(MIS)と呼ばれる手法では、両方のサンプリング方法を併用することで、最適とは言えない戦略が選択されたり、値が二重にカウントされたりする(バイアスが生じる)状況を回避できます。MISは、2つのサンプルをブレンドするための重みを計算し、結果がバイアスのないものになるようにします。そして、より効果的である可能性が高い戦略にはより大きな重みが与えられます。重みはヒューリスティックを用いて選択され、重みが特定の条件を満たせばバイアスのない結果が得られます。様々なヒューリスティックが考案されており、状況によって効果的なものもあればそうでないものもありますが、バランスヒューリスティックは広く適用可能です。ワンサンプルモデルと呼ばれるバリエーションでは、複数のサンプルをブレンドする代わりに1つのサンプリング戦略を選択し、このバリエーションではバランスヒューリスティックが常に分散を最小化します。[ 12 ]: 252-287 [ 17 ]: 2.2.3
MISは、重点サンプリングに使用できる複数の代替確率密度関数(PDF)が利用可能で、かつどの代替関数もあらゆる状況で明らかに優れているわけではない場合(一部のPDFはサンプリング対象領域を部分的にしかカバーしていない可能性がある場合)に使用できます。これは双方向パス追跡の重要な構成要素です(下記参照)。[ 12 ]: 251,297
基本的なパス追跡アルゴリズムでは、乱数発生器を使用して、パス上の各点(および次イベント推定を使用する場合は光源上の点)でサンプリングする光線の方向を選択します。これにより、結果の偏りがなくなり、画像に目に見えるアーティファクトが発生するのを防ぎます。しかし、パス追跡を繰り返してサンプルを平均化すると、サンプリングされた方向は完全にランダムであるため、積分領域を均等にサンプリングすることはできません(サンプリングされた方向に塊や隙間が生じます)。これは標準的なモンテカルロ積分では正常かつ避けられない現象ですが、サンプルをより均等に分布させることで分散を低減できる準モンテカルロ法と呼ばれる手法があります。これは、サンプルが標準的なモンテカルロ積分に必要なランダム性を持たないことを意味するため、偏りやアーティファクトを避けるために慎重に行う必要があります。[ 20 ]: 8.2.2
これを実行する最も簡単な方法は、サンプリング対象の領域(たとえば、表面から出る光線の方向の半球)をセグメントに分割し、各セグメントでランダムな点を選択することです。これは層化サンプリングと呼ばれ、その欠点は、取得するサンプルの数を事前に知っておく必要があることと、依然としてクラスター化が発生する可能性があることです(隣接するセグメントからのサンプルが両方ともセグメントの端にある場合、非常に近くなることがあります)。[ 17 ] : 2.2.1 [ 21 ]
サンプル数が事前にわからない場合は、低不一致シーケンスと呼ばれる方法を使用して、分散してドメインを均等にカバーする傾向のあるサンプルを生成できます。この特性を持つ一般的なシーケンスには、ハルトンシーケンスとソボルシーケンスがあります。これらは事前に定義された(非ランダムな)シーケンスですが、最新のパストレーサーでは、シーケンスを置換(スクランブル)して、よりランダムにします。[ 22 ] [ 23 ]
層化サンプリングと低不一致シーケンスは、サンプリング対象領域の次元が増加するにつれて効果が低下する可能性があります。パス トレーシングでは、非常に高次元のサンプルが生成されます。たとえば、不透明な表面の単純なパス トレーシング (光サンプリングなし) では、各光線方向が半球上の 2D サンプルであるため、パス内のバウンス数の 2 倍の次元を持つサンプルが使用されます。各バウンスに対して層化サンプリングまたは低不一致シーケンスを個別に使用すると、バウンス方向間に相関が生じ、画像にバイアスが生じる可能性があり、また、完全なサンプル (すべてのバウンス方向を含む) が領域を均等にカバーしない可能性があります。パス トレーサーは通常、非常に高次元の低不一致シーケンスを使用しますが、これは、個々のバウンス (2D サンプルとして個別に考慮) のサンプリングが最適ではない可能性があることを意味します。パディングと呼ばれる単純な手法でこれが改善され、スライス最適輸送と呼ばれるより高価な手法では、1Dスライスを繰り返し最適化することで、多次元サンプルのすべての低次元射影が均等に分布する傾向のあるシーケンスが生成されます。[ 21 ] [ 24 ]
上記の手法により、各ピクセルごとにサンプリングされるパスのセットが均等に分布することが保証されます。ブルーノイズに基づく手法は、隣接するピクセルのサンプルが広く離れるようにするのに役立ちます。これは通常、ピクセルごとにトレースされるパスの数が少ない場合に特に重要になります。[ 25 ]: 8.1.6 [ 23 ]: 8.7.6
コンピュータグラフィックスでは、一般的に光の値を赤、緑、青の成分のベクトルとして表現します。表面の色またはアルベドも同様に、赤、緑、青の個別の乗数として表現されます。このアプローチは、いくつかの状況では適切ですが (たとえば、光の値を合計すると正確になります)、パス トレーシングに適用すると、正確に 3 つの波長の光で照らされたシーンをシミュレートすることと同じで、現実的ではありません。最新のパス トレーサーでは、代わりに可視スペクトルの波長のランダム サンプルを使用するオプションが提供されており、これはスペクトル レンダリングと呼ばれます。これは、現実的で物理ベースのレンダリングが目標である場合の標準的なアプローチです。[ 1 ] : 331 [ 26 ]
パフォーマンス上の理由から、通常は複数の波長(例えば4つ)が一度にサンプリングされます(単一の経路がトレースされますが、照明計算は複数の波長に対して実行されます)。これにより、スペクトルサンプリングで発生するカラーノイズも低減できます。波長は、経路の寄与が累積されるときに、通常はRGB値に変換されます。[ 26 ]
このアプローチにより、色分散(例えば、カットガラスに光が当たったときに見える「虹」)をシミュレートできます。また、よりリアルな光源とマテリアルでシーンをレンダリングしたり、色付きの表面間で光が複数回反射したり、色付き体積媒体によって散乱されたりする場合に、拡散グローバル照明と参加媒体を正しくモデル化することもできます(誇張された色や不自然な色の変化なしに)。[ 26 ]
間接照明が方向によって大きく変化する場合、表面材料の双方向散乱分布関数(BSDF) のみを使用して方向をサンプリングすると非効率になることがあります。このような場合、パスガイドはシーン内の間接照明の表現を構築し、それを使用してサンプルを描画します。実用的な方法では、レンダリング中にこれを反復的に実行し、バイアスのない方法で近似的な空間方向放射輝度場を学習します。[ 27 ] [ 28 ]
パストレーサーが実行する最も一般的でコストのかかる操作の1つは、特定の点から特定の方向に進む光線が交差する最初のオブジェクトと対応する表面点を見つけることです(同様の操作ですが、より単純な操作として、空間内の2点間に光を遮るものがあるかどうかをテストする操作があります)。これを高速化するために、パストレーサーは3D空間データ構造を使用します。現在最も一般的に使用されている構造はバウンディングボリューム階層(BVH)であり、最近のGPUはこれをハードウェアアクセラレーションしたバージョンを提供しています。ただし、k -dツリーやオクツリーなどの他の構造も使用されています。一部のパストレーサーでは、すべてのオブジェクトを三角形メッシュで表現する必要があり、これによりコードとデータ構造が簡素化されます(ハードウェアアクセラレーションも通常、三角形用に最適化されています)。[ 29 ] [ 1 ] : 1067-1107 [ 30 ] : xvii
(次のイベント推定のために)直接光のサンプルを生成するには、重点サンプリングを使用するのが最も効果的です。重点サンプリングでは、光源をその明るさに比例して、そして(理想的には)光源までの距離の二乗に反比例してサンプリングする必要があります。シーンに多数の光源がある場合、すべての光源を調べて重みを計算してから少数の光源を選択してサンプリングするのは、非常にコストがかかります。[ 31 ]
空間ツリーデータ構造を用いたBVHライトサンプリングは、光源の位置を考慮しながらサンプリングを高速化できます。(明るさのみを考慮するパワーサンプリングと呼ばれる手法は、より単純な非空間データ構造を使用します。)ツリー内で近接する光源はグループ化され、ツリーの各ブランチ内の光源の合計明るさが格納されます。ツリーのブランチの空間境界により、直接光を推定するサーフェスの背後にある光源を素早くスキップでき、方向と距離に基づいて光源のグループに重み付けすることもできます。ツリーを用いたサンプリングは、集計データがレンダリングに使用する光量ではなく、サンプリング確率の計算にのみ使用されるため、バイアスがありません。ライトカットと呼ばれるバイアスのあるアルゴリズムは、同様のツリーを使用しますが、個々の光源を重点的にサンプリングするのではなく、遠く離れた光源のグループ(ツリーのブランチ)を単一の光源として扱うことで近似します。 [ 31 ] [ 19 ]: 7.8
パス トレーシングが画像のピクセルの中心に正確に対応するカメラ レイのみを使用する場合、深刻なエイリアシングが発生する可能性があります。パス トレーサーは通常、画像の解像度で表現できる周波数よりも高い周波数をフィルタリングすることで、エイリアシングを除去または軽減します。これを行うために、ガウス フィルターなどのフィルター カーネル、またはシャープネスを向上させるがリンギング アーティファクトを引き起こす可能性のあるミッチェル・ネトラバリ フィルターやランチョス フィルターなどのフィルターを使用します。ピクセル中心周辺の位置をフィルター カーネルで重み付けしてサンプリングするか (フィルター重要度サンプリングと呼ばれる)、カメラ プレーン上の位置を均一にサンプリングし (通常は層化サンプリングを使用して、各ピクセルの周囲の正方形で同じ数のサンプルを取得します)、カーネルがサンプルと交差するピクセルにサンプルを追加します (重み付き重要度サンプリングと呼ばれる)。後者のアプローチは分散をわずかに減らすことができますが、デノイザーと互換性がない場合があります (たとえば、「ファイアフライ」と呼ばれる非常に明るいサンプルがピクセルの近傍に散らばっており、簡単に除去できません)。[ 11 ] : 5.4.3 [ 32 ]
数千のパスを平均しても、パス追跡の出力には通常、目に見えるノイズが含まれます。ノイズを減らす最も信頼性が高く(かつ偏りのない)方法は、より多くのパスをトレースすること(または、より優れた重点サンプリングなどの改善を行うこと)ですが、ノイズを除去または低減するために、多くの偏りのあるアプローチが使用されてきました。[ 33 ] [ 34 ]
パス トレーシング 画像には、一般的に「ホタル」と呼ばれる明るいピクセルが含まれることがよくあります。これは、重要度サンプリングによって優先度が低いと判断されたパス (明るい値を生成する可能性が低い) が光源またはシーンの明るい領域と交差する場合、または間接光が狭い隙間から入り、その隙間を通過するパスが非常に少ない場合に発生します。技術的には、これらの明るいサンプルはバイアスのない画像を生成するために必要ですが、主観的には役に立たず、分散を大幅に増加させる可能性があります。ホタルを識別して除去するために、さまざまなヒューリスティックが使用されてきました。たとえば、周囲のピクセルの平均で置き換えたり、明るさを近くのピクセルに広げたりします。これは、統計学における外れ値検出に似ています。累積されたピクセル値ではなく、個々のサンプルがフィルタリングされる場合もあります。可変幅カーネルを使用した密度推定に関連する技術が試されています。[ 33 ]
多くの手法では、エッジ検出を使用して、オブジェクトのシャープなエッジを保持したまま画像をぼかすノイズ除去フィルタを実現します。レンダリングされた画像のノイズ除去のためのエッジ検出では、通常、最終的な明るさ以外のデータ、例えばカメラ光線が交差する最初の点の深度と法線ベクトルなどを使用します。この種のデータに依存しない(ピクセルの色と明るさの値のみを使用する)エッジ保持フィルタには、バイラテラルフィルタ、ガイド付きフィルタ、非局所平均フィルタなどがあります。ウェーブレットやその他のマルチスケールフィルタに基づく手法も試されており、画像の変動する周波数特性(例えば、被写界深度によって引き起こされるぼやけ)を処理できます。[ 33 ] [ 34 ]
ピクセルへの直接光と間接光の寄与は別々にレンダリングされ、ノイズ除去されることがあります。これにより、直接光のディテールを保持しつつ、間接光(通常はノイズが多い)を滑らかにすることができます。より複雑なアルゴリズムでは、鏡面反射を別々にノイズ除去します(これはピクセルの位置によって変化するため)。また、個々のサンプルを使用して、表面上の各可視点の周囲の局所的な光場の統計モデルを構築するものもあります。[ 33 ] [ 34 ]
近年では、ノイズ除去フィルタを実装するために畳み込みニューラルネットワークが使用されており、同じ画像のノイズありとノイズなしの大規模なデータセットでニューラルネットワークをトレーニングしています。これらのニューラルネットワークは、深度と法線、表面アルベド、表面粗さ/光沢などのデータを入力の一部として使用できます。[ 33 ]
代替または補完的なアプローチとして適応サンプリングがあり、これは分散が高い画像の領域で追加のサンプルを取得します(バイアスを導入せずにこれを行うのは難しい)。[ 35 ] [ 34 ]
パストレーシングの出力はピクセルの線形輝度値であり、これを表示可能な画像、ビデオ、またはフィルムフレームに変換する必要があります。輝度値の範囲は、標準的なコンピュータモニターで表示できる範囲、またはJPEGやPNGなどの8ビットカラー値を使用するファイル形式で表現できる範囲よりも広い場合があります。画像には、太陽などの光源が直接見える非常に明るいハイライトやピクセルが含まれていることがよくあります。最も明るいピクセルが切り取られないように画像全体の輝度を下げると、シーンの残りの部分が暗くなりすぎることがよくあります。[ 36 ]: Ch20
トーンマッピングまたはトーン再現と呼ばれる手法は、高ダイナミックレンジ(HDR)画像のピクセル値を、一般的なファイル形式やコンピュータモニター、その他のディスプレイで許容される値の範囲に変換(またはマッピング)するためによく用いられます。同時に、暗い部分と明るい部分の両方の詳細を可視化しようと試み、多くの場合、人間の視覚が明るさの変化にどのように反応するかのモデルを取り入れています。その目的は通常、ピクセル値の範囲が狭まっているにもかかわらず、シーンの真の明るさの主観的な印象を与えることです。さまざまな手法とトーンマッピングカーブが利用可能で、多くの場合、それらを調整するためのパラメータが用意されています。一部の手法は、写真フィルムで撮影された画像の外観を再現することを目的としており、画像の色と彩度を変更する場合があります。 [ 37 ]: 8.2.2 [ 36 ]: Ch20
トーンマッピングは、パストレーサーの一部として実装する必要はありません。レンダリングされた画像がリニアHDRフォーマット(例:OpenEXR)で出力される場合、トーンマッピングは後から適用できます(トーンマッピングの方法やパラメータを画像を再レンダリングせずに変更できるため、この方法が好ましい場合があります)。
実際の物体は決して完全に滑らかな鏡ではありません(ただし、コンピュータグラフィックスでは利便性と簡略化のために完全な鏡がしばしばシミュレートされます)。光が不透明な物体に当たると、常に複数の方向に反射(または散乱)されます。各方向に反射される光の量は、主に表面法線に対する入射角に依存します。光沢のある素材は、しばしば鏡面反射素材と呼ばれ、完全な鏡が光を反射する角度に近い角度でより多くの光を反射するため、明るい光源が反射されると、はっきりとしたハイライト(鏡面反射ハイライトと呼ばれる)が生じます。対照的に、光をより多く散乱させる素材(鋭いピークがなく、より広い範囲の方向に反射する素材)は、粗面または拡散面と呼ばれます。一般に、鏡面反射素材と拡散面の間に明確な区別はありません。たとえば、拡散面の上にニスを塗ると、鏡面反射ハイライトが生じる場合があります。[ 38 ] [ 39 ] [ 1 ]: 26.10、Ch27

特定の方向に反射される光の量が、入射光線(入射光線と呼ばれる)、出射光線または反射光線(出射光線と呼ばれる)、および表面法線の間の角度のみに依存する材料は、等方性と呼ばれます。この場合、表面材料には特定の方向はありません(表面を表面法線を中心に回転させても、光の反射の仕方は変わりません)。方向が重要な材料は異方性と呼ばれ、つや消し鋼やアルミニウムなどの材料が含まれます。現実世界の多くの材料は微妙に異方性ですが、材料を等方性として扱う方が簡単で効率的であるため、コンピュータグラフィックスでは異方性はしばしば無視されます。[ 38 ] [ 39 ]
極端な例として、「完全に粗い」材料があり、この場合、反射光の量は入射光の角度に依存せず、ハイライトは全く発生しません。この種の材料の例として、コンピュータグラフィックスで一般的に使用されるランバート材料があります(現実世界には存在しませんが、ポリマー粉末であるスペクトラロンと呼ばれる材料が非常に近いものです)。ランバート材料の場合、反射光の量は、出射光線と表面法線との間の角度のコサインに比例します。[ 16 ] [ 1 ]: 27.5.2


上記の効果はすべて、双方向反射率分布関数(BRDF)と呼ばれる関数で表すことができます。これらの関数のパラメータは、表面上の何らかの基準系に対する入射光線と出射光線の方向です(方向を数値で表す方法は複数あります)。関数の出力は、入射光量に乗じて出射光量を求める係数です。一般的に定義されるBRDFには、前述のランバート反射率の係数(出射光線と表面法線との間の角度のコサイン)は含まれていないため、ランバート面のBRDFは定数関数となります。この係数を省略することで、BRDFは相反性を持つようになります。つまり、関数のパラメータで入射光線と出射光線を入れ替えても出力は変わりません(慣例として、両方の方向は表面から離れる方向を向いています)。 BRDFは光輸送方程式で使用するために適切にスケーリングされ(入射光の値で乗算され積分される)、光を吸収しないランバート材料の場合は1/ πの値を返します。 [ 38 ] [ 1 ]: 26.10、Ch27 [ 12 ]: 3.6
相互性に加えて、有効なBRDFの重要な特性は、エネルギー保存則を満たすことです。BRDFを光輸送方程式で使用する場合、反射される光の総量は、表面に到達する光の量を超えることはありません。(蛍光などの効果が観測される場合、これらの特性は個々の波長では成り立ちません。)BRDFは常に非負の値を返す必要があります。[ 38 ] [ 1 ]: Ch27
BRDFは光の波長ごとに異なる場合があります。たとえば、非金属材料は通常、特定の角度でほぼ均等にすべての波長を反射する白いハイライトを持ち、波長に依存した方法で光を拡散反射します(これにより材料に色が付きます)。波長が変化するBRDFは、虹色の材料をモデル化することもできます。[ 38 ] [ 40 ]
BRDF はパス トレーシングの中核部分です。光線がサーフェスと交差するパスの頂点ごとに評価され (パスの残りの部分のスループットを計算するため)、サーフェス 点での直接照明を計算する際にも評価されます。BRDF は透明または半透明の材料の特性を記述しません (これには他のタイプの散乱分布関数が必要です)。しかし、多くの材料は可視光に対して実質的に不透明であるか、表面付近に非常にわずかな半透明性があり、それを BRDF で無視または近似できるため、BRDF は有用です。[ 38 ]
BRDFのデータは実際の表面の反射率を測定することで取得できますが、実際にレンダリングに使用されるBRDFは通常、評価が比較的効率的で、実際の材料と同様の効果を生み出す数学関数(多くの場合、実際の表面の単純化された物理的特性をシミュレートするように設計されている)です。これらの関数には、「粗さ」などのパラメータがあり、簡単に変更できます。複数の単純なBRDF(関数の形状からローブと呼ばれることが多い)が重ね合わされることもあります。[ 39 ] [ 1 ]: Ch27
BRDF自体には、表面のテクスチャに関する情報は含まれていません。リアルなレンダリングでは、多くの場合、色と「粗さ」パラメータ(場合によっては方向と異方性の量)がテクスチャマッピングを使用してエンコードされ、表面上の個々の点のBRDFを修正するために使用されます。[ 39 ] [ 41 ] [ 1 ]: 27.15
光が透明な材料の表面を通過する際に使用される同様の関数として、双方向透過率分布関数(BTDF)があります。BRDFとBTDFの両方を含む用語として、双方向散乱分布関数(BSDF)があります。透明な材料における一般的な散乱を扱うために、ボリュームレンダリングでは、位相関数と呼ばれる同様の関数(ただし、定義は異なります)が使用されます。[ 38 ] [ 42 ] [ 1 ]: 14.9
ボリュームパス トレーシングは、光を発する、または光を吸収または散乱する空間の 3D 領域 (オブジェクトの表面ではなく) である参加メディアを含むシーンのレンダリングに使用されます。参加メディアは、粒子を含むと考えられることが多く、メディアを通過する光線が粒子と相互作用 (吸収または散乱される) する可能性は、光線が進む距離が長くなるほど高くなります。ボリューム レンダリングを実行するパス トレーサーは、通常、それをサーフェスのレンダリングと組み合わせることができます。Kayija のレンダリング方程式はボリュームパス トレーシング用に一般化できますが、より実用的なアルゴリズムにつながる可能性のある他のボリューム光輸送方程式があります (通常のパス トレーシングでは、レンダリング方程式の元の形式が通常、光線の方向に関する積分を使用するように変換されます)。[ 43 ] [ 42 ] [ 8 ]
ボリュームパス トレーシングは、標準的なパス トレーシングと同様に、カメラから逆方向に実行されるのが一般的で、ほとんどの光相互作用の相反性を利用します。カメラ レイは通常どおりサンプリングされ (または、反射や表面上の点に到達するグローバル イルミネーションの場合はレイの方向)、その後、レイが光を散乱できる参加媒体を通過するときに散乱イベントが生成されます。これらの散乱イベントの確率 (および次のイベントまでにレイが通常どれだけ移動するか) は、物質の密度に関連しています。レイが散乱されると、表面からの散乱と同様に、新しい方向に新しいレイが投げられ、各新しい方向の確率は、位相関数と呼ばれる確率密度関数によって決定されます。[ 43 ] [ 42 ]
体積パス追跡では、光線が空間を通過する際にどれだけの光が吸収され散乱されるか(減衰と呼ばれる)、また、関与する媒質が放射性である場合に、光線に沿ってどれだけの光が放出されるか(光線に沿った吸収と散乱を考慮に入れる)を計算するために積分も使用されます。[ 42 ]
これらの操作はすべて、参加する媒体が均質(散乱、吸収、および放出に関してどこでも同じ密度を持つ)である場合に、はるかに簡単かつ迅速になります。この場合、積分を解析的に実行して減衰と放出を計算することができ、正しい確率分布で散乱イベントを生成するより簡単な方法もあります。均質媒体として一般的に表現される材料(複雑な形状を持つ場合もあります)には、水や着色ガラスなどがあります。均質吸収に使用される式は、Beer-Lambertの法則またはBeerの法則として知られています。[ 42 ]
参加する媒体が不均質(密度やその他の特性が空間的に変化する)である場合、より複雑で遅いアルゴリズムを使用する必要があります。このような媒体には、雲、霧、煙、火などがあります。これらのマテリアルをレンダリングするための入力データは、通常、ボクセルと同様の構造を持つボリュームデータです。積分などの操作を実行するために、コードは多くの場合、媒体をレイマーチングし、レイに沿った点のデータを照会する必要があります。これは、アルゴリズムに応じて、疎に(通常はランダムに選択された少数の点でのみマテリアルを検査する)または密に(近接した点を検査する)実行できます。一般的に使用されるヌル散乱アルゴリズムは、サンプリングする点を選択する際に媒体を均質として扱い、媒体を疎にサンプリングできるようにし、媒体がほぼ均質である場合に非常に効率的になります。[ 44 ] [ 45 ]
積分のサンプリングは、以下の2つの異なる方法のいずれかで行うことができます。
どちらの場合も、次イベント推定と呼ばれる手法を使用して分散を低減できます。これは、パスが偶然に重要な特徴点に当たるのを待つのではなく、重要な特徴点(ライトトレーシングの場合はカメラ、バックワードパストレーシングの場合は光源)を直接サンプリングすることで機能します。この手法は通常効果的ですが、鏡面反射またはほぼ鏡面反射のBRDFが存在する場合はあまり役に立ちません。バックワードパストレーシングの場合、拡散面と相互作用し、光源に当たる前に鏡面反射面で反射するコースティックパスに対して高い分散が発生します。鏡面反射が中間にあるため、次イベント推定を使用してこれらのパスを拡散面から直接サンプリングすることはできません。同様に、光が反射できる方向が1つしかないため、鏡面反射面からパスをサンプリングするために使用することもできません。ライトトレーシングでも、パスがカメラに当たる前に鏡面反射面で相互作用する場合に同様の問題が発生します。この状況ははるかに一般的であり、ノイズの多い(または完全に黒い)ガラス物体は視覚的に非常に邪魔になるため、実際には、一方向パス追跡には逆方向パス追跡のみが使用されています。
双方向パス追跡は、2つのアプローチを組み合わせたアルゴリズムを提供し、どちらか一方の方法単独よりも低い分散を実現できます。各サンプルについて、光源からのパスとカメラからのパスの2つのパスが独立して追跡されます。これにより、一方のパスのすべての頂点をもう一方のパスのすべての頂点に直接接続できる、一連の可能なサンプリング戦略が生成されます。元の光追跡アルゴリズムと逆方向パス追跡アルゴリズムは、どちらもこれらの戦略の特殊なケースです。光追跡の場合、カメラパスの頂点を光パスの最初の頂点に直接接続します。逆方向パス追跡の場合、光パスの頂点をカメラパスの最初の頂点に接続します。さらに、中間頂点を接続する、まったく新しいサンプリング戦略がいくつかあります。多重重要度サンプリングを使用してこれらのすべてのサンプリング戦略に重み付けすることで、各サンプルに必要な作業量は増えますが、単方向パス追跡よりも高速に収束できる新しいサンプラーが作成されます。これは、コースティクス効果や、主に間接照明によって照らされたシーンに特に効果的です。
重点サンプリングは、積分される値にほぼ比例するサンプル分布を使用することで、モンテカルロ積分の効率を向上させるために使用できます。ただし、これは適切な分布が既知であり、そこからサンプルを抽出する実用的な方法がある場合にのみ機能します。パス追跡で使用されるサンプル分布は、特にカメラから始まる光線が光に到達するために反射または屈折する必要がある場合、最適とは程遠いことがよくあります。MC積分を実行する別の方法であるメトロポリス法は、ランダムウォークを使用して、改善された分布を持つサンプルを生成します。これは、1953年に遡るマルコフ連鎖モンテカルロ(MCMC)法(1970年にヘイスティングスによって拡張)ですが、パス追跡での最初の使用例であるメトロポリス光輸送(MLT)は、1997年にVeachとGuibasによって発表されました(ただし、他の研究者は以前にMCMCを使用して光輸送の平衡状態を見つけることを検討していました)。[ 46 ] [ 47 ] [ 8 ]
標準的な重点サンプリングでは、サンプルは独立して生成されます。たとえば、パス追跡関数内で、乱数のリストを入力として受け取る(または擬似乱数生成器への連続呼び出しを使用する)ことにより、エリアライト上の光線の方向と点をサンプリングします。メトロポリス法では、代わりにサンプル(提案と呼ばれる)は、他のサンプルをランダムに変更することによって生成されます。MLTのコンテキストでは、サンプルはカメラから光源までの完全なパスであり、提案は(パスの)変異と呼ばれます。このアルゴリズムの主な利点は、既存のパスに「近い」新しいパスを生成できることです。そのため、元のパスが良好であれば、それらは重点サンプリングに適したパスである可能性が高くなります。これらのパスを標準的な重点サンプリングで使用する場合、パストレーサーは各パスを生成する絶対確率を知る必要がありますが、これは計算が困難である可能性があります。しかし、メトロポリス法では、前のパスが与えられた場合の各変異パスを生成する条件付き確率(および逆変換の条件付き確率)を知るだけで済みます。[ 46 ] [ 47 ] [ 48 ]
ターゲット関数(通常は、特定のパスによって画像に寄与する光の輝度)を使用してサンプリングをガイドします。既存のパスから新しいパスが生成された後、新しいパスのターゲット関数が評価され、メトロポリス法は、新しいパスを使用するか(その方向の「パス空間」でのランダムウォークを続ける)、または以前のパスを維持して再度試行するかを(確率的に)決定するための式を提供します。選択されたパス(提案)は受理されたと言われます。ターゲット関数が高いパスは受理される可能性が高く、無効なパス(たとえば、パス内のエッジが別のオブジェクトによって遮られている場合)は決して受理されません。[ 46 ] [ 47 ] [ 48 ]
メトロポリス法は理論的には標準的な一方向パス追跡(カメラから開始)に適用でき、一度に 1 つのピクセルのサンプルを生成するために使用できますが、Veach と Guibas は双方向パス追跡が通常役立つ「難しい」照明シナリオでの使用に興味がありました。必要な初期パス生成ステップと正規化ステップ(画像の全体的な明るさを推定)も、この方法を単一ピクセルに対して非効率にします。MLT では、生成されたパスが画像全体を「さまよう」ことができ、任意のピクセルに寄与します(双方向パス追跡でコースティクスに使用されるパスと同様)。[ 47 ] [ 12 ]
MLT は、突然変異の生成を開始する前に、「シード」パスとして使用する初期バイアスのないサンプルを生成する必要があります。これは通常、リサンプリングによって行われ、ターゲット関数に比例した分布を持つ (重み付き) サンプルが生成されます。新しいシードパスは、パス空間全体が適切にサンプリングされるように、一定数の突然変異ごとに使用されます。元のアルゴリズムでは、双方向パス追跡によって生成されたパスのセットからシードパスが選択されました。[ 47 ] [ 12 ]
オリジナルの MLT アルゴリズムで使用されている突然変異[ 47 ] [ 12 ] 以下の説明では、「鏡面反射頂点」とは、光の散乱が非常に少ない反射または屈折が発生する表面上の点 (例えば、ガラスや水の表面、または鏡上の点) であり、「拡散反射頂点」とは、カメラに向かって光を拡散的に散乱する経路上の点です。
MLT は、当初提案された方法では標準的なパス トレーシング (双方向パス トレーシングを含む) とは全く異なる方法でパスを生成するため、既存のパス トレーサーに MLT を追加したり、複数のタイプのパス トレーシングを実行するパス トレーサーの一部として組み込んだりすることが困難になる場合があります。プライマリ サンプル スペース メトロポリス ライト トランスポート(PSSMLT) は、標準的なパス トレーシングではサンプル生成が、パス トレーシングの各段階で光線の方向やその他のランダム変数を選択するために使用される乱数 (または低不一致シーケンスからの準乱数) の供給によって駆動されるという事実を利用することで、この問題を解決します。特定の個々のサンプルを生成するために使用される乱数シーケンス (通常は区間[0, 1)内の数値) は、プライマリ サンプル スペースと呼ばれる領域でのサンプルの表現です。パス トレーシングは、このサンプル スペースでの均一サンプリングを使用したモンテ カルロ積分 (パス スペースでの重点サンプリングを使用する代わりに) として見ることができます。[ 46 ] [ 48 ]
パス トレーサーは通常、これらの乱数を生成する複数の方法を既に提供しているため、メトロポリス法によって乱数の生成を駆動できるようにすることは通常可能です。これにより、MLT の実装で標準のパス トレーシング コードを使用してサンプルを評価できるため、記述する必要のある新しいコードの量を大幅に削減できます。パスに対して複雑な操作を実行するのではなく、乱数をわずかに変更することで、変異パスを生成できます。PSSMLT ではパスからパスへの遷移確率は通常対称であるため (確率は両方向で同じ)、計算ははるかに簡単になります。[ 46 ] [ 48 ]
しかし、PSSMLT は通常、パスのごく一部だけを変更して残りを維持することができないため (これは MLT で長いパスを探索する際の効率を大幅に向上させる)、従来の MTL よりも効果が低い場合が多い。従来の MLT で使用される 5 つの特殊な変異タイプ (パスの中間に 1 つ以上のパス頂点を追加または削除するなど) の代わりに、通常はすべての数値を変更する大小のステップのみを使用する。[ 46 ] [ 48 ]
多重メトロポリス光輸送(MMLT) は、プライマリサンプル空間用に設計されており (そのため、従来の MLT より実装がはるかに容易ですが、すべてのタイプの突然変異を生成できません)、多重重要度サンプリング (MIS) バランスヒューリスティックを適用して、パスを接続するための複数の双方向パス追跡戦略の中から選択します。これは、サンプル空間の追加の次元として機能します。MMLT は、従来の MLT を常に上回るわけではありませんが、相関アーティファクトを減らして、より堅牢になる可能性があります。[ 46 ] [ 48 ]

パストレーシングでは、コースティクス(太陽などの小さく指向性の高い光源が、光沢のある表面や透明な物体によって反射または屈折されて別の表面を照らす際に現れる明るい光の斑点)のレンダリングが困難です。結果として、通常はノイズが多く、「ホタル」(迷走する明るいピクセル)が多数発生するか、コースティクスが全く表示されない場合があります。双方向パストレーシングでは、光のサブパスが画像内の任意のピクセルに寄与することを許可すれば(ピクセルごとのレンダリングモデルを破る)、コースティクスをレンダリングできますが、鏡で見るとコースティクスが表示されない場合があります。このような難しい照明は、画像内の他の場所にもノイズを引き起こす可能性があります。[ 49 ] [ 12 ] [ 50 ]: 16.2.2
フォトンマッピングまたはフォトン密度推定と呼ばれる別のレンダリング技術は、コースティクスをより効果的にレンダリングできます。フォトンマッピングは、双方向パストレーシングの「フォワード」または「パーティクルトレーシング」部分のように機能し、光源から放出される多数の「パケット」の光の経路をシミュレートします。これらはアルゴリズムではフォトンと呼ばれますが、通常は物理的なフォトンを実際に表しているわけではありません。フォトンは、拡散面(マット面)に到達するかシーンから出るまで、反射と屈折を通して追跡されます。表面に当たったフォトンに関する情報は、フォトンマップと呼ばれるデータ構造に蓄積され、特定のピクセルをレンダリングするためにすぐに使用されるのではなく、後で使用されます。フォトンマップは、 k -dツリーやハッシュグリッドなどの空間構造を使用して実装されます。フォトンマッピングは、密度推定フィルタを使用してデータを平滑化し、表面上の任意の点における光の強度を推定できるようにするため、バイアスがかかっています。光サンプルの数が不十分な場合、フィルタによって画像がぼやけたり、斑点状になったりする可能性があります。フォトン マッピングは通常、何らかの形式のレイ トレーシングと組み合わせて使用され、カメラ レイの正確な直接照明と反射および屈折を可能にしますが、フォトン マップはコースティクスおよび/または拡散グローバル イルミネーションにのみ使用されます(コースティクスにはより密なサンプリングが必要なため、それぞれに別々のマップが使用されることがよくあります)。[ 19 ] : 7.6 [ 1 ] : 31.19,32.6 [ 49 ]
フォトンマッピングの初期のバリエーションの一つは、マップ内の放射輝度情報を直接使用する代わりに、フォトンマップを使用してグローバルイルミネーション(分布レイトレーシングを使用してレンダリングされる)の光線を「ガイド」するものでした。これは、現代のパストレーシングにおけるパスガイドに似ています。検討された別の方法は、パストレーシングの分散を低減するための制御変数としてフォトンマップのデータを使用することでした。これらのアプローチはどちらもバイアスフリーです。[ 49 ] [ 28 ]: 2
プログレッシブフォトンマッピングと呼ばれるアルゴリズムは、利用可能なメモリに制限されない多数のフォトンを追跡できるように最適化されています。より多くのフォトンを追跡することでバイアスを減らすことができます。フォトンマッピングから始めるのではなく、「カメラパス」から始めます。カメラパスでは、パスが拡散面に到達するまでカメラからパスが追跡されます。これらのサブパス(可視点と呼ばれる)に関する情報は、空間データ構造に格納されます。フォトンマッピングパスでは、光源からのサブパスが拡散面に到達するまで追跡され、カメラパスからの近くのサブパスが次に検出されます。カメラのサブパスによって、画像内の各ピクセルに光源サブパスからどれだけの光が追加されるかが決まります。[ 50 ]
フォトン(ライトサブパス)をk -dツリー(またはその他の空間構造)に格納してメモリを消費する代わりに、プログレッシブフォトンマッピングは可視点(カメラサブパス)を格納するが、パストレース画像では通常、各ピクセルに対して多数のカメラ光線が必要となるため、依然として問題がある。確率的プログレッシブフォトンマッピングと呼ばれる変種は、レンダリングを複数のカメラパスとライトパスのペアに分割し、通常は各ピクセルに対して一度に1つのカメラサブパスのみを格納することで、アルゴリズムをより実用的にする。このアルゴリズムはまた、各ピクセルの可視点に対して見つかった近傍のフォトンの数を追跡し、後続のパスでフィルタカーネルのサイズを小さくすることで、フォトンがより小さなバッチでトレースされる場合でも、シャープなコースティクスをレンダリングできるようにする。[ 50 ]
フォトンマッピング手法の問題の1つは、通常、表面を鏡面(光沢面)と拡散面に分割する必要があり、それぞれに異なる戦略が使用されることですが、この分類が常に最適とは限りません。頂点接続とマージ(VCM)および統合パスサンプリング(UPS)と呼ばれる後期の技術は、あらゆる表面でフォトンマッピングと標準パストレーシングの両方を使用できるフレームワークを作成し、バイアスをさらに減らそうとしています。[ 51 ] [ 52 ] [ 27 ]
統合フレームワークは、異なる戦略によって生成されたパスを組み合わせることに基づく双方向パス追跡 (BDPT) の一種です。同じパスが複数の戦略によって生成される可能性があるため、多重重点サンプリング (MIS) 重みを使用してパスを慎重にブレンドする必要があります。フォトン マッピング サンプルは、カメラからのサブパスと光源からのサブパスがサーフェス上の近接した (ただし完全に一致しない) 点で結合されたパス、またはフォトン密度推定を平滑化するために使用されたフィルタ カーネルに対応する確率分布を使用してサーフェス上の頂点が摂動されたパスとして表現されます。すべてのタイプのパスのサンプリング確率は (フォトン マッピング戦略を使用するかどうかにかかわらず) 計算できるため、標準 BDPT と同様に、MIS 重みを使用してブレンドできます。このアルゴリズムは依然としてバイアスがありますが、光サブパスの数が増えるにつれて、他の形式のフォトン マッピングよりも速く正しい結果に収束します。[ 51 ] [ 52 ]
複数のピクセルに対して同じ光サブパスを再利用すること(ほとんどのフォトンマッピングで行われているように)は、近くのピクセル間に相関関係を生じさせ、目に見えるアーティファクトを生成したり、ノイズ除去に問題を引き起こしたりする可能性があります。VCM 法では、各光サブパスを使用する前にランダムに変更することで、この相関関係を低減します。[ 51 ]
GPUパフォーマンスの向上とレイ トレーシングの高速化により、ビデオゲームでレイ トレーシングが広く使用されるようになりましたが、多数のライトで照らされたシーンでリアルな照明をレンダリングし、多くの反射を伴う拡散グローバル イルミネーションを実現するには、多数のレイをキャストする必要があります。これは、特に大規模で詳細な環境をレンダリングする場合 (特に、任意のパス長を持つバイアスのないパス トレーシングは、通常、リアルタイムでは実用的ではありません)、許容できるフレーム レートでリアルタイムに実行するのは困難です。これに対処する 1 つのアプローチは、画像内のピクセル間、または連続するフレーム間でデータを共有し、ピクセルごとに実行する必要のあるレイ キャストを減らすことです。これは、一般的にデノイザーとテンポラルアンチ エイリアシング(どちらもピクセルごとに使用するサンプル数を減らすことができます) によって行われますが、画像のぼやけ、フレーム間の「ゴースト」アーティファクト、コーナーからの光の漏れ、その他の種類のバイアスを引き起こす可能性があります。事前計算とキャッシュに基づく再利用アルゴリズムは、リアルタイム レンダリング中の照明の変化に十分迅速に対応できない場合があり、大きなバイアスを引き起こす可能性があります。[ 53 ]
空間時間リザーバーリサンプリング(ReSTIR )と呼ばれる一連の技術は、近傍のピクセル間でサンプルを共有し、オブジェクトやカメラが移動した場合でもサンプルを次のフレームに引き継ぐことを可能にします。バイアスを導入せずにこれを行うことも、パフォーマンスが向上しノイズが少なくなるバイアスモードで使用することもできます。ReSTIRは、特定のピクセルに対して新しい直接光またはグローバルイルミネーションサンプルを生成するステップ、近傍のピクセルからサンプルを再利用しようとする空間再利用ステップ、および前のフレームからサンプルを再利用しようとする時間再利用ステップ(カメラとシーンオブジェクトの動きを考慮して対応するピクセルを選択するために、時間的再投影または逆投影とも呼ばれるオプティカルフローを使用)で構成されています。[ 53 ] [ 54 ]: 2,10
ReSTIRは、重み付きリザーバーサンプリングの一種を使用し、各ピクセルごとにリザーバーと呼ばれるデータ構造を保持します。リザーバーには、重点サンプリングで使用される重みと同様の重みとともに、単一のサンプルが格納されます。(複数のサンプルを格納するリザーバーも使用できます。オリジナルのReSTIR実装では、バイアス付きバージョンではリザーバーあたり4つのサンプルを使用していましたが、よりコストのかかるバイアスなしバージョンでは1つのサンプルのみを使用していました。)[ 55 ] : 15 [ 54 ] : 10
ReSTIRの初期形態(現在はReSTIR DIと呼ばれている)は、多数の光源があるシーンでの直接照明用に設計されています。初期サンプルを生成するために、リサンプリング重点サンプリング(RIS)と呼ばれる古い手法を使用します。これは、多数の光源のサンプルを低コストで取得し(可視性を考慮せずに)、サンプルの明るさに基づいて1つを選択します(これは重点サンプリングの近似的または確率的な形式です)。選択されたサンプル(例えば、特定の光源上の点)は、可視性があるかどうかをテストされ(可視でない場合は、明るさがゼロの光源サンプルとして扱うことができます)、重みとともにリザーバーに格納されます。[ 54 ]: 4-6 [ 55 ]: 18
空間再利用ステップでは、ターゲットピクセルの周囲の近傍(例えば、30ピクセル未満の距離にあるすべてのピクセル)から別のピクセルがランダムに選択されます。次に、この別のピクセルのリザーバー内のサンプルは、2つのサンプルの多重重点サンプリング(MIS)重みを計算し、重みに比例した確率を使用してサンプルを選択することによって、ターゲットピクセルのリザーバーにマージされます(RISと同様の手順)。リザーバー内の重みは、別のピクセルのサンプルが選択されたかどうかに関わらず更新されます。このプロセスは、バイアスのないバージョンではコストがかかります。MIS重みの計算には、両方のピクセルに対応する表面点における両方の光サンプルの可視性と明るさを知る必要があり、通常は2つの光線またはパスをトレースする必要があるためです(このコストは、相互再利用パターンを使用することで削減できます)。一部の実装では、複数の近傍ピクセル(例えば4つの近傍)を調べて1つを選択します。これは分散を減らすのに役立ちますが、より多くの光線をトレースする必要があるため、コストが高くなります。[ 54 ]: 5-6 [ 55 ]: 12,16
時間的再利用、つまり前のフレームの対応するピクセルからのサンプルを再利用することは、空間的再利用と同様の方法で実装されます。カメラとシーン内のオブジェクトが移動したり、照明が変化したりする可能性があるため、正しい重みを計算するには、両方のフレームの表面点における両方の光サンプルの可視性と明るさを計算する必要があり、通常、ここでも2つの追加の光線を追跡する必要があります。[ 54 ] : 6 [ 55 ] : 16,19
フレームごとの典型的な手順シーケンス(おそらくすべてのピクセルに対して複数回のパスが必要となる)は次のようになる。[ 55 ]: 16-17
このように手順を組み合わせることで、サンプルは隣接するピクセルに迅速に伝播し、見つかった「良好な」サンプルを大量に再利用することが可能になります。これは、照明条件が悪い場合(例えば、光源は多数あるが、そのほとんどが影になっている場合)に役立ちますが、少数のサンプルを過度に再利用すると、非常に目立つ相関アーティファクトが発生する可能性があります。[ 55 ]: 16-17 [ 56 ]: 16-17
パス トレーシングでは、カメラ レイが交差する最初のサーフェス ポイントの直接光を計算するために、ReSTIR DI のバイアスのないバージョンを使用できます。パス トレーシング用の ReSTIR のより一般的なバージョンである ReSTIR PT は、アルゴリズムを拡張して、直接光サンプルだけでなく任意のパスの再利用をサポートします。これには、サンプルにシフト マッピング変換を適用して、異なるピクセルまたは異なるフレームに必要な位置とサーフェスの向きに適用できるようにする処理が含まれます (シフト マッピングは、グラデーション ドメイン レンダリングの一部として導入されました)。たとえば、再接続シフトと呼ばれるシフト マッピングを使用すると、2 番目のサーフェスの交差後のパスの部分を再利用でき、最初の交差と 2 番目の交差の間の可視性を確認するために 1 つのレイをトレースするだけで済みます。再接続シフトは拡散グローバル イルミネーションに非常に効果的で、ゲームで使用されている ReSTIR GI (2 番目の交差ですべてのサーフェスがランバートであると仮定) と呼ばれる簡略化されたアルゴリズムの基礎となっています。[ 55 ] : 22 [ 57 ] : 8 [ 58 ]
ReSTIRは主にリアルタイムレンダリングを目的としていますが、オフラインレンダリングの高速化にも使用できます。ReSTIRはバイアスフリーですが、潜在的な欠点(オフラインレンダリングに適さない可能性がある)として、隣接ピクセル間のエラー間の不要な相関(アーティファクトが発生する可能性がある)やフレーム間の相関(収束を妨げる可能性がある)、カラーノイズ(ピクセルの明るさは正しいが、カラーノイズが複数回のパスで減少しない)などが挙げられます。これらの問題を軽減するために、時間的再利用部分を省略し、代わりに初期サンプリングと空間的再利用を複数回繰り返し、結果を平均化することができます。[ 56 ]: 12、16
現在では、ReSTIR の多くのバリエーションが存在し、ボリューム レンダリング、被写界深度、モーション ブラー効果にこの技術を適用し、パス ガイドなどの他の技術と組み合わせています。ほとんどの形式の ReSTIR はスクリーン空間(各ピクセルにリザーバーを使用)で動作しますが、RIS と時空間再利用を使用して 3D グリッド内の空間領域の適切なライト サンプルを見つけるワールド空間バージョンも存在します。 [ 59 ] [ 60 ] [ 61 ] [ 62 ]