視点から光線を逆向きに追跡して陰影や反射を計算する描画手法。
レイトレーシング(光線追跡法)とは、視点から光線(レイ)を逆向きにたどって、画面の各点(画素)の色を計算する描画手法のことです。リアルな陰影や反射を自然に表現できます。
身近な例で考えると、暗い部屋で懐中電灯を一筋ずつ向けて、その先に何が見えるかを確かめるのに似ています。違うのは光を「出す」のではなく、目から線を伸ばして「何が見えるか」を逆向きに調べる点です。
上のツールで▶ボタンを押すと、視点から1本の光線が飛び出して球に当たり、影や反射を調べて画素の色が決まる流れを確認できます。
光線追跡では、1つの画素について何種類かの光線をたどります。それぞれが別の役割を持っています。
・一次光線:視点から画素を通して飛ばし、最初にぶつかる物体を探す光線
・影用光線:ぶつかった点から光源へ飛ばし、途中で遮られれば影と判定する光線
・反射光線:鏡のような表面で跳ね返り、映り込む景色を調べる光線
これらをたどって得た「物体の色」「影の有無」「反射先の色」を足し合わせ、画素の最終的な色が決まります。反射光線の先にまた別の鏡があれば、そこからさらに光線が枝分かれします。この枝分かれを繰り返すことで、ガラスや水面のような複雑な見え方も表現できるのです。
レイトレーシングはリアルな絵が描ける反面、計算コスト(=処理にかかる手間)がとても大きいのが課題です。画面の画素1つ1つについて光線をたどるからです。
たとえばフルHDの画面は約207万画素あります。その1画素ごとに、一次光線・影用光線・反射光線……と何本もの光線を追跡し、しかも反射のたびに光線が枝分かれします。画素数 × 光線の本数 × 物体との交差判定という形で計算量が一気に膨らみます。
このため、映画のCGなどでは時間をかけてじっくり計算します(オフラインレンダリング)。一方、ゲームのようにリアルタイムで動かすには高速な計算が必要なため、近年はGPU(=画像処理に特化した装置)に専用の回路を載せて高速化する技術が使われています。上のツールでは8画素分しか描いていませんが、実際はこの何百万倍もの計算が行われていると想像してください。