ラスタライズは、GPUが3Dシーンを2D画像へ変換する基本技術です。本記事では、ラスタライズの仕組みやレンダリングパイプライン、三角形処理、シェーダーとの関係、さらにレイトレーシングとの違いまで分かりやすく解説します。現代ゲームグラフィックスの基盤となる理由やメリットも紹介します。
ラスタライズは、ビデオカードがゲームやアプリケーションの3Dシーンを、ディスプレイ上の通常の2D画像へと変換する基本的な手法の一つです。3D世界はモデル、サーフェス、無数の三角形から構成されていますが、画面が表示できるのはカラーピクセルの格子のみです。
レンダリング中、GPUはオブジェクトのカメラからの位置を特定し、スクリーンへ投影、どのピクセルを占めるか判定し、素材やテクスチャ、ライティングなどを考慮して各ピクセルの色を計算します。このプロセスによって、仮想世界の数学的な記述が一瞬で完成したフレームへと変換されます。
レイトレーシングやパストレーシングが進化している現代でも、ラスタライズはその高速性と効率性から、ほぼ全ての最新ゲームでグラフィックスの基盤となっています。
ラスタライズとは、3Dシーン内の幾何学オブジェクトを、スクリーン上の画像要素へと変換する工程です。簡単に言えば、ビデオカードはポリゴンで構成された仮想オブジェクトを取り出し、それらが画面のどの領域を占めるかを決定します。
ゲーム内のほとんどの3Dモデルは、多数の三角形でできています。キャラクターや車、建物が複雑で丸みを帯びて見えても、幾何学的には小さな三角形の格子で表現されます。
しかし、モニターは三角形や3D座標を直接表示できません。2Dピクセルのグリッドのみを描画できるため、ビデオカードは各三角形がカメラから見てどこに位置し、どの画面領域を覆うかを決める必要があります。
ここでラスタライズが始まります。幾何学データが2D平面に投影された後、GPUは各三角形内に含まれるピクセルを特定。これらの領域のためにフラグメント(後に色やテクスチャ、ライティングなどを計算する基礎データ)が生成されます。
ラスタライズとレンダリング全体の違いも重要です。レンダリングはジオメトリ処理、シェーダー、深度チェック、ライティング、最終フレーム生成など多段階ですが、ラスタライズはその中の一工程であり、3Dジオメトリと2Dピクセルグリッドとを繋ぐ役割を担います。
ゲームでラスタライズが主流なのは、その高速性にあります。現代のGPUは膨大な数の三角形やフラグメントを並列処理でき、複雑なシーンを1秒間に何十回、何百回も画像化することが可能です。
ビデオカードにとってゲーム世界は完成画像ではなく、データの集合体です。オブジェクトは3D空間上の頂点で記述され、頂点同士が三角形として接続されます。さらにエンジンは素材、テクスチャ、光源、カメラ位置などの情報も渡します。
複雑なキャラクターモデルでも、数万〜数十万の三角形で構成されます。三角形が多いほど表面の形状を細かく表現できますが、GPUの処理負荷も増加します。
ラスタライズ前には、各頂点のカメラからの位置を確定させる必要があります。オブジェクトは移動・回転・拡大縮小されるため、座標はモデル空間からシーン空間、さらにカメラ空間へと順次変換されます。
オブジェクトの位置情報が処理された後、プロジェクションが行われます。これは3D座標を2Dスクリーン座標へ変換しつつ、深度情報も保持する作業です。遠くのオブジェクトは小さく、近くは大きく表示され、現実の視覚やカメラ撮影のようなパースペクティブが再現されます。
GPUは全ジオメトリを同じように扱いません。カメラの視野外の三角形は処理から除外。フレーム端のジオメトリも切り捨て、計算を効率化します。また、見えない裏側の面もピクセル計算前にカリングされることが多いです。
こうして残った各三角形は、2D平面上での位置が確定。ここでビデオカードがラスタライズへと移り、どの画面領域を三角形が覆うかを求めます。
GPUの並列アーキテクチャにより、こうした頂点やジオメトリの膨大なデータ処理も高速に行われます。NVIDIAビデオカードのCUDAコアとは何か、GPU性能との関係についてはこちらで詳しく解説しています。
三角形は最小の幾何学図形であり、常に一意の平面を定義します。3点で構成されるため、曖昧な面にならず、GPUで効率良く処理できます。
あらゆる複雑な形状も、三角形へと分割可能です。球体、自動車ボディ、キャラクターの顔、大規模なゲームマップも、最終的には単純なプリミティブの集合としてビデオカードに渡されます。
三角形がスクリーン上に投影されたら、ラスタライズが始まります。GPUは画面グリッド内で、どの点が三角形の内部にあるかを特定。その上でフラグメントを生成します。これが将来のピクセル候補となります。
ただし、単に点が三角形内かどうかだけでは不十分。その場所の表面パラメータ(深度、テクスチャ座標、法線方向など)も求められます。
これらの値は頂点間で補間されます。例えば、三角形の各頂点に異なるテクスチャ座標が割り当てられている場合、GPUはその間のフラグメントに対して中間値を計算します。これにより、1つのテクスチャがモデル全体に自然に貼り付けられ、全ピクセルに個別データを指定する必要がありません。
ラスタライズ後、得られたフラグメントはさらなる処理に回されます。ここで活躍するのがピクセルシェーダーまたはフラグメントシェーダーという小型プログラムで、表面の見た目を決定します。
シェーダーはテクスチャから色を取得し、マテリアル特性、光源方向、法線、反射など多数の要素を考慮。各フラグメントに最終的な色を計算します。
この処理はテクスチャの単純な読み込みだけに留まりません。現代ゲームではノーマルマップや物理ベースマテリアル、複数の光源、影、ポストプロセスなども駆使されます。しかし原理は同じで、ラスタライズが画面上のジオメトリ位置を決定し、シェーダーがその表現を担います。
なお、ゲーム開始時にシェーダーコンパイルが必要な理由や仕組みについては、こちらの解説記事もご覧ください。
ラスタライズは、グラフィックパイプラインと呼ばれる一連の工程の一部です。1フレーム生成の間に、データは3Dジオメトリ処理から画像バッファへの最終色書き込みまで、複数の段階を経ます。
まずゲームエンジンがシーン情報(ジオメトリ、テクスチャ、マテリアル、カメラなど)をビデオカードへ送信。GPUはモデルの頂点を処理し、オブジェクトや観察者の位置を考慮して座標変換します。
次はプリミティブ生成。頂点が三角形にまとめられ、一部ジオメトリがクリッピングされます。例えば、視野外の三角形は処理不要なため、ここで除外されます。
残りのジオメトリがラスタライザーに渡され、各三角形が画面上でどの領域を占めるかが割り出され、該当エリアのフラグメントが生成されます。続いて、フラグメントシェーダーがこれらの外観(テクスチャ、マテリアル、光源)を計算します。
ただし、フラグメントが生成されたからといって、必ずしも最終フレームに描画されるとは限りません。複数のオブジェクトが同じ画面領域を覆う場合、Zバッファ(深度バッファ)でカメラに近い面だけを残します。手前に他のサーフェスがあれば、隠れたフラグメントは省略されます。
必要なチェックの後、計算された色がフレームバッファに記録されます。このバッファの内容が画像として画面に表示されます。
近年のグラフィックスAPIでは、開発者がGPUの動作やコマンド伝達を細かく制御できます。VulkanとDirectX 12の違い・選び方はこちらの記事で詳しく紹介しています。
この一連の流れは、各フレームごとに繰り返されます。60FPSなら毎秒60回、144FPSなら144回、ビデオカードは基幹処理を実行。ジオメトリ、ラスタライズ、シェーダーの速度がゲームパフォーマンスに直結します。
ラスタライズとレイトレーシングは、いずれも3Dシーンの画像化を目的としますが、アプローチは根本的に異なります。ラスタライズではジオメトリから始め、各三角形が画面のどこを覆うかを特定します。
一方、レイトレーシングは、ジオメトリを直接スクリーンフラグメントに変換するのではなく、仮想シーン内を通る光線の動きをシミュレートします。光線は物体と交差し、サーフェスで反射したり、影やライティング計算に参加します。
この手法により、現実的な光学効果の再現が可能です。例えば、反射は周囲の実物体を反映し、影は光源やシーン形状を正確に考慮できます。通常のラスタライズでは、こうした効果は個別の技法や事前計算データで補います。
ラスタライズ最大の強みはパフォーマンスです。GPUは何十年も三角形の高速処理に最適化され、パイプラインの多くの段階が並列化。これにより、複雑なシーンでも高フレームレートを維持できます。
レイトレーシングは交差判定が膨大で、計算コストが非常に高くなります。そのため、現代ゲームでラスタライズを完全に置き換えることは稀で、多くはハイブリッドレンダリングを採用しています。
大半のシーンはラスタライズで構築し、レイトレーシングは反射や影、グローバルイルミネーションなど、リアルさが要求される部分だけに適用。この組み合わせが、クラシックなレンダリングの高速性と、より自然な光効果を両立します。
さらに計算負荷の高い手法として、パストレーシング(光の挙動全体をより忠実にモデリング)も登場しています。詳細はこちらの記事でご覧いただけます。
ラスタライズは、ジオメトリの段階的処理によって3Dシーンを画像化します。ビデオカードは頂点や三角形情報を受け取り、カメラ基準で変換・投影し、各オブジェクトがフレームのどこを占めるかを決定。その後、シェーダーが表面の外観を計算し、深度チェックで可視フラグメントのみを描画します。
最大の強みは高速処理能力。現代のGPUは膨大なジオメトリを並列処理し、1秒間に何十〜何百回もこのプロセスを繰り返せます。そのため、より複雑な手法が登場しても、ラスタライズは依然として多くのゲームレンダリングの中核です。
レイトレーシングやパストレーシングはグラフィックス表現を拡張し、光のモデル化を飛躍的に高精度化しますが、計算負荷が大きいため、現実的にはラスタライズとの組み合わせが最も効果的です。基礎となるシーンはラスタライズで素早く描画し、レイトレーシングで照明・影・反射などをリアルに補完する――これが現代ゲームグラフィックスの最適解となっています。