タイルレンダリングとは、コンピュータグラフィックス画像を光学空間内の規則的なグリッドで分割し、グリッドの各セクション(タイル)を個別にレンダリングするプロセスです。この設計の利点は、フレーム全体を一度に描画する即時モードレンダリングシステムと比較して、メモリと帯域幅の使用量を削減できることです。このため、タイルレンダリングシステムは、低電力のハンドヘルドデバイスでの使用に特に普及しています。タイルレンダリングは、グラフィックスパイプラインの最後ではなく、中間でジオメトリのソートを実行するため、「ソート中間」アーキテクチャと呼ばれることもあります。 [ 1 ]
ディスプレイ用の3D画像を生成するには、一連の手順が必要です。まず、表示するオブジェクトが個々のモデルからメモリにロードされます。次に、システムは数学関数を適用して、モデルを共通の座標系であるワールドビューに変換します。このワールドビューから、特定の視点(カメラ)から見た元のモデルを近似する一連のポリゴン(通常は三角形)が作成されます。次に、合成システムが三角形をレンダリングし、外側にテクスチャを適用することで画像を生成します。テクスチャは、三角形に描画される小さな画像で、リアリティを生み出します。生成された画像は、さまざまな特殊効果と組み合わされ、フレームバッファに移動されます。ビデオハードウェアは、このフレームバッファをスキャンして表示画像を生成します。この基本的な概念的な構成は、ディスプレイパイプラインとして知られています。
これらの各ステップを経るごとに、生成される画像を保持するために必要なメモリ容量が増加します。パイプラインの終端に到達する頃には画像が非常に大きくなるため、一般的なグラフィックカードの設計では、パイプラインのさまざまなサブコンポーネント間で画像をやり取りするために必要な帯域幅を確保するために、専用の高速メモリと非常に高速なコンピュータバスがよく使用されます。このようなサポートは専用グラフィックカードでは可能ですが、電力とサイズの予算が限られるにつれて、十分な帯域幅を確保することは設計コストの面で難しくなります。
タイルレンダリングでは、画像をタイルと呼ばれるセクションに分割し、それぞれを個別にレンダリングすることで、この問題を解決します。これにより、中間ステップで必要なメモリ量と、一度に移動するデータ量が削減されます。この処理では、システムはジオメトリを構成する三角形を位置ごとにソートし、どの三角形がタイル境界と重なっているかを素早く特定します。次に、重なっている三角形のみをレンダリングパイプラインにロードし、GPUで様々なレンダリング処理を実行して、結果をフレームバッファに送信します。16×16ピクセルや32×32ピクセルといった非常に小さなタイルサイズも使用可能で、内部処理に必要なメモリ量と帯域幅も小さくなります。また、各タイルは独立しているため、並列処理も容易に行えます。
一般的なタイルレンダリングでは、まずジオメトリをスクリーン空間に変換し、スクリーン空間タイルに割り当てる必要があります。これには、各タイルのジオメトリのリストを格納するためのストレージが必要です。初期のタイルシステムでは、これはCPUによって実行されていましたが、最新のハードウェアにはすべて、このステップを高速化するハードウェアが搭載されています。ジオメトリのリストは前面から背面にソートすることもできるため、GPUは隠面除去を使用して他のピクセルの背後に隠れているピクセルの処理を回避し、不要なテクスチャ検索のためのメモリ帯域幅を節約できます。[ 2 ]
タイル方式には主に2つの欠点があります。1つは、複数のタイルに重なる三角形が複数回描画される可能性があることです。これは、レンダリング時間が即時モードのレンダリングシステムよりも長くなることを意味します。また、タイルをつなぎ合わせて完全な画像を作成する場合にも問題が発生する可能性がありますが、この問題は既に解決済みです。より解決が難しいのは、一部の画像処理技術がフレーム全体に適用されることです。タイルレンダリングではフレーム全体を処理する必要がないため、これらの技術の実装は困難です。これらのトレードオフはよく知られており、利点が有効なシステムにとっては大きな問題ではありません。タイルレンダリングシステムは、携帯情報端末などで広く採用されています。
タイルレンダリングは、隣接するピクセルをメモリ内でも隣接させるタイル/非線形フレームバッファアドレッシング方式と混同してはならない。 [ 3 ]これらのアドレッシング方式は、タイルレンダラーだけでなく、さまざまなアーキテクチャで使用されている。
タイルレンダリングに関する初期の研究の多くは、Pixel Planes 5アーキテクチャ(1989年)の一部として行われた。[ 4 ] [ 5 ]
Pixel Planes 5プロジェクトは、タイルレンダリングの手法を検証し、現在ではタイルレンダリングの標準となっている多くの技術を生み出しました。この研究は、この分野の他の論文で最も多く引用されています。
タイル分割方式は、ソフトウェアレンダリングの歴史の初期から知られていました。Reyesレンダリングの実装では、画像を「タイルバケット」に分割することがよくあります。
デスクトップGPUの開発初期には、いくつかの企業がタイル型アーキテクチャを開発した。しかし、時が経つにつれ、これらは高速な専用外部メモリシステムを備えた即時モードGPUにほぼ取って代わられた。
その主な例としては、以下のものが挙げられます。
大規模なオンチップバッファを使用する非タイル型アーキテクチャの例としては、以下のようなものがある。
外部メモリの帯域幅が比較的低く、オンチップメモリの必要量も少ないため、タイルレンダリングは組み込みGPUで人気の高い技術です。現在の例としては、以下のようなものがあります。
タイルベースの即時モードレンダリング(TBIM):
タイルベースの遅延レンダリング(TBDR):
Vivante社は、フレームバッファメモリが密接に結合されたモバイルGPUを製造しています(前述のXbox 360 GPUと同様)。これは画面の一部をレンダリングするために使用できますが、レンダリング領域のサイズが大きいため、通常はタイルベースのアーキテクチャを使用しているとは表現されません。