ラスタライズ法とレイトレーシング法

gpuppur2006-08-06

レイトレーシング法とラスタライズ法

 コンピュータで3次元空間の一部を2次元の画像で表現する方法には様々な手法がある。
現在の一般的なコンピュータでリアルタイムに3次元図形を2次元に変換して描画するときにはラスタライズ法が使われている。一方で、時間が掛かってでも綺麗な画像が欲しいというときは、レイトレーシング法やその改良が使われている。
 ラスタライズ法は、物体を三角形のみで構成し、その三角形を一つ一つ2次元画像に変換することによって目的の2次元画像を生成する。レイトレーシング法は、視点からそれぞれの画素を通る複数の光線を投げて(キャスト)、その光線がどの図形と交差するか、交差した点からどのように光が反射するかなどを調べ光の経路を計算する。
ラスタライズ法では、三角形を一つずつ処理するため、一つの三角形を処理しているときに他の三角形の情報を参照することができない。一方でレイトレーシング法では、計算時にすべての図形や光源の情報を持っている。そのため、影や反射、屈折のような空間内にある他の図形の情報が必要になる処理はレイトレーシング法が適している。
 ラスタライズ法は比較的高速に処理がしやすく、一般人が購入できる安価な専用ハードウェア(Graphics Processing Unit, 以下GPU)上で複雑な物体をリアルタイムに処理することができる。そのため、3Dを使ったほとんどのコンピュータゲームではラスタライズ法が使われている。現在のところレイトレーシング法をコンピュータゲーム上で使うのに十分な速さで処理することは難しい。そのためには一般の人が簡単には買えないような高価なコンピュータが必要となる。
 GPUの大きな特徴の一つは、三角形の頂点に関する値(頂点の座標、色など)を処理するプロセッサ(Vertex Shader, 以下VS)や画素単位の処理を行うプロセッサ(Pixel Shader, 以下PS)が複数搭載されていることである。VSやPSで行われる処理は並列化できるため、大量の三角形を描画するときでも複数のVSとPSが並列に動作することによって高速に処理される。さらに最近のGPUでは、VSとPSでの処理をプログラミングすることができるため、ある程度自由に処理を制御することができる。

 ラスタライズ法では、得られる画像の画素数が増えても処理時間はあまり増加しないが、レイトレーシング法では、処理時間は画素数に比例する。しかし、ラスタライズ法は画像に描画される三角形の数に比例した処理時間が必要となるが、レイトレーシング法では三角形の数が増えても処理時間はあまり増加しない。ラスタライズ法とレイトレーシング法での、画素数が一定の場合に三角形の数が増えたときの処理時間の増加の様子を右上に示す。
横軸がレンダリングする三角形の数で右にいくほど数は多くなる。縦軸がレンダリングに掛かる時間で上にいくほど時間が長くなる。


このことから、画素数があまり多くないが、 かなり複雑な3D形状を描画したいとき、レイトレーシング法のほうが高速に計算できると言える。また、三角形の数や画素数を考慮して、ラスタライズ法とレイトレーシング法を切り替えることができれば、三角形の数が激しく増減する場合でも常に高速に描画することができると考えられる。