レイトレーシングとは、視点からの光を追跡して描画を行う方法である。
概要
画像を生成する工程であるレンダリングに分類される。レイ・トレーシングとも書く。視点からの光を光源まで遡るようにシミュレーションを行って追跡し、その結果から3D画像を生成する方法である。
光の反射や屈折、散乱などを演算することで計算を行う。この方法で正確に計算できるのは光線が途中で分かれることが無い反射や屈折であり、金属や鏡面、水面などの描写に向いている。散乱は光線が分かれてしまうため、忠実に計算するためにはそれぞれの光線を追跡する必要があるが、そのようなことをやっていると有限時間で計算できないほどの量になってしまう。そのため、近似するための方法を用意している。
やっていることは光線の挙動を物理的に計算しているだけで、反射は正反射、屈折はスネルの法則という中学校で習うレベルの簡単な計算なので非常に簡易な手法である。しかし、計算量が膨大であるため、その計算量を現実的な時間で処理できるほど処理能力が上がるまで日の目を見られなかった。
光源から光を追跡する方法はラジオシティと呼ばれる。光を追跡しない方法としてはZバッファ、スキャンラインなどがある。
なお、CG分野以外にも電磁波等の解析にレイトレーシングを用いることがある。(電磁波と光は同じものなので出来ないはずが無い)
発展した方法
分散レイトレーシング
鏡面反射した方向の周りにも光線を設定し追跡する方法。その光線の平均を最終的な値とする。
モンテカルロレイトレーシング
分散した光線を求める場合、反射する点を中心とした半球に入ってくる光線の積分を求める必要がある。そのためにモンテカルロ法を用いて無作為に選んだ方向の光線をいくつか計算し、それらを平均した値から積分を計算する。
モンテカルロ法は乱数で指定されたものについて計算し、それを繰り返して近似解を得る方法である。単純な方法で確率的な事象の計算が出来るが、計算量が必要な手法である。
ロシアンルーレット
光線が物体と衝突したときに反射・屈折・消滅といった選択肢を設けて確率的にその方法を決定する手法をロシアンルーレットという。光線を消滅させることで膨大な計算量の削減を行っている。
パストレーシング
モンテカルロレイトレーシングで無作為に選ぶ光線の数を1にした手法である。その代わりとしてパスとレーシング自体を複数回実行し確率的な要素を収束させる。
リアルタイムレイトレーシング
非常に計算量を必要とするレイトレーシングをリアルタイムで行う手法である。ゲームで高精細な画像を表示するために開発されたと言っても過言ではない。
レイトレーシングで一番時間がかかる処理は光線と物体の交差判定である。どこで交差するのかは光線の方向と対象空間に存在する物体との位置関係から計算するが単純な一つの計算式では求められず、可能性のある物体全てに対して交差判定を実行するような感じで行うためである。
リアルタイムレイトレーシングは何らかの方法により交差判定を高速化または省略化したと思われる。
対応GPU
NVIDIA
GeForce RTXシリーズが基本的に対応している。RTコアというものを搭載し、リアルタイムレイトレーシングに対応したようだ。
なお、2019年4月11日にGeforce GTXシリーズでもリアルタイムレイトレーシングができるようになるドライバを公開している。使用できるようになるだけで性能はお察しである。
AMD
Radeon RX 6000シリーズから対応を始めている。(6000シリーズ全てが対応しているわけではない模様) Raytracing Acceleratorというものがリアルタイムレイトレーシングに対応したようだ。
関連動画
関連静画
関連商品
関連項目
- 1
- 0pt