レイトレーシング
レイトレーシング(ray tracing, 光線追跡法)は、光線などを追跡することで、ある点において観測される像などをシミュレートする手法である。レイ・トレーシングと表記されることもある。
光線の他、直線的に伝わる(回折などの影響が少ない)ものであれば任意の波に適用できる手法であり、たとえば光以外の波長の短い電磁波(電波)や音波など(地震波や超音波など)が挙げられる。「波線追跡法」「音線追跡法」などといった語もある。
ある点(ある人の視点・耳・電波観測装置など)に届く光線・波線(電波の仮想的な線)・音線(音波の仮想的な線)などを逆にたどることによって、その点における視像(画像)・音像などを描画する。たとえば光線であれば、物体の表面の反射率、また透明度・屈折率等々を細かく反映させた像を得られるのが特徴であり、1画素ずつ光線の経路を計算するので、光源形状に応じた光沢の反映や金属表面への周囲環境の映り込み、ガラスや水の透過屈折現象など、写実的に描画することができるという特長がある。しかしその反面、一般的に大量の光線の追跡により計算量は非常に多くなる。
この手法では反射や屈折は忠実に再現できるが、回折は近似やモデリングを必要とする。対象が異なっても伝播経路を追跡する基本的な原則は共通であるが、計算手順はそれぞれで異なる。
レイトレーシングの基本は、レイ (ray) すなわち光線を扱うものであり、光の光学的振る舞いをシミュレートする。これは3次元コンピュータグラフィックス (3DCG) を描画するレンダリング技法のひとつとして応用されている。
光は反射鏡やレンズに対して反射・屈折をするが、その様子を幾何光学的に追いかけて、光がどのような振る舞いをするのかについて知ることができる。通常、反射は正反射を用い、屈折はスネルの法則に従って計算する。またレンズなどの複数の光学素子を組み合わせた場合、光線を追う計算は複雑で面倒なものになってしまうが、1930年代にThomas Smithにより行列を用いて容易に計算する方法が見出された。
レンズや反射鏡を用いる光学機器の開発に用いられ、物体の像をつくるときに発生する収差を推定することに用いられる。
コンピュータの出現以前は、手計算を用いていたため膨大な時間がかかったが、コンピュータによって高速かつ大量の計算が可能になった。コンピュータの進歩に伴い、3次元コンピュータグラフィックスで光の当たり方や物体の見え方のシミュレーションにも用いられるようになっている。この場合、乱反射や散乱といった現象も含めて計算される。
この手法は、カメラや観察者に相当する受信点を中心に画角となる2次元方向内の微小な角度ごとのそれぞれの方向から受け取るはずの光線(レイ)について、算術演算処理をそれぞれ行うことで仮想的に逆方向に追跡し、その方向に何が見えるかを判定する。透明な物体では境界面ごとに複数の屈折光と反射光に分かれるが、それぞれの伝播経路を計算する。わずかな吸収を除けばほとんどが反射光となる鏡面反射では演算量があまり増えないが、透明や鏡面でない物体の表面は周囲のあらゆる方向へ光を乱反射しているため、それらをすべて演算しようとすれば演算量が指数関数的に増えてしまい有限時間内には処理できなくなる。こういった拡散反射は乱数によってランダムに選ばれた方向のみに限定することで演算量を現実的な処理量に抑えた「モンテカルロ・レイトレーシング」(Monte Carlo Ray Tracing) によってシミュレートされる。モンテカルロ・レイトレーシングの内でも「分散レイトレーシング」と呼ばれる手法では、ある程度のリアルさをシミュレートするために拡散反射する表面ごとに逆追跡が必要な経路が多数生じるため、複数の表面同士で反射する光まで再現しようとしてやはり演算処理量が爆発的に増加してしまう。拡散反射する表面での逆追跡が必要な経路をランダムに1つだけ生む手法は「パス・レイトレーシング」と呼ばれる。
レイトレーシングに似た手法、または最も広義のレイトレーシング手法の1つとも考えられるものに「フォトン・マッピング」がある。レイトレーシングが観察者やカメラ側から光線の経路を逆追跡するのに対して、フォトン・マッピングでは光源側から光線の経路を再現する。
3DCGにおけるレイトレーシングは1979年にレンダリング手法のひとつとして考案された。この最初に考案された狭義のレイトレーシング手法は、単純な形状の透明な物体や鏡面を再現するには効果的であったが、ざらついた質感を持つ物体の表面を表現したり複雑な形状を再現するには当時のコンピュータの処理能力の制約もあって適していなかった。その後、表現力を広げるための新たな手法が「モンテカルロ・レイトレーシング」「分散レイトレーシング」「パス・レイトレーシング」として考案され、こういった広義でのレイトレーシング手法は、21世紀初頭現在、間接光を再現する大域照明技術の代表的なものとなっている。
20世紀末から2000年代最初の数年間までは、映画のような動画を作るにも1フレーム当たり数分や十時間ほどもその当時の最新のコンピュータで演算する必要があり、2009年現在では、大規模な高精細度の動画生成が求められる映画産業や工業デザイン産業ではレンダー・ファームと呼ばれる100-1,000台規模のクラスタ・サーバーを構築することで対応している。広義でのレイトレーシング手法だけを用いて動画を生成しようとすると、高精細で複雑な照明効果をリアルに再現した画像を短時間に生み出すにはさらに巨大なコンピュータ群を必要とするため、実際には一般的なコンピュータ・グラフィックス映像では間接光などの再現はレイトレーシングだけに頼らずに影の再現は「シャドウ・マッピング」に、光沢面への写り込みは「環境マップ」に、場合によっては人が描いた2次元画像を重ねるなど、人手を介した多様な手法によって製作されている。
2009年現在、マルチコア化したプロセッサ(マルチコア・マルチソケットCPUやGPU)に代表される高性能な並列処理能力が得られるようになりつつあり、映画や工業デザイン分野では人手を介した作業が廃されてすべてをレイトレーシングベースの処理に集約することや、また映画や工業デザインのみで作られていたリアルな画像が、今後は個人所有のPC上でもゲームのような用途で短時間で製作できるようになる可能性がある。
レイトレーシングによる物理学的に正確で現実に即した光のシミュレーションには膨大な計算が必要となるため、長らく技術デモやプロダクションレンダリング(映画やCMなど)でのみ使用されてきた。特に実時間(リアルタイム)での描画が必要なシミュレーションやコンピュータゲームでは、時間的・資源的な制約から、光源と可視ポリゴン(あるいは3次元空間のポリゴンを2次元空間にラスタライズした後のピクセル)との1対1の位置関係のみを考慮したベクトル計算と塗りつぶしだけで簡易的かつ高速に描画できるラスタライズ法が採用されることが普通であったが、ハードウェアの高性能化に伴いリアルタイムレンダリングでもレイトレーシングを活用する道が開けつつある。
2020年現在、GPUベースのリアルタイムレイトレーシングを実現しているAPI(ライブラリ、レンダリングエンジン)としては、NVIDIA OptiX  、イマジネーションテクノロジーズのOpenRL 、DirectX Raytracing (DXR)、Vulkan Ray Tracing、そしてMetal Ray Tracingが挙げられる。GPUによるリアルタイムレイトレーシングは、GPUがプログラマブルシェーダーに対応し、さらに汎用計算 (GPGPU) に対応するよう進化してきたおかげで可能となった。NVIDIA OptiXはAdobe After Effects CCやBlenderのCyclesエンジンなどに採用されている。Vulkanにおけるレイトレーシングは当初NVIDIAの拡張として実装されていたが、その後Khronosによって標準拡張として採用されており、DXRとよく似た設計になっている。NVIDIA GeForce RTX 20シリーズは、リアルタイムレイトレーシングのハードウェアアクセラレーションに対応したRTコアを初めて搭載したGPUである。ハイエンドのAAAゲームタイトルではすでにDXRの活用が始まっている。
2022年登場のIntel Arcもリアルタイムレイトレーシングに対応している。
CPUベースのリアルタイムレイトレーシングを実現しているソフトウェアとしてはKeyShot  が挙げられる。
広義のレイトレーシングは、実写では再現不可能な映画の特殊効果や、工業用・建築用のデザインで採用されている。ゲーム業界でも部分的に使用されている。
電波のレイトレーシングでは発信点からの電波を仮想的に追跡し、受信点における伝播特性、特に電界密度を得る。多くの場合、これを格子状に、通常は一定の高度の水平面上に配置された受信点に対し繰り返し行い、電界密度マップを得る。このマップは、無線設備の配置の決定などに使われる。
与えられた発信点から与えられた受信点までの波線は一意に定まらないため、次の解法がある。
レイラウンチング法 (ray launching)
送信点から多数のレイを発射 (launch) し、受信点の近くを通るレイを選び出す。計算量は少ないが、厳密な結果を得るためにはテクニックが必要である。なお、正しくは「レイローンチング」だが、慣習的に「レイラウンチング」と呼ぶ。
イメージング法 (imaging)
「イメージ」は「鏡像」の意味。鏡像原理にもとづき送信点と受信点を結ぶ経路のみを計算するため、常に厳密な結果が得られるが、反射回数に対し計算量が指数関数的に増加するため、2-3回程度の反射しか追跡できない。
地震波や超音波での通常のレイトレーシングでは、反射・屈折などの条件から、受信点での受信波を計算するが、この場合は、実際に測定された受信波から反射・屈折などの条件(特に波速分布)を逆算し、トモグラフィー(断層画像)を得る。