定義
レイトレーシング(Ray Tracing、光線追跡法)は、画面に見える光の経路を目のほうから逆にたどり、反射・屈折・影を本物の現実のように計算する映像生成技術です。仮想の光の粒が物にぶつかって跳ね返る過程を一つひとつシミュレーションして、きわめてリアルな立体の場面をつくり出します。
光を逆向きにたどるカメラ
現実では、太陽や電灯のような光源から無数の光があふれ出て、物にぶつかったあと、私たちの目に入ってきます。けれども、コンピューターが光源から出発する世界中のすべての光を計算しようとすると、計算量が膨大すぎて手に負えません。
そこでレイトレーシングは、うまく向きを逆にしました。光源ではなく私たちの目から出発した仮想の光線を、逆向きに飛ばすやり方です。
目から飛ばした光線が仮想空間の物体に当たると、その物体の色を確かめ、さらにその物体が照明から光を受けているかをもう一度確かめます。私たちの目に実際に入ってくる有効な光の経路だけをピンポイントで計算するので、むだな計算を大幅に減らせます。
これまでの方式とどうちがうのでしょうか?
長いあいだ、3Dゲームはラスタライズ(Rasterization)という方式を使ってきました。三次元の立体を二次元の画面にぺたんと平らに広げてから、色ぬりや影の効果を重ねていく方法です。
ラスタライズは計算がとても速く、リアルタイムのゲームに向いていましたが、はっきりした限界がありました。鏡にうつる部屋の奥や、ガラスのコップを通って曲がる光のような複雑な光の動きは、あらかじめ仕込んだ目だまし効果でまねるしかなかったからです。
一方、レイトレーシングは光の物理法則を直接計算します。窓ガラスにうつる自分の姿、水たまりに反射する華やかなネオンサイン、物の後ろ側に自然ににじむやわらかい影を、ずっと自然に表現できます。ただしリアルタイムのゲームでは、光線の数を減らし、ノイズ除去の技術とラスタライズを組み合わせて使う場合がほとんどです。
もう少し正確に言うと: なぜ今になって使われているのでしょうか?
レイトレーシングは、1960年代後半にはすでにアイデアが出ていた古い技術です。ただ、かつては劇場用の3Dアニメーションや映画の特殊効果のように、あらかじめ時間をかけてつくる作業にしか使われませんでした。映画のひとコマ(1フレーム)を計算するだけでも、平均で数十時間かかることがあったからです。2013年のピクサー映画は、1フレームに平均約29時間かかったそうです。
1秒間に60枚以上の画面を描かなければならないリアルタイムのゲームでは、とても手が出せませんでした。何百万ものピクセルごとに跳ね返る多数の光線を即座に計算するのは、コンピューターにとって過酷すぎたのです。
近年、光線追跡専用の演算ユニットを載せた高性能なグラフィックス処理装置(GPU)と、AIによる画質復元技術が登場しました。おかげで今では、家のパソコンでもリアルタイムでリアルな光を楽しめるようになりました。
よくある誤解
レイトレーシングは、現実と同じように光源から出るすべての光をそのまま飛ばしている。
光源から四方八方に広がるすべての光を計算すると、計算量が大きくなりすぎます。実際には、目(カメラ)から逆向きに光線を飛ばして、画面に見える光の経路だけを選んで追跡しています。
日常で出会う場面
雨上がりのアスファルトの水たまりに、まわりのネオンの看板や通りすぎる車が、ゆがみなく鏡のように映ります。
木もれ日が葉のすき間を通るときにできる影が、物との距離に応じて自然にぼやけます。
つまり ひとことで
カメラ(目)から仮想の光線を逆向きに飛ばして、光の反射や影を物理法則どおりに精密に計算するグラフィックス技術です。