Rasterization(ラスタライゼーション)は、3次元プリミティブ(三角形、線、点)のベクター記述を、画面に表示するためのピクセル(フラグメント)のセットに変換するプロセスです。Khronos Group, 2025によれば、ラスタライゼーションはグラフィックスパイプラインの自動的(非プログラマブル)な段階であり、Vertex ShaderとFragment Shaderの間に位置します。Rasterizationは、画面のどのピクセルがどの三角形に属するかを決定し、各フラグメントの補間された属性を計算します。
重要ポイント
Rasterizationは、幾何学的プリミティブ(三角形、線)をFragment Shaderによる後続処理のためのフラグメントのセットに変換するグラフィックスパイプラインの段階です。入力データは、画面座標での三角形の頂点とその属性(色、法線、UV)です。出力は、補間された属性を持つフラグメントのセットです。
プログラマブルシェーダー(Vertex ShaderとFragment Shader)とは異なり、ラスタライゼーションは固定(非プログラマブル)の段階です。開発者はラスタライゼーションアルゴリズムを変更できませんが、そのパラメーター(カリングモード、線幅、ポリゴンオフセット、マルチサンプリング)を制御できます。
最新のリアルタイムグラフィックスのほぼすべて — ゲーム、UI、AR/VR — がラスタライゼーションを使用しています。これは最もパフォーマンスの高いレンダリング方法であり、60 FPSで1フレームあたり数百万の三角形を処理できます。GPUラスタライザーは、専門のROP(レンダー出力ユニット)ブロックを介して数千の三角形を同時に並列処理できるよう最適化されています。
三角形のラスタライゼーションは、Vertex Shaderが頂点を画面座標に変換した後に開始されます。GPUは三角形の3つの頂点を取得し、その三角形の内側にある画面ピクセルを判定します。
プロセスには3つの連続したステップが含まれます:三角形のバウンディングボックスをピクセル単位で決定 — バウンディングボックス内の各ピクセルが三角形に属するか(エッジ関数)をチェック — カバーされた各ピクセルの補間属性(重心座標)を計算。エッジ関数は、点が三角形の辺のどちら側にあるかを判定する線形方程式です。
| 段階 | 説明 | 結果 |
|---|---|---|
| クリッピング | ビューポート境界外の三角形をクリップ | 可視プリミティブ |
| ビューポート変換 | 画面座標への変換 | ピクセル座標 |
| 三角形セットアップ | エッジ関数とバウンディングボックスの計算 | ラスタライゼーションパラメーター |
| フラグメント生成 | カバレッジテストと補間 | フラグメント + 属性 |
Rasterizationはさまざまなアルゴリズムで実装でき、それぞれパフォーマンスと品質のトレードオフがあります。最新のGPUは複数のアプローチを組み合わせて使用します。
初期のGPU向けに開発された古典的なラスタライゼーションアルゴリズム。三角形はラインごと(スキャンライン)に処理されます:画面の各ラインについて三角形の入口点と出口点が決定され、その間のすべてのピクセルが塗りつぶされます。スキャンライン変換は大きな三角形には効率的ですが、任意の形状の三角形には複雑なロジックが必要です。
最新のGPUはハーフスペースラスタライゼーション法を使用します:三角形の各辺についてエッジ関数が計算されます — 片側で正、反対側で負となる線形方程式です。3つのエッジ関数すべてが正であれば、ピクセルは三角形に属します。ハーフスペースラスタライゼーションは並列化が容易で、SIMD GPUアーキテクチャに適しています。
モバイルGPU(Qualcomm Adreno、ARM Mali)はタイルベースレンダリング(TBR)を使用します。画面は小さなタイル(16x16または32x32ピクセル)に分割され、ラスタライゼーションはタイルごとに個別に実行されます。これにより、フレームバッファを高速なローカルメモリ(タイルメモリ)に格納してメモリアクセスを最小限に抑えます。TBRは電力消費を削減し、これはモバイルデバイスにとって重要です。
Rasterizationとレイトレーシングは、3Dグラフィックスレンダリングへの2つの根本的に異なるアプローチです。ラスタライゼーションはリアルタイムアプリケーションで支配的であり、レイトレーシングはオフラインレンダリングで使用され、徐々にリアルタイム(RTX互換GPU)に浸透しています。
| パラメーター | Rasterization | Ray Tracing |
|---|---|---|
| 原理 | 三角形 → フラグメント | 光線 → シーン交差 |
| 速度 | 非常に高速(数百万三角形/フレーム) | 低速(数千光線/フレーム) |
| 品質 | 追加手法が必要(影、反射) | 物理的に正しい影と反射 |
| モバイルGPU | 標準的手法 | 限定的サポート(A17 Pro、Snapdragon Gen 3) |
| 消費電力 | 低 | 高 |
ラスタライゼーションではエイリアシングの問題が発生します — 三角形の境界でのジャギーエッジ(ギザギザ)。これはピクセルが離散的であり、三角形で部分的にカバーできないために発生します。エイリアシングに対処するためにマルチサンプリング(MSAA)が使用されます。
MSAA(マルチサンプルアンチエイリアシング)は、増加したサンプリングレート(2x、4x、8x)でラスタライゼーションを実行します。ピクセルあたり1つのサンプルの代わりに、複数のサブサンプルが使用され、それぞれが三角形カバレッジについてテストされます。MSAA 4xはピクセルあたり4つのサブサンプルを処理し、レンダリング解像度を完全に上げることなく顕著なエッジ平滑化を提供します。
MSAAとは異なり、ポストプロセスアンチエイリアシング手法(FXAA、SMAA、TAA)はラスタライゼーション後に最終画像を分析して機能します。FXAA(高速近似アンチエイリアシング)は画像のエッジを検出し、平滑化のためにぼかしを適用します。MSAAよりも大幅に高速ですが、品質は低くなります。
Rasterizationは最新のGPUでは専門のハードウェアブロック — ROP(レンダー出力ユニット)によって実行されます。ROPの数はフィルレート(GPUが1秒間に処理できるピクセル数)に直接影響します。
モバイルGPU(タイルベースレンダリング)にとって重要な要素には以下が含まれます:アーリーZリジェクションによるオーバードローの最小化、バックフェイスカリングによる非表示三角形の除去、および他のオブジェクトに完全に隠れた三角形を排除するオクルージョンカリング。
よくある質問
ラスタライゼーションは、三角形を画面のピクセルに変換するプロセスです。GPUは3次元の三角形を取得し、それがカバーする画面ピクセルを決定して、着色のためにFragment Shaderに渡します。
ラスタライゼーションは三角形を画面に投影し、ピクセルカバレッジを決定します(非常に高速)。レイトレーシングはカメラから光線を発し、ジオメトリとの交差をチェックします(物理的により正確ですが、大幅に低速です)。
ラスタライゼーションでは、ピクセルは完全に三角形に属するか属さないかのいずれかです — そのためジャギーエッジ(エイリアシング)が発生します。MSAAはピクセルあたり複数のサブサンプルを使用してエッジを平滑化し、FXAAは最終画像にフィルターを適用します。
いいえ、ラスタライゼーションはグラフィックスパイプラインの固定段階です。開発者はアルゴリズムを変更できませんが、設定(カリング、ポリゴンオフセット、ラスタライゼーションモード(点、線、三角形)、MSAAパラメーター)を制御できます。
タイルベースレンダリング(TBR)は画面をタイルに分割し、グローバルVRAMではなく高速なローカルメモリで処理します。これにより消費電力と帯域幅が大幅に削減され、バッテリー駆動のモバイルデバイスにとって重要です。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。